virtio-net: unbreak self announcement and guest offloads after migration
[qemu.git] / configure
blobcd219d8e3b6fa62e849f2fe13832e4665ccb5b42
1 #!/bin/sh
3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE= GREP_OPTIONS=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # 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.)
16 TMPDIR1="config-temp"
17 rm -rf "${TMPDIR1}"
18 mkdir -p "${TMPDIR1}"
19 if [ $? -ne 0 ]; then
20 echo "ERROR: failed to create temporary directory"
21 exit 1
24 TMPB="qemu-conf"
25 TMPC="${TMPDIR1}/${TMPB}.c"
26 TMPO="${TMPDIR1}/${TMPB}.o"
27 TMPCXX="${TMPDIR1}/${TMPB}.cxx"
28 TMPL="${TMPDIR1}/${TMPB}.lo"
29 TMPA="${TMPDIR1}/lib${TMPB}.la"
30 TMPE="${TMPDIR1}/${TMPB}.exe"
32 rm -f config.log
34 # Print a helpful header at the top of config.log
35 echo "# QEMU configure log $(date)" >> config.log
36 printf "# Configured with:" >> config.log
37 printf " '%s'" "$0" "$@" >> config.log
38 echo >> config.log
39 echo "#" >> config.log
41 error_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
52 do_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 $?
59 # 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
66 # Don't bother rerunning the compile if we were already using -Werror
67 case "$*" in
68 *-Werror*)
69 return 0
71 esac
72 echo $compiler -Werror "$@" >> config.log
73 $compiler -Werror "$@" >> config.log 2>&1 && return $?
74 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."
80 do_cc() {
81 do_compiler "$cc" "$@"
84 do_cxx() {
85 do_compiler "$cxx" "$@"
88 update_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)
99 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
101 esac
102 done
105 compile_object() {
106 local_cflags="$1"
107 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
110 compile_prog() {
111 local_cflags="$1"
112 local_ldflags="$2"
113 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
116 do_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
129 # Don't bother rerunning the compile if we were already using -Werror
130 case "$*" in
131 *-Werror*)
132 return 0
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."
143 libtool_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
148 # symbolically link $1 to $2. Portable version of "ln -sf".
149 symlink() {
150 rm -rf "$2"
151 mkdir -p "$(dirname "$2")"
152 ln -s "$1" "$2"
155 # check whether a command is available to this shell (may be either an
156 # executable or a builtin)
157 has() {
158 type "$1" >/dev/null 2>&1
161 # search for an executable in PATH
162 path_of() {
163 local_command="$1"
164 local_ifs="$IFS"
165 local_dir=""
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
174 if [ -z "$local_command" ]; then
175 return 1
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
185 done
186 # not found
187 IFS="${local_ifs:-$(printf ' \t\n')}"
188 return 1
191 have_backend () {
192 echo "$trace_backends" | grep "$1" >/dev/null
195 # default parameters
196 source_path=`dirname "$0"`
197 cpu=""
198 iasl="iasl"
199 interp_prefix="/usr/gnemul/qemu-%M"
200 static="no"
201 cross_prefix=""
202 audio_drv_list=""
203 block_drv_rw_whitelist=""
204 block_drv_ro_whitelist=""
205 host_cc="cc"
206 libs_softmmu=""
207 libs_tools=""
208 audio_pt_int=""
209 audio_win_int=""
210 cc_i386=i386-pc-linux-gnu-gcc
211 libs_qga=""
212 debug_info="yes"
213 stack_protector=""
215 # Don't accept a target_list environment variable.
216 unset target_list
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
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.
230 bluez=""
231 brlapi=""
232 curl=""
233 curses=""
234 docs=""
235 fdt=""
236 netmap="no"
237 pixman=""
238 sdl=""
239 sdlabi="1.2"
240 virtfs=""
241 vnc="yes"
242 sparse="no"
243 uuid=""
244 vde=""
245 vnc_tls=""
246 vnc_sasl=""
247 vnc_jpeg=""
248 vnc_png=""
249 xen=""
250 xen_ctrl_version=""
251 xen_pci_passthrough=""
252 linux_aio=""
253 cap_ng=""
254 attr=""
255 libattr=""
256 xfs=""
258 vhost_net="no"
259 vhost_scsi="no"
260 kvm="no"
261 rdma=""
262 gprof="no"
263 debug_tcg="no"
264 debug="no"
265 strip_opt="yes"
266 tcg_interpreter="no"
267 bigendian="no"
268 mingw32="no"
269 gcov="no"
270 gcov_tool="gcov"
271 EXESUF=""
272 DSOSUF=".so"
273 LDFLAGS_SHARED="-shared"
274 modules="no"
275 prefix="/usr/local"
276 mandir="\${prefix}/share/man"
277 datadir="\${prefix}/share"
278 qemu_docdir="\${prefix}/share/doc/qemu"
279 bindir="\${prefix}/bin"
280 libdir="\${prefix}/lib"
281 libexecdir="\${prefix}/libexec"
282 includedir="\${prefix}/include"
283 sysconfdir="\${prefix}/etc"
284 local_statedir="\${prefix}/var"
285 confsuffix="/qemu"
286 slirp="yes"
287 oss_lib=""
288 bsd="no"
289 linux="no"
290 solaris="no"
291 profiler="no"
292 cocoa="no"
293 softmmu="yes"
294 linux_user="no"
295 bsd_user="no"
296 guest_base="yes"
297 aix="no"
298 blobs="yes"
299 pkgversion=""
300 pie=""
301 zero_malloc=""
302 qom_cast_debug="yes"
303 trace_backends="nop"
304 trace_file="trace"
305 spice=""
306 rbd=""
307 smartcard_nss=""
308 libusb=""
309 usb_redir=""
310 opengl=""
311 zlib="yes"
312 lzo=""
313 snappy=""
314 bzip2=""
315 guest_agent=""
316 guest_agent_with_vss="no"
317 guest_agent_ntddscsi="no"
318 guest_agent_msi=""
319 vss_win32_sdk=""
320 win_sdk="no"
321 want_tools="yes"
322 libiscsi=""
323 libnfs=""
324 coroutine=""
325 coroutine_pool=""
326 seccomp=""
327 glusterfs=""
328 glusterfs_discard="no"
329 glusterfs_zerofill="no"
330 archipelago="no"
331 gtk=""
332 gtkabi=""
333 gnutls=""
334 gnutls_hash=""
335 vte=""
336 tpm="yes"
337 libssh2=""
338 vhdx=""
339 numa=""
340 tcmalloc="no"
342 # parse CC options first
343 for opt do
344 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
345 case "$opt" in
346 --cross-prefix=*) cross_prefix="$optarg"
348 --cc=*) CC="$optarg"
350 --cxx=*) CXX="$optarg"
352 --source-path=*) source_path="$optarg"
354 --cpu=*) cpu="$optarg"
356 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
357 EXTRA_CFLAGS="$optarg"
359 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
360 EXTRA_LDFLAGS="$optarg"
362 --enable-debug-info) debug_info="yes"
364 --disable-debug-info) debug_info="no"
366 esac
367 done
368 # OS specific
369 # Using uname is really, really broken. Once we have the right set of checks
370 # we can eliminate its usage altogether.
372 # Preferred compiler:
373 # ${CC} (if set)
374 # ${cross_prefix}gcc (if cross-prefix specified)
375 # system compiler
376 if test -z "${CC}${cross_prefix}"; then
377 cc="$host_cc"
378 else
379 cc="${CC-${cross_prefix}gcc}"
382 if test -z "${CXX}${cross_prefix}"; then
383 cxx="c++"
384 else
385 cxx="${CXX-${cross_prefix}g++}"
388 ar="${AR-${cross_prefix}ar}"
389 as="${AS-${cross_prefix}as}"
390 cpp="${CPP-$cc -E}"
391 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
392 ld="${LD-${cross_prefix}ld}"
393 libtool="${LIBTOOL-${cross_prefix}libtool}"
394 nm="${NM-${cross_prefix}nm}"
395 strip="${STRIP-${cross_prefix}strip}"
396 windres="${WINDRES-${cross_prefix}windres}"
397 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
398 query_pkg_config() {
399 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
401 pkg_config=query_pkg_config
402 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
403 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
405 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
406 ARFLAGS="${ARFLAGS-rv}"
408 # default flags for all hosts
409 QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
410 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
411 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
412 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
413 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
414 if test "$debug_info" = "yes"; then
415 CFLAGS="-g $CFLAGS"
416 LDFLAGS="-g $LDFLAGS"
419 # make source path absolute
420 source_path=`cd "$source_path"; pwd`
422 # running configure in the source tree?
423 # we know that's the case if configure is there.
424 if test -f "./configure"; then
425 pwd_is_source_path="y"
426 else
427 pwd_is_source_path="n"
430 check_define() {
431 cat > $TMPC <<EOF
432 #if !defined($1)
433 #error $1 not defined
434 #endif
435 int main(void) { return 0; }
437 compile_object
440 check_include() {
441 cat > $TMPC <<EOF
442 #include <$1>
443 int main(void) { return 0; }
445 compile_object
448 write_c_skeleton() {
449 cat > $TMPC <<EOF
450 int main(void) { return 0; }
454 if check_define __linux__ ; then
455 targetos="Linux"
456 elif check_define _WIN32 ; then
457 targetos='MINGW32'
458 elif check_define __OpenBSD__ ; then
459 targetos='OpenBSD'
460 elif check_define __sun__ ; then
461 targetos='SunOS'
462 elif check_define __HAIKU__ ; then
463 targetos='Haiku'
464 else
465 targetos=`uname -s`
468 # Some host OSes need non-standard checks for which CPU to use.
469 # Note that these checks are broken for cross-compilation: if you're
470 # cross-compiling to one of these OSes then you'll need to specify
471 # the correct CPU with the --cpu option.
472 case $targetos in
473 Darwin)
474 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
475 # run 64-bit userspace code.
476 # If the user didn't specify a CPU explicitly and the kernel says this is
477 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
478 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
479 cpu="x86_64"
482 SunOS)
483 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
484 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
485 cpu="x86_64"
487 esac
489 if test ! -z "$cpu" ; then
490 # command line argument
492 elif check_define __i386__ ; then
493 cpu="i386"
494 elif check_define __x86_64__ ; then
495 if check_define __ILP32__ ; then
496 cpu="x32"
497 else
498 cpu="x86_64"
500 elif check_define __sparc__ ; then
501 if check_define __arch64__ ; then
502 cpu="sparc64"
503 else
504 cpu="sparc"
506 elif check_define _ARCH_PPC ; then
507 if check_define _ARCH_PPC64 ; then
508 cpu="ppc64"
509 else
510 cpu="ppc"
512 elif check_define __mips__ ; then
513 cpu="mips"
514 elif check_define __ia64__ ; then
515 cpu="ia64"
516 elif check_define __s390__ ; then
517 if check_define __s390x__ ; then
518 cpu="s390x"
519 else
520 cpu="s390"
522 elif check_define __arm__ ; then
523 cpu="arm"
524 elif check_define __aarch64__ ; then
525 cpu="aarch64"
526 elif check_define __hppa__ ; then
527 cpu="hppa"
528 else
529 cpu=`uname -m`
532 ARCH=
533 # Normalise host CPU name and set ARCH.
534 # Note that this case should only have supported host CPUs, not guests.
535 case "$cpu" in
536 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
537 cpu="$cpu"
539 i386|i486|i586|i686|i86pc|BePC)
540 cpu="i386"
542 x86_64|amd64)
543 cpu="x86_64"
545 armv*b|armv*l|arm)
546 cpu="arm"
548 aarch64)
549 cpu="aarch64"
551 mips*)
552 cpu="mips"
554 sparc|sun4[cdmuv])
555 cpu="sparc"
558 # This will result in either an error or falling back to TCI later
559 ARCH=unknown
561 esac
562 if test -z "$ARCH"; then
563 ARCH="$cpu"
566 # OS specific
568 # host *BSD for user mode
569 HOST_VARIANT_DIR=""
571 case $targetos in
572 CYGWIN*)
573 mingw32="yes"
574 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
575 audio_possible_drivers="sdl"
576 audio_drv_list="sdl"
578 MINGW32*)
579 mingw32="yes"
580 audio_possible_drivers="dsound sdl"
581 if check_include dsound.h; then
582 audio_drv_list="dsound"
583 else
584 audio_drv_list=""
587 GNU/kFreeBSD)
588 bsd="yes"
589 audio_drv_list="oss"
590 audio_possible_drivers="oss sdl pa"
592 FreeBSD)
593 bsd="yes"
594 make="${MAKE-gmake}"
595 audio_drv_list="oss"
596 audio_possible_drivers="oss sdl pa"
597 # needed for kinfo_getvmmap(3) in libutil.h
598 LIBS="-lutil $LIBS"
599 netmap="" # enable netmap autodetect
600 HOST_VARIANT_DIR="freebsd"
602 DragonFly)
603 bsd="yes"
604 make="${MAKE-gmake}"
605 audio_drv_list="oss"
606 audio_possible_drivers="oss sdl pa"
607 HOST_VARIANT_DIR="dragonfly"
609 NetBSD)
610 bsd="yes"
611 make="${MAKE-gmake}"
612 audio_drv_list="oss"
613 audio_possible_drivers="oss sdl"
614 oss_lib="-lossaudio"
615 HOST_VARIANT_DIR="netbsd"
617 OpenBSD)
618 bsd="yes"
619 make="${MAKE-gmake}"
620 audio_drv_list="sdl"
621 audio_possible_drivers="sdl"
622 HOST_VARIANT_DIR="openbsd"
624 Darwin)
625 bsd="yes"
626 darwin="yes"
627 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
628 if [ "$cpu" = "x86_64" ] ; then
629 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
630 LDFLAGS="-arch x86_64 $LDFLAGS"
632 cocoa="yes"
633 audio_drv_list="coreaudio"
634 audio_possible_drivers="coreaudio sdl"
635 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
636 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
637 # Disable attempts to use ObjectiveC features in os/object.h since they
638 # won't work when we're compiling with gcc as a C compiler.
639 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
640 HOST_VARIANT_DIR="darwin"
642 SunOS)
643 solaris="yes"
644 make="${MAKE-gmake}"
645 install="${INSTALL-ginstall}"
646 ld="gld"
647 smbd="${SMBD-/usr/sfw/sbin/smbd}"
648 needs_libsunmath="no"
649 solarisrev=`uname -r | cut -f2 -d.`
650 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
651 if test "$solarisrev" -le 9 ; then
652 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
653 needs_libsunmath="yes"
654 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
655 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
656 LIBS="-lsunmath $LIBS"
657 else
658 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
659 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
660 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
661 "Studio 11 can be downloaded from www.sun.com."
665 if test -f /usr/include/sys/soundcard.h ; then
666 audio_drv_list="oss"
668 audio_possible_drivers="oss sdl"
669 # needed for CMSG_ macros in sys/socket.h
670 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
671 # needed for TIOCWIN* defines in termios.h
672 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
673 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
674 solarisnetlibs="-lsocket -lnsl -lresolv"
675 LIBS="$solarisnetlibs $LIBS"
676 libs_qga="$solarisnetlibs $libs_qga"
678 AIX)
679 aix="yes"
680 make="${MAKE-gmake}"
682 Haiku)
683 haiku="yes"
684 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
685 LIBS="-lposix_error_mapper -lnetwork $LIBS"
688 audio_drv_list="oss"
689 audio_possible_drivers="oss alsa sdl pa"
690 linux="yes"
691 linux_user="yes"
692 kvm="yes"
693 vhost_net="yes"
694 vhost_scsi="yes"
695 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
697 esac
699 if [ "$bsd" = "yes" ] ; then
700 if [ "$darwin" != "yes" ] ; then
701 bsd_user="yes"
705 : ${make=${MAKE-make}}
706 : ${install=${INSTALL-install}}
707 : ${python=${PYTHON-python}}
708 : ${smbd=${SMBD-/usr/sbin/smbd}}
710 # Default objcc to clang if available, otherwise use CC
711 if has clang; then
712 objcc=clang
713 else
714 objcc="$cc"
717 if test "$mingw32" = "yes" ; then
718 EXESUF=".exe"
719 DSOSUF=".dll"
720 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
721 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
722 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
723 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
724 write_c_skeleton;
725 if compile_prog "" "-liberty" ; then
726 LIBS="-liberty $LIBS"
728 prefix="c:/Program Files/QEMU"
729 mandir="\${prefix}"
730 datadir="\${prefix}"
731 qemu_docdir="\${prefix}"
732 bindir="\${prefix}"
733 sysconfdir="\${prefix}"
734 local_statedir=
735 confsuffix=""
736 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi $libs_qga"
739 werror=""
741 for opt do
742 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
743 case "$opt" in
744 --help|-h) show_help=yes
746 --version|-V) exec cat $source_path/VERSION
748 --prefix=*) prefix="$optarg"
750 --interp-prefix=*) interp_prefix="$optarg"
752 --source-path=*)
754 --cross-prefix=*)
756 --cc=*)
758 --host-cc=*) host_cc="$optarg"
760 --cxx=*)
762 --iasl=*) iasl="$optarg"
764 --objcc=*) objcc="$optarg"
766 --make=*) make="$optarg"
768 --install=*) install="$optarg"
770 --python=*) python="$optarg"
772 --gcov=*) gcov_tool="$optarg"
774 --smbd=*) smbd="$optarg"
776 --extra-cflags=*)
778 --extra-ldflags=*)
780 --enable-debug-info)
782 --disable-debug-info)
784 --enable-modules)
785 modules="yes"
787 --cpu=*)
789 --target-list=*) target_list="$optarg"
791 --enable-trace-backends=*) trace_backends="$optarg"
793 # XXX: backwards compatibility
794 --enable-trace-backend=*) trace_backends="$optarg"
796 --with-trace-file=*) trace_file="$optarg"
798 --enable-gprof) gprof="yes"
800 --enable-gcov) gcov="yes"
802 --static)
803 static="yes"
804 LDFLAGS="-static $LDFLAGS"
805 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
807 --mandir=*) mandir="$optarg"
809 --bindir=*) bindir="$optarg"
811 --libdir=*) libdir="$optarg"
813 --libexecdir=*) libexecdir="$optarg"
815 --includedir=*) includedir="$optarg"
817 --datadir=*) datadir="$optarg"
819 --with-confsuffix=*) confsuffix="$optarg"
821 --docdir=*) qemu_docdir="$optarg"
823 --sysconfdir=*) sysconfdir="$optarg"
825 --localstatedir=*) local_statedir="$optarg"
827 --sbindir=*|--sharedstatedir=*|\
828 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
829 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
830 # These switches are silently ignored, for compatibility with
831 # autoconf-generated configure scripts. This allows QEMU's
832 # configure to be used by RPM and similar macros that set
833 # lots of directory switches by default.
835 --with-system-pixman) pixman="system"
837 --without-system-pixman) pixman="internal"
839 --without-pixman) pixman="none"
841 --disable-sdl) sdl="no"
843 --enable-sdl) sdl="yes"
845 --with-sdlabi=*) sdlabi="$optarg"
847 --disable-qom-cast-debug) qom_cast_debug="no"
849 --enable-qom-cast-debug) qom_cast_debug="yes"
851 --disable-virtfs) virtfs="no"
853 --enable-virtfs) virtfs="yes"
855 --disable-vnc) vnc="no"
857 --enable-vnc) vnc="yes"
859 --oss-lib=*) oss_lib="$optarg"
861 --audio-drv-list=*) audio_drv_list="$optarg"
863 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
865 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
867 --enable-debug-tcg) debug_tcg="yes"
869 --disable-debug-tcg) debug_tcg="no"
871 --enable-debug)
872 # Enable debugging options that aren't excessively noisy
873 debug_tcg="yes"
874 debug="yes"
875 strip_opt="no"
877 --enable-sparse) sparse="yes"
879 --disable-sparse) sparse="no"
881 --disable-strip) strip_opt="no"
883 --disable-vnc-tls) vnc_tls="no"
885 --enable-vnc-tls) vnc_tls="yes"
887 --disable-vnc-sasl) vnc_sasl="no"
889 --enable-vnc-sasl) vnc_sasl="yes"
891 --disable-vnc-jpeg) vnc_jpeg="no"
893 --enable-vnc-jpeg) vnc_jpeg="yes"
895 --disable-vnc-png) vnc_png="no"
897 --enable-vnc-png) vnc_png="yes"
899 --disable-slirp) slirp="no"
901 --disable-uuid) uuid="no"
903 --enable-uuid) uuid="yes"
905 --disable-vde) vde="no"
907 --enable-vde) vde="yes"
909 --disable-netmap) netmap="no"
911 --enable-netmap) netmap="yes"
913 --disable-xen) xen="no"
915 --enable-xen) xen="yes"
917 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
919 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
921 --disable-brlapi) brlapi="no"
923 --enable-brlapi) brlapi="yes"
925 --disable-bluez) bluez="no"
927 --enable-bluez) bluez="yes"
929 --disable-kvm) kvm="no"
931 --enable-kvm) kvm="yes"
933 --disable-tcg-interpreter) tcg_interpreter="no"
935 --enable-tcg-interpreter) tcg_interpreter="yes"
937 --disable-cap-ng) cap_ng="no"
939 --enable-cap-ng) cap_ng="yes"
941 --disable-spice) spice="no"
943 --enable-spice) spice="yes"
945 --disable-libiscsi) libiscsi="no"
947 --enable-libiscsi) libiscsi="yes"
949 --disable-libnfs) libnfs="no"
951 --enable-libnfs) libnfs="yes"
953 --enable-profiler) profiler="yes"
955 --disable-cocoa) cocoa="no"
957 --enable-cocoa)
958 cocoa="yes" ;
959 sdl="no" ;
960 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
962 --disable-system) softmmu="no"
964 --enable-system) softmmu="yes"
966 --disable-user)
967 linux_user="no" ;
968 bsd_user="no" ;
970 --enable-user) ;;
971 --disable-linux-user) linux_user="no"
973 --enable-linux-user) linux_user="yes"
975 --disable-bsd-user) bsd_user="no"
977 --enable-bsd-user) bsd_user="yes"
979 --enable-guest-base) guest_base="yes"
981 --disable-guest-base) guest_base="no"
983 --enable-pie) pie="yes"
985 --disable-pie) pie="no"
987 --enable-werror) werror="yes"
989 --disable-werror) werror="no"
991 --enable-stack-protector) stack_protector="yes"
993 --disable-stack-protector) stack_protector="no"
995 --disable-curses) curses="no"
997 --enable-curses) curses="yes"
999 --disable-curl) curl="no"
1001 --enable-curl) curl="yes"
1003 --disable-fdt) fdt="no"
1005 --enable-fdt) fdt="yes"
1007 --disable-linux-aio) linux_aio="no"
1009 --enable-linux-aio) linux_aio="yes"
1011 --disable-attr) attr="no"
1013 --enable-attr) attr="yes"
1015 --disable-blobs) blobs="no"
1017 --with-pkgversion=*) pkgversion=" ($optarg)"
1019 --with-coroutine=*) coroutine="$optarg"
1021 --disable-coroutine-pool) coroutine_pool="no"
1023 --enable-coroutine-pool) coroutine_pool="yes"
1025 --disable-docs) docs="no"
1027 --enable-docs) docs="yes"
1029 --disable-vhost-net) vhost_net="no"
1031 --enable-vhost-net) vhost_net="yes"
1033 --disable-vhost-scsi) vhost_scsi="no"
1035 --enable-vhost-scsi) vhost_scsi="yes"
1037 --disable-opengl) opengl="no"
1039 --enable-opengl) opengl="yes"
1041 --disable-rbd) rbd="no"
1043 --enable-rbd) rbd="yes"
1045 --disable-xfsctl) xfs="no"
1047 --enable-xfsctl) xfs="yes"
1049 --disable-smartcard-nss) smartcard_nss="no"
1051 --enable-smartcard-nss) smartcard_nss="yes"
1053 --disable-libusb) libusb="no"
1055 --enable-libusb) libusb="yes"
1057 --disable-usb-redir) usb_redir="no"
1059 --enable-usb-redir) usb_redir="yes"
1061 --disable-zlib-test) zlib="no"
1063 --disable-lzo) lzo="no"
1065 --enable-lzo) lzo="yes"
1067 --disable-snappy) snappy="no"
1069 --enable-snappy) snappy="yes"
1071 --disable-bzip2) bzip2="no"
1073 --enable-bzip2) bzip2="yes"
1075 --enable-guest-agent) guest_agent="yes"
1077 --disable-guest-agent) guest_agent="no"
1079 --enable-guest-agent-msi) guest_agent_msi="yes"
1081 --disable-guest-agent-msi) guest_agent_msi="no"
1083 --with-vss-sdk) vss_win32_sdk=""
1085 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1087 --without-vss-sdk) vss_win32_sdk="no"
1089 --with-win-sdk) win_sdk=""
1091 --with-win-sdk=*) win_sdk="$optarg"
1093 --without-win-sdk) win_sdk="no"
1095 --enable-tools) want_tools="yes"
1097 --disable-tools) want_tools="no"
1099 --enable-seccomp) seccomp="yes"
1101 --disable-seccomp) seccomp="no"
1103 --disable-glusterfs) glusterfs="no"
1105 --enable-glusterfs) glusterfs="yes"
1107 --disable-archipelago) archipelago="no"
1109 --enable-archipelago) archipelago="yes"
1111 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1112 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1114 --disable-gtk) gtk="no"
1116 --enable-gtk) gtk="yes"
1118 --disable-gnutls) gnutls="no"
1120 --enable-gnutls) gnutls="yes"
1122 --enable-rdma) rdma="yes"
1124 --disable-rdma) rdma="no"
1126 --with-gtkabi=*) gtkabi="$optarg"
1128 --disable-vte) vte="no"
1130 --enable-vte) vte="yes"
1132 --disable-tpm) tpm="no"
1134 --enable-tpm) tpm="yes"
1136 --disable-libssh2) libssh2="no"
1138 --enable-libssh2) libssh2="yes"
1140 --enable-vhdx) vhdx="yes"
1142 --disable-vhdx) vhdx="no"
1144 --disable-numa) numa="no"
1146 --enable-numa) numa="yes"
1148 --disable-tcmalloc) tcmalloc="no"
1150 --enable-tcmalloc) tcmalloc="yes"
1153 echo "ERROR: unknown option $opt"
1154 echo "Try '$0 --help' for more information"
1155 exit 1
1157 esac
1158 done
1160 if ! has $python; then
1161 error_exit "Python not found. Use --python=/path/to/python"
1164 # Note that if the Python conditional here evaluates True we will exit
1165 # with status 1 which is a shell 'false' value.
1166 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1167 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1168 "Note that Python 3 or later is not yet supported." \
1169 "Use --python=/path/to/python to specify a supported Python."
1172 # The -B switch was added in Python 2.6.
1173 # If it is supplied, compiled files are not written.
1174 # Use it for Python versions which support it.
1175 if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1176 python="$python -B"
1179 case "$cpu" in
1180 ppc)
1181 CPU_CFLAGS="-m32"
1182 LDFLAGS="-m32 $LDFLAGS"
1184 ppc64)
1185 CPU_CFLAGS="-m64"
1186 LDFLAGS="-m64 $LDFLAGS"
1188 sparc)
1189 LDFLAGS="-m32 $LDFLAGS"
1190 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1192 sparc64)
1193 LDFLAGS="-m64 $LDFLAGS"
1194 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1196 s390)
1197 CPU_CFLAGS="-m31"
1198 LDFLAGS="-m31 $LDFLAGS"
1200 s390x)
1201 CPU_CFLAGS="-m64"
1202 LDFLAGS="-m64 $LDFLAGS"
1204 i386)
1205 CPU_CFLAGS="-m32"
1206 LDFLAGS="-m32 $LDFLAGS"
1207 cc_i386='$(CC) -m32'
1209 x86_64)
1210 CPU_CFLAGS="-m64"
1211 LDFLAGS="-m64 $LDFLAGS"
1212 cc_i386='$(CC) -m32'
1214 x32)
1215 CPU_CFLAGS="-mx32"
1216 LDFLAGS="-mx32 $LDFLAGS"
1217 cc_i386='$(CC) -m32'
1219 # No special flags required for other host CPUs
1220 esac
1222 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1223 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1225 default_target_list=""
1227 mak_wilds=""
1229 if [ "$softmmu" = "yes" ]; then
1230 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1232 if [ "$linux_user" = "yes" ]; then
1233 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1235 if [ "$bsd_user" = "yes" ]; then
1236 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1239 for config in $mak_wilds; do
1240 default_target_list="${default_target_list} $(basename "$config" .mak)"
1241 done
1243 if test x"$show_help" = x"yes" ; then
1244 cat << EOF
1246 Usage: configure [options]
1247 Options: [defaults in brackets after descriptions]
1249 Standard options:
1250 --help print this message
1251 --prefix=PREFIX install in PREFIX [$prefix]
1252 --interp-prefix=PREFIX where to find shared libraries, etc.
1253 use %M for cpu name [$interp_prefix]
1254 --target-list=LIST set target list (default: build everything)
1255 $(echo Available targets: $default_target_list | \
1256 fold -s -w 53 | sed -e 's/^/ /')
1258 Advanced options (experts only):
1259 --source-path=PATH path of source code [$source_path]
1260 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1261 --cc=CC use C compiler CC [$cc]
1262 --iasl=IASL use ACPI compiler IASL [$iasl]
1263 --host-cc=CC use C compiler CC [$host_cc] for code run at
1264 build time
1265 --cxx=CXX use C++ compiler CXX [$cxx]
1266 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1267 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1268 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1269 --make=MAKE use specified make [$make]
1270 --install=INSTALL use specified install [$install]
1271 --python=PYTHON use specified python [$python]
1272 --smbd=SMBD use specified smbd [$smbd]
1273 --static enable static build [$static]
1274 --mandir=PATH install man pages in PATH
1275 --datadir=PATH install firmware in PATH$confsuffix
1276 --docdir=PATH install documentation in PATH$confsuffix
1277 --bindir=PATH install binaries in PATH
1278 --libdir=PATH install libraries in PATH
1279 --sysconfdir=PATH install config in PATH$confsuffix
1280 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1281 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1282 --enable-debug enable common debug build options
1283 --disable-strip disable stripping binaries
1284 --disable-werror disable compilation abort on warning
1285 --disable-stack-protector disable compiler-provided stack protection
1286 --audio-drv-list=LIST set audio drivers list:
1287 Available drivers: $audio_possible_drivers
1288 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1289 --block-drv-rw-whitelist=L
1290 set block driver read-write whitelist
1291 (affects only QEMU, not qemu-img)
1292 --block-drv-ro-whitelist=L
1293 set block driver read-only whitelist
1294 (affects only QEMU, not qemu-img)
1295 --enable-trace-backends=B Set trace backend
1296 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1297 --with-trace-file=NAME Full PATH,NAME of file to store traces
1298 Default:trace-<pid>
1299 --disable-slirp disable SLIRP userspace network connectivity
1300 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1301 --oss-lib path to OSS library
1302 --cpu=CPU Build for host CPU [$cpu]
1303 --with-coroutine=BACKEND coroutine backend. Supported options:
1304 gthread, ucontext, sigaltstack, windows
1305 --enable-gcov enable test coverage analysis with gcov
1306 --gcov=GCOV use specified gcov [$gcov_tool]
1307 --disable-blobs disable installing provided firmware blobs
1308 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1309 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1311 Optional features, enabled with --enable-FEATURE and
1312 disabled with --disable-FEATURE, default is enabled if available:
1314 system all system emulation targets
1315 user supported user emulation targets
1316 linux-user all linux usermode emulation targets
1317 bsd-user all BSD usermode emulation targets
1318 guest-base GUEST_BASE support for usermode emulation targets
1319 docs build documentation
1320 guest-agent build the QEMU Guest Agent
1321 guest-agent-msi build guest agent Windows MSI installation package
1322 pie Position Independent Executables
1323 modules modules support
1324 debug-tcg TCG debugging (default is disabled)
1325 debug-info debugging information
1326 sparse sparse checker
1328 gnutls GNUTLS cryptography support
1329 sdl SDL UI
1330 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1331 gtk gtk UI
1332 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1333 vte vte support for the gtk UI
1334 curses curses UI
1335 vnc VNC UI support
1336 vnc-tls TLS encryption for VNC server
1337 vnc-sasl SASL encryption for VNC server
1338 vnc-jpeg JPEG lossy compression for VNC server
1339 vnc-png PNG compression for VNC server
1340 cocoa Cocoa UI (Mac OS X only)
1341 virtfs VirtFS
1342 xen xen backend driver support
1343 xen-pci-passthrough
1344 brlapi BrlAPI (Braile)
1345 curl curl connectivity
1346 fdt fdt device tree
1347 bluez bluez stack connectivity
1348 kvm KVM acceleration support
1349 rdma RDMA-based migration support
1350 uuid uuid support
1351 vde support for vde network
1352 netmap support for netmap network
1353 linux-aio Linux AIO support
1354 cap-ng libcap-ng support
1355 attr attr and xattr support
1356 vhost-net vhost-net acceleration support
1357 spice spice
1358 rbd rados block device (rbd)
1359 libiscsi iscsi support
1360 libnfs nfs support
1361 smartcard-nss smartcard nss support
1362 libusb libusb (for usb passthrough)
1363 usb-redir usb network redirection support
1364 lzo support of lzo compression library
1365 snappy support of snappy compression library
1366 bzip2 support of bzip2 compression library
1367 (for reading bzip2-compressed dmg images)
1368 seccomp seccomp support
1369 coroutine-pool coroutine freelist (better performance)
1370 glusterfs GlusterFS backend
1371 archipelago Archipelago backend
1372 tpm TPM support
1373 libssh2 ssh block device support
1374 vhdx support for the Microsoft VHDX image format
1375 numa libnuma support
1376 tcmalloc tcmalloc support
1378 NOTE: The object files are built at the place where configure is launched
1380 exit 0
1383 # Now we have handled --enable-tcg-interpreter and know we're not just
1384 # printing the help message, bail out if the host CPU isn't supported.
1385 if test "$ARCH" = "unknown"; then
1386 if test "$tcg_interpreter" = "yes" ; then
1387 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1388 ARCH=tci
1389 else
1390 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1394 # Consult white-list to determine whether to enable werror
1395 # by default. Only enable by default for git builds
1396 z_version=`cut -f3 -d. $source_path/VERSION`
1398 if test -z "$werror" ; then
1399 if test -d "$source_path/.git" -a \
1400 "$linux" = "yes" ; then
1401 werror="yes"
1402 else
1403 werror="no"
1407 # check that the C compiler works.
1408 write_c_skeleton;
1409 if compile_object ; then
1410 : C compiler works ok
1411 else
1412 error_exit "\"$cc\" either does not exist or does not work"
1415 # Check that the C++ compiler exists and works with the C compiler
1416 if has $cxx; then
1417 cat > $TMPC <<EOF
1418 int c_function(void);
1419 int main(void) { return c_function(); }
1422 compile_object
1424 cat > $TMPCXX <<EOF
1425 extern "C" {
1426 int c_function(void);
1428 int c_function(void) { return 42; }
1431 update_cxxflags
1433 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1434 # C++ compiler $cxx works ok with C compiler $cc
1436 else
1437 echo "C++ compiler $cxx does not work with C compiler $cc"
1438 echo "Disabling C++ specific optional code"
1439 cxx=
1441 else
1442 echo "No C++ compiler available; disabling C++ specific optional code"
1443 cxx=
1446 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1447 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1448 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1449 gcc_flags="-Wendif-labels $gcc_flags"
1450 gcc_flags="-Wno-initializer-overrides $gcc_flags"
1451 gcc_flags="-Wno-string-plus-int $gcc_flags"
1452 # Note that we do not add -Werror to gcc_flags here, because that would
1453 # enable it for all configure tests. If a configure test failed due
1454 # to -Werror this would just silently disable some features,
1455 # so it's too error prone.
1457 cc_has_warning_flag() {
1458 write_c_skeleton;
1460 # Use the positive sense of the flag when testing for -Wno-wombat
1461 # support (gcc will happily accept the -Wno- form of unknown
1462 # warning options).
1463 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1464 compile_prog "-Werror $optflag" ""
1467 for flag in $gcc_flags; do
1468 if cc_has_warning_flag $flag ; then
1469 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1471 done
1473 if test "$stack_protector" != "no"; then
1474 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1475 sp_on=0
1476 for flag in $gcc_flags; do
1477 # We need to check both a compile and a link, since some compiler
1478 # setups fail only on a .c->.o compile and some only at link time
1479 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1480 compile_prog "-Werror $flag" ""; then
1481 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1482 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
1483 sp_on=1
1484 break
1486 done
1487 if test "$stack_protector" = yes; then
1488 if test $sp_on = 0; then
1489 error_exit "Stack protector not supported"
1494 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1495 # large functions that use global variables. The bug is in all releases of
1496 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1497 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1498 cat > $TMPC << EOF
1499 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1500 int main(void) { return 0; }
1501 #else
1502 #error No bug in this compiler.
1503 #endif
1505 if compile_prog "-Werror -fno-gcse" "" ; then
1506 TRANSLATE_OPT_CFLAGS=-fno-gcse
1509 if test "$static" = "yes" ; then
1510 if test "$modules" = "yes" ; then
1511 error_exit "static and modules are mutually incompatible"
1513 if test "$pie" = "yes" ; then
1514 error_exit "static and pie are mutually incompatible"
1515 else
1516 pie="no"
1520 # Unconditional check for compiler __thread support
1521 cat > $TMPC << EOF
1522 static __thread int tls_var;
1523 int main(void) { return tls_var; }
1526 if ! compile_prog "-Werror" "" ; then
1527 error_exit "Your compiler does not support the __thread specifier for " \
1528 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1531 if test "$pie" = ""; then
1532 case "$cpu-$targetos" in
1533 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1536 pie="no"
1538 esac
1541 if test "$pie" != "no" ; then
1542 cat > $TMPC << EOF
1544 #ifdef __linux__
1545 # define THREAD __thread
1546 #else
1547 # define THREAD
1548 #endif
1550 static THREAD int tls_var;
1552 int main(void) { return tls_var; }
1555 if compile_prog "-fPIE -DPIE" "-pie"; then
1556 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1557 LDFLAGS="-pie $LDFLAGS"
1558 pie="yes"
1559 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1560 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1562 else
1563 if test "$pie" = "yes"; then
1564 error_exit "PIE not available due to missing toolchain support"
1565 else
1566 echo "Disabling PIE due to missing toolchain support"
1567 pie="no"
1571 if compile_prog "-Werror -fno-pie" "-nopie"; then
1572 CFLAGS_NOPIE="-fno-pie"
1573 LDFLAGS_NOPIE="-nopie"
1577 # check for broken gcc and libtool in RHEL5
1578 if test -n "$libtool" -a "$pie" != "no" ; then
1579 cat > $TMPC <<EOF
1581 void *f(unsigned char *buf, int len);
1582 void *g(unsigned char *buf, int len);
1584 void *
1585 f(unsigned char *buf, int len)
1587 return (void*)0L;
1590 void *
1591 g(unsigned char *buf, int len)
1593 return f(buf, len);
1597 if ! libtool_prog; then
1598 echo "Disabling libtool due to broken toolchain support"
1599 libtool=
1603 ##########################################
1604 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1605 # use i686 as default anyway, but for those that don't, an explicit
1606 # specification is necessary
1608 if test "$cpu" = "i386"; then
1609 cat > $TMPC << EOF
1610 static int sfaa(int *ptr)
1612 return __sync_fetch_and_and(ptr, 0);
1615 int main(void)
1617 int val = 42;
1618 val = __sync_val_compare_and_swap(&val, 0, 1);
1619 sfaa(&val);
1620 return val;
1623 if ! compile_prog "" "" ; then
1624 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1628 #########################################
1629 # Solaris specific configure tool chain decisions
1631 if test "$solaris" = "yes" ; then
1632 if has $install; then
1634 else
1635 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1636 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1637 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1639 if test "`path_of $install`" = "/usr/sbin/install" ; then
1640 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1641 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1642 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1644 if has ar; then
1646 else
1647 if test -f /usr/ccs/bin/ar ; then
1648 error_exit "No path includes ar" \
1649 "Add /usr/ccs/bin to your path and rerun configure"
1651 error_exit "No path includes ar"
1655 if test -z "${target_list+xxx}" ; then
1656 target_list="$default_target_list"
1657 else
1658 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1661 # Check that we recognised the target name; this allows a more
1662 # friendly error message than if we let it fall through.
1663 for target in $target_list; do
1664 case " $default_target_list " in
1665 *" $target "*)
1668 error_exit "Unknown target name '$target'"
1670 esac
1671 done
1673 # see if system emulation was really requested
1674 case " $target_list " in
1675 *"-softmmu "*) softmmu=yes
1677 *) softmmu=no
1679 esac
1681 feature_not_found() {
1682 feature=$1
1683 remedy=$2
1685 error_exit "User requested feature $feature" \
1686 "configure was not able to find it." \
1687 "$remedy"
1690 # ---
1691 # big/little endian test
1692 cat > $TMPC << EOF
1693 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1694 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1695 extern int foo(short *, short *);
1696 int main(int argc, char *argv[]) {
1697 return foo(big_endian, little_endian);
1701 if compile_object ; then
1702 if grep -q BiGeNdIaN $TMPO ; then
1703 bigendian="yes"
1704 elif grep -q LiTtLeEnDiAn $TMPO ; then
1705 bigendian="no"
1706 else
1707 echo big/little test failed
1709 else
1710 echo big/little test failed
1713 ##########################################
1714 # L2TPV3 probe
1716 cat > $TMPC <<EOF
1717 #include <sys/socket.h>
1718 #include <linux/ip.h>
1719 int main(void) { return sizeof(struct mmsghdr); }
1721 if compile_prog "" "" ; then
1722 l2tpv3=yes
1723 else
1724 l2tpv3=no
1727 ##########################################
1728 # pkg-config probe
1730 if ! has "$pkg_config_exe"; then
1731 error_exit "pkg-config binary '$pkg_config_exe' not found"
1734 ##########################################
1735 # NPTL probe
1737 if test "$linux_user" = "yes"; then
1738 cat > $TMPC <<EOF
1739 #include <sched.h>
1740 #include <linux/futex.h>
1741 int main(void) {
1742 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1743 #error bork
1744 #endif
1745 return 0;
1748 if ! compile_object ; then
1749 feature_not_found "nptl" "Install glibc and linux kernel headers."
1753 ##########################################
1754 # zlib check
1756 if test "$zlib" != "no" ; then
1757 cat > $TMPC << EOF
1758 #include <zlib.h>
1759 int main(void) { zlibVersion(); return 0; }
1761 if compile_prog "" "-lz" ; then
1763 else
1764 error_exit "zlib check failed" \
1765 "Make sure to have the zlib libs and headers installed."
1768 LIBS="$LIBS -lz"
1770 ##########################################
1771 # lzo check
1773 if test "$lzo" != "no" ; then
1774 cat > $TMPC << EOF
1775 #include <lzo/lzo1x.h>
1776 int main(void) { lzo_version(); return 0; }
1778 if compile_prog "" "-llzo2" ; then
1779 libs_softmmu="$libs_softmmu -llzo2"
1780 lzo="yes"
1781 else
1782 if test "$lzo" = "yes"; then
1783 feature_not_found "liblzo2" "Install liblzo2 devel"
1785 lzo="no"
1789 ##########################################
1790 # snappy check
1792 if test "$snappy" != "no" ; then
1793 cat > $TMPC << EOF
1794 #include <snappy-c.h>
1795 int main(void) { snappy_max_compressed_length(4096); return 0; }
1797 if compile_prog "" "-lsnappy" ; then
1798 libs_softmmu="$libs_softmmu -lsnappy"
1799 snappy="yes"
1800 else
1801 if test "$snappy" = "yes"; then
1802 feature_not_found "libsnappy" "Install libsnappy devel"
1804 snappy="no"
1808 ##########################################
1809 # bzip2 check
1811 if test "$bzip2" != "no" ; then
1812 cat > $TMPC << EOF
1813 #include <bzlib.h>
1814 int main(void) { BZ2_bzlibVersion(); return 0; }
1816 if compile_prog "" "-lbz2" ; then
1817 bzip2="yes"
1818 else
1819 if test "$bzip2" = "yes"; then
1820 feature_not_found "libbzip2" "Install libbzip2 devel"
1822 bzip2="no"
1826 ##########################################
1827 # libseccomp check
1829 if test "$seccomp" != "no" ; then
1830 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1831 $pkg_config --atleast-version=2.1.1 libseccomp; then
1832 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1833 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1834 seccomp="yes"
1835 else
1836 if test "$seccomp" = "yes"; then
1837 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
1839 seccomp="no"
1842 ##########################################
1843 # xen probe
1845 if test "$xen" != "no" ; then
1846 xen_libs="-lxenstore -lxenctrl -lxenguest"
1848 # First we test whether Xen headers and libraries are available.
1849 # If no, we are done and there is no Xen support.
1850 # If yes, more tests are run to detect the Xen version.
1852 # Xen (any)
1853 cat > $TMPC <<EOF
1854 #include <xenctrl.h>
1855 int main(void) {
1856 return 0;
1859 if ! compile_prog "" "$xen_libs" ; then
1860 # Xen not found
1861 if test "$xen" = "yes" ; then
1862 feature_not_found "xen" "Install xen devel"
1864 xen=no
1866 # Xen unstable
1867 elif
1868 cat > $TMPC <<EOF &&
1869 #include <xenctrl.h>
1870 #include <xenstore.h>
1871 #include <stdint.h>
1872 #include <xen/hvm/hvm_info_table.h>
1873 #if !defined(HVM_MAX_VCPUS)
1874 # error HVM_MAX_VCPUS not defined
1875 #endif
1876 int main(void) {
1877 xc_interface *xc;
1878 xs_daemon_open();
1879 xc = xc_interface_open(0, 0, 0);
1880 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1881 xc_gnttab_open(NULL, 0);
1882 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1883 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1884 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1885 return 0;
1888 compile_prog "" "$xen_libs"
1889 then
1890 xen_ctrl_version=450
1891 xen=yes
1893 elif
1894 cat > $TMPC <<EOF &&
1895 #include <xenctrl.h>
1896 #include <xenstore.h>
1897 #include <stdint.h>
1898 #include <xen/hvm/hvm_info_table.h>
1899 #if !defined(HVM_MAX_VCPUS)
1900 # error HVM_MAX_VCPUS not defined
1901 #endif
1902 int main(void) {
1903 xc_interface *xc;
1904 xs_daemon_open();
1905 xc = xc_interface_open(0, 0, 0);
1906 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1907 xc_gnttab_open(NULL, 0);
1908 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1909 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1910 return 0;
1913 compile_prog "" "$xen_libs"
1914 then
1915 xen_ctrl_version=420
1916 xen=yes
1918 elif
1919 cat > $TMPC <<EOF &&
1920 #include <xenctrl.h>
1921 #include <xs.h>
1922 #include <stdint.h>
1923 #include <xen/hvm/hvm_info_table.h>
1924 #if !defined(HVM_MAX_VCPUS)
1925 # error HVM_MAX_VCPUS not defined
1926 #endif
1927 int main(void) {
1928 xs_daemon_open();
1929 xc_interface_open(0, 0, 0);
1930 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1931 xc_gnttab_open(NULL, 0);
1932 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1933 return 0;
1936 compile_prog "" "$xen_libs"
1937 then
1938 xen_ctrl_version=410
1939 xen=yes
1941 # Xen 4.0.0
1942 elif
1943 cat > $TMPC <<EOF &&
1944 #include <xenctrl.h>
1945 #include <xs.h>
1946 #include <stdint.h>
1947 #include <xen/hvm/hvm_info_table.h>
1948 #if !defined(HVM_MAX_VCPUS)
1949 # error HVM_MAX_VCPUS not defined
1950 #endif
1951 int main(void) {
1952 struct xen_add_to_physmap xatp = {
1953 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1955 xs_daemon_open();
1956 xc_interface_open();
1957 xc_gnttab_open();
1958 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1959 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1960 return 0;
1963 compile_prog "" "$xen_libs"
1964 then
1965 xen_ctrl_version=400
1966 xen=yes
1968 # Xen 3.4.0
1969 elif
1970 cat > $TMPC <<EOF &&
1971 #include <xenctrl.h>
1972 #include <xs.h>
1973 int main(void) {
1974 struct xen_add_to_physmap xatp = {
1975 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1977 xs_daemon_open();
1978 xc_interface_open();
1979 xc_gnttab_open();
1980 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1981 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1982 return 0;
1985 compile_prog "" "$xen_libs"
1986 then
1987 xen_ctrl_version=340
1988 xen=yes
1990 # Xen 3.3.0
1991 elif
1992 cat > $TMPC <<EOF &&
1993 #include <xenctrl.h>
1994 #include <xs.h>
1995 int main(void) {
1996 xs_daemon_open();
1997 xc_interface_open();
1998 xc_gnttab_open();
1999 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2000 return 0;
2003 compile_prog "" "$xen_libs"
2004 then
2005 xen_ctrl_version=330
2006 xen=yes
2008 # Xen version unsupported
2009 else
2010 if test "$xen" = "yes" ; then
2011 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2013 xen=no
2016 if test "$xen" = yes; then
2017 libs_softmmu="$xen_libs $libs_softmmu"
2021 if test "$xen_pci_passthrough" != "no"; then
2022 if test "$xen" = "yes" && test "$linux" = "yes" &&
2023 test "$xen_ctrl_version" -ge 340; then
2024 xen_pci_passthrough=yes
2025 else
2026 if test "$xen_pci_passthrough" = "yes"; then
2027 if test "$xen_ctrl_version" -lt 340; then
2028 error_exit "User requested feature Xen PCI Passthrough" \
2029 "This feature does not work with Xen 3.3"
2031 error_exit "User requested feature Xen PCI Passthrough" \
2032 " but this feature requires /sys from Linux"
2034 xen_pci_passthrough=no
2038 ##########################################
2039 # libtool probe
2041 if ! has $libtool; then
2042 libtool=
2045 # MacOSX ships with a libtool which isn't the GNU one; weed this
2046 # out by checking whether libtool supports the --version switch
2047 if test -n "$libtool"; then
2048 if ! "$libtool" --version >/dev/null 2>&1; then
2049 libtool=
2053 ##########################################
2054 # Sparse probe
2055 if test "$sparse" != "no" ; then
2056 if has cgcc; then
2057 sparse=yes
2058 else
2059 if test "$sparse" = "yes" ; then
2060 feature_not_found "sparse" "Install sparse binary"
2062 sparse=no
2066 ##########################################
2067 # X11 probe
2068 x11_cflags=
2069 x11_libs=-lX11
2070 if $pkg_config --exists "x11"; then
2071 x11_cflags=`$pkg_config --cflags x11`
2072 x11_libs=`$pkg_config --libs x11`
2075 ##########################################
2076 # GTK probe
2078 if test "$gtkabi" = ""; then
2079 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2080 # Use 3.0 as a fallback if that is available.
2081 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2082 gtkabi=2.0
2083 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2084 gtkabi=3.0
2085 else
2086 gtkabi=2.0
2090 if test "$gtk" != "no"; then
2091 gtkpackage="gtk+-$gtkabi"
2092 gtkx11package="gtk+-x11-$gtkabi"
2093 if test "$gtkabi" = "3.0" ; then
2094 gtkversion="3.0.0"
2095 else
2096 gtkversion="2.18.0"
2098 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2099 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2100 gtk_libs=`$pkg_config --libs $gtkpackage`
2101 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2102 gtk_cflags="$gtk_cflags $x11_cflags"
2103 gtk_libs="$gtk_libs $x11_libs"
2105 libs_softmmu="$gtk_libs $libs_softmmu"
2106 gtk="yes"
2107 elif test "$gtk" = "yes"; then
2108 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2109 else
2110 gtk="no"
2115 ##########################################
2116 # GNUTLS probe
2118 gnutls_works() {
2119 # Unfortunately some distros have bad pkg-config information for gnutls
2120 # such that it claims to exist but you get a compiler error if you try
2121 # to use the options returned by --libs. Specifically, Ubuntu for --static
2122 # builds doesn't work:
2123 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2125 # So sanity check the cflags/libs before assuming gnutls can be used.
2126 if ! $pkg_config --exists "gnutls"; then
2127 return 1
2130 write_c_skeleton
2131 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2134 gnutls_gcrypt=no
2135 gnutls_nettle=no
2136 if test "$gnutls" != "no"; then
2137 if gnutls_works; then
2138 gnutls_cflags=`$pkg_config --cflags gnutls`
2139 gnutls_libs=`$pkg_config --libs gnutls`
2140 libs_softmmu="$gnutls_libs $libs_softmmu"
2141 libs_tools="$gnutls_libs $libs_tools"
2142 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2143 gnutls="yes"
2145 # gnutls_hash_init requires >= 2.9.10
2146 if $pkg_config --exists "gnutls >= 2.9.10"; then
2147 gnutls_hash="yes"
2148 else
2149 gnutls_hash="no"
2152 if $pkg_config --exists 'gnutls >= 3.0'; then
2153 gnutls_gcrypt=no
2154 gnutls_nettle=yes
2155 elif $pkg_config --exists 'gnutls >= 2.12'; then
2156 case `$pkg_config --libs --static gnutls` in
2157 *gcrypt*)
2158 gnutls_gcrypt=yes
2159 gnutls_nettle=no
2161 *nettle*)
2162 gnutls_gcrypt=no
2163 gnutls_nettle=yes
2166 gnutls_gcrypt=yes
2167 gnutls_nettle=no
2169 esac
2170 else
2171 gnutls_gcrypt=yes
2172 gnutls_nettle=no
2174 elif test "$gnutls" = "yes"; then
2175 feature_not_found "gnutls" "Install gnutls devel"
2176 else
2177 gnutls="no"
2178 gnutls_hash="no"
2180 else
2181 gnutls_hash="no"
2184 if test "$gnutls_gcrypt" != "no"; then
2185 if has "libgcrypt-config"; then
2186 gcrypt_cflags=`libgcrypt-config --cflags`
2187 gcrypt_libs=`libgcrypt-config --libs`
2188 libs_softmmu="$gcrypt_libs $libs_softmmu"
2189 libs_tools="$gcrypt_libs $libs_tools"
2190 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2191 else
2192 feature_not_found "gcrypt" "Install gcrypt devel"
2197 if test "$gnutls_nettle" != "no"; then
2198 if $pkg_config --exists "nettle"; then
2199 nettle_cflags=`$pkg_config --cflags nettle`
2200 nettle_libs=`$pkg_config --libs nettle`
2201 nettle_version=`$pkg_config --modversion nettle`
2202 libs_softmmu="$nettle_libs $libs_softmmu"
2203 libs_tools="$nettle_libs $libs_tools"
2204 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2205 else
2206 feature_not_found "nettle" "Install nettle devel"
2211 ##########################################
2212 # VTE probe
2214 if test "$vte" != "no"; then
2215 if test "$gtkabi" = "3.0"; then
2216 vtepackage="vte-2.90"
2217 vteversion="0.32.0"
2218 else
2219 vtepackage="vte"
2220 vteversion="0.24.0"
2222 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2223 vte_cflags=`$pkg_config --cflags $vtepackage`
2224 vte_libs=`$pkg_config --libs $vtepackage`
2225 libs_softmmu="$vte_libs $libs_softmmu"
2226 vte="yes"
2227 elif test "$vte" = "yes"; then
2228 if test "$gtkabi" = "3.0"; then
2229 feature_not_found "vte" "Install libvte-2.90 devel"
2230 else
2231 feature_not_found "vte" "Install libvte devel"
2233 else
2234 vte="no"
2238 ##########################################
2239 # SDL probe
2241 # Look for sdl configuration program (pkg-config or sdl-config). Try
2242 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2244 if test $sdlabi = "2.0"; then
2245 sdl_config=$sdl2_config
2246 sdlname=sdl2
2247 sdlconfigname=sdl2_config
2248 else
2249 sdlname=sdl
2250 sdlconfigname=sdl_config
2253 if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2254 sdl_config=$sdlconfigname
2257 if $pkg_config $sdlname --exists; then
2258 sdlconfig="$pkg_config $sdlname"
2259 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2260 elif has ${sdl_config}; then
2261 sdlconfig="$sdl_config"
2262 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2263 else
2264 if test "$sdl" = "yes" ; then
2265 feature_not_found "sdl" "Install SDL devel"
2267 sdl=no
2269 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2270 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2273 sdl_too_old=no
2274 if test "$sdl" != "no" ; then
2275 cat > $TMPC << EOF
2276 #include <SDL.h>
2277 #undef main /* We don't want SDL to override our main() */
2278 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2280 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2281 if test "$static" = "yes" ; then
2282 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2283 else
2284 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2286 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2287 if test "$_sdlversion" -lt 121 ; then
2288 sdl_too_old=yes
2289 else
2290 if test "$cocoa" = "no" ; then
2291 sdl=yes
2295 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2296 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2297 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2298 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2299 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2301 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2303 else
2304 sdl=no
2306 fi # static link
2307 else # sdl not found
2308 if test "$sdl" = "yes" ; then
2309 feature_not_found "sdl" "Install SDL devel"
2311 sdl=no
2312 fi # sdl compile test
2315 if test "$sdl" = "yes" ; then
2316 cat > $TMPC <<EOF
2317 #include <SDL.h>
2318 #if defined(SDL_VIDEO_DRIVER_X11)
2319 #include <X11/XKBlib.h>
2320 #else
2321 #error No x11 support
2322 #endif
2323 int main(void) { return 0; }
2325 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2326 sdl_cflags="$sdl_cflags $x11_cflags"
2327 sdl_libs="$sdl_libs $x11_libs"
2329 libs_softmmu="$sdl_libs $libs_softmmu"
2332 ##########################################
2333 # RDMA needs OpenFabrics libraries
2334 if test "$rdma" != "no" ; then
2335 cat > $TMPC <<EOF
2336 #include <rdma/rdma_cma.h>
2337 int main(void) { return 0; }
2339 rdma_libs="-lrdmacm -libverbs"
2340 if compile_prog "" "$rdma_libs" ; then
2341 rdma="yes"
2342 libs_softmmu="$libs_softmmu $rdma_libs"
2343 else
2344 if test "$rdma" = "yes" ; then
2345 error_exit \
2346 " OpenFabrics librdmacm/libibverbs not present." \
2347 " Your options:" \
2348 " (1) Fast: Install infiniband packages from your distro." \
2349 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2350 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2352 rdma="no"
2356 ##########################################
2357 # VNC TLS/WS detection
2358 if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
2359 cat > $TMPC <<EOF
2360 #include <gnutls/gnutls.h>
2361 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2363 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2364 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
2365 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
2366 if test "$vnc_tls" != "no" ; then
2367 vnc_tls=yes
2369 libs_softmmu="$vnc_tls_libs $libs_softmmu"
2370 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
2371 else
2372 if test "$vnc_tls" = "yes" ; then
2373 feature_not_found "vnc-tls" "Install gnutls devel"
2375 vnc_tls=no
2379 ##########################################
2380 # VNC SASL detection
2381 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2382 cat > $TMPC <<EOF
2383 #include <sasl/sasl.h>
2384 #include <stdio.h>
2385 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2387 # Assuming Cyrus-SASL installed in /usr prefix
2388 vnc_sasl_cflags=""
2389 vnc_sasl_libs="-lsasl2"
2390 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2391 vnc_sasl=yes
2392 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2393 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2394 else
2395 if test "$vnc_sasl" = "yes" ; then
2396 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2398 vnc_sasl=no
2402 ##########################################
2403 # VNC JPEG detection
2404 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2405 cat > $TMPC <<EOF
2406 #include <stdio.h>
2407 #include <jpeglib.h>
2408 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2410 vnc_jpeg_cflags=""
2411 vnc_jpeg_libs="-ljpeg"
2412 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2413 vnc_jpeg=yes
2414 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2415 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2416 else
2417 if test "$vnc_jpeg" = "yes" ; then
2418 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2420 vnc_jpeg=no
2424 ##########################################
2425 # VNC PNG detection
2426 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2427 cat > $TMPC <<EOF
2428 //#include <stdio.h>
2429 #include <png.h>
2430 #include <stddef.h>
2431 int main(void) {
2432 png_structp png_ptr;
2433 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2434 return png_ptr != 0;
2437 if $pkg_config libpng --exists; then
2438 vnc_png_cflags=`$pkg_config libpng --cflags`
2439 vnc_png_libs=`$pkg_config libpng --libs`
2440 else
2441 vnc_png_cflags=""
2442 vnc_png_libs="-lpng"
2444 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2445 vnc_png=yes
2446 libs_softmmu="$vnc_png_libs $libs_softmmu"
2447 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2448 else
2449 if test "$vnc_png" = "yes" ; then
2450 feature_not_found "vnc-png" "Install libpng devel"
2452 vnc_png=no
2456 ##########################################
2457 # fnmatch() probe, used for ACL routines
2458 fnmatch="no"
2459 cat > $TMPC << EOF
2460 #include <fnmatch.h>
2461 int main(void)
2463 fnmatch("foo", "foo", 0);
2464 return 0;
2467 if compile_prog "" "" ; then
2468 fnmatch="yes"
2471 ##########################################
2472 # uuid_generate() probe, used for vdi block driver
2473 # Note that on some systems (notably MacOSX) no extra library
2474 # need be linked to get the uuid functions.
2475 if test "$uuid" != "no" ; then
2476 uuid_libs="-luuid"
2477 cat > $TMPC << EOF
2478 #include <uuid/uuid.h>
2479 int main(void)
2481 uuid_t my_uuid;
2482 uuid_generate(my_uuid);
2483 return 0;
2486 if compile_prog "" "" ; then
2487 uuid="yes"
2488 elif compile_prog "" "$uuid_libs" ; then
2489 uuid="yes"
2490 libs_softmmu="$uuid_libs $libs_softmmu"
2491 libs_tools="$uuid_libs $libs_tools"
2492 else
2493 if test "$uuid" = "yes" ; then
2494 feature_not_found "uuid" "Install libuuid devel"
2496 uuid=no
2500 if test "$vhdx" = "yes" ; then
2501 if test "$uuid" = "no" ; then
2502 error_exit "uuid required for VHDX support"
2504 elif test "$vhdx" != "no" ; then
2505 if test "$uuid" = "yes" ; then
2506 vhdx=yes
2507 else
2508 vhdx=no
2512 ##########################################
2513 # xfsctl() probe, used for raw-posix
2514 if test "$xfs" != "no" ; then
2515 cat > $TMPC << EOF
2516 #include <stddef.h> /* NULL */
2517 #include <xfs/xfs.h>
2518 int main(void)
2520 xfsctl(NULL, 0, 0, NULL);
2521 return 0;
2524 if compile_prog "" "" ; then
2525 xfs="yes"
2526 else
2527 if test "$xfs" = "yes" ; then
2528 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2530 xfs=no
2534 ##########################################
2535 # vde libraries probe
2536 if test "$vde" != "no" ; then
2537 vde_libs="-lvdeplug"
2538 cat > $TMPC << EOF
2539 #include <libvdeplug.h>
2540 int main(void)
2542 struct vde_open_args a = {0, 0, 0};
2543 char s[] = "";
2544 vde_open(s, s, &a);
2545 return 0;
2548 if compile_prog "" "$vde_libs" ; then
2549 vde=yes
2550 libs_softmmu="$vde_libs $libs_softmmu"
2551 libs_tools="$vde_libs $libs_tools"
2552 else
2553 if test "$vde" = "yes" ; then
2554 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2556 vde=no
2560 ##########################################
2561 # netmap support probe
2562 # Apart from looking for netmap headers, we make sure that the host API version
2563 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2564 # a minor/major version number. Minor new features will be marked with values up
2565 # to 15, and if something happens that requires a change to the backend we will
2566 # move above 15, submit the backend fixes and modify this two bounds.
2567 if test "$netmap" != "no" ; then
2568 cat > $TMPC << EOF
2569 #include <inttypes.h>
2570 #include <net/if.h>
2571 #include <net/netmap.h>
2572 #include <net/netmap_user.h>
2573 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2574 #error
2575 #endif
2576 int main(void) { return 0; }
2578 if compile_prog "" "" ; then
2579 netmap=yes
2580 else
2581 if test "$netmap" = "yes" ; then
2582 feature_not_found "netmap"
2584 netmap=no
2588 ##########################################
2589 # libcap-ng library probe
2590 if test "$cap_ng" != "no" ; then
2591 cap_libs="-lcap-ng"
2592 cat > $TMPC << EOF
2593 #include <cap-ng.h>
2594 int main(void)
2596 capng_capability_to_name(CAPNG_EFFECTIVE);
2597 return 0;
2600 if compile_prog "" "$cap_libs" ; then
2601 cap_ng=yes
2602 libs_tools="$cap_libs $libs_tools"
2603 else
2604 if test "$cap_ng" = "yes" ; then
2605 feature_not_found "cap_ng" "Install libcap-ng devel"
2607 cap_ng=no
2611 ##########################################
2612 # Sound support libraries probe
2614 audio_drv_probe()
2616 drv=$1
2617 hdr=$2
2618 lib=$3
2619 exp=$4
2620 cfl=$5
2621 cat > $TMPC << EOF
2622 #include <$hdr>
2623 int main(void) { $exp }
2625 if compile_prog "$cfl" "$lib" ; then
2627 else
2628 error_exit "$drv check failed" \
2629 "Make sure to have the $drv libs and headers installed."
2633 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2634 for drv in $audio_drv_list; do
2635 case $drv in
2636 alsa)
2637 audio_drv_probe $drv alsa/asoundlib.h -lasound \
2638 "return snd_pcm_close((snd_pcm_t *)0);"
2639 libs_softmmu="-lasound $libs_softmmu"
2643 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2644 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2645 libs_softmmu="-lpulse $libs_softmmu"
2646 audio_pt_int="yes"
2649 coreaudio)
2650 libs_softmmu="-framework CoreAudio $libs_softmmu"
2653 dsound)
2654 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2655 audio_win_int="yes"
2658 oss)
2659 libs_softmmu="$oss_lib $libs_softmmu"
2662 sdl|wav)
2663 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2667 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2668 error_exit "Unknown driver '$drv' selected" \
2669 "Possible drivers are: $audio_possible_drivers"
2672 esac
2673 done
2675 ##########################################
2676 # BrlAPI probe
2678 if test "$brlapi" != "no" ; then
2679 brlapi_libs="-lbrlapi"
2680 cat > $TMPC << EOF
2681 #include <brlapi.h>
2682 #include <stddef.h>
2683 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2685 if compile_prog "" "$brlapi_libs" ; then
2686 brlapi=yes
2687 libs_softmmu="$brlapi_libs $libs_softmmu"
2688 else
2689 if test "$brlapi" = "yes" ; then
2690 feature_not_found "brlapi" "Install brlapi devel"
2692 brlapi=no
2696 ##########################################
2697 # curses probe
2698 if test "$curses" != "no" ; then
2699 if test "$mingw32" = "yes" ; then
2700 curses_list="-lpdcurses"
2701 else
2702 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2704 curses_found=no
2705 cat > $TMPC << EOF
2706 #include <curses.h>
2707 int main(void) {
2708 const char *s = curses_version();
2709 resize_term(0, 0);
2710 return s != 0;
2713 IFS=:
2714 for curses_lib in $curses_list; do
2715 unset IFS
2716 if compile_prog "" "$curses_lib" ; then
2717 curses_found=yes
2718 libs_softmmu="$curses_lib $libs_softmmu"
2719 break
2721 done
2722 unset IFS
2723 if test "$curses_found" = "yes" ; then
2724 curses=yes
2725 else
2726 if test "$curses" = "yes" ; then
2727 feature_not_found "curses" "Install ncurses devel"
2729 curses=no
2733 ##########################################
2734 # curl probe
2735 if test "$curl" != "no" ; then
2736 if $pkg_config libcurl --exists; then
2737 curlconfig="$pkg_config libcurl"
2738 else
2739 curlconfig=curl-config
2741 cat > $TMPC << EOF
2742 #include <curl/curl.h>
2743 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2745 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2746 curl_libs=`$curlconfig --libs 2>/dev/null`
2747 if compile_prog "$curl_cflags" "$curl_libs" ; then
2748 curl=yes
2749 else
2750 if test "$curl" = "yes" ; then
2751 feature_not_found "curl" "Install libcurl devel"
2753 curl=no
2755 fi # test "$curl"
2757 ##########################################
2758 # bluez support probe
2759 if test "$bluez" != "no" ; then
2760 cat > $TMPC << EOF
2761 #include <bluetooth/bluetooth.h>
2762 int main(void) { return bt_error(0); }
2764 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2765 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2766 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2767 bluez=yes
2768 libs_softmmu="$bluez_libs $libs_softmmu"
2769 else
2770 if test "$bluez" = "yes" ; then
2771 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2773 bluez="no"
2777 ##########################################
2778 # glib support probe
2780 glib_req_ver=2.22
2781 glib_modules=gthread-2.0
2782 if test "$modules" = yes; then
2783 glib_modules="$glib_modules gmodule-2.0"
2786 for i in $glib_modules; do
2787 if $pkg_config --atleast-version=$glib_req_ver $i; then
2788 glib_cflags=`$pkg_config --cflags $i`
2789 glib_libs=`$pkg_config --libs $i`
2790 CFLAGS="$glib_cflags $CFLAGS"
2791 LIBS="$glib_libs $LIBS"
2792 libs_qga="$glib_libs $libs_qga"
2793 else
2794 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2796 done
2798 # g_test_trap_subprocess added in 2.38. Used by some tests.
2799 glib_subprocess=yes
2800 if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2801 glib_subprocess=no
2804 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2805 cat > $TMPC << EOF
2806 #include <glib.h>
2807 int main(void) { return 0; }
2809 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2810 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2811 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2812 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2816 ##########################################
2817 # SHA command probe for modules
2818 if test "$modules" = yes; then
2819 shacmd_probe="sha1sum sha1 shasum"
2820 for c in $shacmd_probe; do
2821 if has $c; then
2822 shacmd="$c"
2823 break
2825 done
2826 if test "$shacmd" = ""; then
2827 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2831 ##########################################
2832 # pixman support probe
2834 if test "$pixman" = ""; then
2835 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2836 pixman="none"
2837 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
2838 pixman="system"
2839 else
2840 pixman="internal"
2843 if test "$pixman" = "none"; then
2844 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2845 error_exit "pixman disabled but system emulation or tools build" \
2846 "enabled. You can turn off pixman only if you also" \
2847 "disable all system emulation targets and the tools" \
2848 "build with '--disable-tools --disable-system'."
2850 pixman_cflags=
2851 pixman_libs=
2852 elif test "$pixman" = "system"; then
2853 # pixman version has been checked above
2854 pixman_cflags=`$pkg_config --cflags pixman-1`
2855 pixman_libs=`$pkg_config --libs pixman-1`
2856 else
2857 if test ! -d ${source_path}/pixman/pixman; then
2858 error_exit "pixman >= 0.21.8 not present. Your options:" \
2859 " (1) Preferred: Install the pixman devel package (any recent" \
2860 " distro should have packages as Xorg needs pixman too)." \
2861 " (2) Fetch the pixman submodule, using:" \
2862 " git submodule update --init pixman"
2864 mkdir -p pixman/pixman
2865 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2866 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2869 ##########################################
2870 # libcap probe
2872 if test "$cap" != "no" ; then
2873 cat > $TMPC <<EOF
2874 #include <stdio.h>
2875 #include <sys/capability.h>
2876 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2878 if compile_prog "" "-lcap" ; then
2879 cap=yes
2880 else
2881 cap=no
2885 ##########################################
2886 # pthread probe
2887 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2889 pthread=no
2890 cat > $TMPC << EOF
2891 #include <pthread.h>
2892 static void *f(void *p) { return NULL; }
2893 int main(void) {
2894 pthread_t thread;
2895 pthread_create(&thread, 0, f, 0);
2896 return 0;
2899 if compile_prog "" "" ; then
2900 pthread=yes
2901 else
2902 for pthread_lib in $PTHREADLIBS_LIST; do
2903 if compile_prog "" "$pthread_lib" ; then
2904 pthread=yes
2905 found=no
2906 for lib_entry in $LIBS; do
2907 if test "$lib_entry" = "$pthread_lib"; then
2908 found=yes
2909 break
2911 done
2912 if test "$found" = "no"; then
2913 LIBS="$pthread_lib $LIBS"
2915 break
2917 done
2920 if test "$mingw32" != yes -a "$pthread" = no; then
2921 error_exit "pthread check failed" \
2922 "Make sure to have the pthread libs and headers installed."
2925 # check for pthread_setname_np
2926 pthread_setname_np=no
2927 cat > $TMPC << EOF
2928 #include <pthread.h>
2930 static void *f(void *p) { return NULL; }
2931 int main(void)
2933 pthread_t thread;
2934 pthread_create(&thread, 0, f, 0);
2935 pthread_setname_np(thread, "QEMU");
2936 return 0;
2939 if compile_prog "" "$pthread_lib" ; then
2940 pthread_setname_np=yes
2943 ##########################################
2944 # rbd probe
2945 if test "$rbd" != "no" ; then
2946 cat > $TMPC <<EOF
2947 #include <stdio.h>
2948 #include <rbd/librbd.h>
2949 int main(void) {
2950 rados_t cluster;
2951 rados_create(&cluster, NULL);
2952 return 0;
2955 rbd_libs="-lrbd -lrados"
2956 if compile_prog "" "$rbd_libs" ; then
2957 rbd=yes
2958 else
2959 if test "$rbd" = "yes" ; then
2960 feature_not_found "rados block device" "Install librbd/ceph devel"
2962 rbd=no
2966 ##########################################
2967 # libssh2 probe
2968 min_libssh2_version=1.2.8
2969 if test "$libssh2" != "no" ; then
2970 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
2971 libssh2_cflags=`$pkg_config libssh2 --cflags`
2972 libssh2_libs=`$pkg_config libssh2 --libs`
2973 libssh2=yes
2974 else
2975 if test "$libssh2" = "yes" ; then
2976 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
2978 libssh2=no
2982 ##########################################
2983 # libssh2_sftp_fsync probe
2985 if test "$libssh2" = "yes"; then
2986 cat > $TMPC <<EOF
2987 #include <stdio.h>
2988 #include <libssh2.h>
2989 #include <libssh2_sftp.h>
2990 int main(void) {
2991 LIBSSH2_SESSION *session;
2992 LIBSSH2_SFTP *sftp;
2993 LIBSSH2_SFTP_HANDLE *sftp_handle;
2994 session = libssh2_session_init ();
2995 sftp = libssh2_sftp_init (session);
2996 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2997 libssh2_sftp_fsync (sftp_handle);
2998 return 0;
3001 # libssh2_cflags/libssh2_libs defined in previous test.
3002 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3003 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3007 ##########################################
3008 # linux-aio probe
3010 if test "$linux_aio" != "no" ; then
3011 cat > $TMPC <<EOF
3012 #include <libaio.h>
3013 #include <sys/eventfd.h>
3014 #include <stddef.h>
3015 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3017 if compile_prog "" "-laio" ; then
3018 linux_aio=yes
3019 else
3020 if test "$linux_aio" = "yes" ; then
3021 feature_not_found "linux AIO" "Install libaio devel"
3023 linux_aio=no
3027 ##########################################
3028 # TPM passthrough is only on x86 Linux
3030 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3031 tpm_passthrough=$tpm
3032 else
3033 tpm_passthrough=no
3036 ##########################################
3037 # attr probe
3039 if test "$attr" != "no" ; then
3040 cat > $TMPC <<EOF
3041 #include <stdio.h>
3042 #include <sys/types.h>
3043 #ifdef CONFIG_LIBATTR
3044 #include <attr/xattr.h>
3045 #else
3046 #include <sys/xattr.h>
3047 #endif
3048 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3050 if compile_prog "" "" ; then
3051 attr=yes
3052 # Older distros have <attr/xattr.h>, and need -lattr:
3053 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3054 attr=yes
3055 LIBS="-lattr $LIBS"
3056 libattr=yes
3057 else
3058 if test "$attr" = "yes" ; then
3059 feature_not_found "ATTR" "Install libc6 or libattr devel"
3061 attr=no
3065 ##########################################
3066 # iovec probe
3067 cat > $TMPC <<EOF
3068 #include <sys/types.h>
3069 #include <sys/uio.h>
3070 #include <unistd.h>
3071 int main(void) { return sizeof(struct iovec); }
3073 iovec=no
3074 if compile_prog "" "" ; then
3075 iovec=yes
3078 ##########################################
3079 # preadv probe
3080 cat > $TMPC <<EOF
3081 #include <sys/types.h>
3082 #include <sys/uio.h>
3083 #include <unistd.h>
3084 int main(void) { return preadv(0, 0, 0, 0); }
3086 preadv=no
3087 if compile_prog "" "" ; then
3088 preadv=yes
3091 ##########################################
3092 # fdt probe
3093 # fdt support is mandatory for at least some target architectures,
3094 # so insist on it if we're building those system emulators.
3095 fdt_required=no
3096 for target in $target_list; do
3097 case $target in
3098 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3099 fdt_required=yes
3101 esac
3102 done
3104 if test "$fdt_required" = "yes"; then
3105 if test "$fdt" = "no"; then
3106 error_exit "fdt disabled but some requested targets require it." \
3107 "You can turn off fdt only if you also disable all the system emulation" \
3108 "targets which need it (by specifying a cut down --target-list)."
3110 fdt=yes
3113 if test "$fdt" != "no" ; then
3114 fdt_libs="-lfdt"
3115 # explicitly check for libfdt_env.h as it is missing in some stable installs
3116 # and test for required functions to make sure we are on a version >= 1.4.0
3117 cat > $TMPC << EOF
3118 #include <libfdt.h>
3119 #include <libfdt_env.h>
3120 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3122 if compile_prog "" "$fdt_libs" ; then
3123 # system DTC is good - use it
3124 fdt=yes
3125 elif test -d ${source_path}/dtc/libfdt ; then
3126 # have submodule DTC - use it
3127 fdt=yes
3128 dtc_internal="yes"
3129 mkdir -p dtc
3130 if [ "$pwd_is_source_path" != "y" ] ; then
3131 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3132 symlink "$source_path/dtc/scripts" "dtc/scripts"
3134 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3135 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3136 elif test "$fdt" = "yes" ; then
3137 # have neither and want - prompt for system/submodule install
3138 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3139 " (1) Preferred: Install the DTC (libfdt) devel package" \
3140 " (2) Fetch the DTC submodule, using:" \
3141 " git submodule update --init dtc"
3142 else
3143 # don't have and don't want
3144 fdt_libs=
3145 fdt=no
3149 libs_softmmu="$libs_softmmu $fdt_libs"
3151 ##########################################
3152 # opengl probe (for sdl2, milkymist-tmu2)
3154 # GLX probe, used by milkymist-tmu2
3155 # this is temporary, code will be switched to egl mid-term.
3156 cat > $TMPC << EOF
3157 #include <X11/Xlib.h>
3158 #include <GL/gl.h>
3159 #include <GL/glx.h>
3160 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3162 if compile_prog "" "-lGL -lX11" ; then
3163 have_glx=yes
3164 else
3165 have_glx=no
3168 if test "$opengl" != "no" ; then
3169 opengl_pkgs="gl glesv2 epoxy egl"
3170 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
3171 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3172 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3173 opengl=yes
3174 else
3175 if test "$opengl" = "yes" ; then
3176 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3178 opengl_cflags=""
3179 opengl_libs=""
3180 opengl=no
3185 ##########################################
3186 # archipelago probe
3187 if test "$archipelago" != "no" ; then
3188 cat > $TMPC <<EOF
3189 #include <stdio.h>
3190 #include <xseg/xseg.h>
3191 #include <xseg/protocol.h>
3192 int main(void) {
3193 xseg_initialize();
3194 return 0;
3197 archipelago_libs=-lxseg
3198 if compile_prog "" "$archipelago_libs"; then
3199 archipelago="yes"
3200 libs_tools="$archipelago_libs $libs_tools"
3201 libs_softmmu="$archipelago_libs $libs_softmmu"
3203 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3204 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3205 echo "license and therefore prevent redistribution."
3206 echo
3207 echo "To disable Archipelago, use --disable-archipelago"
3208 else
3209 if test "$archipelago" = "yes" ; then
3210 feature_not_found "Archipelago backend support" "Install libxseg devel"
3212 archipelago="no"
3217 ##########################################
3218 # glusterfs probe
3219 if test "$glusterfs" != "no" ; then
3220 if $pkg_config --atleast-version=3 glusterfs-api; then
3221 glusterfs="yes"
3222 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3223 glusterfs_libs=`$pkg_config --libs glusterfs-api`
3224 if $pkg_config --atleast-version=5 glusterfs-api; then
3225 glusterfs_discard="yes"
3227 if $pkg_config --atleast-version=6 glusterfs-api; then
3228 glusterfs_zerofill="yes"
3230 else
3231 if test "$glusterfs" = "yes" ; then
3232 feature_not_found "GlusterFS backend support" \
3233 "Install glusterfs-api devel >= 3"
3235 glusterfs="no"
3239 # Check for inotify functions when we are building linux-user
3240 # emulator. This is done because older glibc versions don't
3241 # have syscall stubs for these implemented. In that case we
3242 # don't provide them even if kernel supports them.
3244 inotify=no
3245 cat > $TMPC << EOF
3246 #include <sys/inotify.h>
3249 main(void)
3251 /* try to start inotify */
3252 return inotify_init();
3255 if compile_prog "" "" ; then
3256 inotify=yes
3259 inotify1=no
3260 cat > $TMPC << EOF
3261 #include <sys/inotify.h>
3264 main(void)
3266 /* try to start inotify */
3267 return inotify_init1(0);
3270 if compile_prog "" "" ; then
3271 inotify1=yes
3274 # check if utimensat and futimens are supported
3275 utimens=no
3276 cat > $TMPC << EOF
3277 #define _ATFILE_SOURCE
3278 #include <stddef.h>
3279 #include <fcntl.h>
3280 #include <sys/stat.h>
3282 int main(void)
3284 utimensat(AT_FDCWD, "foo", NULL, 0);
3285 futimens(0, NULL);
3286 return 0;
3289 if compile_prog "" "" ; then
3290 utimens=yes
3293 # check if pipe2 is there
3294 pipe2=no
3295 cat > $TMPC << EOF
3296 #include <unistd.h>
3297 #include <fcntl.h>
3299 int main(void)
3301 int pipefd[2];
3302 return pipe2(pipefd, O_CLOEXEC);
3305 if compile_prog "" "" ; then
3306 pipe2=yes
3309 # check if accept4 is there
3310 accept4=no
3311 cat > $TMPC << EOF
3312 #include <sys/socket.h>
3313 #include <stddef.h>
3315 int main(void)
3317 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3318 return 0;
3321 if compile_prog "" "" ; then
3322 accept4=yes
3325 # check if tee/splice is there. vmsplice was added same time.
3326 splice=no
3327 cat > $TMPC << EOF
3328 #include <unistd.h>
3329 #include <fcntl.h>
3330 #include <limits.h>
3332 int main(void)
3334 int len, fd = 0;
3335 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3336 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3337 return 0;
3340 if compile_prog "" "" ; then
3341 splice=yes
3344 ##########################################
3345 # libnuma probe
3347 if test "$numa" != "no" ; then
3348 cat > $TMPC << EOF
3349 #include <numa.h>
3350 int main(void) { return numa_available(); }
3353 if compile_prog "" "-lnuma" ; then
3354 numa=yes
3355 libs_softmmu="-lnuma $libs_softmmu"
3356 else
3357 if test "$numa" = "yes" ; then
3358 feature_not_found "numa" "install numactl devel"
3360 numa=no
3364 ##########################################
3365 # tcmalloc probe
3367 if test "$tcmalloc" = "yes" ; then
3368 cat > $TMPC << EOF
3369 #include <stdlib.h>
3370 int main(void) { malloc(1); return 0; }
3373 if compile_prog "" "-ltcmalloc" ; then
3374 LIBS="-ltcmalloc $LIBS"
3375 else
3376 feature_not_found "tcmalloc" "install gperftools devel"
3380 ##########################################
3381 # signalfd probe
3382 signalfd="no"
3383 cat > $TMPC << EOF
3384 #include <unistd.h>
3385 #include <sys/syscall.h>
3386 #include <signal.h>
3387 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3390 if compile_prog "" "" ; then
3391 signalfd=yes
3394 # check if eventfd is supported
3395 eventfd=no
3396 cat > $TMPC << EOF
3397 #include <sys/eventfd.h>
3399 int main(void)
3401 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3404 if compile_prog "" "" ; then
3405 eventfd=yes
3408 # check for fallocate
3409 fallocate=no
3410 cat > $TMPC << EOF
3411 #include <fcntl.h>
3413 int main(void)
3415 fallocate(0, 0, 0, 0);
3416 return 0;
3419 if compile_prog "" "" ; then
3420 fallocate=yes
3423 # check for fallocate hole punching
3424 fallocate_punch_hole=no
3425 cat > $TMPC << EOF
3426 #include <fcntl.h>
3427 #include <linux/falloc.h>
3429 int main(void)
3431 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3432 return 0;
3435 if compile_prog "" "" ; then
3436 fallocate_punch_hole=yes
3439 # check that fallocate supports range zeroing inside the file
3440 fallocate_zero_range=no
3441 cat > $TMPC << EOF
3442 #include <fcntl.h>
3443 #include <linux/falloc.h>
3445 int main(void)
3447 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3448 return 0;
3451 if compile_prog "" "" ; then
3452 fallocate_zero_range=yes
3455 # check for posix_fallocate
3456 posix_fallocate=no
3457 cat > $TMPC << EOF
3458 #include <fcntl.h>
3460 int main(void)
3462 posix_fallocate(0, 0, 0);
3463 return 0;
3466 if compile_prog "" "" ; then
3467 posix_fallocate=yes
3470 # check for sync_file_range
3471 sync_file_range=no
3472 cat > $TMPC << EOF
3473 #include <fcntl.h>
3475 int main(void)
3477 sync_file_range(0, 0, 0, 0);
3478 return 0;
3481 if compile_prog "" "" ; then
3482 sync_file_range=yes
3485 # check for linux/fiemap.h and FS_IOC_FIEMAP
3486 fiemap=no
3487 cat > $TMPC << EOF
3488 #include <sys/ioctl.h>
3489 #include <linux/fs.h>
3490 #include <linux/fiemap.h>
3492 int main(void)
3494 ioctl(0, FS_IOC_FIEMAP, 0);
3495 return 0;
3498 if compile_prog "" "" ; then
3499 fiemap=yes
3502 # check for dup3
3503 dup3=no
3504 cat > $TMPC << EOF
3505 #include <unistd.h>
3507 int main(void)
3509 dup3(0, 0, 0);
3510 return 0;
3513 if compile_prog "" "" ; then
3514 dup3=yes
3517 # check for ppoll support
3518 ppoll=no
3519 cat > $TMPC << EOF
3520 #include <poll.h>
3522 int main(void)
3524 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3525 ppoll(&pfd, 1, 0, 0);
3526 return 0;
3529 if compile_prog "" "" ; then
3530 ppoll=yes
3533 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3534 prctl_pr_set_timerslack=no
3535 cat > $TMPC << EOF
3536 #include <sys/prctl.h>
3538 int main(void)
3540 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3541 return 0;
3544 if compile_prog "" "" ; then
3545 prctl_pr_set_timerslack=yes
3548 # check for epoll support
3549 epoll=no
3550 cat > $TMPC << EOF
3551 #include <sys/epoll.h>
3553 int main(void)
3555 epoll_create(0);
3556 return 0;
3559 if compile_prog "" "" ; then
3560 epoll=yes
3563 # epoll_create1 and epoll_pwait are later additions
3564 # so we must check separately for their presence
3565 epoll_create1=no
3566 cat > $TMPC << EOF
3567 #include <sys/epoll.h>
3569 int main(void)
3571 /* Note that we use epoll_create1 as a value, not as
3572 * a function being called. This is necessary so that on
3573 * old SPARC glibc versions where the function was present in
3574 * the library but not declared in the header file we will
3575 * fail the configure check. (Otherwise we will get a compiler
3576 * warning but not an error, and will proceed to fail the
3577 * qemu compile where we compile with -Werror.)
3579 return (int)(uintptr_t)&epoll_create1;
3582 if compile_prog "" "" ; then
3583 epoll_create1=yes
3586 epoll_pwait=no
3587 cat > $TMPC << EOF
3588 #include <sys/epoll.h>
3590 int main(void)
3592 epoll_pwait(0, 0, 0, 0, 0);
3593 return 0;
3596 if compile_prog "" "" ; then
3597 epoll_pwait=yes
3600 # check for sendfile support
3601 sendfile=no
3602 cat > $TMPC << EOF
3603 #include <sys/sendfile.h>
3605 int main(void)
3607 return sendfile(0, 0, 0, 0);
3610 if compile_prog "" "" ; then
3611 sendfile=yes
3614 # check for timerfd support (glibc 2.8 and newer)
3615 timerfd=no
3616 cat > $TMPC << EOF
3617 #include <sys/timerfd.h>
3619 int main(void)
3621 return(timerfd_create(CLOCK_REALTIME, 0));
3624 if compile_prog "" "" ; then
3625 timerfd=yes
3628 # check for setns and unshare support
3629 setns=no
3630 cat > $TMPC << EOF
3631 #include <sched.h>
3633 int main(void)
3635 int ret;
3636 ret = setns(0, 0);
3637 ret = unshare(0);
3638 return ret;
3641 if compile_prog "" "" ; then
3642 setns=yes
3645 # Check if tools are available to build documentation.
3646 if test "$docs" != "no" ; then
3647 if has makeinfo && has pod2man; then
3648 docs=yes
3649 else
3650 if test "$docs" = "yes" ; then
3651 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
3653 docs=no
3657 # Search for bswap_32 function
3658 byteswap_h=no
3659 cat > $TMPC << EOF
3660 #include <byteswap.h>
3661 int main(void) { return bswap_32(0); }
3663 if compile_prog "" "" ; then
3664 byteswap_h=yes
3667 # Search for bswap32 function
3668 bswap_h=no
3669 cat > $TMPC << EOF
3670 #include <sys/endian.h>
3671 #include <sys/types.h>
3672 #include <machine/bswap.h>
3673 int main(void) { return bswap32(0); }
3675 if compile_prog "" "" ; then
3676 bswap_h=yes
3679 ##########################################
3680 # Do we have libiscsi >= 1.9.0
3681 if test "$libiscsi" != "no" ; then
3682 if $pkg_config --atleast-version=1.9.0 libiscsi; then
3683 libiscsi="yes"
3684 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3685 libiscsi_libs=$($pkg_config --libs libiscsi)
3686 else
3687 if test "$libiscsi" = "yes" ; then
3688 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
3690 libiscsi="no"
3694 ##########################################
3695 # Do we need libm
3696 cat > $TMPC << EOF
3697 #include <math.h>
3698 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3700 if compile_prog "" "" ; then
3702 elif compile_prog "" "-lm" ; then
3703 LIBS="-lm $LIBS"
3704 libs_qga="-lm $libs_qga"
3705 else
3706 error_exit "libm check failed"
3709 ##########################################
3710 # Do we need librt
3711 # uClibc provides 2 versions of clock_gettime(), one with realtime
3712 # support and one without. This means that the clock_gettime() don't
3713 # need -lrt. We still need it for timer_create() so we check for this
3714 # function in addition.
3715 cat > $TMPC <<EOF
3716 #include <signal.h>
3717 #include <time.h>
3718 int main(void) {
3719 timer_create(CLOCK_REALTIME, NULL, NULL);
3720 return clock_gettime(CLOCK_REALTIME, NULL);
3724 if compile_prog "" "" ; then
3726 # we need pthread for static linking. use previous pthread test result
3727 elif compile_prog "" "$pthread_lib -lrt" ; then
3728 LIBS="$LIBS -lrt"
3729 libs_qga="$libs_qga -lrt"
3732 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3733 "$aix" != "yes" -a "$haiku" != "yes" ; then
3734 libs_softmmu="-lutil $libs_softmmu"
3737 ##########################################
3738 # spice probe
3739 if test "$spice" != "no" ; then
3740 cat > $TMPC << EOF
3741 #include <spice.h>
3742 int main(void) { spice_server_new(); return 0; }
3744 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3745 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
3746 if $pkg_config --atleast-version=0.12.0 spice-server && \
3747 $pkg_config --atleast-version=0.12.3 spice-protocol && \
3748 compile_prog "$spice_cflags" "$spice_libs" ; then
3749 spice="yes"
3750 libs_softmmu="$libs_softmmu $spice_libs"
3751 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
3752 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3753 spice_server_version=$($pkg_config --modversion spice-server)
3754 else
3755 if test "$spice" = "yes" ; then
3756 feature_not_found "spice" \
3757 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3759 spice="no"
3763 # check for libcacard for smartcard support
3764 smartcard_cflags=""
3765 # TODO - what's the minimal nss version we support?
3766 if test "$smartcard_nss" != "no"; then
3767 cat > $TMPC << EOF
3768 #include <pk11pub.h>
3769 int main(void) { PK11_FreeSlot(0); return 0; }
3771 # FIXME: do not include $glib_* in here
3772 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3773 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3774 test_cflags="$nss_cflags"
3775 # The header files in nss < 3.13.3 have a bug which causes them to
3776 # emit a warning. If we're going to compile QEMU with -Werror, then
3777 # test that the headers don't have this bug. Otherwise we would pass
3778 # the configure test but fail to compile QEMU later.
3779 if test "$werror" = "yes"; then
3780 test_cflags="-Werror $test_cflags"
3782 if test -n "$libtool" &&
3783 $pkg_config --atleast-version=3.12.8 nss && \
3784 compile_prog "$test_cflags" "$nss_libs"; then
3785 smartcard_nss="yes"
3786 else
3787 if test "$smartcard_nss" = "yes"; then
3788 feature_not_found "nss" "Install nss devel >= 3.12.8"
3790 smartcard_nss="no"
3794 # check for libusb
3795 if test "$libusb" != "no" ; then
3796 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
3797 libusb="yes"
3798 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3799 libusb_libs=$($pkg_config --libs libusb-1.0)
3800 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3801 libs_softmmu="$libs_softmmu $libusb_libs"
3802 else
3803 if test "$libusb" = "yes"; then
3804 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
3806 libusb="no"
3810 # check for usbredirparser for usb network redirection support
3811 if test "$usb_redir" != "no" ; then
3812 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
3813 usb_redir="yes"
3814 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3815 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
3816 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
3817 libs_softmmu="$libs_softmmu $usb_redir_libs"
3818 else
3819 if test "$usb_redir" = "yes"; then
3820 feature_not_found "usb-redir" "Install usbredir devel"
3822 usb_redir="no"
3826 ##########################################
3827 # check if we have VSS SDK headers for win
3829 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3830 case "$vss_win32_sdk" in
3831 "") vss_win32_include="-I$source_path" ;;
3832 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3833 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3834 vss_win32_include="-I$source_path/.sdk/vss"
3835 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3837 *) vss_win32_include="-I$vss_win32_sdk"
3838 esac
3839 cat > $TMPC << EOF
3840 #define __MIDL_user_allocate_free_DEFINED__
3841 #include <inc/win2003/vss.h>
3842 int main(void) { return VSS_CTX_BACKUP; }
3844 if compile_prog "$vss_win32_include" "" ; then
3845 guest_agent_with_vss="yes"
3846 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3847 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3848 else
3849 if test "$vss_win32_sdk" != "" ; then
3850 echo "ERROR: Please download and install Microsoft VSS SDK:"
3851 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3852 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3853 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3854 echo "ERROR: The headers are extracted in the directory \`inc'."
3855 feature_not_found "VSS support"
3857 guest_agent_with_vss="no"
3861 ##########################################
3862 # lookup Windows platform SDK (if not specified)
3863 # The SDK is needed only to build .tlb (type library) file of guest agent
3864 # VSS provider from the source. It is usually unnecessary because the
3865 # pre-compiled .tlb file is included.
3867 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3868 if test -z "$win_sdk"; then
3869 programfiles="$PROGRAMFILES"
3870 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3871 if test -n "$programfiles"; then
3872 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3873 else
3874 feature_not_found "Windows SDK"
3876 elif test "$win_sdk" = "no"; then
3877 win_sdk=""
3881 ##########################################
3882 # check if mingw environment provides a recent ntddscsi.h
3883 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3884 cat > $TMPC << EOF
3885 #include <windows.h>
3886 #include <ntddscsi.h>
3887 int main(void) {
3888 #if !defined(IOCTL_SCSI_GET_ADDRESS)
3889 #error Missing required ioctl definitions
3890 #endif
3891 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3892 return addr.Lun;
3895 if compile_prog "" "" ; then
3896 guest_agent_ntddscsi=yes
3897 libs_qga="-lsetupapi $libs_qga"
3901 ##########################################
3902 # Guest agent Window MSI package
3904 if test "$guest_agent" != yes; then
3905 if test "$guest_agent_msi" = yes; then
3906 error_exit "MSI guest agent package requires guest agent enabled"
3908 guest_agent_msi=no
3909 elif test "$mingw32" != "yes"; then
3910 if test "$guest_agent_msi" = "yes"; then
3911 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
3913 guest_agent_msi=no
3914 elif ! has wixl; then
3915 if test "$guest_agent_msi" = "yes"; then
3916 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3918 guest_agent_msi=no
3921 if test "$guest_agent_msi" != "no"; then
3922 if test "$guest_agent_with_vss" = "yes"; then
3923 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
3926 if test "$QEMU_GA_MANUFACTURER" = ""; then
3927 QEMU_GA_MANUFACTURER=QEMU
3930 if test "$QEMU_GA_DISTRO" = ""; then
3931 QEMU_GA_DISTRO=Linux
3934 if test "$QEMU_GA_VERSION" = ""; then
3935 QEMU_GA_VERSION=`cat $source_path/VERSION`
3938 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3940 case "$cpu" in
3941 x86_64)
3942 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
3944 i386)
3945 QEMU_GA_MSI_ARCH="-D Arch=32"
3948 error_exit "CPU $cpu not supported for building installation package"
3950 esac
3953 ##########################################
3954 # check if we have fdatasync
3956 fdatasync=no
3957 cat > $TMPC << EOF
3958 #include <unistd.h>
3959 int main(void) {
3960 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3961 return fdatasync(0);
3962 #else
3963 #error Not supported
3964 #endif
3967 if compile_prog "" "" ; then
3968 fdatasync=yes
3971 ##########################################
3972 # check if we have madvise
3974 madvise=no
3975 cat > $TMPC << EOF
3976 #include <sys/types.h>
3977 #include <sys/mman.h>
3978 #include <stddef.h>
3979 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3981 if compile_prog "" "" ; then
3982 madvise=yes
3985 ##########################################
3986 # check if we have posix_madvise
3988 posix_madvise=no
3989 cat > $TMPC << EOF
3990 #include <sys/mman.h>
3991 #include <stddef.h>
3992 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3994 if compile_prog "" "" ; then
3995 posix_madvise=yes
3998 ##########################################
3999 # check if we have usable SIGEV_THREAD_ID
4001 sigev_thread_id=no
4002 cat > $TMPC << EOF
4003 #include <signal.h>
4004 int main(void) {
4005 struct sigevent ev;
4006 ev.sigev_notify = SIGEV_THREAD_ID;
4007 ev._sigev_un._tid = 0;
4008 asm volatile("" : : "g"(&ev));
4009 return 0;
4012 if compile_prog "" "" ; then
4013 sigev_thread_id=yes
4016 ##########################################
4017 # check if trace backend exists
4019 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4020 if test "$?" -ne 0 ; then
4021 error_exit "invalid trace backends" \
4022 "Please choose supported trace backends."
4025 ##########################################
4026 # For 'ust' backend, test if ust headers are present
4027 if have_backend "ust"; then
4028 cat > $TMPC << EOF
4029 #include <lttng/tracepoint.h>
4030 int main(void) { return 0; }
4032 if compile_prog "" "" ; then
4033 if $pkg_config lttng-ust --exists; then
4034 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4035 else
4036 lttng_ust_libs="-llttng-ust"
4038 if $pkg_config liburcu-bp --exists; then
4039 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4040 else
4041 urcu_bp_libs="-lurcu-bp"
4044 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4045 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4046 else
4047 error_exit "Trace backend 'ust' missing lttng-ust header files"
4051 ##########################################
4052 # For 'dtrace' backend, test if 'dtrace' command is present
4053 if have_backend "dtrace"; then
4054 if ! has 'dtrace' ; then
4055 error_exit "dtrace command is not found in PATH $PATH"
4057 trace_backend_stap="no"
4058 if has 'stap' ; then
4059 trace_backend_stap="yes"
4063 ##########################################
4064 # check and set a backend for coroutine
4066 # We prefer ucontext, but it's not always possible. The fallback
4067 # is sigcontext. gthread is not selectable except explicitly, because
4068 # it is not functional enough to run QEMU proper. (It is occasionally
4069 # useful for debugging purposes.) On Windows the only valid backend
4070 # is the Windows-specific one.
4072 ucontext_works=no
4073 if test "$darwin" != "yes"; then
4074 cat > $TMPC << EOF
4075 #include <ucontext.h>
4076 #ifdef __stub_makecontext
4077 #error Ignoring glibc stub makecontext which will always fail
4078 #endif
4079 int main(void) { makecontext(0, 0, 0); return 0; }
4081 if compile_prog "" "" ; then
4082 ucontext_works=yes
4086 if test "$coroutine" = ""; then
4087 if test "$mingw32" = "yes"; then
4088 coroutine=win32
4089 elif test "$ucontext_works" = "yes"; then
4090 coroutine=ucontext
4091 else
4092 coroutine=sigaltstack
4094 else
4095 case $coroutine in
4096 windows)
4097 if test "$mingw32" != "yes"; then
4098 error_exit "'windows' coroutine backend only valid for Windows"
4100 # Unfortunately the user visible backend name doesn't match the
4101 # coroutine-*.c filename for this case, so we have to adjust it here.
4102 coroutine=win32
4104 ucontext)
4105 if test "$ucontext_works" != "yes"; then
4106 feature_not_found "ucontext"
4109 gthread|sigaltstack)
4110 if test "$mingw32" = "yes"; then
4111 error_exit "only the 'windows' coroutine backend is valid for Windows"
4115 error_exit "unknown coroutine backend $coroutine"
4117 esac
4120 if test "$coroutine_pool" = ""; then
4121 if test "$coroutine" = "gthread"; then
4122 coroutine_pool=no
4123 else
4124 coroutine_pool=yes
4127 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4128 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4131 ##########################################
4132 # check if we have open_by_handle_at
4134 open_by_handle_at=no
4135 cat > $TMPC << EOF
4136 #include <fcntl.h>
4137 #if !defined(AT_EMPTY_PATH)
4138 # error missing definition
4139 #else
4140 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4141 #endif
4143 if compile_prog "" "" ; then
4144 open_by_handle_at=yes
4147 ########################################
4148 # check if we have linux/magic.h
4150 linux_magic_h=no
4151 cat > $TMPC << EOF
4152 #include <linux/magic.h>
4153 int main(void) {
4154 return 0;
4157 if compile_prog "" "" ; then
4158 linux_magic_h=yes
4161 ########################################
4162 # check whether we can disable warning option with a pragma (this is needed
4163 # to silence warnings in the headers of some versions of external libraries).
4164 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4165 # only a warning.
4167 # If we can't selectively disable warning in the code, disable -Werror so that
4168 # the build doesn't fail anyway.
4170 pragma_disable_unused_but_set=no
4171 cat > $TMPC << EOF
4172 #pragma GCC diagnostic push
4173 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4174 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4175 #pragma GCC diagnostic pop
4177 int main(void) {
4178 return 0;
4181 if compile_prog "-Werror" "" ; then
4182 pragma_diagnostic_available=yes
4183 else
4184 werror=no
4187 ########################################
4188 # check if we have valgrind/valgrind.h
4190 valgrind_h=no
4191 cat > $TMPC << EOF
4192 #include <valgrind/valgrind.h>
4193 int main(void) {
4194 return 0;
4197 if compile_prog "" "" ; then
4198 valgrind_h=yes
4201 ########################################
4202 # check if environ is declared
4204 has_environ=no
4205 cat > $TMPC << EOF
4206 #include <unistd.h>
4207 int main(void) {
4208 environ = 0;
4209 return 0;
4212 if compile_prog "" "" ; then
4213 has_environ=yes
4216 ########################################
4217 # check if cpuid.h is usable.
4219 cpuid_h=no
4220 cat > $TMPC << EOF
4221 #include <cpuid.h>
4222 int main(void) {
4223 unsigned a, b, c, d;
4224 int max = __get_cpuid_max(0, 0);
4226 if (max >= 1) {
4227 __cpuid(1, a, b, c, d);
4230 if (max >= 7) {
4231 __cpuid_count(7, 0, a, b, c, d);
4234 return 0;
4237 if compile_prog "" "" ; then
4238 cpuid_h=yes
4241 ########################################
4242 # check if __[u]int128_t is usable.
4244 int128=no
4245 cat > $TMPC << EOF
4246 #if defined(__clang_major__) && defined(__clang_minor__)
4247 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4248 # error __int128_t does not work in CLANG before 3.2
4249 # endif
4250 #endif
4251 __int128_t a;
4252 __uint128_t b;
4253 int main (void) {
4254 a = a + b;
4255 b = a * b;
4256 a = a * a;
4257 return 0;
4260 if compile_prog "" "" ; then
4261 int128=yes
4264 ########################################
4265 # check if getauxval is available.
4267 getauxval=no
4268 cat > $TMPC << EOF
4269 #include <sys/auxv.h>
4270 int main(void) {
4271 return getauxval(AT_HWCAP) == 0;
4274 if compile_prog "" "" ; then
4275 getauxval=yes
4278 ########################################
4279 # check if ccache is interfering with
4280 # semantic analysis of macros
4282 ccache_cpp2=no
4283 cat > $TMPC << EOF
4284 static const int Z = 1;
4285 #define fn() ({ Z; })
4286 #define TAUT(X) ((X) == Z)
4287 #define PAREN(X, Y) (X == Y)
4288 #define ID(X) (X)
4289 int main(int argc, char *argv[])
4291 int x = 0, y = 0;
4292 x = ID(x);
4293 x = fn();
4294 fn();
4295 if (PAREN(x, y)) return 0;
4296 if (TAUT(Z)) return 0;
4297 return 0;
4301 if ! compile_object "-Werror"; then
4302 ccache_cpp2=yes
4305 ##########################################
4306 # End of CC checks
4307 # After here, no more $cc or $ld runs
4309 if test "$gcov" = "yes" ; then
4310 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4311 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4312 elif test "$debug" = "no" ; then
4313 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4316 ##########################################
4317 # Do we have libnfs
4318 if test "$libnfs" != "no" ; then
4319 if $pkg_config --atleast-version=1.9.3 libnfs; then
4320 libnfs="yes"
4321 libnfs_libs=$($pkg_config --libs libnfs)
4322 LIBS="$LIBS $libnfs_libs"
4323 else
4324 if test "$libnfs" = "yes" ; then
4325 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4327 libnfs="no"
4331 # Disable zero malloc errors for official releases unless explicitly told to
4332 # enable/disable
4333 if test -z "$zero_malloc" ; then
4334 if test "$z_version" = "50" ; then
4335 zero_malloc="no"
4336 else
4337 zero_malloc="yes"
4341 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4342 if test "$werror" = "yes"; then
4343 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4346 if test "$solaris" = "no" ; then
4347 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
4348 LDFLAGS="-Wl,--warn-common $LDFLAGS"
4352 # test if pod2man has --utf8 option
4353 if pod2man --help | grep -q utf8; then
4354 POD2MAN="pod2man --utf8"
4355 else
4356 POD2MAN="pod2man"
4359 # Use ASLR, no-SEH and DEP if available
4360 if test "$mingw32" = "yes" ; then
4361 for flag in --dynamicbase --no-seh --nxcompat; do
4362 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4363 LDFLAGS="-Wl,$flag $LDFLAGS"
4365 done
4368 qemu_confdir=$sysconfdir$confsuffix
4369 qemu_moddir=$libdir$confsuffix
4370 qemu_datadir=$datadir$confsuffix
4371 qemu_localedir="$datadir/locale"
4373 tools=""
4374 if test "$want_tools" = "yes" ; then
4375 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4376 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4377 tools="qemu-nbd\$(EXESUF) $tools"
4380 if test "$softmmu" = yes ; then
4381 if test "$virtfs" != no ; then
4382 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4383 virtfs=yes
4384 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4385 else
4386 if test "$virtfs" = yes; then
4387 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4389 virtfs=no
4393 if [ "$guest_agent" != "no" ]; then
4394 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4395 tools="qemu-ga\$(EXESUF) $tools"
4396 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4397 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4399 guest_agent=yes
4400 elif [ "$guest_agent" != yes ]; then
4401 guest_agent=no
4402 else
4403 error_exit "Guest agent is not supported on this platform"
4407 # Mac OS X ships with a broken assembler
4408 roms=
4409 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4410 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4411 "$softmmu" = yes ; then
4412 roms="optionrom"
4414 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4415 roms="$roms spapr-rtas"
4418 if test "$cpu" = "s390x" ; then
4419 roms="$roms s390-ccw"
4422 # Probe for the need for relocating the user-only binary.
4423 if test "$pie" = "no" ; then
4424 textseg_addr=
4425 case "$cpu" in
4426 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4427 # ??? Rationale for choosing this address
4428 textseg_addr=0x60000000
4430 mips)
4431 # A 256M aligned address, high in the address space, with enough
4432 # room for the code_gen_buffer above it before the stack.
4433 textseg_addr=0x60000000
4435 esac
4436 if [ -n "$textseg_addr" ]; then
4437 cat > $TMPC <<EOF
4438 int main(void) { return 0; }
4440 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4441 if ! compile_prog "" "$textseg_ldflags"; then
4442 # In case ld does not support -Ttext-segment, edit the default linker
4443 # script via sed to set the .text start addr. This is needed on FreeBSD
4444 # at least.
4445 $ld --verbose | sed \
4446 -e '1,/==================================================/d' \
4447 -e '/==================================================/,$d' \
4448 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4449 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4450 textseg_ldflags="-Wl,-T../config-host.ld"
4455 # prepend pixman and ftd flags after all config tests are done
4456 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4457 libs_softmmu="$pixman_libs $libs_softmmu"
4459 echo "Install prefix $prefix"
4460 echo "BIOS directory `eval echo $qemu_datadir`"
4461 echo "binary directory `eval echo $bindir`"
4462 echo "library directory `eval echo $libdir`"
4463 echo "module directory `eval echo $qemu_moddir`"
4464 echo "libexec directory `eval echo $libexecdir`"
4465 echo "include directory `eval echo $includedir`"
4466 echo "config directory `eval echo $sysconfdir`"
4467 if test "$mingw32" = "no" ; then
4468 echo "local state directory `eval echo $local_statedir`"
4469 echo "Manual directory `eval echo $mandir`"
4470 echo "ELF interp prefix $interp_prefix"
4471 else
4472 echo "local state directory queried at runtime"
4473 echo "Windows SDK $win_sdk"
4475 echo "Source path $source_path"
4476 echo "C compiler $cc"
4477 echo "Host C compiler $host_cc"
4478 echo "C++ compiler $cxx"
4479 echo "Objective-C compiler $objcc"
4480 echo "ARFLAGS $ARFLAGS"
4481 echo "CFLAGS $CFLAGS"
4482 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4483 echo "LDFLAGS $LDFLAGS"
4484 echo "make $make"
4485 echo "install $install"
4486 echo "python $python"
4487 if test "$slirp" = "yes" ; then
4488 echo "smbd $smbd"
4490 echo "module support $modules"
4491 echo "host CPU $cpu"
4492 echo "host big endian $bigendian"
4493 echo "target list $target_list"
4494 echo "tcg debug enabled $debug_tcg"
4495 echo "gprof enabled $gprof"
4496 echo "sparse enabled $sparse"
4497 echo "strip binaries $strip_opt"
4498 echo "profiler $profiler"
4499 echo "static build $static"
4500 if test "$darwin" = "yes" ; then
4501 echo "Cocoa support $cocoa"
4503 echo "pixman $pixman"
4504 echo "SDL support $sdl"
4505 echo "GTK support $gtk"
4506 echo "GNUTLS support $gnutls"
4507 echo "GNUTLS hash $gnutls_hash"
4508 echo "GNUTLS gcrypt $gnutls_gcrypt"
4509 echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
4510 echo "VTE support $vte"
4511 echo "curses support $curses"
4512 echo "curl support $curl"
4513 echo "mingw32 support $mingw32"
4514 echo "Audio drivers $audio_drv_list"
4515 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4516 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4517 echo "VirtFS support $virtfs"
4518 echo "VNC support $vnc"
4519 if test "$vnc" = "yes" ; then
4520 echo "VNC TLS support $vnc_tls"
4521 echo "VNC SASL support $vnc_sasl"
4522 echo "VNC JPEG support $vnc_jpeg"
4523 echo "VNC PNG support $vnc_png"
4525 if test -n "$sparc_cpu"; then
4526 echo "Target Sparc Arch $sparc_cpu"
4528 echo "xen support $xen"
4529 if test "$xen" = "yes" ; then
4530 echo "xen ctrl version $xen_ctrl_version"
4532 echo "brlapi support $brlapi"
4533 echo "bluez support $bluez"
4534 echo "Documentation $docs"
4535 echo "GUEST_BASE $guest_base"
4536 echo "PIE $pie"
4537 echo "vde support $vde"
4538 echo "netmap support $netmap"
4539 echo "Linux AIO support $linux_aio"
4540 echo "ATTR/XATTR support $attr"
4541 echo "Install blobs $blobs"
4542 echo "KVM support $kvm"
4543 echo "RDMA support $rdma"
4544 echo "TCG interpreter $tcg_interpreter"
4545 echo "fdt support $fdt"
4546 echo "preadv support $preadv"
4547 echo "fdatasync $fdatasync"
4548 echo "madvise $madvise"
4549 echo "posix_madvise $posix_madvise"
4550 echo "sigev_thread_id $sigev_thread_id"
4551 echo "uuid support $uuid"
4552 echo "libcap-ng support $cap_ng"
4553 echo "vhost-net support $vhost_net"
4554 echo "vhost-scsi support $vhost_scsi"
4555 echo "Trace backends $trace_backends"
4556 if test "$trace_backend" = "simple"; then
4557 echo "Trace output file $trace_file-<pid>"
4559 if test "$spice" = "yes"; then
4560 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4561 else
4562 echo "spice support $spice"
4564 echo "rbd support $rbd"
4565 echo "xfsctl support $xfs"
4566 echo "nss used $smartcard_nss"
4567 echo "libusb $libusb"
4568 echo "usb net redir $usb_redir"
4569 echo "OpenGL support $opengl"
4570 echo "libiscsi support $libiscsi"
4571 echo "libnfs support $libnfs"
4572 echo "build guest agent $guest_agent"
4573 echo "QGA VSS support $guest_agent_with_vss"
4574 echo "QGA w32 disk info $guest_agent_ntddscsi"
4575 echo "seccomp support $seccomp"
4576 echo "coroutine backend $coroutine"
4577 echo "coroutine pool $coroutine_pool"
4578 echo "GlusterFS support $glusterfs"
4579 echo "Archipelago support $archipelago"
4580 echo "gcov $gcov_tool"
4581 echo "gcov enabled $gcov"
4582 echo "TPM support $tpm"
4583 echo "libssh2 support $libssh2"
4584 echo "TPM passthrough $tpm_passthrough"
4585 echo "QOM debugging $qom_cast_debug"
4586 echo "vhdx $vhdx"
4587 echo "lzo support $lzo"
4588 echo "snappy support $snappy"
4589 echo "bzip2 support $bzip2"
4590 echo "NUMA host support $numa"
4591 echo "tcmalloc support $tcmalloc"
4593 if test "$sdl_too_old" = "yes"; then
4594 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4597 config_host_mak="config-host.mak"
4599 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4601 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4602 echo >> $config_host_mak
4604 echo all: >> $config_host_mak
4605 echo "prefix=$prefix" >> $config_host_mak
4606 echo "bindir=$bindir" >> $config_host_mak
4607 echo "libdir=$libdir" >> $config_host_mak
4608 echo "libexecdir=$libexecdir" >> $config_host_mak
4609 echo "includedir=$includedir" >> $config_host_mak
4610 echo "mandir=$mandir" >> $config_host_mak
4611 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4612 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4613 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4614 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4615 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4616 if test "$mingw32" = "no" ; then
4617 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4619 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4620 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4621 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4622 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4623 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4625 echo "ARCH=$ARCH" >> $config_host_mak
4627 if test "$debug_tcg" = "yes" ; then
4628 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4630 if test "$strip_opt" = "yes" ; then
4631 echo "STRIP=${strip}" >> $config_host_mak
4633 if test "$bigendian" = "yes" ; then
4634 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4636 if test "$mingw32" = "yes" ; then
4637 echo "CONFIG_WIN32=y" >> $config_host_mak
4638 rc_version=`cat $source_path/VERSION`
4639 version_major=${rc_version%%.*}
4640 rc_version=${rc_version#*.}
4641 version_minor=${rc_version%%.*}
4642 rc_version=${rc_version#*.}
4643 version_subminor=${rc_version%%.*}
4644 version_micro=0
4645 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4646 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4647 if test "$guest_agent_with_vss" = "yes" ; then
4648 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4649 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4651 if test "$guest_agent_ntddscsi" = "yes" ; then
4652 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4654 if test "$guest_agent_msi" != "no"; then
4655 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4656 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4657 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4658 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4659 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4660 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4661 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4663 else
4664 echo "CONFIG_POSIX=y" >> $config_host_mak
4667 if test "$linux" = "yes" ; then
4668 echo "CONFIG_LINUX=y" >> $config_host_mak
4671 if test "$darwin" = "yes" ; then
4672 echo "CONFIG_DARWIN=y" >> $config_host_mak
4675 if test "$aix" = "yes" ; then
4676 echo "CONFIG_AIX=y" >> $config_host_mak
4679 if test "$solaris" = "yes" ; then
4680 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4681 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4682 if test "$needs_libsunmath" = "yes" ; then
4683 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4686 if test "$haiku" = "yes" ; then
4687 echo "CONFIG_HAIKU=y" >> $config_host_mak
4689 if test "$static" = "yes" ; then
4690 echo "CONFIG_STATIC=y" >> $config_host_mak
4692 if test "$profiler" = "yes" ; then
4693 echo "CONFIG_PROFILER=y" >> $config_host_mak
4695 if test "$slirp" = "yes" ; then
4696 echo "CONFIG_SLIRP=y" >> $config_host_mak
4697 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4699 if test "$vde" = "yes" ; then
4700 echo "CONFIG_VDE=y" >> $config_host_mak
4702 if test "$netmap" = "yes" ; then
4703 echo "CONFIG_NETMAP=y" >> $config_host_mak
4705 if test "$l2tpv3" = "yes" ; then
4706 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4708 if test "$cap_ng" = "yes" ; then
4709 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4711 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4712 for drv in $audio_drv_list; do
4713 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4714 echo "$def=y" >> $config_host_mak
4715 done
4716 if test "$audio_pt_int" = "yes" ; then
4717 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4719 if test "$audio_win_int" = "yes" ; then
4720 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4722 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4723 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4724 if test "$vnc" = "yes" ; then
4725 echo "CONFIG_VNC=y" >> $config_host_mak
4727 if test "$vnc_tls" = "yes" ; then
4728 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4730 if test "$vnc_sasl" = "yes" ; then
4731 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4733 if test "$vnc_jpeg" = "yes" ; then
4734 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4736 if test "$vnc_png" = "yes" ; then
4737 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4739 if test "$fnmatch" = "yes" ; then
4740 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4742 if test "$uuid" = "yes" ; then
4743 echo "CONFIG_UUID=y" >> $config_host_mak
4745 if test "$xfs" = "yes" ; then
4746 echo "CONFIG_XFS=y" >> $config_host_mak
4748 qemu_version=`head $source_path/VERSION`
4749 echo "VERSION=$qemu_version" >>$config_host_mak
4750 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4751 echo "SRC_PATH=$source_path" >> $config_host_mak
4752 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4753 if [ "$docs" = "yes" ] ; then
4754 echo "BUILD_DOCS=yes" >> $config_host_mak
4756 if test "$modules" = "yes"; then
4757 # $shacmd can generate a hash started with digit, which the compiler doesn't
4758 # like as an symbol. So prefix it with an underscore
4759 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4760 echo "CONFIG_MODULES=y" >> $config_host_mak
4762 if test "$sdl" = "yes" ; then
4763 echo "CONFIG_SDL=y" >> $config_host_mak
4764 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4765 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4767 if test "$cocoa" = "yes" ; then
4768 echo "CONFIG_COCOA=y" >> $config_host_mak
4770 if test "$curses" = "yes" ; then
4771 echo "CONFIG_CURSES=y" >> $config_host_mak
4773 if test "$utimens" = "yes" ; then
4774 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4776 if test "$pipe2" = "yes" ; then
4777 echo "CONFIG_PIPE2=y" >> $config_host_mak
4779 if test "$accept4" = "yes" ; then
4780 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4782 if test "$splice" = "yes" ; then
4783 echo "CONFIG_SPLICE=y" >> $config_host_mak
4785 if test "$eventfd" = "yes" ; then
4786 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4788 if test "$fallocate" = "yes" ; then
4789 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4791 if test "$fallocate_punch_hole" = "yes" ; then
4792 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4794 if test "$fallocate_zero_range" = "yes" ; then
4795 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4797 if test "$posix_fallocate" = "yes" ; then
4798 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4800 if test "$sync_file_range" = "yes" ; then
4801 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4803 if test "$fiemap" = "yes" ; then
4804 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4806 if test "$dup3" = "yes" ; then
4807 echo "CONFIG_DUP3=y" >> $config_host_mak
4809 if test "$ppoll" = "yes" ; then
4810 echo "CONFIG_PPOLL=y" >> $config_host_mak
4812 if test "$prctl_pr_set_timerslack" = "yes" ; then
4813 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4815 if test "$epoll" = "yes" ; then
4816 echo "CONFIG_EPOLL=y" >> $config_host_mak
4818 if test "$epoll_create1" = "yes" ; then
4819 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4821 if test "$epoll_pwait" = "yes" ; then
4822 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4824 if test "$sendfile" = "yes" ; then
4825 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4827 if test "$timerfd" = "yes" ; then
4828 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4830 if test "$setns" = "yes" ; then
4831 echo "CONFIG_SETNS=y" >> $config_host_mak
4833 if test "$inotify" = "yes" ; then
4834 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4836 if test "$inotify1" = "yes" ; then
4837 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4839 if test "$byteswap_h" = "yes" ; then
4840 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4842 if test "$bswap_h" = "yes" ; then
4843 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4845 if test "$curl" = "yes" ; then
4846 echo "CONFIG_CURL=m" >> $config_host_mak
4847 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4848 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4850 if test "$brlapi" = "yes" ; then
4851 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4853 if test "$bluez" = "yes" ; then
4854 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4855 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4857 if test "$glib_subprocess" = "yes" ; then
4858 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4860 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4861 if test "$gtk" = "yes" ; then
4862 echo "CONFIG_GTK=y" >> $config_host_mak
4863 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4864 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4866 if test "$gnutls" = "yes" ; then
4867 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4869 if test "$gnutls_hash" = "yes" ; then
4870 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4872 if test "$gnutls_gcrypt" = "yes" ; then
4873 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4875 if test "$gnutls_nettle" = "yes" ; then
4876 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
4877 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
4879 if test "$vte" = "yes" ; then
4880 echo "CONFIG_VTE=y" >> $config_host_mak
4881 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4883 if test "$xen" = "yes" ; then
4884 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4885 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4887 if test "$linux_aio" = "yes" ; then
4888 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4890 if test "$attr" = "yes" ; then
4891 echo "CONFIG_ATTR=y" >> $config_host_mak
4893 if test "$libattr" = "yes" ; then
4894 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4896 if test "$virtfs" = "yes" ; then
4897 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4899 if test "$vhost_scsi" = "yes" ; then
4900 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4902 if test "$vhost_net" = "yes" ; then
4903 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4905 if test "$blobs" = "yes" ; then
4906 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4908 if test "$iovec" = "yes" ; then
4909 echo "CONFIG_IOVEC=y" >> $config_host_mak
4911 if test "$preadv" = "yes" ; then
4912 echo "CONFIG_PREADV=y" >> $config_host_mak
4914 if test "$fdt" = "yes" ; then
4915 echo "CONFIG_FDT=y" >> $config_host_mak
4917 if test "$signalfd" = "yes" ; then
4918 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4920 if test "$tcg_interpreter" = "yes" ; then
4921 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4923 if test "$fdatasync" = "yes" ; then
4924 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4926 if test "$madvise" = "yes" ; then
4927 echo "CONFIG_MADVISE=y" >> $config_host_mak
4929 if test "$posix_madvise" = "yes" ; then
4930 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4932 if test "$sigev_thread_id" = "yes" ; then
4933 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4936 if test "$spice" = "yes" ; then
4937 echo "CONFIG_SPICE=y" >> $config_host_mak
4940 if test "$smartcard_nss" = "yes" ; then
4941 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4942 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4943 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4946 if test "$libusb" = "yes" ; then
4947 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4950 if test "$usb_redir" = "yes" ; then
4951 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4954 if test "$opengl" = "yes" ; then
4955 echo "CONFIG_OPENGL=y" >> $config_host_mak
4956 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4957 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4960 if test "$lzo" = "yes" ; then
4961 echo "CONFIG_LZO=y" >> $config_host_mak
4964 if test "$snappy" = "yes" ; then
4965 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4968 if test "$bzip2" = "yes" ; then
4969 echo "CONFIG_BZIP2=y" >> $config_host_mak
4970 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4973 if test "$libiscsi" = "yes" ; then
4974 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4975 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4976 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4979 if test "$libnfs" = "yes" ; then
4980 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4983 if test "$seccomp" = "yes"; then
4984 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4987 # XXX: suppress that
4988 if [ "$bsd" = "yes" ] ; then
4989 echo "CONFIG_BSD=y" >> $config_host_mak
4992 if test "$zero_malloc" = "yes" ; then
4993 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4995 if test "$qom_cast_debug" = "yes" ; then
4996 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4998 if test "$rbd" = "yes" ; then
4999 echo "CONFIG_RBD=m" >> $config_host_mak
5000 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5001 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5004 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5005 if test "$coroutine_pool" = "yes" ; then
5006 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5007 else
5008 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5011 if test "$open_by_handle_at" = "yes" ; then
5012 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5015 if test "$linux_magic_h" = "yes" ; then
5016 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5019 if test "$pragma_diagnostic_available" = "yes" ; then
5020 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5023 if test "$valgrind_h" = "yes" ; then
5024 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5027 if test "$has_environ" = "yes" ; then
5028 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5031 if test "$cpuid_h" = "yes" ; then
5032 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5035 if test "$int128" = "yes" ; then
5036 echo "CONFIG_INT128=y" >> $config_host_mak
5039 if test "$getauxval" = "yes" ; then
5040 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5043 if test "$glusterfs" = "yes" ; then
5044 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5045 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5046 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5049 if test "$glusterfs_discard" = "yes" ; then
5050 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5053 if test "$glusterfs_zerofill" = "yes" ; then
5054 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5057 if test "$archipelago" = "yes" ; then
5058 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5059 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5062 if test "$libssh2" = "yes" ; then
5063 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5064 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5065 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5068 if test "$vhdx" = "yes" ; then
5069 echo "CONFIG_VHDX=y" >> $config_host_mak
5072 # USB host support
5073 if test "$libusb" = "yes"; then
5074 echo "HOST_USB=libusb legacy" >> $config_host_mak
5075 else
5076 echo "HOST_USB=stub" >> $config_host_mak
5079 # TPM passthrough support?
5080 if test "$tpm" = "yes"; then
5081 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5082 if test "$tpm_passthrough" = "yes"; then
5083 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5087 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5088 if have_backend "nop"; then
5089 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5091 if have_backend "simple"; then
5092 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5093 # Set the appropriate trace file.
5094 trace_file="\"$trace_file-\" FMT_pid"
5096 if have_backend "stderr"; then
5097 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5099 if have_backend "ust"; then
5100 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5102 if have_backend "dtrace"; then
5103 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5104 if test "$trace_backend_stap" = "yes" ; then
5105 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5108 if have_backend "ftrace"; then
5109 if test "$linux" = "yes" ; then
5110 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5111 else
5112 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5115 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5117 if test "$rdma" = "yes" ; then
5118 echo "CONFIG_RDMA=y" >> $config_host_mak
5121 # Hold two types of flag:
5122 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5123 # a thread we have a handle to
5124 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5125 # platform
5126 if test "$pthread_setname_np" = "yes" ; then
5127 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5128 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5131 if test "$tcg_interpreter" = "yes"; then
5132 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5133 elif test "$ARCH" = "sparc64" ; then
5134 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5135 elif test "$ARCH" = "s390x" ; then
5136 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5137 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5138 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5139 elif test "$ARCH" = "ppc64" ; then
5140 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5141 else
5142 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5144 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5146 echo "TOOLS=$tools" >> $config_host_mak
5147 echo "ROMS=$roms" >> $config_host_mak
5148 echo "MAKE=$make" >> $config_host_mak
5149 echo "INSTALL=$install" >> $config_host_mak
5150 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5151 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5152 if test -n "$libtool"; then
5153 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5154 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5155 else
5156 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5157 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5159 echo "PYTHON=$python" >> $config_host_mak
5160 echo "CC=$cc" >> $config_host_mak
5161 if $iasl -h > /dev/null 2>&1; then
5162 echo "IASL=$iasl" >> $config_host_mak
5164 echo "CC_I386=$cc_i386" >> $config_host_mak
5165 echo "HOST_CC=$host_cc" >> $config_host_mak
5166 echo "CXX=$cxx" >> $config_host_mak
5167 echo "OBJCC=$objcc" >> $config_host_mak
5168 echo "AR=$ar" >> $config_host_mak
5169 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5170 echo "AS=$as" >> $config_host_mak
5171 echo "CPP=$cpp" >> $config_host_mak
5172 echo "OBJCOPY=$objcopy" >> $config_host_mak
5173 echo "LD=$ld" >> $config_host_mak
5174 echo "NM=$nm" >> $config_host_mak
5175 echo "WINDRES=$windres" >> $config_host_mak
5176 echo "LIBTOOL=$libtool" >> $config_host_mak
5177 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5178 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5179 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5180 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5181 if test "$sparse" = "yes" ; then
5182 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5183 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5184 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5185 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5186 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5188 if test "$cross_prefix" != ""; then
5189 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5190 else
5191 echo "AUTOCONF_HOST := " >> $config_host_mak
5193 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5194 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5195 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5196 echo "LIBS+=$LIBS" >> $config_host_mak
5197 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5198 echo "EXESUF=$EXESUF" >> $config_host_mak
5199 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5200 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5201 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5202 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5203 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5204 if test "$gcov" = "yes" ; then
5205 echo "CONFIG_GCOV=y" >> $config_host_mak
5206 echo "GCOV=$gcov_tool" >> $config_host_mak
5209 # use included Linux headers
5210 if test "$linux" = "yes" ; then
5211 mkdir -p linux-headers
5212 case "$cpu" in
5213 i386|x86_64|x32)
5214 linux_arch=x86
5216 ppcemb|ppc|ppc64)
5217 linux_arch=powerpc
5219 s390x)
5220 linux_arch=s390
5222 aarch64)
5223 linux_arch=arm64
5225 mips64)
5226 linux_arch=mips
5229 # For most CPUs the kernel architecture name and QEMU CPU name match.
5230 linux_arch="$cpu"
5232 esac
5233 # For non-KVM architectures we will not have asm headers
5234 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5235 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5239 for target in $target_list; do
5240 target_dir="$target"
5241 config_target_mak=$target_dir/config-target.mak
5242 target_name=`echo $target | cut -d '-' -f 1`
5243 target_bigendian="no"
5245 case "$target_name" in
5246 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5247 target_bigendian=yes
5249 esac
5250 target_softmmu="no"
5251 target_user_only="no"
5252 target_linux_user="no"
5253 target_bsd_user="no"
5254 case "$target" in
5255 ${target_name}-softmmu)
5256 target_softmmu="yes"
5258 ${target_name}-linux-user)
5259 if test "$linux" != "yes" ; then
5260 error_exit "Target '$target' is only available on a Linux host"
5262 target_user_only="yes"
5263 target_linux_user="yes"
5265 ${target_name}-bsd-user)
5266 if test "$bsd" != "yes" ; then
5267 error_exit "Target '$target' is only available on a BSD host"
5269 target_user_only="yes"
5270 target_bsd_user="yes"
5273 error_exit "Target '$target' not recognised"
5274 exit 1
5276 esac
5278 mkdir -p $target_dir
5279 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5281 bflt="no"
5282 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5283 gdb_xml_files=""
5285 TARGET_ARCH="$target_name"
5286 TARGET_BASE_ARCH=""
5287 TARGET_ABI_DIR=""
5289 case "$target_name" in
5290 i386)
5292 x86_64)
5293 TARGET_BASE_ARCH=i386
5295 alpha)
5297 arm|armeb)
5298 TARGET_ARCH=arm
5299 bflt="yes"
5300 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5302 aarch64)
5303 TARGET_BASE_ARCH=arm
5304 bflt="yes"
5305 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5307 cris)
5309 lm32)
5311 m68k)
5312 bflt="yes"
5313 gdb_xml_files="cf-core.xml cf-fp.xml"
5315 microblaze|microblazeel)
5316 TARGET_ARCH=microblaze
5317 bflt="yes"
5319 mips|mipsel)
5320 TARGET_ARCH=mips
5321 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5323 mipsn32|mipsn32el)
5324 TARGET_ARCH=mips64
5325 TARGET_BASE_ARCH=mips
5326 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5327 echo "TARGET_ABI32=y" >> $config_target_mak
5329 mips64|mips64el)
5330 TARGET_ARCH=mips64
5331 TARGET_BASE_ARCH=mips
5332 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5334 moxie)
5336 or32)
5337 TARGET_ARCH=openrisc
5338 TARGET_BASE_ARCH=openrisc
5340 ppc)
5341 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5343 ppcemb)
5344 TARGET_BASE_ARCH=ppc
5345 TARGET_ABI_DIR=ppc
5346 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5348 ppc64)
5349 TARGET_BASE_ARCH=ppc
5350 TARGET_ABI_DIR=ppc
5351 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5353 ppc64le)
5354 TARGET_ARCH=ppc64
5355 TARGET_BASE_ARCH=ppc
5356 TARGET_ABI_DIR=ppc
5357 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5359 ppc64abi32)
5360 TARGET_ARCH=ppc64
5361 TARGET_BASE_ARCH=ppc
5362 TARGET_ABI_DIR=ppc
5363 echo "TARGET_ABI32=y" >> $config_target_mak
5364 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5366 sh4|sh4eb)
5367 TARGET_ARCH=sh4
5368 bflt="yes"
5370 sparc)
5372 sparc64)
5373 TARGET_BASE_ARCH=sparc
5375 sparc32plus)
5376 TARGET_ARCH=sparc64
5377 TARGET_BASE_ARCH=sparc
5378 TARGET_ABI_DIR=sparc
5379 echo "TARGET_ABI32=y" >> $config_target_mak
5381 s390x)
5382 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5384 tricore)
5386 unicore32)
5388 xtensa|xtensaeb)
5389 TARGET_ARCH=xtensa
5392 error_exit "Unsupported target CPU"
5394 esac
5395 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5396 if [ "$TARGET_BASE_ARCH" = "" ]; then
5397 TARGET_BASE_ARCH=$TARGET_ARCH
5400 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5402 upper() {
5403 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5406 target_arch_name="`upper $TARGET_ARCH`"
5407 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5408 echo "TARGET_NAME=$target_name" >> $config_target_mak
5409 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5410 if [ "$TARGET_ABI_DIR" = "" ]; then
5411 TARGET_ABI_DIR=$TARGET_ARCH
5413 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5414 if [ "$HOST_VARIANT_DIR" != "" ]; then
5415 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5417 case "$target_name" in
5418 i386|x86_64)
5419 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5420 echo "CONFIG_XEN=y" >> $config_target_mak
5421 if test "$xen_pci_passthrough" = yes; then
5422 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5427 esac
5428 case "$target_name" in
5429 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
5430 # Make sure the target and host cpus are compatible
5431 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5432 \( "$target_name" = "$cpu" -o \
5433 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5434 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5435 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5436 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
5437 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
5438 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
5439 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5440 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5441 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
5442 echo "CONFIG_KVM=y" >> $config_target_mak
5443 if test "$vhost_net" = "yes" ; then
5444 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5447 esac
5448 if test "$target_bigendian" = "yes" ; then
5449 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5451 if test "$target_softmmu" = "yes" ; then
5452 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5454 if test "$target_user_only" = "yes" ; then
5455 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5456 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5458 if test "$target_linux_user" = "yes" ; then
5459 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5461 list=""
5462 if test ! -z "$gdb_xml_files" ; then
5463 for x in $gdb_xml_files; do
5464 list="$list $source_path/gdb-xml/$x"
5465 done
5466 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5469 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5470 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5472 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5473 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5475 if test "$target_bsd_user" = "yes" ; then
5476 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5479 # generate QEMU_CFLAGS/LDFLAGS for targets
5481 cflags=""
5482 ldflags=""
5484 for i in $ARCH $TARGET_BASE_ARCH ; do
5485 case "$i" in
5486 alpha)
5487 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5488 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5490 aarch64)
5491 if test -n "${cxx}"; then
5492 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5493 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5496 arm)
5497 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5498 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5499 if test -n "${cxx}"; then
5500 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5501 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5504 cris)
5505 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5506 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5508 hppa)
5509 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5510 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5512 i386|x86_64|x32)
5513 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5514 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5516 ia64*)
5517 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5518 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5520 lm32)
5521 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5522 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5524 m68k)
5525 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5526 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5528 microblaze*)
5529 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5530 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5532 mips*)
5533 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5534 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5536 moxie*)
5537 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5538 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5540 or32)
5541 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5542 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5544 ppc*)
5545 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5546 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5548 s390*)
5549 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5550 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5552 sh4)
5553 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5554 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5556 sparc*)
5557 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5558 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5560 xtensa*)
5561 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5562 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5564 esac
5565 done
5566 if test "$tcg_interpreter" = "yes" ; then
5567 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5568 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5571 case "$ARCH" in
5572 alpha)
5573 # Ensure there's only a single GP
5574 cflags="-msmall-data $cflags"
5576 esac
5578 if test "$gprof" = "yes" ; then
5579 echo "TARGET_GPROF=yes" >> $config_target_mak
5580 if test "$target_linux_user" = "yes" ; then
5581 cflags="-p $cflags"
5582 ldflags="-p $ldflags"
5584 if test "$target_softmmu" = "yes" ; then
5585 ldflags="-p $ldflags"
5586 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5590 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5591 ldflags="$ldflags $textseg_ldflags"
5594 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5595 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5597 done # for target in $targets
5599 if [ "$pixman" = "internal" ]; then
5600 echo "config-host.h: subdir-pixman" >> $config_host_mak
5603 if test "$rdma" = "yes" ; then
5604 echo "CONFIG_RDMA=y" >> $config_host_mak
5607 if [ "$dtc_internal" = "yes" ]; then
5608 echo "config-host.h: subdir-dtc" >> $config_host_mak
5611 if test "$numa" = "yes"; then
5612 echo "CONFIG_NUMA=y" >> $config_host_mak
5615 if test "$ccache_cpp2" = "yes"; then
5616 echo "export CCACHE_CPP2=y" >> $config_host_mak
5619 # build tree in object directory in case the source is not in the current directory
5620 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5621 DIRS="$DIRS fsdev"
5622 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5623 DIRS="$DIRS roms/seabios roms/vgabios"
5624 DIRS="$DIRS qapi-generated"
5625 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5626 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5627 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5628 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5629 FILES="$FILES pc-bios/spapr-rtas/Makefile"
5630 FILES="$FILES pc-bios/s390-ccw/Makefile"
5631 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5632 FILES="$FILES pc-bios/qemu-icon.bmp"
5633 for bios_file in \
5634 $source_path/pc-bios/*.bin \
5635 $source_path/pc-bios/*.aml \
5636 $source_path/pc-bios/*.rom \
5637 $source_path/pc-bios/*.dtb \
5638 $source_path/pc-bios/*.img \
5639 $source_path/pc-bios/openbios-* \
5640 $source_path/pc-bios/u-boot.* \
5641 $source_path/pc-bios/palcode-*
5643 FILES="$FILES pc-bios/`basename $bios_file`"
5644 done
5645 for test_file in `find $source_path/tests/acpi-test-data -type f`
5647 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5648 done
5649 mkdir -p $DIRS
5650 for f in $FILES ; do
5651 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5652 symlink "$source_path/$f" "$f"
5654 done
5656 # temporary config to build submodules
5657 for rom in seabios vgabios ; do
5658 config_mak=roms/$rom/config.mak
5659 echo "# Automatically generated by configure - do not modify" > $config_mak
5660 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5661 echo "AS=$as" >> $config_mak
5662 echo "CC=$cc" >> $config_mak
5663 echo "BCC=bcc" >> $config_mak
5664 echo "CPP=$cpp" >> $config_mak
5665 echo "OBJCOPY=objcopy" >> $config_mak
5666 echo "IASL=$iasl" >> $config_mak
5667 echo "LD=$ld" >> $config_mak
5668 done
5670 # set up qemu-iotests in this build directory
5671 iotests_common_env="tests/qemu-iotests/common.env"
5672 iotests_check="tests/qemu-iotests/check"
5674 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5675 echo >> "$iotests_common_env"
5676 echo "export PYTHON='$python'" >> "$iotests_common_env"
5678 if [ ! -e "$iotests_check" ]; then
5679 symlink "$source_path/$iotests_check" "$iotests_check"
5682 # Save the configure command line for later reuse.
5683 cat <<EOD >config.status
5684 #!/bin/sh
5685 # Generated by configure.
5686 # Run this file to recreate the current configuration.
5687 # Compiler output produced by configure, useful for debugging
5688 # configure, is in config.log if it exists.
5690 printf "exec" >>config.status
5691 printf " '%s'" "$0" "$@" >>config.status
5692 echo >>config.status
5693 chmod +x config.status
5695 rm -r "$TMPDIR1"