3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE
= GREP_OPTIONS
=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Temporary directory used for files created while
12 # configure runs. Since it is in the build directory
13 # we can safely blow away any previous version of it
14 # (and we need not jump through hoops to try to delete
15 # it when configure exits.)
20 echo "ERROR: failed to create temporary directory"
25 TMPC
="${TMPDIR1}/${TMPB}.c"
26 TMPO
="${TMPDIR1}/${TMPB}.o"
27 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
28 TMPL
="${TMPDIR1}/${TMPB}.lo"
29 TMPA
="${TMPDIR1}/lib${TMPB}.la"
30 TMPE
="${TMPDIR1}/${TMPB}.exe"
34 # Print a helpful header at the top of config.log
35 echo "# QEMU configure log $(date)" >> config.log
36 printf "# Configured with:" >> config.log
37 printf " '%s'" "$0" "$@" >> config.log
39 echo "#" >> config.log
44 while test -n "$2"; do
53 # Run the compiler, capturing its output to the log. First argument
54 # is compiler binary to execute.
57 echo $compiler "$@" >> config.log
58 $compiler "$@" >> config.log
2>&1 ||
return $?
59 # Test passed. If this is an --enable-werror build, rerun
60 # the test with -Werror and bail out if it fails. This
61 # makes warning-generating-errors in configure test code
62 # obvious to developers.
63 if test "$werror" != "yes"; then
66 # Don't bother rerunning the compile if we were already using -Werror
72 echo $compiler -Werror "$@" >> config.log
73 $compiler -Werror "$@" >> config.log
2>&1 && return $?
74 error_exit
"configure test passed without -Werror but failed with -Werror." \
75 "This is probably a bug in the configure script. The failing command" \
76 "will be at the bottom of config.log." \
77 "You can run configure with --disable-werror to bypass this check."
81 do_compiler
"$cc" "$@"
85 do_compiler
"$cxx" "$@"
89 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
90 # options which some versions of GCC's C++ compiler complain about
91 # because they only make sense for C programs.
93 for arg
in $QEMU_CFLAGS; do
95 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
96 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
99 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
107 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
113 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
119 # Run the compiler, capturing its output to the log.
120 echo $libtool $mode --tag=CC
$cc "$@" >> config.log
121 $libtool $mode --tag=CC
$cc "$@" >> config.log
2>&1 ||
return $?
122 # Test passed. If this is an --enable-werror build, rerun
123 # the test with -Werror and bail out if it fails. This
124 # makes warning-generating-errors in configure test code
125 # obvious to developers.
126 if test "$werror" != "yes"; then
129 # Don't bother rerunning the compile if we were already using -Werror
135 echo $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
136 $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
2>&1 && return $?
137 error_exit
"configure test passed without -Werror but failed with -Werror." \
138 "This is probably a bug in the configure script. The failing command" \
139 "will be at the bottom of config.log." \
140 "You can run configure with --disable-werror to bypass this check."
144 do_libtool
--mode=compile
$QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC ||
return $?
145 do_libtool
--mode=link
$LDFLAGS -o $TMPA $TMPL -rpath /usr
/local
/lib
148 # symbolically link $1 to $2. Portable version of "ln -sf".
151 mkdir
-p "$(dirname "$2")"
155 # check whether a command is available to this shell (may be either an
156 # executable or a builtin)
158 type "$1" >/dev
/null
2>&1
161 # search for an executable in PATH
167 # pathname has a dir component?
168 if [ "${local_command#*/}" != "$local_command" ]; then
169 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
170 echo "$local_command"
174 if [ -z "$local_command" ]; then
179 for local_dir
in $PATH; do
180 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
181 echo "$local_dir/$local_command"
182 IFS
="${local_ifs:-$(printf ' \t\n')}"
187 IFS
="${local_ifs:-$(printf ' \t\n')}"
192 echo "$trace_backends" |
grep "$1" >/dev
/null
196 source_path
=`dirname "$0"`
199 interp_prefix
="/usr/gnemul/qemu-%M"
203 block_drv_rw_whitelist
=""
204 block_drv_ro_whitelist
=""
210 cc_i386
=i386-pc-linux-gnu-gcc
215 # Don't accept a target_list environment variable.
218 # Default value for a variable defining feature "foo".
219 # * foo="no" feature will only be used if --enable-foo arg is given
220 # * foo="" feature will be searched for, and if found, will be used
221 # unless --disable-foo is given
222 # * foo="yes" this value will only be set by --enable-foo flag.
223 # feature will searched for,
224 # if not found, configure exits with error
226 # Always add --enable-foo and --disable-foo command line args.
227 # Distributions want to ensure that several features are compiled in, and it
228 # is impossible without a --enable-foo that exits if a feature is not found.
252 xen_pci_passthrough
=""
274 LDFLAGS_SHARED
="-shared"
277 mandir
="\${prefix}/share/man"
278 datadir
="\${prefix}/share"
279 qemu_docdir
="\${prefix}/share/doc/qemu"
280 bindir
="\${prefix}/bin"
281 libdir
="\${prefix}/lib"
282 libexecdir
="\${prefix}/libexec"
283 includedir
="\${prefix}/include"
284 sysconfdir
="\${prefix}/etc"
285 local_statedir
="\${prefix}/var"
317 guest_agent_with_vss
="no"
327 glusterfs_discard
="no"
328 glusterfs_zerofill
="no"
340 # parse CC options first
342 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
344 --cross-prefix=*) cross_prefix
="$optarg"
348 --cxx=*) CXX
="$optarg"
350 --source-path=*) source_path
="$optarg"
352 --cpu=*) cpu
="$optarg"
354 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
355 EXTRA_CFLAGS
="$optarg"
357 --extra-ldflags=*) LDFLAGS
="$optarg $LDFLAGS"
358 EXTRA_LDFLAGS
="$optarg"
360 --enable-debug-info) debug_info
="yes"
362 --disable-debug-info) debug_info
="no"
367 # Using uname is really, really broken. Once we have the right set of checks
368 # we can eliminate its usage altogether.
370 # Preferred compiler:
372 # ${cross_prefix}gcc (if cross-prefix specified)
374 if test -z "${CC}${cross_prefix}"; then
377 cc
="${CC-${cross_prefix}gcc}"
380 if test -z "${CXX}${cross_prefix}"; then
383 cxx
="${CXX-${cross_prefix}g++}"
386 ar="${AR-${cross_prefix}ar}"
387 as
="${AS-${cross_prefix}as}"
389 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
390 ld
="${LD-${cross_prefix}ld}"
391 libtool
="${LIBTOOL-${cross_prefix}libtool}"
392 nm
="${NM-${cross_prefix}nm}"
393 strip
="${STRIP-${cross_prefix}strip}"
394 windres
="${WINDRES-${cross_prefix}windres}"
395 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
397 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
399 pkg_config
=query_pkg_config
400 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
401 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
403 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
404 ARFLAGS
="${ARFLAGS-rv}"
406 # default flags for all hosts
407 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
408 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
409 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
410 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
411 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
412 if test "$debug_info" = "yes"; then
414 LDFLAGS
="-g $LDFLAGS"
417 # make source path absolute
418 source_path
=`cd "$source_path"; pwd`
420 # running configure in the source tree?
421 # we know that's the case if configure is there.
422 if test -f "./configure"; then
423 pwd_is_source_path
="y"
425 pwd_is_source_path
="n"
431 #error $1 not defined
433 int main(void) { return 0; }
441 int main(void) { return 0; }
448 int main(void) { return 0; }
452 if check_define __linux__
; then
454 elif check_define _WIN32
; then
456 elif check_define __OpenBSD__
; then
458 elif check_define __sun__
; then
460 elif check_define __HAIKU__
; then
466 # Some host OSes need non-standard checks for which CPU to use.
467 # Note that these checks are broken for cross-compilation: if you're
468 # cross-compiling to one of these OSes then you'll need to specify
469 # the correct CPU with the --cpu option.
472 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
473 # run 64-bit userspace code.
474 # If the user didn't specify a CPU explicitly and the kernel says this is
475 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
476 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
481 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
482 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
487 if test ! -z "$cpu" ; then
488 # command line argument
490 elif check_define __i386__
; then
492 elif check_define __x86_64__
; then
493 if check_define __ILP32__
; then
498 elif check_define __sparc__
; then
499 if check_define __arch64__
; then
504 elif check_define _ARCH_PPC
; then
505 if check_define _ARCH_PPC64
; then
510 elif check_define __mips__
; then
512 elif check_define __ia64__
; then
514 elif check_define __s390__
; then
515 if check_define __s390x__
; then
520 elif check_define __arm__
; then
522 elif check_define __aarch64__
; then
524 elif check_define __hppa__
; then
531 # Normalise host CPU name and set ARCH.
532 # Note that this case should only have supported host CPUs, not guests.
534 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
537 i386|i486|i586|i686|i86pc|BePC
)
556 # This will result in either an error or falling back to TCI later
560 if test -z "$ARCH"; then
566 # host *BSD for user mode
572 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
573 audio_possible_drivers
="sdl"
578 audio_possible_drivers
="dsound sdl"
579 if check_include dsound.h
; then
580 audio_drv_list
="dsound"
588 audio_possible_drivers
="oss sdl pa"
594 audio_possible_drivers
="oss sdl pa"
595 # needed for kinfo_getvmmap(3) in libutil.h
597 netmap
="" # enable netmap autodetect
598 HOST_VARIANT_DIR
="freebsd"
604 audio_possible_drivers
="oss sdl pa"
605 HOST_VARIANT_DIR
="dragonfly"
611 audio_possible_drivers
="oss sdl"
613 HOST_VARIANT_DIR
="netbsd"
619 audio_possible_drivers
="sdl"
620 HOST_VARIANT_DIR
="openbsd"
625 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
626 if [ "$cpu" = "x86_64" ] ; then
627 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
628 LDFLAGS
="-arch x86_64 $LDFLAGS"
631 audio_drv_list
="coreaudio"
632 audio_possible_drivers
="coreaudio sdl"
633 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
634 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
635 # Disable attempts to use ObjectiveC features in os/object.h since they
636 # won't work when we're compiling with gcc as a C compiler.
637 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
638 HOST_VARIANT_DIR
="darwin"
643 install="${INSTALL-ginstall}"
645 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
646 needs_libsunmath
="no"
647 solarisrev
=`uname -r | cut -f2 -d.`
648 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
649 if test "$solarisrev" -le 9 ; then
650 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
651 needs_libsunmath
="yes"
652 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
653 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
654 LIBS
="-lsunmath $LIBS"
656 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
657 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
658 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
659 "Studio 11 can be downloaded from www.sun.com."
663 if test -f /usr
/include
/sys
/soundcard.h
; then
666 audio_possible_drivers
="oss sdl"
667 # needed for CMSG_ macros in sys/socket.h
668 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
669 # needed for TIOCWIN* defines in termios.h
670 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
671 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
672 solarisnetlibs
="-lsocket -lnsl -lresolv"
673 LIBS
="$solarisnetlibs $LIBS"
674 libs_qga
="$solarisnetlibs $libs_qga"
682 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
683 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
687 audio_possible_drivers
="oss alsa sdl pa"
693 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
697 if [ "$bsd" = "yes" ] ; then
698 if [ "$darwin" != "yes" ] ; then
703 : ${make=${MAKE-make}}
704 : ${install=${INSTALL-install}}
705 : ${python=${PYTHON-python}}
706 : ${smbd=${SMBD-/usr/sbin/smbd}}
708 # Default objcc to clang if available, otherwise use CC
715 if test "$mingw32" = "yes" ; then
718 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
719 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
720 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
721 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
723 if compile_prog
"" "-liberty" ; then
724 LIBS
="-liberty $LIBS"
726 prefix
="c:/Program Files/QEMU"
729 qemu_docdir
="\${prefix}"
731 sysconfdir
="\${prefix}"
734 libs_qga
="-lws2_32 -lwinmm -lpowrprof $libs_qga"
740 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
742 --help|
-h) show_help
=yes
744 --version|
-V) exec cat $source_path/VERSION
746 --prefix=*) prefix
="$optarg"
748 --interp-prefix=*) interp_prefix
="$optarg"
756 --host-cc=*) host_cc
="$optarg"
760 --iasl=*) iasl
="$optarg"
762 --objcc=*) objcc
="$optarg"
764 --make=*) make="$optarg"
766 --install=*) install="$optarg"
768 --python=*) python
="$optarg"
770 --gcov=*) gcov_tool
="$optarg"
772 --smbd=*) smbd
="$optarg"
780 --disable-debug-info)
787 --target-list=*) target_list
="$optarg"
789 --enable-trace-backends=*) trace_backends
="$optarg"
791 # XXX: backwards compatibility
792 --enable-trace-backend=*) trace_backends
="$optarg"
794 --with-trace-file=*) trace_file
="$optarg"
796 --enable-gprof) gprof
="yes"
798 --enable-gcov) gcov
="yes"
802 LDFLAGS
="-static $LDFLAGS"
803 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
805 --mandir=*) mandir
="$optarg"
807 --bindir=*) bindir
="$optarg"
809 --libdir=*) libdir
="$optarg"
811 --libexecdir=*) libexecdir
="$optarg"
813 --includedir=*) includedir
="$optarg"
815 --datadir=*) datadir
="$optarg"
817 --with-confsuffix=*) confsuffix
="$optarg"
819 --docdir=*) qemu_docdir
="$optarg"
821 --sysconfdir=*) sysconfdir
="$optarg"
823 --localstatedir=*) local_statedir
="$optarg"
825 --sbindir=*|
--sharedstatedir=*|\
826 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
827 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
828 # These switches are silently ignored, for compatibility with
829 # autoconf-generated configure scripts. This allows QEMU's
830 # configure to be used by RPM and similar macros that set
831 # lots of directory switches by default.
833 --with-system-pixman) pixman
="system"
835 --without-system-pixman) pixman
="internal"
837 --without-pixman) pixman
="none"
839 --disable-sdl) sdl
="no"
841 --enable-sdl) sdl
="yes"
843 --with-sdlabi=*) sdlabi
="$optarg"
845 --disable-qom-cast-debug) qom_cast_debug
="no"
847 --enable-qom-cast-debug) qom_cast_debug
="yes"
849 --disable-virtfs) virtfs
="no"
851 --enable-virtfs) virtfs
="yes"
853 --disable-vnc) vnc
="no"
855 --enable-vnc) vnc
="yes"
857 --oss-lib=*) oss_lib
="$optarg"
859 --audio-drv-list=*) audio_drv_list
="$optarg"
861 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
863 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
865 --enable-debug-tcg) debug_tcg
="yes"
867 --disable-debug-tcg) debug_tcg
="no"
870 # Enable debugging options that aren't excessively noisy
875 --enable-sparse) sparse
="yes"
877 --disable-sparse) sparse
="no"
879 --disable-strip) strip_opt
="no"
881 --disable-vnc-tls) vnc_tls
="no"
883 --enable-vnc-tls) vnc_tls
="yes"
885 --disable-vnc-sasl) vnc_sasl
="no"
887 --enable-vnc-sasl) vnc_sasl
="yes"
889 --disable-vnc-jpeg) vnc_jpeg
="no"
891 --enable-vnc-jpeg) vnc_jpeg
="yes"
893 --disable-vnc-png) vnc_png
="no"
895 --enable-vnc-png) vnc_png
="yes"
897 --disable-vnc-ws) vnc_ws
="no"
899 --enable-vnc-ws) vnc_ws
="yes"
901 --disable-slirp) slirp
="no"
903 --disable-uuid) uuid
="no"
905 --enable-uuid) uuid
="yes"
907 --disable-vde) vde
="no"
909 --enable-vde) vde
="yes"
911 --disable-netmap) netmap
="no"
913 --enable-netmap) netmap
="yes"
915 --disable-xen) xen
="no"
917 --enable-xen) xen
="yes"
919 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
921 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
923 --disable-brlapi) brlapi
="no"
925 --enable-brlapi) brlapi
="yes"
927 --disable-bluez) bluez
="no"
929 --enable-bluez) bluez
="yes"
931 --disable-kvm) kvm
="no"
933 --enable-kvm) kvm
="yes"
935 --disable-tcg-interpreter) tcg_interpreter
="no"
937 --enable-tcg-interpreter) tcg_interpreter
="yes"
939 --disable-cap-ng) cap_ng
="no"
941 --enable-cap-ng) cap_ng
="yes"
943 --disable-spice) spice
="no"
945 --enable-spice) spice
="yes"
947 --disable-libiscsi) libiscsi
="no"
949 --enable-libiscsi) libiscsi
="yes"
951 --disable-libnfs) libnfs
="no"
953 --enable-libnfs) libnfs
="yes"
955 --enable-profiler) profiler
="yes"
957 --disable-cocoa) cocoa
="no"
962 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
964 --disable-system) softmmu
="no"
966 --enable-system) softmmu
="yes"
973 --disable-linux-user) linux_user
="no"
975 --enable-linux-user) linux_user
="yes"
977 --disable-bsd-user) bsd_user
="no"
979 --enable-bsd-user) bsd_user
="yes"
981 --enable-guest-base) guest_base
="yes"
983 --disable-guest-base) guest_base
="no"
985 --enable-pie) pie
="yes"
987 --disable-pie) pie
="no"
989 --enable-werror) werror
="yes"
991 --disable-werror) werror
="no"
993 --enable-stack-protector) stack_protector
="yes"
995 --disable-stack-protector) stack_protector
="no"
997 --disable-curses) curses
="no"
999 --enable-curses) curses
="yes"
1001 --disable-curl) curl
="no"
1003 --enable-curl) curl
="yes"
1005 --disable-fdt) fdt
="no"
1007 --enable-fdt) fdt
="yes"
1009 --disable-linux-aio) linux_aio
="no"
1011 --enable-linux-aio) linux_aio
="yes"
1013 --disable-attr) attr
="no"
1015 --enable-attr) attr
="yes"
1017 --disable-blobs) blobs
="no"
1019 --with-pkgversion=*) pkgversion
=" ($optarg)"
1021 --with-coroutine=*) coroutine
="$optarg"
1023 --disable-coroutine-pool) coroutine_pool
="no"
1025 --enable-coroutine-pool) coroutine_pool
="yes"
1027 --disable-docs) docs
="no"
1029 --enable-docs) docs
="yes"
1031 --disable-vhost-net) vhost_net
="no"
1033 --enable-vhost-net) vhost_net
="yes"
1035 --disable-vhost-scsi) vhost_scsi
="no"
1037 --enable-vhost-scsi) vhost_scsi
="yes"
1039 --disable-opengl) opengl
="no"
1041 --enable-opengl) opengl
="yes"
1043 --disable-rbd) rbd
="no"
1045 --enable-rbd) rbd
="yes"
1047 --disable-xfsctl) xfs
="no"
1049 --enable-xfsctl) xfs
="yes"
1051 --disable-smartcard-nss) smartcard_nss
="no"
1053 --enable-smartcard-nss) smartcard_nss
="yes"
1055 --disable-libusb) libusb
="no"
1057 --enable-libusb) libusb
="yes"
1059 --disable-usb-redir) usb_redir
="no"
1061 --enable-usb-redir) usb_redir
="yes"
1063 --disable-zlib-test) zlib
="no"
1065 --disable-lzo) lzo
="no"
1067 --enable-lzo) lzo
="yes"
1069 --disable-snappy) snappy
="no"
1071 --enable-snappy) snappy
="yes"
1073 --disable-bzip2) bzip2="no"
1075 --enable-bzip2) bzip2="yes"
1077 --enable-guest-agent) guest_agent
="yes"
1079 --disable-guest-agent) guest_agent
="no"
1081 --with-vss-sdk) vss_win32_sdk
=""
1083 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1085 --without-vss-sdk) vss_win32_sdk
="no"
1087 --with-win-sdk) win_sdk
=""
1089 --with-win-sdk=*) win_sdk
="$optarg"
1091 --without-win-sdk) win_sdk
="no"
1093 --enable-tools) want_tools
="yes"
1095 --disable-tools) want_tools
="no"
1097 --enable-seccomp) seccomp
="yes"
1099 --disable-seccomp) seccomp
="no"
1101 --disable-glusterfs) glusterfs
="no"
1103 --enable-glusterfs) glusterfs
="yes"
1105 --disable-archipelago) archipelago
="no"
1107 --enable-archipelago) archipelago
="yes"
1109 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1110 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1112 --disable-gtk) gtk
="no"
1114 --enable-gtk) gtk
="yes"
1116 --enable-rdma) rdma
="yes"
1118 --disable-rdma) rdma
="no"
1120 --with-gtkabi=*) gtkabi
="$optarg"
1122 --disable-vte) vte
="no"
1124 --enable-vte) vte
="yes"
1126 --disable-tpm) tpm
="no"
1128 --enable-tpm) tpm
="yes"
1130 --disable-libssh2) libssh2
="no"
1132 --enable-libssh2) libssh2
="yes"
1134 --enable-vhdx) vhdx
="yes"
1136 --disable-vhdx) vhdx
="no"
1138 --disable-quorum) quorum
="no"
1140 --enable-quorum) quorum
="yes"
1142 --disable-numa) numa
="no"
1144 --enable-numa) numa
="yes"
1146 --disable-tcmalloc) tcmalloc
="no"
1148 --enable-tcmalloc) tcmalloc
="yes"
1151 echo "ERROR: unknown option $opt"
1152 echo "Try '$0 --help' for more information"
1158 if ! has
$python; then
1159 error_exit
"Python not found. Use --python=/path/to/python"
1162 # Note that if the Python conditional here evaluates True we will exit
1163 # with status 1 which is a shell 'false' value.
1164 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1165 error_exit
"Cannot use '$python', Python 2.4 or later is required." \
1166 "Note that Python 3 or later is not yet supported." \
1167 "Use --python=/path/to/python to specify a supported Python."
1170 # The -B switch was added in Python 2.6.
1171 # If it is supplied, compiled files are not written.
1172 # Use it for Python versions which support it.
1173 if $python -B -c 'import sys; sys.exit(0)' 2>/dev
/null
; then
1180 LDFLAGS
="-m32 $LDFLAGS"
1184 LDFLAGS
="-m64 $LDFLAGS"
1187 LDFLAGS
="-m32 $LDFLAGS"
1188 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1191 LDFLAGS
="-m64 $LDFLAGS"
1192 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1196 LDFLAGS
="-m31 $LDFLAGS"
1200 LDFLAGS
="-m64 $LDFLAGS"
1204 LDFLAGS
="-m32 $LDFLAGS"
1205 cc_i386
='$(CC) -m32'
1209 LDFLAGS
="-m64 $LDFLAGS"
1210 cc_i386
='$(CC) -m32'
1214 LDFLAGS
="-mx32 $LDFLAGS"
1215 cc_i386
='$(CC) -m32'
1217 # No special flags required for other host CPUs
1220 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1221 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1223 default_target_list
=""
1227 if [ "$softmmu" = "yes" ]; then
1228 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1230 if [ "$linux_user" = "yes" ]; then
1231 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1233 if [ "$bsd_user" = "yes" ]; then
1234 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1237 for config
in $mak_wilds; do
1238 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1241 if test x
"$show_help" = x
"yes" ; then
1244 Usage: configure [options]
1245 Options: [defaults in brackets after descriptions]
1248 --help print this message
1249 --prefix=PREFIX install in PREFIX [$prefix]
1250 --interp-prefix=PREFIX where to find shared libraries, etc.
1251 use %M for cpu name [$interp_prefix]
1252 --target-list=LIST set target list (default: build everything)
1253 $(echo Available targets: $default_target_list | \
1254 fold -s -w 53 | sed -e 's/^/ /')
1256 Advanced options (experts only):
1257 --source-path=PATH path of source code [$source_path]
1258 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1259 --cc=CC use C compiler CC [$cc]
1260 --iasl=IASL use ACPI compiler IASL [$iasl]
1261 --host-cc=CC use C compiler CC [$host_cc] for code run at
1263 --cxx=CXX use C++ compiler CXX [$cxx]
1264 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1265 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1266 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1267 --make=MAKE use specified make [$make]
1268 --install=INSTALL use specified install [$install]
1269 --python=PYTHON use specified python [$python]
1270 --smbd=SMBD use specified smbd [$smbd]
1271 --static enable static build [$static]
1272 --mandir=PATH install man pages in PATH
1273 --datadir=PATH install firmware in PATH$confsuffix
1274 --docdir=PATH install documentation in PATH$confsuffix
1275 --bindir=PATH install binaries in PATH
1276 --libdir=PATH install libraries in PATH
1277 --sysconfdir=PATH install config in PATH$confsuffix
1278 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1279 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1280 --enable-modules enable modules support
1281 --enable-debug-tcg enable TCG debugging
1282 --disable-debug-tcg disable TCG debugging (default)
1283 --enable-debug-info enable debugging information (default)
1284 --disable-debug-info disable debugging information
1285 --enable-debug enable common debug build options
1286 --enable-sparse enable sparse checker
1287 --disable-sparse disable sparse checker (default)
1288 --disable-strip disable stripping binaries
1289 --disable-werror disable compilation abort on warning
1290 --disable-stack-protector disable compiler-provided stack protection
1291 --disable-sdl disable SDL
1292 --enable-sdl enable SDL
1293 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1294 --disable-gtk disable gtk UI
1295 --enable-gtk enable gtk UI
1296 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1297 --disable-virtfs disable VirtFS
1298 --enable-virtfs enable VirtFS
1299 --disable-vnc disable VNC
1300 --enable-vnc enable VNC
1301 --disable-cocoa disable Cocoa (Mac OS X only)
1302 --enable-cocoa enable Cocoa (default on Mac OS X)
1303 --audio-drv-list=LIST set audio drivers list:
1304 Available drivers: $audio_possible_drivers
1305 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1306 --block-drv-rw-whitelist=L
1307 set block driver read-write whitelist
1308 (affects only QEMU, not qemu-img)
1309 --block-drv-ro-whitelist=L
1310 set block driver read-only whitelist
1311 (affects only QEMU, not qemu-img)
1312 --disable-xen disable xen backend driver support
1313 --enable-xen enable xen backend driver support
1314 --disable-xen-pci-passthrough
1315 --enable-xen-pci-passthrough
1316 --disable-brlapi disable BrlAPI
1317 --enable-brlapi enable BrlAPI
1318 --disable-vnc-tls disable TLS encryption for VNC server
1319 --enable-vnc-tls enable TLS encryption for VNC server
1320 --disable-vnc-sasl disable SASL encryption for VNC server
1321 --enable-vnc-sasl enable SASL encryption for VNC server
1322 --disable-vnc-jpeg disable JPEG lossy compression for VNC server
1323 --enable-vnc-jpeg enable JPEG lossy compression for VNC server
1324 --disable-vnc-png disable PNG compression for VNC server (default)
1325 --enable-vnc-png enable PNG compression for VNC server
1326 --disable-vnc-ws disable Websockets support for VNC server
1327 --enable-vnc-ws enable Websockets support for VNC server
1328 --disable-curses disable curses output
1329 --enable-curses enable curses output
1330 --disable-curl disable curl connectivity
1331 --enable-curl enable curl connectivity
1332 --disable-fdt disable fdt device tree
1333 --enable-fdt enable fdt device tree
1334 --disable-bluez disable bluez stack connectivity
1335 --enable-bluez enable bluez stack connectivity
1336 --disable-slirp disable SLIRP userspace network connectivity
1337 --disable-kvm disable KVM acceleration support
1338 --enable-kvm enable KVM acceleration support
1339 --disable-rdma disable RDMA-based migration support
1340 --enable-rdma enable RDMA-based migration support
1341 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1342 --enable-system enable all system emulation targets
1343 --disable-system disable all system emulation targets
1344 --enable-user enable supported user emulation targets
1345 --disable-user disable all user emulation targets
1346 --enable-linux-user enable all linux usermode emulation targets
1347 --disable-linux-user disable all linux usermode emulation targets
1348 --enable-bsd-user enable all BSD usermode emulation targets
1349 --disable-bsd-user disable all BSD usermode emulation targets
1350 --enable-guest-base enable GUEST_BASE support for usermode
1352 --disable-guest-base disable GUEST_BASE support
1353 --enable-pie build Position Independent Executables
1354 --disable-pie do not build Position Independent Executables
1355 --oss-lib path to OSS library
1356 --cpu=CPU Build for host CPU [$cpu]
1357 --disable-uuid disable uuid support
1358 --enable-uuid enable uuid support
1359 --disable-vde disable support for vde network
1360 --enable-vde enable support for vde network
1361 --disable-netmap disable support for netmap network
1362 --enable-netmap enable support for netmap network
1363 --disable-linux-aio disable Linux AIO support
1364 --enable-linux-aio enable Linux AIO support
1365 --disable-cap-ng disable libcap-ng support
1366 --enable-cap-ng enable libcap-ng support
1367 --disable-attr disable attr and xattr support
1368 --enable-attr enable attr and xattr support
1369 --disable-blobs disable installing provided firmware blobs
1370 --enable-docs enable documentation build
1371 --disable-docs disable documentation build
1372 --disable-vhost-net disable vhost-net acceleration support
1373 --enable-vhost-net enable vhost-net acceleration support
1374 --enable-trace-backends=B Set trace backend
1375 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1376 --with-trace-file=NAME Full PATH,NAME of file to store traces
1378 --disable-spice disable spice
1379 --enable-spice enable spice
1380 --enable-rbd enable building the rados block device (rbd)
1381 --disable-libiscsi disable iscsi support
1382 --enable-libiscsi enable iscsi support
1383 --disable-libnfs disable nfs support
1384 --enable-libnfs enable nfs support
1385 --disable-smartcard-nss disable smartcard nss support
1386 --enable-smartcard-nss enable smartcard nss support
1387 --disable-libusb disable libusb (for usb passthrough)
1388 --enable-libusb enable libusb (for usb passthrough)
1389 --disable-usb-redir disable usb network redirection support
1390 --enable-usb-redir enable usb network redirection support
1391 --enable-lzo enable the support of lzo compression library
1392 --enable-snappy enable the support of snappy compression library
1393 --enable-bzip2 enable the support of bzip2 compression library (for
1394 reading bzip2-compressed dmg images)
1395 --disable-guest-agent disable building of the QEMU Guest Agent
1396 --enable-guest-agent enable building of the QEMU Guest Agent
1397 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1398 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1399 --disable-seccomp disable seccomp support
1400 --enable-seccomp enable seccomp support
1401 --with-coroutine=BACKEND coroutine backend. Supported options:
1402 gthread, ucontext, sigaltstack, windows
1403 --disable-coroutine-pool disable coroutine freelist (worse performance)
1404 --enable-coroutine-pool enable coroutine freelist (better performance)
1405 --enable-glusterfs enable GlusterFS backend
1406 --disable-glusterfs disable GlusterFS backend
1407 --enable-archipelago enable Archipelago backend
1408 --disable-archipelago disable Archipelago backend
1409 --enable-gcov enable test coverage analysis with gcov
1410 --gcov=GCOV use specified gcov [$gcov_tool]
1411 --disable-tpm disable TPM support
1412 --enable-tpm enable TPM support
1413 --disable-libssh2 disable ssh block device support
1414 --enable-libssh2 enable ssh block device support
1415 --disable-vhdx disable support for the Microsoft VHDX image format
1416 --enable-vhdx enable support for the Microsoft VHDX image format
1417 --disable-quorum disable quorum block filter support
1418 --enable-quorum enable quorum block filter support
1419 --disable-numa disable libnuma support
1420 --enable-numa enable libnuma support
1421 --disable-tcmalloc disable tcmalloc support
1422 --enable-tcmalloc enable tcmalloc support
1424 NOTE: The object files are built at the place where configure is launched
1429 # Now we have handled --enable-tcg-interpreter and know we're not just
1430 # printing the help message, bail out if the host CPU isn't supported.
1431 if test "$ARCH" = "unknown"; then
1432 if test "$tcg_interpreter" = "yes" ; then
1433 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1436 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1440 # Consult white-list to determine whether to enable werror
1441 # by default. Only enable by default for git builds
1442 z_version
=`cut -f3 -d. $source_path/VERSION`
1444 if test -z "$werror" ; then
1445 if test -d "$source_path/.git" -a \
1446 "$linux" = "yes" ; then
1453 # check that the C compiler works.
1455 if compile_object
; then
1456 : C compiler works ok
1458 error_exit
"\"$cc\" either does not exist or does not work"
1461 # Check that the C++ compiler exists and works with the C compiler
1464 int c_function(void);
1465 int main(void) { return c_function(); }
1472 int c_function(void);
1474 int c_function(void) { return 42; }
1479 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1480 # C++ compiler $cxx works ok with C compiler $cc
1483 echo "C++ compiler $cxx does not work with C compiler $cc"
1484 echo "Disabling C++ specific optional code"
1488 echo "No C++ compiler available; disabling C++ specific optional code"
1492 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1493 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1494 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1495 gcc_flags
="-Wendif-labels $gcc_flags"
1496 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1497 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1498 # Note that we do not add -Werror to gcc_flags here, because that would
1499 # enable it for all configure tests. If a configure test failed due
1500 # to -Werror this would just silently disable some features,
1501 # so it's too error prone.
1503 cc_has_warning_flag
() {
1506 # Use the positive sense of the flag when testing for -Wno-wombat
1507 # support (gcc will happily accept the -Wno- form of unknown
1509 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1510 compile_prog
"-Werror $optflag" ""
1513 for flag
in $gcc_flags; do
1514 if cc_has_warning_flag
$flag ; then
1515 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1519 if test "$stack_protector" != "no"; then
1520 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1522 for flag
in $gcc_flags; do
1523 # We need to check both a compile and a link, since some compiler
1524 # setups fail only on a .c->.o compile and some only at link time
1525 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1526 compile_prog
"-Werror $flag" ""; then
1527 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1528 LIBTOOLFLAGS
="$LIBTOOLFLAGS -Wc,$flag"
1533 if test "$stack_protector" = yes; then
1534 if test $sp_on = 0; then
1535 error_exit
"Stack protector not supported"
1540 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1541 # large functions that use global variables. The bug is in all releases of
1542 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1543 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1545 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1546 int main(void) { return 0; }
1548 #error No bug in this compiler.
1551 if compile_prog
"-Werror -fno-gcse" "" ; then
1552 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1555 if test "$static" = "yes" ; then
1556 if test "$modules" = "yes" ; then
1557 error_exit
"static and modules are mutually incompatible"
1559 if test "$pie" = "yes" ; then
1560 error_exit
"static and pie are mutually incompatible"
1566 # Unconditional check for compiler __thread support
1568 static __thread int tls_var;
1569 int main(void) { return tls_var; }
1572 if ! compile_prog
"-Werror" "" ; then
1573 error_exit
"Your compiler does not support the __thread specifier for " \
1574 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1577 if test "$pie" = ""; then
1578 case "$cpu-$targetos" in
1579 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1587 if test "$pie" != "no" ; then
1591 # define THREAD __thread
1596 static THREAD int tls_var;
1598 int main(void) { return tls_var; }
1601 if compile_prog
"-fPIE -DPIE" "-pie"; then
1602 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1603 LDFLAGS
="-pie $LDFLAGS"
1605 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1606 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1609 if test "$pie" = "yes"; then
1610 error_exit
"PIE not available due to missing toolchain support"
1612 echo "Disabling PIE due to missing toolchain support"
1617 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1618 CFLAGS_NOPIE
="-fno-pie"
1619 LDFLAGS_NOPIE
="-nopie"
1623 # check for broken gcc and libtool in RHEL5
1624 if test -n "$libtool" -a "$pie" != "no" ; then
1627 void *f(unsigned char *buf, int len);
1628 void *g(unsigned char *buf, int len);
1631 f(unsigned char *buf, int len)
1637 g(unsigned char *buf, int len)
1643 if ! libtool_prog
; then
1644 echo "Disabling libtool due to broken toolchain support"
1649 ##########################################
1650 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1651 # use i686 as default anyway, but for those that don't, an explicit
1652 # specification is necessary
1654 if test "$cpu" = "i386"; then
1656 static int sfaa(int *ptr)
1658 return __sync_fetch_and_and(ptr, 0);
1664 val = __sync_val_compare_and_swap(&val, 0, 1);
1669 if ! compile_prog
"" "" ; then
1670 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1674 #########################################
1675 # Solaris specific configure tool chain decisions
1677 if test "$solaris" = "yes" ; then
1678 if has
$install; then
1681 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1682 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1683 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1685 if test "`path_of $install`" = "/usr/sbin/install" ; then
1686 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1687 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1688 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1693 if test -f /usr
/ccs
/bin
/ar ; then
1694 error_exit
"No path includes ar" \
1695 "Add /usr/ccs/bin to your path and rerun configure"
1697 error_exit
"No path includes ar"
1701 if test -z "${target_list+xxx}" ; then
1702 target_list
="$default_target_list"
1704 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
1707 # Check that we recognised the target name; this allows a more
1708 # friendly error message than if we let it fall through.
1709 for target
in $target_list; do
1710 case " $default_target_list " in
1714 error_exit
"Unknown target name '$target'"
1719 # see if system emulation was really requested
1720 case " $target_list " in
1721 *"-softmmu "*) softmmu
=yes
1727 feature_not_found
() {
1731 error_exit
"User requested feature $feature" \
1732 "configure was not able to find it." \
1737 # big/little endian test
1739 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1740 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1741 extern int foo(short *, short *);
1742 int main(int argc, char *argv[]) {
1743 return foo(big_endian, little_endian);
1747 if compile_object
; then
1748 if grep -q BiGeNdIaN
$TMPO ; then
1750 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1753 echo big
/little
test failed
1756 echo big
/little
test failed
1759 ##########################################
1763 #include <sys/socket.h>
1764 #include <linux/ip.h>
1765 int main(void) { return sizeof(struct mmsghdr); }
1767 if compile_prog
"" "" ; then
1773 ##########################################
1776 if ! has
"$pkg_config_exe"; then
1777 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1780 ##########################################
1783 if test "$linux_user" = "yes"; then
1786 #include <linux/futex.h>
1788 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1794 if ! compile_object
; then
1795 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1799 ##########################################
1802 if test "$zlib" != "no" ; then
1805 int main(void) { zlibVersion(); return 0; }
1807 if compile_prog
"" "-lz" ; then
1810 error_exit
"zlib check failed" \
1811 "Make sure to have the zlib libs and headers installed."
1816 ##########################################
1819 if test "$lzo" != "no" ; then
1821 #include <lzo/lzo1x.h>
1822 int main(void) { lzo_version(); return 0; }
1824 if compile_prog
"" "-llzo2" ; then
1825 libs_softmmu
="$libs_softmmu -llzo2"
1828 if test "$lzo" = "yes"; then
1829 feature_not_found
"liblzo2" "Install liblzo2 devel"
1835 ##########################################
1838 if test "$snappy" != "no" ; then
1840 #include <snappy-c.h>
1841 int main(void) { snappy_max_compressed_length(4096); return 0; }
1843 if compile_prog
"" "-lsnappy" ; then
1844 libs_softmmu
="$libs_softmmu -lsnappy"
1847 if test "$snappy" = "yes"; then
1848 feature_not_found
"libsnappy" "Install libsnappy devel"
1854 ##########################################
1857 if test "$bzip2" != "no" ; then
1860 int main(void) { BZ2_bzlibVersion(); return 0; }
1862 if compile_prog
"" "-lbz2" ; then
1865 if test "$bzip2" = "yes"; then
1866 feature_not_found
"libbzip2" "Install libbzip2 devel"
1872 ##########################################
1875 if test "$seccomp" != "no" ; then
1876 if test "$cpu" = "i386" ||
test "$cpu" = "x86_64" &&
1877 $pkg_config --atleast-version=2.1.1 libseccomp
; then
1878 libs_softmmu
="$libs_softmmu `$pkg_config --libs libseccomp`"
1879 QEMU_CFLAGS
="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1882 if test "$seccomp" = "yes"; then
1883 feature_not_found
"libseccomp" "Install libseccomp devel >= 2.1.1"
1888 ##########################################
1891 if test "$xen" != "no" ; then
1892 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1894 # First we test whether Xen headers and libraries are available.
1895 # If no, we are done and there is no Xen support.
1896 # If yes, more tests are run to detect the Xen version.
1900 #include <xenctrl.h>
1905 if ! compile_prog
"" "$xen_libs" ; then
1907 if test "$xen" = "yes" ; then
1908 feature_not_found
"xen" "Install xen devel"
1914 cat > $TMPC <<EOF &&
1915 #include <xenctrl.h>
1916 #include <xenstore.h>
1918 #include <xen/hvm/hvm_info_table.h>
1919 #if !defined(HVM_MAX_VCPUS)
1920 # error HVM_MAX_VCPUS not defined
1925 xc = xc_interface_open(0, 0, 0);
1926 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1927 xc_gnttab_open(NULL, 0);
1928 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1929 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1930 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1934 compile_prog
"" "$xen_libs"
1936 xen_ctrl_version
=450
1940 cat > $TMPC <<EOF &&
1941 #include <xenctrl.h>
1942 #include <xenstore.h>
1944 #include <xen/hvm/hvm_info_table.h>
1945 #if !defined(HVM_MAX_VCPUS)
1946 # error HVM_MAX_VCPUS not defined
1951 xc = xc_interface_open(0, 0, 0);
1952 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1953 xc_gnttab_open(NULL, 0);
1954 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1955 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1959 compile_prog
"" "$xen_libs"
1961 xen_ctrl_version
=420
1965 cat > $TMPC <<EOF &&
1966 #include <xenctrl.h>
1969 #include <xen/hvm/hvm_info_table.h>
1970 #if !defined(HVM_MAX_VCPUS)
1971 # error HVM_MAX_VCPUS not defined
1975 xc_interface_open(0, 0, 0);
1976 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1977 xc_gnttab_open(NULL, 0);
1978 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1982 compile_prog
"" "$xen_libs"
1984 xen_ctrl_version
=410
1989 cat > $TMPC <<EOF &&
1990 #include <xenctrl.h>
1993 #include <xen/hvm/hvm_info_table.h>
1994 #if !defined(HVM_MAX_VCPUS)
1995 # error HVM_MAX_VCPUS not defined
1998 struct xen_add_to_physmap xatp = {
1999 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2002 xc_interface_open();
2004 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2005 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2009 compile_prog
"" "$xen_libs"
2011 xen_ctrl_version
=400
2016 cat > $TMPC <<EOF &&
2017 #include <xenctrl.h>
2020 struct xen_add_to_physmap xatp = {
2021 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2024 xc_interface_open();
2026 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2027 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2031 compile_prog
"" "$xen_libs"
2033 xen_ctrl_version
=340
2038 cat > $TMPC <<EOF &&
2039 #include <xenctrl.h>
2043 xc_interface_open();
2045 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2049 compile_prog
"" "$xen_libs"
2051 xen_ctrl_version
=330
2054 # Xen version unsupported
2056 if test "$xen" = "yes" ; then
2057 feature_not_found
"xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2062 if test "$xen" = yes; then
2063 libs_softmmu
="$xen_libs $libs_softmmu"
2067 if test "$xen_pci_passthrough" != "no"; then
2068 if test "$xen" = "yes" && test "$linux" = "yes" &&
2069 test "$xen_ctrl_version" -ge 340; then
2070 xen_pci_passthrough
=yes
2072 if test "$xen_pci_passthrough" = "yes"; then
2073 if test "$xen_ctrl_version" -lt 340; then
2074 error_exit
"User requested feature Xen PCI Passthrough" \
2075 "This feature does not work with Xen 3.3"
2077 error_exit
"User requested feature Xen PCI Passthrough" \
2078 " but this feature requires /sys from Linux"
2080 xen_pci_passthrough
=no
2084 ##########################################
2087 if ! has
$libtool; then
2091 # MacOSX ships with a libtool which isn't the GNU one; weed this
2092 # out by checking whether libtool supports the --version switch
2093 if test -n "$libtool"; then
2094 if ! "$libtool" --version >/dev
/null
2>&1; then
2099 ##########################################
2101 if test "$sparse" != "no" ; then
2105 if test "$sparse" = "yes" ; then
2106 feature_not_found
"sparse" "Install sparse binary"
2112 ##########################################
2116 if $pkg_config --exists "x11"; then
2117 x11_cflags
=`$pkg_config --cflags x11`
2118 x11_libs
=`$pkg_config --libs x11`
2121 ##########################################
2124 if test "$gtkabi" = ""; then
2125 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2126 # Use 3.0 as a fallback if that is available.
2127 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2129 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2136 if test "$gtk" != "no"; then
2137 gtkpackage
="gtk+-$gtkabi"
2138 gtkx11package
="gtk+-x11-$gtkabi"
2139 if test "$gtkabi" = "3.0" ; then
2144 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2145 gtk_cflags
=`$pkg_config --cflags $gtkpackage`
2146 gtk_libs
=`$pkg_config --libs $gtkpackage`
2147 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2148 gtk_cflags
="$gtk_cflags $x11_cflags"
2149 gtk_libs
="$gtk_libs $x11_libs"
2151 libs_softmmu
="$gtk_libs $libs_softmmu"
2153 elif test "$gtk" = "yes"; then
2154 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2160 ##########################################
2163 if test "$vte" != "no"; then
2164 if test "$gtkabi" = "3.0"; then
2165 vtepackage
="vte-2.90"
2171 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2172 vte_cflags
=`$pkg_config --cflags $vtepackage`
2173 vte_libs
=`$pkg_config --libs $vtepackage`
2174 libs_softmmu
="$vte_libs $libs_softmmu"
2176 elif test "$vte" = "yes"; then
2177 if test "$gtkabi" = "3.0"; then
2178 feature_not_found
"vte" "Install libvte-2.90 devel"
2180 feature_not_found
"vte" "Install libvte devel"
2187 ##########################################
2190 # Look for sdl configuration program (pkg-config or sdl-config). Try
2191 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2193 if test $sdlabi = "2.0"; then
2194 sdl_config
=$sdl2_config
2196 sdlconfigname
=sdl2_config
2199 sdlconfigname
=sdl_config
2202 if test "`basename $sdl_config`" != $sdlconfigname && ! has
${sdl_config}; then
2203 sdl_config
=$sdlconfigname
2206 if $pkg_config $sdlname --exists; then
2207 sdlconfig
="$pkg_config $sdlname"
2208 _sdlversion
=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2209 elif has
${sdl_config}; then
2210 sdlconfig
="$sdl_config"
2211 _sdlversion
=`$sdlconfig --version | sed 's/[^0-9]//g'`
2213 if test "$sdl" = "yes" ; then
2214 feature_not_found
"sdl" "Install SDL devel"
2218 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2219 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2223 if test "$sdl" != "no" ; then
2226 #undef main /* We don't want SDL to override our main() */
2227 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2229 sdl_cflags
=`$sdlconfig --cflags 2> /dev/null`
2230 if test "$static" = "yes" ; then
2231 sdl_libs
=`$sdlconfig --static-libs 2>/dev/null`
2233 sdl_libs
=`$sdlconfig --libs 2> /dev/null`
2235 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2236 if test "$_sdlversion" -lt 121 ; then
2239 if test "$cocoa" = "no" ; then
2244 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2245 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2246 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2247 sdl_libs
="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2248 sdl_cflags
="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2250 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2256 else # sdl not found
2257 if test "$sdl" = "yes" ; then
2258 feature_not_found
"sdl" "Install SDL devel"
2261 fi # sdl compile test
2264 if test "$sdl" = "yes" ; then
2267 #if defined(SDL_VIDEO_DRIVER_X11)
2268 #include <X11/XKBlib.h>
2270 #error No x11 support
2272 int main(void) { return 0; }
2274 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2275 sdl_cflags
="$sdl_cflags $x11_cflags"
2276 sdl_libs
="$sdl_libs $x11_libs"
2278 libs_softmmu
="$sdl_libs $libs_softmmu"
2281 ##########################################
2282 # RDMA needs OpenFabrics libraries
2283 if test "$rdma" != "no" ; then
2285 #include <rdma/rdma_cma.h>
2286 int main(void) { return 0; }
2288 rdma_libs
="-lrdmacm -libverbs"
2289 if compile_prog
"" "$rdma_libs" ; then
2291 libs_softmmu
="$libs_softmmu $rdma_libs"
2293 if test "$rdma" = "yes" ; then
2295 " OpenFabrics librdmacm/libibverbs not present." \
2297 " (1) Fast: Install infiniband packages from your distro." \
2298 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2299 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2305 ##########################################
2306 # VNC TLS/WS detection
2307 if test "$vnc" = "yes" -a \
( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \
) ; then
2309 #include <gnutls/gnutls.h>
2310 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2312 vnc_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2313 vnc_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2314 if compile_prog
"$vnc_tls_cflags" "$vnc_tls_libs" ; then
2315 if test "$vnc_tls" != "no" ; then
2318 if test "$vnc_ws" != "no" ; then
2321 libs_softmmu
="$vnc_tls_libs $libs_softmmu"
2322 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_tls_cflags"
2324 if test "$vnc_tls" = "yes" ; then
2325 feature_not_found
"vnc-tls" "Install gnutls devel"
2327 if test "$vnc_ws" = "yes" ; then
2328 feature_not_found
"vnc-ws" "Install gnutls devel"
2335 ##########################################
2336 # Quorum probe (check for gnutls)
2337 if test "$quorum" != "no" ; then
2339 #include <gnutls/gnutls.h>
2340 #include <gnutls/crypto.h>
2341 int main(void) {char data[4096], digest[32];
2342 gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest);
2346 quorum_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2347 quorum_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2348 if compile_prog
"$quorum_tls_cflags" "$quorum_tls_libs" ; then
2350 libs_softmmu
="$quorum_tls_libs $libs_softmmu"
2351 libs_tools
="$quorum_tls_libs $libs_softmmu"
2352 QEMU_CFLAGS
="$QEMU_CFLAGS $quorum_tls_cflags"
2355 if test "$quorum" = "yes"; then
2356 feature_not_found
"gnutls" "gnutls > 2.10.0 required to compile Quorum"
2362 ##########################################
2363 # VNC SASL detection
2364 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2366 #include <sasl/sasl.h>
2368 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2370 # Assuming Cyrus-SASL installed in /usr prefix
2372 vnc_sasl_libs
="-lsasl2"
2373 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2375 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2376 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2378 if test "$vnc_sasl" = "yes" ; then
2379 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2385 ##########################################
2386 # VNC JPEG detection
2387 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2390 #include <jpeglib.h>
2391 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2394 vnc_jpeg_libs
="-ljpeg"
2395 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2397 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2398 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2400 if test "$vnc_jpeg" = "yes" ; then
2401 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2407 ##########################################
2409 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2411 //#include <stdio.h>
2415 png_structp png_ptr;
2416 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2417 return png_ptr != 0;
2420 if $pkg_config libpng
--exists; then
2421 vnc_png_cflags
=`$pkg_config libpng --cflags`
2422 vnc_png_libs
=`$pkg_config libpng --libs`
2425 vnc_png_libs
="-lpng"
2427 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2429 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2430 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2432 if test "$vnc_png" = "yes" ; then
2433 feature_not_found
"vnc-png" "Install libpng devel"
2439 ##########################################
2440 # fnmatch() probe, used for ACL routines
2443 #include <fnmatch.h>
2446 fnmatch("foo", "foo", 0);
2450 if compile_prog
"" "" ; then
2454 ##########################################
2455 # uuid_generate() probe, used for vdi block driver
2456 # Note that on some systems (notably MacOSX) no extra library
2457 # need be linked to get the uuid functions.
2458 if test "$uuid" != "no" ; then
2461 #include <uuid/uuid.h>
2465 uuid_generate(my_uuid);
2469 if compile_prog
"" "" ; then
2471 elif compile_prog
"" "$uuid_libs" ; then
2473 libs_softmmu
="$uuid_libs $libs_softmmu"
2474 libs_tools
="$uuid_libs $libs_tools"
2476 if test "$uuid" = "yes" ; then
2477 feature_not_found
"uuid" "Install libuuid devel"
2483 if test "$vhdx" = "yes" ; then
2484 if test "$uuid" = "no" ; then
2485 error_exit
"uuid required for VHDX support"
2487 elif test "$vhdx" != "no" ; then
2488 if test "$uuid" = "yes" ; then
2495 ##########################################
2496 # xfsctl() probe, used for raw-posix
2497 if test "$xfs" != "no" ; then
2499 #include <stddef.h> /* NULL */
2500 #include <xfs/xfs.h>
2503 xfsctl(NULL, 0, 0, NULL);
2507 if compile_prog
"" "" ; then
2510 if test "$xfs" = "yes" ; then
2511 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2517 ##########################################
2518 # vde libraries probe
2519 if test "$vde" != "no" ; then
2520 vde_libs
="-lvdeplug"
2522 #include <libvdeplug.h>
2525 struct vde_open_args a = {0, 0, 0};
2531 if compile_prog
"" "$vde_libs" ; then
2533 libs_softmmu
="$vde_libs $libs_softmmu"
2534 libs_tools
="$vde_libs $libs_tools"
2536 if test "$vde" = "yes" ; then
2537 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2543 ##########################################
2544 # netmap support probe
2545 # Apart from looking for netmap headers, we make sure that the host API version
2546 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2547 # a minor/major version number. Minor new features will be marked with values up
2548 # to 15, and if something happens that requires a change to the backend we will
2549 # move above 15, submit the backend fixes and modify this two bounds.
2550 if test "$netmap" != "no" ; then
2552 #include <inttypes.h>
2554 #include <net/netmap.h>
2555 #include <net/netmap_user.h>
2556 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2559 int main(void) { return 0; }
2561 if compile_prog
"" "" ; then
2564 if test "$netmap" = "yes" ; then
2565 feature_not_found
"netmap"
2571 ##########################################
2572 # libcap-ng library probe
2573 if test "$cap_ng" != "no" ; then
2579 capng_capability_to_name(CAPNG_EFFECTIVE);
2583 if compile_prog
"" "$cap_libs" ; then
2585 libs_tools
="$cap_libs $libs_tools"
2587 if test "$cap_ng" = "yes" ; then
2588 feature_not_found
"cap_ng" "Install libcap-ng devel"
2594 ##########################################
2595 # Sound support libraries probe
2606 int main(void) { $exp }
2608 if compile_prog
"$cfl" "$lib" ; then
2611 error_exit
"$drv check failed" \
2612 "Make sure to have the $drv libs and headers installed."
2616 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2617 for drv
in $audio_drv_list; do
2620 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2621 "return snd_pcm_close((snd_pcm_t *)0);"
2622 libs_softmmu
="-lasound $libs_softmmu"
2626 audio_drv_probe
$drv pulse
/mainloop.h
"-lpulse" \
2627 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2628 libs_softmmu
="-lpulse $libs_softmmu"
2633 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2637 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2642 libs_softmmu
="$oss_lib $libs_softmmu"
2646 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2650 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2651 error_exit
"Unknown driver '$drv' selected" \
2652 "Possible drivers are: $audio_possible_drivers"
2658 ##########################################
2661 if test "$brlapi" != "no" ; then
2662 brlapi_libs
="-lbrlapi"
2666 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2668 if compile_prog
"" "$brlapi_libs" ; then
2670 libs_softmmu
="$brlapi_libs $libs_softmmu"
2672 if test "$brlapi" = "yes" ; then
2673 feature_not_found
"brlapi" "Install brlapi devel"
2679 ##########################################
2681 if test "$curses" != "no" ; then
2682 if test "$mingw32" = "yes" ; then
2683 curses_list
="-lpdcurses"
2685 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2691 const char *s = curses_version();
2697 for curses_lib
in $curses_list; do
2699 if compile_prog
"" "$curses_lib" ; then
2701 libs_softmmu
="$curses_lib $libs_softmmu"
2706 if test "$curses_found" = "yes" ; then
2709 if test "$curses" = "yes" ; then
2710 feature_not_found
"curses" "Install ncurses devel"
2716 ##########################################
2718 if test "$curl" != "no" ; then
2719 if $pkg_config libcurl
--exists; then
2720 curlconfig
="$pkg_config libcurl"
2722 curlconfig
=curl-config
2725 #include <curl/curl.h>
2726 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2728 curl_cflags
=`$curlconfig --cflags 2>/dev/null`
2729 curl_libs
=`$curlconfig --libs 2>/dev/null`
2730 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2733 if test "$curl" = "yes" ; then
2734 feature_not_found
"curl" "Install libcurl devel"
2740 ##########################################
2741 # bluez support probe
2742 if test "$bluez" != "no" ; then
2744 #include <bluetooth/bluetooth.h>
2745 int main(void) { return bt_error(0); }
2747 bluez_cflags
=`$pkg_config --cflags bluez 2> /dev/null`
2748 bluez_libs
=`$pkg_config --libs bluez 2> /dev/null`
2749 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2751 libs_softmmu
="$bluez_libs $libs_softmmu"
2753 if test "$bluez" = "yes" ; then
2754 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2760 ##########################################
2761 # glib support probe
2764 glib_modules
=gthread-2.0
2765 if test "$modules" = yes; then
2766 glib_modules
="$glib_modules gmodule-2.0"
2769 for i
in $glib_modules; do
2770 if $pkg_config --atleast-version=$glib_req_ver $i; then
2771 glib_cflags
=`$pkg_config --cflags $i`
2772 glib_libs
=`$pkg_config --libs $i`
2773 CFLAGS
="$glib_cflags $CFLAGS"
2774 LIBS
="$glib_libs $LIBS"
2775 libs_qga
="$glib_libs $libs_qga"
2777 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2781 # g_test_trap_subprocess added in 2.38. Used by some tests.
2783 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
2787 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2790 int main(void) { return 0; }
2792 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
2793 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
2794 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
2795 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
2799 ##########################################
2800 # SHA command probe for modules
2801 if test "$modules" = yes; then
2802 shacmd_probe
="sha1sum sha1 shasum"
2803 for c
in $shacmd_probe; do
2809 if test "$shacmd" = ""; then
2810 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
2814 ##########################################
2815 # pixman support probe
2817 if test "$pixman" = ""; then
2818 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2820 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
2826 if test "$pixman" = "none"; then
2827 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2828 error_exit
"pixman disabled but system emulation or tools build" \
2829 "enabled. You can turn off pixman only if you also" \
2830 "disable all system emulation targets and the tools" \
2831 "build with '--disable-tools --disable-system'."
2835 elif test "$pixman" = "system"; then
2836 # pixman version has been checked above
2837 pixman_cflags
=`$pkg_config --cflags pixman-1`
2838 pixman_libs
=`$pkg_config --libs pixman-1`
2840 if test ! -d ${source_path}/pixman
/pixman
; then
2841 error_exit
"pixman >= 0.21.8 not present. Your options:" \
2842 " (1) Preferred: Install the pixman devel package (any recent" \
2843 " distro should have packages as Xorg needs pixman too)." \
2844 " (2) Fetch the pixman submodule, using:" \
2845 " git submodule update --init pixman"
2847 mkdir
-p pixman
/pixman
2848 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2849 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2852 ##########################################
2855 if test "$cap" != "no" ; then
2858 #include <sys/capability.h>
2859 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2861 if compile_prog
"" "-lcap" ; then
2868 ##########################################
2870 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
2874 #include <pthread.h>
2875 static void *f(void *p) { return NULL; }
2878 pthread_create(&thread, 0, f, 0);
2882 if compile_prog
"" "" ; then
2885 for pthread_lib
in $PTHREADLIBS_LIST; do
2886 if compile_prog
"" "$pthread_lib" ; then
2889 for lib_entry
in $LIBS; do
2890 if test "$lib_entry" = "$pthread_lib"; then
2895 if test "$found" = "no"; then
2896 LIBS
="$pthread_lib $LIBS"
2903 if test "$mingw32" != yes -a "$pthread" = no
; then
2904 error_exit
"pthread check failed" \
2905 "Make sure to have the pthread libs and headers installed."
2908 # check for pthread_setname_np
2909 pthread_setname_np
=no
2911 #include <pthread.h>
2913 static void *f(void *p) { return NULL; }
2917 pthread_create(&thread, 0, f, 0);
2918 pthread_setname_np(thread, "QEMU");
2922 if compile_prog
"" "$pthread_lib" ; then
2923 pthread_setname_np
=yes
2926 ##########################################
2928 if test "$rbd" != "no" ; then
2931 #include <rbd/librbd.h>
2934 rados_create(&cluster, NULL);
2938 rbd_libs
="-lrbd -lrados"
2939 if compile_prog
"" "$rbd_libs" ; then
2942 if test "$rbd" = "yes" ; then
2943 feature_not_found
"rados block device" "Install librbd/ceph devel"
2949 ##########################################
2951 min_libssh2_version
=1.2.8
2952 if test "$libssh2" != "no" ; then
2953 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
2954 libssh2_cflags
=`$pkg_config libssh2 --cflags`
2955 libssh2_libs
=`$pkg_config libssh2 --libs`
2958 if test "$libssh2" = "yes" ; then
2959 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
2965 ##########################################
2966 # libssh2_sftp_fsync probe
2968 if test "$libssh2" = "yes"; then
2971 #include <libssh2.h>
2972 #include <libssh2_sftp.h>
2974 LIBSSH2_SESSION *session;
2976 LIBSSH2_SFTP_HANDLE *sftp_handle;
2977 session = libssh2_session_init ();
2978 sftp = libssh2_sftp_init (session);
2979 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2980 libssh2_sftp_fsync (sftp_handle);
2984 # libssh2_cflags/libssh2_libs defined in previous test.
2985 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
2986 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
2990 ##########################################
2993 if test "$linux_aio" != "no" ; then
2996 #include <sys/eventfd.h>
2998 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3000 if compile_prog
"" "-laio" ; then
3003 if test "$linux_aio" = "yes" ; then
3004 feature_not_found
"linux AIO" "Install libaio devel"
3010 ##########################################
3011 # TPM passthrough is only on x86 Linux
3013 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3014 tpm_passthrough
=$tpm
3019 ##########################################
3022 if test "$attr" != "no" ; then
3025 #include <sys/types.h>
3026 #ifdef CONFIG_LIBATTR
3027 #include <attr/xattr.h>
3029 #include <sys/xattr.h>
3031 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3033 if compile_prog
"" "" ; then
3035 # Older distros have <attr/xattr.h>, and need -lattr:
3036 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3041 if test "$attr" = "yes" ; then
3042 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3048 ##########################################
3051 #include <sys/types.h>
3052 #include <sys/uio.h>
3054 int main(void) { return sizeof(struct iovec); }
3057 if compile_prog
"" "" ; then
3061 ##########################################
3064 #include <sys/types.h>
3065 #include <sys/uio.h>
3067 int main(void) { return preadv(0, 0, 0, 0); }
3070 if compile_prog
"" "" ; then
3074 ##########################################
3076 # fdt support is mandatory for at least some target architectures,
3077 # so insist on it if we're building those system emulators.
3079 for target
in $target_list; do
3081 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3087 if test "$fdt_required" = "yes"; then
3088 if test "$fdt" = "no"; then
3089 error_exit
"fdt disabled but some requested targets require it." \
3090 "You can turn off fdt only if you also disable all the system emulation" \
3091 "targets which need it (by specifying a cut down --target-list)."
3096 if test "$fdt" != "no" ; then
3098 # explicitly check for libfdt_env.h as it is missing in some stable installs
3099 # and test for required functions to make sure we are on a version >= 1.4.0
3102 #include <libfdt_env.h>
3103 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3105 if compile_prog
"" "$fdt_libs" ; then
3106 # system DTC is good - use it
3108 elif test -d ${source_path}/dtc
/libfdt
; then
3109 # have submodule DTC - use it
3113 if [ "$pwd_is_source_path" != "y" ] ; then
3114 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3115 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3117 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3118 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3119 elif test "$fdt" = "yes" ; then
3120 # have neither and want - prompt for system/submodule install
3121 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3122 " (1) Preferred: Install the DTC (libfdt) devel package" \
3123 " (2) Fetch the DTC submodule, using:" \
3124 " git submodule update --init dtc"
3126 # don't have and don't want
3132 libs_softmmu
="$libs_softmmu $fdt_libs"
3134 ##########################################
3135 # opengl probe (for sdl2, milkymist-tmu2)
3137 # GLX probe, used by milkymist-tmu2
3138 # this is temporary, code will be switched to egl mid-term.
3140 #include <X11/Xlib.h>
3143 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3145 if compile_prog
"" "-lGL -lX11" ; then
3151 if test "$opengl" != "no" ; then
3152 opengl_pkgs
="gl glesv2 epoxy egl"
3153 if $pkg_config $opengl_pkgs x11
&& test "$have_glx" = "yes"; then
3154 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3155 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3158 if test "$opengl" = "yes" ; then
3159 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3168 ##########################################
3170 if test "$archipelago" != "no" ; then
3173 #include <xseg/xseg.h>
3174 #include <xseg/protocol.h>
3180 archipelago_libs
=-lxseg
3181 if compile_prog
"" "$archipelago_libs"; then
3183 libs_tools
="$archipelago_libs $libs_tools"
3184 libs_softmmu
="$archipelago_libs $libs_softmmu"
3186 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3187 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3188 echo "license and therefore prevent redistribution."
3190 echo "To disable Archipelago, use --disable-archipelago"
3192 if test "$archipelago" = "yes" ; then
3193 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3200 ##########################################
3202 if test "$glusterfs" != "no" ; then
3203 if $pkg_config --atleast-version=3 glusterfs-api
; then
3205 glusterfs_cflags
=`$pkg_config --cflags glusterfs-api`
3206 glusterfs_libs
=`$pkg_config --libs glusterfs-api`
3207 if $pkg_config --atleast-version=5 glusterfs-api
; then
3208 glusterfs_discard
="yes"
3210 if $pkg_config --atleast-version=6 glusterfs-api
; then
3211 glusterfs_zerofill
="yes"
3214 if test "$glusterfs" = "yes" ; then
3215 feature_not_found
"GlusterFS backend support" \
3216 "Install glusterfs-api devel >= 3"
3222 # Check for inotify functions when we are building linux-user
3223 # emulator. This is done because older glibc versions don't
3224 # have syscall stubs for these implemented. In that case we
3225 # don't provide them even if kernel supports them.
3229 #include <sys/inotify.h>
3234 /* try to start inotify */
3235 return inotify_init();
3238 if compile_prog
"" "" ; then
3244 #include <sys/inotify.h>
3249 /* try to start inotify */
3250 return inotify_init1(0);
3253 if compile_prog
"" "" ; then
3257 # check if utimensat and futimens are supported
3260 #define _ATFILE_SOURCE
3263 #include <sys/stat.h>
3267 utimensat(AT_FDCWD, "foo", NULL, 0);
3272 if compile_prog
"" "" ; then
3276 # check if pipe2 is there
3285 return pipe2(pipefd, O_CLOEXEC);
3288 if compile_prog
"" "" ; then
3292 # check if accept4 is there
3295 #include <sys/socket.h>
3300 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3304 if compile_prog
"" "" ; then
3308 # check if tee/splice is there. vmsplice was added same time.
3318 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3319 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3323 if compile_prog
"" "" ; then
3327 ##########################################
3330 if test "$numa" != "no" ; then
3333 int main(void) { return numa_available(); }
3336 if compile_prog
"" "-lnuma" ; then
3338 libs_softmmu
="-lnuma $libs_softmmu"
3340 if test "$numa" = "yes" ; then
3341 feature_not_found
"numa" "install numactl devel"
3347 ##########################################
3350 if test "$tcmalloc" = "yes" ; then
3353 int main(void) { malloc(1); return 0; }
3356 if compile_prog
"" "-ltcmalloc" ; then
3357 LIBS
="-ltcmalloc $LIBS"
3359 feature_not_found
"tcmalloc" "install gperftools devel"
3363 ##########################################
3368 #include <sys/syscall.h>
3370 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3373 if compile_prog
"" "" ; then
3377 # check if eventfd is supported
3380 #include <sys/eventfd.h>
3384 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3387 if compile_prog
"" "" ; then
3391 # check for fallocate
3398 fallocate(0, 0, 0, 0);
3402 if compile_prog
"" "" ; then
3406 # check for fallocate hole punching
3407 fallocate_punch_hole
=no
3410 #include <linux/falloc.h>
3414 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3418 if compile_prog
"" "" ; then
3419 fallocate_punch_hole
=yes
3422 # check that fallocate supports range zeroing inside the file
3423 fallocate_zero_range
=no
3426 #include <linux/falloc.h>
3430 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3434 if compile_prog
"" "" ; then
3435 fallocate_zero_range
=yes
3438 # check for posix_fallocate
3445 posix_fallocate(0, 0, 0);
3449 if compile_prog
"" "" ; then
3453 # check for sync_file_range
3460 sync_file_range(0, 0, 0, 0);
3464 if compile_prog
"" "" ; then
3468 # check for linux/fiemap.h and FS_IOC_FIEMAP
3471 #include <sys/ioctl.h>
3472 #include <linux/fs.h>
3473 #include <linux/fiemap.h>
3477 ioctl(0, FS_IOC_FIEMAP, 0);
3481 if compile_prog
"" "" ; then
3496 if compile_prog
"" "" ; then
3500 # check for ppoll support
3507 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3508 ppoll(&pfd, 1, 0, 0);
3512 if compile_prog
"" "" ; then
3516 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3517 prctl_pr_set_timerslack
=no
3519 #include <sys/prctl.h>
3523 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3527 if compile_prog
"" "" ; then
3528 prctl_pr_set_timerslack
=yes
3531 # check for epoll support
3534 #include <sys/epoll.h>
3542 if compile_prog
"" "" ; then
3546 # epoll_create1 and epoll_pwait are later additions
3547 # so we must check separately for their presence
3550 #include <sys/epoll.h>
3554 /* Note that we use epoll_create1 as a value, not as
3555 * a function being called. This is necessary so that on
3556 * old SPARC glibc versions where the function was present in
3557 * the library but not declared in the header file we will
3558 * fail the configure check. (Otherwise we will get a compiler
3559 * warning but not an error, and will proceed to fail the
3560 * qemu compile where we compile with -Werror.)
3562 return (int)(uintptr_t)&epoll_create1;
3565 if compile_prog
"" "" ; then
3571 #include <sys/epoll.h>
3575 epoll_pwait(0, 0, 0, 0, 0);
3579 if compile_prog
"" "" ; then
3583 # check for sendfile support
3586 #include <sys/sendfile.h>
3590 return sendfile(0, 0, 0, 0);
3593 if compile_prog
"" "" ; then
3597 # check for timerfd support (glibc 2.8 and newer)
3600 #include <sys/timerfd.h>
3604 return(timerfd_create(CLOCK_REALTIME, 0));
3607 if compile_prog
"" "" ; then
3611 # check for setns and unshare support
3624 if compile_prog
"" "" ; then
3628 # Check if tools are available to build documentation.
3629 if test "$docs" != "no" ; then
3630 if has makeinfo
&& has pod2man
; then
3633 if test "$docs" = "yes" ; then
3634 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3640 # Search for bswap_32 function
3643 #include <byteswap.h>
3644 int main(void) { return bswap_32(0); }
3646 if compile_prog
"" "" ; then
3650 # Search for bswap32 function
3653 #include <sys/endian.h>
3654 #include <sys/types.h>
3655 #include <machine/bswap.h>
3656 int main(void) { return bswap32(0); }
3658 if compile_prog
"" "" ; then
3662 ##########################################
3663 # Do we have libiscsi >= 1.9.0
3664 if test "$libiscsi" != "no" ; then
3665 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3667 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3668 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3670 if test "$libiscsi" = "yes" ; then
3671 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3677 ##########################################
3681 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3683 if compile_prog
"" "" ; then
3685 elif compile_prog
"" "-lm" ; then
3687 libs_qga
="-lm $libs_qga"
3689 error_exit
"libm check failed"
3692 ##########################################
3694 # uClibc provides 2 versions of clock_gettime(), one with realtime
3695 # support and one without. This means that the clock_gettime() don't
3696 # need -lrt. We still need it for timer_create() so we check for this
3697 # function in addition.
3702 timer_create(CLOCK_REALTIME, NULL, NULL);
3703 return clock_gettime(CLOCK_REALTIME, NULL);
3707 if compile_prog
"" "" ; then
3709 # we need pthread for static linking. use previous pthread test result
3710 elif compile_prog
"" "$pthread_lib -lrt" ; then
3712 libs_qga
="$libs_qga -lrt"
3715 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3716 "$aix" != "yes" -a "$haiku" != "yes" ; then
3717 libs_softmmu
="-lutil $libs_softmmu"
3720 ##########################################
3722 if test "$spice" != "no" ; then
3725 int main(void) { spice_server_new(); return 0; }
3727 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3728 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3729 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
3730 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
3731 compile_prog
"$spice_cflags" "$spice_libs" ; then
3733 libs_softmmu
="$libs_softmmu $spice_libs"
3734 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
3735 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
3736 spice_server_version
=$
($pkg_config --modversion spice-server
)
3738 if test "$spice" = "yes" ; then
3739 feature_not_found
"spice" \
3740 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3746 # check for libcacard for smartcard support
3748 # TODO - what's the minimal nss version we support?
3749 if test "$smartcard_nss" != "no"; then
3751 #include <pk11pub.h>
3752 int main(void) { PK11_FreeSlot(0); return 0; }
3754 # FIXME: do not include $glib_* in here
3755 nss_libs
="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3756 nss_cflags
="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3757 test_cflags
="$nss_cflags"
3758 # The header files in nss < 3.13.3 have a bug which causes them to
3759 # emit a warning. If we're going to compile QEMU with -Werror, then
3760 # test that the headers don't have this bug. Otherwise we would pass
3761 # the configure test but fail to compile QEMU later.
3762 if test "$werror" = "yes"; then
3763 test_cflags
="-Werror $test_cflags"
3765 if test -n "$libtool" &&
3766 $pkg_config --atleast-version=3.12.8 nss
&& \
3767 compile_prog
"$test_cflags" "$nss_libs"; then
3770 if test "$smartcard_nss" = "yes"; then
3771 feature_not_found
"nss" "Install nss devel >= 3.12.8"
3778 if test "$libusb" != "no" ; then
3779 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
3781 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
3782 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
3783 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
3784 libs_softmmu
="$libs_softmmu $libusb_libs"
3786 if test "$libusb" = "yes"; then
3787 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
3793 # check for usbredirparser for usb network redirection support
3794 if test "$usb_redir" != "no" ; then
3795 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
3797 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
3798 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
3799 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
3800 libs_softmmu
="$libs_softmmu $usb_redir_libs"
3802 if test "$usb_redir" = "yes"; then
3803 feature_not_found
"usb-redir" "Install usbredir devel"
3809 ##########################################
3810 # check if we have VSS SDK headers for win
3812 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3813 case "$vss_win32_sdk" in
3814 "") vss_win32_include
="-I$source_path" ;;
3815 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
3816 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3817 vss_win32_include
="-I$source_path/.sdk/vss"
3818 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3820 *) vss_win32_include
="-I$vss_win32_sdk"
3823 #define __MIDL_user_allocate_free_DEFINED__
3824 #include <inc/win2003/vss.h>
3825 int main(void) { return VSS_CTX_BACKUP; }
3827 if compile_prog
"$vss_win32_include" "" ; then
3828 guest_agent_with_vss
="yes"
3829 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
3830 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3832 if test "$vss_win32_sdk" != "" ; then
3833 echo "ERROR: Please download and install Microsoft VSS SDK:"
3834 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3835 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3836 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3837 echo "ERROR: The headers are extracted in the directory \`inc'."
3838 feature_not_found
"VSS support"
3840 guest_agent_with_vss
="no"
3844 ##########################################
3845 # lookup Windows platform SDK (if not specified)
3846 # The SDK is needed only to build .tlb (type library) file of guest agent
3847 # VSS provider from the source. It is usually unnecessary because the
3848 # pre-compiled .tlb file is included.
3850 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3851 if test -z "$win_sdk"; then
3852 programfiles
="$PROGRAMFILES"
3853 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
3854 if test -n "$programfiles"; then
3855 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
3857 feature_not_found
"Windows SDK"
3859 elif test "$win_sdk" = "no"; then
3864 ##########################################
3866 ##########################################
3867 # check if we have fdatasync
3873 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3874 return fdatasync(0);
3876 #error Not supported
3880 if compile_prog
"" "" ; then
3884 ##########################################
3885 # check if we have madvise
3889 #include <sys/types.h>
3890 #include <sys/mman.h>
3892 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3894 if compile_prog
"" "" ; then
3898 ##########################################
3899 # check if we have posix_madvise
3903 #include <sys/mman.h>
3905 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3907 if compile_prog
"" "" ; then
3911 ##########################################
3912 # check if we have usable SIGEV_THREAD_ID
3919 ev.sigev_notify = SIGEV_THREAD_ID;
3920 ev._sigev_un._tid = 0;
3921 asm volatile("" : : "g"(&ev));
3925 if compile_prog
"" "" ; then
3929 ##########################################
3930 # check if trace backend exists
3932 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
3933 if test "$?" -ne 0 ; then
3934 error_exit
"invalid trace backends" \
3935 "Please choose supported trace backends."
3938 ##########################################
3939 # For 'ust' backend, test if ust headers are present
3940 if have_backend
"ust"; then
3942 #include <lttng/tracepoint.h>
3943 int main(void) { return 0; }
3945 if compile_prog
"" "" ; then
3946 if $pkg_config lttng-ust
--exists; then
3947 lttng_ust_libs
=`$pkg_config --libs lttng-ust`
3949 lttng_ust_libs
="-llttng-ust"
3951 if $pkg_config liburcu-bp
--exists; then
3952 urcu_bp_libs
=`$pkg_config --libs liburcu-bp`
3954 urcu_bp_libs
="-lurcu-bp"
3957 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
3958 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
3960 error_exit
"Trace backend 'ust' missing lttng-ust header files"
3964 ##########################################
3965 # For 'dtrace' backend, test if 'dtrace' command is present
3966 if have_backend
"dtrace"; then
3967 if ! has
'dtrace' ; then
3968 error_exit
"dtrace command is not found in PATH $PATH"
3970 trace_backend_stap
="no"
3971 if has
'stap' ; then
3972 trace_backend_stap
="yes"
3976 ##########################################
3977 # check and set a backend for coroutine
3979 # We prefer ucontext, but it's not always possible. The fallback
3980 # is sigcontext. gthread is not selectable except explicitly, because
3981 # it is not functional enough to run QEMU proper. (It is occasionally
3982 # useful for debugging purposes.) On Windows the only valid backend
3983 # is the Windows-specific one.
3986 if test "$darwin" != "yes"; then
3988 #include <ucontext.h>
3989 #ifdef __stub_makecontext
3990 #error Ignoring glibc stub makecontext which will always fail
3992 int main(void) { makecontext(0, 0, 0); return 0; }
3994 if compile_prog
"" "" ; then
3999 if test "$coroutine" = ""; then
4000 if test "$mingw32" = "yes"; then
4002 elif test "$ucontext_works" = "yes"; then
4005 coroutine
=sigaltstack
4010 if test "$mingw32" != "yes"; then
4011 error_exit
"'windows' coroutine backend only valid for Windows"
4013 # Unfortunately the user visible backend name doesn't match the
4014 # coroutine-*.c filename for this case, so we have to adjust it here.
4018 if test "$ucontext_works" != "yes"; then
4019 feature_not_found
"ucontext"
4022 gthread|sigaltstack
)
4023 if test "$mingw32" = "yes"; then
4024 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4028 error_exit
"unknown coroutine backend $coroutine"
4033 if test "$coroutine_pool" = ""; then
4034 if test "$coroutine" = "gthread"; then
4040 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4041 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4044 ##########################################
4045 # check if we have open_by_handle_at
4047 open_by_handle_at
=no
4050 #if !defined(AT_EMPTY_PATH)
4051 # error missing definition
4053 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4056 if compile_prog
"" "" ; then
4057 open_by_handle_at
=yes
4060 ########################################
4061 # check if we have linux/magic.h
4065 #include <linux/magic.h>
4070 if compile_prog
"" "" ; then
4074 ########################################
4075 # check whether we can disable warning option with a pragma (this is needed
4076 # to silence warnings in the headers of some versions of external libraries).
4077 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4080 # If we can't selectively disable warning in the code, disable -Werror so that
4081 # the build doesn't fail anyway.
4083 pragma_disable_unused_but_set
=no
4085 #pragma GCC diagnostic push
4086 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4087 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4088 #pragma GCC diagnostic pop
4094 if compile_prog
"-Werror" "" ; then
4095 pragma_diagnostic_available
=yes
4100 ########################################
4101 # check if we have valgrind/valgrind.h
4105 #include <valgrind/valgrind.h>
4110 if compile_prog
"" "" ; then
4114 ########################################
4115 # check if environ is declared
4125 if compile_prog
"" "" ; then
4129 ########################################
4130 # check if cpuid.h is usable.
4136 unsigned a, b, c, d;
4137 int max = __get_cpuid_max(0, 0);
4140 __cpuid(1, a, b, c, d);
4144 __cpuid_count(7, 0, a, b, c, d);
4150 if compile_prog
"" "" ; then
4154 ########################################
4155 # check if __[u]int128_t is usable.
4159 #if defined(__clang_major__) && defined(__clang_minor__)
4160 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4161 # error __int128_t does not work in CLANG before 3.2
4173 if compile_prog
"" "" ; then
4177 ########################################
4178 # check if getauxval is available.
4182 #include <sys/auxv.h>
4184 return getauxval(AT_HWCAP) == 0;
4187 if compile_prog
"" "" ; then
4191 ########################################
4192 # check if ccache is interfering with
4193 # semantic analysis of macros
4197 static const int Z = 1;
4198 #define fn() ({ Z; })
4199 #define TAUT(X) ((X) == Z)
4200 #define PAREN(X, Y) (X == Y)
4202 int main(int argc, char *argv[])
4208 if (PAREN(x, y)) return 0;
4209 if (TAUT(Z)) return 0;
4214 if ! compile_object
"-Werror"; then
4218 ##########################################
4220 # After here, no more $cc or $ld runs
4222 if test "$gcov" = "yes" ; then
4223 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4224 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4225 elif test "$debug" = "no" ; then
4226 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4229 ##########################################
4231 if test "$libnfs" != "no" ; then
4232 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4234 libnfs_libs
=$
($pkg_config --libs libnfs
)
4235 LIBS
="$LIBS $libnfs_libs"
4237 if test "$libnfs" = "yes" ; then
4238 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4244 # Disable zero malloc errors for official releases unless explicitly told to
4246 if test -z "$zero_malloc" ; then
4247 if test "$z_version" = "50" ; then
4254 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4255 if test "$werror" = "yes"; then
4256 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4259 if test "$solaris" = "no" ; then
4260 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4261 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4265 # test if pod2man has --utf8 option
4266 if pod2man
--help |
grep -q utf8
; then
4267 POD2MAN
="pod2man --utf8"
4272 # Use ASLR, no-SEH and DEP if available
4273 if test "$mingw32" = "yes" ; then
4274 for flag
in --dynamicbase --no-seh --nxcompat; do
4275 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4276 LDFLAGS
="-Wl,$flag $LDFLAGS"
4281 qemu_confdir
=$sysconfdir$confsuffix
4282 qemu_moddir
=$libdir$confsuffix
4283 qemu_datadir
=$datadir$confsuffix
4284 qemu_localedir
="$datadir/locale"
4287 if test "$want_tools" = "yes" ; then
4288 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4289 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4290 tools
="qemu-nbd\$(EXESUF) $tools"
4293 if test "$softmmu" = yes ; then
4294 if test "$virtfs" != no
; then
4295 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4297 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4299 if test "$virtfs" = yes; then
4300 error_exit
"VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4306 if [ "$guest_agent" != "no" ]; then
4307 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4308 tools
="qemu-ga\$(EXESUF) $tools"
4309 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4310 tools
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4313 elif [ "$guest_agent" != yes ]; then
4316 error_exit
"Guest agent is not supported on this platform"
4320 # Mac OS X ships with a broken assembler
4322 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4323 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4324 "$softmmu" = yes ; then
4327 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4328 roms
="$roms spapr-rtas"
4331 if test "$cpu" = "s390x" ; then
4332 roms
="$roms s390-ccw"
4335 # Probe for the need for relocating the user-only binary.
4336 if test "$pie" = "no" ; then
4339 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4340 # ??? Rationale for choosing this address
4341 textseg_addr
=0x60000000
4344 # A 256M aligned address, high in the address space, with enough
4345 # room for the code_gen_buffer above it before the stack.
4346 textseg_addr
=0x60000000
4349 if [ -n "$textseg_addr" ]; then
4351 int main(void) { return 0; }
4353 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4354 if ! compile_prog
"" "$textseg_ldflags"; then
4355 # In case ld does not support -Ttext-segment, edit the default linker
4356 # script via sed to set the .text start addr. This is needed on FreeBSD
4358 $ld --verbose |
sed \
4359 -e '1,/==================================================/d' \
4360 -e '/==================================================/,$d' \
4361 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4362 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4363 textseg_ldflags
="-Wl,-T../config-host.ld"
4368 # prepend pixman and ftd flags after all config tests are done
4369 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4370 libs_softmmu
="$pixman_libs $libs_softmmu"
4372 echo "Install prefix $prefix"
4373 echo "BIOS directory `eval echo $qemu_datadir`"
4374 echo "binary directory `eval echo $bindir`"
4375 echo "library directory `eval echo $libdir`"
4376 echo "module directory `eval echo $qemu_moddir`"
4377 echo "libexec directory `eval echo $libexecdir`"
4378 echo "include directory `eval echo $includedir`"
4379 echo "config directory `eval echo $sysconfdir`"
4380 if test "$mingw32" = "no" ; then
4381 echo "local state directory `eval echo $local_statedir`"
4382 echo "Manual directory `eval echo $mandir`"
4383 echo "ELF interp prefix $interp_prefix"
4385 echo "local state directory queried at runtime"
4386 echo "Windows SDK $win_sdk"
4388 echo "Source path $source_path"
4389 echo "C compiler $cc"
4390 echo "Host C compiler $host_cc"
4391 echo "C++ compiler $cxx"
4392 echo "Objective-C compiler $objcc"
4393 echo "ARFLAGS $ARFLAGS"
4394 echo "CFLAGS $CFLAGS"
4395 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4396 echo "LDFLAGS $LDFLAGS"
4398 echo "install $install"
4399 echo "python $python"
4400 if test "$slirp" = "yes" ; then
4403 echo "module support $modules"
4404 echo "host CPU $cpu"
4405 echo "host big endian $bigendian"
4406 echo "target list $target_list"
4407 echo "tcg debug enabled $debug_tcg"
4408 echo "gprof enabled $gprof"
4409 echo "sparse enabled $sparse"
4410 echo "strip binaries $strip_opt"
4411 echo "profiler $profiler"
4412 echo "static build $static"
4413 if test "$darwin" = "yes" ; then
4414 echo "Cocoa support $cocoa"
4416 echo "pixman $pixman"
4417 echo "SDL support $sdl"
4418 echo "GTK support $gtk"
4419 echo "VTE support $vte"
4420 echo "curses support $curses"
4421 echo "curl support $curl"
4422 echo "mingw32 support $mingw32"
4423 echo "Audio drivers $audio_drv_list"
4424 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4425 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4426 echo "VirtFS support $virtfs"
4427 echo "VNC support $vnc"
4428 if test "$vnc" = "yes" ; then
4429 echo "VNC TLS support $vnc_tls"
4430 echo "VNC SASL support $vnc_sasl"
4431 echo "VNC JPEG support $vnc_jpeg"
4432 echo "VNC PNG support $vnc_png"
4433 echo "VNC WS support $vnc_ws"
4435 if test -n "$sparc_cpu"; then
4436 echo "Target Sparc Arch $sparc_cpu"
4438 echo "xen support $xen"
4439 if test "$xen" = "yes" ; then
4440 echo "xen ctrl version $xen_ctrl_version"
4442 echo "brlapi support $brlapi"
4443 echo "bluez support $bluez"
4444 echo "Documentation $docs"
4445 echo "GUEST_BASE $guest_base"
4447 echo "vde support $vde"
4448 echo "netmap support $netmap"
4449 echo "Linux AIO support $linux_aio"
4450 echo "ATTR/XATTR support $attr"
4451 echo "Install blobs $blobs"
4452 echo "KVM support $kvm"
4453 echo "RDMA support $rdma"
4454 echo "TCG interpreter $tcg_interpreter"
4455 echo "fdt support $fdt"
4456 echo "preadv support $preadv"
4457 echo "fdatasync $fdatasync"
4458 echo "madvise $madvise"
4459 echo "posix_madvise $posix_madvise"
4460 echo "sigev_thread_id $sigev_thread_id"
4461 echo "uuid support $uuid"
4462 echo "libcap-ng support $cap_ng"
4463 echo "vhost-net support $vhost_net"
4464 echo "vhost-scsi support $vhost_scsi"
4465 echo "Trace backends $trace_backends"
4466 if test "$trace_backend" = "simple"; then
4467 echo "Trace output file $trace_file-<pid>"
4469 if test "$spice" = "yes"; then
4470 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4472 echo "spice support $spice"
4474 echo "rbd support $rbd"
4475 echo "xfsctl support $xfs"
4476 echo "nss used $smartcard_nss"
4477 echo "libusb $libusb"
4478 echo "usb net redir $usb_redir"
4479 echo "OpenGL support $opengl"
4480 echo "libiscsi support $libiscsi"
4481 echo "libnfs support $libnfs"
4482 echo "build guest agent $guest_agent"
4483 echo "QGA VSS support $guest_agent_with_vss"
4484 echo "seccomp support $seccomp"
4485 echo "coroutine backend $coroutine"
4486 echo "coroutine pool $coroutine_pool"
4487 echo "GlusterFS support $glusterfs"
4488 echo "Archipelago support $archipelago"
4489 echo "gcov $gcov_tool"
4490 echo "gcov enabled $gcov"
4491 echo "TPM support $tpm"
4492 echo "libssh2 support $libssh2"
4493 echo "TPM passthrough $tpm_passthrough"
4494 echo "QOM debugging $qom_cast_debug"
4496 echo "Quorum $quorum"
4497 echo "lzo support $lzo"
4498 echo "snappy support $snappy"
4499 echo "bzip2 support $bzip2"
4500 echo "NUMA host support $numa"
4501 echo "tcmalloc support $tcmalloc"
4503 if test "$sdl_too_old" = "yes"; then
4504 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4507 config_host_mak
="config-host.mak"
4509 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4511 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4512 echo >> $config_host_mak
4514 echo all
: >> $config_host_mak
4515 echo "prefix=$prefix" >> $config_host_mak
4516 echo "bindir=$bindir" >> $config_host_mak
4517 echo "libdir=$libdir" >> $config_host_mak
4518 echo "libexecdir=$libexecdir" >> $config_host_mak
4519 echo "includedir=$includedir" >> $config_host_mak
4520 echo "mandir=$mandir" >> $config_host_mak
4521 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4522 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4523 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4524 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4525 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4526 if test "$mingw32" = "no" ; then
4527 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4529 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4530 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4531 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4532 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4533 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4535 echo "ARCH=$ARCH" >> $config_host_mak
4537 if test "$debug_tcg" = "yes" ; then
4538 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4540 if test "$strip_opt" = "yes" ; then
4541 echo "STRIP=${strip}" >> $config_host_mak
4543 if test "$bigendian" = "yes" ; then
4544 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4546 if test "$mingw32" = "yes" ; then
4547 echo "CONFIG_WIN32=y" >> $config_host_mak
4548 rc_version
=`cat $source_path/VERSION`
4549 version_major
=${rc_version%%.*}
4550 rc_version
=${rc_version#*.}
4551 version_minor
=${rc_version%%.*}
4552 rc_version
=${rc_version#*.}
4553 version_subminor
=${rc_version%%.*}
4555 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4556 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4557 if test "$guest_agent_with_vss" = "yes" ; then
4558 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4559 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4562 echo "CONFIG_POSIX=y" >> $config_host_mak
4565 if test "$linux" = "yes" ; then
4566 echo "CONFIG_LINUX=y" >> $config_host_mak
4569 if test "$darwin" = "yes" ; then
4570 echo "CONFIG_DARWIN=y" >> $config_host_mak
4573 if test "$aix" = "yes" ; then
4574 echo "CONFIG_AIX=y" >> $config_host_mak
4577 if test "$solaris" = "yes" ; then
4578 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4579 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4580 if test "$needs_libsunmath" = "yes" ; then
4581 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4584 if test "$haiku" = "yes" ; then
4585 echo "CONFIG_HAIKU=y" >> $config_host_mak
4587 if test "$static" = "yes" ; then
4588 echo "CONFIG_STATIC=y" >> $config_host_mak
4590 if test "$profiler" = "yes" ; then
4591 echo "CONFIG_PROFILER=y" >> $config_host_mak
4593 if test "$slirp" = "yes" ; then
4594 echo "CONFIG_SLIRP=y" >> $config_host_mak
4595 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4597 if test "$vde" = "yes" ; then
4598 echo "CONFIG_VDE=y" >> $config_host_mak
4600 if test "$netmap" = "yes" ; then
4601 echo "CONFIG_NETMAP=y" >> $config_host_mak
4603 if test "$l2tpv3" = "yes" ; then
4604 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4606 if test "$cap_ng" = "yes" ; then
4607 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4609 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4610 for drv
in $audio_drv_list; do
4611 def
=CONFIG_
`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4612 echo "$def=y" >> $config_host_mak
4614 if test "$audio_pt_int" = "yes" ; then
4615 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4617 if test "$audio_win_int" = "yes" ; then
4618 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4620 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4621 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4622 if test "$vnc" = "yes" ; then
4623 echo "CONFIG_VNC=y" >> $config_host_mak
4625 if test "$vnc_tls" = "yes" ; then
4626 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4628 if test "$vnc_sasl" = "yes" ; then
4629 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4631 if test "$vnc_jpeg" = "yes" ; then
4632 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4634 if test "$vnc_png" = "yes" ; then
4635 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4637 if test "$vnc_ws" = "yes" ; then
4638 echo "CONFIG_VNC_WS=y" >> $config_host_mak
4639 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
4641 if test "$fnmatch" = "yes" ; then
4642 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4644 if test "$uuid" = "yes" ; then
4645 echo "CONFIG_UUID=y" >> $config_host_mak
4647 if test "$xfs" = "yes" ; then
4648 echo "CONFIG_XFS=y" >> $config_host_mak
4650 qemu_version
=`head $source_path/VERSION`
4651 echo "VERSION=$qemu_version" >>$config_host_mak
4652 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4653 echo "SRC_PATH=$source_path" >> $config_host_mak
4654 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4655 if [ "$docs" = "yes" ] ; then
4656 echo "BUILD_DOCS=yes" >> $config_host_mak
4658 if test "$modules" = "yes"; then
4659 # $shacmd can generate a hash started with digit, which the compiler doesn't
4660 # like as an symbol. So prefix it with an underscore
4661 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4662 echo "CONFIG_MODULES=y" >> $config_host_mak
4664 if test "$sdl" = "yes" ; then
4665 echo "CONFIG_SDL=y" >> $config_host_mak
4666 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4667 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4669 if test "$cocoa" = "yes" ; then
4670 echo "CONFIG_COCOA=y" >> $config_host_mak
4672 if test "$curses" = "yes" ; then
4673 echo "CONFIG_CURSES=y" >> $config_host_mak
4675 if test "$utimens" = "yes" ; then
4676 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4678 if test "$pipe2" = "yes" ; then
4679 echo "CONFIG_PIPE2=y" >> $config_host_mak
4681 if test "$accept4" = "yes" ; then
4682 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4684 if test "$splice" = "yes" ; then
4685 echo "CONFIG_SPLICE=y" >> $config_host_mak
4687 if test "$eventfd" = "yes" ; then
4688 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4690 if test "$fallocate" = "yes" ; then
4691 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4693 if test "$fallocate_punch_hole" = "yes" ; then
4694 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4696 if test "$fallocate_zero_range" = "yes" ; then
4697 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4699 if test "$posix_fallocate" = "yes" ; then
4700 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4702 if test "$sync_file_range" = "yes" ; then
4703 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4705 if test "$fiemap" = "yes" ; then
4706 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4708 if test "$dup3" = "yes" ; then
4709 echo "CONFIG_DUP3=y" >> $config_host_mak
4711 if test "$ppoll" = "yes" ; then
4712 echo "CONFIG_PPOLL=y" >> $config_host_mak
4714 if test "$prctl_pr_set_timerslack" = "yes" ; then
4715 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4717 if test "$epoll" = "yes" ; then
4718 echo "CONFIG_EPOLL=y" >> $config_host_mak
4720 if test "$epoll_create1" = "yes" ; then
4721 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4723 if test "$epoll_pwait" = "yes" ; then
4724 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4726 if test "$sendfile" = "yes" ; then
4727 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4729 if test "$timerfd" = "yes" ; then
4730 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4732 if test "$setns" = "yes" ; then
4733 echo "CONFIG_SETNS=y" >> $config_host_mak
4735 if test "$inotify" = "yes" ; then
4736 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4738 if test "$inotify1" = "yes" ; then
4739 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4741 if test "$byteswap_h" = "yes" ; then
4742 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4744 if test "$bswap_h" = "yes" ; then
4745 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4747 if test "$curl" = "yes" ; then
4748 echo "CONFIG_CURL=m" >> $config_host_mak
4749 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4750 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4752 if test "$brlapi" = "yes" ; then
4753 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4755 if test "$bluez" = "yes" ; then
4756 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4757 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4759 if test "glib_subprocess" = "yes" ; then
4760 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4762 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4763 if test "$gtk" = "yes" ; then
4764 echo "CONFIG_GTK=y" >> $config_host_mak
4765 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4766 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4768 if test "$vte" = "yes" ; then
4769 echo "CONFIG_VTE=y" >> $config_host_mak
4770 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4772 if test "$xen" = "yes" ; then
4773 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4774 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4776 if test "$linux_aio" = "yes" ; then
4777 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4779 if test "$attr" = "yes" ; then
4780 echo "CONFIG_ATTR=y" >> $config_host_mak
4782 if test "$libattr" = "yes" ; then
4783 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4785 if test "$virtfs" = "yes" ; then
4786 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4788 if test "$vhost_scsi" = "yes" ; then
4789 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4791 if test "$vhost_net" = "yes" ; then
4792 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4794 if test "$blobs" = "yes" ; then
4795 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4797 if test "$iovec" = "yes" ; then
4798 echo "CONFIG_IOVEC=y" >> $config_host_mak
4800 if test "$preadv" = "yes" ; then
4801 echo "CONFIG_PREADV=y" >> $config_host_mak
4803 if test "$fdt" = "yes" ; then
4804 echo "CONFIG_FDT=y" >> $config_host_mak
4806 if test "$signalfd" = "yes" ; then
4807 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4809 if test "$tcg_interpreter" = "yes" ; then
4810 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4812 if test "$fdatasync" = "yes" ; then
4813 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4815 if test "$madvise" = "yes" ; then
4816 echo "CONFIG_MADVISE=y" >> $config_host_mak
4818 if test "$posix_madvise" = "yes" ; then
4819 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4821 if test "$sigev_thread_id" = "yes" ; then
4822 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4825 if test "$spice" = "yes" ; then
4826 echo "CONFIG_SPICE=y" >> $config_host_mak
4829 if test "$smartcard_nss" = "yes" ; then
4830 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4831 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4832 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4835 if test "$libusb" = "yes" ; then
4836 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4839 if test "$usb_redir" = "yes" ; then
4840 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4843 if test "$opengl" = "yes" ; then
4844 echo "CONFIG_OPENGL=y" >> $config_host_mak
4845 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4846 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4849 if test "$lzo" = "yes" ; then
4850 echo "CONFIG_LZO=y" >> $config_host_mak
4853 if test "$snappy" = "yes" ; then
4854 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4857 if test "$bzip2" = "yes" ; then
4858 echo "CONFIG_BZIP2=y" >> $config_host_mak
4859 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4862 if test "$libiscsi" = "yes" ; then
4863 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4864 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4865 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4868 if test "$libnfs" = "yes" ; then
4869 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4872 if test "$seccomp" = "yes"; then
4873 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4876 # XXX: suppress that
4877 if [ "$bsd" = "yes" ] ; then
4878 echo "CONFIG_BSD=y" >> $config_host_mak
4881 if test "$zero_malloc" = "yes" ; then
4882 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4884 if test "$qom_cast_debug" = "yes" ; then
4885 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4887 if test "$rbd" = "yes" ; then
4888 echo "CONFIG_RBD=m" >> $config_host_mak
4889 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
4890 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4893 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4894 if test "$coroutine_pool" = "yes" ; then
4895 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4897 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4900 if test "$open_by_handle_at" = "yes" ; then
4901 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
4904 if test "$linux_magic_h" = "yes" ; then
4905 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4908 if test "$pragma_diagnostic_available" = "yes" ; then
4909 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
4912 if test "$valgrind_h" = "yes" ; then
4913 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
4916 if test "$has_environ" = "yes" ; then
4917 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
4920 if test "$cpuid_h" = "yes" ; then
4921 echo "CONFIG_CPUID_H=y" >> $config_host_mak
4924 if test "$int128" = "yes" ; then
4925 echo "CONFIG_INT128=y" >> $config_host_mak
4928 if test "$getauxval" = "yes" ; then
4929 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
4932 if test "$glusterfs" = "yes" ; then
4933 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
4934 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
4935 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
4938 if test "$glusterfs_discard" = "yes" ; then
4939 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
4942 if test "$glusterfs_zerofill" = "yes" ; then
4943 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
4946 if test "$archipelago" = "yes" ; then
4947 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
4948 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
4951 if test "$libssh2" = "yes" ; then
4952 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
4953 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
4954 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
4957 if test "$quorum" = "yes" ; then
4958 echo "CONFIG_QUORUM=y" >> $config_host_mak
4961 if test "$vhdx" = "yes" ; then
4962 echo "CONFIG_VHDX=y" >> $config_host_mak
4966 if test "$libusb" = "yes"; then
4967 echo "HOST_USB=libusb legacy" >> $config_host_mak
4969 echo "HOST_USB=stub" >> $config_host_mak
4972 # TPM passthrough support?
4973 if test "$tpm" = "yes"; then
4974 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
4975 if test "$tpm_passthrough" = "yes"; then
4976 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
4980 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
4981 if have_backend
"nop"; then
4982 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
4984 if have_backend
"simple"; then
4985 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
4986 # Set the appropriate trace file.
4987 trace_file
="\"$trace_file-\" FMT_pid"
4989 if have_backend
"stderr"; then
4990 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
4992 if have_backend
"ust"; then
4993 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
4995 if have_backend
"dtrace"; then
4996 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
4997 if test "$trace_backend_stap" = "yes" ; then
4998 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5001 if have_backend
"ftrace"; then
5002 if test "$linux" = "yes" ; then
5003 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5005 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5008 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5010 if test "$rdma" = "yes" ; then
5011 echo "CONFIG_RDMA=y" >> $config_host_mak
5014 # Hold two types of flag:
5015 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5016 # a thread we have a handle to
5017 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5019 if test "$pthread_setname_np" = "yes" ; then
5020 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5021 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5024 if test "$tcg_interpreter" = "yes"; then
5025 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5026 elif test "$ARCH" = "sparc64" ; then
5027 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5028 elif test "$ARCH" = "s390x" ; then
5029 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5030 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5031 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5032 elif test "$ARCH" = "ppc64" ; then
5033 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5035 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5037 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5039 echo "TOOLS=$tools" >> $config_host_mak
5040 echo "ROMS=$roms" >> $config_host_mak
5041 echo "MAKE=$make" >> $config_host_mak
5042 echo "INSTALL=$install" >> $config_host_mak
5043 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5044 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5045 if test -n "$libtool"; then
5046 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5047 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5049 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5050 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5052 echo "PYTHON=$python" >> $config_host_mak
5053 echo "CC=$cc" >> $config_host_mak
5054 if $iasl -h > /dev
/null
2>&1; then
5055 echo "IASL=$iasl" >> $config_host_mak
5057 echo "CC_I386=$cc_i386" >> $config_host_mak
5058 echo "HOST_CC=$host_cc" >> $config_host_mak
5059 echo "CXX=$cxx" >> $config_host_mak
5060 echo "OBJCC=$objcc" >> $config_host_mak
5061 echo "AR=$ar" >> $config_host_mak
5062 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5063 echo "AS=$as" >> $config_host_mak
5064 echo "CPP=$cpp" >> $config_host_mak
5065 echo "OBJCOPY=$objcopy" >> $config_host_mak
5066 echo "LD=$ld" >> $config_host_mak
5067 echo "NM=$nm" >> $config_host_mak
5068 echo "WINDRES=$windres" >> $config_host_mak
5069 echo "LIBTOOL=$libtool" >> $config_host_mak
5070 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5071 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5072 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5073 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5074 if test "$sparse" = "yes" ; then
5075 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5076 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5077 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5078 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5079 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5081 if test "$cross_prefix" != ""; then
5082 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5084 echo "AUTOCONF_HOST := " >> $config_host_mak
5086 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5087 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5088 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5089 echo "LIBS+=$LIBS" >> $config_host_mak
5090 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5091 echo "EXESUF=$EXESUF" >> $config_host_mak
5092 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5093 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5094 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5095 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5096 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5097 if test "$gcov" = "yes" ; then
5098 echo "CONFIG_GCOV=y" >> $config_host_mak
5099 echo "GCOV=$gcov_tool" >> $config_host_mak
5102 # use included Linux headers
5103 if test "$linux" = "yes" ; then
5104 mkdir
-p linux-headers
5122 # For most CPUs the kernel architecture name and QEMU CPU name match.
5126 # For non-KVM architectures we will not have asm headers
5127 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5128 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5132 for target
in $target_list; do
5133 target_dir
="$target"
5134 config_target_mak
=$target_dir/config-target.mak
5135 target_name
=`echo $target | cut -d '-' -f 1`
5136 target_bigendian
="no"
5138 case "$target_name" in
5139 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5140 target_bigendian
=yes
5144 target_user_only
="no"
5145 target_linux_user
="no"
5146 target_bsd_user
="no"
5148 ${target_name}-softmmu)
5149 target_softmmu
="yes"
5151 ${target_name}-linux-user)
5152 if test "$linux" != "yes" ; then
5153 error_exit
"Target '$target' is only available on a Linux host"
5155 target_user_only
="yes"
5156 target_linux_user
="yes"
5158 ${target_name}-bsd-user)
5159 if test "$bsd" != "yes" ; then
5160 error_exit
"Target '$target' is only available on a BSD host"
5162 target_user_only
="yes"
5163 target_bsd_user
="yes"
5166 error_exit
"Target '$target' not recognised"
5171 mkdir
-p $target_dir
5172 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5175 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5178 TARGET_ARCH
="$target_name"
5182 case "$target_name" in
5186 TARGET_BASE_ARCH
=i386
5193 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5196 TARGET_BASE_ARCH
=arm
5198 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5206 gdb_xml_files
="cf-core.xml cf-fp.xml"
5208 microblaze|microblazeel
)
5209 TARGET_ARCH
=microblaze
5214 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5218 TARGET_BASE_ARCH
=mips
5219 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5220 echo "TARGET_ABI32=y" >> $config_target_mak
5224 TARGET_BASE_ARCH
=mips
5225 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5230 TARGET_ARCH
=openrisc
5231 TARGET_BASE_ARCH
=openrisc
5234 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5237 TARGET_BASE_ARCH
=ppc
5239 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5242 TARGET_BASE_ARCH
=ppc
5244 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5248 TARGET_BASE_ARCH
=ppc
5250 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5254 TARGET_BASE_ARCH
=ppc
5256 echo "TARGET_ABI32=y" >> $config_target_mak
5257 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5266 TARGET_BASE_ARCH
=sparc
5270 TARGET_BASE_ARCH
=sparc
5271 TARGET_ABI_DIR
=sparc
5272 echo "TARGET_ABI32=y" >> $config_target_mak
5275 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5285 error_exit
"Unsupported target CPU"
5288 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5289 if [ "$TARGET_BASE_ARCH" = "" ]; then
5290 TARGET_BASE_ARCH
=$TARGET_ARCH
5293 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5296 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5299 target_arch_name
="`upper $TARGET_ARCH`"
5300 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5301 echo "TARGET_NAME=$target_name" >> $config_target_mak
5302 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5303 if [ "$TARGET_ABI_DIR" = "" ]; then
5304 TARGET_ABI_DIR
=$TARGET_ARCH
5306 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5307 if [ "$HOST_VARIANT_DIR" != "" ]; then
5308 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5310 case "$target_name" in
5312 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5313 echo "CONFIG_XEN=y" >> $config_target_mak
5314 if test "$xen_pci_passthrough" = yes; then
5315 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5321 case "$target_name" in
5322 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5323 # Make sure the target and host cpus are compatible
5324 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5325 \
( "$target_name" = "$cpu" -o \
5326 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5327 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5328 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5329 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5330 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5331 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5332 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5333 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5334 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5335 echo "CONFIG_KVM=y" >> $config_target_mak
5336 if test "$vhost_net" = "yes" ; then
5337 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5341 if test "$target_bigendian" = "yes" ; then
5342 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5344 if test "$target_softmmu" = "yes" ; then
5345 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5347 if test "$target_user_only" = "yes" ; then
5348 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5349 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5351 if test "$target_linux_user" = "yes" ; then
5352 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5355 if test ! -z "$gdb_xml_files" ; then
5356 for x
in $gdb_xml_files; do
5357 list
="$list $source_path/gdb-xml/$x"
5359 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5362 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5363 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5365 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5366 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5368 if test "$target_bsd_user" = "yes" ; then
5369 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5372 # generate QEMU_CFLAGS/LDFLAGS for targets
5377 for i
in $ARCH $TARGET_BASE_ARCH ; do
5380 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5381 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5384 if test -n "${cxx}"; then
5385 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5386 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5390 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5391 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5392 if test -n "${cxx}"; then
5393 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5394 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5398 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5399 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5402 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5403 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5406 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5407 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5410 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5411 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5414 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5415 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5418 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5419 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5422 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5423 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5426 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5427 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5430 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5431 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5434 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5435 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5438 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5439 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5442 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5443 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5446 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5447 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5450 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5451 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5454 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5455 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5459 if test "$tcg_interpreter" = "yes" ; then
5460 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5461 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5466 # Ensure there's only a single GP
5467 cflags
="-msmall-data $cflags"
5471 if test "$gprof" = "yes" ; then
5472 echo "TARGET_GPROF=yes" >> $config_target_mak
5473 if test "$target_linux_user" = "yes" ; then
5475 ldflags
="-p $ldflags"
5477 if test "$target_softmmu" = "yes" ; then
5478 ldflags
="-p $ldflags"
5479 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5483 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5484 ldflags
="$ldflags $textseg_ldflags"
5487 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5488 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5490 done # for target in $targets
5492 if [ "$pixman" = "internal" ]; then
5493 echo "config-host.h: subdir-pixman" >> $config_host_mak
5496 if test "$rdma" = "yes" ; then
5497 echo "CONFIG_RDMA=y" >> $config_host_mak
5500 if [ "$dtc_internal" = "yes" ]; then
5501 echo "config-host.h: subdir-dtc" >> $config_host_mak
5504 if test "$numa" = "yes"; then
5505 echo "CONFIG_NUMA=y" >> $config_host_mak
5508 if test "$ccache_cpp2" = "yes"; then
5509 echo "export CCACHE_CPP2=y" >> $config_host_mak
5512 # build tree in object directory in case the source is not in the current directory
5513 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5515 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5516 DIRS
="$DIRS roms/seabios roms/vgabios"
5517 DIRS
="$DIRS qapi-generated"
5518 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
5519 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5520 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5521 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5522 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
5523 FILES
="$FILES pc-bios/s390-ccw/Makefile"
5524 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5525 FILES
="$FILES pc-bios/qemu-icon.bmp"
5527 $source_path/pc-bios
/*.bin \
5528 $source_path/pc-bios
/*.aml \
5529 $source_path/pc-bios
/*.rom \
5530 $source_path/pc-bios
/*.dtb \
5531 $source_path/pc-bios
/*.img \
5532 $source_path/pc-bios
/openbios-
* \
5533 $source_path/pc-bios
/u-boot.
* \
5534 $source_path/pc-bios
/palcode-
*
5536 FILES
="$FILES pc-bios/`basename $bios_file`"
5538 for test_file
in `find $source_path/tests/acpi-test-data -type f`
5540 FILES
="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5543 for f
in $FILES ; do
5544 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5545 symlink
"$source_path/$f" "$f"
5549 # temporary config to build submodules
5550 for rom
in seabios vgabios
; do
5551 config_mak
=roms
/$rom/config.mak
5552 echo "# Automatically generated by configure - do not modify" > $config_mak
5553 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5554 echo "AS=$as" >> $config_mak
5555 echo "CC=$cc" >> $config_mak
5556 echo "BCC=bcc" >> $config_mak
5557 echo "CPP=$cpp" >> $config_mak
5558 echo "OBJCOPY=objcopy" >> $config_mak
5559 echo "IASL=$iasl" >> $config_mak
5560 echo "LD=$ld" >> $config_mak
5563 # set up qemu-iotests in this build directory
5564 iotests_common_env
="tests/qemu-iotests/common.env"
5565 iotests_check
="tests/qemu-iotests/check"
5567 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5568 echo >> "$iotests_common_env"
5569 echo "export PYTHON='$python'" >> "$iotests_common_env"
5571 if [ ! -e "$iotests_check" ]; then
5572 symlink
"$source_path/$iotests_check" "$iotests_check"
5575 # Save the configure command line for later reuse.
5576 cat <<EOD >config.status
5578 # Generated by configure.
5579 # Run this file to recreate the current configuration.
5580 # Compiler output produced by configure, useful for debugging
5581 # configure, is in config.log if it exists.
5583 printf "exec" >>config.status
5584 printf " '%s'" "$0" "$@" >>config.status
5585 echo >>config.status
5586 chmod +x config.status