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 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE
=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC
="${TMPDIR1}/${TMPB}.c"
29 TMPO
="${TMPDIR1}/${TMPB}.o"
30 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
31 TMPL
="${TMPDIR1}/${TMPB}.lo"
32 TMPA
="${TMPDIR1}/lib${TMPB}.la"
33 TMPE
="${TMPDIR1}/${TMPB}.exe"
37 # Print a helpful header at the top of config.log
38 echo "# QEMU configure log $(date)" >> config.log
39 printf "# Configured with:" >> config.log
40 printf " '%s'" "$0" "$@" >> config.log
42 echo "#" >> config.log
47 while test -n "$2"; do
56 # Run the compiler, capturing its output to the log. First argument
57 # is compiler binary to execute.
60 echo $compiler "$@" >> config.log
61 $compiler "$@" >> config.log
2>&1 ||
return $?
62 # Test passed. If this is an --enable-werror build, rerun
63 # the test with -Werror and bail out if it fails. This
64 # makes warning-generating-errors in configure test code
65 # obvious to developers.
66 if test "$werror" != "yes"; then
69 # Don't bother rerunning the compile if we were already using -Werror
75 echo $compiler -Werror "$@" >> config.log
76 $compiler -Werror "$@" >> config.log
2>&1 && return $?
77 error_exit
"configure test passed without -Werror but failed with -Werror." \
78 "This is probably a bug in the configure script. The failing command" \
79 "will be at the bottom of config.log." \
80 "You can run configure with --disable-werror to bypass this check."
84 do_compiler
"$cc" "$@"
88 do_compiler
"$cxx" "$@"
92 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
93 # options which some versions of GCC's C++ compiler complain about
94 # because they only make sense for C programs.
96 for arg
in $QEMU_CFLAGS; do
98 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
99 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
102 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
110 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
116 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
119 # symbolically link $1 to $2. Portable version of "ln -sf".
122 mkdir
-p "$(dirname "$2")"
126 # check whether a command is available to this shell (may be either an
127 # executable or a builtin)
129 type "$1" >/dev
/null
2>&1
132 # search for an executable in PATH
138 # pathname has a dir component?
139 if [ "${local_command#*/}" != "$local_command" ]; then
140 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
141 echo "$local_command"
145 if [ -z "$local_command" ]; then
150 for local_dir
in $PATH; do
151 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
152 echo "$local_dir/$local_command"
153 IFS
="${local_ifs:-$(printf ' \t\n')}"
158 IFS
="${local_ifs:-$(printf ' \t\n')}"
163 echo "$trace_backends" |
grep "$1" >/dev
/null
167 source_path
=`dirname "$0"`
170 interp_prefix
="/usr/gnemul/qemu-%M"
174 block_drv_rw_whitelist
=""
175 block_drv_ro_whitelist
=""
181 cc_i386
=i386-pc-linux-gnu-gcc
186 # Don't accept a target_list environment variable.
189 # Default value for a variable defining feature "foo".
190 # * foo="no" feature will only be used if --enable-foo arg is given
191 # * foo="" feature will be searched for, and if found, will be used
192 # unless --disable-foo is given
193 # * foo="yes" this value will only be set by --enable-foo flag.
194 # feature will searched for,
195 # if not found, configure exits with error
197 # Always add --enable-foo and --disable-foo command line args.
198 # Distributions want to ensure that several features are compiled in, and it
199 # is impossible without a --enable-foo that exits if a feature is not found.
221 xen_pv_domain_build
="no"
222 xen_pci_passthrough
=""
245 LDFLAGS_SHARED
="-shared"
248 mandir
="\${prefix}/share/man"
249 datadir
="\${prefix}/share"
250 qemu_docdir
="\${prefix}/share/doc/qemu"
251 bindir
="\${prefix}/bin"
252 libdir
="\${prefix}/lib"
253 libexecdir
="\${prefix}/libexec"
254 includedir
="\${prefix}/include"
255 sysconfdir
="\${prefix}/etc"
256 local_statedir
="\${prefix}/var"
289 guest_agent_with_vss
="no"
290 guest_agent_ntddscsi
="no"
301 glusterfs_discard
="no"
302 glusterfs_zerofill
="no"
323 # parse CC options first
325 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
327 --cross-prefix=*) cross_prefix
="$optarg"
331 --cxx=*) CXX
="$optarg"
333 --source-path=*) source_path
="$optarg"
335 --cpu=*) cpu
="$optarg"
337 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
338 EXTRA_CFLAGS
="$optarg"
340 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
341 EXTRA_LDFLAGS
="$optarg"
343 --enable-debug-info) debug_info
="yes"
345 --disable-debug-info) debug_info
="no"
350 # Using uname is really, really broken. Once we have the right set of checks
351 # we can eliminate its usage altogether.
353 # Preferred compiler:
355 # ${cross_prefix}gcc (if cross-prefix specified)
357 if test -z "${CC}${cross_prefix}"; then
360 cc
="${CC-${cross_prefix}gcc}"
363 if test -z "${CXX}${cross_prefix}"; then
366 cxx
="${CXX-${cross_prefix}g++}"
369 ar="${AR-${cross_prefix}ar}"
370 as
="${AS-${cross_prefix}as}"
372 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
373 ld
="${LD-${cross_prefix}ld}"
374 nm
="${NM-${cross_prefix}nm}"
375 strip
="${STRIP-${cross_prefix}strip}"
376 windres
="${WINDRES-${cross_prefix}windres}"
377 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
379 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
381 pkg_config
=query_pkg_config
382 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
383 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
385 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
386 ARFLAGS
="${ARFLAGS-rv}"
388 # default flags for all hosts
389 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
390 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
391 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
392 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
393 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
394 if test "$debug_info" = "yes"; then
396 LDFLAGS
="-g $LDFLAGS"
399 # make source path absolute
400 source_path
=`cd "$source_path"; pwd`
402 # running configure in the source tree?
403 # we know that's the case if configure is there.
404 if test -f "./configure"; then
405 pwd_is_source_path
="y"
407 pwd_is_source_path
="n"
413 #error $1 not defined
415 int main(void) { return 0; }
423 int main(void) { return 0; }
430 int main(void) { return 0; }
434 if check_define __linux__
; then
436 elif check_define _WIN32
; then
438 elif check_define __OpenBSD__
; then
440 elif check_define __sun__
; then
442 elif check_define __HAIKU__
; then
448 # Some host OSes need non-standard checks for which CPU to use.
449 # Note that these checks are broken for cross-compilation: if you're
450 # cross-compiling to one of these OSes then you'll need to specify
451 # the correct CPU with the --cpu option.
454 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
455 # run 64-bit userspace code.
456 # If the user didn't specify a CPU explicitly and the kernel says this is
457 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
458 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
463 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
464 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
469 if test ! -z "$cpu" ; then
470 # command line argument
472 elif check_define __i386__
; then
474 elif check_define __x86_64__
; then
475 if check_define __ILP32__
; then
480 elif check_define __sparc__
; then
481 if check_define __arch64__
; then
486 elif check_define _ARCH_PPC
; then
487 if check_define _ARCH_PPC64
; then
492 elif check_define __mips__
; then
494 elif check_define __ia64__
; then
496 elif check_define __s390__
; then
497 if check_define __s390x__
; then
502 elif check_define __arm__
; then
504 elif check_define __aarch64__
; then
506 elif check_define __hppa__
; then
513 # Normalise host CPU name and set ARCH.
514 # Note that this case should only have supported host CPUs, not guests.
516 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
519 i386|i486|i586|i686|i86pc|BePC
)
538 # This will result in either an error or falling back to TCI later
542 if test -z "$ARCH"; then
548 # host *BSD for user mode
554 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
555 audio_possible_drivers
="sdl"
560 audio_possible_drivers
="dsound sdl"
561 if check_include dsound.h
; then
562 audio_drv_list
="dsound"
570 audio_possible_drivers
="oss sdl pa"
576 audio_possible_drivers
="oss sdl pa"
577 # needed for kinfo_getvmmap(3) in libutil.h
579 netmap
="" # enable netmap autodetect
580 HOST_VARIANT_DIR
="freebsd"
586 audio_possible_drivers
="oss sdl pa"
587 HOST_VARIANT_DIR
="dragonfly"
593 audio_possible_drivers
="oss sdl"
595 HOST_VARIANT_DIR
="netbsd"
601 audio_possible_drivers
="sdl"
602 HOST_VARIANT_DIR
="openbsd"
607 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
608 if [ "$cpu" = "x86_64" ] ; then
609 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
610 LDFLAGS
="-arch x86_64 $LDFLAGS"
613 audio_drv_list
="coreaudio"
614 audio_possible_drivers
="coreaudio sdl"
615 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
616 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
617 # Disable attempts to use ObjectiveC features in os/object.h since they
618 # won't work when we're compiling with gcc as a C compiler.
619 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
620 HOST_VARIANT_DIR
="darwin"
625 install="${INSTALL-ginstall}"
627 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
628 needs_libsunmath
="no"
629 solarisrev
=`uname -r | cut -f2 -d.`
630 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
631 if test "$solarisrev" -le 9 ; then
632 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
633 needs_libsunmath
="yes"
634 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
635 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
636 LIBS
="-lsunmath $LIBS"
638 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
639 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
640 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
641 "Studio 11 can be downloaded from www.sun.com."
645 if test -f /usr
/include
/sys
/soundcard.h
; then
648 audio_possible_drivers
="oss sdl"
649 # needed for CMSG_ macros in sys/socket.h
650 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
651 # needed for TIOCWIN* defines in termios.h
652 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
653 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
654 solarisnetlibs
="-lsocket -lnsl -lresolv"
655 LIBS
="$solarisnetlibs $LIBS"
656 libs_qga
="$solarisnetlibs $libs_qga"
664 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
665 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
669 audio_possible_drivers
="oss alsa sdl pa"
675 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
679 if [ "$bsd" = "yes" ] ; then
680 if [ "$darwin" != "yes" ] ; then
685 : ${make=${MAKE-make}}
686 : ${install=${INSTALL-install}}
687 : ${python=${PYTHON-python}}
688 : ${smbd=${SMBD-/usr/sbin/smbd}}
690 # Default objcc to clang if available, otherwise use CC
697 if test "$mingw32" = "yes" ; then
700 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
701 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
702 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
703 # MinGW needs -mthreads for TLS and macro _MT.
704 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
705 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
707 if compile_prog
"" "-liberty" ; then
708 LIBS
="-liberty $LIBS"
710 prefix
="c:/Program Files/QEMU"
713 qemu_docdir
="\${prefix}"
715 sysconfdir
="\${prefix}"
718 libs_qga
="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
724 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
726 --help|
-h) show_help
=yes
728 --version|
-V) exec cat $source_path/VERSION
730 --prefix=*) prefix
="$optarg"
732 --interp-prefix=*) interp_prefix
="$optarg"
740 --host-cc=*) host_cc
="$optarg"
744 --iasl=*) iasl
="$optarg"
746 --objcc=*) objcc
="$optarg"
748 --make=*) make="$optarg"
750 --install=*) install="$optarg"
752 --python=*) python
="$optarg"
754 --gcov=*) gcov_tool
="$optarg"
756 --smbd=*) smbd
="$optarg"
764 --disable-debug-info)
774 --target-list=*) target_list
="$optarg"
776 --enable-trace-backends=*) trace_backends
="$optarg"
778 # XXX: backwards compatibility
779 --enable-trace-backend=*) trace_backends
="$optarg"
781 --with-trace-file=*) trace_file
="$optarg"
783 --enable-gprof) gprof
="yes"
785 --enable-gcov) gcov
="yes"
789 LDFLAGS
="-static $LDFLAGS"
790 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
792 --mandir=*) mandir
="$optarg"
794 --bindir=*) bindir
="$optarg"
796 --libdir=*) libdir
="$optarg"
798 --libexecdir=*) libexecdir
="$optarg"
800 --includedir=*) includedir
="$optarg"
802 --datadir=*) datadir
="$optarg"
804 --with-confsuffix=*) confsuffix
="$optarg"
806 --docdir=*) qemu_docdir
="$optarg"
808 --sysconfdir=*) sysconfdir
="$optarg"
810 --localstatedir=*) local_statedir
="$optarg"
812 --sbindir=*|
--sharedstatedir=*|\
813 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
814 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
815 # These switches are silently ignored, for compatibility with
816 # autoconf-generated configure scripts. This allows QEMU's
817 # configure to be used by RPM and similar macros that set
818 # lots of directory switches by default.
820 --with-system-pixman) pixman
="system"
822 --without-system-pixman) pixman
="internal"
824 --without-pixman) pixman
="none"
826 --disable-sdl) sdl
="no"
828 --enable-sdl) sdl
="yes"
830 --with-sdlabi=*) sdlabi
="$optarg"
832 --disable-qom-cast-debug) qom_cast_debug
="no"
834 --enable-qom-cast-debug) qom_cast_debug
="yes"
836 --disable-virtfs) virtfs
="no"
838 --enable-virtfs) virtfs
="yes"
840 --disable-vnc) vnc
="no"
842 --enable-vnc) vnc
="yes"
844 --oss-lib=*) oss_lib
="$optarg"
846 --audio-drv-list=*) audio_drv_list
="$optarg"
848 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
850 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
852 --enable-debug-tcg) debug_tcg
="yes"
854 --disable-debug-tcg) debug_tcg
="no"
857 # Enable debugging options that aren't excessively noisy
863 --enable-sparse) sparse
="yes"
865 --disable-sparse) sparse
="no"
867 --disable-strip) strip_opt
="no"
869 --disable-vnc-sasl) vnc_sasl
="no"
871 --enable-vnc-sasl) vnc_sasl
="yes"
873 --disable-vnc-jpeg) vnc_jpeg
="no"
875 --enable-vnc-jpeg) vnc_jpeg
="yes"
877 --disable-vnc-png) vnc_png
="no"
879 --enable-vnc-png) vnc_png
="yes"
881 --disable-slirp) slirp
="no"
883 --disable-uuid) uuid
="no"
885 --enable-uuid) uuid
="yes"
887 --disable-vde) vde
="no"
889 --enable-vde) vde
="yes"
891 --disable-netmap) netmap
="no"
893 --enable-netmap) netmap
="yes"
895 --disable-xen) xen
="no"
897 --enable-xen) xen
="yes"
899 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
901 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
903 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
905 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
907 --disable-brlapi) brlapi
="no"
909 --enable-brlapi) brlapi
="yes"
911 --disable-bluez) bluez
="no"
913 --enable-bluez) bluez
="yes"
915 --disable-kvm) kvm
="no"
917 --enable-kvm) kvm
="yes"
919 --disable-tcg-interpreter) tcg_interpreter
="no"
921 --enable-tcg-interpreter) tcg_interpreter
="yes"
923 --disable-cap-ng) cap_ng
="no"
925 --enable-cap-ng) cap_ng
="yes"
927 --disable-spice) spice
="no"
929 --enable-spice) spice
="yes"
931 --disable-libiscsi) libiscsi
="no"
933 --enable-libiscsi) libiscsi
="yes"
935 --disable-libnfs) libnfs
="no"
937 --enable-libnfs) libnfs
="yes"
939 --enable-profiler) profiler
="yes"
941 --disable-cocoa) cocoa
="no"
945 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
947 --disable-system) softmmu
="no"
949 --enable-system) softmmu
="yes"
956 --disable-linux-user) linux_user
="no"
958 --enable-linux-user) linux_user
="yes"
960 --disable-bsd-user) bsd_user
="no"
962 --enable-bsd-user) bsd_user
="yes"
964 --enable-pie) pie
="yes"
966 --disable-pie) pie
="no"
968 --enable-werror) werror
="yes"
970 --disable-werror) werror
="no"
972 --enable-stack-protector) stack_protector
="yes"
974 --disable-stack-protector) stack_protector
="no"
976 --disable-curses) curses
="no"
978 --enable-curses) curses
="yes"
980 --disable-curl) curl
="no"
982 --enable-curl) curl
="yes"
984 --disable-fdt) fdt
="no"
986 --enable-fdt) fdt
="yes"
988 --disable-linux-aio) linux_aio
="no"
990 --enable-linux-aio) linux_aio
="yes"
992 --disable-attr) attr
="no"
994 --enable-attr) attr
="yes"
996 --disable-blobs) blobs
="no"
998 --with-pkgversion=*) pkgversion
=" ($optarg)"
1000 --with-coroutine=*) coroutine
="$optarg"
1002 --disable-coroutine-pool) coroutine_pool
="no"
1004 --enable-coroutine-pool) coroutine_pool
="yes"
1006 --disable-docs) docs
="no"
1008 --enable-docs) docs
="yes"
1010 --disable-vhost-net) vhost_net
="no"
1012 --enable-vhost-net) vhost_net
="yes"
1014 --disable-vhost-scsi) vhost_scsi
="no"
1016 --enable-vhost-scsi) vhost_scsi
="yes"
1018 --disable-opengl) opengl
="no"
1020 --enable-opengl) opengl
="yes"
1022 --disable-rbd) rbd
="no"
1024 --enable-rbd) rbd
="yes"
1026 --disable-xfsctl) xfs
="no"
1028 --enable-xfsctl) xfs
="yes"
1030 --disable-smartcard) smartcard
="no"
1032 --enable-smartcard) smartcard
="yes"
1034 --disable-libusb) libusb
="no"
1036 --enable-libusb) libusb
="yes"
1038 --disable-usb-redir) usb_redir
="no"
1040 --enable-usb-redir) usb_redir
="yes"
1042 --disable-zlib-test) zlib
="no"
1044 --disable-lzo) lzo
="no"
1046 --enable-lzo) lzo
="yes"
1048 --disable-snappy) snappy
="no"
1050 --enable-snappy) snappy
="yes"
1052 --disable-bzip2) bzip2="no"
1054 --enable-bzip2) bzip2="yes"
1056 --enable-guest-agent) guest_agent
="yes"
1058 --disable-guest-agent) guest_agent
="no"
1060 --enable-guest-agent-msi) guest_agent_msi
="yes"
1062 --disable-guest-agent-msi) guest_agent_msi
="no"
1064 --with-vss-sdk) vss_win32_sdk
=""
1066 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1068 --without-vss-sdk) vss_win32_sdk
="no"
1070 --with-win-sdk) win_sdk
=""
1072 --with-win-sdk=*) win_sdk
="$optarg"
1074 --without-win-sdk) win_sdk
="no"
1076 --enable-tools) want_tools
="yes"
1078 --disable-tools) want_tools
="no"
1080 --enable-seccomp) seccomp
="yes"
1082 --disable-seccomp) seccomp
="no"
1084 --disable-glusterfs) glusterfs
="no"
1086 --enable-glusterfs) glusterfs
="yes"
1088 --disable-archipelago) archipelago
="no"
1090 --enable-archipelago) archipelago
="yes"
1092 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1093 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1095 --disable-gtk) gtk
="no"
1097 --enable-gtk) gtk
="yes"
1099 --disable-gnutls) gnutls
="no"
1101 --enable-gnutls) gnutls
="yes"
1103 --disable-nettle) nettle
="no"
1105 --enable-nettle) nettle
="yes"
1107 --disable-gcrypt) gcrypt
="no"
1109 --enable-gcrypt) gcrypt
="yes"
1111 --enable-rdma) rdma
="yes"
1113 --disable-rdma) rdma
="no"
1115 --with-gtkabi=*) gtkabi
="$optarg"
1117 --disable-vte) vte
="no"
1119 --enable-vte) vte
="yes"
1121 --disable-virglrenderer) virglrenderer
="no"
1123 --enable-virglrenderer) virglrenderer
="yes"
1125 --disable-tpm) tpm
="no"
1127 --enable-tpm) tpm
="yes"
1129 --disable-libssh2) libssh2
="no"
1131 --enable-libssh2) libssh2
="yes"
1133 --enable-vhdx) vhdx
="yes"
1135 --disable-vhdx) vhdx
="no"
1137 --disable-numa) numa
="no"
1139 --enable-numa) numa
="yes"
1141 --disable-tcmalloc) tcmalloc
="no"
1143 --enable-tcmalloc) tcmalloc
="yes"
1145 --disable-jemalloc) jemalloc
="no"
1147 --enable-jemalloc) jemalloc
="yes"
1150 echo "ERROR: unknown option $opt"
1151 echo "Try '$0 --help' for more information"
1157 if ! has
$python; then
1158 error_exit
"Python not found. Use --python=/path/to/python"
1161 # Note that if the Python conditional here evaluates True we will exit
1162 # with status 1 which is a shell 'false' value.
1163 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1164 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1165 "Note that Python 3 or later is not yet supported." \
1166 "Use --python=/path/to/python to specify a supported Python."
1169 # Suppress writing compiled files
1175 LDFLAGS
="-m32 $LDFLAGS"
1179 LDFLAGS
="-m64 $LDFLAGS"
1182 LDFLAGS
="-m32 $LDFLAGS"
1183 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1186 LDFLAGS
="-m64 $LDFLAGS"
1187 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1191 LDFLAGS
="-m31 $LDFLAGS"
1195 LDFLAGS
="-m64 $LDFLAGS"
1199 LDFLAGS
="-m32 $LDFLAGS"
1200 cc_i386
='$(CC) -m32'
1204 LDFLAGS
="-m64 $LDFLAGS"
1205 cc_i386
='$(CC) -m32'
1209 LDFLAGS
="-mx32 $LDFLAGS"
1210 cc_i386
='$(CC) -m32'
1212 # No special flags required for other host CPUs
1215 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1216 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1218 default_target_list
=""
1222 if [ "$softmmu" = "yes" ]; then
1223 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1225 if [ "$linux_user" = "yes" ]; then
1226 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1228 if [ "$bsd_user" = "yes" ]; then
1229 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1232 for config
in $mak_wilds; do
1233 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1236 if test x
"$show_help" = x
"yes" ; then
1239 Usage: configure [options]
1240 Options: [defaults in brackets after descriptions]
1243 --help print this message
1244 --prefix=PREFIX install in PREFIX [$prefix]
1245 --interp-prefix=PREFIX where to find shared libraries, etc.
1246 use %M for cpu name [$interp_prefix]
1247 --target-list=LIST set target list (default: build everything)
1248 $(echo Available targets: $default_target_list | \
1249 fold -s -w 53 | sed -e 's/^/ /')
1251 Advanced options (experts only):
1252 --source-path=PATH path of source code [$source_path]
1253 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1254 --cc=CC use C compiler CC [$cc]
1255 --iasl=IASL use ACPI compiler IASL [$iasl]
1256 --host-cc=CC use C compiler CC [$host_cc] for code run at
1258 --cxx=CXX use C++ compiler CXX [$cxx]
1259 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1260 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1261 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1262 --make=MAKE use specified make [$make]
1263 --install=INSTALL use specified install [$install]
1264 --python=PYTHON use specified python [$python]
1265 --smbd=SMBD use specified smbd [$smbd]
1266 --static enable static build [$static]
1267 --mandir=PATH install man pages in PATH
1268 --datadir=PATH install firmware in PATH$confsuffix
1269 --docdir=PATH install documentation in PATH$confsuffix
1270 --bindir=PATH install binaries in PATH
1271 --libdir=PATH install libraries in PATH
1272 --sysconfdir=PATH install config in PATH$confsuffix
1273 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1274 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1275 --enable-debug enable common debug build options
1276 --disable-strip disable stripping binaries
1277 --disable-werror disable compilation abort on warning
1278 --disable-stack-protector disable compiler-provided stack protection
1279 --audio-drv-list=LIST set audio drivers list:
1280 Available drivers: $audio_possible_drivers
1281 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1282 --block-drv-rw-whitelist=L
1283 set block driver read-write whitelist
1284 (affects only QEMU, not qemu-img)
1285 --block-drv-ro-whitelist=L
1286 set block driver read-only whitelist
1287 (affects only QEMU, not qemu-img)
1288 --enable-trace-backends=B Set trace backend
1289 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1290 --with-trace-file=NAME Full PATH,NAME of file to store traces
1292 --disable-slirp disable SLIRP userspace network connectivity
1293 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1294 --oss-lib path to OSS library
1295 --cpu=CPU Build for host CPU [$cpu]
1296 --with-coroutine=BACKEND coroutine backend. Supported options:
1297 gthread, ucontext, sigaltstack, windows
1298 --enable-gcov enable test coverage analysis with gcov
1299 --gcov=GCOV use specified gcov [$gcov_tool]
1300 --disable-blobs disable installing provided firmware blobs
1301 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1302 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1304 Optional features, enabled with --enable-FEATURE and
1305 disabled with --disable-FEATURE, default is enabled if available:
1307 system all system emulation targets
1308 user supported user emulation targets
1309 linux-user all linux usermode emulation targets
1310 bsd-user all BSD usermode emulation targets
1311 docs build documentation
1312 guest-agent build the QEMU Guest Agent
1313 guest-agent-msi build guest agent Windows MSI installation package
1314 pie Position Independent Executables
1315 modules modules support
1316 debug-tcg TCG debugging (default is disabled)
1317 debug-info debugging information
1318 sparse sparse checker
1320 gnutls GNUTLS cryptography support
1321 nettle nettle cryptography support
1322 gcrypt libgcrypt cryptography support
1324 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1326 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1327 vte vte support for the gtk UI
1330 vnc-sasl SASL encryption for VNC server
1331 vnc-jpeg JPEG lossy compression for VNC server
1332 vnc-png PNG compression for VNC server
1333 cocoa Cocoa UI (Mac OS X only)
1335 xen xen backend driver support
1337 brlapi BrlAPI (Braile)
1338 curl curl connectivity
1340 bluez bluez stack connectivity
1341 kvm KVM acceleration support
1342 rdma RDMA-based migration support
1344 vde support for vde network
1345 netmap support for netmap network
1346 linux-aio Linux AIO support
1347 cap-ng libcap-ng support
1348 attr attr and xattr support
1349 vhost-net vhost-net acceleration support
1351 rbd rados block device (rbd)
1352 libiscsi iscsi support
1354 smartcard smartcard support (libcacard)
1355 libusb libusb (for usb passthrough)
1356 usb-redir usb network redirection support
1357 lzo support of lzo compression library
1358 snappy support of snappy compression library
1359 bzip2 support of bzip2 compression library
1360 (for reading bzip2-compressed dmg images)
1361 seccomp seccomp support
1362 coroutine-pool coroutine freelist (better performance)
1363 glusterfs GlusterFS backend
1364 archipelago Archipelago backend
1366 libssh2 ssh block device support
1367 vhdx support for the Microsoft VHDX image format
1368 numa libnuma support
1369 tcmalloc tcmalloc support
1370 jemalloc jemalloc support
1372 NOTE: The object files are built at the place where configure is launched
1377 # Now we have handled --enable-tcg-interpreter and know we're not just
1378 # printing the help message, bail out if the host CPU isn't supported.
1379 if test "$ARCH" = "unknown"; then
1380 if test "$tcg_interpreter" = "yes" ; then
1381 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1384 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1388 # Consult white-list to determine whether to enable werror
1389 # by default. Only enable by default for git builds
1390 z_version
=`cut -f3 -d. $source_path/VERSION`
1392 if test -z "$werror" ; then
1393 if test -d "$source_path/.git" -a \
1394 "$linux" = "yes" ; then
1401 # check that the C compiler works.
1403 if compile_object
; then
1404 : C compiler works ok
1406 error_exit
"\"$cc\" either does not exist or does not work"
1408 if ! compile_prog
; then
1409 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1412 # Check that the C++ compiler exists and works with the C compiler
1415 int c_function(void);
1416 int main(void) { return c_function(); }
1423 int c_function(void);
1425 int c_function(void) { return 42; }
1430 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1431 # C++ compiler $cxx works ok with C compiler $cc
1434 echo "C++ compiler $cxx does not work with C compiler $cc"
1435 echo "Disabling C++ specific optional code"
1439 echo "No C++ compiler available; disabling C++ specific optional code"
1443 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1444 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1445 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1446 gcc_flags
="-Wendif-labels $gcc_flags"
1447 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1448 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1449 # Note that we do not add -Werror to gcc_flags here, because that would
1450 # enable it for all configure tests. If a configure test failed due
1451 # to -Werror this would just silently disable some features,
1452 # so it's too error prone.
1454 cc_has_warning_flag
() {
1457 # Use the positive sense of the flag when testing for -Wno-wombat
1458 # support (gcc will happily accept the -Wno- form of unknown
1460 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1461 compile_prog
"-Werror $optflag" ""
1464 for flag
in $gcc_flags; do
1465 if cc_has_warning_flag
$flag ; then
1466 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1470 if test "$stack_protector" != "no"; then
1472 int main(int argc, char *argv[])
1474 char arr[64], *p = arr, *c = argv[0];
1481 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1483 for flag
in $gcc_flags; do
1484 # We need to check both a compile and a link, since some compiler
1485 # setups fail only on a .c->.o compile and some only at link time
1486 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1487 compile_prog
"-Werror $flag" ""; then
1488 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1493 if test "$stack_protector" = yes; then
1494 if test $sp_on = 0; then
1495 error_exit
"Stack protector not supported"
1500 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1501 # large functions that use global variables. The bug is in all releases of
1502 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1503 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1505 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1506 int main(void) { return 0; }
1508 #error No bug in this compiler.
1511 if compile_prog
"-Werror -fno-gcse" "" ; then
1512 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1515 if test "$static" = "yes" ; then
1516 if test "$modules" = "yes" ; then
1517 error_exit
"static and modules are mutually incompatible"
1519 if test "$pie" = "yes" ; then
1520 error_exit
"static and pie are mutually incompatible"
1526 # Unconditional check for compiler __thread support
1528 static __thread int tls_var;
1529 int main(void) { return tls_var; }
1532 if ! compile_prog
"-Werror" "" ; then
1533 error_exit
"Your compiler does not support the __thread specifier for " \
1534 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1537 if test "$pie" = ""; then
1538 case "$cpu-$targetos" in
1539 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1547 if test "$pie" != "no" ; then
1551 # define THREAD __thread
1556 static THREAD int tls_var;
1558 int main(void) { return tls_var; }
1561 if compile_prog
"-fPIE -DPIE" "-pie"; then
1562 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1563 LDFLAGS
="-pie $LDFLAGS"
1565 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1566 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1569 if test "$pie" = "yes"; then
1570 error_exit
"PIE not available due to missing toolchain support"
1572 echo "Disabling PIE due to missing toolchain support"
1577 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1578 CFLAGS_NOPIE
="-fno-pie"
1579 LDFLAGS_NOPIE
="-nopie"
1583 ##########################################
1584 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1585 # use i686 as default anyway, but for those that don't, an explicit
1586 # specification is necessary
1588 if test "$cpu" = "i386"; then
1590 static int sfaa(int *ptr)
1592 return __sync_fetch_and_and(ptr, 0);
1598 val = __sync_val_compare_and_swap(&val, 0, 1);
1603 if ! compile_prog
"" "" ; then
1604 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1608 #########################################
1609 # Solaris specific configure tool chain decisions
1611 if test "$solaris" = "yes" ; then
1612 if has
$install; then
1615 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1616 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1617 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1619 if test "`path_of $install`" = "/usr/sbin/install" ; then
1620 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1621 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1622 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1627 if test -f /usr
/ccs
/bin
/ar ; then
1628 error_exit
"No path includes ar" \
1629 "Add /usr/ccs/bin to your path and rerun configure"
1631 error_exit
"No path includes ar"
1635 if test -z "${target_list+xxx}" ; then
1636 target_list
="$default_target_list"
1638 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
1641 # Check that we recognised the target name; this allows a more
1642 # friendly error message than if we let it fall through.
1643 for target
in $target_list; do
1644 case " $default_target_list " in
1648 error_exit
"Unknown target name '$target'"
1653 # see if system emulation was really requested
1654 case " $target_list " in
1655 *"-softmmu "*) softmmu
=yes
1661 feature_not_found
() {
1665 error_exit
"User requested feature $feature" \
1666 "configure was not able to find it." \
1671 # big/little endian test
1673 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1674 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1675 extern int foo(short *, short *);
1676 int main(int argc, char *argv[]) {
1677 return foo(big_endian, little_endian);
1681 if compile_object
; then
1682 if grep -q BiGeNdIaN
$TMPO ; then
1684 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1687 echo big
/little
test failed
1690 echo big
/little
test failed
1693 ##########################################
1694 # cocoa implies not SDL or GTK
1695 # (the cocoa UI code currently assumes it is always the active UI
1696 # and doesn't interact well with other UI frontend code)
1697 if test "$cocoa" = "yes"; then
1698 if test "$sdl" = "yes"; then
1699 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1701 if test "$gtk" = "yes"; then
1702 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1708 ##########################################
1712 #include <sys/socket.h>
1713 #include <linux/ip.h>
1714 int main(void) { return sizeof(struct mmsghdr); }
1716 if compile_prog
"" "" ; then
1722 ##########################################
1723 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1725 if test "$mingw32" = "yes"; then
1726 # Some versions of MinGW / Mingw-w64 lack localtime_r
1727 # and gmtime_r entirely.
1729 # Some versions of Mingw-w64 define a macro for
1730 # localtime_r/gmtime_r.
1732 # Some versions of Mingw-w64 will define functions
1733 # for localtime_r/gmtime_r, but only if you have
1734 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1735 # though, unistd.h and pthread.h both define
1738 # So this #undef localtime_r and #include <unistd.h>
1739 # are not in fact redundant.
1744 int main(void) { localtime_r(NULL, NULL); return 0; }
1746 if compile_prog
"" "" ; then
1753 ##########################################
1756 if ! has
"$pkg_config_exe"; then
1757 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1760 ##########################################
1763 if test "$linux_user" = "yes"; then
1766 #include <linux/futex.h>
1768 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1774 if ! compile_object
; then
1775 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1779 ##########################################
1780 # avx2 optimization requirement check
1783 static void bar(void) {}
1784 static void *bar_ifunc(void) {return (void*) bar;}
1785 static void foo(void) __attribute__((ifunc("bar_ifunc")));
1786 int main(void) { foo(); return 0; }
1788 if compile_prog
"-mavx2" "" ; then
1789 if readelf
--syms $TMPE |
grep "IFUNC.*foo" >/dev
/null
2>&1; then
1794 #########################################
1797 if test "$zlib" != "no" ; then
1800 int main(void) { zlibVersion(); return 0; }
1802 if compile_prog
"" "-lz" ; then
1805 error_exit
"zlib check failed" \
1806 "Make sure to have the zlib libs and headers installed."
1811 ##########################################
1814 if test "$lzo" != "no" ; then
1816 #include <lzo/lzo1x.h>
1817 int main(void) { lzo_version(); return 0; }
1819 if compile_prog
"" "-llzo2" ; then
1820 libs_softmmu
="$libs_softmmu -llzo2"
1823 if test "$lzo" = "yes"; then
1824 feature_not_found
"liblzo2" "Install liblzo2 devel"
1830 ##########################################
1833 if test "$snappy" != "no" ; then
1835 #include <snappy-c.h>
1836 int main(void) { snappy_max_compressed_length(4096); return 0; }
1838 if compile_prog
"" "-lsnappy" ; then
1839 libs_softmmu
="$libs_softmmu -lsnappy"
1842 if test "$snappy" = "yes"; then
1843 feature_not_found
"libsnappy" "Install libsnappy devel"
1849 ##########################################
1852 if test "$bzip2" != "no" ; then
1855 int main(void) { BZ2_bzlibVersion(); return 0; }
1857 if compile_prog
"" "-lbz2" ; then
1860 if test "$bzip2" = "yes"; then
1861 feature_not_found
"libbzip2" "Install libbzip2 devel"
1867 ##########################################
1870 if test "$seccomp" != "no" ; then
1873 libseccomp_minver
="2.1.0"
1876 libseccomp_minver
="2.2.0"
1879 libseccomp_minver
="2.2.3"
1882 libseccomp_minver
=""
1886 if test "$libseccomp_minver" != "" &&
1887 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
1888 libs_softmmu
="$libs_softmmu `$pkg_config --libs libseccomp`"
1889 QEMU_CFLAGS
="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1892 if test "$seccomp" = "yes" ; then
1893 if test "$libseccomp_minver" != "" ; then
1894 feature_not_found
"libseccomp" \
1895 "Install libseccomp devel >= $libseccomp_minver"
1897 feature_not_found
"libseccomp" \
1898 "libseccomp is not supported for host cpu $cpu"
1904 ##########################################
1907 if test "$xen" != "no" ; then
1908 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1909 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
1911 # First we test whether Xen headers and libraries are available.
1912 # If no, we are done and there is no Xen support.
1913 # If yes, more tests are run to detect the Xen version.
1917 #include <xenctrl.h>
1922 if ! compile_prog
"" "$xen_libs" ; then
1924 if test "$xen" = "yes" ; then
1925 feature_not_found
"xen" "Install xen devel"
1931 cat > $TMPC <<EOF &&
1933 * If we have stable libs the we don't want the libxc compat
1934 * layers, regardless of what CFLAGS we may have been given.
1936 #undef XC_WANT_COMPAT_EVTCHN_API
1937 #undef XC_WANT_COMPAT_GNTTAB_API
1938 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
1939 #include <xenctrl.h>
1940 #include <xenstore.h>
1941 #include <xenevtchn.h>
1942 #include <xengnttab.h>
1943 #include <xenforeignmemory.h>
1945 #include <xen/hvm/hvm_info_table.h>
1946 #if !defined(HVM_MAX_VCPUS)
1947 # error HVM_MAX_VCPUS not defined
1950 xc_interface *xc = NULL;
1951 xenforeignmemory_handle *xfmem;
1952 xenevtchn_handle *xe;
1953 xengnttab_handle *xg;
1954 xen_domain_handle_t handle;
1958 xc = xc_interface_open(0, 0, 0);
1959 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1960 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1961 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1962 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
1963 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1965 xfmem = xenforeignmemory_open(0, 0);
1966 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
1968 xe = xenevtchn_open(0, 0);
1971 xg = xengnttab_open(0, 0);
1972 xengnttab_map_grant_ref(xg, 0, 0, 0);
1977 compile_prog
"" "$xen_libs $xen_stable_libs"
1979 xen_ctrl_version
=471
1982 cat > $TMPC <<EOF &&
1983 #include <xenctrl.h>
1986 xc_interface *xc = NULL;
1987 xen_domain_handle_t handle;
1988 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1992 compile_prog
"" "$xen_libs"
1994 xen_ctrl_version
=470
1999 cat > $TMPC <<EOF &&
2000 #include <xenctrl.h>
2001 #include <xenstore.h>
2003 #include <xen/hvm/hvm_info_table.h>
2004 #if !defined(HVM_MAX_VCPUS)
2005 # error HVM_MAX_VCPUS not defined
2010 xc = xc_interface_open(0, 0, 0);
2011 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2012 xc_gnttab_open(NULL, 0);
2013 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2014 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2015 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2016 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2020 compile_prog
"" "$xen_libs"
2022 xen_ctrl_version
=460
2027 cat > $TMPC <<EOF &&
2028 #include <xenctrl.h>
2029 #include <xenstore.h>
2031 #include <xen/hvm/hvm_info_table.h>
2032 #if !defined(HVM_MAX_VCPUS)
2033 # error HVM_MAX_VCPUS not defined
2038 xc = xc_interface_open(0, 0, 0);
2039 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2040 xc_gnttab_open(NULL, 0);
2041 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2042 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2043 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2047 compile_prog
"" "$xen_libs"
2049 xen_ctrl_version
=450
2053 cat > $TMPC <<EOF &&
2054 #include <xenctrl.h>
2055 #include <xenstore.h>
2057 #include <xen/hvm/hvm_info_table.h>
2058 #if !defined(HVM_MAX_VCPUS)
2059 # error HVM_MAX_VCPUS not defined
2064 xc = xc_interface_open(0, 0, 0);
2065 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2066 xc_gnttab_open(NULL, 0);
2067 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2068 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2072 compile_prog
"" "$xen_libs"
2074 xen_ctrl_version
=420
2078 if test "$xen" = "yes" ; then
2079 feature_not_found
"xen (unsupported version)" \
2080 "Install a supported xen (xen 4.2 or newer)"
2085 if test "$xen" = yes; then
2086 if test $xen_ctrl_version -ge 471 ; then
2087 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2089 libs_softmmu
="$xen_libs $libs_softmmu"
2093 if test "$xen_pci_passthrough" != "no"; then
2094 if test "$xen" = "yes" && test "$linux" = "yes"; then
2095 xen_pci_passthrough
=yes
2097 if test "$xen_pci_passthrough" = "yes"; then
2098 error_exit
"User requested feature Xen PCI Passthrough" \
2099 " but this feature requires /sys from Linux"
2101 xen_pci_passthrough
=no
2105 if test "$xen_pv_domain_build" = "yes" &&
2106 test "$xen" != "yes"; then
2107 error_exit
"User requested Xen PV domain builder support" \
2108 "which requires Xen support."
2111 ##########################################
2113 if test "$sparse" != "no" ; then
2117 if test "$sparse" = "yes" ; then
2118 feature_not_found
"sparse" "Install sparse binary"
2124 ##########################################
2128 if $pkg_config --exists "x11"; then
2129 x11_cflags
=`$pkg_config --cflags x11`
2130 x11_libs
=`$pkg_config --libs x11`
2133 ##########################################
2136 if test "$gtkabi" = ""; then
2137 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2138 # Use 3.0 as a fallback if that is available.
2139 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2141 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2148 if test "$gtk" != "no"; then
2149 gtkpackage
="gtk+-$gtkabi"
2150 gtkx11package
="gtk+-x11-$gtkabi"
2151 if test "$gtkabi" = "3.0" ; then
2156 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2157 gtk_cflags
=`$pkg_config --cflags $gtkpackage`
2158 gtk_libs
=`$pkg_config --libs $gtkpackage`
2159 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2160 gtk_cflags
="$gtk_cflags $x11_cflags"
2161 gtk_libs
="$gtk_libs $x11_libs"
2163 libs_softmmu
="$gtk_libs $libs_softmmu"
2165 elif test "$gtk" = "yes"; then
2166 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2173 ##########################################
2177 # Unfortunately some distros have bad pkg-config information for gnutls
2178 # such that it claims to exist but you get a compiler error if you try
2179 # to use the options returned by --libs. Specifically, Ubuntu for --static
2180 # builds doesn't work:
2181 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2183 # So sanity check the cflags/libs before assuming gnutls can be used.
2184 if ! $pkg_config --exists "gnutls"; then
2189 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2194 if test "$gnutls" != "no"; then
2195 if gnutls_works
; then
2196 gnutls_cflags
=`$pkg_config --cflags gnutls`
2197 gnutls_libs
=`$pkg_config --libs gnutls`
2198 libs_softmmu
="$gnutls_libs $libs_softmmu"
2199 libs_tools
="$gnutls_libs $libs_tools"
2200 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2203 # gnutls_hash_init requires >= 2.9.10
2204 if $pkg_config --exists "gnutls >= 2.9.10"; then
2210 # gnutls_rnd requires >= 2.11.0
2211 if $pkg_config --exists "gnutls >= 2.11.0"; then
2217 if $pkg_config --exists 'gnutls >= 3.0'; then
2220 elif $pkg_config --exists 'gnutls >= 2.12'; then
2221 case `$pkg_config --libs --static gnutls` in
2239 elif test "$gnutls" = "yes"; then
2240 feature_not_found
"gnutls" "Install gnutls devel"
2252 # If user didn't give a --disable/enable-gcrypt flag,
2253 # then mark as disabled if user requested nettle
2254 # explicitly, or if gnutls links to nettle
2255 if test -z "$gcrypt"
2257 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2263 # If user didn't give a --disable/enable-nettle flag,
2264 # then mark as disabled if user requested gcrypt
2265 # explicitly, or if gnutls links to gcrypt
2266 if test -z "$nettle"
2268 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2274 has_libgcrypt_config
() {
2275 if ! has
"libgcrypt-config"
2280 if test -n "$cross_prefix"
2282 host=`libgcrypt-config --host`
2283 if test "$host-" != $cross_prefix
2292 if test "$gcrypt" != "no"; then
2293 if has_libgcrypt_config
; then
2294 gcrypt_cflags
=`libgcrypt-config --cflags`
2295 gcrypt_libs
=`libgcrypt-config --libs`
2296 # Debian has remove -lgpg-error from libgcrypt-config
2297 # as it "spreads unnecessary dependencies" which in
2298 # turn breaks static builds...
2299 if test "$static" = "yes"
2301 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2303 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2304 libs_tools
="$gcrypt_libs $libs_tools"
2305 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2307 if test -z "$nettle"; then
2314 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2316 NULL, 0, 0, 0, NULL);
2320 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2324 if test "$gcrypt" = "yes"; then
2325 feature_not_found
"gcrypt" "Install gcrypt devel"
2333 if test "$nettle" != "no"; then
2334 if $pkg_config --exists "nettle"; then
2335 nettle_cflags
=`$pkg_config --cflags nettle`
2336 nettle_libs
=`$pkg_config --libs nettle`
2337 nettle_version
=`$pkg_config --modversion nettle`
2338 libs_softmmu
="$nettle_libs $libs_softmmu"
2339 libs_tools
="$nettle_libs $libs_tools"
2340 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2344 #include <nettle/pbkdf2.h>
2346 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2350 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2354 if test "$nettle" = "yes"; then
2355 feature_not_found
"nettle" "Install nettle devel"
2362 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2364 error_exit
"Only one of gcrypt & nettle can be enabled"
2367 ##########################################
2368 # libtasn1 - only for the TLS creds/session test suite
2373 if $pkg_config --exists "libtasn1"; then
2374 tasn1_cflags
=`$pkg_config --cflags libtasn1`
2375 tasn1_libs
=`$pkg_config --libs libtasn1`
2381 ##########################################
2382 # getifaddrs (for tests/test-io-channel-socket )
2385 if ! check_include
"ifaddrs.h" ; then
2389 ##########################################
2392 if test "$vte" != "no"; then
2393 if test "$gtkabi" = "3.0"; then
2394 vtepackage
="vte-2.90"
2400 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2401 vte_cflags
=`$pkg_config --cflags $vtepackage`
2402 vte_libs
=`$pkg_config --libs $vtepackage`
2403 libs_softmmu
="$vte_libs $libs_softmmu"
2405 elif test "$vte" = "yes"; then
2406 if test "$gtkabi" = "3.0"; then
2407 feature_not_found
"vte" "Install libvte-2.90 devel"
2409 feature_not_found
"vte" "Install libvte devel"
2416 ##########################################
2419 # Look for sdl configuration program (pkg-config or sdl-config). Try
2420 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2422 if test $sdlabi = "2.0"; then
2423 sdl_config
=$sdl2_config
2425 sdlconfigname
=sdl2_config
2428 sdlconfigname
=sdl_config
2431 if test "`basename $sdl_config`" != $sdlconfigname && ! has
${sdl_config}; then
2432 sdl_config
=$sdlconfigname
2435 if $pkg_config $sdlname --exists; then
2436 sdlconfig
="$pkg_config $sdlname"
2437 _sdlversion
=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2438 elif has
${sdl_config}; then
2439 sdlconfig
="$sdl_config"
2440 _sdlversion
=`$sdlconfig --version | sed 's/[^0-9]//g'`
2442 if test "$sdl" = "yes" ; then
2443 feature_not_found
"sdl" "Install SDL devel"
2447 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2448 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2452 if test "$sdl" != "no" ; then
2455 #undef main /* We don't want SDL to override our main() */
2456 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2458 sdl_cflags
=`$sdlconfig --cflags 2> /dev/null`
2459 if test "$static" = "yes" ; then
2460 sdl_libs
=`$sdlconfig --static-libs 2>/dev/null`
2462 sdl_libs
=`$sdlconfig --libs 2> /dev/null`
2464 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2465 if test "$_sdlversion" -lt 121 ; then
2471 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2472 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2473 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2474 sdl_libs
="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2475 sdl_cflags
="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2477 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2483 else # sdl not found
2484 if test "$sdl" = "yes" ; then
2485 feature_not_found
"sdl" "Install SDL devel"
2488 fi # sdl compile test
2491 if test "$sdl" = "yes" ; then
2494 #if defined(SDL_VIDEO_DRIVER_X11)
2495 #include <X11/XKBlib.h>
2497 #error No x11 support
2499 int main(void) { return 0; }
2501 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2502 sdl_cflags
="$sdl_cflags $x11_cflags"
2503 sdl_libs
="$sdl_libs $x11_libs"
2505 libs_softmmu
="$sdl_libs $libs_softmmu"
2508 ##########################################
2509 # RDMA needs OpenFabrics libraries
2510 if test "$rdma" != "no" ; then
2512 #include <rdma/rdma_cma.h>
2513 int main(void) { return 0; }
2515 rdma_libs
="-lrdmacm -libverbs"
2516 if compile_prog
"" "$rdma_libs" ; then
2518 libs_softmmu
="$libs_softmmu $rdma_libs"
2520 if test "$rdma" = "yes" ; then
2522 " OpenFabrics librdmacm/libibverbs not present." \
2524 " (1) Fast: Install infiniband packages from your distro." \
2525 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2526 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2533 ##########################################
2534 # VNC SASL detection
2535 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2537 #include <sasl/sasl.h>
2539 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2541 # Assuming Cyrus-SASL installed in /usr prefix
2543 vnc_sasl_libs
="-lsasl2"
2544 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2546 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2547 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2549 if test "$vnc_sasl" = "yes" ; then
2550 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2556 ##########################################
2557 # VNC JPEG detection
2558 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2561 #include <jpeglib.h>
2562 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2565 vnc_jpeg_libs
="-ljpeg"
2566 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2568 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2569 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2571 if test "$vnc_jpeg" = "yes" ; then
2572 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2578 ##########################################
2580 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2582 //#include <stdio.h>
2586 png_structp png_ptr;
2587 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2588 return png_ptr != 0;
2591 if $pkg_config libpng
--exists; then
2592 vnc_png_cflags
=`$pkg_config libpng --cflags`
2593 vnc_png_libs
=`$pkg_config libpng --libs`
2596 vnc_png_libs
="-lpng"
2598 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2600 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2601 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2603 if test "$vnc_png" = "yes" ; then
2604 feature_not_found
"vnc-png" "Install libpng devel"
2610 ##########################################
2611 # fnmatch() probe, used for ACL routines
2614 #include <fnmatch.h>
2617 fnmatch("foo", "foo", 0);
2621 if compile_prog
"" "" ; then
2625 ##########################################
2626 # uuid_generate() probe, used for vdi block driver
2627 # Note that on some systems (notably MacOSX) no extra library
2628 # need be linked to get the uuid functions.
2629 if test "$uuid" != "no" ; then
2632 #include <uuid/uuid.h>
2636 uuid_generate(my_uuid);
2640 if compile_prog
"" "" ; then
2642 elif compile_prog
"" "$uuid_libs" ; then
2644 libs_softmmu
="$uuid_libs $libs_softmmu"
2645 libs_tools
="$uuid_libs $libs_tools"
2647 if test "$uuid" = "yes" ; then
2648 feature_not_found
"uuid" "Install libuuid devel"
2654 if test "$vhdx" = "yes" ; then
2655 if test "$uuid" = "no" ; then
2656 error_exit
"uuid required for VHDX support"
2658 elif test "$vhdx" != "no" ; then
2659 if test "$uuid" = "yes" ; then
2666 ##########################################
2667 # xfsctl() probe, used for raw-posix
2668 if test "$xfs" != "no" ; then
2670 #include <stddef.h> /* NULL */
2671 #include <xfs/xfs.h>
2674 xfsctl(NULL, 0, 0, NULL);
2678 if compile_prog
"" "" ; then
2681 if test "$xfs" = "yes" ; then
2682 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2688 ##########################################
2689 # vde libraries probe
2690 if test "$vde" != "no" ; then
2691 vde_libs
="-lvdeplug"
2693 #include <libvdeplug.h>
2696 struct vde_open_args a = {0, 0, 0};
2702 if compile_prog
"" "$vde_libs" ; then
2704 libs_softmmu
="$vde_libs $libs_softmmu"
2705 libs_tools
="$vde_libs $libs_tools"
2707 if test "$vde" = "yes" ; then
2708 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2714 ##########################################
2715 # netmap support probe
2716 # Apart from looking for netmap headers, we make sure that the host API version
2717 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2718 # a minor/major version number. Minor new features will be marked with values up
2719 # to 15, and if something happens that requires a change to the backend we will
2720 # move above 15, submit the backend fixes and modify this two bounds.
2721 if test "$netmap" != "no" ; then
2723 #include <inttypes.h>
2725 #include <net/netmap.h>
2726 #include <net/netmap_user.h>
2727 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2730 int main(void) { return 0; }
2732 if compile_prog
"" "" ; then
2735 if test "$netmap" = "yes" ; then
2736 feature_not_found
"netmap"
2742 ##########################################
2743 # libcap-ng library probe
2744 if test "$cap_ng" != "no" ; then
2750 capng_capability_to_name(CAPNG_EFFECTIVE);
2754 if compile_prog
"" "$cap_libs" ; then
2756 libs_tools
="$cap_libs $libs_tools"
2758 if test "$cap_ng" = "yes" ; then
2759 feature_not_found
"cap_ng" "Install libcap-ng devel"
2765 ##########################################
2766 # Sound support libraries probe
2777 int main(void) { $exp }
2779 if compile_prog
"$cfl" "$lib" ; then
2782 error_exit
"$drv check failed" \
2783 "Make sure to have the $drv libs and headers installed."
2787 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2788 for drv
in $audio_drv_list; do
2791 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2792 "return snd_pcm_close((snd_pcm_t *)0);"
2793 libs_softmmu
="-lasound $libs_softmmu"
2797 audio_drv_probe
$drv pulse
/mainloop.h
"-lpulse" \
2798 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2799 libs_softmmu
="-lpulse $libs_softmmu"
2804 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2808 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2813 libs_softmmu
="$oss_lib $libs_softmmu"
2817 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2821 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2822 error_exit
"Unknown driver '$drv' selected" \
2823 "Possible drivers are: $audio_possible_drivers"
2829 ##########################################
2832 if test "$brlapi" != "no" ; then
2833 brlapi_libs
="-lbrlapi"
2837 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2839 if compile_prog
"" "$brlapi_libs" ; then
2841 libs_softmmu
="$brlapi_libs $libs_softmmu"
2843 if test "$brlapi" = "yes" ; then
2844 feature_not_found
"brlapi" "Install brlapi devel"
2850 ##########################################
2852 if test "$curses" != "no" ; then
2853 if test "$mingw32" = "yes" ; then
2854 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
2856 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2862 const char *s = curses_version();
2868 for curses_lib
in $curses_list; do
2870 if compile_prog
"" "$curses_lib" ; then
2872 libs_softmmu
="$curses_lib $libs_softmmu"
2877 if test "$curses_found" = "yes" ; then
2880 if test "$curses" = "yes" ; then
2881 feature_not_found
"curses" "Install ncurses devel"
2887 ##########################################
2889 if test "$curl" != "no" ; then
2890 if $pkg_config libcurl
--exists; then
2891 curlconfig
="$pkg_config libcurl"
2893 curlconfig
=curl-config
2896 #include <curl/curl.h>
2897 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2899 curl_cflags
=`$curlconfig --cflags 2>/dev/null`
2900 curl_libs
=`$curlconfig --libs 2>/dev/null`
2901 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2904 if test "$curl" = "yes" ; then
2905 feature_not_found
"curl" "Install libcurl devel"
2911 ##########################################
2912 # bluez support probe
2913 if test "$bluez" != "no" ; then
2915 #include <bluetooth/bluetooth.h>
2916 int main(void) { return bt_error(0); }
2918 bluez_cflags
=`$pkg_config --cflags bluez 2> /dev/null`
2919 bluez_libs
=`$pkg_config --libs bluez 2> /dev/null`
2920 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2922 libs_softmmu
="$bluez_libs $libs_softmmu"
2924 if test "$bluez" = "yes" ; then
2925 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2931 ##########################################
2932 # glib support probe
2935 glib_modules
=gthread-2.0
2936 if test "$modules" = yes; then
2937 glib_modules
="$glib_modules gmodule-2.0"
2940 for i
in $glib_modules; do
2941 if $pkg_config --atleast-version=$glib_req_ver $i; then
2942 glib_cflags
=`$pkg_config --cflags $i`
2943 glib_libs
=`$pkg_config --libs $i`
2944 CFLAGS
="$glib_cflags $CFLAGS"
2945 LIBS
="$glib_libs $LIBS"
2946 libs_qga
="$glib_libs $libs_qga"
2948 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2952 # Sanity check that the current size_t matches the
2953 # size that glib thinks it should be. This catches
2954 # problems on multi-arch where people try to build
2955 # 32-bit QEMU while pointing at 64-bit glib headers
2960 #define QEMU_BUILD_BUG_ON(x) \
2961 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
2964 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
2969 if ! compile_prog
"-Werror $CFLAGS" "$LIBS" ; then
2970 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
2971 "You probably need to set PKG_CONFIG_LIBDIR"\
2972 "to point to the right pkg-config files for your"\
2976 # g_test_trap_subprocess added in 2.38. Used by some tests.
2978 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
2982 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2985 int main(void) { return 0; }
2987 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
2988 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
2989 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
2990 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
2994 ##########################################
2995 # SHA command probe for modules
2996 if test "$modules" = yes; then
2997 shacmd_probe
="sha1sum sha1 shasum"
2998 for c
in $shacmd_probe; do
3004 if test "$shacmd" = ""; then
3005 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3009 ##########################################
3010 # pixman support probe
3012 if test "$pixman" = ""; then
3013 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3015 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3021 if test "$pixman" = "none"; then
3022 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3023 error_exit
"pixman disabled but system emulation or tools build" \
3024 "enabled. You can turn off pixman only if you also" \
3025 "disable all system emulation targets and the tools" \
3026 "build with '--disable-tools --disable-system'."
3030 elif test "$pixman" = "system"; then
3031 # pixman version has been checked above
3032 pixman_cflags
=`$pkg_config --cflags pixman-1`
3033 pixman_libs
=`$pkg_config --libs pixman-1`
3035 if test ! -d ${source_path}/pixman
/pixman
; then
3036 error_exit
"pixman >= 0.21.8 not present. Your options:" \
3037 " (1) Preferred: Install the pixman devel package (any recent" \
3038 " distro should have packages as Xorg needs pixman too)." \
3039 " (2) Fetch the pixman submodule, using:" \
3040 " git submodule update --init pixman"
3042 mkdir
-p pixman
/pixman
3043 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3044 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3047 ##########################################
3050 if test "$cap" != "no" ; then
3053 #include <sys/capability.h>
3054 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3056 if compile_prog
"" "-lcap" ; then
3063 ##########################################
3065 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3069 #include <pthread.h>
3070 static void *f(void *p) { return NULL; }
3073 pthread_create(&thread, 0, f, 0);
3077 if compile_prog
"" "" ; then
3080 for pthread_lib
in $PTHREADLIBS_LIST; do
3081 if compile_prog
"" "$pthread_lib" ; then
3084 for lib_entry
in $LIBS; do
3085 if test "$lib_entry" = "$pthread_lib"; then
3090 if test "$found" = "no"; then
3091 LIBS
="$pthread_lib $LIBS"
3098 if test "$mingw32" != yes -a "$pthread" = no
; then
3099 error_exit
"pthread check failed" \
3100 "Make sure to have the pthread libs and headers installed."
3103 # check for pthread_setname_np
3104 pthread_setname_np
=no
3106 #include <pthread.h>
3108 static void *f(void *p) { return NULL; }
3112 pthread_create(&thread, 0, f, 0);
3113 pthread_setname_np(thread, "QEMU");
3117 if compile_prog
"" "$pthread_lib" ; then
3118 pthread_setname_np
=yes
3121 ##########################################
3123 if test "$rbd" != "no" ; then
3126 #include <rbd/librbd.h>
3129 rados_create(&cluster, NULL);
3133 rbd_libs
="-lrbd -lrados"
3134 if compile_prog
"" "$rbd_libs" ; then
3137 if test "$rbd" = "yes" ; then
3138 feature_not_found
"rados block device" "Install librbd/ceph devel"
3144 ##########################################
3146 min_libssh2_version
=1.2.8
3147 if test "$libssh2" != "no" ; then
3148 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3149 libssh2_cflags
=`$pkg_config libssh2 --cflags`
3150 libssh2_libs
=`$pkg_config libssh2 --libs`
3153 if test "$libssh2" = "yes" ; then
3154 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3160 ##########################################
3161 # libssh2_sftp_fsync probe
3163 if test "$libssh2" = "yes"; then
3166 #include <libssh2.h>
3167 #include <libssh2_sftp.h>
3169 LIBSSH2_SESSION *session;
3171 LIBSSH2_SFTP_HANDLE *sftp_handle;
3172 session = libssh2_session_init ();
3173 sftp = libssh2_sftp_init (session);
3174 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3175 libssh2_sftp_fsync (sftp_handle);
3179 # libssh2_cflags/libssh2_libs defined in previous test.
3180 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3181 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3185 ##########################################
3188 if test "$linux_aio" != "no" ; then
3191 #include <sys/eventfd.h>
3193 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3195 if compile_prog
"" "-laio" ; then
3198 if test "$linux_aio" = "yes" ; then
3199 feature_not_found
"linux AIO" "Install libaio devel"
3205 ##########################################
3206 # TPM passthrough is only on x86 Linux
3208 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3209 tpm_passthrough
=$tpm
3214 ##########################################
3217 if test "$attr" != "no" ; then
3220 #include <sys/types.h>
3221 #ifdef CONFIG_LIBATTR
3222 #include <attr/xattr.h>
3224 #include <sys/xattr.h>
3226 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3228 if compile_prog
"" "" ; then
3230 # Older distros have <attr/xattr.h>, and need -lattr:
3231 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3236 if test "$attr" = "yes" ; then
3237 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3243 ##########################################
3246 #include <sys/types.h>
3247 #include <sys/uio.h>
3249 int main(void) { return sizeof(struct iovec); }
3252 if compile_prog
"" "" ; then
3256 ##########################################
3259 #include <sys/types.h>
3260 #include <sys/uio.h>
3262 int main(void) { return preadv(0, 0, 0, 0); }
3265 if compile_prog
"" "" ; then
3269 ##########################################
3271 # fdt support is mandatory for at least some target architectures,
3272 # so insist on it if we're building those system emulators.
3274 for target
in $target_list; do
3276 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3282 if test "$fdt_required" = "yes"; then
3283 if test "$fdt" = "no"; then
3284 error_exit
"fdt disabled but some requested targets require it." \
3285 "You can turn off fdt only if you also disable all the system emulation" \
3286 "targets which need it (by specifying a cut down --target-list)."
3291 if test "$fdt" != "no" ; then
3293 # explicitly check for libfdt_env.h as it is missing in some stable installs
3294 # and test for required functions to make sure we are on a version >= 1.4.0
3297 #include <libfdt_env.h>
3298 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3300 if compile_prog
"" "$fdt_libs" ; then
3301 # system DTC is good - use it
3303 elif test -d ${source_path}/dtc
/libfdt
; then
3304 # have submodule DTC - use it
3308 if [ "$pwd_is_source_path" != "y" ] ; then
3309 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3310 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3312 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3313 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3314 elif test "$fdt" = "yes" ; then
3315 # have neither and want - prompt for system/submodule install
3316 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3317 " (1) Preferred: Install the DTC (libfdt) devel package" \
3318 " (2) Fetch the DTC submodule, using:" \
3319 " git submodule update --init dtc"
3321 # don't have and don't want
3327 libs_softmmu
="$libs_softmmu $fdt_libs"
3329 ##########################################
3330 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3332 if test "$opengl" != "no" ; then
3333 opengl_pkgs
="epoxy libdrm gbm"
3334 if $pkg_config $opengl_pkgs x11
; then
3335 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3336 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3338 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3342 if test "$opengl" = "yes" ; then
3343 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3351 if test "$opengl" = "yes"; then
3353 #include <epoxy/egl.h>
3354 #ifndef EGL_MESA_image_dma_buf_export
3355 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3357 int main(void) { return 0; }
3359 if compile_prog
"" "" ; then
3364 ##########################################
3366 if test "$archipelago" != "no" ; then
3369 #include <xseg/xseg.h>
3370 #include <xseg/protocol.h>
3376 archipelago_libs
=-lxseg
3377 if compile_prog
"" "$archipelago_libs"; then
3379 libs_tools
="$archipelago_libs $libs_tools"
3380 libs_softmmu
="$archipelago_libs $libs_softmmu"
3382 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3383 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3384 echo "license and therefore prevent redistribution."
3386 echo "To disable Archipelago, use --disable-archipelago"
3388 if test "$archipelago" = "yes" ; then
3389 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3396 ##########################################
3398 if test "$glusterfs" != "no" ; then
3399 if $pkg_config --atleast-version=3 glusterfs-api
; then
3401 glusterfs_cflags
=`$pkg_config --cflags glusterfs-api`
3402 glusterfs_libs
=`$pkg_config --libs glusterfs-api`
3403 if $pkg_config --atleast-version=5 glusterfs-api
; then
3404 glusterfs_discard
="yes"
3406 if $pkg_config --atleast-version=6 glusterfs-api
; then
3407 glusterfs_zerofill
="yes"
3410 if test "$glusterfs" = "yes" ; then
3411 feature_not_found
"GlusterFS backend support" \
3412 "Install glusterfs-api devel >= 3"
3418 # Check for inotify functions when we are building linux-user
3419 # emulator. This is done because older glibc versions don't
3420 # have syscall stubs for these implemented. In that case we
3421 # don't provide them even if kernel supports them.
3425 #include <sys/inotify.h>
3430 /* try to start inotify */
3431 return inotify_init();
3434 if compile_prog
"" "" ; then
3440 #include <sys/inotify.h>
3445 /* try to start inotify */
3446 return inotify_init1(0);
3449 if compile_prog
"" "" ; then
3453 # check if utimensat and futimens are supported
3456 #define _ATFILE_SOURCE
3459 #include <sys/stat.h>
3463 utimensat(AT_FDCWD, "foo", NULL, 0);
3468 if compile_prog
"" "" ; then
3472 # check if pipe2 is there
3481 return pipe2(pipefd, O_CLOEXEC);
3484 if compile_prog
"" "" ; then
3488 # check if accept4 is there
3491 #include <sys/socket.h>
3496 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3500 if compile_prog
"" "" ; then
3504 # check if tee/splice is there. vmsplice was added same time.
3514 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3515 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3519 if compile_prog
"" "" ; then
3523 ##########################################
3526 if test "$numa" != "no" ; then
3529 int main(void) { return numa_available(); }
3532 if compile_prog
"" "-lnuma" ; then
3534 libs_softmmu
="-lnuma $libs_softmmu"
3536 if test "$numa" = "yes" ; then
3537 feature_not_found
"numa" "install numactl devel"
3543 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3544 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3548 ##########################################
3551 if test "$tcmalloc" = "yes" ; then
3554 int main(void) { malloc(1); return 0; }
3557 if compile_prog
"" "-ltcmalloc" ; then
3558 LIBS
="-ltcmalloc $LIBS"
3560 feature_not_found
"tcmalloc" "install gperftools devel"
3564 ##########################################
3567 if test "$jemalloc" = "yes" ; then
3570 int main(void) { malloc(1); return 0; }
3573 if compile_prog
"" "-ljemalloc" ; then
3574 LIBS
="-ljemalloc $LIBS"
3576 feature_not_found
"jemalloc" "install jemalloc devel"
3580 ##########################################
3585 #include <sys/syscall.h>
3587 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3590 if compile_prog
"" "" ; then
3594 # check if eventfd is supported
3597 #include <sys/eventfd.h>
3601 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3604 if compile_prog
"" "" ; then
3608 # check if memfd is supported
3611 #include <sys/memfd.h>
3615 return memfd_create("foo", MFD_ALLOW_SEALING);
3618 if compile_prog
"" "" ; then
3624 # check for fallocate
3631 fallocate(0, 0, 0, 0);
3635 if compile_prog
"" "" ; then
3639 # check for fallocate hole punching
3640 fallocate_punch_hole
=no
3643 #include <linux/falloc.h>
3647 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3651 if compile_prog
"" "" ; then
3652 fallocate_punch_hole
=yes
3655 # check that fallocate supports range zeroing inside the file
3656 fallocate_zero_range
=no
3659 #include <linux/falloc.h>
3663 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3667 if compile_prog
"" "" ; then
3668 fallocate_zero_range
=yes
3671 # check for posix_fallocate
3678 posix_fallocate(0, 0, 0);
3682 if compile_prog
"" "" ; then
3686 # check for sync_file_range
3693 sync_file_range(0, 0, 0, 0);
3697 if compile_prog
"" "" ; then
3701 # check for linux/fiemap.h and FS_IOC_FIEMAP
3704 #include <sys/ioctl.h>
3705 #include <linux/fs.h>
3706 #include <linux/fiemap.h>
3710 ioctl(0, FS_IOC_FIEMAP, 0);
3714 if compile_prog
"" "" ; then
3729 if compile_prog
"" "" ; then
3733 # check for ppoll support
3740 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3741 ppoll(&pfd, 1, 0, 0);
3745 if compile_prog
"" "" ; then
3749 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3750 prctl_pr_set_timerslack
=no
3752 #include <sys/prctl.h>
3756 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3760 if compile_prog
"" "" ; then
3761 prctl_pr_set_timerslack
=yes
3764 # check for epoll support
3767 #include <sys/epoll.h>
3775 if compile_prog
"" "" ; then
3779 # epoll_create1 and epoll_pwait are later additions
3780 # so we must check separately for their presence
3783 #include <sys/epoll.h>
3787 /* Note that we use epoll_create1 as a value, not as
3788 * a function being called. This is necessary so that on
3789 * old SPARC glibc versions where the function was present in
3790 * the library but not declared in the header file we will
3791 * fail the configure check. (Otherwise we will get a compiler
3792 * warning but not an error, and will proceed to fail the
3793 * qemu compile where we compile with -Werror.)
3795 return (int)(uintptr_t)&epoll_create1;
3798 if compile_prog
"" "" ; then
3804 #include <sys/epoll.h>
3808 epoll_pwait(0, 0, 0, 0, 0);
3812 if compile_prog
"" "" ; then
3816 # check for sendfile support
3819 #include <sys/sendfile.h>
3823 return sendfile(0, 0, 0, 0);
3826 if compile_prog
"" "" ; then
3830 # check for timerfd support (glibc 2.8 and newer)
3833 #include <sys/timerfd.h>
3837 return(timerfd_create(CLOCK_REALTIME, 0));
3840 if compile_prog
"" "" ; then
3844 # check for setns and unshare support
3857 if compile_prog
"" "" ; then
3861 # Check if tools are available to build documentation.
3862 if test "$docs" != "no" ; then
3863 if has makeinfo
&& has pod2man
; then
3866 if test "$docs" = "yes" ; then
3867 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3873 # Search for bswap_32 function
3876 #include <byteswap.h>
3877 int main(void) { return bswap_32(0); }
3879 if compile_prog
"" "" ; then
3883 # Search for bswap32 function
3886 #include <sys/endian.h>
3887 #include <sys/types.h>
3888 #include <machine/bswap.h>
3889 int main(void) { return bswap32(0); }
3891 if compile_prog
"" "" ; then
3895 ##########################################
3896 # Do we have libiscsi >= 1.9.0
3897 if test "$libiscsi" != "no" ; then
3898 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3900 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3901 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3903 if test "$libiscsi" = "yes" ; then
3904 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3910 ##########################################
3914 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3916 if compile_prog
"" "" ; then
3918 elif compile_prog
"" "-lm" ; then
3920 libs_qga
="-lm $libs_qga"
3922 error_exit
"libm check failed"
3925 ##########################################
3927 # uClibc provides 2 versions of clock_gettime(), one with realtime
3928 # support and one without. This means that the clock_gettime() don't
3929 # need -lrt. We still need it for timer_create() so we check for this
3930 # function in addition.
3935 timer_create(CLOCK_REALTIME, NULL, NULL);
3936 return clock_gettime(CLOCK_REALTIME, NULL);
3940 if compile_prog
"" "" ; then
3942 # we need pthread for static linking. use previous pthread test result
3943 elif compile_prog
"" "$pthread_lib -lrt" ; then
3945 libs_qga
="$libs_qga -lrt"
3948 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3949 "$aix" != "yes" -a "$haiku" != "yes" ; then
3950 libs_softmmu
="-lutil $libs_softmmu"
3953 ##########################################
3955 if test "$spice" != "no" ; then
3958 int main(void) { spice_server_new(); return 0; }
3960 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3961 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3962 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
3963 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
3964 compile_prog
"$spice_cflags" "$spice_libs" ; then
3966 libs_softmmu
="$libs_softmmu $spice_libs"
3967 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
3968 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
3969 spice_server_version
=$
($pkg_config --modversion spice-server
)
3971 if test "$spice" = "yes" ; then
3972 feature_not_found
"spice" \
3973 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3979 # check for smartcard support
3981 if test "$smartcard" != "no"; then
3982 if $pkg_config libcacard
; then
3983 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
3984 libcacard_libs
=$
($pkg_config --libs libcacard
)
3985 QEMU_CFLAGS
="$QEMU_CFLAGS $libcacard_cflags"
3986 libs_softmmu
="$libs_softmmu $libcacard_libs"
3989 if test "$smartcard" = "yes"; then
3990 feature_not_found
"smartcard" "Install libcacard devel"
3997 if test "$libusb" != "no" ; then
3998 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4000 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4001 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4002 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
4003 libs_softmmu
="$libs_softmmu $libusb_libs"
4005 if test "$libusb" = "yes"; then
4006 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4012 # check for usbredirparser for usb network redirection support
4013 if test "$usb_redir" != "no" ; then
4014 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4016 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4017 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4018 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
4019 libs_softmmu
="$libs_softmmu $usb_redir_libs"
4021 if test "$usb_redir" = "yes"; then
4022 feature_not_found
"usb-redir" "Install usbredir devel"
4028 ##########################################
4029 # check if we have VSS SDK headers for win
4031 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4032 case "$vss_win32_sdk" in
4033 "") vss_win32_include
="-I$source_path" ;;
4034 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4035 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4036 vss_win32_include
="-I$source_path/.sdk/vss"
4037 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4039 *) vss_win32_include
="-I$vss_win32_sdk"
4042 #define __MIDL_user_allocate_free_DEFINED__
4043 #include <inc/win2003/vss.h>
4044 int main(void) { return VSS_CTX_BACKUP; }
4046 if compile_prog
"$vss_win32_include" "" ; then
4047 guest_agent_with_vss
="yes"
4048 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4049 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4050 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4052 if test "$vss_win32_sdk" != "" ; then
4053 echo "ERROR: Please download and install Microsoft VSS SDK:"
4054 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4055 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4056 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4057 echo "ERROR: The headers are extracted in the directory \`inc'."
4058 feature_not_found
"VSS support"
4060 guest_agent_with_vss
="no"
4064 ##########################################
4065 # lookup Windows platform SDK (if not specified)
4066 # The SDK is needed only to build .tlb (type library) file of guest agent
4067 # VSS provider from the source. It is usually unnecessary because the
4068 # pre-compiled .tlb file is included.
4070 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4071 if test -z "$win_sdk"; then
4072 programfiles
="$PROGRAMFILES"
4073 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4074 if test -n "$programfiles"; then
4075 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4077 feature_not_found
"Windows SDK"
4079 elif test "$win_sdk" = "no"; then
4084 ##########################################
4085 # check if mingw environment provides a recent ntddscsi.h
4086 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4088 #include <windows.h>
4089 #include <ntddscsi.h>
4091 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4092 #error Missing required ioctl definitions
4094 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4098 if compile_prog
"" "" ; then
4099 guest_agent_ntddscsi
=yes
4100 libs_qga
="-lsetupapi $libs_qga"
4104 ##########################################
4105 # virgl renderer probe
4107 if test "$virglrenderer" != "no" ; then
4109 #include <virglrenderer.h>
4110 int main(void) { virgl_renderer_poll(); return 0; }
4112 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4113 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4114 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4115 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4118 if test "$virglrenderer" = "yes" ; then
4119 feature_not_found
"virglrenderer"
4125 ##########################################
4126 # check if we have fdatasync
4132 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4133 return fdatasync(0);
4135 #error Not supported
4139 if compile_prog
"" "" ; then
4143 ##########################################
4144 # check if we have madvise
4148 #include <sys/types.h>
4149 #include <sys/mman.h>
4151 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4153 if compile_prog
"" "" ; then
4157 ##########################################
4158 # check if we have posix_madvise
4162 #include <sys/mman.h>
4164 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4166 if compile_prog
"" "" ; then
4170 ##########################################
4171 # check if we have usable SIGEV_THREAD_ID
4178 ev.sigev_notify = SIGEV_THREAD_ID;
4179 ev._sigev_un._tid = 0;
4180 asm volatile("" : : "g"(&ev));
4184 if compile_prog
"" "" ; then
4188 ##########################################
4189 # check if trace backend exists
4191 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4192 if test "$?" -ne 0 ; then
4193 error_exit
"invalid trace backends" \
4194 "Please choose supported trace backends."
4197 ##########################################
4198 # For 'ust' backend, test if ust headers are present
4199 if have_backend
"ust"; then
4201 #include <lttng/tracepoint.h>
4202 int main(void) { return 0; }
4204 if compile_prog
"" "" ; then
4205 if $pkg_config lttng-ust
--exists; then
4206 lttng_ust_libs
=`$pkg_config --libs lttng-ust`
4208 lttng_ust_libs
="-llttng-ust"
4210 if $pkg_config liburcu-bp
--exists; then
4211 urcu_bp_libs
=`$pkg_config --libs liburcu-bp`
4213 urcu_bp_libs
="-lurcu-bp"
4216 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4217 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4219 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4223 ##########################################
4224 # For 'dtrace' backend, test if 'dtrace' command is present
4225 if have_backend
"dtrace"; then
4226 if ! has
'dtrace' ; then
4227 error_exit
"dtrace command is not found in PATH $PATH"
4229 trace_backend_stap
="no"
4230 if has
'stap' ; then
4231 trace_backend_stap
="yes"
4235 ##########################################
4236 # check and set a backend for coroutine
4238 # We prefer ucontext, but it's not always possible. The fallback
4239 # is sigcontext. gthread is not selectable except explicitly, because
4240 # it is not functional enough to run QEMU proper. (It is occasionally
4241 # useful for debugging purposes.) On Windows the only valid backend
4242 # is the Windows-specific one.
4245 if test "$darwin" != "yes"; then
4247 #include <ucontext.h>
4248 #ifdef __stub_makecontext
4249 #error Ignoring glibc stub makecontext which will always fail
4251 int main(void) { makecontext(0, 0, 0); return 0; }
4253 if compile_prog
"" "" ; then
4258 if test "$coroutine" = ""; then
4259 if test "$mingw32" = "yes"; then
4261 elif test "$ucontext_works" = "yes"; then
4264 coroutine
=sigaltstack
4269 if test "$mingw32" != "yes"; then
4270 error_exit
"'windows' coroutine backend only valid for Windows"
4272 # Unfortunately the user visible backend name doesn't match the
4273 # coroutine-*.c filename for this case, so we have to adjust it here.
4277 if test "$ucontext_works" != "yes"; then
4278 feature_not_found
"ucontext"
4281 gthread|sigaltstack
)
4282 if test "$mingw32" = "yes"; then
4283 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4287 error_exit
"unknown coroutine backend $coroutine"
4292 if test "$coroutine_pool" = ""; then
4293 if test "$coroutine" = "gthread"; then
4299 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4300 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4303 ##########################################
4304 # check if we have open_by_handle_at
4306 open_by_handle_at
=no
4309 #if !defined(AT_EMPTY_PATH)
4310 # error missing definition
4312 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4315 if compile_prog
"" "" ; then
4316 open_by_handle_at
=yes
4319 ########################################
4320 # check if we have linux/magic.h
4324 #include <linux/magic.h>
4329 if compile_prog
"" "" ; then
4333 ########################################
4334 # check whether we can disable warning option with a pragma (this is needed
4335 # to silence warnings in the headers of some versions of external libraries).
4336 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4339 # If we can't selectively disable warning in the code, disable -Werror so that
4340 # the build doesn't fail anyway.
4342 pragma_disable_unused_but_set
=no
4344 #pragma GCC diagnostic push
4345 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4346 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4347 #pragma GCC diagnostic pop
4353 if compile_prog
"-Werror" "" ; then
4354 pragma_diagnostic_available
=yes
4359 ########################################
4360 # check if we have valgrind/valgrind.h
4364 #include <valgrind/valgrind.h>
4369 if compile_prog
"" "" ; then
4373 ########################################
4374 # check if environ is declared
4384 if compile_prog
"" "" ; then
4388 ########################################
4389 # check if cpuid.h is usable.
4395 unsigned a, b, c, d;
4396 int max = __get_cpuid_max(0, 0);
4399 __cpuid(1, a, b, c, d);
4403 __cpuid_count(7, 0, a, b, c, d);
4409 if compile_prog
"" "" ; then
4413 ########################################
4414 # check if __[u]int128_t is usable.
4418 #if defined(__clang_major__) && defined(__clang_minor__)
4419 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4420 # error __int128_t does not work in CLANG before 3.2
4432 if compile_prog
"" "" ; then
4436 ########################################
4437 # check if getauxval is available.
4441 #include <sys/auxv.h>
4443 return getauxval(AT_HWCAP) == 0;
4446 if compile_prog
"" "" ; then
4450 ########################################
4451 # check if ccache is interfering with
4452 # semantic analysis of macros
4457 static const int Z = 1;
4458 #define fn() ({ Z; })
4459 #define TAUT(X) ((X) == Z)
4460 #define PAREN(X, Y) (X == Y)
4462 int main(int argc, char *argv[])
4468 if (PAREN(x, y)) return 0;
4469 if (TAUT(Z)) return 0;
4474 if ! compile_object
"-Werror"; then
4478 #################################################
4479 # clang does not support glibc + FORTIFY_SOURCE.
4481 if test "$fortify_source" != "no"; then
4482 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4483 fortify_source
="no";
4484 elif test -n "$cxx" &&
4485 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4486 fortify_source
="no";
4488 fortify_source
="yes"
4492 ##########################################
4494 # After here, no more $cc or $ld runs
4496 if test "$gcov" = "yes" ; then
4497 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4498 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4499 elif test "$fortify_source" = "yes" ; then
4500 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4501 elif test "$debug" = "no"; then
4502 CFLAGS
="-O2 $CFLAGS"
4505 ##########################################
4507 if test "$libnfs" != "no" ; then
4508 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4510 libnfs_libs
=$
($pkg_config --libs libnfs
)
4511 LIBS
="$LIBS $libnfs_libs"
4513 if test "$libnfs" = "yes" ; then
4514 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4520 # Disable zero malloc errors for official releases unless explicitly told to
4522 if test -z "$zero_malloc" ; then
4523 if test "$z_version" = "50" ; then
4530 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4531 if test "$werror" = "yes"; then
4532 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4535 if test "$solaris" = "no" ; then
4536 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4537 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4541 # test if pod2man has --utf8 option
4542 if pod2man
--help |
grep -q utf8
; then
4543 POD2MAN
="pod2man --utf8"
4548 # Use ASLR, no-SEH and DEP if available
4549 if test "$mingw32" = "yes" ; then
4550 for flag
in --dynamicbase --no-seh --nxcompat; do
4551 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4552 LDFLAGS
="-Wl,$flag $LDFLAGS"
4557 qemu_confdir
=$sysconfdir$confsuffix
4558 qemu_moddir
=$libdir$confsuffix
4559 qemu_datadir
=$datadir$confsuffix
4560 qemu_localedir
="$datadir/locale"
4563 if test "$want_tools" = "yes" ; then
4564 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4565 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4566 tools
="qemu-nbd\$(EXESUF) $tools"
4567 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4570 if test "$softmmu" = yes ; then
4571 if test "$virtfs" != no
; then
4572 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4574 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4576 if test "$virtfs" = yes; then
4577 error_exit
"VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4584 # Probe for guest agent support/options
4586 if [ "$guest_agent" != "no" ]; then
4587 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4588 tools
="qemu-ga $tools"
4590 elif [ "$guest_agent" != yes ]; then
4593 error_exit
"Guest agent is not supported on this platform"
4597 # Guest agent Window MSI package
4599 if test "$guest_agent" != yes; then
4600 if test "$guest_agent_msi" = yes; then
4601 error_exit
"MSI guest agent package requires guest agent enabled"
4604 elif test "$mingw32" != "yes"; then
4605 if test "$guest_agent_msi" = "yes"; then
4606 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
4609 elif ! has wixl
; then
4610 if test "$guest_agent_msi" = "yes"; then
4611 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4615 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4616 # disabled explicitly
4617 if test "$guest_agent_msi" != "no"; then
4622 if test "$guest_agent_msi" = "yes"; then
4623 if test "$guest_agent_with_vss" = "yes"; then
4624 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
4627 if test "$QEMU_GA_MANUFACTURER" = ""; then
4628 QEMU_GA_MANUFACTURER
=QEMU
4631 if test "$QEMU_GA_DISTRO" = ""; then
4632 QEMU_GA_DISTRO
=Linux
4635 if test "$QEMU_GA_VERSION" = ""; then
4636 QEMU_GA_VERSION
=`cat $source_path/VERSION`
4639 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4643 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
4646 QEMU_GA_MSI_ARCH
="-D Arch=32"
4649 error_exit
"CPU $cpu not supported for building installation package"
4654 # Mac OS X ships with a broken assembler
4656 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4657 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4658 "$softmmu" = yes ; then
4661 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4662 roms
="$roms spapr-rtas"
4665 if test "$cpu" = "s390x" ; then
4666 roms
="$roms s390-ccw"
4669 # Probe for the need for relocating the user-only binary.
4670 if test "$pie" = "no" ; then
4673 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4674 # ??? Rationale for choosing this address
4675 textseg_addr
=0x60000000
4678 # A 256M aligned address, high in the address space, with enough
4679 # room for the code_gen_buffer above it before the stack.
4680 textseg_addr
=0x60000000
4683 if [ -n "$textseg_addr" ]; then
4685 int main(void) { return 0; }
4687 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4688 if ! compile_prog
"" "$textseg_ldflags"; then
4689 # In case ld does not support -Ttext-segment, edit the default linker
4690 # script via sed to set the .text start addr. This is needed on FreeBSD
4692 $ld --verbose |
sed \
4693 -e '1,/==================================================/d' \
4694 -e '/==================================================/,$d' \
4695 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4696 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4697 textseg_ldflags
="-Wl,-T../config-host.ld"
4702 # prepend pixman and ftd flags after all config tests are done
4703 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4704 libs_softmmu
="$pixman_libs $libs_softmmu"
4706 echo "Install prefix $prefix"
4707 echo "BIOS directory `eval echo $qemu_datadir`"
4708 echo "binary directory `eval echo $bindir`"
4709 echo "library directory `eval echo $libdir`"
4710 echo "module directory `eval echo $qemu_moddir`"
4711 echo "libexec directory `eval echo $libexecdir`"
4712 echo "include directory `eval echo $includedir`"
4713 echo "config directory `eval echo $sysconfdir`"
4714 if test "$mingw32" = "no" ; then
4715 echo "local state directory `eval echo $local_statedir`"
4716 echo "Manual directory `eval echo $mandir`"
4717 echo "ELF interp prefix $interp_prefix"
4719 echo "local state directory queried at runtime"
4720 echo "Windows SDK $win_sdk"
4722 echo "Source path $source_path"
4723 echo "C compiler $cc"
4724 echo "Host C compiler $host_cc"
4725 echo "C++ compiler $cxx"
4726 echo "Objective-C compiler $objcc"
4727 echo "ARFLAGS $ARFLAGS"
4728 echo "CFLAGS $CFLAGS"
4729 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4730 echo "LDFLAGS $LDFLAGS"
4732 echo "install $install"
4733 echo "python $python"
4734 if test "$slirp" = "yes" ; then
4737 echo "module support $modules"
4738 echo "host CPU $cpu"
4739 echo "host big endian $bigendian"
4740 echo "target list $target_list"
4741 echo "tcg debug enabled $debug_tcg"
4742 echo "gprof enabled $gprof"
4743 echo "sparse enabled $sparse"
4744 echo "strip binaries $strip_opt"
4745 echo "profiler $profiler"
4746 echo "static build $static"
4747 if test "$darwin" = "yes" ; then
4748 echo "Cocoa support $cocoa"
4750 echo "pixman $pixman"
4751 echo "SDL support $sdl"
4752 echo "GTK support $gtk"
4753 echo "GTK GL support $gtk_gl"
4754 echo "GNUTLS support $gnutls"
4755 echo "GNUTLS hash $gnutls_hash"
4756 echo "GNUTLS rnd $gnutls_rnd"
4757 echo "libgcrypt $gcrypt"
4758 echo "libgcrypt kdf $gcrypt_kdf"
4759 if test "$nettle" = "yes"; then
4760 echo "nettle $nettle ($nettle_version)"
4762 echo "nettle $nettle"
4764 echo "nettle kdf $nettle_kdf"
4765 echo "libtasn1 $tasn1"
4766 echo "VTE support $vte"
4767 echo "curses support $curses"
4768 echo "virgl support $virglrenderer"
4769 echo "curl support $curl"
4770 echo "mingw32 support $mingw32"
4771 echo "Audio drivers $audio_drv_list"
4772 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4773 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4774 echo "VirtFS support $virtfs"
4775 echo "VNC support $vnc"
4776 if test "$vnc" = "yes" ; then
4777 echo "VNC SASL support $vnc_sasl"
4778 echo "VNC JPEG support $vnc_jpeg"
4779 echo "VNC PNG support $vnc_png"
4781 if test -n "$sparc_cpu"; then
4782 echo "Target Sparc Arch $sparc_cpu"
4784 echo "xen support $xen"
4785 if test "$xen" = "yes" ; then
4786 echo "xen ctrl version $xen_ctrl_version"
4787 echo "pv dom build $xen_pv_domain_build"
4789 echo "brlapi support $brlapi"
4790 echo "bluez support $bluez"
4791 echo "Documentation $docs"
4793 echo "vde support $vde"
4794 echo "netmap support $netmap"
4795 echo "Linux AIO support $linux_aio"
4796 echo "ATTR/XATTR support $attr"
4797 echo "Install blobs $blobs"
4798 echo "KVM support $kvm"
4799 echo "RDMA support $rdma"
4800 echo "TCG interpreter $tcg_interpreter"
4801 echo "fdt support $fdt"
4802 echo "preadv support $preadv"
4803 echo "fdatasync $fdatasync"
4804 echo "madvise $madvise"
4805 echo "posix_madvise $posix_madvise"
4806 echo "sigev_thread_id $sigev_thread_id"
4807 echo "uuid support $uuid"
4808 echo "libcap-ng support $cap_ng"
4809 echo "vhost-net support $vhost_net"
4810 echo "vhost-scsi support $vhost_scsi"
4811 echo "Trace backends $trace_backends"
4812 if have_backend
"simple"; then
4813 echo "Trace output file $trace_file-<pid>"
4815 if test "$spice" = "yes"; then
4816 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4818 echo "spice support $spice"
4820 echo "rbd support $rbd"
4821 echo "xfsctl support $xfs"
4822 echo "smartcard support $smartcard"
4823 echo "libusb $libusb"
4824 echo "usb net redir $usb_redir"
4825 echo "OpenGL support $opengl"
4826 echo "OpenGL dmabufs $opengl_dmabuf"
4827 echo "libiscsi support $libiscsi"
4828 echo "libnfs support $libnfs"
4829 echo "build guest agent $guest_agent"
4830 echo "QGA VSS support $guest_agent_with_vss"
4831 echo "QGA w32 disk info $guest_agent_ntddscsi"
4832 echo "QGA MSI support $guest_agent_msi"
4833 echo "seccomp support $seccomp"
4834 echo "coroutine backend $coroutine"
4835 echo "coroutine pool $coroutine_pool"
4836 echo "GlusterFS support $glusterfs"
4837 echo "Archipelago support $archipelago"
4838 echo "gcov $gcov_tool"
4839 echo "gcov enabled $gcov"
4840 echo "TPM support $tpm"
4841 echo "libssh2 support $libssh2"
4842 echo "TPM passthrough $tpm_passthrough"
4843 echo "QOM debugging $qom_cast_debug"
4845 echo "lzo support $lzo"
4846 echo "snappy support $snappy"
4847 echo "bzip2 support $bzip2"
4848 echo "NUMA host support $numa"
4849 echo "tcmalloc support $tcmalloc"
4850 echo "jemalloc support $jemalloc"
4851 echo "avx2 optimization $avx2_opt"
4853 if test "$sdl_too_old" = "yes"; then
4854 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4857 config_host_mak
="config-host.mak"
4859 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4861 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4862 echo >> $config_host_mak
4864 echo all
: >> $config_host_mak
4865 echo "prefix=$prefix" >> $config_host_mak
4866 echo "bindir=$bindir" >> $config_host_mak
4867 echo "libdir=$libdir" >> $config_host_mak
4868 echo "libexecdir=$libexecdir" >> $config_host_mak
4869 echo "includedir=$includedir" >> $config_host_mak
4870 echo "mandir=$mandir" >> $config_host_mak
4871 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4872 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4873 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4874 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4875 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4876 if test "$mingw32" = "no" ; then
4877 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4879 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4880 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4881 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4882 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4883 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4885 echo "ARCH=$ARCH" >> $config_host_mak
4887 if test "$debug_tcg" = "yes" ; then
4888 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4890 if test "$strip_opt" = "yes" ; then
4891 echo "STRIP=${strip}" >> $config_host_mak
4893 if test "$bigendian" = "yes" ; then
4894 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4896 if test "$mingw32" = "yes" ; then
4897 echo "CONFIG_WIN32=y" >> $config_host_mak
4898 rc_version
=`cat $source_path/VERSION`
4899 version_major
=${rc_version%%.*}
4900 rc_version
=${rc_version#*.}
4901 version_minor
=${rc_version%%.*}
4902 rc_version
=${rc_version#*.}
4903 version_subminor
=${rc_version%%.*}
4905 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4906 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4907 if test "$guest_agent_with_vss" = "yes" ; then
4908 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4909 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
4910 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4912 if test "$guest_agent_ntddscsi" = "yes" ; then
4913 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4915 if test "$guest_agent_msi" = "yes"; then
4916 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4917 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4918 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4919 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4920 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4921 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4922 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4925 echo "CONFIG_POSIX=y" >> $config_host_mak
4928 if test "$linux" = "yes" ; then
4929 echo "CONFIG_LINUX=y" >> $config_host_mak
4932 if test "$darwin" = "yes" ; then
4933 echo "CONFIG_DARWIN=y" >> $config_host_mak
4936 if test "$aix" = "yes" ; then
4937 echo "CONFIG_AIX=y" >> $config_host_mak
4940 if test "$solaris" = "yes" ; then
4941 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4942 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4943 if test "$needs_libsunmath" = "yes" ; then
4944 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4947 if test "$haiku" = "yes" ; then
4948 echo "CONFIG_HAIKU=y" >> $config_host_mak
4950 if test "$static" = "yes" ; then
4951 echo "CONFIG_STATIC=y" >> $config_host_mak
4953 if test "$profiler" = "yes" ; then
4954 echo "CONFIG_PROFILER=y" >> $config_host_mak
4956 if test "$slirp" = "yes" ; then
4957 echo "CONFIG_SLIRP=y" >> $config_host_mak
4958 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4960 if test "$vde" = "yes" ; then
4961 echo "CONFIG_VDE=y" >> $config_host_mak
4963 if test "$netmap" = "yes" ; then
4964 echo "CONFIG_NETMAP=y" >> $config_host_mak
4966 if test "$l2tpv3" = "yes" ; then
4967 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4969 if test "$cap_ng" = "yes" ; then
4970 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4972 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4973 for drv
in $audio_drv_list; do
4974 def
=CONFIG_
`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4975 echo "$def=y" >> $config_host_mak
4977 if test "$audio_pt_int" = "yes" ; then
4978 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4980 if test "$audio_win_int" = "yes" ; then
4981 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4983 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4984 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4985 if test "$vnc" = "yes" ; then
4986 echo "CONFIG_VNC=y" >> $config_host_mak
4988 if test "$vnc_sasl" = "yes" ; then
4989 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4991 if test "$vnc_jpeg" = "yes" ; then
4992 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4994 if test "$vnc_png" = "yes" ; then
4995 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4997 if test "$fnmatch" = "yes" ; then
4998 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5000 if test "$uuid" = "yes" ; then
5001 echo "CONFIG_UUID=y" >> $config_host_mak
5003 if test "$xfs" = "yes" ; then
5004 echo "CONFIG_XFS=y" >> $config_host_mak
5006 qemu_version
=`head $source_path/VERSION`
5007 echo "VERSION=$qemu_version" >>$config_host_mak
5008 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5009 echo "SRC_PATH=$source_path" >> $config_host_mak
5010 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5011 if [ "$docs" = "yes" ] ; then
5012 echo "BUILD_DOCS=yes" >> $config_host_mak
5014 if test "$modules" = "yes"; then
5015 # $shacmd can generate a hash started with digit, which the compiler doesn't
5016 # like as an symbol. So prefix it with an underscore
5017 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
5018 echo "CONFIG_MODULES=y" >> $config_host_mak
5020 if test "$sdl" = "yes" ; then
5021 echo "CONFIG_SDL=y" >> $config_host_mak
5022 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5023 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5025 if test "$cocoa" = "yes" ; then
5026 echo "CONFIG_COCOA=y" >> $config_host_mak
5028 if test "$curses" = "yes" ; then
5029 echo "CONFIG_CURSES=y" >> $config_host_mak
5031 if test "$utimens" = "yes" ; then
5032 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
5034 if test "$pipe2" = "yes" ; then
5035 echo "CONFIG_PIPE2=y" >> $config_host_mak
5037 if test "$accept4" = "yes" ; then
5038 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5040 if test "$splice" = "yes" ; then
5041 echo "CONFIG_SPLICE=y" >> $config_host_mak
5043 if test "$eventfd" = "yes" ; then
5044 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5046 if test "$memfd" = "yes" ; then
5047 echo "CONFIG_MEMFD=y" >> $config_host_mak
5049 if test "$fallocate" = "yes" ; then
5050 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5052 if test "$fallocate_punch_hole" = "yes" ; then
5053 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5055 if test "$fallocate_zero_range" = "yes" ; then
5056 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5058 if test "$posix_fallocate" = "yes" ; then
5059 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5061 if test "$sync_file_range" = "yes" ; then
5062 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5064 if test "$fiemap" = "yes" ; then
5065 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5067 if test "$dup3" = "yes" ; then
5068 echo "CONFIG_DUP3=y" >> $config_host_mak
5070 if test "$ppoll" = "yes" ; then
5071 echo "CONFIG_PPOLL=y" >> $config_host_mak
5073 if test "$prctl_pr_set_timerslack" = "yes" ; then
5074 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5076 if test "$epoll" = "yes" ; then
5077 echo "CONFIG_EPOLL=y" >> $config_host_mak
5079 if test "$epoll_create1" = "yes" ; then
5080 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5082 if test "$epoll_pwait" = "yes" ; then
5083 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5085 if test "$sendfile" = "yes" ; then
5086 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5088 if test "$timerfd" = "yes" ; then
5089 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5091 if test "$setns" = "yes" ; then
5092 echo "CONFIG_SETNS=y" >> $config_host_mak
5094 if test "$inotify" = "yes" ; then
5095 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5097 if test "$inotify1" = "yes" ; then
5098 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5100 if test "$byteswap_h" = "yes" ; then
5101 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5103 if test "$bswap_h" = "yes" ; then
5104 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5106 if test "$curl" = "yes" ; then
5107 echo "CONFIG_CURL=m" >> $config_host_mak
5108 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5109 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5111 if test "$brlapi" = "yes" ; then
5112 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5114 if test "$bluez" = "yes" ; then
5115 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5116 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5118 if test "$glib_subprocess" = "yes" ; then
5119 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5121 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
5122 if test "$gtk" = "yes" ; then
5123 echo "CONFIG_GTK=y" >> $config_host_mak
5124 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5125 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5126 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5127 if test "$gtk_gl" = "yes" ; then
5128 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5131 if test "$gnutls" = "yes" ; then
5132 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5134 if test "$gnutls_hash" = "yes" ; then
5135 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5137 if test "$gnutls_rnd" = "yes" ; then
5138 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5140 if test "$gcrypt" = "yes" ; then
5141 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5142 if test "$gcrypt_kdf" = "yes" ; then
5143 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5146 if test "$nettle" = "yes" ; then
5147 echo "CONFIG_NETTLE=y" >> $config_host_mak
5148 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5149 if test "$nettle_kdf" = "yes" ; then
5150 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5153 if test "$tasn1" = "yes" ; then
5154 echo "CONFIG_TASN1=y" >> $config_host_mak
5156 if test "$have_ifaddrs_h" = "yes" ; then
5157 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5159 if test "$vte" = "yes" ; then
5160 echo "CONFIG_VTE=y" >> $config_host_mak
5161 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5163 if test "$virglrenderer" = "yes" ; then
5164 echo "CONFIG_VIRGL=y" >> $config_host_mak
5165 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5166 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5168 if test "$xen" = "yes" ; then
5169 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5170 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5171 if test "$xen_pv_domain_build" = "yes" ; then
5172 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5175 if test "$linux_aio" = "yes" ; then
5176 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5178 if test "$attr" = "yes" ; then
5179 echo "CONFIG_ATTR=y" >> $config_host_mak
5181 if test "$libattr" = "yes" ; then
5182 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5184 if test "$virtfs" = "yes" ; then
5185 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5187 if test "$vhost_scsi" = "yes" ; then
5188 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5190 if test "$vhost_net" = "yes" ; then
5191 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5193 if test "$blobs" = "yes" ; then
5194 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5196 if test "$iovec" = "yes" ; then
5197 echo "CONFIG_IOVEC=y" >> $config_host_mak
5199 if test "$preadv" = "yes" ; then
5200 echo "CONFIG_PREADV=y" >> $config_host_mak
5202 if test "$fdt" = "yes" ; then
5203 echo "CONFIG_FDT=y" >> $config_host_mak
5205 if test "$signalfd" = "yes" ; then
5206 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5208 if test "$tcg_interpreter" = "yes" ; then
5209 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5211 if test "$fdatasync" = "yes" ; then
5212 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5214 if test "$madvise" = "yes" ; then
5215 echo "CONFIG_MADVISE=y" >> $config_host_mak
5217 if test "$posix_madvise" = "yes" ; then
5218 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5220 if test "$sigev_thread_id" = "yes" ; then
5221 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5224 if test "$spice" = "yes" ; then
5225 echo "CONFIG_SPICE=y" >> $config_host_mak
5228 if test "$smartcard" = "yes" ; then
5229 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5232 if test "$libusb" = "yes" ; then
5233 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5236 if test "$usb_redir" = "yes" ; then
5237 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5240 if test "$opengl" = "yes" ; then
5241 echo "CONFIG_OPENGL=y" >> $config_host_mak
5242 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5243 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5244 if test "$opengl_dmabuf" = "yes" ; then
5245 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5249 if test "$avx2_opt" = "yes" ; then
5250 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5253 if test "$lzo" = "yes" ; then
5254 echo "CONFIG_LZO=y" >> $config_host_mak
5257 if test "$snappy" = "yes" ; then
5258 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5261 if test "$bzip2" = "yes" ; then
5262 echo "CONFIG_BZIP2=y" >> $config_host_mak
5263 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5266 if test "$libiscsi" = "yes" ; then
5267 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5268 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5269 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5272 if test "$libnfs" = "yes" ; then
5273 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5276 if test "$seccomp" = "yes"; then
5277 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5280 # XXX: suppress that
5281 if [ "$bsd" = "yes" ] ; then
5282 echo "CONFIG_BSD=y" >> $config_host_mak
5285 if test "$zero_malloc" = "yes" ; then
5286 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5288 if test "$localtime_r" = "yes" ; then
5289 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5291 if test "$qom_cast_debug" = "yes" ; then
5292 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5294 if test "$rbd" = "yes" ; then
5295 echo "CONFIG_RBD=m" >> $config_host_mak
5296 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5297 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5300 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5301 if test "$coroutine_pool" = "yes" ; then
5302 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5304 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5307 if test "$open_by_handle_at" = "yes" ; then
5308 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5311 if test "$linux_magic_h" = "yes" ; then
5312 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5315 if test "$pragma_diagnostic_available" = "yes" ; then
5316 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5319 if test "$valgrind_h" = "yes" ; then
5320 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5323 if test "$has_environ" = "yes" ; then
5324 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5327 if test "$cpuid_h" = "yes" ; then
5328 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5331 if test "$int128" = "yes" ; then
5332 echo "CONFIG_INT128=y" >> $config_host_mak
5335 if test "$getauxval" = "yes" ; then
5336 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5339 if test "$glusterfs" = "yes" ; then
5340 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5341 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5342 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5345 if test "$glusterfs_discard" = "yes" ; then
5346 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5349 if test "$glusterfs_zerofill" = "yes" ; then
5350 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5353 if test "$archipelago" = "yes" ; then
5354 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5355 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5358 if test "$libssh2" = "yes" ; then
5359 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5360 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5361 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5364 if test "$vhdx" = "yes" ; then
5365 echo "CONFIG_VHDX=y" >> $config_host_mak
5369 if test "$libusb" = "yes"; then
5370 echo "HOST_USB=libusb legacy" >> $config_host_mak
5372 echo "HOST_USB=stub" >> $config_host_mak
5375 # TPM passthrough support?
5376 if test "$tpm" = "yes"; then
5377 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5378 if test "$tpm_passthrough" = "yes"; then
5379 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5383 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5384 if have_backend
"nop"; then
5385 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5387 if have_backend
"simple"; then
5388 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5389 # Set the appropriate trace file.
5390 trace_file
="\"$trace_file-\" FMT_pid"
5392 if have_backend
"log"; then
5393 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
5395 if have_backend
"ust"; then
5396 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5398 if have_backend
"dtrace"; then
5399 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5400 if test "$trace_backend_stap" = "yes" ; then
5401 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5404 if have_backend
"ftrace"; then
5405 if test "$linux" = "yes" ; then
5406 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5408 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5411 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5413 if test "$rdma" = "yes" ; then
5414 echo "CONFIG_RDMA=y" >> $config_host_mak
5417 # Hold two types of flag:
5418 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5419 # a thread we have a handle to
5420 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5422 if test "$pthread_setname_np" = "yes" ; then
5423 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5424 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5427 if test "$tcg_interpreter" = "yes"; then
5428 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5429 elif test "$ARCH" = "sparc64" ; then
5430 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5431 elif test "$ARCH" = "s390x" ; then
5432 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5433 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5434 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5435 elif test "$ARCH" = "ppc64" ; then
5436 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5438 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5440 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5442 echo "TOOLS=$tools" >> $config_host_mak
5443 echo "ROMS=$roms" >> $config_host_mak
5444 echo "MAKE=$make" >> $config_host_mak
5445 echo "INSTALL=$install" >> $config_host_mak
5446 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5447 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5448 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5449 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5450 echo "PYTHON=$python" >> $config_host_mak
5451 echo "CC=$cc" >> $config_host_mak
5452 if $iasl -h > /dev
/null
2>&1; then
5453 echo "IASL=$iasl" >> $config_host_mak
5455 echo "CC_I386=$cc_i386" >> $config_host_mak
5456 echo "HOST_CC=$host_cc" >> $config_host_mak
5457 echo "CXX=$cxx" >> $config_host_mak
5458 echo "OBJCC=$objcc" >> $config_host_mak
5459 echo "AR=$ar" >> $config_host_mak
5460 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5461 echo "AS=$as" >> $config_host_mak
5462 echo "CPP=$cpp" >> $config_host_mak
5463 echo "OBJCOPY=$objcopy" >> $config_host_mak
5464 echo "LD=$ld" >> $config_host_mak
5465 echo "NM=$nm" >> $config_host_mak
5466 echo "WINDRES=$windres" >> $config_host_mak
5467 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5468 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5469 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5470 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5471 if test "$sparse" = "yes" ; then
5472 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5473 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5474 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5475 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5476 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5478 if test "$cross_prefix" != ""; then
5479 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5481 echo "AUTOCONF_HOST := " >> $config_host_mak
5483 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5484 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5485 echo "LIBS+=$LIBS" >> $config_host_mak
5486 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5487 echo "EXESUF=$EXESUF" >> $config_host_mak
5488 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5489 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5490 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5491 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5492 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5493 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5494 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5495 if test "$gcov" = "yes" ; then
5496 echo "CONFIG_GCOV=y" >> $config_host_mak
5497 echo "GCOV=$gcov_tool" >> $config_host_mak
5500 # use included Linux headers
5501 if test "$linux" = "yes" ; then
5502 mkdir
-p linux-headers
5520 # For most CPUs the kernel architecture name and QEMU CPU name match.
5524 # For non-KVM architectures we will not have asm headers
5525 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5526 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5530 for target
in $target_list; do
5531 target_dir
="$target"
5532 config_target_mak
=$target_dir/config-target.mak
5533 target_name
=`echo $target | cut -d '-' -f 1`
5534 target_bigendian
="no"
5536 case "$target_name" in
5537 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5538 target_bigendian
=yes
5542 target_user_only
="no"
5543 target_linux_user
="no"
5544 target_bsd_user
="no"
5546 ${target_name}-softmmu)
5547 target_softmmu
="yes"
5549 ${target_name}-linux-user)
5550 if test "$linux" != "yes" ; then
5551 error_exit
"Target '$target' is only available on a Linux host"
5553 target_user_only
="yes"
5554 target_linux_user
="yes"
5556 ${target_name}-bsd-user)
5557 if test "$bsd" != "yes" ; then
5558 error_exit
"Target '$target' is only available on a BSD host"
5560 target_user_only
="yes"
5561 target_bsd_user
="yes"
5564 error_exit
"Target '$target' not recognised"
5569 mkdir
-p $target_dir
5570 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5573 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5576 TARGET_ARCH
="$target_name"
5580 case "$target_name" in
5584 TARGET_BASE_ARCH
=i386
5591 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5594 TARGET_BASE_ARCH
=arm
5596 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5604 gdb_xml_files
="cf-core.xml cf-fp.xml"
5606 microblaze|microblazeel
)
5607 TARGET_ARCH
=microblaze
5612 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5616 TARGET_BASE_ARCH
=mips
5617 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5618 echo "TARGET_ABI32=y" >> $config_target_mak
5622 TARGET_BASE_ARCH
=mips
5623 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5628 TARGET_ARCH
=openrisc
5629 TARGET_BASE_ARCH
=openrisc
5632 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5635 TARGET_BASE_ARCH
=ppc
5637 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5640 TARGET_BASE_ARCH
=ppc
5642 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5646 TARGET_BASE_ARCH
=ppc
5648 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5652 TARGET_BASE_ARCH
=ppc
5654 echo "TARGET_ABI32=y" >> $config_target_mak
5655 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5664 TARGET_BASE_ARCH
=sparc
5668 TARGET_BASE_ARCH
=sparc
5669 TARGET_ABI_DIR
=sparc
5670 echo "TARGET_ABI32=y" >> $config_target_mak
5673 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
5685 error_exit
"Unsupported target CPU"
5688 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5689 if [ "$TARGET_BASE_ARCH" = "" ]; then
5690 TARGET_BASE_ARCH
=$TARGET_ARCH
5693 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5696 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5699 target_arch_name
="`upper $TARGET_ARCH`"
5700 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5701 echo "TARGET_NAME=$target_name" >> $config_target_mak
5702 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5703 if [ "$TARGET_ABI_DIR" = "" ]; then
5704 TARGET_ABI_DIR
=$TARGET_ARCH
5706 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5707 if [ "$HOST_VARIANT_DIR" != "" ]; then
5708 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5710 case "$target_name" in
5712 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5713 echo "CONFIG_XEN=y" >> $config_target_mak
5714 if test "$xen_pci_passthrough" = yes; then
5715 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5721 case "$target_name" in
5722 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5723 # Make sure the target and host cpus are compatible
5724 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5725 \
( "$target_name" = "$cpu" -o \
5726 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5727 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5728 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5729 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5730 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5731 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5732 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5733 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5734 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5735 echo "CONFIG_KVM=y" >> $config_target_mak
5736 if test "$vhost_net" = "yes" ; then
5737 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5738 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
5742 if test "$target_bigendian" = "yes" ; then
5743 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5745 if test "$target_softmmu" = "yes" ; then
5746 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5748 if test "$target_user_only" = "yes" ; then
5749 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5750 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5752 if test "$target_linux_user" = "yes" ; then
5753 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5756 if test ! -z "$gdb_xml_files" ; then
5757 for x
in $gdb_xml_files; do
5758 list
="$list $source_path/gdb-xml/$x"
5760 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5763 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5764 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5766 if test "$target_bsd_user" = "yes" ; then
5767 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5770 # generate QEMU_CFLAGS/LDFLAGS for targets
5776 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5777 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5780 for i
in $ARCH $TARGET_BASE_ARCH ; do
5783 disas_config
"ALPHA"
5786 if test -n "${cxx}"; then
5787 disas_config
"ARM_A64"
5792 if test -n "${cxx}"; then
5793 disas_config
"ARM_A64"
5815 disas_config
"MICROBLAZE"
5821 disas_config
"MOXIE"
5824 disas_config
"OPENRISC"
5836 disas_config
"SPARC"
5839 disas_config
"XTENSA"
5843 if test "$tcg_interpreter" = "yes" ; then
5849 # Ensure there's only a single GP
5850 cflags
="-msmall-data $cflags"
5854 if test "$gprof" = "yes" ; then
5855 echo "TARGET_GPROF=yes" >> $config_target_mak
5856 if test "$target_linux_user" = "yes" ; then
5858 ldflags
="-p $ldflags"
5860 if test "$target_softmmu" = "yes" ; then
5861 ldflags
="-p $ldflags"
5862 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5866 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5867 ldflags
="$ldflags $textseg_ldflags"
5870 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5871 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5873 done # for target in $targets
5875 if [ "$pixman" = "internal" ]; then
5876 echo "config-host.h: subdir-pixman" >> $config_host_mak
5879 if [ "$dtc_internal" = "yes" ]; then
5880 echo "config-host.h: subdir-dtc" >> $config_host_mak
5883 if test "$numa" = "yes"; then
5884 echo "CONFIG_NUMA=y" >> $config_host_mak
5887 if test "$ccache_cpp2" = "yes"; then
5888 echo "export CCACHE_CPP2=y" >> $config_host_mak
5891 # build tree in object directory in case the source is not in the current directory
5892 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5894 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5895 DIRS
="$DIRS roms/seabios roms/vgabios"
5896 DIRS
="$DIRS qapi-generated"
5897 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
5898 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5899 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5900 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5901 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
5902 FILES
="$FILES pc-bios/s390-ccw/Makefile"
5903 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5904 FILES
="$FILES pc-bios/qemu-icon.bmp"
5906 $source_path/pc-bios
/*.bin \
5907 $source_path/pc-bios
/*.aml \
5908 $source_path/pc-bios
/*.rom \
5909 $source_path/pc-bios
/*.dtb \
5910 $source_path/pc-bios
/*.img \
5911 $source_path/pc-bios
/openbios-
* \
5912 $source_path/pc-bios
/u-boot.
* \
5913 $source_path/pc-bios
/palcode-
*
5915 FILES
="$FILES pc-bios/`basename $bios_file`"
5917 for test_file
in `find $source_path/tests/acpi-test-data -type f`
5919 FILES
="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5922 for f
in $FILES ; do
5923 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5924 symlink
"$source_path/$f" "$f"
5928 # temporary config to build submodules
5929 for rom
in seabios vgabios
; do
5930 config_mak
=roms
/$rom/config.mak
5931 echo "# Automatically generated by configure - do not modify" > $config_mak
5932 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5933 echo "AS=$as" >> $config_mak
5934 echo "CC=$cc" >> $config_mak
5935 echo "BCC=bcc" >> $config_mak
5936 echo "CPP=$cpp" >> $config_mak
5937 echo "OBJCOPY=objcopy" >> $config_mak
5938 echo "IASL=$iasl" >> $config_mak
5939 echo "LD=$ld" >> $config_mak
5942 # set up qemu-iotests in this build directory
5943 iotests_common_env
="tests/qemu-iotests/common.env"
5944 iotests_check
="tests/qemu-iotests/check"
5946 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5947 echo >> "$iotests_common_env"
5948 echo "export PYTHON='$python'" >> "$iotests_common_env"
5950 if [ ! -e "$iotests_check" ]; then
5951 symlink
"$source_path/$iotests_check" "$iotests_check"
5954 # Save the configure command line for later reuse.
5955 cat <<EOD >config.status
5957 # Generated by configure.
5958 # Run this file to recreate the current configuration.
5959 # Compiler output produced by configure, useful for debugging
5960 # configure, is in config.log if it exists.
5962 printf "exec" >>config.status
5963 printf " '%s'" "$0" "$@" >>config.status
5964 echo ' "$@"' >>config.status
5965 chmod +x config.status