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.
251 xen_pci_passthrough=""
273 LDFLAGS_SHARED="-shared"
276 mandir="\${prefix}/share/man"
277 datadir="\${prefix}/share"
278 qemu_docdir="\${prefix}/share/doc/qemu"
279 bindir="\${prefix}/bin"
280 libdir="\${prefix}/lib"
281 libexecdir="\${prefix}/libexec"
282 includedir="\${prefix}/include"
283 sysconfdir="\${prefix}/etc"
284 local_statedir="\${prefix}/var"
316 guest_agent_with_vss="no"
317 guest_agent_ntddscsi="no"
328 glusterfs_discard="no"
329 glusterfs_zerofill="no"
342 # parse CC options first
344 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
346 --cross-prefix=*) cross_prefix="$optarg"
350 --cxx=*) CXX="$optarg"
352 --source-path=*) source_path="$optarg"
354 --cpu=*) cpu="$optarg"
356 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
357 EXTRA_CFLAGS="$optarg"
359 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
360 EXTRA_LDFLAGS="$optarg"
362 --enable-debug-info) debug_info="yes"
364 --disable-debug-info) debug_info="no"
369 # Using uname is really, really broken. Once we have the right set of checks
370 # we can eliminate its usage altogether.
372 # Preferred compiler:
374 # ${cross_prefix}gcc (if cross-prefix specified)
376 if test -z "${CC}${cross_prefix}"; then
379 cc="${CC-${cross_prefix}gcc}"
382 if test -z "${CXX}${cross_prefix}"; then
385 cxx="${CXX-${cross_prefix}g++}"
388 ar="${AR-${cross_prefix}ar}"
389 as="${AS-${cross_prefix}as}"
391 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
392 ld="${LD-${cross_prefix}ld}"
393 libtool="${LIBTOOL-${cross_prefix}libtool}"
394 nm="${NM-${cross_prefix}nm}"
395 strip="${STRIP-${cross_prefix}strip}"
396 windres="${WINDRES-${cross_prefix}windres}"
397 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
399 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
401 pkg_config=query_pkg_config
402 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
403 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
405 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
406 ARFLAGS="${ARFLAGS-rv}"
408 # default flags for all hosts
409 QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
410 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
411 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
412 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
413 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
414 if test "$debug_info" = "yes"; then
416 LDFLAGS="-g $LDFLAGS"
419 # make source path absolute
420 source_path=`cd "$source_path"; pwd`
422 # running configure in the source tree?
423 # we know that's the case if configure is there.
424 if test -f "./configure"; then
425 pwd_is_source_path="y"
427 pwd_is_source_path="n"
433 #error $1 not defined
435 int main(void) { return 0; }
443 int main(void) { return 0; }
450 int main(void) { return 0; }
454 if check_define __linux__ ; then
456 elif check_define _WIN32 ; then
458 elif check_define __OpenBSD__ ; then
460 elif check_define __sun__ ; then
462 elif check_define __HAIKU__ ; then
468 # Some host OSes need non-standard checks for which CPU to use.
469 # Note that these checks are broken for cross-compilation: if you're
470 # cross-compiling to one of these OSes then you'll need to specify
471 # the correct CPU with the --cpu option.
474 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
475 # run 64-bit userspace code.
476 # If the user didn't specify a CPU explicitly and the kernel says this is
477 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
478 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
483 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
484 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
489 if test ! -z "$cpu" ; then
490 # command line argument
492 elif check_define __i386__ ; then
494 elif check_define __x86_64__ ; then
495 if check_define __ILP32__ ; then
500 elif check_define __sparc__ ; then
501 if check_define __arch64__ ; then
506 elif check_define _ARCH_PPC ; then
507 if check_define _ARCH_PPC64 ; then
512 elif check_define __mips__ ; then
514 elif check_define __ia64__ ; then
516 elif check_define __s390__ ; then
517 if check_define __s390x__ ; then
522 elif check_define __arm__ ; then
524 elif check_define __aarch64__ ; then
526 elif check_define __hppa__ ; then
533 # Normalise host CPU name and set ARCH.
534 # Note that this case should only have supported host CPUs, not guests.
536 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
539 i386|i486|i586|i686|i86pc|BePC)
558 # This will result in either an error or falling back to TCI later
562 if test -z "$ARCH"; then
568 # host *BSD for user mode
574 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
575 audio_possible_drivers="sdl"
580 audio_possible_drivers="dsound sdl"
581 if check_include dsound.h; then
582 audio_drv_list="dsound"
590 audio_possible_drivers="oss sdl pa"
596 audio_possible_drivers="oss sdl pa"
597 # needed for kinfo_getvmmap(3) in libutil.h
599 netmap="" # enable netmap autodetect
600 HOST_VARIANT_DIR="freebsd"
606 audio_possible_drivers="oss sdl pa"
607 HOST_VARIANT_DIR="dragonfly"
613 audio_possible_drivers="oss sdl"
615 HOST_VARIANT_DIR="netbsd"
621 audio_possible_drivers="sdl"
622 HOST_VARIANT_DIR="openbsd"
627 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
628 if [ "$cpu" = "x86_64" ] ; then
629 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
630 LDFLAGS="-arch x86_64 $LDFLAGS"
633 audio_drv_list="coreaudio"
634 audio_possible_drivers="coreaudio sdl"
635 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
636 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
637 # Disable attempts to use ObjectiveC features in os/object.h since they
638 # won't work when we're compiling with gcc as a C compiler.
639 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
640 HOST_VARIANT_DIR="darwin"
645 install="${INSTALL-ginstall}"
647 smbd="${SMBD-/usr/sfw/sbin/smbd}"
648 needs_libsunmath="no"
649 solarisrev=`uname -r | cut -f2 -d.`
650 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
651 if test "$solarisrev" -le 9 ; then
652 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
653 needs_libsunmath="yes"
654 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
655 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
656 LIBS="-lsunmath $LIBS"
658 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
659 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
660 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
661 "Studio 11 can be downloaded from www.sun.com."
665 if test -f /usr/include/sys/soundcard.h ; then
668 audio_possible_drivers="oss sdl"
669 # needed for CMSG_ macros in sys/socket.h
670 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
671 # needed for TIOCWIN* defines in termios.h
672 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
673 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
674 solarisnetlibs="-lsocket -lnsl -lresolv"
675 LIBS="$solarisnetlibs $LIBS"
676 libs_qga="$solarisnetlibs $libs_qga"
684 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
685 LIBS="-lposix_error_mapper -lnetwork $LIBS"
689 audio_possible_drivers="oss alsa sdl pa"
695 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
699 if [ "$bsd" = "yes" ] ; then
700 if [ "$darwin" != "yes" ] ; then
705 : ${make=${MAKE-make}}
706 : ${install=${INSTALL-install}}
707 : ${python=${PYTHON-python}}
708 : ${smbd=${SMBD-/usr/sbin/smbd}}
710 # Default objcc to clang if available, otherwise use CC
717 if test "$mingw32" = "yes" ; then
720 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
721 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
722 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
723 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
725 if compile_prog "" "-liberty" ; then
726 LIBS="-liberty $LIBS"
728 prefix="c:/Program Files/QEMU"
731 qemu_docdir="\${prefix}"
733 sysconfdir="\${prefix}"
736 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi $libs_qga"
742 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
744 --help|-h) show_help=yes
746 --version|-V) exec cat $source_path/VERSION
748 --prefix=*) prefix="$optarg"
750 --interp-prefix=*) interp_prefix="$optarg"
758 --host-cc=*) host_cc="$optarg"
762 --iasl=*) iasl="$optarg"
764 --objcc=*) objcc="$optarg"
766 --make=*) make="$optarg"
768 --install=*) install="$optarg"
770 --python=*) python="$optarg"
772 --gcov=*) gcov_tool="$optarg"
774 --smbd=*) smbd="$optarg"
782 --disable-debug-info)
789 --target-list=*) target_list="$optarg"
791 --enable-trace-backends=*) trace_backends="$optarg"
793 # XXX: backwards compatibility
794 --enable-trace-backend=*) trace_backends="$optarg"
796 --with-trace-file=*) trace_file="$optarg"
798 --enable-gprof) gprof="yes"
800 --enable-gcov) gcov="yes"
804 LDFLAGS="-static $LDFLAGS"
805 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
807 --mandir=*) mandir="$optarg"
809 --bindir=*) bindir="$optarg"
811 --libdir=*) libdir="$optarg"
813 --libexecdir=*) libexecdir="$optarg"
815 --includedir=*) includedir="$optarg"
817 --datadir=*) datadir="$optarg"
819 --with-confsuffix=*) confsuffix="$optarg"
821 --docdir=*) qemu_docdir="$optarg"
823 --sysconfdir=*) sysconfdir="$optarg"
825 --localstatedir=*) local_statedir="$optarg"
827 --sbindir=*|--sharedstatedir=*|\
828 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
829 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
830 # These switches are silently ignored, for compatibility with
831 # autoconf-generated configure scripts. This allows QEMU's
832 # configure to be used by RPM and similar macros that set
833 # lots of directory switches by default.
835 --with-system-pixman) pixman="system"
837 --without-system-pixman) pixman="internal"
839 --without-pixman) pixman="none"
841 --disable-sdl) sdl="no"
843 --enable-sdl) sdl="yes"
845 --with-sdlabi=*) sdlabi="$optarg"
847 --disable-qom-cast-debug) qom_cast_debug="no"
849 --enable-qom-cast-debug) qom_cast_debug="yes"
851 --disable-virtfs) virtfs="no"
853 --enable-virtfs) virtfs="yes"
855 --disable-vnc) vnc="no"
857 --enable-vnc) vnc="yes"
859 --oss-lib=*) oss_lib="$optarg"
861 --audio-drv-list=*) audio_drv_list="$optarg"
863 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
865 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
867 --enable-debug-tcg) debug_tcg="yes"
869 --disable-debug-tcg) debug_tcg="no"
872 # Enable debugging options that aren't excessively noisy
877 --enable-sparse) sparse="yes"
879 --disable-sparse) sparse="no"
881 --disable-strip) strip_opt="no"
883 --disable-vnc-tls) vnc_tls="no"
885 --enable-vnc-tls) vnc_tls="yes"
887 --disable-vnc-sasl) vnc_sasl="no"
889 --enable-vnc-sasl) vnc_sasl="yes"
891 --disable-vnc-jpeg) vnc_jpeg="no"
893 --enable-vnc-jpeg) vnc_jpeg="yes"
895 --disable-vnc-png) vnc_png="no"
897 --enable-vnc-png) vnc_png="yes"
899 --disable-slirp) slirp="no"
901 --disable-uuid) uuid="no"
903 --enable-uuid) uuid="yes"
905 --disable-vde) vde="no"
907 --enable-vde) vde="yes"
909 --disable-netmap) netmap="no"
911 --enable-netmap) netmap="yes"
913 --disable-xen) xen="no"
915 --enable-xen) xen="yes"
917 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
919 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
921 --disable-brlapi) brlapi="no"
923 --enable-brlapi) brlapi="yes"
925 --disable-bluez) bluez="no"
927 --enable-bluez) bluez="yes"
929 --disable-kvm) kvm="no"
931 --enable-kvm) kvm="yes"
933 --disable-tcg-interpreter) tcg_interpreter="no"
935 --enable-tcg-interpreter) tcg_interpreter="yes"
937 --disable-cap-ng) cap_ng="no"
939 --enable-cap-ng) cap_ng="yes"
941 --disable-spice) spice="no"
943 --enable-spice) spice="yes"
945 --disable-libiscsi) libiscsi="no"
947 --enable-libiscsi) libiscsi="yes"
949 --disable-libnfs) libnfs="no"
951 --enable-libnfs) libnfs="yes"
953 --enable-profiler) profiler="yes"
955 --disable-cocoa) cocoa="no"
960 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
962 --disable-system) softmmu="no"
964 --enable-system) softmmu="yes"
971 --disable-linux-user) linux_user="no"
973 --enable-linux-user) linux_user="yes"
975 --disable-bsd-user) bsd_user="no"
977 --enable-bsd-user) bsd_user="yes"
979 --enable-guest-base) guest_base="yes"
981 --disable-guest-base) guest_base="no"
983 --enable-pie) pie="yes"
985 --disable-pie) pie="no"
987 --enable-werror) werror="yes"
989 --disable-werror) werror="no"
991 --enable-stack-protector) stack_protector="yes"
993 --disable-stack-protector) stack_protector="no"
995 --disable-curses) curses="no"
997 --enable-curses) curses="yes"
999 --disable-curl) curl="no"
1001 --enable-curl) curl="yes"
1003 --disable-fdt) fdt="no"
1005 --enable-fdt) fdt="yes"
1007 --disable-linux-aio) linux_aio="no"
1009 --enable-linux-aio) linux_aio="yes"
1011 --disable-attr) attr="no"
1013 --enable-attr) attr="yes"
1015 --disable-blobs) blobs="no"
1017 --with-pkgversion=*) pkgversion=" ($optarg)"
1019 --with-coroutine=*) coroutine="$optarg"
1021 --disable-coroutine-pool) coroutine_pool="no"
1023 --enable-coroutine-pool) coroutine_pool="yes"
1025 --disable-docs) docs="no"
1027 --enable-docs) docs="yes"
1029 --disable-vhost-net) vhost_net="no"
1031 --enable-vhost-net) vhost_net="yes"
1033 --disable-vhost-scsi) vhost_scsi="no"
1035 --enable-vhost-scsi) vhost_scsi="yes"
1037 --disable-opengl) opengl="no"
1039 --enable-opengl) opengl="yes"
1041 --disable-rbd) rbd="no"
1043 --enable-rbd) rbd="yes"
1045 --disable-xfsctl) xfs="no"
1047 --enable-xfsctl) xfs="yes"
1049 --disable-smartcard-nss) smartcard_nss="no"
1051 --enable-smartcard-nss) smartcard_nss="yes"
1053 --disable-libusb) libusb="no"
1055 --enable-libusb) libusb="yes"
1057 --disable-usb-redir) usb_redir="no"
1059 --enable-usb-redir) usb_redir="yes"
1061 --disable-zlib-test) zlib="no"
1063 --disable-lzo) lzo="no"
1065 --enable-lzo) lzo="yes"
1067 --disable-snappy) snappy="no"
1069 --enable-snappy) snappy="yes"
1071 --disable-bzip2) bzip2="no"
1073 --enable-bzip2) bzip2="yes"
1075 --enable-guest-agent) guest_agent="yes"
1077 --disable-guest-agent) guest_agent="no"
1079 --enable-guest-agent-msi) guest_agent_msi="yes"
1081 --disable-guest-agent-msi) guest_agent_msi="no"
1083 --with-vss-sdk) vss_win32_sdk=""
1085 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1087 --without-vss-sdk) vss_win32_sdk="no"
1089 --with-win-sdk) win_sdk=""
1091 --with-win-sdk=*) win_sdk="$optarg"
1093 --without-win-sdk) win_sdk="no"
1095 --enable-tools) want_tools="yes"
1097 --disable-tools) want_tools="no"
1099 --enable-seccomp) seccomp="yes"
1101 --disable-seccomp) seccomp="no"
1103 --disable-glusterfs) glusterfs="no"
1105 --enable-glusterfs) glusterfs="yes"
1107 --disable-archipelago) archipelago="no"
1109 --enable-archipelago) archipelago="yes"
1111 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1112 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1114 --disable-gtk) gtk="no"
1116 --enable-gtk) gtk="yes"
1118 --disable-gnutls) gnutls="no"
1120 --enable-gnutls) gnutls="yes"
1122 --enable-rdma) rdma="yes"
1124 --disable-rdma) rdma="no"
1126 --with-gtkabi=*) gtkabi="$optarg"
1128 --disable-vte) vte="no"
1130 --enable-vte) vte="yes"
1132 --disable-tpm) tpm="no"
1134 --enable-tpm) tpm="yes"
1136 --disable-libssh2) libssh2="no"
1138 --enable-libssh2) libssh2="yes"
1140 --enable-vhdx) vhdx="yes"
1142 --disable-vhdx) vhdx="no"
1144 --disable-numa) numa="no"
1146 --enable-numa) numa="yes"
1148 --disable-tcmalloc) tcmalloc="no"
1150 --enable-tcmalloc) tcmalloc="yes"
1153 echo "ERROR: unknown option $opt"
1154 echo "Try '$0 --help' for more information"
1160 if ! has $python; then
1161 error_exit "Python not found. Use --python=/path/to/python"
1164 # Note that if the Python conditional here evaluates True we will exit
1165 # with status 1 which is a shell 'false' value.
1166 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1167 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1168 "Note that Python 3 or later is not yet supported." \
1169 "Use --python=/path/to/python to specify a supported Python."
1172 # The -B switch was added in Python 2.6.
1173 # If it is supplied, compiled files are not written.
1174 # Use it for Python versions which support it.
1175 if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1182 LDFLAGS="-m32 $LDFLAGS"
1186 LDFLAGS="-m64 $LDFLAGS"
1189 LDFLAGS="-m32 $LDFLAGS"
1190 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1193 LDFLAGS="-m64 $LDFLAGS"
1194 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1198 LDFLAGS="-m31 $LDFLAGS"
1202 LDFLAGS="-m64 $LDFLAGS"
1206 LDFLAGS="-m32 $LDFLAGS"
1207 cc_i386='$(CC) -m32'
1211 LDFLAGS="-m64 $LDFLAGS"
1212 cc_i386='$(CC) -m32'
1216 LDFLAGS="-mx32 $LDFLAGS"
1217 cc_i386='$(CC) -m32'
1219 # No special flags required for other host CPUs
1222 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1223 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1225 default_target_list=""
1229 if [ "$softmmu" = "yes" ]; then
1230 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1232 if [ "$linux_user" = "yes" ]; then
1233 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1235 if [ "$bsd_user" = "yes" ]; then
1236 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1239 for config in $mak_wilds; do
1240 default_target_list="${default_target_list} $(basename "$config" .mak)"
1243 if test x"$show_help" = x"yes" ; then
1246 Usage: configure [options]
1247 Options: [defaults in brackets after descriptions]
1250 --help print this message
1251 --prefix=PREFIX install in PREFIX [$prefix]
1252 --interp-prefix=PREFIX where to find shared libraries, etc.
1253 use %M for cpu name [$interp_prefix]
1254 --target-list=LIST set target list (default: build everything)
1255 $(echo Available targets: $default_target_list | \
1256 fold -s -w 53 | sed -e 's/^/ /')
1258 Advanced options (experts only):
1259 --source-path=PATH path of source code [$source_path]
1260 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1261 --cc=CC use C compiler CC [$cc]
1262 --iasl=IASL use ACPI compiler IASL [$iasl]
1263 --host-cc=CC use C compiler CC [$host_cc] for code run at
1265 --cxx=CXX use C++ compiler CXX [$cxx]
1266 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1267 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1268 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1269 --make=MAKE use specified make [$make]
1270 --install=INSTALL use specified install [$install]
1271 --python=PYTHON use specified python [$python]
1272 --smbd=SMBD use specified smbd [$smbd]
1273 --static enable static build [$static]
1274 --mandir=PATH install man pages in PATH
1275 --datadir=PATH install firmware in PATH$confsuffix
1276 --docdir=PATH install documentation in PATH$confsuffix
1277 --bindir=PATH install binaries in PATH
1278 --libdir=PATH install libraries in PATH
1279 --sysconfdir=PATH install config in PATH$confsuffix
1280 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1281 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1282 --enable-debug enable common debug build options
1283 --disable-strip disable stripping binaries
1284 --disable-werror disable compilation abort on warning
1285 --disable-stack-protector disable compiler-provided stack protection
1286 --audio-drv-list=LIST set audio drivers list:
1287 Available drivers: $audio_possible_drivers
1288 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1289 --block-drv-rw-whitelist=L
1290 set block driver read-write whitelist
1291 (affects only QEMU, not qemu-img)
1292 --block-drv-ro-whitelist=L
1293 set block driver read-only whitelist
1294 (affects only QEMU, not qemu-img)
1295 --enable-trace-backends=B Set trace backend
1296 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1297 --with-trace-file=NAME Full PATH,NAME of file to store traces
1299 --disable-slirp disable SLIRP userspace network connectivity
1300 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1301 --oss-lib path to OSS library
1302 --cpu=CPU Build for host CPU [$cpu]
1303 --with-coroutine=BACKEND coroutine backend. Supported options:
1304 gthread, ucontext, sigaltstack, windows
1305 --enable-gcov enable test coverage analysis with gcov
1306 --gcov=GCOV use specified gcov [$gcov_tool]
1307 --disable-blobs disable installing provided firmware blobs
1308 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1309 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1311 Optional features, enabled with --enable-FEATURE and
1312 disabled with --disable-FEATURE, default is enabled if available:
1314 system all system emulation targets
1315 user supported user emulation targets
1316 linux-user all linux usermode emulation targets
1317 bsd-user all BSD usermode emulation targets
1318 guest-base GUEST_BASE support for usermode emulation targets
1319 docs build documentation
1320 guest-agent build the QEMU Guest Agent
1321 guest-agent-msi build guest agent Windows MSI installation package
1322 pie Position Independent Executables
1323 modules modules support
1324 debug-tcg TCG debugging (default is disabled)
1325 debug-info debugging information
1326 sparse sparse checker
1328 gnutls GNUTLS cryptography support
1330 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1332 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1333 vte vte support for the gtk UI
1336 vnc-tls TLS encryption for VNC server
1337 vnc-sasl SASL encryption for VNC server
1338 vnc-jpeg JPEG lossy compression for VNC server
1339 vnc-png PNG compression for VNC server
1340 cocoa Cocoa UI (Mac OS X only)
1342 xen xen backend driver support
1344 brlapi BrlAPI (Braile)
1345 curl curl connectivity
1347 bluez bluez stack connectivity
1348 kvm KVM acceleration support
1349 rdma RDMA-based migration support
1351 vde support for vde network
1352 netmap support for netmap network
1353 linux-aio Linux AIO support
1354 cap-ng libcap-ng support
1355 attr attr and xattr support
1356 vhost-net vhost-net acceleration support
1358 rbd rados block device (rbd)
1359 libiscsi iscsi support
1361 smartcard-nss smartcard nss support
1362 libusb libusb (for usb passthrough)
1363 usb-redir usb network redirection support
1364 lzo support of lzo compression library
1365 snappy support of snappy compression library
1366 bzip2 support of bzip2 compression library
1367 (for reading bzip2-compressed dmg images)
1368 seccomp seccomp support
1369 coroutine-pool coroutine freelist (better performance)
1370 glusterfs GlusterFS backend
1371 archipelago Archipelago backend
1373 libssh2 ssh block device support
1374 vhdx support for the Microsoft VHDX image format
1375 numa libnuma support
1376 tcmalloc tcmalloc support
1378 NOTE: The object files are built at the place where configure is launched
1383 # Now we have handled --enable-tcg-interpreter and know we're not just
1384 # printing the help message, bail out if the host CPU isn't supported.
1385 if test "$ARCH" = "unknown"; then
1386 if test "$tcg_interpreter" = "yes" ; then
1387 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1390 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1394 # Consult white-list to determine whether to enable werror
1395 # by default. Only enable by default for git builds
1396 z_version=`cut -f3 -d. $source_path/VERSION`
1398 if test -z "$werror" ; then
1399 if test -d "$source_path/.git" -a \
1400 "$linux" = "yes" ; then
1407 # check that the C compiler works.
1409 if compile_object ; then
1410 : C compiler works ok
1412 error_exit "\"$cc\" either does not exist or does not work"
1415 # Check that the C++ compiler exists and works with the C compiler
1418 int c_function(void);
1419 int main(void) { return c_function(); }
1426 int c_function(void);
1428 int c_function(void) { return 42; }
1433 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1434 # C++ compiler $cxx works ok with C compiler $cc
1437 echo "C++ compiler $cxx does not work with C compiler $cc"
1438 echo "Disabling C++ specific optional code"
1442 echo "No C++ compiler available; disabling C++ specific optional code"
1446 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1447 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1448 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1449 gcc_flags="-Wendif-labels $gcc_flags"
1450 gcc_flags="-Wno-initializer-overrides $gcc_flags"
1451 gcc_flags="-Wno-string-plus-int $gcc_flags"
1452 # Note that we do not add -Werror to gcc_flags here, because that would
1453 # enable it for all configure tests. If a configure test failed due
1454 # to -Werror this would just silently disable some features,
1455 # so it's too error prone.
1457 cc_has_warning_flag() {
1460 # Use the positive sense of the flag when testing for -Wno-wombat
1461 # support (gcc will happily accept the -Wno- form of unknown
1463 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1464 compile_prog "-Werror $optflag" ""
1467 for flag in $gcc_flags; do
1468 if cc_has_warning_flag $flag ; then
1469 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1473 if test "$stack_protector" != "no"; then
1474 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1476 for flag in $gcc_flags; do
1477 # We need to check both a compile and a link, since some compiler
1478 # setups fail only on a .c->.o compile and some only at link time
1479 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1480 compile_prog "-Werror $flag" ""; then
1481 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1482 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
1487 if test "$stack_protector" = yes; then
1488 if test $sp_on = 0; then
1489 error_exit "Stack protector not supported"
1494 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1495 # large functions that use global variables. The bug is in all releases of
1496 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1497 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1499 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1500 int main(void) { return 0; }
1502 #error No bug in this compiler.
1505 if compile_prog "-Werror -fno-gcse" "" ; then
1506 TRANSLATE_OPT_CFLAGS=-fno-gcse
1509 if test "$static" = "yes" ; then
1510 if test "$modules" = "yes" ; then
1511 error_exit "static and modules are mutually incompatible"
1513 if test "$pie" = "yes" ; then
1514 error_exit "static and pie are mutually incompatible"
1520 # Unconditional check for compiler __thread support
1522 static __thread int tls_var;
1523 int main(void) { return tls_var; }
1526 if ! compile_prog "-Werror" "" ; then
1527 error_exit "Your compiler does not support the __thread specifier for " \
1528 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1531 if test "$pie" = ""; then
1532 case "$cpu-$targetos" in
1533 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1541 if test "$pie" != "no" ; then
1545 # define THREAD __thread
1550 static THREAD int tls_var;
1552 int main(void) { return tls_var; }
1555 if compile_prog "-fPIE -DPIE" "-pie"; then
1556 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1557 LDFLAGS="-pie $LDFLAGS"
1559 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1560 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1563 if test "$pie" = "yes"; then
1564 error_exit "PIE not available due to missing toolchain support"
1566 echo "Disabling PIE due to missing toolchain support"
1571 if compile_prog "-Werror -fno-pie" "-nopie"; then
1572 CFLAGS_NOPIE="-fno-pie"
1573 LDFLAGS_NOPIE="-nopie"
1577 # check for broken gcc and libtool in RHEL5
1578 if test -n "$libtool" -a "$pie" != "no" ; then
1581 void *f(unsigned char *buf, int len);
1582 void *g(unsigned char *buf, int len);
1585 f(unsigned char *buf, int len)
1591 g(unsigned char *buf, int len)
1597 if ! libtool_prog; then
1598 echo "Disabling libtool due to broken toolchain support"
1603 ##########################################
1604 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1605 # use i686 as default anyway, but for those that don't, an explicit
1606 # specification is necessary
1608 if test "$cpu" = "i386"; then
1610 static int sfaa(int *ptr)
1612 return __sync_fetch_and_and(ptr, 0);
1618 val = __sync_val_compare_and_swap(&val, 0, 1);
1623 if ! compile_prog "" "" ; then
1624 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1628 #########################################
1629 # Solaris specific configure tool chain decisions
1631 if test "$solaris" = "yes" ; then
1632 if has $install; then
1635 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1636 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1637 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1639 if test "`path_of $install`" = "/usr/sbin/install" ; then
1640 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1641 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1642 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1647 if test -f /usr/ccs/bin/ar ; then
1648 error_exit "No path includes ar" \
1649 "Add /usr/ccs/bin to your path and rerun configure"
1651 error_exit "No path includes ar"
1655 if test -z "${target_list+xxx}" ; then
1656 target_list="$default_target_list"
1658 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1661 # Check that we recognised the target name; this allows a more
1662 # friendly error message than if we let it fall through.
1663 for target in $target_list; do
1664 case " $default_target_list " in
1668 error_exit "Unknown target name '$target'"
1673 # see if system emulation was really requested
1674 case " $target_list " in
1675 *"-softmmu "*) softmmu=yes
1681 feature_not_found() {
1685 error_exit "User requested feature $feature" \
1686 "configure was not able to find it." \
1691 # big/little endian test
1693 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1694 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1695 extern int foo(short *, short *);
1696 int main(int argc, char *argv[]) {
1697 return foo(big_endian, little_endian);
1701 if compile_object ; then
1702 if grep -q BiGeNdIaN $TMPO ; then
1704 elif grep -q LiTtLeEnDiAn $TMPO ; then
1707 echo big/little test failed
1710 echo big/little test failed
1713 ##########################################
1717 #include <sys/socket.h>
1718 #include <linux/ip.h>
1719 int main(void) { return sizeof(struct mmsghdr); }
1721 if compile_prog "" "" ; then
1727 ##########################################
1730 if ! has "$pkg_config_exe"; then
1731 error_exit "pkg-config binary '$pkg_config_exe' not found"
1734 ##########################################
1737 if test "$linux_user" = "yes"; then
1740 #include <linux/futex.h>
1742 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1748 if ! compile_object ; then
1749 feature_not_found "nptl" "Install glibc and linux kernel headers."
1753 ##########################################
1756 if test "$zlib" != "no" ; then
1759 int main(void) { zlibVersion(); return 0; }
1761 if compile_prog "" "-lz" ; then
1764 error_exit "zlib check failed" \
1765 "Make sure to have the zlib libs and headers installed."
1770 ##########################################
1773 if test "$lzo" != "no" ; then
1775 #include <lzo/lzo1x.h>
1776 int main(void) { lzo_version(); return 0; }
1778 if compile_prog "" "-llzo2" ; then
1779 libs_softmmu="$libs_softmmu -llzo2"
1782 if test "$lzo" = "yes"; then
1783 feature_not_found "liblzo2" "Install liblzo2 devel"
1789 ##########################################
1792 if test "$snappy" != "no" ; then
1794 #include <snappy-c.h>
1795 int main(void) { snappy_max_compressed_length(4096); return 0; }
1797 if compile_prog "" "-lsnappy" ; then
1798 libs_softmmu="$libs_softmmu -lsnappy"
1801 if test "$snappy" = "yes"; then
1802 feature_not_found "libsnappy" "Install libsnappy devel"
1808 ##########################################
1811 if test "$bzip2" != "no" ; then
1814 int main(void) { BZ2_bzlibVersion(); return 0; }
1816 if compile_prog "" "-lbz2" ; then
1819 if test "$bzip2" = "yes"; then
1820 feature_not_found "libbzip2" "Install libbzip2 devel"
1826 ##########################################
1829 if test "$seccomp" != "no" ; then
1830 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1831 $pkg_config --atleast-version=2.1.1 libseccomp; then
1832 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1833 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1836 if test "$seccomp" = "yes"; then
1837 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
1842 ##########################################
1845 if test "$xen" != "no" ; then
1846 xen_libs="-lxenstore -lxenctrl -lxenguest"
1848 # First we test whether Xen headers and libraries are available.
1849 # If no, we are done and there is no Xen support.
1850 # If yes, more tests are run to detect the Xen version.
1854 #include <xenctrl.h>
1859 if ! compile_prog "" "$xen_libs" ; then
1861 if test "$xen" = "yes" ; then
1862 feature_not_found "xen" "Install xen devel"
1868 cat > $TMPC <<EOF &&
1869 #include <xenctrl.h>
1870 #include <xenstore.h>
1872 #include <xen/hvm/hvm_info_table.h>
1873 #if !defined(HVM_MAX_VCPUS)
1874 # error HVM_MAX_VCPUS not defined
1879 xc = xc_interface_open(0, 0, 0);
1880 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1881 xc_gnttab_open(NULL, 0);
1882 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1883 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1884 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1888 compile_prog "" "$xen_libs"
1890 xen_ctrl_version=450
1894 cat > $TMPC <<EOF &&
1895 #include <xenctrl.h>
1896 #include <xenstore.h>
1898 #include <xen/hvm/hvm_info_table.h>
1899 #if !defined(HVM_MAX_VCPUS)
1900 # error HVM_MAX_VCPUS not defined
1905 xc = xc_interface_open(0, 0, 0);
1906 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1907 xc_gnttab_open(NULL, 0);
1908 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1909 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1913 compile_prog "" "$xen_libs"
1915 xen_ctrl_version=420
1919 cat > $TMPC <<EOF &&
1920 #include <xenctrl.h>
1923 #include <xen/hvm/hvm_info_table.h>
1924 #if !defined(HVM_MAX_VCPUS)
1925 # error HVM_MAX_VCPUS not defined
1929 xc_interface_open(0, 0, 0);
1930 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1931 xc_gnttab_open(NULL, 0);
1932 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1936 compile_prog "" "$xen_libs"
1938 xen_ctrl_version=410
1943 cat > $TMPC <<EOF &&
1944 #include <xenctrl.h>
1947 #include <xen/hvm/hvm_info_table.h>
1948 #if !defined(HVM_MAX_VCPUS)
1949 # error HVM_MAX_VCPUS not defined
1952 struct xen_add_to_physmap xatp = {
1953 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1956 xc_interface_open();
1958 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1959 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1963 compile_prog "" "$xen_libs"
1965 xen_ctrl_version=400
1970 cat > $TMPC <<EOF &&
1971 #include <xenctrl.h>
1974 struct xen_add_to_physmap xatp = {
1975 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1978 xc_interface_open();
1980 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1981 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1985 compile_prog "" "$xen_libs"
1987 xen_ctrl_version=340
1992 cat > $TMPC <<EOF &&
1993 #include <xenctrl.h>
1997 xc_interface_open();
1999 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2003 compile_prog "" "$xen_libs"
2005 xen_ctrl_version=330
2008 # Xen version unsupported
2010 if test "$xen" = "yes" ; then
2011 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2016 if test "$xen" = yes; then
2017 libs_softmmu="$xen_libs $libs_softmmu"
2021 if test "$xen_pci_passthrough" != "no"; then
2022 if test "$xen" = "yes" && test "$linux" = "yes" &&
2023 test "$xen_ctrl_version" -ge 340; then
2024 xen_pci_passthrough=yes
2026 if test "$xen_pci_passthrough" = "yes"; then
2027 if test "$xen_ctrl_version" -lt 340; then
2028 error_exit "User requested feature Xen PCI Passthrough" \
2029 "This feature does not work with Xen 3.3"
2031 error_exit "User requested feature Xen PCI Passthrough" \
2032 " but this feature requires /sys from Linux"
2034 xen_pci_passthrough=no
2038 ##########################################
2041 if ! has $libtool; then
2045 # MacOSX ships with a libtool which isn't the GNU one; weed this
2046 # out by checking whether libtool supports the --version switch
2047 if test -n "$libtool"; then
2048 if ! "$libtool" --version >/dev/null 2>&1; then
2053 ##########################################
2055 if test "$sparse" != "no" ; then
2059 if test "$sparse" = "yes" ; then
2060 feature_not_found "sparse" "Install sparse binary"
2066 ##########################################
2070 if $pkg_config --exists "x11"; then
2071 x11_cflags=`$pkg_config --cflags x11`
2072 x11_libs=`$pkg_config --libs x11`
2075 ##########################################
2078 if test "$gtkabi" = ""; then
2079 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2080 # Use 3.0 as a fallback if that is available.
2081 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2083 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2090 if test "$gtk" != "no"; then
2091 gtkpackage="gtk+-$gtkabi"
2092 gtkx11package="gtk+-x11-$gtkabi"
2093 if test "$gtkabi" = "3.0" ; then
2098 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2099 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2100 gtk_libs=`$pkg_config --libs $gtkpackage`
2101 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2102 gtk_cflags="$gtk_cflags $x11_cflags"
2103 gtk_libs="$gtk_libs $x11_libs"
2105 libs_softmmu="$gtk_libs $libs_softmmu"
2107 elif test "$gtk" = "yes"; then
2108 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2115 ##########################################
2119 # Unfortunately some distros have bad pkg-config information for gnutls
2120 # such that it claims to exist but you get a compiler error if you try
2121 # to use the options returned by --libs. Specifically, Ubuntu for --static
2122 # builds doesn't work:
2123 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2125 # So sanity check the cflags/libs before assuming gnutls can be used.
2126 if ! $pkg_config --exists "gnutls"; then
2131 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2136 if test "$gnutls" != "no"; then
2137 if gnutls_works; then
2138 gnutls_cflags=`$pkg_config --cflags gnutls`
2139 gnutls_libs=`$pkg_config --libs gnutls`
2140 libs_softmmu="$gnutls_libs $libs_softmmu"
2141 libs_tools="$gnutls_libs $libs_tools"
2142 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2145 # gnutls_hash_init requires >= 2.9.10
2146 if $pkg_config --exists "gnutls >= 2.9.10"; then
2152 if $pkg_config --exists 'gnutls >= 3.0'; then
2155 elif $pkg_config --exists 'gnutls >= 2.12'; then
2156 case `$pkg_config --libs --static gnutls` in
2174 elif test "$gnutls" = "yes"; then
2175 feature_not_found "gnutls" "Install gnutls devel"
2184 if test "$gnutls_gcrypt" != "no"; then
2185 if has "libgcrypt-config"; then
2186 gcrypt_cflags=`libgcrypt-config --cflags`
2187 gcrypt_libs=`libgcrypt-config --libs`
2188 libs_softmmu="$gcrypt_libs $libs_softmmu"
2189 libs_tools="$gcrypt_libs $libs_tools"
2190 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2192 feature_not_found "gcrypt" "Install gcrypt devel"
2197 if test "$gnutls_nettle" != "no"; then
2198 if $pkg_config --exists "nettle"; then
2199 nettle_cflags=`$pkg_config --cflags nettle`
2200 nettle_libs=`$pkg_config --libs nettle`
2201 nettle_version=`$pkg_config --modversion nettle`
2202 libs_softmmu="$nettle_libs $libs_softmmu"
2203 libs_tools="$nettle_libs $libs_tools"
2204 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2206 feature_not_found "nettle" "Install nettle devel"
2211 ##########################################
2214 if test "$vte" != "no"; then
2215 if test "$gtkabi" = "3.0"; then
2216 vtepackage="vte-2.90"
2222 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2223 vte_cflags=`$pkg_config --cflags $vtepackage`
2224 vte_libs=`$pkg_config --libs $vtepackage`
2225 libs_softmmu="$vte_libs $libs_softmmu"
2227 elif test "$vte" = "yes"; then
2228 if test "$gtkabi" = "3.0"; then
2229 feature_not_found "vte" "Install libvte-2.90 devel"
2231 feature_not_found "vte" "Install libvte devel"
2238 ##########################################
2241 # Look for sdl configuration program (pkg-config or sdl-config). Try
2242 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2244 if test $sdlabi = "2.0"; then
2245 sdl_config=$sdl2_config
2247 sdlconfigname=sdl2_config
2250 sdlconfigname=sdl_config
2253 if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2254 sdl_config=$sdlconfigname
2257 if $pkg_config $sdlname --exists; then
2258 sdlconfig="$pkg_config $sdlname"
2259 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2260 elif has ${sdl_config}; then
2261 sdlconfig="$sdl_config"
2262 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2264 if test "$sdl" = "yes" ; then
2265 feature_not_found "sdl" "Install SDL devel"
2269 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2270 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2274 if test "$sdl" != "no" ; then
2277 #undef main /* We don't want SDL to override our main() */
2278 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2280 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2281 if test "$static" = "yes" ; then
2282 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2284 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2286 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2287 if test "$_sdlversion" -lt 121 ; then
2290 if test "$cocoa" = "no" ; then
2295 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2296 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2297 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2298 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2299 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2301 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2307 else # sdl not found
2308 if test "$sdl" = "yes" ; then
2309 feature_not_found "sdl" "Install SDL devel"
2312 fi # sdl compile test
2315 if test "$sdl" = "yes" ; then
2318 #if defined(SDL_VIDEO_DRIVER_X11)
2319 #include <X11/XKBlib.h>
2321 #error No x11 support
2323 int main(void) { return 0; }
2325 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2326 sdl_cflags="$sdl_cflags $x11_cflags"
2327 sdl_libs="$sdl_libs $x11_libs"
2329 libs_softmmu="$sdl_libs $libs_softmmu"
2332 ##########################################
2333 # RDMA needs OpenFabrics libraries
2334 if test "$rdma" != "no" ; then
2336 #include <rdma/rdma_cma.h>
2337 int main(void) { return 0; }
2339 rdma_libs="-lrdmacm -libverbs"
2340 if compile_prog "" "$rdma_libs" ; then
2342 libs_softmmu="$libs_softmmu $rdma_libs"
2344 if test "$rdma" = "yes" ; then
2346 " OpenFabrics librdmacm/libibverbs not present." \
2348 " (1) Fast: Install infiniband packages from your distro." \
2349 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2350 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2356 ##########################################
2357 # VNC TLS/WS detection
2358 if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
2360 #include <gnutls/gnutls.h>
2361 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2363 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2364 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
2365 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
2366 if test "$vnc_tls" != "no" ; then
2369 libs_softmmu="$vnc_tls_libs $libs_softmmu"
2370 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
2372 if test "$vnc_tls" = "yes" ; then
2373 feature_not_found "vnc-tls" "Install gnutls devel"
2379 ##########################################
2380 # VNC SASL detection
2381 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2383 #include <sasl/sasl.h>
2385 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2387 # Assuming Cyrus-SASL installed in /usr prefix
2389 vnc_sasl_libs="-lsasl2"
2390 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2392 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2393 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2395 if test "$vnc_sasl" = "yes" ; then
2396 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2402 ##########################################
2403 # VNC JPEG detection
2404 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2407 #include <jpeglib.h>
2408 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2411 vnc_jpeg_libs="-ljpeg"
2412 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2414 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2415 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2417 if test "$vnc_jpeg" = "yes" ; then
2418 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2424 ##########################################
2426 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2428 //#include <stdio.h>
2432 png_structp png_ptr;
2433 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2434 return png_ptr != 0;
2437 if $pkg_config libpng --exists; then
2438 vnc_png_cflags=`$pkg_config libpng --cflags`
2439 vnc_png_libs=`$pkg_config libpng --libs`
2442 vnc_png_libs="-lpng"
2444 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2446 libs_softmmu="$vnc_png_libs $libs_softmmu"
2447 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2449 if test "$vnc_png" = "yes" ; then
2450 feature_not_found "vnc-png" "Install libpng devel"
2456 ##########################################
2457 # fnmatch() probe, used for ACL routines
2460 #include <fnmatch.h>
2463 fnmatch("foo", "foo", 0);
2467 if compile_prog "" "" ; then
2471 ##########################################
2472 # uuid_generate() probe, used for vdi block driver
2473 # Note that on some systems (notably MacOSX) no extra library
2474 # need be linked to get the uuid functions.
2475 if test "$uuid" != "no" ; then
2478 #include <uuid/uuid.h>
2482 uuid_generate(my_uuid);
2486 if compile_prog "" "" ; then
2488 elif compile_prog "" "$uuid_libs" ; then
2490 libs_softmmu="$uuid_libs $libs_softmmu"
2491 libs_tools="$uuid_libs $libs_tools"
2493 if test "$uuid" = "yes" ; then
2494 feature_not_found "uuid" "Install libuuid devel"
2500 if test "$vhdx" = "yes" ; then
2501 if test "$uuid" = "no" ; then
2502 error_exit "uuid required for VHDX support"
2504 elif test "$vhdx" != "no" ; then
2505 if test "$uuid" = "yes" ; then
2512 ##########################################
2513 # xfsctl() probe, used for raw-posix
2514 if test "$xfs" != "no" ; then
2516 #include <stddef.h> /* NULL */
2517 #include <xfs/xfs.h>
2520 xfsctl(NULL, 0, 0, NULL);
2524 if compile_prog "" "" ; then
2527 if test "$xfs" = "yes" ; then
2528 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2534 ##########################################
2535 # vde libraries probe
2536 if test "$vde" != "no" ; then
2537 vde_libs="-lvdeplug"
2539 #include <libvdeplug.h>
2542 struct vde_open_args a = {0, 0, 0};
2548 if compile_prog "" "$vde_libs" ; then
2550 libs_softmmu="$vde_libs $libs_softmmu"
2551 libs_tools="$vde_libs $libs_tools"
2553 if test "$vde" = "yes" ; then
2554 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2560 ##########################################
2561 # netmap support probe
2562 # Apart from looking for netmap headers, we make sure that the host API version
2563 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2564 # a minor/major version number. Minor new features will be marked with values up
2565 # to 15, and if something happens that requires a change to the backend we will
2566 # move above 15, submit the backend fixes and modify this two bounds.
2567 if test "$netmap" != "no" ; then
2569 #include <inttypes.h>
2571 #include <net/netmap.h>
2572 #include <net/netmap_user.h>
2573 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2576 int main(void) { return 0; }
2578 if compile_prog "" "" ; then
2581 if test "$netmap" = "yes" ; then
2582 feature_not_found "netmap"
2588 ##########################################
2589 # libcap-ng library probe
2590 if test "$cap_ng" != "no" ; then
2596 capng_capability_to_name(CAPNG_EFFECTIVE);
2600 if compile_prog "" "$cap_libs" ; then
2602 libs_tools="$cap_libs $libs_tools"
2604 if test "$cap_ng" = "yes" ; then
2605 feature_not_found "cap_ng" "Install libcap-ng devel"
2611 ##########################################
2612 # Sound support libraries probe
2623 int main(void) { $exp }
2625 if compile_prog "$cfl" "$lib" ; then
2628 error_exit "$drv check failed" \
2629 "Make sure to have the $drv libs and headers installed."
2633 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2634 for drv in $audio_drv_list; do
2637 audio_drv_probe $drv alsa/asoundlib.h -lasound \
2638 "return snd_pcm_close((snd_pcm_t *)0);"
2639 libs_softmmu="-lasound $libs_softmmu"
2643 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2644 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2645 libs_softmmu="-lpulse $libs_softmmu"
2650 libs_softmmu="-framework CoreAudio $libs_softmmu"
2654 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2659 libs_softmmu="$oss_lib $libs_softmmu"
2663 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2667 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2668 error_exit "Unknown driver '$drv' selected" \
2669 "Possible drivers are: $audio_possible_drivers"
2675 ##########################################
2678 if test "$brlapi" != "no" ; then
2679 brlapi_libs="-lbrlapi"
2683 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2685 if compile_prog "" "$brlapi_libs" ; then
2687 libs_softmmu="$brlapi_libs $libs_softmmu"
2689 if test "$brlapi" = "yes" ; then
2690 feature_not_found "brlapi" "Install brlapi devel"
2696 ##########################################
2698 if test "$curses" != "no" ; then
2699 if test "$mingw32" = "yes" ; then
2700 curses_list="-lpdcurses"
2702 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2708 const char *s = curses_version();
2714 for curses_lib in $curses_list; do
2716 if compile_prog "" "$curses_lib" ; then
2718 libs_softmmu="$curses_lib $libs_softmmu"
2723 if test "$curses_found" = "yes" ; then
2726 if test "$curses" = "yes" ; then
2727 feature_not_found "curses" "Install ncurses devel"
2733 ##########################################
2735 if test "$curl" != "no" ; then
2736 if $pkg_config libcurl --exists; then
2737 curlconfig="$pkg_config libcurl"
2739 curlconfig=curl-config
2742 #include <curl/curl.h>
2743 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2745 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2746 curl_libs=`$curlconfig --libs 2>/dev/null`
2747 if compile_prog "$curl_cflags" "$curl_libs" ; then
2750 if test "$curl" = "yes" ; then
2751 feature_not_found "curl" "Install libcurl devel"
2757 ##########################################
2758 # bluez support probe
2759 if test "$bluez" != "no" ; then
2761 #include <bluetooth/bluetooth.h>
2762 int main(void) { return bt_error(0); }
2764 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2765 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2766 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2768 libs_softmmu="$bluez_libs $libs_softmmu"
2770 if test "$bluez" = "yes" ; then
2771 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2777 ##########################################
2778 # glib support probe
2781 glib_modules=gthread-2.0
2782 if test "$modules" = yes; then
2783 glib_modules="$glib_modules gmodule-2.0"
2786 for i in $glib_modules; do
2787 if $pkg_config --atleast-version=$glib_req_ver $i; then
2788 glib_cflags=`$pkg_config --cflags $i`
2789 glib_libs=`$pkg_config --libs $i`
2790 CFLAGS="$glib_cflags $CFLAGS"
2791 LIBS="$glib_libs $LIBS"
2792 libs_qga="$glib_libs $libs_qga"
2794 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2798 # g_test_trap_subprocess added in 2.38. Used by some tests.
2800 if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2804 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2807 int main(void) { return 0; }
2809 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2810 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2811 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2812 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2816 ##########################################
2817 # SHA command probe for modules
2818 if test "$modules" = yes; then
2819 shacmd_probe="sha1sum sha1 shasum"
2820 for c in $shacmd_probe; do
2826 if test "$shacmd" = ""; then
2827 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2831 ##########################################
2832 # pixman support probe
2834 if test "$pixman" = ""; then
2835 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2837 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
2843 if test "$pixman" = "none"; then
2844 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2845 error_exit "pixman disabled but system emulation or tools build" \
2846 "enabled. You can turn off pixman only if you also" \
2847 "disable all system emulation targets and the tools" \
2848 "build with '--disable-tools --disable-system'."
2852 elif test "$pixman" = "system"; then
2853 # pixman version has been checked above
2854 pixman_cflags=`$pkg_config --cflags pixman-1`
2855 pixman_libs=`$pkg_config --libs pixman-1`
2857 if test ! -d ${source_path}/pixman/pixman; then
2858 error_exit "pixman >= 0.21.8 not present. Your options:" \
2859 " (1) Preferred: Install the pixman devel package (any recent" \
2860 " distro should have packages as Xorg needs pixman too)." \
2861 " (2) Fetch the pixman submodule, using:" \
2862 " git submodule update --init pixman"
2864 mkdir -p pixman/pixman
2865 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2866 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2869 ##########################################
2872 if test "$cap" != "no" ; then
2875 #include <sys/capability.h>
2876 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2878 if compile_prog "" "-lcap" ; then
2885 ##########################################
2887 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2891 #include <pthread.h>
2892 static void *f(void *p) { return NULL; }
2895 pthread_create(&thread, 0, f, 0);
2899 if compile_prog "" "" ; then
2902 for pthread_lib in $PTHREADLIBS_LIST; do
2903 if compile_prog "" "$pthread_lib" ; then
2906 for lib_entry in $LIBS; do
2907 if test "$lib_entry" = "$pthread_lib"; then
2912 if test "$found" = "no"; then
2913 LIBS="$pthread_lib $LIBS"
2920 if test "$mingw32" != yes -a "$pthread" = no; then
2921 error_exit "pthread check failed" \
2922 "Make sure to have the pthread libs and headers installed."
2925 # check for pthread_setname_np
2926 pthread_setname_np=no
2928 #include <pthread.h>
2930 static void *f(void *p) { return NULL; }
2934 pthread_create(&thread, 0, f, 0);
2935 pthread_setname_np(thread, "QEMU");
2939 if compile_prog "" "$pthread_lib" ; then
2940 pthread_setname_np=yes
2943 ##########################################
2945 if test "$rbd" != "no" ; then
2948 #include <rbd/librbd.h>
2951 rados_create(&cluster, NULL);
2955 rbd_libs="-lrbd -lrados"
2956 if compile_prog "" "$rbd_libs" ; then
2959 if test "$rbd" = "yes" ; then
2960 feature_not_found "rados block device" "Install librbd/ceph devel"
2966 ##########################################
2968 min_libssh2_version=1.2.8
2969 if test "$libssh2" != "no" ; then
2970 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
2971 libssh2_cflags=`$pkg_config libssh2 --cflags`
2972 libssh2_libs=`$pkg_config libssh2 --libs`
2975 if test "$libssh2" = "yes" ; then
2976 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
2982 ##########################################
2983 # libssh2_sftp_fsync probe
2985 if test "$libssh2" = "yes"; then
2988 #include <libssh2.h>
2989 #include <libssh2_sftp.h>
2991 LIBSSH2_SESSION *session;
2993 LIBSSH2_SFTP_HANDLE *sftp_handle;
2994 session = libssh2_session_init ();
2995 sftp = libssh2_sftp_init (session);
2996 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2997 libssh2_sftp_fsync (sftp_handle);
3001 # libssh2_cflags/libssh2_libs defined in previous test.
3002 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3003 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3007 ##########################################
3010 if test "$linux_aio" != "no" ; then
3013 #include <sys/eventfd.h>
3015 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3017 if compile_prog "" "-laio" ; then
3020 if test "$linux_aio" = "yes" ; then
3021 feature_not_found "linux AIO" "Install libaio devel"
3027 ##########################################
3028 # TPM passthrough is only on x86 Linux
3030 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3031 tpm_passthrough=$tpm
3036 ##########################################
3039 if test "$attr" != "no" ; then
3042 #include <sys/types.h>
3043 #ifdef CONFIG_LIBATTR
3044 #include <attr/xattr.h>
3046 #include <sys/xattr.h>
3048 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3050 if compile_prog "" "" ; then
3052 # Older distros have <attr/xattr.h>, and need -lattr:
3053 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3058 if test "$attr" = "yes" ; then
3059 feature_not_found "ATTR" "Install libc6 or libattr devel"
3065 ##########################################
3068 #include <sys/types.h>
3069 #include <sys/uio.h>
3071 int main(void) { return sizeof(struct iovec); }
3074 if compile_prog "" "" ; then
3078 ##########################################
3081 #include <sys/types.h>
3082 #include <sys/uio.h>
3084 int main(void) { return preadv(0, 0, 0, 0); }
3087 if compile_prog "" "" ; then
3091 ##########################################
3093 # fdt support is mandatory for at least some target architectures,
3094 # so insist on it if we're building those system emulators.
3096 for target in $target_list; do
3098 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3104 if test "$fdt_required" = "yes"; then
3105 if test "$fdt" = "no"; then
3106 error_exit "fdt disabled but some requested targets require it." \
3107 "You can turn off fdt only if you also disable all the system emulation" \
3108 "targets which need it (by specifying a cut down --target-list)."
3113 if test "$fdt" != "no" ; then
3115 # explicitly check for libfdt_env.h as it is missing in some stable installs
3116 # and test for required functions to make sure we are on a version >= 1.4.0
3119 #include <libfdt_env.h>
3120 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3122 if compile_prog "" "$fdt_libs" ; then
3123 # system DTC is good - use it
3125 elif test -d ${source_path}/dtc/libfdt ; then
3126 # have submodule DTC - use it
3130 if [ "$pwd_is_source_path" != "y" ] ; then
3131 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3132 symlink "$source_path/dtc/scripts" "dtc/scripts"
3134 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3135 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3136 elif test "$fdt" = "yes" ; then
3137 # have neither and want - prompt for system/submodule install
3138 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3139 " (1) Preferred: Install the DTC (libfdt) devel package" \
3140 " (2) Fetch the DTC submodule, using:" \
3141 " git submodule update --init dtc"
3143 # don't have and don't want
3149 libs_softmmu="$libs_softmmu $fdt_libs"
3151 ##########################################
3152 # opengl probe (for sdl2, milkymist-tmu2)
3154 # GLX probe, used by milkymist-tmu2
3155 # this is temporary, code will be switched to egl mid-term.
3157 #include <X11/Xlib.h>
3160 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3162 if compile_prog "" "-lGL -lX11" ; then
3168 if test "$opengl" != "no" ; then
3169 opengl_pkgs="gl glesv2 epoxy egl"
3170 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
3171 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3172 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3175 if test "$opengl" = "yes" ; then
3176 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3185 ##########################################
3187 if test "$archipelago" != "no" ; then
3190 #include <xseg/xseg.h>
3191 #include <xseg/protocol.h>
3197 archipelago_libs=-lxseg
3198 if compile_prog "" "$archipelago_libs"; then
3200 libs_tools="$archipelago_libs $libs_tools"
3201 libs_softmmu="$archipelago_libs $libs_softmmu"
3203 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3204 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3205 echo "license and therefore prevent redistribution."
3207 echo "To disable Archipelago, use --disable-archipelago"
3209 if test "$archipelago" = "yes" ; then
3210 feature_not_found "Archipelago backend support" "Install libxseg devel"
3217 ##########################################
3219 if test "$glusterfs" != "no" ; then
3220 if $pkg_config --atleast-version=3 glusterfs-api; then
3222 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3223 glusterfs_libs=`$pkg_config --libs glusterfs-api`
3224 if $pkg_config --atleast-version=5 glusterfs-api; then
3225 glusterfs_discard="yes"
3227 if $pkg_config --atleast-version=6 glusterfs-api; then
3228 glusterfs_zerofill="yes"
3231 if test "$glusterfs" = "yes" ; then
3232 feature_not_found "GlusterFS backend support" \
3233 "Install glusterfs-api devel >= 3"
3239 # Check for inotify functions when we are building linux-user
3240 # emulator. This is done because older glibc versions don't
3241 # have syscall stubs for these implemented. In that case we
3242 # don't provide them even if kernel supports them.
3246 #include <sys/inotify.h>
3251 /* try to start inotify */
3252 return inotify_init();
3255 if compile_prog "" "" ; then
3261 #include <sys/inotify.h>
3266 /* try to start inotify */
3267 return inotify_init1(0);
3270 if compile_prog "" "" ; then
3274 # check if utimensat and futimens are supported
3277 #define _ATFILE_SOURCE
3280 #include <sys/stat.h>
3284 utimensat(AT_FDCWD, "foo", NULL, 0);
3289 if compile_prog "" "" ; then
3293 # check if pipe2 is there
3302 return pipe2(pipefd, O_CLOEXEC);
3305 if compile_prog "" "" ; then
3309 # check if accept4 is there
3312 #include <sys/socket.h>
3317 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3321 if compile_prog "" "" ; then
3325 # check if tee/splice is there. vmsplice was added same time.
3335 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3336 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3340 if compile_prog "" "" ; then
3344 ##########################################
3347 if test "$numa" != "no" ; then
3350 int main(void) { return numa_available(); }
3353 if compile_prog "" "-lnuma" ; then
3355 libs_softmmu="-lnuma $libs_softmmu"
3357 if test "$numa" = "yes" ; then
3358 feature_not_found "numa" "install numactl devel"
3364 ##########################################
3367 if test "$tcmalloc" = "yes" ; then
3370 int main(void) { malloc(1); return 0; }
3373 if compile_prog "" "-ltcmalloc" ; then
3374 LIBS="-ltcmalloc $LIBS"
3376 feature_not_found "tcmalloc" "install gperftools devel"
3380 ##########################################
3385 #include <sys/syscall.h>
3387 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3390 if compile_prog "" "" ; then
3394 # check if eventfd is supported
3397 #include <sys/eventfd.h>
3401 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3404 if compile_prog "" "" ; then
3408 # check for fallocate
3415 fallocate(0, 0, 0, 0);
3419 if compile_prog "" "" ; then
3423 # check for fallocate hole punching
3424 fallocate_punch_hole=no
3427 #include <linux/falloc.h>
3431 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3435 if compile_prog "" "" ; then
3436 fallocate_punch_hole=yes
3439 # check that fallocate supports range zeroing inside the file
3440 fallocate_zero_range=no
3443 #include <linux/falloc.h>
3447 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3451 if compile_prog "" "" ; then
3452 fallocate_zero_range=yes
3455 # check for posix_fallocate
3462 posix_fallocate(0, 0, 0);
3466 if compile_prog "" "" ; then
3470 # check for sync_file_range
3477 sync_file_range(0, 0, 0, 0);
3481 if compile_prog "" "" ; then
3485 # check for linux/fiemap.h and FS_IOC_FIEMAP
3488 #include <sys/ioctl.h>
3489 #include <linux/fs.h>
3490 #include <linux/fiemap.h>
3494 ioctl(0, FS_IOC_FIEMAP, 0);
3498 if compile_prog "" "" ; then
3513 if compile_prog "" "" ; then
3517 # check for ppoll support
3524 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3525 ppoll(&pfd, 1, 0, 0);
3529 if compile_prog "" "" ; then
3533 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3534 prctl_pr_set_timerslack=no
3536 #include <sys/prctl.h>
3540 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3544 if compile_prog "" "" ; then
3545 prctl_pr_set_timerslack=yes
3548 # check for epoll support
3551 #include <sys/epoll.h>
3559 if compile_prog "" "" ; then
3563 # epoll_create1 and epoll_pwait are later additions
3564 # so we must check separately for their presence
3567 #include <sys/epoll.h>
3571 /* Note that we use epoll_create1 as a value, not as
3572 * a function being called. This is necessary so that on
3573 * old SPARC glibc versions where the function was present in
3574 * the library but not declared in the header file we will
3575 * fail the configure check. (Otherwise we will get a compiler
3576 * warning but not an error, and will proceed to fail the
3577 * qemu compile where we compile with -Werror.)
3579 return (int)(uintptr_t)&epoll_create1;
3582 if compile_prog "" "" ; then
3588 #include <sys/epoll.h>
3592 epoll_pwait(0, 0, 0, 0, 0);
3596 if compile_prog "" "" ; then
3600 # check for sendfile support
3603 #include <sys/sendfile.h>
3607 return sendfile(0, 0, 0, 0);
3610 if compile_prog "" "" ; then
3614 # check for timerfd support (glibc 2.8 and newer)
3617 #include <sys/timerfd.h>
3621 return(timerfd_create(CLOCK_REALTIME, 0));
3624 if compile_prog "" "" ; then
3628 # check for setns and unshare support
3641 if compile_prog "" "" ; then
3645 # Check if tools are available to build documentation.
3646 if test "$docs" != "no" ; then
3647 if has makeinfo && has pod2man; then
3650 if test "$docs" = "yes" ; then
3651 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
3657 # Search for bswap_32 function
3660 #include <byteswap.h>
3661 int main(void) { return bswap_32(0); }
3663 if compile_prog "" "" ; then
3667 # Search for bswap32 function
3670 #include <sys/endian.h>
3671 #include <sys/types.h>
3672 #include <machine/bswap.h>
3673 int main(void) { return bswap32(0); }
3675 if compile_prog "" "" ; then
3679 ##########################################
3680 # Do we have libiscsi >= 1.9.0
3681 if test "$libiscsi" != "no" ; then
3682 if $pkg_config --atleast-version=1.9.0 libiscsi; then
3684 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3685 libiscsi_libs=$($pkg_config --libs libiscsi)
3687 if test "$libiscsi" = "yes" ; then
3688 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
3694 ##########################################
3698 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3700 if compile_prog "" "" ; then
3702 elif compile_prog "" "-lm" ; then
3704 libs_qga="-lm $libs_qga"
3706 error_exit "libm check failed"
3709 ##########################################
3711 # uClibc provides 2 versions of clock_gettime(), one with realtime
3712 # support and one without. This means that the clock_gettime() don't
3713 # need -lrt. We still need it for timer_create() so we check for this
3714 # function in addition.
3719 timer_create(CLOCK_REALTIME, NULL, NULL);
3720 return clock_gettime(CLOCK_REALTIME, NULL);
3724 if compile_prog "" "" ; then
3726 # we need pthread for static linking. use previous pthread test result
3727 elif compile_prog "" "$pthread_lib -lrt" ; then
3729 libs_qga="$libs_qga -lrt"
3732 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3733 "$aix" != "yes" -a "$haiku" != "yes" ; then
3734 libs_softmmu="-lutil $libs_softmmu"
3737 ##########################################
3739 if test "$spice" != "no" ; then
3742 int main(void) { spice_server_new(); return 0; }
3744 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3745 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
3746 if $pkg_config --atleast-version=0.12.0 spice-server && \
3747 $pkg_config --atleast-version=0.12.3 spice-protocol && \
3748 compile_prog "$spice_cflags" "$spice_libs" ; then
3750 libs_softmmu="$libs_softmmu $spice_libs"
3751 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
3752 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3753 spice_server_version=$($pkg_config --modversion spice-server)
3755 if test "$spice" = "yes" ; then
3756 feature_not_found "spice" \
3757 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3763 # check for libcacard for smartcard support
3765 # TODO - what's the minimal nss version we support?
3766 if test "$smartcard_nss" != "no"; then
3768 #include <pk11pub.h>
3769 int main(void) { PK11_FreeSlot(0); return 0; }
3771 # FIXME: do not include $glib_* in here
3772 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3773 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3774 test_cflags="$nss_cflags"
3775 # The header files in nss < 3.13.3 have a bug which causes them to
3776 # emit a warning. If we're going to compile QEMU with -Werror, then
3777 # test that the headers don't have this bug. Otherwise we would pass
3778 # the configure test but fail to compile QEMU later.
3779 if test "$werror" = "yes"; then
3780 test_cflags="-Werror $test_cflags"
3782 if test -n "$libtool" &&
3783 $pkg_config --atleast-version=3.12.8 nss && \
3784 compile_prog "$test_cflags" "$nss_libs"; then
3787 if test "$smartcard_nss" = "yes"; then
3788 feature_not_found "nss" "Install nss devel >= 3.12.8"
3795 if test "$libusb" != "no" ; then
3796 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
3798 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3799 libusb_libs=$($pkg_config --libs libusb-1.0)
3800 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3801 libs_softmmu="$libs_softmmu $libusb_libs"
3803 if test "$libusb" = "yes"; then
3804 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
3810 # check for usbredirparser for usb network redirection support
3811 if test "$usb_redir" != "no" ; then
3812 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
3814 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3815 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
3816 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
3817 libs_softmmu="$libs_softmmu $usb_redir_libs"
3819 if test "$usb_redir" = "yes"; then
3820 feature_not_found "usb-redir" "Install usbredir devel"
3826 ##########################################
3827 # check if we have VSS SDK headers for win
3829 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3830 case "$vss_win32_sdk" in
3831 "") vss_win32_include="-I$source_path" ;;
3832 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3833 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3834 vss_win32_include="-I$source_path/.sdk/vss"
3835 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3837 *) vss_win32_include="-I$vss_win32_sdk"
3840 #define __MIDL_user_allocate_free_DEFINED__
3841 #include <inc/win2003/vss.h>
3842 int main(void) { return VSS_CTX_BACKUP; }
3844 if compile_prog "$vss_win32_include" "" ; then
3845 guest_agent_with_vss="yes"
3846 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3847 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3849 if test "$vss_win32_sdk" != "" ; then
3850 echo "ERROR: Please download and install Microsoft VSS SDK:"
3851 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3852 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3853 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3854 echo "ERROR: The headers are extracted in the directory \`inc'."
3855 feature_not_found "VSS support"
3857 guest_agent_with_vss="no"
3861 ##########################################
3862 # lookup Windows platform SDK (if not specified)
3863 # The SDK is needed only to build .tlb (type library) file of guest agent
3864 # VSS provider from the source. It is usually unnecessary because the
3865 # pre-compiled .tlb file is included.
3867 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3868 if test -z "$win_sdk"; then
3869 programfiles="$PROGRAMFILES"
3870 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3871 if test -n "$programfiles"; then
3872 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3874 feature_not_found "Windows SDK"
3876 elif test "$win_sdk" = "no"; then
3881 ##########################################
3882 # check if mingw environment provides a recent ntddscsi.h
3883 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3885 #include <windows.h>
3886 #include <ntddscsi.h>
3888 #if !defined(IOCTL_SCSI_GET_ADDRESS)
3889 #error Missing required ioctl definitions
3891 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3895 if compile_prog "" "" ; then
3896 guest_agent_ntddscsi=yes
3897 libs_qga="-lsetupapi $libs_qga"
3901 ##########################################
3902 # Guest agent Window MSI package
3904 if test "$guest_agent" != yes; then
3905 if test "$guest_agent_msi" = yes; then
3906 error_exit "MSI guest agent package requires guest agent enabled"
3909 elif test "$mingw32" != "yes"; then
3910 if test "$guest_agent_msi" = "yes"; then
3911 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
3914 elif ! has wixl; then
3915 if test "$guest_agent_msi" = "yes"; then
3916 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3921 if test "$guest_agent_msi" != "no"; then
3922 if test "$guest_agent_with_vss" = "yes"; then
3923 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
3926 if test "$QEMU_GA_MANUFACTURER" = ""; then
3927 QEMU_GA_MANUFACTURER=QEMU
3930 if test "$QEMU_GA_DISTRO" = ""; then
3931 QEMU_GA_DISTRO=Linux
3934 if test "$QEMU_GA_VERSION" = ""; then
3935 QEMU_GA_VERSION=`cat $source_path/VERSION`
3938 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3942 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
3945 QEMU_GA_MSI_ARCH="-D Arch=32"
3948 error_exit "CPU $cpu not supported for building installation package"
3953 ##########################################
3954 # check if we have fdatasync
3960 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3961 return fdatasync(0);
3963 #error Not supported
3967 if compile_prog "" "" ; then
3971 ##########################################
3972 # check if we have madvise
3976 #include <sys/types.h>
3977 #include <sys/mman.h>
3979 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3981 if compile_prog "" "" ; then
3985 ##########################################
3986 # check if we have posix_madvise
3990 #include <sys/mman.h>
3992 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3994 if compile_prog "" "" ; then
3998 ##########################################
3999 # check if we have usable SIGEV_THREAD_ID
4006 ev.sigev_notify = SIGEV_THREAD_ID;
4007 ev._sigev_un._tid = 0;
4008 asm volatile("" : : "g"(&ev));
4012 if compile_prog "" "" ; then
4016 ##########################################
4017 # check if trace backend exists
4019 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4020 if test "$?" -ne 0 ; then
4021 error_exit "invalid trace backends" \
4022 "Please choose supported trace backends."
4025 ##########################################
4026 # For 'ust' backend, test if ust headers are present
4027 if have_backend "ust"; then
4029 #include <lttng/tracepoint.h>
4030 int main(void) { return 0; }
4032 if compile_prog "" "" ; then
4033 if $pkg_config lttng-ust --exists; then
4034 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4036 lttng_ust_libs="-llttng-ust"
4038 if $pkg_config liburcu-bp --exists; then
4039 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4041 urcu_bp_libs="-lurcu-bp"
4044 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4045 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4047 error_exit "Trace backend 'ust' missing lttng-ust header files"
4051 ##########################################
4052 # For 'dtrace' backend, test if 'dtrace' command is present
4053 if have_backend "dtrace"; then
4054 if ! has 'dtrace' ; then
4055 error_exit "dtrace command is not found in PATH $PATH"
4057 trace_backend_stap="no"
4058 if has 'stap' ; then
4059 trace_backend_stap="yes"
4063 ##########################################
4064 # check and set a backend for coroutine
4066 # We prefer ucontext, but it's not always possible. The fallback
4067 # is sigcontext. gthread is not selectable except explicitly, because
4068 # it is not functional enough to run QEMU proper. (It is occasionally
4069 # useful for debugging purposes.) On Windows the only valid backend
4070 # is the Windows-specific one.
4073 if test "$darwin" != "yes"; then
4075 #include <ucontext.h>
4076 #ifdef __stub_makecontext
4077 #error Ignoring glibc stub makecontext which will always fail
4079 int main(void) { makecontext(0, 0, 0); return 0; }
4081 if compile_prog "" "" ; then
4086 if test "$coroutine" = ""; then
4087 if test "$mingw32" = "yes"; then
4089 elif test "$ucontext_works" = "yes"; then
4092 coroutine=sigaltstack
4097 if test "$mingw32" != "yes"; then
4098 error_exit "'windows' coroutine backend only valid for Windows"
4100 # Unfortunately the user visible backend name doesn't match the
4101 # coroutine-*.c filename for this case, so we have to adjust it here.
4105 if test "$ucontext_works" != "yes"; then
4106 feature_not_found "ucontext"
4109 gthread|sigaltstack)
4110 if test "$mingw32" = "yes"; then
4111 error_exit "only the 'windows' coroutine backend is valid for Windows"
4115 error_exit "unknown coroutine backend $coroutine"
4120 if test "$coroutine_pool" = ""; then
4121 if test "$coroutine" = "gthread"; then
4127 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4128 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4131 ##########################################
4132 # check if we have open_by_handle_at
4134 open_by_handle_at=no
4137 #if !defined(AT_EMPTY_PATH)
4138 # error missing definition
4140 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4143 if compile_prog "" "" ; then
4144 open_by_handle_at=yes
4147 ########################################
4148 # check if we have linux/magic.h
4152 #include <linux/magic.h>
4157 if compile_prog "" "" ; then
4161 ########################################
4162 # check whether we can disable warning option with a pragma (this is needed
4163 # to silence warnings in the headers of some versions of external libraries).
4164 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4167 # If we can't selectively disable warning in the code, disable -Werror so that
4168 # the build doesn't fail anyway.
4170 pragma_disable_unused_but_set=no
4172 #pragma GCC diagnostic push
4173 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4174 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4175 #pragma GCC diagnostic pop
4181 if compile_prog "-Werror" "" ; then
4182 pragma_diagnostic_available=yes
4187 ########################################
4188 # check if we have valgrind/valgrind.h
4192 #include <valgrind/valgrind.h>
4197 if compile_prog "" "" ; then
4201 ########################################
4202 # check if environ is declared
4212 if compile_prog "" "" ; then
4216 ########################################
4217 # check if cpuid.h is usable.
4223 unsigned a, b, c, d;
4224 int max = __get_cpuid_max(0, 0);
4227 __cpuid(1, a, b, c, d);
4231 __cpuid_count(7, 0, a, b, c, d);
4237 if compile_prog "" "" ; then
4241 ########################################
4242 # check if __[u]int128_t is usable.
4246 #if defined(__clang_major__) && defined(__clang_minor__)
4247 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4248 # error __int128_t does not work in CLANG before 3.2
4260 if compile_prog "" "" ; then
4264 ########################################
4265 # check if getauxval is available.
4269 #include <sys/auxv.h>
4271 return getauxval(AT_HWCAP) == 0;
4274 if compile_prog "" "" ; then
4278 ########################################
4279 # check if ccache is interfering with
4280 # semantic analysis of macros
4284 static const int Z = 1;
4285 #define fn() ({ Z; })
4286 #define TAUT(X) ((X) == Z)
4287 #define PAREN(X, Y) (X == Y)
4289 int main(int argc, char *argv[])
4295 if (PAREN(x, y)) return 0;
4296 if (TAUT(Z)) return 0;
4301 if ! compile_object "-Werror"; then
4305 ##########################################
4307 # After here, no more $cc or $ld runs
4309 if test "$gcov" = "yes" ; then
4310 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4311 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4312 elif test "$debug" = "no" ; then
4313 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4316 ##########################################
4318 if test "$libnfs" != "no" ; then
4319 if $pkg_config --atleast-version=1.9.3 libnfs; then
4321 libnfs_libs=$($pkg_config --libs libnfs)
4322 LIBS="$LIBS $libnfs_libs"
4324 if test "$libnfs" = "yes" ; then
4325 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4331 # Disable zero malloc errors for official releases unless explicitly told to
4333 if test -z "$zero_malloc" ; then
4334 if test "$z_version" = "50" ; then
4341 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4342 if test "$werror" = "yes"; then
4343 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4346 if test "$solaris" = "no" ; then
4347 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
4348 LDFLAGS="-Wl,--warn-common $LDFLAGS"
4352 # test if pod2man has --utf8 option
4353 if pod2man --help | grep -q utf8; then
4354 POD2MAN="pod2man --utf8"
4359 # Use ASLR, no-SEH and DEP if available
4360 if test "$mingw32" = "yes" ; then
4361 for flag in --dynamicbase --no-seh --nxcompat; do
4362 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4363 LDFLAGS="-Wl,$flag $LDFLAGS"
4368 qemu_confdir=$sysconfdir$confsuffix
4369 qemu_moddir=$libdir$confsuffix
4370 qemu_datadir=$datadir$confsuffix
4371 qemu_localedir="$datadir/locale"
4374 if test "$want_tools" = "yes" ; then
4375 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4376 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4377 tools="qemu-nbd\$(EXESUF) $tools"
4380 if test "$softmmu" = yes ; then
4381 if test "$virtfs" != no ; then
4382 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4384 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4386 if test "$virtfs" = yes; then
4387 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4393 if [ "$guest_agent" != "no" ]; then
4394 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4395 tools="qemu-ga\$(EXESUF) $tools"
4396 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4397 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4400 elif [ "$guest_agent" != yes ]; then
4403 error_exit "Guest agent is not supported on this platform"
4407 # Mac OS X ships with a broken assembler
4409 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4410 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4411 "$softmmu" = yes ; then
4414 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4415 roms="$roms spapr-rtas"
4418 if test "$cpu" = "s390x" ; then
4419 roms="$roms s390-ccw"
4422 # Probe for the need for relocating the user-only binary.
4423 if test "$pie" = "no" ; then
4426 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4427 # ??? Rationale for choosing this address
4428 textseg_addr=0x60000000
4431 # A 256M aligned address, high in the address space, with enough
4432 # room for the code_gen_buffer above it before the stack.
4433 textseg_addr=0x60000000
4436 if [ -n "$textseg_addr" ]; then
4438 int main(void) { return 0; }
4440 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4441 if ! compile_prog "" "$textseg_ldflags"; then
4442 # In case ld does not support -Ttext-segment, edit the default linker
4443 # script via sed to set the .text start addr. This is needed on FreeBSD
4445 $ld --verbose | sed \
4446 -e '1,/==================================================/d' \
4447 -e '/==================================================/,$d' \
4448 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4449 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4450 textseg_ldflags="-Wl,-T../config-host.ld"
4455 # prepend pixman and ftd flags after all config tests are done
4456 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4457 libs_softmmu="$pixman_libs $libs_softmmu"
4459 echo "Install prefix $prefix"
4460 echo "BIOS directory `eval echo $qemu_datadir`"
4461 echo "binary directory `eval echo $bindir`"
4462 echo "library directory `eval echo $libdir`"
4463 echo "module directory `eval echo $qemu_moddir`"
4464 echo "libexec directory `eval echo $libexecdir`"
4465 echo "include directory `eval echo $includedir`"
4466 echo "config directory `eval echo $sysconfdir`"
4467 if test "$mingw32" = "no" ; then
4468 echo "local state directory `eval echo $local_statedir`"
4469 echo "Manual directory `eval echo $mandir`"
4470 echo "ELF interp prefix $interp_prefix"
4472 echo "local state directory queried at runtime"
4473 echo "Windows SDK $win_sdk"
4475 echo "Source path $source_path"
4476 echo "C compiler $cc"
4477 echo "Host C compiler $host_cc"
4478 echo "C++ compiler $cxx"
4479 echo "Objective-C compiler $objcc"
4480 echo "ARFLAGS $ARFLAGS"
4481 echo "CFLAGS $CFLAGS"
4482 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4483 echo "LDFLAGS $LDFLAGS"
4485 echo "install $install"
4486 echo "python $python"
4487 if test "$slirp" = "yes" ; then
4490 echo "module support $modules"
4491 echo "host CPU $cpu"
4492 echo "host big endian $bigendian"
4493 echo "target list $target_list"
4494 echo "tcg debug enabled $debug_tcg"
4495 echo "gprof enabled $gprof"
4496 echo "sparse enabled $sparse"
4497 echo "strip binaries $strip_opt"
4498 echo "profiler $profiler"
4499 echo "static build $static"
4500 if test "$darwin" = "yes" ; then
4501 echo "Cocoa support $cocoa"
4503 echo "pixman $pixman"
4504 echo "SDL support $sdl"
4505 echo "GTK support $gtk"
4506 echo "GNUTLS support $gnutls"
4507 echo "GNUTLS hash $gnutls_hash"
4508 echo "GNUTLS gcrypt $gnutls_gcrypt"
4509 echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
4510 echo "VTE support $vte"
4511 echo "curses support $curses"
4512 echo "curl support $curl"
4513 echo "mingw32 support $mingw32"
4514 echo "Audio drivers $audio_drv_list"
4515 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4516 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4517 echo "VirtFS support $virtfs"
4518 echo "VNC support $vnc"
4519 if test "$vnc" = "yes" ; then
4520 echo "VNC TLS support $vnc_tls"
4521 echo "VNC SASL support $vnc_sasl"
4522 echo "VNC JPEG support $vnc_jpeg"
4523 echo "VNC PNG support $vnc_png"
4525 if test -n "$sparc_cpu"; then
4526 echo "Target Sparc Arch $sparc_cpu"
4528 echo "xen support $xen"
4529 if test "$xen" = "yes" ; then
4530 echo "xen ctrl version $xen_ctrl_version"
4532 echo "brlapi support $brlapi"
4533 echo "bluez support $bluez"
4534 echo "Documentation $docs"
4535 echo "GUEST_BASE $guest_base"
4537 echo "vde support $vde"
4538 echo "netmap support $netmap"
4539 echo "Linux AIO support $linux_aio"
4540 echo "ATTR/XATTR support $attr"
4541 echo "Install blobs $blobs"
4542 echo "KVM support $kvm"
4543 echo "RDMA support $rdma"
4544 echo "TCG interpreter $tcg_interpreter"
4545 echo "fdt support $fdt"
4546 echo "preadv support $preadv"
4547 echo "fdatasync $fdatasync"
4548 echo "madvise $madvise"
4549 echo "posix_madvise $posix_madvise"
4550 echo "sigev_thread_id $sigev_thread_id"
4551 echo "uuid support $uuid"
4552 echo "libcap-ng support $cap_ng"
4553 echo "vhost-net support $vhost_net"
4554 echo "vhost-scsi support $vhost_scsi"
4555 echo "Trace backends $trace_backends"
4556 if test "$trace_backend" = "simple"; then
4557 echo "Trace output file $trace_file-<pid>"
4559 if test "$spice" = "yes"; then
4560 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4562 echo "spice support $spice"
4564 echo "rbd support $rbd"
4565 echo "xfsctl support $xfs"
4566 echo "nss used $smartcard_nss"
4567 echo "libusb $libusb"
4568 echo "usb net redir $usb_redir"
4569 echo "OpenGL support $opengl"
4570 echo "libiscsi support $libiscsi"
4571 echo "libnfs support $libnfs"
4572 echo "build guest agent $guest_agent"
4573 echo "QGA VSS support $guest_agent_with_vss"
4574 echo "QGA w32 disk info $guest_agent_ntddscsi"
4575 echo "seccomp support $seccomp"
4576 echo "coroutine backend $coroutine"
4577 echo "coroutine pool $coroutine_pool"
4578 echo "GlusterFS support $glusterfs"
4579 echo "Archipelago support $archipelago"
4580 echo "gcov $gcov_tool"
4581 echo "gcov enabled $gcov"
4582 echo "TPM support $tpm"
4583 echo "libssh2 support $libssh2"
4584 echo "TPM passthrough $tpm_passthrough"
4585 echo "QOM debugging $qom_cast_debug"
4587 echo "lzo support $lzo"
4588 echo "snappy support $snappy"
4589 echo "bzip2 support $bzip2"
4590 echo "NUMA host support $numa"
4591 echo "tcmalloc support $tcmalloc"
4593 if test "$sdl_too_old" = "yes"; then
4594 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4597 config_host_mak="config-host.mak"
4599 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4601 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4602 echo >> $config_host_mak
4604 echo all: >> $config_host_mak
4605 echo "prefix=$prefix" >> $config_host_mak
4606 echo "bindir=$bindir" >> $config_host_mak
4607 echo "libdir=$libdir" >> $config_host_mak
4608 echo "libexecdir=$libexecdir" >> $config_host_mak
4609 echo "includedir=$includedir" >> $config_host_mak
4610 echo "mandir=$mandir" >> $config_host_mak
4611 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4612 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4613 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4614 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4615 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4616 if test "$mingw32" = "no" ; then
4617 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4619 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4620 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4621 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4622 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4623 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4625 echo "ARCH=$ARCH" >> $config_host_mak
4627 if test "$debug_tcg" = "yes" ; then
4628 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4630 if test "$strip_opt" = "yes" ; then
4631 echo "STRIP=${strip}" >> $config_host_mak
4633 if test "$bigendian" = "yes" ; then
4634 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4636 if test "$mingw32" = "yes" ; then
4637 echo "CONFIG_WIN32=y" >> $config_host_mak
4638 rc_version=`cat $source_path/VERSION`
4639 version_major=${rc_version%%.*}
4640 rc_version=${rc_version#*.}
4641 version_minor=${rc_version%%.*}
4642 rc_version=${rc_version#*.}
4643 version_subminor=${rc_version%%.*}
4645 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4646 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4647 if test "$guest_agent_with_vss" = "yes" ; then
4648 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4649 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4651 if test "$guest_agent_ntddscsi" = "yes" ; then
4652 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4654 if test "$guest_agent_msi" != "no"; then
4655 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4656 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4657 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4658 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4659 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4660 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4661 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4664 echo "CONFIG_POSIX=y" >> $config_host_mak
4667 if test "$linux" = "yes" ; then
4668 echo "CONFIG_LINUX=y" >> $config_host_mak
4671 if test "$darwin" = "yes" ; then
4672 echo "CONFIG_DARWIN=y" >> $config_host_mak
4675 if test "$aix" = "yes" ; then
4676 echo "CONFIG_AIX=y" >> $config_host_mak
4679 if test "$solaris" = "yes" ; then
4680 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4681 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4682 if test "$needs_libsunmath" = "yes" ; then
4683 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4686 if test "$haiku" = "yes" ; then
4687 echo "CONFIG_HAIKU=y" >> $config_host_mak
4689 if test "$static" = "yes" ; then
4690 echo "CONFIG_STATIC=y" >> $config_host_mak
4692 if test "$profiler" = "yes" ; then
4693 echo "CONFIG_PROFILER=y" >> $config_host_mak
4695 if test "$slirp" = "yes" ; then
4696 echo "CONFIG_SLIRP=y" >> $config_host_mak
4697 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4699 if test "$vde" = "yes" ; then
4700 echo "CONFIG_VDE=y" >> $config_host_mak
4702 if test "$netmap" = "yes" ; then
4703 echo "CONFIG_NETMAP=y" >> $config_host_mak
4705 if test "$l2tpv3" = "yes" ; then
4706 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4708 if test "$cap_ng" = "yes" ; then
4709 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4711 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4712 for drv in $audio_drv_list; do
4713 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4714 echo "$def=y" >> $config_host_mak
4716 if test "$audio_pt_int" = "yes" ; then
4717 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4719 if test "$audio_win_int" = "yes" ; then
4720 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4722 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4723 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4724 if test "$vnc" = "yes" ; then
4725 echo "CONFIG_VNC=y" >> $config_host_mak
4727 if test "$vnc_tls" = "yes" ; then
4728 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4730 if test "$vnc_sasl" = "yes" ; then
4731 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4733 if test "$vnc_jpeg" = "yes" ; then
4734 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4736 if test "$vnc_png" = "yes" ; then
4737 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4739 if test "$fnmatch" = "yes" ; then
4740 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4742 if test "$uuid" = "yes" ; then
4743 echo "CONFIG_UUID=y" >> $config_host_mak
4745 if test "$xfs" = "yes" ; then
4746 echo "CONFIG_XFS=y" >> $config_host_mak
4748 qemu_version=`head $source_path/VERSION`
4749 echo "VERSION=$qemu_version" >>$config_host_mak
4750 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4751 echo "SRC_PATH=$source_path" >> $config_host_mak
4752 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4753 if [ "$docs" = "yes" ] ; then
4754 echo "BUILD_DOCS=yes" >> $config_host_mak
4756 if test "$modules" = "yes"; then
4757 # $shacmd can generate a hash started with digit, which the compiler doesn't
4758 # like as an symbol. So prefix it with an underscore
4759 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4760 echo "CONFIG_MODULES=y" >> $config_host_mak
4762 if test "$sdl" = "yes" ; then
4763 echo "CONFIG_SDL=y" >> $config_host_mak
4764 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4765 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4767 if test "$cocoa" = "yes" ; then
4768 echo "CONFIG_COCOA=y" >> $config_host_mak
4770 if test "$curses" = "yes" ; then
4771 echo "CONFIG_CURSES=y" >> $config_host_mak
4773 if test "$utimens" = "yes" ; then
4774 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4776 if test "$pipe2" = "yes" ; then
4777 echo "CONFIG_PIPE2=y" >> $config_host_mak
4779 if test "$accept4" = "yes" ; then
4780 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4782 if test "$splice" = "yes" ; then
4783 echo "CONFIG_SPLICE=y" >> $config_host_mak
4785 if test "$eventfd" = "yes" ; then
4786 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4788 if test "$fallocate" = "yes" ; then
4789 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4791 if test "$fallocate_punch_hole" = "yes" ; then
4792 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4794 if test "$fallocate_zero_range" = "yes" ; then
4795 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4797 if test "$posix_fallocate" = "yes" ; then
4798 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4800 if test "$sync_file_range" = "yes" ; then
4801 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4803 if test "$fiemap" = "yes" ; then
4804 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4806 if test "$dup3" = "yes" ; then
4807 echo "CONFIG_DUP3=y" >> $config_host_mak
4809 if test "$ppoll" = "yes" ; then
4810 echo "CONFIG_PPOLL=y" >> $config_host_mak
4812 if test "$prctl_pr_set_timerslack" = "yes" ; then
4813 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4815 if test "$epoll" = "yes" ; then
4816 echo "CONFIG_EPOLL=y" >> $config_host_mak
4818 if test "$epoll_create1" = "yes" ; then
4819 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4821 if test "$epoll_pwait" = "yes" ; then
4822 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4824 if test "$sendfile" = "yes" ; then
4825 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4827 if test "$timerfd" = "yes" ; then
4828 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4830 if test "$setns" = "yes" ; then
4831 echo "CONFIG_SETNS=y" >> $config_host_mak
4833 if test "$inotify" = "yes" ; then
4834 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4836 if test "$inotify1" = "yes" ; then
4837 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4839 if test "$byteswap_h" = "yes" ; then
4840 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4842 if test "$bswap_h" = "yes" ; then
4843 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4845 if test "$curl" = "yes" ; then
4846 echo "CONFIG_CURL=m" >> $config_host_mak
4847 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4848 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4850 if test "$brlapi" = "yes" ; then
4851 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4853 if test "$bluez" = "yes" ; then
4854 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4855 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4857 if test "$glib_subprocess" = "yes" ; then
4858 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4860 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4861 if test "$gtk" = "yes" ; then
4862 echo "CONFIG_GTK=y" >> $config_host_mak
4863 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4864 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4866 if test "$gnutls" = "yes" ; then
4867 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4869 if test "$gnutls_hash" = "yes" ; then
4870 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4872 if test "$gnutls_gcrypt" = "yes" ; then
4873 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4875 if test "$gnutls_nettle" = "yes" ; then
4876 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
4877 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
4879 if test "$vte" = "yes" ; then
4880 echo "CONFIG_VTE=y" >> $config_host_mak
4881 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4883 if test "$xen" = "yes" ; then
4884 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4885 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4887 if test "$linux_aio" = "yes" ; then
4888 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4890 if test "$attr" = "yes" ; then
4891 echo "CONFIG_ATTR=y" >> $config_host_mak
4893 if test "$libattr" = "yes" ; then
4894 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4896 if test "$virtfs" = "yes" ; then
4897 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4899 if test "$vhost_scsi" = "yes" ; then
4900 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4902 if test "$vhost_net" = "yes" ; then
4903 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4905 if test "$blobs" = "yes" ; then
4906 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4908 if test "$iovec" = "yes" ; then
4909 echo "CONFIG_IOVEC=y" >> $config_host_mak
4911 if test "$preadv" = "yes" ; then
4912 echo "CONFIG_PREADV=y" >> $config_host_mak
4914 if test "$fdt" = "yes" ; then
4915 echo "CONFIG_FDT=y" >> $config_host_mak
4917 if test "$signalfd" = "yes" ; then
4918 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4920 if test "$tcg_interpreter" = "yes" ; then
4921 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4923 if test "$fdatasync" = "yes" ; then
4924 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4926 if test "$madvise" = "yes" ; then
4927 echo "CONFIG_MADVISE=y" >> $config_host_mak
4929 if test "$posix_madvise" = "yes" ; then
4930 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4932 if test "$sigev_thread_id" = "yes" ; then
4933 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4936 if test "$spice" = "yes" ; then
4937 echo "CONFIG_SPICE=y" >> $config_host_mak
4940 if test "$smartcard_nss" = "yes" ; then
4941 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4942 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4943 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4946 if test "$libusb" = "yes" ; then
4947 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4950 if test "$usb_redir" = "yes" ; then
4951 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4954 if test "$opengl" = "yes" ; then
4955 echo "CONFIG_OPENGL=y" >> $config_host_mak
4956 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4957 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4960 if test "$lzo" = "yes" ; then
4961 echo "CONFIG_LZO=y" >> $config_host_mak
4964 if test "$snappy" = "yes" ; then
4965 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4968 if test "$bzip2" = "yes" ; then
4969 echo "CONFIG_BZIP2=y" >> $config_host_mak
4970 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4973 if test "$libiscsi" = "yes" ; then
4974 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4975 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4976 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4979 if test "$libnfs" = "yes" ; then
4980 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4983 if test "$seccomp" = "yes"; then
4984 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4987 # XXX: suppress that
4988 if [ "$bsd" = "yes" ] ; then
4989 echo "CONFIG_BSD=y" >> $config_host_mak
4992 if test "$zero_malloc" = "yes" ; then
4993 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4995 if test "$qom_cast_debug" = "yes" ; then
4996 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4998 if test "$rbd" = "yes" ; then
4999 echo "CONFIG_RBD=m" >> $config_host_mak
5000 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5001 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5004 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5005 if test "$coroutine_pool" = "yes" ; then
5006 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5008 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5011 if test "$open_by_handle_at" = "yes" ; then
5012 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5015 if test "$linux_magic_h" = "yes" ; then
5016 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5019 if test "$pragma_diagnostic_available" = "yes" ; then
5020 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5023 if test "$valgrind_h" = "yes" ; then
5024 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5027 if test "$has_environ" = "yes" ; then
5028 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5031 if test "$cpuid_h" = "yes" ; then
5032 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5035 if test "$int128" = "yes" ; then
5036 echo "CONFIG_INT128=y" >> $config_host_mak
5039 if test "$getauxval" = "yes" ; then
5040 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5043 if test "$glusterfs" = "yes" ; then
5044 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5045 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5046 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5049 if test "$glusterfs_discard" = "yes" ; then
5050 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5053 if test "$glusterfs_zerofill" = "yes" ; then
5054 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5057 if test "$archipelago" = "yes" ; then
5058 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5059 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5062 if test "$libssh2" = "yes" ; then
5063 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5064 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5065 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5068 if test "$vhdx" = "yes" ; then
5069 echo "CONFIG_VHDX=y" >> $config_host_mak
5073 if test "$libusb" = "yes"; then
5074 echo "HOST_USB=libusb legacy" >> $config_host_mak
5076 echo "HOST_USB=stub" >> $config_host_mak
5079 # TPM passthrough support?
5080 if test "$tpm" = "yes"; then
5081 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5082 if test "$tpm_passthrough" = "yes"; then
5083 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5087 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5088 if have_backend "nop"; then
5089 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5091 if have_backend "simple"; then
5092 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5093 # Set the appropriate trace file.
5094 trace_file="\"$trace_file-\" FMT_pid"
5096 if have_backend "stderr"; then
5097 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5099 if have_backend "ust"; then
5100 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5102 if have_backend "dtrace"; then
5103 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5104 if test "$trace_backend_stap" = "yes" ; then
5105 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5108 if have_backend "ftrace"; then
5109 if test "$linux" = "yes" ; then
5110 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5112 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5115 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5117 if test "$rdma" = "yes" ; then
5118 echo "CONFIG_RDMA=y" >> $config_host_mak
5121 # Hold two types of flag:
5122 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5123 # a thread we have a handle to
5124 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5126 if test "$pthread_setname_np" = "yes" ; then
5127 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5128 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5131 if test "$tcg_interpreter" = "yes"; then
5132 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5133 elif test "$ARCH" = "sparc64" ; then
5134 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5135 elif test "$ARCH" = "s390x" ; then
5136 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5137 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5138 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5139 elif test "$ARCH" = "ppc64" ; then
5140 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5142 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5144 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5146 echo "TOOLS=$tools" >> $config_host_mak
5147 echo "ROMS=$roms" >> $config_host_mak
5148 echo "MAKE=$make" >> $config_host_mak
5149 echo "INSTALL=$install" >> $config_host_mak
5150 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5151 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5152 if test -n "$libtool"; then
5153 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5154 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5156 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5157 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5159 echo "PYTHON=$python" >> $config_host_mak
5160 echo "CC=$cc" >> $config_host_mak
5161 if $iasl -h > /dev/null 2>&1; then
5162 echo "IASL=$iasl" >> $config_host_mak
5164 echo "CC_I386=$cc_i386" >> $config_host_mak
5165 echo "HOST_CC=$host_cc" >> $config_host_mak
5166 echo "CXX=$cxx" >> $config_host_mak
5167 echo "OBJCC=$objcc" >> $config_host_mak
5168 echo "AR=$ar" >> $config_host_mak
5169 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5170 echo "AS=$as" >> $config_host_mak
5171 echo "CPP=$cpp" >> $config_host_mak
5172 echo "OBJCOPY=$objcopy" >> $config_host_mak
5173 echo "LD=$ld" >> $config_host_mak
5174 echo "NM=$nm" >> $config_host_mak
5175 echo "WINDRES=$windres" >> $config_host_mak
5176 echo "LIBTOOL=$libtool" >> $config_host_mak
5177 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5178 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5179 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5180 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5181 if test "$sparse" = "yes" ; then
5182 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5183 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5184 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5185 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5186 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5188 if test "$cross_prefix" != ""; then
5189 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5191 echo "AUTOCONF_HOST := " >> $config_host_mak
5193 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5194 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5195 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5196 echo "LIBS+=$LIBS" >> $config_host_mak
5197 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5198 echo "EXESUF=$EXESUF" >> $config_host_mak
5199 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5200 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5201 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5202 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5203 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5204 if test "$gcov" = "yes" ; then
5205 echo "CONFIG_GCOV=y" >> $config_host_mak
5206 echo "GCOV=$gcov_tool" >> $config_host_mak
5209 # use included Linux headers
5210 if test "$linux" = "yes" ; then
5211 mkdir -p linux-headers
5229 # For most CPUs the kernel architecture name and QEMU CPU name match.
5233 # For non-KVM architectures we will not have asm headers
5234 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5235 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5239 for target in $target_list; do
5240 target_dir="$target"
5241 config_target_mak=$target_dir/config-target.mak
5242 target_name=`echo $target | cut -d '-' -f 1`
5243 target_bigendian="no"
5245 case "$target_name" in
5246 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5247 target_bigendian=yes
5251 target_user_only="no"
5252 target_linux_user="no"
5253 target_bsd_user="no"
5255 ${target_name}-softmmu)
5256 target_softmmu="yes"
5258 ${target_name}-linux-user)
5259 if test "$linux" != "yes" ; then
5260 error_exit "Target '$target' is only available on a Linux host"
5262 target_user_only="yes"
5263 target_linux_user="yes"
5265 ${target_name}-bsd-user)
5266 if test "$bsd" != "yes" ; then
5267 error_exit "Target '$target' is only available on a BSD host"
5269 target_user_only="yes"
5270 target_bsd_user="yes"
5273 error_exit "Target '$target' not recognised"
5278 mkdir -p $target_dir
5279 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5282 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5285 TARGET_ARCH="$target_name"
5289 case "$target_name" in
5293 TARGET_BASE_ARCH=i386
5300 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5303 TARGET_BASE_ARCH=arm
5305 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5313 gdb_xml_files="cf-core.xml cf-fp.xml"
5315 microblaze|microblazeel)
5316 TARGET_ARCH=microblaze
5321 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5325 TARGET_BASE_ARCH=mips
5326 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5327 echo "TARGET_ABI32=y" >> $config_target_mak
5331 TARGET_BASE_ARCH=mips
5332 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5337 TARGET_ARCH=openrisc
5338 TARGET_BASE_ARCH=openrisc
5341 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5344 TARGET_BASE_ARCH=ppc
5346 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5349 TARGET_BASE_ARCH=ppc
5351 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5355 TARGET_BASE_ARCH=ppc
5357 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5361 TARGET_BASE_ARCH=ppc
5363 echo "TARGET_ABI32=y" >> $config_target_mak
5364 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5373 TARGET_BASE_ARCH=sparc
5377 TARGET_BASE_ARCH=sparc
5378 TARGET_ABI_DIR=sparc
5379 echo "TARGET_ABI32=y" >> $config_target_mak
5382 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5392 error_exit "Unsupported target CPU"
5395 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5396 if [ "$TARGET_BASE_ARCH" = "" ]; then
5397 TARGET_BASE_ARCH=$TARGET_ARCH
5400 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5403 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5406 target_arch_name="`upper $TARGET_ARCH`"
5407 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5408 echo "TARGET_NAME=$target_name" >> $config_target_mak
5409 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5410 if [ "$TARGET_ABI_DIR" = "" ]; then
5411 TARGET_ABI_DIR=$TARGET_ARCH
5413 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5414 if [ "$HOST_VARIANT_DIR" != "" ]; then
5415 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5417 case "$target_name" in
5419 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5420 echo "CONFIG_XEN=y" >> $config_target_mak
5421 if test "$xen_pci_passthrough" = yes; then
5422 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5428 case "$target_name" in
5429 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
5430 # Make sure the target and host cpus are compatible
5431 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5432 \( "$target_name" = "$cpu" -o \
5433 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5434 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5435 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5436 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
5437 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
5438 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
5439 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5440 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5441 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
5442 echo "CONFIG_KVM=y" >> $config_target_mak
5443 if test "$vhost_net" = "yes" ; then
5444 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5448 if test "$target_bigendian" = "yes" ; then
5449 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5451 if test "$target_softmmu" = "yes" ; then
5452 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5454 if test "$target_user_only" = "yes" ; then
5455 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5456 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5458 if test "$target_linux_user" = "yes" ; then
5459 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5462 if test ! -z "$gdb_xml_files" ; then
5463 for x in $gdb_xml_files; do
5464 list="$list $source_path/gdb-xml/$x"
5466 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5469 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5470 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5472 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5473 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5475 if test "$target_bsd_user" = "yes" ; then
5476 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5479 # generate QEMU_CFLAGS/LDFLAGS for targets
5484 for i in $ARCH $TARGET_BASE_ARCH ; do
5487 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5488 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5491 if test -n "${cxx}"; then
5492 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5493 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5497 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5498 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5499 if test -n "${cxx}"; then
5500 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5501 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5505 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5506 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5509 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5510 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5513 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5514 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5517 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5518 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5521 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5522 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5525 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5526 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5529 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5530 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5533 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5534 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5537 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5538 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5541 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5542 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5545 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5546 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5549 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5550 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5553 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5554 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5557 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5558 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5561 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5562 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5566 if test "$tcg_interpreter" = "yes" ; then
5567 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5568 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5573 # Ensure there's only a single GP
5574 cflags="-msmall-data $cflags"
5578 if test "$gprof" = "yes" ; then
5579 echo "TARGET_GPROF=yes" >> $config_target_mak
5580 if test "$target_linux_user" = "yes" ; then
5582 ldflags="-p $ldflags"
5584 if test "$target_softmmu" = "yes" ; then
5585 ldflags="-p $ldflags"
5586 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5590 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5591 ldflags="$ldflags $textseg_ldflags"
5594 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5595 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5597 done # for target in $targets
5599 if [ "$pixman" = "internal" ]; then
5600 echo "config-host.h: subdir-pixman" >> $config_host_mak
5603 if test "$rdma" = "yes" ; then
5604 echo "CONFIG_RDMA=y" >> $config_host_mak
5607 if [ "$dtc_internal" = "yes" ]; then
5608 echo "config-host.h: subdir-dtc" >> $config_host_mak
5611 if test "$numa" = "yes"; then
5612 echo "CONFIG_NUMA=y" >> $config_host_mak
5615 if test "$ccache_cpp2" = "yes"; then
5616 echo "export CCACHE_CPP2=y" >> $config_host_mak
5619 # build tree in object directory in case the source is not in the current directory
5620 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5622 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5623 DIRS="$DIRS roms/seabios roms/vgabios"
5624 DIRS="$DIRS qapi-generated"
5625 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5626 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5627 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5628 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5629 FILES="$FILES pc-bios/spapr-rtas/Makefile"
5630 FILES="$FILES pc-bios/s390-ccw/Makefile"
5631 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5632 FILES="$FILES pc-bios/qemu-icon.bmp"
5634 $source_path/pc-bios/*.bin \
5635 $source_path/pc-bios/*.aml \
5636 $source_path/pc-bios/*.rom \
5637 $source_path/pc-bios/*.dtb \
5638 $source_path/pc-bios/*.img \
5639 $source_path/pc-bios/openbios-* \
5640 $source_path/pc-bios/u-boot.* \
5641 $source_path/pc-bios/palcode-*
5643 FILES="$FILES pc-bios/`basename $bios_file`"
5645 for test_file in `find $source_path/tests/acpi-test-data -type f`
5647 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5650 for f in $FILES ; do
5651 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5652 symlink "$source_path/$f" "$f"
5656 # temporary config to build submodules
5657 for rom in seabios vgabios ; do
5658 config_mak=roms/$rom/config.mak
5659 echo "# Automatically generated by configure - do not modify" > $config_mak
5660 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5661 echo "AS=$as" >> $config_mak
5662 echo "CC=$cc" >> $config_mak
5663 echo "BCC=bcc" >> $config_mak
5664 echo "CPP=$cpp" >> $config_mak
5665 echo "OBJCOPY=objcopy" >> $config_mak
5666 echo "IASL=$iasl" >> $config_mak
5667 echo "LD=$ld" >> $config_mak
5670 # set up qemu-iotests in this build directory
5671 iotests_common_env="tests/qemu-iotests/common.env"
5672 iotests_check="tests/qemu-iotests/check"
5674 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5675 echo >> "$iotests_common_env"
5676 echo "export PYTHON='$python'" >> "$iotests_common_env"
5678 if [ ! -e "$iotests_check" ]; then
5679 symlink "$source_path/$iotests_check" "$iotests_check"
5682 # Save the configure command line for later reuse.
5683 cat <<EOD >config.status
5685 # Generated by configure.
5686 # Run this file to recreate the current configuration.
5687 # Compiler output produced by configure, useful for debugging
5688 # configure, is in config.log if it exists.
5690 printf "exec" >>config.status
5691 printf " '%s'" "$0" "$@" >>config.status
5692 echo >>config.status
5693 chmod +x config.status