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=""
274 LDFLAGS_SHARED="-shared"
277 mandir="\${prefix}/share/man"
278 datadir="\${prefix}/share"
279 qemu_docdir="\${prefix}/share/doc/qemu"
280 bindir="\${prefix}/bin"
281 libdir="\${prefix}/lib"
282 libexecdir="\${prefix}/libexec"
283 includedir="\${prefix}/include"
284 sysconfdir="\${prefix}/etc"
285 local_statedir="\${prefix}/var"
317 guest_agent_with_vss="no"
318 guest_agent_ntddscsi="no"
329 glusterfs_discard="no"
330 glusterfs_zerofill="no"
363 # parse CC options first
365 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
367 --cross-prefix=*) cross_prefix="$optarg"
371 --cxx=*) CXX="$optarg"
373 --source-path=*) source_path="$optarg"
375 --cpu=*) cpu="$optarg"
377 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
378 EXTRA_CFLAGS="$optarg"
380 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
381 EXTRA_LDFLAGS="$optarg"
383 --enable-debug-info) debug_info="yes"
385 --disable-debug-info) debug_info="no"
390 # Using uname is really, really broken. Once we have the right set of checks
391 # we can eliminate its usage altogether.
393 # Preferred compiler:
395 # ${cross_prefix}gcc (if cross-prefix specified)
397 if test -z "${CC}${cross_prefix}"; then
400 cc="${CC-${cross_prefix}gcc}"
403 if test -z "${CXX}${cross_prefix}"; then
406 cxx="${CXX-${cross_prefix}g++}"
409 ar="${AR-${cross_prefix}ar}"
410 as="${AS-${cross_prefix}as}"
412 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
413 ld="${LD-${cross_prefix}ld}"
414 libtool="${LIBTOOL-${cross_prefix}libtool}"
415 nm="${NM-${cross_prefix}nm}"
416 strip="${STRIP-${cross_prefix}strip}"
417 windres="${WINDRES-${cross_prefix}windres}"
418 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
420 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
422 pkg_config=query_pkg_config
423 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
424 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
426 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
427 ARFLAGS="${ARFLAGS-rv}"
429 # default flags for all hosts
430 QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
431 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
432 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
433 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
434 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
435 if test "$debug_info" = "yes"; then
437 LDFLAGS="-g $LDFLAGS"
440 # make source path absolute
441 source_path=`cd "$source_path"; pwd`
443 # running configure in the source tree?
444 # we know that's the case if configure is there.
445 if test -f "./configure"; then
446 pwd_is_source_path="y"
448 pwd_is_source_path="n"
454 #error $1 not defined
456 int main(void) { return 0; }
464 int main(void) { return 0; }
471 int main(void) { return 0; }
475 if check_define __linux__ ; then
477 elif check_define _WIN32 ; then
479 elif check_define __OpenBSD__ ; then
481 elif check_define __sun__ ; then
483 elif check_define __HAIKU__ ; then
489 # Some host OSes need non-standard checks for which CPU to use.
490 # Note that these checks are broken for cross-compilation: if you're
491 # cross-compiling to one of these OSes then you'll need to specify
492 # the correct CPU with the --cpu option.
495 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
496 # run 64-bit userspace code.
497 # If the user didn't specify a CPU explicitly and the kernel says this is
498 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
499 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
504 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
505 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
510 if test ! -z "$cpu" ; then
511 # command line argument
513 elif check_define __i386__ ; then
515 elif check_define __x86_64__ ; then
516 if check_define __ILP32__ ; then
521 elif check_define __sparc__ ; then
522 if check_define __arch64__ ; then
527 elif check_define _ARCH_PPC ; then
528 if check_define _ARCH_PPC64 ; then
533 elif check_define __mips__ ; then
535 elif check_define __ia64__ ; then
537 elif check_define __s390__ ; then
538 if check_define __s390x__ ; then
543 elif check_define __arm__ ; then
545 elif check_define __aarch64__ ; then
547 elif check_define __hppa__ ; then
554 # Normalise host CPU name and set ARCH.
555 # Note that this case should only have supported host CPUs, not guests.
557 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
560 i386|i486|i586|i686|i86pc|BePC)
579 # This will result in either an error or falling back to TCI later
583 if test -z "$ARCH"; then
589 # host *BSD for user mode
595 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
596 audio_possible_drivers="sdl"
601 audio_possible_drivers="dsound sdl"
602 if check_include dsound.h; then
603 audio_drv_list="dsound"
608 libs_qga="-lole32 $libs_qga"
613 audio_possible_drivers="oss sdl pa"
619 audio_possible_drivers="oss sdl pa"
620 # needed for kinfo_getvmmap(3) in libutil.h
622 netmap="" # enable netmap autodetect
623 HOST_VARIANT_DIR="freebsd"
629 audio_possible_drivers="oss sdl pa"
630 HOST_VARIANT_DIR="dragonfly"
636 audio_possible_drivers="oss sdl"
638 HOST_VARIANT_DIR="netbsd"
644 audio_possible_drivers="sdl"
645 HOST_VARIANT_DIR="openbsd"
650 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
651 if [ "$cpu" = "x86_64" ] ; then
652 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
653 LDFLAGS="-arch x86_64 $LDFLAGS"
656 audio_drv_list="coreaudio"
657 audio_possible_drivers="coreaudio sdl"
658 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
659 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
660 # Disable attempts to use ObjectiveC features in os/object.h since they
661 # won't work when we're compiling with gcc as a C compiler.
662 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
663 HOST_VARIANT_DIR="darwin"
668 install="${INSTALL-ginstall}"
670 smbd="${SMBD-/usr/sfw/sbin/smbd}"
671 needs_libsunmath="no"
672 solarisrev=`uname -r | cut -f2 -d.`
673 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
674 if test "$solarisrev" -le 9 ; then
675 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
676 needs_libsunmath="yes"
677 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
678 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
679 LIBS="-lsunmath $LIBS"
681 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
682 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
683 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
684 "Studio 11 can be downloaded from www.sun.com."
688 if test -f /usr/include/sys/soundcard.h ; then
691 audio_possible_drivers="oss sdl"
692 # needed for CMSG_ macros in sys/socket.h
693 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
694 # needed for TIOCWIN* defines in termios.h
695 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
696 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
697 solarisnetlibs="-lsocket -lnsl -lresolv"
698 LIBS="$solarisnetlibs $LIBS"
699 libs_qga="$solarisnetlibs $libs_qga"
707 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
708 LIBS="-lposix_error_mapper -lnetwork $LIBS"
712 audio_possible_drivers="oss alsa sdl pa"
718 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
722 if [ "$bsd" = "yes" ] ; then
723 if [ "$darwin" != "yes" ] ; then
728 : ${make=${MAKE-make}}
729 : ${install=${INSTALL-install}}
730 : ${python=${PYTHON-python}}
731 : ${smbd=${SMBD-/usr/sbin/smbd}}
733 # Default objcc to clang if available, otherwise use CC
740 if test "$mingw32" = "yes" ; then
743 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN $QEMU_CFLAGS"
744 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
745 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
746 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
748 if compile_prog "" "-liberty" ; then
749 LIBS="-liberty $LIBS"
751 prefix="c:/Program Files/QEMU"
754 qemu_docdir="\${prefix}"
756 sysconfdir="\${prefix}"
759 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi $libs_qga"
765 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
767 --help|-h) show_help=yes
769 --version|-V) exec cat $source_path/VERSION
771 --prefix=*) prefix="$optarg"
773 --interp-prefix=*) interp_prefix="$optarg"
781 --host-cc=*) host_cc="$optarg"
785 --iasl=*) iasl="$optarg"
787 --objcc=*) objcc="$optarg"
789 --make=*) make="$optarg"
791 --install=*) install="$optarg"
793 --python=*) python="$optarg"
795 --gcov=*) gcov_tool="$optarg"
797 --smbd=*) smbd="$optarg"
805 --disable-debug-info)
812 --target-list=*) target_list="$optarg"
814 --enable-trace-backends=*) trace_backends="$optarg"
816 # XXX: backwards compatibility
817 --enable-trace-backend=*) trace_backends="$optarg"
819 --with-trace-file=*) trace_file="$optarg"
821 --enable-gprof) gprof="yes"
823 --enable-gcov) gcov="yes"
827 LDFLAGS="-static $LDFLAGS"
828 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
830 --mandir=*) mandir="$optarg"
832 --bindir=*) bindir="$optarg"
834 --libdir=*) libdir="$optarg"
836 --libexecdir=*) libexecdir="$optarg"
838 --includedir=*) includedir="$optarg"
840 --datadir=*) datadir="$optarg"
842 --with-confsuffix=*) confsuffix="$optarg"
844 --docdir=*) qemu_docdir="$optarg"
846 --sysconfdir=*) sysconfdir="$optarg"
848 --localstatedir=*) local_statedir="$optarg"
850 --sbindir=*|--sharedstatedir=*|\
851 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
852 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
853 # These switches are silently ignored, for compatibility with
854 # autoconf-generated configure scripts. This allows QEMU's
855 # configure to be used by RPM and similar macros that set
856 # lots of directory switches by default.
858 --with-system-pixman) pixman="system"
860 --without-system-pixman) pixman="internal"
862 --without-pixman) pixman="none"
864 --disable-sdl) sdl="no"
866 --enable-sdl) sdl="yes"
868 --with-sdlabi=*) sdlabi="$optarg"
870 --disable-qom-cast-debug) qom_cast_debug="no"
872 --enable-qom-cast-debug) qom_cast_debug="yes"
874 --disable-virtfs) virtfs="no"
876 --enable-virtfs) virtfs="yes"
878 --disable-vnc) vnc="no"
880 --enable-vnc) vnc="yes"
882 --oss-lib=*) oss_lib="$optarg"
884 --audio-drv-list=*) audio_drv_list="$optarg"
886 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
888 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
890 --enable-debug-tcg) debug_tcg="yes"
892 --disable-debug-tcg) debug_tcg="no"
895 # Enable debugging options that aren't excessively noisy
900 --enable-sparse) sparse="yes"
902 --disable-sparse) sparse="no"
904 --disable-strip) strip_opt="no"
906 --disable-vnc-tls) vnc_tls="no"
908 --enable-vnc-tls) vnc_tls="yes"
910 --disable-vnc-sasl) vnc_sasl="no"
912 --enable-vnc-sasl) vnc_sasl="yes"
914 --disable-vnc-jpeg) vnc_jpeg="no"
916 --enable-vnc-jpeg) vnc_jpeg="yes"
918 --disable-vnc-png) vnc_png="no"
920 --enable-vnc-png) vnc_png="yes"
922 --disable-slirp) slirp="no"
924 --disable-uuid) uuid="no"
926 --enable-uuid) uuid="yes"
928 --disable-vde) vde="no"
930 --enable-vde) vde="yes"
932 --disable-netmap) netmap="no"
934 --enable-netmap) netmap="yes"
936 --disable-xen) xen="no"
938 --enable-xen) xen="yes"
940 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
942 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
944 --disable-brlapi) brlapi="no"
946 --enable-brlapi) brlapi="yes"
948 --disable-bluez) bluez="no"
950 --enable-bluez) bluez="yes"
952 --disable-kvm) kvm="no"
954 --enable-kvm) kvm="yes"
956 --disable-hax) hax="no"
958 --enable-hax) hax="yes"
960 --disable-tcg-interpreter) tcg_interpreter="no"
962 --enable-tcg-interpreter) tcg_interpreter="yes"
964 --disable-cap-ng) cap_ng="no"
966 --enable-cap-ng) cap_ng="yes"
968 --disable-spice) spice="no"
970 --enable-spice) spice="yes"
972 --disable-libiscsi) libiscsi="no"
974 --enable-libiscsi) libiscsi="yes"
976 --disable-libnfs) libnfs="no"
978 --enable-libnfs) libnfs="yes"
980 --enable-profiler) profiler="yes"
982 --disable-cocoa) cocoa="no"
987 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
989 --disable-system) softmmu="no"
991 --enable-system) softmmu="yes"
998 --disable-linux-user) linux_user="no"
1000 --enable-linux-user) linux_user="yes"
1002 --disable-bsd-user) bsd_user="no"
1004 --enable-bsd-user) bsd_user="yes"
1006 --enable-guest-base) guest_base="yes"
1008 --disable-guest-base) guest_base="no"
1010 --enable-pie) pie="yes"
1012 --disable-pie) pie="no"
1016 force_werror="yes" ;
1018 --disable-werror) werror="no"
1020 --enable-stack-protector) stack_protector="yes"
1022 --disable-stack-protector) stack_protector="no"
1024 --disable-curses) curses="no"
1026 --enable-curses) curses="yes"
1028 --disable-curl) curl="no"
1030 --enable-curl) curl="yes"
1032 --disable-fdt) fdt="no"
1034 --enable-fdt) fdt="yes"
1036 --disable-linux-aio) linux_aio="no"
1038 --enable-linux-aio) linux_aio="yes"
1040 --disable-attr) attr="no"
1042 --enable-attr) attr="yes"
1044 --disable-blobs) blobs="no"
1046 --with-pkgversion=*) pkgversion=" ($optarg)"
1048 --with-coroutine=*) coroutine="$optarg"
1050 --disable-coroutine-pool) coroutine_pool="no"
1052 --enable-coroutine-pool) coroutine_pool="yes"
1054 --disable-docs) docs="no"
1056 --enable-docs) docs="yes"
1058 --disable-vhost-net) vhost_net="no"
1060 --enable-vhost-net) vhost_net="yes"
1062 --enable-efence) efence="yes"
1064 --disable-efence) efence="no"
1066 --enable-yagl) yagl="yes"
1068 --disable-yagl) yagl="no"
1070 --enable-yagl-stats) yagl_stats="yes"
1072 --disable-yagl-stats) yagl_stats="no"
1074 --enable-vigs) vigs="yes"
1076 --disable-vigs) vigs="no"
1078 --disable-vhost-scsi) vhost_scsi="no"
1080 --enable-vhost-scsi) vhost_scsi="yes"
1082 --disable-opengl) opengl="no"
1084 --enable-opengl) opengl="yes"
1086 --disable-rbd) rbd="no"
1088 --enable-rbd) rbd="yes"
1090 --disable-xfsctl) xfs="no"
1092 --enable-xfsctl) xfs="yes"
1094 --disable-smartcard-nss) smartcard_nss="no"
1096 --enable-smartcard-nss) smartcard_nss="yes"
1098 --disable-libusb) libusb="no"
1100 --enable-libusb) libusb="yes"
1102 --disable-libtizenusb) libtizenusb="no"
1104 --enable-libtizenusb) libtizenusb="yes"
1106 --disable-usb-redir) usb_redir="no"
1108 --enable-usb-redir) usb_redir="yes"
1110 --disable-zlib-test) zlib="no"
1112 --disable-lzo) lzo="no"
1114 --enable-lzo) lzo="yes"
1116 --disable-snappy) snappy="no"
1118 --enable-snappy) snappy="yes"
1120 --disable-bzip2) bzip2="no"
1122 --enable-bzip2) bzip2="yes"
1124 --enable-guest-agent) guest_agent="yes"
1126 --disable-guest-agent) guest_agent="no"
1128 --enable-guest-agent-msi) guest_agent_msi="yes"
1130 --disable-guest-agent-msi) guest_agent_msi="no"
1132 --with-vss-sdk) vss_win32_sdk=""
1134 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1136 --without-vss-sdk) vss_win32_sdk="no"
1138 --with-win-sdk) win_sdk=""
1140 --with-win-sdk=*) win_sdk="$optarg"
1142 --without-win-sdk) win_sdk="no"
1144 --enable-tools) want_tools="yes"
1146 --disable-tools) want_tools="no"
1148 --enable-seccomp) seccomp="yes"
1150 --disable-seccomp) seccomp="no"
1152 --disable-glusterfs) glusterfs="no"
1154 --enable-glusterfs) glusterfs="yes"
1156 --disable-archipelago) archipelago="no"
1158 --enable-archipelago) archipelago="yes"
1160 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1161 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1163 --disable-gtk) gtk="no"
1165 --enable-gtk) gtk="yes"
1167 --disable-gnutls) gnutls="no"
1169 --enable-gnutls) gnutls="yes"
1171 --enable-rdma) rdma="yes"
1173 --disable-rdma) rdma="no"
1175 --with-gtkabi=*) gtkabi="$optarg"
1177 --disable-vte) vte="no"
1179 --enable-vte) vte="yes"
1181 --disable-tpm) tpm="no"
1183 --enable-tpm) tpm="yes"
1185 --disable-libssh2) libssh2="no"
1187 --enable-libssh2) libssh2="yes"
1189 --enable-vhdx) vhdx="yes"
1191 --disable-vhdx) vhdx="no"
1193 --disable-numa) numa="no"
1195 --enable-numa) numa="yes"
1197 --disable-tcmalloc) tcmalloc="no"
1199 --enable-tcmalloc) tcmalloc="yes"
1202 --enable-maru) maru="yes"
1204 --winver=*) winver="$optarg"
1206 --enable-java-ui) java_ui="yes"
1208 --enable-shm) shm="yes"
1210 --enable-libav) libav="yes"
1212 --disable-libav) libav="no"
1214 --enable-libpng) libpng="yes"
1216 --enable-dxva2) dxva2="yes"
1218 --disable-dxva2) dxva2="no"
1220 --enable-vaapi) vaapi="yes"
1222 --disable-vaapi) vaapi="no"
1224 --disable-qt) qt="no"
1226 --enable-qt) qt="yes"
1228 --extension-path=*) extension_path="$optarg"
1232 echo "ERROR: unknown option $opt"
1233 echo "Try '$0 --help' for more information"
1239 if ! has $python; then
1240 error_exit "Python not found. Use --python=/path/to/python"
1243 # Note that if the Python conditional here evaluates True we will exit
1244 # with status 1 which is a shell 'false' value.
1245 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1246 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1247 "Note that Python 3 or later is not yet supported." \
1248 "Use --python=/path/to/python to specify a supported Python."
1251 # The -B switch was added in Python 2.6.
1252 # If it is supplied, compiled files are not written.
1253 # Use it for Python versions which support it.
1254 if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1261 LDFLAGS="-m32 $LDFLAGS"
1265 LDFLAGS="-m64 $LDFLAGS"
1268 LDFLAGS="-m32 $LDFLAGS"
1269 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1272 LDFLAGS="-m64 $LDFLAGS"
1273 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1277 LDFLAGS="-m31 $LDFLAGS"
1281 LDFLAGS="-m64 $LDFLAGS"
1285 LDFLAGS="-m32 $LDFLAGS"
1286 cc_i386='$(CC) -m32'
1290 LDFLAGS="-m64 $LDFLAGS"
1291 cc_i386='$(CC) -m32'
1295 LDFLAGS="-mx32 $LDFLAGS"
1296 cc_i386='$(CC) -m32'
1298 # No special flags required for other host CPUs
1301 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1302 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1304 default_target_list=""
1308 if [ "$softmmu" = "yes" ]; then
1309 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1311 if [ "$linux_user" = "yes" ]; then
1312 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1314 if [ "$bsd_user" = "yes" ]; then
1315 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1318 for config in $mak_wilds; do
1319 default_target_list="${default_target_list} $(basename "$config" .mak)"
1322 if test x"$show_help" = x"yes" ; then
1325 Usage: configure [options]
1326 Options: [defaults in brackets after descriptions]
1329 --help print this message
1330 --prefix=PREFIX install in PREFIX [$prefix]
1331 --interp-prefix=PREFIX where to find shared libraries, etc.
1332 use %M for cpu name [$interp_prefix]
1333 --target-list=LIST set target list (default: build everything)
1334 $(echo Available targets: $default_target_list | \
1335 fold -s -w 53 | sed -e 's/^/ /')
1337 Advanced options (experts only):
1338 --source-path=PATH path of source code [$source_path]
1339 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1340 --cc=CC use C compiler CC [$cc]
1341 --iasl=IASL use ACPI compiler IASL [$iasl]
1342 --host-cc=CC use C compiler CC [$host_cc] for code run at
1344 --cxx=CXX use C++ compiler CXX [$cxx]
1345 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1346 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1347 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1348 --make=MAKE use specified make [$make]
1349 --install=INSTALL use specified install [$install]
1350 --python=PYTHON use specified python [$python]
1351 --smbd=SMBD use specified smbd [$smbd]
1352 --static enable static build [$static]
1353 --mandir=PATH install man pages in PATH
1354 --datadir=PATH install firmware in PATH$confsuffix
1355 --docdir=PATH install documentation in PATH$confsuffix
1356 --bindir=PATH install binaries in PATH
1357 --libdir=PATH install libraries in PATH
1358 --sysconfdir=PATH install config in PATH$confsuffix
1359 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1360 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1361 --enable-debug enable common debug build options
1362 --disable-strip disable stripping binaries
1363 --disable-werror disable compilation abort on warning
1364 --disable-stack-protector disable compiler-provided stack protection
1365 --audio-drv-list=LIST set audio drivers list:
1366 Available drivers: $audio_possible_drivers
1367 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1368 --block-drv-rw-whitelist=L
1369 set block driver read-write whitelist
1370 (affects only QEMU, not qemu-img)
1371 --block-drv-ro-whitelist=L
1372 set block driver read-only whitelist
1373 (affects only QEMU, not qemu-img)
1374 --enable-trace-backends=B Set trace backend
1375 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1376 --with-trace-file=NAME Full PATH,NAME of file to store traces
1378 --disable-slirp disable SLIRP userspace network connectivity
1379 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1380 --oss-lib path to OSS library
1381 --cpu=CPU Build for host CPU [$cpu]
1382 --with-coroutine=BACKEND coroutine backend. Supported options:
1383 gthread, ucontext, sigaltstack, windows
1384 --enable-gcov enable test coverage analysis with gcov
1385 --gcov=GCOV use specified gcov [$gcov_tool]
1386 --disable-blobs disable installing provided firmware blobs
1387 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1388 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1390 Optional features, enabled with --enable-FEATURE and
1391 disabled with --disable-FEATURE, default is enabled if available:
1393 system all system emulation targets
1394 user supported user emulation targets
1395 linux-user all linux usermode emulation targets
1396 bsd-user all BSD usermode emulation targets
1397 guest-base GUEST_BASE support for usermode emulation targets
1398 docs build documentation
1399 guest-agent build the QEMU Guest Agent
1400 guest-agent-msi build guest agent Windows MSI installation package
1401 pie Position Independent Executables
1402 modules modules support
1403 debug-tcg TCG debugging (default is disabled)
1404 debug-info debugging information
1405 sparse sparse checker
1407 gnutls GNUTLS cryptography support
1409 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1411 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1412 vte vte support for the gtk UI
1415 vnc-tls TLS encryption for VNC server
1416 vnc-sasl SASL encryption for VNC server
1417 vnc-jpeg JPEG lossy compression for VNC server
1418 vnc-png PNG compression for VNC server
1419 cocoa Cocoa UI (Mac OS X only)
1421 xen xen backend driver support
1423 brlapi BrlAPI (Braile)
1424 curl curl connectivity
1426 bluez bluez stack connectivity
1427 kvm KVM acceleration support
1428 rdma RDMA-based migration support
1430 vde support for vde network
1431 netmap support for netmap network
1432 linux-aio Linux AIO support
1433 cap-ng libcap-ng support
1434 attr attr and xattr support
1435 vhost-net vhost-net acceleration support
1437 rbd rados block device (rbd)
1438 libiscsi iscsi support
1440 smartcard-nss smartcard nss support
1441 libusb libusb (for usb passthrough)
1442 usb-redir usb network redirection support
1443 lzo support of lzo compression library
1444 snappy support of snappy compression library
1445 bzip2 support of bzip2 compression library
1446 (for reading bzip2-compressed dmg images)
1447 seccomp seccomp support
1448 coroutine-pool coroutine freelist (better performance)
1449 glusterfs GlusterFS backend
1450 archipelago Archipelago backend
1452 libssh2 ssh block device support
1453 vhdx support for the Microsoft VHDX image format
1454 numa libnuma support
1455 tcmalloc tcmalloc support
1457 hax HAX acceleration support
1459 yagl-stats YaGL stats
1463 --enable-maru enable maru board
1464 --winver=WINVER set WINVER
1465 --enable-java-ui enable java UI
1466 --enable-shm enable shared memory for framebuffer
1467 --enable-libav enable libav library
1468 --disable-libav disable libav library
1469 --enable-libpng enable png library
1470 --enable-dxva2 enable dxva2 support
1471 --disable-dxva2 disable dxva2 support
1472 --ensable-vaapi enable vaapi support
1473 --disable-vaapi disable vaapi support
1474 --extension-path=PATH set extension path
1476 NOTE: The object files are built at the place where configure is launched
1481 # Now we have handled --enable-tcg-interpreter and know we're not just
1482 # printing the help message, bail out if the host CPU isn't supported.
1483 if test "$ARCH" = "unknown"; then
1484 if test "$tcg_interpreter" = "yes" ; then
1485 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1488 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1492 # Consult white-list to determine whether to enable werror
1493 # by default. Only enable by default for git builds
1494 z_version=`cut -f3 -d. $source_path/VERSION`
1496 if test -z "$werror" ; then
1497 if test -d "$source_path/.git" -a \
1498 "$linux" = "yes" ; then
1505 # check that the C compiler works.
1507 if compile_object ; then
1508 : C compiler works ok
1510 error_exit "\"$cc\" either does not exist or does not work"
1513 # Check that the C++ compiler exists and works with the C compiler
1516 int c_function(void);
1517 int main(void) { return c_function(); }
1524 int c_function(void);
1526 int c_function(void) { return 42; }
1531 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1532 # C++ compiler $cxx works ok with C compiler $cc
1535 echo "C++ compiler $cxx does not work with C compiler $cc"
1536 echo "Disabling C++ specific optional code"
1540 echo "No C++ compiler available; disabling C++ specific optional code"
1544 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1545 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1546 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1547 gcc_flags="-Wendif-labels $gcc_flags"
1548 gcc_flags="-Wno-initializer-overrides $gcc_flags"
1549 gcc_flags="-Wno-string-plus-int $gcc_flags"
1550 # Note that we do not add -Werror to gcc_flags here, because that would
1551 # enable it for all configure tests. If a configure test failed due
1552 # to -Werror this would just silently disable some features,
1553 # so it's too error prone.
1555 cc_has_warning_flag() {
1558 # Use the positive sense of the flag when testing for -Wno-wombat
1559 # support (gcc will happily accept the -Wno- form of unknown
1561 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1562 compile_prog "-Werror $optflag" ""
1565 for flag in $gcc_flags; do
1566 if cc_has_warning_flag $flag ; then
1567 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1571 if test "$stack_protector" != "no"; then
1572 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1574 for flag in $gcc_flags; do
1575 # We need to check both a compile and a link, since some compiler
1576 # setups fail only on a .c->.o compile and some only at link time
1577 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1578 compile_prog "-Werror $flag" ""; then
1579 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1580 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
1585 if test "$stack_protector" = yes; then
1586 if test $sp_on = 0; then
1587 error_exit "Stack protector not supported"
1592 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1593 # large functions that use global variables. The bug is in all releases of
1594 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1595 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1597 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1598 int main(void) { return 0; }
1600 #error No bug in this compiler.
1603 if compile_prog "-Werror -fno-gcse" "" ; then
1604 TRANSLATE_OPT_CFLAGS=-fno-gcse
1607 if test "$static" = "yes" ; then
1608 if test "$modules" = "yes" ; then
1609 error_exit "static and modules are mutually incompatible"
1611 if test "$pie" = "yes" ; then
1612 error_exit "static and pie are mutually incompatible"
1618 # Unconditional check for compiler __thread support
1620 static __thread int tls_var;
1621 int main(void) { return tls_var; }
1624 if ! compile_prog "-Werror" "" ; then
1626 error_exit "Your compiler does not support the __thread specifier for " \
1627 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1630 if test "$pie" = ""; then
1631 case "$cpu-$targetos" in
1632 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1640 if test "$pie" != "no" ; then
1644 # define THREAD __thread
1649 static THREAD int tls_var;
1651 int main(void) { return tls_var; }
1654 if compile_prog "-fPIE -DPIE" "-pie"; then
1655 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1656 LDFLAGS="-pie $LDFLAGS"
1658 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1659 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1662 if test "$pie" = "yes"; then
1663 error_exit "PIE not available due to missing toolchain support"
1665 echo "Disabling PIE due to missing toolchain support"
1670 if compile_prog "-Werror -fno-pie" "-nopie"; then
1671 CFLAGS_NOPIE="-fno-pie"
1672 LDFLAGS_NOPIE="-nopie"
1676 # check for broken gcc and libtool in RHEL5
1677 if test -n "$libtool" -a "$pie" != "no" ; then
1680 void *f(unsigned char *buf, int len);
1681 void *g(unsigned char *buf, int len);
1684 f(unsigned char *buf, int len)
1690 g(unsigned char *buf, int len)
1696 if ! libtool_prog; then
1697 echo "Disabling libtool due to broken toolchain support"
1702 ##########################################
1703 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1704 # use i686 as default anyway, but for those that don't, an explicit
1705 # specification is necessary
1707 if test "$cpu" = "i386"; then
1709 static int sfaa(int *ptr)
1711 return __sync_fetch_and_and(ptr, 0);
1717 val = __sync_val_compare_and_swap(&val, 0, 1);
1722 if ! compile_prog "" "" ; then
1723 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1727 #########################################
1728 # Solaris specific configure tool chain decisions
1730 if test "$solaris" = "yes" ; then
1731 if has $install; then
1734 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1735 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1736 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1738 if test "`path_of $install`" = "/usr/sbin/install" ; then
1739 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1740 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1741 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1746 if test -f /usr/ccs/bin/ar ; then
1747 error_exit "No path includes ar" \
1748 "Add /usr/ccs/bin to your path and rerun configure"
1750 error_exit "No path includes ar"
1754 if test -z "${target_list+xxx}" ; then
1755 target_list="$default_target_list"
1757 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1760 # Check that we recognised the target name; this allows a more
1761 # friendly error message than if we let it fall through.
1762 for target in $target_list; do
1763 case " $default_target_list " in
1767 error_exit "Unknown target name '$target'"
1772 # see if system emulation was really requested
1773 case " $target_list " in
1774 *"-softmmu "*) softmmu=yes
1780 feature_not_found() {
1784 error_exit "User requested feature $feature" \
1785 "configure was not able to find it." \
1790 # big/little endian test
1792 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1793 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1794 extern int foo(short *, short *);
1795 int main(int argc, char *argv[]) {
1796 return foo(big_endian, little_endian);
1800 if compile_object ; then
1801 if grep -q BiGeNdIaN $TMPO ; then
1803 elif grep -q LiTtLeEnDiAn $TMPO ; then
1806 echo big/little test failed
1809 echo big/little test failed
1812 ##########################################
1816 #include <sys/socket.h>
1817 #include <linux/ip.h>
1818 int main(void) { return sizeof(struct mmsghdr); }
1820 if compile_prog "" "" ; then
1826 ##########################################
1829 if ! has "$pkg_config_exe"; then
1830 error_exit "pkg-config binary '$pkg_config_exe' not found"
1833 ##########################################
1836 if test "$linux_user" = "yes"; then
1839 #include <linux/futex.h>
1841 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1847 if ! compile_object ; then
1848 feature_not_found "nptl" "Install glibc and linux kernel headers."
1852 ##########################################
1855 if test "$zlib" != "no" ; then
1858 int main(void) { zlibVersion(); return 0; }
1860 if compile_prog "" "-lz" ; then
1863 error_exit "zlib check failed" \
1864 "Make sure to have the zlib libs and headers installed."
1869 ##########################################
1872 if test "$lzo" != "no" ; then
1874 #include <lzo/lzo1x.h>
1875 int main(void) { lzo_version(); return 0; }
1877 if compile_prog "" "-llzo2" ; then
1878 libs_softmmu="$libs_softmmu -llzo2"
1881 if test "$lzo" = "yes"; then
1882 feature_not_found "liblzo2" "Install liblzo2 devel"
1888 ##########################################
1891 if test "$snappy" != "no" ; then
1893 #include <snappy-c.h>
1894 int main(void) { snappy_max_compressed_length(4096); return 0; }
1896 if compile_prog "" "-lsnappy" ; then
1897 libs_softmmu="$libs_softmmu -lsnappy"
1900 if test "$snappy" = "yes"; then
1901 feature_not_found "libsnappy" "Install libsnappy devel"
1907 ##########################################
1910 if test "$bzip2" != "no" ; then
1913 int main(void) { BZ2_bzlibVersion(); return 0; }
1915 if compile_prog "" "-lbz2" ; then
1918 if test "$bzip2" = "yes"; then
1919 feature_not_found "libbzip2" "Install libbzip2 devel"
1925 ##########################################
1928 if test "$seccomp" != "no" ; then
1929 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1930 $pkg_config --atleast-version=2.1.1 libseccomp; then
1931 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1932 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1935 if test "$seccomp" = "yes"; then
1936 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
1941 ##########################################
1944 if test "$xen" != "no" ; then
1945 xen_libs="-lxenstore -lxenctrl -lxenguest"
1947 # First we test whether Xen headers and libraries are available.
1948 # If no, we are done and there is no Xen support.
1949 # If yes, more tests are run to detect the Xen version.
1953 #include <xenctrl.h>
1958 if ! compile_prog "" "$xen_libs" ; then
1960 if test "$xen" = "yes" ; then
1961 feature_not_found "xen" "Install xen devel"
1967 cat > $TMPC <<EOF &&
1968 #include <xenctrl.h>
1969 #include <xenstore.h>
1971 #include <xen/hvm/hvm_info_table.h>
1972 #if !defined(HVM_MAX_VCPUS)
1973 # error HVM_MAX_VCPUS not defined
1978 xc = xc_interface_open(0, 0, 0);
1979 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1980 xc_gnttab_open(NULL, 0);
1981 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1982 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1983 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1987 compile_prog "" "$xen_libs"
1989 xen_ctrl_version=450
1993 cat > $TMPC <<EOF &&
1994 #include <xenctrl.h>
1995 #include <xenstore.h>
1997 #include <xen/hvm/hvm_info_table.h>
1998 #if !defined(HVM_MAX_VCPUS)
1999 # error HVM_MAX_VCPUS not defined
2004 xc = xc_interface_open(0, 0, 0);
2005 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2006 xc_gnttab_open(NULL, 0);
2007 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2008 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2012 compile_prog "" "$xen_libs"
2014 xen_ctrl_version=420
2018 cat > $TMPC <<EOF &&
2019 #include <xenctrl.h>
2022 #include <xen/hvm/hvm_info_table.h>
2023 #if !defined(HVM_MAX_VCPUS)
2024 # error HVM_MAX_VCPUS not defined
2028 xc_interface_open(0, 0, 0);
2029 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2030 xc_gnttab_open(NULL, 0);
2031 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2035 compile_prog "" "$xen_libs"
2037 xen_ctrl_version=410
2042 cat > $TMPC <<EOF &&
2043 #include <xenctrl.h>
2046 #include <xen/hvm/hvm_info_table.h>
2047 #if !defined(HVM_MAX_VCPUS)
2048 # error HVM_MAX_VCPUS not defined
2051 struct xen_add_to_physmap xatp = {
2052 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2055 xc_interface_open();
2057 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2058 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2062 compile_prog "" "$xen_libs"
2064 xen_ctrl_version=400
2069 cat > $TMPC <<EOF &&
2070 #include <xenctrl.h>
2073 struct xen_add_to_physmap xatp = {
2074 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2077 xc_interface_open();
2079 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2080 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2084 compile_prog "" "$xen_libs"
2086 xen_ctrl_version=340
2091 cat > $TMPC <<EOF &&
2092 #include <xenctrl.h>
2096 xc_interface_open();
2098 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2102 compile_prog "" "$xen_libs"
2104 xen_ctrl_version=330
2107 # Xen version unsupported
2109 if test "$xen" = "yes" ; then
2110 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2115 if test "$xen" = yes; then
2116 libs_softmmu="$xen_libs $libs_softmmu"
2120 if test "$xen_pci_passthrough" != "no"; then
2121 if test "$xen" = "yes" && test "$linux" = "yes" &&
2122 test "$xen_ctrl_version" -ge 340; then
2123 xen_pci_passthrough=yes
2125 if test "$xen_pci_passthrough" = "yes"; then
2126 if test "$xen_ctrl_version" -lt 340; then
2127 error_exit "User requested feature Xen PCI Passthrough" \
2128 "This feature does not work with Xen 3.3"
2130 error_exit "User requested feature Xen PCI Passthrough" \
2131 " but this feature requires /sys from Linux"
2133 xen_pci_passthrough=no
2137 ##########################################
2140 if ! has $libtool; then
2144 # MacOSX ships with a libtool which isn't the GNU one; weed this
2145 # out by checking whether libtool supports the --version switch
2146 if test -n "$libtool"; then
2147 if ! "$libtool" --version >/dev/null 2>&1; then
2152 ##########################################
2154 if test "$sparse" != "no" ; then
2158 if test "$sparse" = "yes" ; then
2159 feature_not_found "sparse" "Install sparse binary"
2165 ##########################################
2169 if $pkg_config --exists "x11"; then
2170 x11_cflags=`$pkg_config --cflags x11`
2171 x11_libs=`$pkg_config --libs x11`
2174 ##########################################
2177 if test "$gtkabi" = ""; then
2178 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2179 # Use 3.0 as a fallback if that is available.
2180 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2182 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2189 if test "$gtk" != "no"; then
2190 gtkpackage="gtk+-$gtkabi"
2191 gtkx11package="gtk+-x11-$gtkabi"
2192 if test "$gtkabi" = "3.0" ; then
2197 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2198 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2199 gtk_libs=`$pkg_config --libs $gtkpackage`
2200 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2201 gtk_cflags="$gtk_cflags $x11_cflags"
2202 gtk_libs="$gtk_libs $x11_libs"
2204 libs_softmmu="$gtk_libs $libs_softmmu"
2206 elif test "$gtk" = "yes"; then
2207 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2214 ##########################################
2218 # Unfortunately some distros have bad pkg-config information for gnutls
2219 # such that it claims to exist but you get a compiler error if you try
2220 # to use the options returned by --libs. Specifically, Ubuntu for --static
2221 # builds doesn't work:
2222 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2224 # So sanity check the cflags/libs before assuming gnutls can be used.
2225 if ! $pkg_config --exists "gnutls"; then
2230 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2235 if test "$gnutls" != "no"; then
2236 if gnutls_works; then
2237 gnutls_cflags=`$pkg_config --cflags gnutls`
2238 gnutls_libs=`$pkg_config --libs gnutls`
2239 libs_softmmu="$gnutls_libs $libs_softmmu"
2240 libs_tools="$gnutls_libs $libs_tools"
2241 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2244 # gnutls_hash_init requires >= 2.9.10
2245 if $pkg_config --exists "gnutls >= 2.9.10"; then
2251 if $pkg_config --exists 'gnutls >= 3.0'; then
2254 elif $pkg_config --exists 'gnutls >= 2.12'; then
2255 case `$pkg_config --libs --static gnutls` in
2273 elif test "$gnutls" = "yes"; then
2274 feature_not_found "gnutls" "Install gnutls devel"
2283 if test "$gnutls_gcrypt" != "no"; then
2284 if has "libgcrypt-config"; then
2285 gcrypt_cflags=`libgcrypt-config --cflags`
2286 gcrypt_libs=`libgcrypt-config --libs`
2287 libs_softmmu="$gcrypt_libs $libs_softmmu"
2288 libs_tools="$gcrypt_libs $libs_tools"
2289 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2291 feature_not_found "gcrypt" "Install gcrypt devel"
2296 if test "$gnutls_nettle" != "no"; then
2297 if $pkg_config --exists "nettle"; then
2298 nettle_cflags=`$pkg_config --cflags nettle`
2299 nettle_libs=`$pkg_config --libs nettle`
2300 nettle_version=`$pkg_config --modversion nettle`
2301 libs_softmmu="$nettle_libs $libs_softmmu"
2302 libs_tools="$nettle_libs $libs_tools"
2303 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2305 feature_not_found "nettle" "Install nettle devel"
2310 ##########################################
2313 if test "$vte" != "no"; then
2314 if test "$gtkabi" = "3.0"; then
2315 vtepackage="vte-2.90"
2321 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2322 vte_cflags=`$pkg_config --cflags $vtepackage`
2323 vte_libs=`$pkg_config --libs $vtepackage`
2324 libs_softmmu="$vte_libs $libs_softmmu"
2326 elif test "$vte" = "yes"; then
2327 if test "$gtkabi" = "3.0"; then
2328 feature_not_found "vte" "Install libvte-2.90 devel"
2330 feature_not_found "vte" "Install libvte devel"
2337 ##########################################
2341 if test "$qt" != "no"; then
2342 if test "$qtabi" = "5.0" ; then
2343 qtpackage="Qt5Widgets Qt5OpenGL Qt5Gui"
2346 if $pkg_config --exists "$qtpackage >= $qtversion"; then
2347 qt_cflags=`$pkg_config --cflags $qtpackage`
2348 qt_libs=`$pkg_config --libs $qtpackage`
2350 if test "$mingw32" = "yes" ; then
2351 libs_softmmu="$qt_libs -mwindows $libs_softmmu"
2352 elif test "$darwin" = "yes" ; then
2353 libs_softmmu="$qt_libs $libs_softmmu"
2355 libs_softmmu="$qt_libs $x11_libs $libs_softmmu"
2358 qt_cflags_private=`pkg-config --modversion Qt5Gui`
2359 if test "$darwin" = "yes" ; then
2360 qt_cflags_private=`pkg-config --cflags Qt5Gui | sed "s,QtGui.framework/Headers,&/$qt_cflags_private/QtGui,g"`
2362 qt_cflags_private=`pkg-config --cflags Qt5Gui | sed "s,QtGui,&/$qt_cflags_private/QtGui,g"`
2365 qt_cflags="$qt_cflags $qt_cflags_private"
2366 if test "$mingw32" = "no" ; then
2367 qt_cflags="$qt_cflags -fPIC"
2370 elif test "$qt" = "yes"; then
2371 feature_not_found "qt" "Install qt devel"
2380 ##########################################
2383 # Look for sdl configuration program (pkg-config or sdl-config). Try
2384 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2386 if test $sdlabi = "2.0"; then
2387 sdl_config=$sdl2_config
2389 sdlconfigname=sdl2_config
2392 sdlconfigname=sdl_config
2395 if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2396 sdl_config=$sdlconfigname
2399 if $pkg_config $sdlname --exists; then
2400 sdlconfig="$pkg_config $sdlname"
2401 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2402 elif has ${sdl_config}; then
2403 sdlconfig="$sdl_config"
2404 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2406 if test "$sdl" = "yes" ; then
2407 feature_not_found "sdl" "Install SDL devel"
2411 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2412 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2416 if test "$sdl" != "no" ; then
2419 #undef main /* We don't want SDL to override our main() */
2420 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2422 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2423 if test "$static" = "yes" ; then
2424 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2426 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2428 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2429 if test "$_sdlversion" -lt 121 ; then
2432 if test "$cocoa" = "no" ; then
2437 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2438 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2439 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2440 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2441 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2443 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2449 else # sdl not found
2450 if test "$sdl" = "yes" ; then
2451 feature_not_found "sdl" "Install SDL devel"
2454 fi # sdl compile test
2457 if test "$sdl" = "yes" ; then
2460 #if defined(SDL_VIDEO_DRIVER_X11)
2461 #include <X11/XKBlib.h>
2463 #error No x11 support
2465 int main(void) { return 0; }
2467 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2468 sdl_cflags="$sdl_cflags $x11_cflags"
2469 sdl_libs="$sdl_libs $x11_libs"
2471 libs_softmmu="$sdl_libs $libs_softmmu"
2474 ##########################################
2475 # RDMA needs OpenFabrics libraries
2476 if test "$rdma" != "no" ; then
2478 #include <rdma/rdma_cma.h>
2479 int main(void) { return 0; }
2481 rdma_libs="-lrdmacm -libverbs"
2482 if compile_prog "" "$rdma_libs" ; then
2484 libs_softmmu="$libs_softmmu $rdma_libs"
2486 if test "$rdma" = "yes" ; then
2488 " OpenFabrics librdmacm/libibverbs not present." \
2490 " (1) Fast: Install infiniband packages from your distro." \
2491 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2492 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2498 ##########################################
2499 # VNC TLS/WS detection
2500 if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
2502 #include <gnutls/gnutls.h>
2503 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2505 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2506 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
2507 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
2508 if test "$vnc_tls" != "no" ; then
2511 libs_softmmu="$vnc_tls_libs $libs_softmmu"
2512 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
2514 if test "$vnc_tls" = "yes" ; then
2515 feature_not_found "vnc-tls" "Install gnutls devel"
2521 ##########################################
2522 # VNC SASL detection
2523 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2525 #include <sasl/sasl.h>
2527 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2529 # Assuming Cyrus-SASL installed in /usr prefix
2531 vnc_sasl_libs="-lsasl2"
2532 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2534 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2535 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2537 if test "$vnc_sasl" = "yes" ; then
2538 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2544 ##########################################
2545 # VNC JPEG detection
2546 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2549 #include <jpeglib.h>
2550 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2553 vnc_jpeg_libs="-ljpeg"
2554 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2556 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2557 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2559 if test "$vnc_jpeg" = "yes" ; then
2560 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2566 ##########################################
2568 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2570 //#include <stdio.h>
2574 png_structp png_ptr;
2575 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2576 return png_ptr != 0;
2579 if $pkg_config libpng --exists; then
2580 vnc_png_cflags=`$pkg_config libpng --cflags`
2581 vnc_png_libs=`$pkg_config libpng --libs`
2584 vnc_png_libs="-lpng"
2586 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2588 libs_softmmu="$vnc_png_libs $libs_softmmu"
2589 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2591 if test "$vnc_png" = "yes" ; then
2592 feature_not_found "vnc-png" "Install libpng devel"
2598 ##########################################
2599 # fnmatch() probe, used for ACL routines
2602 #include <fnmatch.h>
2605 fnmatch("foo", "foo", 0);
2609 if compile_prog "" "" ; then
2613 ##########################################
2614 # uuid_generate() probe, used for vdi block driver
2615 # Note that on some systems (notably MacOSX) no extra library
2616 # need be linked to get the uuid functions.
2617 if test "$uuid" != "no" ; then
2620 #include <uuid/uuid.h>
2624 uuid_generate(my_uuid);
2628 if compile_prog "" "" ; then
2630 elif compile_prog "" "$uuid_libs" ; then
2632 libs_softmmu="$uuid_libs $libs_softmmu"
2633 libs_tools="$uuid_libs $libs_tools"
2635 if test "$uuid" = "yes" ; then
2636 feature_not_found "uuid" "Install libuuid devel"
2642 if test "$vhdx" = "yes" ; then
2643 if test "$uuid" = "no" ; then
2644 error_exit "uuid required for VHDX support"
2646 elif test "$vhdx" != "no" ; then
2647 if test "$uuid" = "yes" ; then
2654 ##########################################
2655 # xfsctl() probe, used for raw-posix
2656 if test "$xfs" != "no" ; then
2658 #include <stddef.h> /* NULL */
2659 #include <xfs/xfs.h>
2662 xfsctl(NULL, 0, 0, NULL);
2666 if compile_prog "" "" ; then
2669 if test "$xfs" = "yes" ; then
2670 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2676 ##########################################
2677 # vde libraries probe
2678 if test "$vde" != "no" ; then
2679 vde_libs="-lvdeplug"
2681 #include <libvdeplug.h>
2684 struct vde_open_args a = {0, 0, 0};
2690 if compile_prog "" "$vde_libs" ; then
2692 libs_softmmu="$vde_libs $libs_softmmu"
2693 libs_tools="$vde_libs $libs_tools"
2695 if test "$vde" = "yes" ; then
2696 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2702 ##########################################
2703 # netmap support probe
2704 # Apart from looking for netmap headers, we make sure that the host API version
2705 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2706 # a minor/major version number. Minor new features will be marked with values up
2707 # to 15, and if something happens that requires a change to the backend we will
2708 # move above 15, submit the backend fixes and modify this two bounds.
2709 if test "$netmap" != "no" ; then
2711 #include <inttypes.h>
2713 #include <net/netmap.h>
2714 #include <net/netmap_user.h>
2715 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2718 int main(void) { return 0; }
2720 if compile_prog "" "" ; then
2723 if test "$netmap" = "yes" ; then
2724 feature_not_found "netmap"
2730 ##########################################
2731 # libcap-ng library probe
2732 if test "$cap_ng" != "no" ; then
2738 capng_capability_to_name(CAPNG_EFFECTIVE);
2742 if compile_prog "" "$cap_libs" ; then
2744 libs_tools="$cap_libs $libs_tools"
2746 if test "$cap_ng" = "yes" ; then
2747 feature_not_found "cap_ng" "Install libcap-ng devel"
2753 ##########################################
2754 # Sound support libraries probe
2765 int main(void) { $exp }
2767 if compile_prog "$cfl" "$lib" ; then
2770 error_exit "$drv check failed" \
2771 "Make sure to have the $drv libs and headers installed."
2775 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2776 for drv in $audio_drv_list; do
2779 audio_drv_probe $drv alsa/asoundlib.h -lasound \
2780 "return snd_pcm_close((snd_pcm_t *)0);"
2781 libs_softmmu="-lasound $libs_softmmu"
2785 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2786 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2787 libs_softmmu="-lpulse $libs_softmmu"
2792 libs_softmmu="-framework CoreAudio $libs_softmmu"
2796 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2801 libs_softmmu="$oss_lib $libs_softmmu"
2805 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2809 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2810 error_exit "Unknown driver '$drv' selected" \
2811 "Possible drivers are: $audio_possible_drivers"
2817 ##########################################
2820 if test "$brlapi" != "no" ; then
2821 brlapi_libs="-lbrlapi"
2825 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2827 if compile_prog "" "$brlapi_libs" ; then
2829 libs_softmmu="$brlapi_libs $libs_softmmu"
2831 if test "$brlapi" = "yes" ; then
2832 feature_not_found "brlapi" "Install brlapi devel"
2838 ##########################################
2840 if test "$curses" != "no" ; then
2841 if test "$mingw32" = "yes" ; then
2842 curses_list="-lpdcurses"
2844 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2850 const char *s = curses_version();
2856 for curses_lib in $curses_list; do
2858 if compile_prog "" "$curses_lib" ; then
2860 libs_softmmu="$curses_lib $libs_softmmu"
2865 if test "$curses_found" = "yes" ; then
2868 if test "$curses" = "yes" ; then
2869 feature_not_found "curses" "Install ncurses devel"
2875 ##########################################
2877 if test "$curl" != "no" ; then
2878 if $pkg_config libcurl --exists; then
2879 curlconfig="$pkg_config libcurl"
2881 curlconfig=curl-config
2884 #include <curl/curl.h>
2885 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2887 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2888 curl_libs=`$curlconfig --libs 2>/dev/null`
2889 if compile_prog "$curl_cflags" "$curl_libs" ; then
2892 if test "$curl" = "yes" ; then
2893 feature_not_found "curl" "Install libcurl devel"
2899 ##########################################
2900 # bluez support probe
2901 if test "$bluez" != "no" ; then
2903 #include <bluetooth/bluetooth.h>
2904 int main(void) { return bt_error(0); }
2906 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2907 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2908 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2910 libs_softmmu="$bluez_libs $libs_softmmu"
2912 if test "$bluez" = "yes" ; then
2913 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2919 ##########################################
2920 # glib support probe
2923 glib_modules=gthread-2.0
2924 if test "$modules" = yes; then
2925 glib_modules="$glib_modules gmodule-2.0"
2928 for i in $glib_modules; do
2929 if $pkg_config --atleast-version=$glib_req_ver $i; then
2930 glib_cflags=`$pkg_config --cflags $i`
2931 glib_libs=`$pkg_config --libs $i`
2932 CFLAGS="$glib_cflags $CFLAGS"
2933 LIBS="$glib_libs $LIBS"
2934 libs_qga="$glib_libs $libs_qga"
2936 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2940 # g_test_trap_subprocess added in 2.38. Used by some tests.
2942 if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2946 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2949 int main(void) { return 0; }
2951 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2952 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2953 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2954 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2958 ##########################################
2959 # SHA command probe for modules
2960 if test "$modules" = yes; then
2961 shacmd_probe="sha1sum sha1 shasum"
2962 for c in $shacmd_probe; do
2968 if test "$shacmd" = ""; then
2969 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2973 ##########################################
2974 # pixman support probe
2976 if test "$pixman" = ""; then
2977 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2979 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
2985 if test "$pixman" = "none"; then
2986 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2987 error_exit "pixman disabled but system emulation or tools build" \
2988 "enabled. You can turn off pixman only if you also" \
2989 "disable all system emulation targets and the tools" \
2990 "build with '--disable-tools --disable-system'."
2994 elif test "$pixman" = "system"; then
2995 # pixman version has been checked above
2996 pixman_cflags=`$pkg_config --cflags pixman-1`
2997 pixman_libs=`$pkg_config --libs pixman-1`
2999 if test ! -d ${source_path}/pixman/pixman; then
3000 error_exit "pixman >= 0.21.8 not present. Your options:" \
3001 " (1) Preferred: Install the pixman devel package (any recent" \
3002 " distro should have packages as Xorg needs pixman too)." \
3003 " (2) Fetch the pixman submodule, using:" \
3004 " git submodule update --init pixman"
3006 mkdir -p pixman/pixman
3007 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3008 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3011 ##########################################
3014 if test "$cap" != "no" ; then
3017 #include <sys/capability.h>
3018 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3020 if compile_prog "" "-lcap" ; then
3027 ##########################################
3029 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
3033 #include <pthread.h>
3034 static void *f(void *p) { return NULL; }
3037 pthread_create(&thread, 0, f, 0);
3041 if compile_prog "" "" ; then
3044 for pthread_lib in $PTHREADLIBS_LIST; do
3045 if compile_prog "" "$pthread_lib" ; then
3048 for lib_entry in $LIBS; do
3049 if test "$lib_entry" = "$pthread_lib"; then
3054 if test "$found" = "no"; then
3055 LIBS="$pthread_lib $LIBS"
3062 if test "$mingw32" != yes -a "$pthread" = no; then
3063 error_exit "pthread check failed" \
3064 "Make sure to have the pthread libs and headers installed."
3067 # check for pthread_setname_np
3068 pthread_setname_np=no
3070 #include <pthread.h>
3072 static void *f(void *p) { return NULL; }
3076 pthread_create(&thread, 0, f, 0);
3077 pthread_setname_np(thread, "QEMU");
3081 if compile_prog "" "$pthread_lib" ; then
3082 pthread_setname_np=yes
3085 ##########################################
3087 if test "$rbd" != "no" ; then
3090 #include <rbd/librbd.h>
3093 rados_create(&cluster, NULL);
3097 rbd_libs="-lrbd -lrados"
3098 if compile_prog "" "$rbd_libs" ; then
3101 if test "$rbd" = "yes" ; then
3102 feature_not_found "rados block device" "Install librbd/ceph devel"
3108 ##########################################
3110 min_libssh2_version=1.2.8
3111 if test "$libssh2" != "no" ; then
3112 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
3113 libssh2_cflags=`$pkg_config libssh2 --cflags`
3114 libssh2_libs=`$pkg_config libssh2 --libs`
3117 if test "$libssh2" = "yes" ; then
3118 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
3124 ##########################################
3125 # libssh2_sftp_fsync probe
3127 if test "$libssh2" = "yes"; then
3130 #include <libssh2.h>
3131 #include <libssh2_sftp.h>
3133 LIBSSH2_SESSION *session;
3135 LIBSSH2_SFTP_HANDLE *sftp_handle;
3136 session = libssh2_session_init ();
3137 sftp = libssh2_sftp_init (session);
3138 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3139 libssh2_sftp_fsync (sftp_handle);
3143 # libssh2_cflags/libssh2_libs defined in previous test.
3144 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3145 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3149 ##########################################
3152 if test "$linux_aio" != "no" ; then
3155 #include <sys/eventfd.h>
3157 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3159 if compile_prog "" "-laio" ; then
3162 if test "$linux_aio" = "yes" ; then
3163 feature_not_found "linux AIO" "Install libaio devel"
3169 ##########################################
3170 # TPM passthrough is only on x86 Linux
3172 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3173 tpm_passthrough=$tpm
3178 ##########################################
3181 if test "$attr" != "no" ; then
3184 #include <sys/types.h>
3185 #ifdef CONFIG_LIBATTR
3186 #include <attr/xattr.h>
3188 #include <sys/xattr.h>
3190 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3192 if compile_prog "" "" ; then
3194 # Older distros have <attr/xattr.h>, and need -lattr:
3195 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3200 if test "$attr" = "yes" ; then
3201 feature_not_found "ATTR" "Install libc6 or libattr devel"
3207 ##########################################
3210 #include <sys/types.h>
3211 #include <sys/uio.h>
3213 int main(void) { return sizeof(struct iovec); }
3216 if compile_prog "" "" ; then
3220 ##########################################
3223 #include <sys/types.h>
3224 #include <sys/uio.h>
3226 int main(void) { return preadv(0, 0, 0, 0); }
3229 if compile_prog "" "" ; then
3233 ##########################################
3235 # fdt support is mandatory for at least some target architectures,
3236 # so insist on it if we're building those system emulators.
3238 for target in $target_list; do
3240 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3246 if test "$fdt_required" = "yes"; then
3247 if test "$fdt" = "no"; then
3248 error_exit "fdt disabled but some requested targets require it." \
3249 "You can turn off fdt only if you also disable all the system emulation" \
3250 "targets which need it (by specifying a cut down --target-list)."
3255 if test "$fdt" != "no" ; then
3257 # explicitly check for libfdt_env.h as it is missing in some stable installs
3258 # and test for required functions to make sure we are on a version >= 1.4.0
3261 #include <libfdt_env.h>
3262 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3264 if compile_prog "" "$fdt_libs" ; then
3265 # system DTC is good - use it
3267 elif test -d ${source_path}/dtc/libfdt ; then
3268 # have submodule DTC - use it
3272 if [ "$pwd_is_source_path" != "y" ] ; then
3273 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3274 symlink "$source_path/dtc/scripts" "dtc/scripts"
3276 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3277 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3278 elif test "$fdt" = "yes" ; then
3279 # have neither and want - prompt for system/submodule install
3280 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3281 " (1) Preferred: Install the DTC (libfdt) devel package" \
3282 " (2) Fetch the DTC submodule, using:" \
3283 " git submodule update --init dtc"
3285 # don't have and don't want
3291 libs_softmmu="$libs_softmmu $fdt_libs"
3293 ##########################################
3294 # opengl probe (for sdl2, milkymist-tmu2)
3296 # GLX probe, used by milkymist-tmu2
3297 # this is temporary, code will be switched to egl mid-term.
3299 #include <X11/Xlib.h>
3302 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3304 if compile_prog "" "-lGL -lX11" ; then
3310 if test "$opengl" != "no" ; then
3311 opengl_pkgs="gl glesv2 epoxy egl"
3312 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
3313 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3314 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3317 if test "$opengl" = "yes" ; then
3318 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3327 ##########################################
3329 if test "$archipelago" != "no" ; then
3332 #include <xseg/xseg.h>
3333 #include <xseg/protocol.h>
3339 archipelago_libs=-lxseg
3340 if compile_prog "" "$archipelago_libs"; then
3342 libs_tools="$archipelago_libs $libs_tools"
3343 libs_softmmu="$archipelago_libs $libs_softmmu"
3345 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3346 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3347 echo "license and therefore prevent redistribution."
3349 echo "To disable Archipelago, use --disable-archipelago"
3351 if test "$archipelago" = "yes" ; then
3352 feature_not_found "Archipelago backend support" "Install libxseg devel"
3359 ##########################################
3361 if test "$glusterfs" != "no" ; then
3362 if $pkg_config --atleast-version=3 glusterfs-api; then
3364 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3365 glusterfs_libs=`$pkg_config --libs glusterfs-api`
3366 if $pkg_config --atleast-version=5 glusterfs-api; then
3367 glusterfs_discard="yes"
3369 if $pkg_config --atleast-version=6 glusterfs-api; then
3370 glusterfs_zerofill="yes"
3373 if test "$glusterfs" = "yes" ; then
3374 feature_not_found "GlusterFS backend support" \
3375 "Install glusterfs-api devel >= 3"
3381 # Check for inotify functions when we are building linux-user
3382 # emulator. This is done because older glibc versions don't
3383 # have syscall stubs for these implemented. In that case we
3384 # don't provide them even if kernel supports them.
3388 #include <sys/inotify.h>
3393 /* try to start inotify */
3394 return inotify_init();
3397 if compile_prog "" "" ; then
3403 #include <sys/inotify.h>
3408 /* try to start inotify */
3409 return inotify_init1(0);
3412 if compile_prog "" "" ; then
3416 # check if utimensat and futimens are supported
3419 #define _ATFILE_SOURCE
3422 #include <sys/stat.h>
3426 utimensat(AT_FDCWD, "foo", NULL, 0);
3431 if compile_prog "" "" ; then
3435 # check if pipe2 is there
3444 return pipe2(pipefd, O_CLOEXEC);
3447 if compile_prog "" "" ; then
3451 # check if accept4 is there
3454 #include <sys/socket.h>
3459 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3463 if compile_prog "" "" ; then
3467 # check if tee/splice is there. vmsplice was added same time.
3477 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3478 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3482 if compile_prog "" "" ; then
3486 ##########################################
3489 if test "$numa" != "no" ; then
3492 int main(void) { return numa_available(); }
3495 if compile_prog "" "-lnuma" ; then
3497 libs_softmmu="-lnuma $libs_softmmu"
3499 if test "$numa" = "yes" ; then
3500 feature_not_found "numa" "install numactl devel"
3506 ##########################################
3509 if test "$tcmalloc" = "yes" ; then
3512 int main(void) { malloc(1); return 0; }
3515 if compile_prog "" "-ltcmalloc" ; then
3516 LIBS="-ltcmalloc $LIBS"
3518 feature_not_found "tcmalloc" "install gperftools devel"
3522 ##########################################
3527 #include <sys/syscall.h>
3529 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3532 if compile_prog "" "" ; then
3536 # check if eventfd is supported
3539 #include <sys/eventfd.h>
3543 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3546 if compile_prog "" "" ; then
3550 # check for fallocate
3557 fallocate(0, 0, 0, 0);
3561 if compile_prog "" "" ; then
3565 # check for fallocate hole punching
3566 fallocate_punch_hole=no
3569 #include <linux/falloc.h>
3573 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3577 if compile_prog "" "" ; then
3578 fallocate_punch_hole=yes
3581 # check that fallocate supports range zeroing inside the file
3582 fallocate_zero_range=no
3585 #include <linux/falloc.h>
3589 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3593 if compile_prog "" "" ; then
3594 fallocate_zero_range=yes
3597 # check for posix_fallocate
3604 posix_fallocate(0, 0, 0);
3608 if compile_prog "" "" ; then
3612 # check for sync_file_range
3619 sync_file_range(0, 0, 0, 0);
3623 if compile_prog "" "" ; then
3627 # check for linux/fiemap.h and FS_IOC_FIEMAP
3630 #include <sys/ioctl.h>
3631 #include <linux/fs.h>
3632 #include <linux/fiemap.h>
3636 ioctl(0, FS_IOC_FIEMAP, 0);
3640 if compile_prog "" "" ; then
3655 if compile_prog "" "" ; then
3659 # check for ppoll support
3666 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3667 ppoll(&pfd, 1, 0, 0);
3671 if compile_prog "" "" ; then
3675 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3676 prctl_pr_set_timerslack=no
3678 #include <sys/prctl.h>
3682 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3686 if compile_prog "" "" ; then
3687 prctl_pr_set_timerslack=yes
3690 # check for epoll support
3693 #include <sys/epoll.h>
3701 if compile_prog "" "" ; then
3705 # epoll_create1 and epoll_pwait are later additions
3706 # so we must check separately for their presence
3709 #include <sys/epoll.h>
3713 /* Note that we use epoll_create1 as a value, not as
3714 * a function being called. This is necessary so that on
3715 * old SPARC glibc versions where the function was present in
3716 * the library but not declared in the header file we will
3717 * fail the configure check. (Otherwise we will get a compiler
3718 * warning but not an error, and will proceed to fail the
3719 * qemu compile where we compile with -Werror.)
3721 return (int)(uintptr_t)&epoll_create1;
3724 if compile_prog "" "" ; then
3730 #include <sys/epoll.h>
3734 epoll_pwait(0, 0, 0, 0, 0);
3738 if compile_prog "" "" ; then
3742 # check for sendfile support
3745 #include <sys/sendfile.h>
3749 return sendfile(0, 0, 0, 0);
3752 if compile_prog "" "" ; then
3756 # check for timerfd support (glibc 2.8 and newer)
3759 #include <sys/timerfd.h>
3763 return(timerfd_create(CLOCK_REALTIME, 0));
3766 if compile_prog "" "" ; then
3770 # check for setns and unshare support
3783 if compile_prog "" "" ; then
3787 # Check if tools are available to build documentation.
3788 if test "$docs" != "no" ; then
3789 if has makeinfo && has pod2man; then
3792 if test "$docs" = "yes" ; then
3793 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
3799 # Search for bswap_32 function
3802 #include <byteswap.h>
3803 int main(void) { return bswap_32(0); }
3805 if compile_prog "" "" ; then
3809 # Search for bswap32 function
3812 #include <sys/endian.h>
3813 #include <sys/types.h>
3814 #include <machine/bswap.h>
3815 int main(void) { return bswap32(0); }
3817 if compile_prog "" "" ; then
3821 ##########################################
3822 # Do we have libiscsi >= 1.9.0
3823 if test "$libiscsi" != "no" ; then
3824 if $pkg_config --atleast-version=1.9.0 libiscsi; then
3826 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3827 libiscsi_libs=$($pkg_config --libs libiscsi)
3829 if test "$libiscsi" = "yes" ; then
3830 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
3836 ##########################################
3840 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3842 if compile_prog "" "" ; then
3844 elif compile_prog "" "-lm" ; then
3846 libs_qga="-lm $libs_qga"
3848 error_exit "libm check failed"
3851 ##########################################
3853 # uClibc provides 2 versions of clock_gettime(), one with realtime
3854 # support and one without. This means that the clock_gettime() don't
3855 # need -lrt. We still need it for timer_create() so we check for this
3856 # function in addition.
3861 timer_create(CLOCK_REALTIME, NULL, NULL);
3862 return clock_gettime(CLOCK_REALTIME, NULL);
3866 if compile_prog "" "" ; then
3868 # we need pthread for static linking. use previous pthread test result
3869 elif compile_prog "" "$pthread_lib -lrt" ; then
3871 libs_qga="$libs_qga -lrt"
3874 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3875 "$aix" != "yes" -a "$haiku" != "yes" ; then
3876 libs_softmmu="-lutil $libs_softmmu"
3879 ##########################################
3881 if test "$spice" != "no" ; then
3884 int main(void) { spice_server_new(); return 0; }
3886 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3887 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
3888 if $pkg_config --atleast-version=0.12.0 spice-server && \
3889 $pkg_config --atleast-version=0.12.3 spice-protocol && \
3890 compile_prog "$spice_cflags" "$spice_libs" ; then
3892 libs_softmmu="$libs_softmmu $spice_libs"
3893 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
3894 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3895 spice_server_version=$($pkg_config --modversion spice-server)
3897 if test "$spice" = "yes" ; then
3898 feature_not_found "spice" \
3899 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3905 # check for libcacard for smartcard support
3907 # TODO - what's the minimal nss version we support?
3908 if test "$smartcard_nss" != "no"; then
3910 #include <pk11pub.h>
3911 int main(void) { PK11_FreeSlot(0); return 0; }
3913 # FIXME: do not include $glib_* in here
3914 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3915 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3916 test_cflags="$nss_cflags"
3917 # The header files in nss < 3.13.3 have a bug which causes them to
3918 # emit a warning. If we're going to compile QEMU with -Werror, then
3919 # test that the headers don't have this bug. Otherwise we would pass
3920 # the configure test but fail to compile QEMU later.
3921 if test "$werror" = "yes"; then
3922 test_cflags="-Werror $test_cflags"
3924 if test -n "$libtool" &&
3925 $pkg_config --atleast-version=3.12.8 nss && \
3926 compile_prog "$test_cflags" "$nss_libs"; then
3929 if test "$smartcard_nss" = "yes"; then
3930 feature_not_found "nss" "Install nss devel >= 3.12.8"
3936 # check for libtizenusb
3937 if test "$libtizenusb" != "no" ; then
3941 echo $PKG_CONFIG_PATH
3942 if $pkg_config --modversion libtizenusb >/dev/null 2>&1 ; then
3943 libtizenusb_cflags=$($pkg_config --cflags libtizenusb 2>/dev/null)
3944 libtizenusb_libs=$($pkg_config --libs libtizenusb 2>/dev/null)
3946 echo "libtizenusb found"
3947 echo "cflags = $libtizenusb_cflags"
3948 echo "libs = $libtizenusb_libs"
3950 error_exit "libtizenusb not found (you might not be set PKG_CONFIG_PATH"
3952 QEMU_CFLAGS="$QEMU_CFLAGS $libtizenusb_cflags"
3953 libs_softmmu="$libs_softmmu $libtizenusb_libs"
3957 if test "$libusb" != "no" ; then
3958 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
3960 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3961 libusb_libs=$($pkg_config --libs libusb-1.0)
3962 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3963 libs_softmmu="$libs_softmmu $libusb_libs"
3965 if test "$libusb" = "yes"; then
3966 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
3972 # check for usbredirparser for usb network redirection support
3973 if test "$usb_redir" != "no" ; then
3974 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
3976 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3977 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
3978 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
3979 libs_softmmu="$libs_softmmu $usb_redir_libs"
3981 if test "$usb_redir" = "yes"; then
3982 feature_not_found "usb-redir" "Install usbredir devel"
3988 ##########################################
3989 # check if we have VSS SDK headers for win
3991 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3992 case "$vss_win32_sdk" in
3993 "") vss_win32_include="-I$source_path" ;;
3994 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3995 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3996 vss_win32_include="-I$source_path/.sdk/vss"
3997 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3999 *) vss_win32_include="-I$vss_win32_sdk"
4002 #define __MIDL_user_allocate_free_DEFINED__
4003 #include <inc/win2003/vss.h>
4004 int main(void) { return VSS_CTX_BACKUP; }
4006 if compile_prog "$vss_win32_include" "" ; then
4007 guest_agent_with_vss="yes"
4008 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4009 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4011 if test "$vss_win32_sdk" != "" ; then
4012 echo "ERROR: Please download and install Microsoft VSS SDK:"
4013 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4014 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4015 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4016 echo "ERROR: The headers are extracted in the directory \`inc'."
4017 feature_not_found "VSS support"
4019 guest_agent_with_vss="no"
4023 ##########################################
4024 # lookup Windows platform SDK (if not specified)
4025 # The SDK is needed only to build .tlb (type library) file of guest agent
4026 # VSS provider from the source. It is usually unnecessary because the
4027 # pre-compiled .tlb file is included.
4029 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4030 if test -z "$win_sdk"; then
4031 programfiles="$PROGRAMFILES"
4032 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4033 if test -n "$programfiles"; then
4034 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4036 feature_not_found "Windows SDK"
4038 elif test "$win_sdk" = "no"; then
4043 ##########################################
4044 # check if mingw environment provides a recent ntddscsi.h
4045 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4047 #include <windows.h>
4048 #include <ntddscsi.h>
4050 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4051 #error Missing required ioctl definitions
4053 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4057 if compile_prog "" "" ; then
4058 guest_agent_ntddscsi=yes
4059 libs_qga="-lsetupapi $libs_qga"
4063 ##########################################
4064 # Guest agent Window MSI package
4066 if test "$guest_agent" != yes; then
4067 if test "$guest_agent_msi" = yes; then
4068 error_exit "MSI guest agent package requires guest agent enabled"
4071 elif test "$mingw32" != "yes"; then
4072 if test "$guest_agent_msi" = "yes"; then
4073 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4076 elif ! has wixl; then
4077 if test "$guest_agent_msi" = "yes"; then
4078 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4083 if test "$guest_agent_msi" != "no"; then
4084 if test "$guest_agent_with_vss" = "yes"; then
4085 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4088 if test "$QEMU_GA_MANUFACTURER" = ""; then
4089 QEMU_GA_MANUFACTURER=QEMU
4092 if test "$QEMU_GA_DISTRO" = ""; then
4093 QEMU_GA_DISTRO=Linux
4096 if test "$QEMU_GA_VERSION" = ""; then
4097 QEMU_GA_VERSION=`cat $source_path/VERSION`
4100 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4104 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4107 QEMU_GA_MSI_ARCH="-D Arch=32"
4110 error_exit "CPU $cpu not supported for building installation package"
4115 ##########################################
4116 # check if we have fdatasync
4122 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4123 return fdatasync(0);
4125 #error Not supported
4129 if compile_prog "" "" ; then
4133 ##########################################
4134 # check if we have madvise
4138 #include <sys/types.h>
4139 #include <sys/mman.h>
4141 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4143 if compile_prog "" "" ; then
4147 ##########################################
4148 # check if we have posix_madvise
4152 #include <sys/mman.h>
4154 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4156 if compile_prog "" "" ; then
4160 ##########################################
4161 # check if we have usable SIGEV_THREAD_ID
4168 ev.sigev_notify = SIGEV_THREAD_ID;
4169 ev._sigev_un._tid = 0;
4170 asm volatile("" : : "g"(&ev));
4174 if compile_prog "" "" ; then
4178 ##########################################
4179 # check if trace backend exists
4181 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4182 if test "$?" -ne 0 ; then
4183 error_exit "invalid trace backends" \
4184 "Please choose supported trace backends."
4187 ##########################################
4188 # For 'ust' backend, test if ust headers are present
4189 if have_backend "ust"; then
4191 #include <lttng/tracepoint.h>
4192 int main(void) { return 0; }
4194 if compile_prog "" "" ; then
4195 if $pkg_config lttng-ust --exists; then
4196 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4198 lttng_ust_libs="-llttng-ust"
4200 if $pkg_config liburcu-bp --exists; then
4201 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4203 urcu_bp_libs="-lurcu-bp"
4206 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4207 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4209 error_exit "Trace backend 'ust' missing lttng-ust header files"
4213 ##########################################
4214 # For 'dtrace' backend, test if 'dtrace' command is present
4215 if have_backend "dtrace"; then
4216 if ! has 'dtrace' ; then
4217 error_exit "dtrace command is not found in PATH $PATH"
4219 trace_backend_stap="no"
4220 if has 'stap' ; then
4221 trace_backend_stap="yes"
4225 ##########################################
4226 # check and set a backend for coroutine
4228 # We prefer ucontext, but it's not always possible. The fallback
4229 # is sigcontext. gthread is not selectable except explicitly, because
4230 # it is not functional enough to run QEMU proper. (It is occasionally
4231 # useful for debugging purposes.) On Windows the only valid backend
4232 # is the Windows-specific one.
4235 if test "$darwin" != "yes"; then
4237 #include <ucontext.h>
4238 #ifdef __stub_makecontext
4239 #error Ignoring glibc stub makecontext which will always fail
4241 int main(void) { makecontext(0, 0, 0); return 0; }
4243 if compile_prog "" "" ; then
4248 if test "$coroutine" = ""; then
4249 if test "$mingw32" = "yes"; then
4251 elif test "$ucontext_works" = "yes"; then
4254 coroutine=sigaltstack
4259 if test "$mingw32" != "yes"; then
4260 error_exit "'windows' coroutine backend only valid for Windows"
4262 # Unfortunately the user visible backend name doesn't match the
4263 # coroutine-*.c filename for this case, so we have to adjust it here.
4267 if test "$ucontext_works" != "yes"; then
4268 feature_not_found "ucontext"
4271 gthread|sigaltstack)
4272 if test "$mingw32" = "yes"; then
4273 error_exit "only the 'windows' coroutine backend is valid for Windows"
4277 error_exit "unknown coroutine backend $coroutine"
4282 if test "$coroutine_pool" = ""; then
4283 if test "$coroutine" = "gthread"; then
4289 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4290 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4293 ##########################################
4294 # check if we have open_by_handle_at
4296 open_by_handle_at=no
4299 #if !defined(AT_EMPTY_PATH)
4300 # error missing definition
4302 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4305 if compile_prog "" "" ; then
4306 open_by_handle_at=yes
4309 ########################################
4310 # check if we have linux/magic.h
4314 #include <linux/magic.h>
4319 if compile_prog "" "" ; then
4323 ########################################
4324 # check whether we can disable warning option with a pragma (this is needed
4325 # to silence warnings in the headers of some versions of external libraries).
4326 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4329 # If we can't selectively disable warning in the code, disable -Werror so that
4330 # the build doesn't fail anyway.
4332 pragma_disable_unused_but_set=no
4334 #pragma GCC diagnostic push
4335 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4336 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4337 #pragma GCC diagnostic pop
4343 if compile_prog "-Werror" "" ; then
4344 pragma_diagnostic_available=yes
4346 if test "$force_werror" != "yes"; then
4351 ########################################
4352 # check if we have valgrind/valgrind.h
4356 #include <valgrind/valgrind.h>
4361 if compile_prog "" "" ; then
4365 ########################################
4366 # check if environ is declared
4376 if compile_prog "" "" ; then
4380 ########################################
4381 # check if cpuid.h is usable.
4387 unsigned a, b, c, d;
4388 int max = __get_cpuid_max(0, 0);
4391 __cpuid(1, a, b, c, d);
4395 __cpuid_count(7, 0, a, b, c, d);
4401 if compile_prog "" "" ; then
4405 ########################################
4406 # check if __[u]int128_t is usable.
4410 #if defined(__clang_major__) && defined(__clang_minor__)
4411 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4412 # error __int128_t does not work in CLANG before 3.2
4424 if compile_prog "" "" ; then
4428 ########################################
4429 # check if getauxval is available.
4433 #include <sys/auxv.h>
4435 return getauxval(AT_HWCAP) == 0;
4438 if compile_prog "" "" ; then
4442 ########################################
4443 # check if ccache is interfering with
4444 # semantic analysis of macros
4448 static const int Z = 1;
4449 #define fn() ({ Z; })
4450 #define TAUT(X) ((X) == Z)
4451 #define PAREN(X, Y) (X == Y)
4453 int main(int argc, char *argv[])
4459 if (PAREN(x, y)) return 0;
4460 if (TAUT(Z)) return 0;
4465 if ! compile_object "-Werror"; then
4469 ##########################################
4471 # After here, no more $cc or $ld runs
4473 if test "$gcov" = "yes" ; then
4474 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4475 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4476 elif test "$debug" = "no" ; then
4477 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4480 ##########################################
4482 if test "$libnfs" != "no" ; then
4483 if $pkg_config --atleast-version=1.9.3 libnfs; then
4485 libnfs_libs=$($pkg_config --libs libnfs)
4486 LIBS="$LIBS $libnfs_libs"
4488 if test "$libnfs" = "yes" ; then
4489 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4495 ########################################
4496 # check if dxva2 is available.
4502 #include <dxva2api.h>
4504 #if !defined(IDirect3D9_CreateDevice) || \
4505 !defined(IDirect3DDeviceManager9_ResetDevice)
4506 #error No DXVA2 support
4511 if compile_prog "" "" ; then
4519 if test "$dxva2" = "yes" ; then
4520 if test "$mingw32" = "yes" ; then
4522 if test "$dxva2" != "yes" ; then
4523 feature_not_found "dxva2"
4526 error_exit "DXVA2 is supported only on Windows"
4529 if test "$dxva2" != "no" ; then
4534 ########################################
4535 # check if vaapi is available.
4539 if $pkg_config libva --exists; then
4540 libva_cflags=`$pkg_config --cflags libva`
4541 libva_libs=`$pkg_config --libs libva`
4547 if $pkg_config libva-x11 --exists; then
4548 libva_x11_cflags=`$pkg_config --cflags libva-x11`
4549 libva_x11_libs=`$pkg_config --libs libva-x11`
4550 libs_softmmu="$libva_libs $libva_x11_libs $libs_softmmu"
4558 if test "$vaapi" = "yes" ; then
4559 if test "$linux" = "yes" ; then
4561 if test "$vaapi" != "yes" ; then
4562 feature_not_found "vaapi"
4565 error_exit "VAAPI is supported only on Linux"
4568 if test "$vaapi" != "no" ; then
4573 ########################################
4576 if test "$mingw32" = "yes" ; then
4577 QEMU_CFLAGS="-DWINVER=$winver -D_WIN32_WINNT=$winver $QEMU_CFLAGS"
4580 ########################################
4581 # check extension path
4583 if [ ! -d "$source_path/tizen/src/$extension_path" ] ; then
4584 error_exit "Extension path is not valid $source_path/tizen/src/$extension_path"
4587 ##########################################
4590 libavcodec_package="libavcodec"
4591 libavcodec_version="54.35.0"
4592 libavutil_package="libavutil"
4593 libavutil_version="52.3.0"
4594 libavformat_package="libavformat"
4595 libavformat_version="54.20.3"
4596 libavresample_package="libavresample"
4597 libavresample_version="1.0.1"
4598 libx264_package="x264"
4599 libav_package="libav"
4605 if ! $pkg_config --exists "$libavcodec_package >= $libavcodec_version" ; then
4608 if ! $pkg_config --exists "$libavformat_package >= $libavformat_version" ; then
4611 if ! $pkg_config --exists "$libavutil_package >= $libavutil_version" ; then
4614 if ! $pkg_config --exists "$libavresample_package >= $libavresample_version" ; then
4619 if $pkg_config --exists "$libx264_package" ; then
4624 set_libav_config() {
4625 if [ "$libav" = "yes" ]; then
4626 if [ "$exists_libav" = "no" ]; then
4627 feature_not_found "$libav_package"
4628 elif [ "$exists_x264" = "no" ]; then
4629 feature_not_found "$libx264_package"
4633 if [ "$exists_libav" = "yes" ] && [ "$exists_x264" = "yes" ]; then
4635 libav_cflags=`$pkg_config --cflags $libavcodec_package` #Header files are in same place.
4636 libav_libs=`$pkg_config --libs $libavcodec_package $libavformat_package $libavutil_package $libavresample_package $libx264_package`
4642 if [ "$libav" != "no" ]; then
4647 ##########################################
4650 if test "$libpng" != "no"; then
4651 libpng_package="libpng"
4653 if $pkg_config --exists "$libpng_package" ; then
4654 libpng_cflags=`$pkg_config --cflags $libpng_package`
4655 libpng_libs=`$pkg_config --libs $libpng_package`
4656 libs_softmmu="$libpng_libs $libs_softmmu"
4659 if test "$libpng" = "yes" ; then
4660 feature_not_found "libpng"
4667 # Disable zero malloc errors for official releases unless explicitly told to
4669 if test -z "$zero_malloc" ; then
4670 if test "$z_version" = "50" ; then
4677 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4678 if test "$werror" = "yes"; then
4679 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4682 if test "$solaris" = "no" ; then
4683 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
4684 LDFLAGS="-Wl,--warn-common $LDFLAGS"
4688 # test if pod2man has --utf8 option
4689 if pod2man --help | grep -q utf8; then
4690 POD2MAN="pod2man --utf8"
4695 # Use ASLR, no-SEH and DEP if available
4696 if test "$mingw32" = "yes" ; then
4697 for flag in --dynamicbase --no-seh --nxcompat; do
4698 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4699 LDFLAGS="-Wl,$flag $LDFLAGS"
4704 qemu_confdir=$sysconfdir$confsuffix
4705 qemu_moddir=$libdir$confsuffix
4706 qemu_datadir=$datadir$confsuffix
4707 qemu_localedir="$datadir/locale"
4710 if test "$want_tools" = "yes" ; then
4711 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4712 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4713 tools="qemu-nbd\$(EXESUF) $tools"
4716 if test "$softmmu" = yes ; then
4717 if test "$virtfs" != no ; then
4718 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4720 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4721 elif test "$darwin" = yes ; then
4722 echo "Enable VirtFS on Darwin"
4724 elif test "$mingw32" = yes ; then
4725 echo "Enable VirtFS on Windows"
4728 if test "$virtfs" = yes; then
4729 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4735 if [ "$guest_agent" != "no" ]; then
4736 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4737 tools="qemu-ga\$(EXESUF) $tools"
4738 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4739 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4742 elif [ "$guest_agent" != yes ]; then
4745 error_exit "Guest agent is not supported on this platform"
4749 # Mac OS X ships with a broken assembler
4751 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4752 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4753 "$softmmu" = yes ; then
4756 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4757 roms="$roms spapr-rtas"
4760 if test "$cpu" = "s390x" ; then
4761 roms="$roms s390-ccw"
4764 # Probe for the need for relocating the user-only binary.
4765 if test "$pie" = "no" ; then
4768 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4769 # ??? Rationale for choosing this address
4770 textseg_addr=0x60000000
4773 # A 256M aligned address, high in the address space, with enough
4774 # room for the code_gen_buffer above it before the stack.
4775 textseg_addr=0x60000000
4778 if [ -n "$textseg_addr" ]; then
4780 int main(void) { return 0; }
4782 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4783 if ! compile_prog "" "$textseg_ldflags"; then
4784 # In case ld does not support -Ttext-segment, edit the default linker
4785 # script via sed to set the .text start addr. This is needed on FreeBSD
4787 $ld --verbose | sed \
4788 -e '1,/==================================================/d' \
4789 -e '/==================================================/,$d' \
4790 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4791 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4792 textseg_ldflags="-Wl,-T../config-host.ld"
4797 # prepend pixman and ftd flags after all config tests are done
4798 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4799 libs_softmmu="$pixman_libs $libs_softmmu"
4801 echo "Install prefix $prefix"
4802 echo "BIOS directory `eval echo $qemu_datadir`"
4803 echo "binary directory `eval echo $bindir`"
4804 echo "library directory `eval echo $libdir`"
4805 echo "module directory `eval echo $qemu_moddir`"
4806 echo "libexec directory `eval echo $libexecdir`"
4807 echo "include directory `eval echo $includedir`"
4808 echo "config directory `eval echo $sysconfdir`"
4809 if test "$mingw32" = "no" ; then
4810 echo "local state directory `eval echo $local_statedir`"
4811 echo "Manual directory `eval echo $mandir`"
4812 echo "ELF interp prefix $interp_prefix"
4814 echo "local state directory queried at runtime"
4815 echo "Windows SDK $win_sdk"
4817 echo "Source path $source_path"
4818 echo "C compiler $cc"
4819 echo "Host C compiler $host_cc"
4820 echo "C++ compiler $cxx"
4821 echo "Objective-C compiler $objcc"
4822 echo "ARFLAGS $ARFLAGS"
4823 echo "CFLAGS $CFLAGS"
4824 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4825 echo "LDFLAGS $LDFLAGS"
4827 echo "install $install"
4828 echo "python $python"
4829 if test "$slirp" = "yes" ; then
4832 echo "module support $modules"
4833 echo "host CPU $cpu"
4834 echo "host big endian $bigendian"
4835 echo "target list $target_list"
4836 echo "tcg debug enabled $debug_tcg"
4837 echo "gprof enabled $gprof"
4838 echo "sparse enabled $sparse"
4839 echo "strip binaries $strip_opt"
4840 echo "profiler $profiler"
4841 echo "static build $static"
4842 if test "$darwin" = "yes" ; then
4843 echo "Cocoa support $cocoa"
4845 echo "pixman $pixman"
4846 echo "SDL support $sdl"
4847 echo "GTK support $gtk"
4848 echo "GNUTLS support $gnutls"
4849 echo "GNUTLS hash $gnutls_hash"
4850 echo "GNUTLS gcrypt $gnutls_gcrypt"
4851 echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
4852 echo "VTE support $vte"
4853 echo "curses support $curses"
4854 echo "curl support $curl"
4855 echo "mingw32 support $mingw32"
4856 echo "Audio drivers $audio_drv_list"
4857 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4858 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4859 echo "VirtFS support $virtfs"
4860 echo "VNC support $vnc"
4861 if test "$vnc" = "yes" ; then
4862 echo "VNC TLS support $vnc_tls"
4863 echo "VNC SASL support $vnc_sasl"
4864 echo "VNC JPEG support $vnc_jpeg"
4865 echo "VNC PNG support $vnc_png"
4867 if test -n "$sparc_cpu"; then
4868 echo "Target Sparc Arch $sparc_cpu"
4870 echo "xen support $xen"
4871 if test "$xen" = "yes" ; then
4872 echo "xen ctrl version $xen_ctrl_version"
4874 echo "brlapi support $brlapi"
4875 echo "bluez support $bluez"
4876 echo "Documentation $docs"
4877 echo "GUEST_BASE $guest_base"
4879 echo "vde support $vde"
4880 echo "netmap support $netmap"
4881 echo "Linux AIO support $linux_aio"
4882 echo "ATTR/XATTR support $attr"
4883 echo "Install blobs $blobs"
4884 echo "KVM support $kvm"
4885 echo "RDMA support $rdma"
4886 echo "TCG interpreter $tcg_interpreter"
4887 echo "fdt support $fdt"
4888 echo "preadv support $preadv"
4889 echo "fdatasync $fdatasync"
4890 echo "madvise $madvise"
4891 echo "posix_madvise $posix_madvise"
4892 echo "sigev_thread_id $sigev_thread_id"
4893 echo "uuid support $uuid"
4894 echo "libcap-ng support $cap_ng"
4895 echo "vhost-net support $vhost_net"
4896 echo "vhost-scsi support $vhost_scsi"
4897 echo "Trace backends $trace_backends"
4898 if test "$trace_backend" = "simple"; then
4899 echo "Trace output file $trace_file-<pid>"
4901 if test "$spice" = "yes"; then
4902 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4904 echo "spice support $spice"
4906 echo "rbd support $rbd"
4907 echo "xfsctl support $xfs"
4908 echo "nss used $smartcard_nss"
4909 echo "libusb $libusb"
4910 echo "usb net redir $usb_redir"
4911 echo "OpenGL support $opengl"
4912 echo "libiscsi support $libiscsi"
4913 echo "libnfs support $libnfs"
4914 echo "build guest agent $guest_agent"
4915 echo "QGA VSS support $guest_agent_with_vss"
4916 echo "QGA w32 disk info $guest_agent_ntddscsi"
4917 echo "seccomp support $seccomp"
4918 echo "coroutine backend $coroutine"
4919 echo "coroutine pool $coroutine_pool"
4920 echo "GlusterFS support $glusterfs"
4921 echo "Archipelago support $archipelago"
4922 echo "gcov $gcov_tool"
4923 echo "gcov enabled $gcov"
4924 echo "TPM support $tpm"
4925 echo "libssh2 support $libssh2"
4926 echo "TPM passthrough $tpm_passthrough"
4927 echo "QOM debugging $qom_cast_debug"
4929 echo "lzo support $lzo"
4930 echo "snappy support $snappy"
4931 echo "bzip2 support $bzip2"
4932 echo "NUMA host support $numa"
4933 echo "tcmalloc support $tcmalloc"
4935 echo "Qt support $qt"
4936 echo "HAX support $hax"
4937 echo "YaGL support $yagl"
4938 echo "YaGL stats $yagl_stats"
4939 echo "VIGS support $vigs"
4942 if test "$maru" = "yes"; then
4943 echo "TIZEN-maru options:"
4944 echo "maru enabled $maru"
4945 if test "$mingw32" = "yes"; then
4946 echo "WINVER $winver"
4948 echo "Java UI enabled $java_ui"
4949 echo "shared framebuffer enabled $shm"
4950 echo "libav support $libav"
4951 echo "libpng support $libpng"
4952 echo "DXVA2 support $dxva2"
4953 echo "vaapi support $vaapi"
4954 echo "libtizenusb support $libtizenusb"
4955 echo "extension path $extension_path"
4959 if test "$sdl_too_old" = "yes"; then
4960 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4963 config_host_mak="config-host.mak"
4965 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4967 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4968 echo >> $config_host_mak
4970 echo all: >> $config_host_mak
4971 echo "prefix=$prefix" >> $config_host_mak
4972 echo "bindir=$bindir" >> $config_host_mak
4973 echo "libdir=$libdir" >> $config_host_mak
4974 echo "libexecdir=$libexecdir" >> $config_host_mak
4975 echo "includedir=$includedir" >> $config_host_mak
4976 echo "mandir=$mandir" >> $config_host_mak
4977 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4978 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4979 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4980 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4981 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4982 if test "$mingw32" = "no" ; then
4983 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4985 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4986 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4987 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4988 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4989 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4991 echo "ARCH=$ARCH" >> $config_host_mak
4993 if test "$debug_tcg" = "yes" ; then
4994 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4996 if test "$strip_opt" = "yes" ; then
4997 echo "STRIP=${strip}" >> $config_host_mak
4999 if test "$bigendian" = "yes" ; then
5000 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5002 if test "$mingw32" = "yes" ; then
5003 echo "CONFIG_WIN32=y" >> $config_host_mak
5004 rc_version=`cat $source_path/VERSION`
5005 version_major=${rc_version%%.*}
5006 rc_version=${rc_version#*.}
5007 version_minor=${rc_version%%.*}
5008 rc_version=${rc_version#*.}
5009 version_subminor=${rc_version%%.*}
5011 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5012 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5013 if test "$guest_agent_with_vss" = "yes" ; then
5014 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5015 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5017 if test "$guest_agent_ntddscsi" = "yes" ; then
5018 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5020 if test "$guest_agent_msi" != "no"; then
5021 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5022 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5023 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5024 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5025 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5026 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5027 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5030 echo "CONFIG_POSIX=y" >> $config_host_mak
5033 if test "$linux" = "yes" ; then
5034 echo "CONFIG_LINUX=y" >> $config_host_mak
5037 if test "$darwin" = "yes" ; then
5038 echo "CONFIG_DARWIN=y" >> $config_host_mak
5041 if test "$aix" = "yes" ; then
5042 echo "CONFIG_AIX=y" >> $config_host_mak
5045 if test "$solaris" = "yes" ; then
5046 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5047 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5048 if test "$needs_libsunmath" = "yes" ; then
5049 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5052 if test "$haiku" = "yes" ; then
5053 echo "CONFIG_HAIKU=y" >> $config_host_mak
5055 if test "$static" = "yes" ; then
5056 echo "CONFIG_STATIC=y" >> $config_host_mak
5058 if test "$profiler" = "yes" ; then
5059 echo "CONFIG_PROFILER=y" >> $config_host_mak
5061 if test "$slirp" = "yes" ; then
5062 echo "CONFIG_SLIRP=y" >> $config_host_mak
5063 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5065 if test "$vde" = "yes" ; then
5066 echo "CONFIG_VDE=y" >> $config_host_mak
5068 if test "$netmap" = "yes" ; then
5069 echo "CONFIG_NETMAP=y" >> $config_host_mak
5071 if test "$l2tpv3" = "yes" ; then
5072 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5074 if test "$cap_ng" = "yes" ; then
5075 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5077 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5078 for drv in $audio_drv_list; do
5079 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
5080 echo "$def=y" >> $config_host_mak
5082 if test "$audio_pt_int" = "yes" ; then
5083 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5085 if test "$audio_win_int" = "yes" ; then
5086 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5088 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5089 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5090 if test "$vnc" = "yes" ; then
5091 echo "CONFIG_VNC=y" >> $config_host_mak
5093 if test "$vnc_tls" = "yes" ; then
5094 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
5096 if test "$vnc_sasl" = "yes" ; then
5097 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5099 if test "$vnc_jpeg" = "yes" ; then
5100 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5102 if test "$vnc_png" = "yes" ; then
5103 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5105 if test "$fnmatch" = "yes" ; then
5106 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5108 if test "$uuid" = "yes" ; then
5109 echo "CONFIG_UUID=y" >> $config_host_mak
5111 if test "$xfs" = "yes" ; then
5112 echo "CONFIG_XFS=y" >> $config_host_mak
5114 qemu_version=`head $source_path/VERSION`
5115 echo "VERSION=$qemu_version" >>$config_host_mak
5116 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5117 echo "SRC_PATH=$source_path" >> $config_host_mak
5118 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5119 if [ "$docs" = "yes" ] ; then
5120 echo "BUILD_DOCS=yes" >> $config_host_mak
5122 if test "$modules" = "yes"; then
5123 # $shacmd can generate a hash started with digit, which the compiler doesn't
5124 # like as an symbol. So prefix it with an underscore
5125 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
5126 echo "CONFIG_MODULES=y" >> $config_host_mak
5128 if test "$sdl" = "yes" ; then
5129 echo "CONFIG_SDL=y" >> $config_host_mak
5130 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5131 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5133 if test "$cocoa" = "yes" ; then
5134 echo "CONFIG_COCOA=y" >> $config_host_mak
5136 if test "$curses" = "yes" ; then
5137 echo "CONFIG_CURSES=y" >> $config_host_mak
5139 if test "$utimens" = "yes" ; then
5140 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
5142 if test "$pipe2" = "yes" ; then
5143 echo "CONFIG_PIPE2=y" >> $config_host_mak
5145 if test "$accept4" = "yes" ; then
5146 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5148 if test "$splice" = "yes" ; then
5149 echo "CONFIG_SPLICE=y" >> $config_host_mak
5151 if test "$eventfd" = "yes" ; then
5152 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5154 if test "$fallocate" = "yes" ; then
5155 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5157 if test "$fallocate_punch_hole" = "yes" ; then
5158 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5160 if test "$fallocate_zero_range" = "yes" ; then
5161 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5163 if test "$posix_fallocate" = "yes" ; then
5164 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5166 if test "$sync_file_range" = "yes" ; then
5167 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5169 if test "$fiemap" = "yes" ; then
5170 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5172 if test "$dup3" = "yes" ; then
5173 echo "CONFIG_DUP3=y" >> $config_host_mak
5175 if test "$ppoll" = "yes" ; then
5176 echo "CONFIG_PPOLL=y" >> $config_host_mak
5178 if test "$prctl_pr_set_timerslack" = "yes" ; then
5179 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5181 if test "$epoll" = "yes" ; then
5182 echo "CONFIG_EPOLL=y" >> $config_host_mak
5184 if test "$epoll_create1" = "yes" ; then
5185 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5187 if test "$epoll_pwait" = "yes" ; then
5188 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5190 if test "$sendfile" = "yes" ; then
5191 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5193 if test "$timerfd" = "yes" ; then
5194 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5196 if test "$setns" = "yes" ; then
5197 echo "CONFIG_SETNS=y" >> $config_host_mak
5199 if test "$inotify" = "yes" ; then
5200 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5202 if test "$inotify1" = "yes" ; then
5203 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5205 if test "$byteswap_h" = "yes" ; then
5206 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5208 if test "$bswap_h" = "yes" ; then
5209 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5211 if test "$curl" = "yes" ; then
5212 echo "CONFIG_CURL=m" >> $config_host_mak
5213 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5214 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5216 if test "$brlapi" = "yes" ; then
5217 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5219 if test "$bluez" = "yes" ; then
5220 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5221 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5223 if test "$glib_subprocess" = "yes" ; then
5224 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5226 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
5227 if test "$gtk" = "yes" ; then
5228 echo "CONFIG_GTK=y" >> $config_host_mak
5229 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5230 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5232 if test "$gnutls" = "yes" ; then
5233 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5235 if test "$gnutls_hash" = "yes" ; then
5236 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5238 if test "$gnutls_gcrypt" = "yes" ; then
5239 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
5241 if test "$gnutls_nettle" = "yes" ; then
5242 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
5243 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5245 if test "$vte" = "yes" ; then
5246 echo "CONFIG_VTE=y" >> $config_host_mak
5247 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5249 if test "$qt" = "yes" ; then
5250 echo "CONFIG_QT=y" >> $config_host_mak
5251 echo "QT_CFLAGS=$qt_cflags" >> $config_host_mak
5253 if test "$xen" = "yes" ; then
5254 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5255 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5257 if test "$linux_aio" = "yes" ; then
5258 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5260 if test "$attr" = "yes" ; then
5261 echo "CONFIG_ATTR=y" >> $config_host_mak
5263 if test "$libattr" = "yes" ; then
5264 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5266 if test "$virtfs" = "yes" ; then
5267 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5269 if test "$vhost_scsi" = "yes" ; then
5270 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5272 if test "$vhost_net" = "yes" ; then
5273 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5275 if test "$blobs" = "yes" ; then
5276 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5278 if test "$iovec" = "yes" ; then
5279 echo "CONFIG_IOVEC=y" >> $config_host_mak
5281 if test "$preadv" = "yes" ; then
5282 echo "CONFIG_PREADV=y" >> $config_host_mak
5284 if test "$fdt" = "yes" ; then
5285 echo "CONFIG_FDT=y" >> $config_host_mak
5287 if test "$signalfd" = "yes" ; then
5288 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5290 if test "$tcg_interpreter" = "yes" ; then
5291 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5293 if test "$fdatasync" = "yes" ; then
5294 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5296 if test "$madvise" = "yes" ; then
5297 echo "CONFIG_MADVISE=y" >> $config_host_mak
5299 if test "$posix_madvise" = "yes" ; then
5300 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5302 if test "$sigev_thread_id" = "yes" ; then
5303 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5306 if test "$spice" = "yes" ; then
5307 echo "CONFIG_SPICE=y" >> $config_host_mak
5310 if test "$efence" = "yes" ; then
5311 echo "CONFIG_EFENCE=y" >> $config_host_mak
5314 if test "$yagl" = "yes" ; then
5315 echo "CONFIG_YAGL=y" >> $config_host_mak
5316 if test "$linux" = "yes" ; then
5317 LIBS="-lGLU -ldl $LIBS"
5318 elif test "$mingw32" = "yes" ; then
5319 LIBS="-lopengl32 -lglu32 $LIBS"
5320 elif test "$darwin" = "yes" ; then
5321 LIBS="-framework OpenGL -framework AGL -framework GLUT $LIBS"
5323 echo "ERROR: YaGL is not available on $targetos"
5328 if test "$yagl_stats" = "yes" ; then
5329 echo "CONFIG_YAGL_STATS=y" >> $config_host_mak
5332 if test "$vigs" = "yes" ; then
5333 echo "CONFIG_VIGS=y" >> $config_host_mak
5336 if test "$smartcard" = "yes" ; then
5337 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5340 if test "$smartcard_nss" = "yes" ; then
5341 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
5342 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
5343 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
5346 if test "$libusb" = "yes" ; then
5347 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5350 if test "$usb_redir" = "yes" ; then
5351 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5354 if test "$opengl" = "yes" ; then
5355 echo "CONFIG_OPENGL=y" >> $config_host_mak
5356 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5357 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5360 if test "$lzo" = "yes" ; then
5361 echo "CONFIG_LZO=y" >> $config_host_mak
5364 if test "$snappy" = "yes" ; then
5365 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5368 if test "$bzip2" = "yes" ; then
5369 echo "CONFIG_BZIP2=y" >> $config_host_mak
5370 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5373 if test "$libiscsi" = "yes" ; then
5374 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5375 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5376 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5379 if test "$libnfs" = "yes" ; then
5380 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5383 if test "$seccomp" = "yes"; then
5384 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5387 # XXX: suppress that
5388 if [ "$bsd" = "yes" ] ; then
5389 echo "CONFIG_BSD=y" >> $config_host_mak
5392 if test "$zero_malloc" = "yes" ; then
5393 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5395 if test "$qom_cast_debug" = "yes" ; then
5396 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5398 if test "$rbd" = "yes" ; then
5399 echo "CONFIG_RBD=m" >> $config_host_mak
5400 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5401 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5404 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5405 if test "$coroutine_pool" = "yes" ; then
5406 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5408 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5411 if test "$open_by_handle_at" = "yes" ; then
5412 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5415 if test "$linux_magic_h" = "yes" ; then
5416 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5419 if test "$pragma_diagnostic_available" = "yes" ; then
5420 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5423 if test "$valgrind_h" = "yes" ; then
5424 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5427 if test "$has_environ" = "yes" ; then
5428 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5431 if test "$cpuid_h" = "yes" ; then
5432 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5435 if test "$int128" = "yes" ; then
5436 echo "CONFIG_INT128=y" >> $config_host_mak
5439 if test "$getauxval" = "yes" ; then
5440 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5443 if test "$glusterfs" = "yes" ; then
5444 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5445 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5446 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5449 if test "$glusterfs_discard" = "yes" ; then
5450 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5453 if test "$glusterfs_zerofill" = "yes" ; then
5454 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5457 if test "$archipelago" = "yes" ; then
5458 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5459 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5462 if test "$libssh2" = "yes" ; then
5463 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5464 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5465 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5468 if test "$vhdx" = "yes" ; then
5469 echo "CONFIG_VHDX=y" >> $config_host_mak
5473 if test "$libusb" = "yes"; then
5474 echo "HOST_USB=libusb legacy" >> $config_host_mak
5475 elif test "$libtizenusb" = "yes"; then
5476 echo "HOST_USB=tizenusb legacy" >> $config_host_mak
5478 echo "HOST_USB=stub" >> $config_host_mak
5481 # TPM passthrough support?
5482 if test "$tpm" = "yes"; then
5483 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5484 if test "$tpm_passthrough" = "yes"; then
5485 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5489 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5490 if have_backend "nop"; then
5491 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5493 if have_backend "simple"; then
5494 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5495 # Set the appropriate trace file.
5496 trace_file="\"$trace_file-\" FMT_pid"
5498 if have_backend "stderr"; then
5499 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5501 if have_backend "ust"; then
5502 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5504 if have_backend "dtrace"; then
5505 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5506 if test "$trace_backend_stap" = "yes" ; then
5507 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5510 if have_backend "ftrace"; then
5511 if test "$linux" = "yes" ; then
5512 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5514 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5517 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5519 if test "$rdma" = "yes" ; then
5520 echo "CONFIG_RDMA=y" >> $config_host_mak
5523 # Hold two types of flag:
5524 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5525 # a thread we have a handle to
5526 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5528 if test "$pthread_setname_np" = "yes" ; then
5529 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5530 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5533 if test "$tcg_interpreter" = "yes"; then
5534 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5535 elif test "$ARCH" = "sparc64" ; then
5536 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5537 elif test "$ARCH" = "s390x" ; then
5538 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5539 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5540 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5541 elif test "$ARCH" = "ppc64" ; then
5542 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5544 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5546 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5548 echo "TOOLS=$tools" >> $config_host_mak
5549 echo "ROMS=$roms" >> $config_host_mak
5550 echo "MAKE=$make" >> $config_host_mak
5551 echo "INSTALL=$install" >> $config_host_mak
5552 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5553 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5554 if test -n "$libtool"; then
5555 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5556 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5558 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5559 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5561 echo "PYTHON=$python" >> $config_host_mak
5562 echo "CC=$cc" >> $config_host_mak
5563 if $iasl -h > /dev/null 2>&1; then
5564 echo "IASL=$iasl" >> $config_host_mak
5566 echo "CC_I386=$cc_i386" >> $config_host_mak
5567 echo "HOST_CC=$host_cc" >> $config_host_mak
5568 echo "CXX=$cxx" >> $config_host_mak
5569 echo "OBJCC=$objcc" >> $config_host_mak
5570 echo "AR=$ar" >> $config_host_mak
5571 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5572 echo "AS=$as" >> $config_host_mak
5573 echo "CPP=$cpp" >> $config_host_mak
5574 echo "OBJCOPY=$objcopy" >> $config_host_mak
5575 echo "LD=$ld" >> $config_host_mak
5576 echo "NM=$nm" >> $config_host_mak
5577 echo "WINDRES=$windres" >> $config_host_mak
5578 echo "LIBTOOL=$libtool" >> $config_host_mak
5579 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5580 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5581 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5582 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5583 if test "$sparse" = "yes" ; then
5584 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5585 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5586 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5587 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5588 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5590 if test "$cross_prefix" != ""; then
5591 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5593 echo "AUTOCONF_HOST := " >> $config_host_mak
5595 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5596 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5597 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5598 echo "LIBS+=$LIBS" >> $config_host_mak
5599 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5600 echo "EXESUF=$EXESUF" >> $config_host_mak
5601 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5602 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5603 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5604 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5605 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5606 if test "$gcov" = "yes" ; then
5607 echo "CONFIG_GCOV=y" >> $config_host_mak
5608 echo "GCOV=$gcov_tool" >> $config_host_mak
5611 # use included Linux headers
5612 if test "$linux" = "yes" ; then
5613 mkdir -p linux-headers
5631 # For most CPUs the kernel architecture name and QEMU CPU name match.
5635 # For non-KVM architectures we will not have asm headers
5636 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5637 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5641 for target in $target_list; do
5642 target_dir="$target"
5643 config_target_mak=$target_dir/config-target.mak
5644 target_name=`echo $target | cut -d '-' -f 1`
5645 target_bigendian="no"
5647 case "$target_name" in
5648 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5649 target_bigendian=yes
5653 target_user_only="no"
5654 target_linux_user="no"
5655 target_bsd_user="no"
5657 ${target_name}-softmmu)
5658 target_softmmu="yes"
5660 ${target_name}-linux-user)
5661 if test "$linux" != "yes" ; then
5662 error_exit "Target '$target' is only available on a Linux host"
5664 target_user_only="yes"
5665 target_linux_user="yes"
5667 ${target_name}-bsd-user)
5668 if test "$bsd" != "yes" ; then
5669 error_exit "Target '$target' is only available on a BSD host"
5671 target_user_only="yes"
5672 target_bsd_user="yes"
5675 error_exit "Target '$target' not recognised"
5680 mkdir -p $target_dir
5681 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5684 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5687 TARGET_ARCH="$target_name"
5691 case "$target_name" in
5695 TARGET_BASE_ARCH=i386
5702 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5705 TARGET_BASE_ARCH=arm
5707 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5715 gdb_xml_files="cf-core.xml cf-fp.xml"
5717 microblaze|microblazeel)
5718 TARGET_ARCH=microblaze
5723 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5727 TARGET_BASE_ARCH=mips
5728 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5729 echo "TARGET_ABI32=y" >> $config_target_mak
5733 TARGET_BASE_ARCH=mips
5734 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5739 TARGET_ARCH=openrisc
5740 TARGET_BASE_ARCH=openrisc
5743 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5746 TARGET_BASE_ARCH=ppc
5748 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5751 TARGET_BASE_ARCH=ppc
5753 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5757 TARGET_BASE_ARCH=ppc
5759 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5763 TARGET_BASE_ARCH=ppc
5765 echo "TARGET_ABI32=y" >> $config_target_mak
5766 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5775 TARGET_BASE_ARCH=sparc
5779 TARGET_BASE_ARCH=sparc
5780 TARGET_ABI_DIR=sparc
5781 echo "TARGET_ABI32=y" >> $config_target_mak
5784 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5794 error_exit "Unsupported target CPU"
5797 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5798 if [ "$TARGET_BASE_ARCH" = "" ]; then
5799 TARGET_BASE_ARCH=$TARGET_ARCH
5802 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5805 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5808 target_arch_name="`upper $TARGET_ARCH`"
5809 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5810 echo "TARGET_NAME=$target_name" >> $config_target_mak
5811 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5812 if [ "$TARGET_ABI_DIR" = "" ]; then
5813 TARGET_ABI_DIR=$TARGET_ARCH
5815 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5816 if [ "$HOST_VARIANT_DIR" != "" ]; then
5817 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5819 case "$target_name" in
5821 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5822 echo "CONFIG_XEN=y" >> $config_target_mak
5823 if test "$xen_pci_passthrough" = yes; then
5824 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5830 case "$target_name" in
5831 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
5832 # Make sure the target and host cpus are compatible
5833 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5834 \( "$target_name" = "$cpu" -o \
5835 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5836 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5837 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5838 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
5839 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
5840 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
5841 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5842 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5843 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
5844 echo "CONFIG_KVM=y" >> $config_target_mak
5845 if test "$vhost_net" = "yes" ; then
5846 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5850 case "$target_name" in
5852 echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
5854 if test "$hax" = "yes" ; then
5855 if test "$target_softmmu" = "yes" ; then
5856 case "$target_name" in
5858 echo "CONFIG_HAX=y" >> $config_target_mak
5861 echo "CONFIG_NO_HAX=y" >> $config_target_mak
5865 echo "CONFIG_NO_HAX=y" >> $config_target_mak
5868 if test "$target_bigendian" = "yes" ; then
5869 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5871 if test "$target_softmmu" = "yes" ; then
5872 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5874 if test "$target_user_only" = "yes" ; then
5875 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5876 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5878 if test "$target_linux_user" = "yes" ; then
5879 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5882 if test ! -z "$gdb_xml_files" ; then
5883 for x in $gdb_xml_files; do
5884 list="$list $source_path/gdb-xml/$x"
5886 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5889 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5890 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5892 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5893 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5895 if test "$target_bsd_user" = "yes" ; then
5896 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5899 # generate QEMU_CFLAGS/LDFLAGS for targets
5904 if test "$tcg_interpreter" = "yes"; then
5905 includes="-I\$(SRC_PATH)/tcg/tci $includes"
5906 elif test "$ARCH" = "sparc64" ; then
5907 includes="-I\$(SRC_PATH)/tcg/sparc $includes"
5908 elif test "$ARCH" = "s390x" ; then
5909 includes="-I\$(SRC_PATH)/tcg/s390 $includes"
5910 elif test "$ARCH" = "x86_64" ; then
5911 includes="-I\$(SRC_PATH)/tcg/i386 $includes"
5913 includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
5915 includes="-I\$(SRC_PATH)/tcg $includes"
5917 if test "$linux" = "yes" ; then
5918 includes="-I\$(SRC_PATH)/linux-headers $includes"
5921 if test "$target_user_only" = "yes" ; then
5922 libdis_config_mak=libdis-user/config.mak
5924 libdis_config_mak=libdis/config.mak
5927 if test "$efence" = "yes" ; then
5928 echo "CONFIG_BUILD_WITH_EFENCE=y" >> $config_target_mak
5929 echo "LIBS+=-lefence" >> $config_target_mak
5932 if test "$yagl" = "yes" ; then
5933 echo "CONFIG_BUILD_YAGL=y" >> $config_target_mak
5936 if test "$vigs" = "yes" ; then
5937 echo "CONFIG_BUILD_VIGS=y" >> $config_target_mak
5940 for i in $ARCH $TARGET_BASE_ARCH ; do
5943 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5944 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5947 if test -n "${cxx}"; then
5948 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5949 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5953 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5954 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5955 if test -n "${cxx}"; then
5956 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5957 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5961 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5962 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5965 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5966 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5969 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5970 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5973 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5974 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5977 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5978 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5981 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5982 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5985 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5986 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5989 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5990 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5993 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5994 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5997 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5998 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
6001 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
6002 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
6005 echo "CONFIG_S390_DIS=y" >> $config_target_mak
6006 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
6009 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
6010 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
6013 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
6014 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
6017 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
6018 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
6022 if test "$tcg_interpreter" = "yes" ; then
6023 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
6024 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
6029 # Ensure there's only a single GP
6030 cflags="-msmall-data $cflags"
6034 if test "$target_softmmu" = "yes" ; then
6035 case "$TARGET_BASE_ARCH" in
6037 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
6040 cflags="-DHAS_AUDIO $cflags"
6043 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
6048 if test "$gprof" = "yes" ; then
6049 echo "TARGET_GPROF=yes" >> $config_target_mak
6050 if test "$target_linux_user" = "yes" ; then
6052 ldflags="-p $ldflags"
6054 if test "$target_softmmu" = "yes" ; then
6055 ldflags="-p $ldflags"
6056 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6060 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6061 ldflags="$ldflags $textseg_ldflags"
6064 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6065 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6067 done # for target in $targets
6069 if [ "$pixman" = "internal" ]; then
6070 echo "config-host.h: subdir-pixman" >> $config_host_mak
6073 if test "$rdma" = "yes" ; then
6074 echo "CONFIG_RDMA=y" >> $config_host_mak
6077 if [ "$dtc_internal" = "yes" ]; then
6078 echo "config-host.h: subdir-dtc" >> $config_host_mak
6081 if test "$numa" = "yes"; then
6082 echo "CONFIG_NUMA=y" >> $config_host_mak
6085 if test "$ccache_cpp2" = "yes"; then
6086 echo "export CCACHE_CPP2=y" >> $config_host_mak
6090 if test "$maru" = "yes" ; then
6091 echo "CONFIG_MARU=y" >> $config_host_mak
6093 # java ui is deprecated
6094 if test "$java_ui" = "yes" ; then
6095 if test "$shm" = "yes" || test "$sdl" = "yes" ; then
6096 echo "CONFIG_JAVA_UI=y" >> $config_host_mak
6098 error_exit "Java UI is only available with SDL or SHM"
6101 if test "$shm" = "yes" ; then
6102 if test "$java_ui" = "yes" ; then
6103 echo "CONFIG_USE_SHM=y" >> $config_host_mak
6105 error_exit "SHM is only available with Java UI"
6108 if test "$libav" = "yes" ; then
6109 echo "CONFIG_LIBAV=y" >> $config_host_mak
6110 echo "LIBAV_CFLAGS=$libav_cflags" >> $config_host_mak
6111 echo "LIBAV_LIBS=$libav_libs" >> $config_host_mak
6113 if test "$libpng" = "yes" ; then
6114 echo "CONFIG_PNG=y" >> $config_host_mak
6115 echo "LIBPNG_CFLAGS=$libpng_cflags" >> $config_host_mak
6117 if test "$dxva2" = "yes" ; then
6118 echo "CONFIG_DXVA2=y" >> $config_host_mak
6120 if test "$vaapi" = "yes" ; then
6121 echo "CONFIG_VAAPI=y" >> $config_host_mak
6122 echo "LIBVA_CFLAGS=$libva_cflags $libva_x11_cflags" >> $config_host_mak
6124 if test "$libtizenusb" = "yes" ; then
6125 echo "CONFIG_TIZENUSB=y" >> $config_host_mak
6127 if [ ! -z "$extension_path" ] ; then
6128 echo "CONFIG_EXTENSION_PATH=$extension_path" >> $config_host_mak
6132 # build tree in object directory in case the source is not in the current directory
6133 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6135 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6136 DIRS="$DIRS roms/seabios roms/vgabios"
6137 DIRS="$DIRS qapi-generated"
6138 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6139 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6140 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6141 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6142 FILES="$FILES pc-bios/spapr-rtas/Makefile"
6143 FILES="$FILES pc-bios/s390-ccw/Makefile"
6144 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6145 FILES="$FILES pc-bios/qemu-icon.bmp"
6147 $source_path/pc-bios/*.bin \
6148 $source_path/pc-bios/*.aml \
6149 $source_path/pc-bios/*.rom \
6150 $source_path/pc-bios/*.dtb \
6151 $source_path/pc-bios/*.img \
6152 $source_path/pc-bios/openbios-* \
6153 $source_path/pc-bios/u-boot.* \
6154 $source_path/pc-bios/palcode-*
6156 FILES="$FILES pc-bios/`basename $bios_file`"
6158 for test_file in `find $source_path/tests/acpi-test-data -type f`
6160 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
6163 for f in $FILES ; do
6164 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6165 symlink "$source_path/$f" "$f"
6169 # temporary config to build submodules
6170 for rom in seabios vgabios ; do
6171 config_mak=roms/$rom/config.mak
6172 echo "# Automatically generated by configure - do not modify" > $config_mak
6173 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6174 echo "AS=$as" >> $config_mak
6175 echo "CC=$cc" >> $config_mak
6176 echo "BCC=bcc" >> $config_mak
6177 echo "CPP=$cpp" >> $config_mak
6178 echo "OBJCOPY=objcopy" >> $config_mak
6179 echo "IASL=$iasl" >> $config_mak
6180 echo "LD=$ld" >> $config_mak
6183 # set up qemu-iotests in this build directory
6184 iotests_common_env="tests/qemu-iotests/common.env"
6185 iotests_check="tests/qemu-iotests/check"
6187 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6188 echo >> "$iotests_common_env"
6189 echo "export PYTHON='$python'" >> "$iotests_common_env"
6191 if [ ! -e "$iotests_check" ]; then
6192 symlink "$source_path/$iotests_check" "$iotests_check"
6195 # Save the configure command line for later reuse.
6196 cat <<EOD >config.status
6198 # Generated by configure.
6199 # Run this file to recreate the current configuration.
6200 # Compiler output produced by configure, useful for debugging
6201 # configure, is in config.log if it exists.
6203 printf "exec" >>config.status
6204 printf " '%s'" "$0" "$@" >>config.status
6205 echo >>config.status
6206 chmod +x config.status