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
96 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
97 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
100 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
108 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
114 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
120 # Run the compiler, capturing its output to the log.
121 echo $libtool $mode --tag=CC
$cc "$@" >> config.log
122 $libtool $mode --tag=CC
$cc "$@" >> config.log
2>&1 ||
return $?
123 # Test passed. If this is an --enable-werror build, rerun
124 # the test with -Werror and bail out if it fails. This
125 # makes warning-generating-errors in configure test code
126 # obvious to developers.
127 if test "$werror" != "yes"; then
130 # Don't bother rerunning the compile if we were already using -Werror
136 echo $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
137 $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
2>&1 && return $?
138 error_exit
"configure test passed without -Werror but failed with -Werror." \
139 "This is probably a bug in the configure script. The failing command" \
140 "will be at the bottom of config.log." \
141 "You can run configure with --disable-werror to bypass this check."
145 do_libtool
--mode=compile
$QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC ||
return $?
146 do_libtool
--mode=link
$LDFLAGS -o $TMPA $TMPL -rpath /usr
/local
/lib
149 # symbolically link $1 to $2. Portable version of "ln -sf".
152 mkdir
-p "$(dirname "$2")"
156 # check whether a command is available to this shell (may be either an
157 # executable or a builtin)
159 type "$1" >/dev
/null
2>&1
162 # search for an executable in PATH
168 # pathname has a dir component?
169 if [ "${local_command#*/}" != "$local_command" ]; then
170 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
171 echo "$local_command"
175 if [ -z "$local_command" ]; then
180 for local_dir
in $PATH; do
181 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
182 echo "$local_dir/$local_command"
183 IFS
="${local_ifs:-$(printf ' \t\n')}"
188 IFS
="${local_ifs:-$(printf ' \t\n')}"
193 echo "$trace_backends" |
grep "$1" >/dev
/null
197 source_path
=`dirname "$0"`
200 interp_prefix
="/usr/gnemul/qemu-%M"
204 block_drv_rw_whitelist
=""
205 block_drv_ro_whitelist
=""
211 cc_i386
=i386-pc-linux-gnu-gcc
216 # Don't accept a target_list environment variable.
219 # Default value for a variable defining feature "foo".
220 # * foo="no" feature will only be used if --enable-foo arg is given
221 # * foo="" feature will be searched for, and if found, will be used
222 # unless --disable-foo is given
223 # * foo="yes" this value will only be set by --enable-foo flag.
224 # feature will searched for,
225 # if not found, configure exits with error
227 # Always add --enable-foo and --disable-foo command line args.
228 # Distributions want to ensure that several features are compiled in, and it
229 # is impossible without a --enable-foo that exits if a feature is not found.
252 xen_pci_passthrough
=""
274 LDFLAGS_SHARED
="-shared"
277 mandir
="\${prefix}/share/man"
278 datadir
="\${prefix}/share"
279 qemu_docdir
="\${prefix}/share/doc/qemu"
280 bindir
="\${prefix}/bin"
281 libdir
="\${prefix}/lib"
282 libexecdir
="\${prefix}/libexec"
283 includedir
="\${prefix}/include"
284 sysconfdir
="\${prefix}/etc"
285 local_statedir
="\${prefix}/var"
317 guest_agent_with_vss
="no"
318 guest_agent_ntddscsi
="no"
329 glusterfs_discard
="no"
330 glusterfs_zerofill
="no"
343 # parse CC options first
345 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
347 --cross-prefix=*) cross_prefix
="$optarg"
351 --cxx=*) CXX
="$optarg"
353 --source-path=*) source_path
="$optarg"
355 --cpu=*) cpu
="$optarg"
357 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
358 EXTRA_CFLAGS
="$optarg"
360 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
361 EXTRA_LDFLAGS
="$optarg"
363 --enable-debug-info) debug_info
="yes"
365 --disable-debug-info) debug_info
="no"
370 # Using uname is really, really broken. Once we have the right set of checks
371 # we can eliminate its usage altogether.
373 # Preferred compiler:
375 # ${cross_prefix}gcc (if cross-prefix specified)
377 if test -z "${CC}${cross_prefix}"; then
380 cc
="${CC-${cross_prefix}gcc}"
383 if test -z "${CXX}${cross_prefix}"; then
386 cxx
="${CXX-${cross_prefix}g++}"
389 ar="${AR-${cross_prefix}ar}"
390 as
="${AS-${cross_prefix}as}"
392 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
393 ld
="${LD-${cross_prefix}ld}"
394 libtool
="${LIBTOOL-${cross_prefix}libtool}"
395 nm
="${NM-${cross_prefix}nm}"
396 strip
="${STRIP-${cross_prefix}strip}"
397 windres
="${WINDRES-${cross_prefix}windres}"
398 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
400 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
402 pkg_config
=query_pkg_config
403 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
404 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
406 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
407 ARFLAGS
="${ARFLAGS-rv}"
409 # default flags for all hosts
410 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
411 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
412 QEMU_CFLAGS
="-Wmissing-format-attribute $QEMU_CFLAGS"
413 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
414 QEMU_CFLAGS
="-Wno-unused-parameter $QEMU_CFLAGS"
415 QEMU_CFLAGS
="-Wno-missing-field-initializers $QEMU_CFLAGS"
416 QEMU_CFLAGS
="-Wno-sign-compare $QEMU_CFLAGS"
417 QEMU_CFLAGS
="-Wno-override-init $QEMU_CFLAGS"
418 QEMU_CFLAGS
="-Wno-error=format $QEMU_CFLAGS"
419 QEMU_CFLAGS
="-Wno-error=format-extra-args $QEMU_CFLAGS"
420 QEMU_CFLAGS
="-Wno-error=parentheses $QEMU_CFLAGS"
421 QEMU_CFLAGS
="-Wextra $QEMU_CFLAGS"
422 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
423 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
424 if test "$debug_info" = "yes"; then
426 LDFLAGS
="-g $LDFLAGS"
429 # make source path absolute
430 source_path
=`cd "$source_path"; pwd`
432 cc_macros
=`$cc $QEMU_CFLAGS -E -dD - </dev/null`
434 # running configure in the source tree?
435 # we know that's the case if configure is there.
436 if test -f "./configure"; then
437 pwd_is_source_path
="y"
439 pwd_is_source_path
="n"
445 #error $1 not defined
447 int main(void) { return 0; }
455 int main(void) { return 0; }
462 int main(void) { return 0; }
466 if check_define __linux__
; then
468 elif check_define _WIN32
; then
470 elif check_define __OpenBSD__
; then
472 elif check_define __sun__
; then
474 elif check_define __HAIKU__
; then
480 # Some host OSes need non-standard checks for which CPU to use.
481 # Note that these checks are broken for cross-compilation: if you're
482 # cross-compiling to one of these OSes then you'll need to specify
483 # the correct CPU with the --cpu option.
486 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
487 # run 64-bit userspace code.
488 # If the user didn't specify a CPU explicitly and the kernel says this is
489 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
490 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
495 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
496 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
501 if test ! -z "$cpu" ; then
502 # command line argument
504 elif check_define __i386__
; then
506 elif check_define __x86_64__
; then
507 if check_define __ILP32__
; then
512 elif check_define __sparc__
; then
513 if check_define __arch64__
; then
518 elif check_define _ARCH_PPC
; then
519 if check_define _ARCH_PPC64
; then
524 elif check_define __mips__
; then
525 if check_define __mips64
; then
530 elif check_define __ia64__
; then
532 elif check_define __s390__
; then
533 if check_define __s390x__
; then
538 elif check_define __arm__
; then
540 elif check_define __aarch64__
; then
542 elif check_define __hppa__
; then
549 # Normalise host CPU name and set ARCH.
550 # Note that this case should only have supported host CPUs, not guests.
552 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
555 i386|i486|i586|i686|i86pc|BePC
)
569 if check_define __MIPSEL__
; then
580 # This will result in either an error or falling back to TCI later
584 if test -z "$ARCH"; then
590 # host *BSD for user mode
596 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
597 audio_possible_drivers
="sdl"
602 audio_possible_drivers
="dsound sdl"
603 if check_include dsound.h
; then
604 audio_drv_list
="dsound"
612 audio_possible_drivers
="oss sdl pa"
618 audio_possible_drivers
="oss sdl pa"
619 # needed for kinfo_getvmmap(3) in libutil.h
621 netmap
="" # enable netmap autodetect
622 HOST_VARIANT_DIR
="freebsd"
628 audio_possible_drivers
="oss sdl pa"
629 HOST_VARIANT_DIR
="dragonfly"
635 audio_possible_drivers
="oss sdl"
637 HOST_VARIANT_DIR
="netbsd"
643 audio_possible_drivers
="sdl"
644 HOST_VARIANT_DIR
="openbsd"
649 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
650 if [ "$cpu" = "x86_64" ] ; then
651 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
652 LDFLAGS
="-arch x86_64 $LDFLAGS"
655 audio_drv_list
="coreaudio"
656 audio_possible_drivers
="coreaudio sdl"
657 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
658 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
659 # Disable attempts to use ObjectiveC features in os/object.h since they
660 # won't work when we're compiling with gcc as a C compiler.
661 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
662 HOST_VARIANT_DIR
="darwin"
667 install="${INSTALL-ginstall}"
669 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
670 needs_libsunmath
="no"
671 solarisrev
=`uname -r | cut -f2 -d.`
672 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
673 if test "$solarisrev" -le 9 ; then
674 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
675 needs_libsunmath
="yes"
676 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
677 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
678 LIBS
="-lsunmath $LIBS"
680 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
681 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
682 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
683 "Studio 11 can be downloaded from www.sun.com."
687 if test -f /usr
/include
/sys
/soundcard.h
; then
690 audio_possible_drivers
="oss sdl"
691 # needed for CMSG_ macros in sys/socket.h
692 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
693 # needed for TIOCWIN* defines in termios.h
694 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
695 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
696 solarisnetlibs
="-lsocket -lnsl -lresolv"
697 LIBS
="$solarisnetlibs $LIBS"
698 libs_qga
="$solarisnetlibs $libs_qga"
706 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
707 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
711 audio_possible_drivers
="oss alsa sdl pa"
717 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
721 if [ "$bsd" = "yes" ] ; then
722 if [ "$darwin" != "yes" ] ; then
727 : ${make=${MAKE-make}}
728 : ${install=${INSTALL-install}}
729 : ${python=${PYTHON-python}}
730 : ${smbd=${SMBD-/usr/sbin/smbd}}
732 # Default objcc to clang if available, otherwise use CC
739 if test "$mingw32" = "yes" ; then
742 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
743 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
744 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
745 # MinGW-w64 needs _POSIX defined.
746 QEMU_CFLAGS
="-D_POSIX=1 $QEMU_CFLAGS"
747 # MinGW needs -mthreads for TLS and macro _MT.
748 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
749 QEMU_CFLAGS
="-I\$(SRC_PATH)/hosts/w32/include $QEMU_CFLAGS"
750 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
752 if compile_prog
"" "-liberty" ; then
753 LIBS
="-liberty $LIBS"
755 prefix
="c:/Program Files/QEMU"
758 qemu_docdir
="\${prefix}"
760 sysconfdir
="\${prefix}"
763 libs_qga
="-lws2_32 -lwinmm -lpowrprof -liphlpapi $libs_qga"
769 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
771 --help|
-h) show_help
=yes
773 --version|
-V) exec cat $source_path/VERSION
775 --prefix=*) prefix
="$optarg"
777 --interp-prefix=*) interp_prefix
="$optarg"
785 --host-cc=*) host_cc
="$optarg"
789 --iasl=*) iasl
="$optarg"
791 --objcc=*) objcc
="$optarg"
793 --make=*) make="$optarg"
795 --install=*) install="$optarg"
797 --python=*) python
="$optarg"
799 --gcov=*) gcov_tool
="$optarg"
801 --smbd=*) smbd
="$optarg"
809 --disable-debug-info)
816 --target-list=*) target_list
="$optarg"
818 --enable-trace-backends=*) trace_backends
="$optarg"
820 # XXX: backwards compatibility
821 --enable-trace-backend=*) trace_backends
="$optarg"
823 --with-trace-file=*) trace_file
="$optarg"
825 --enable-gprof) gprof
="yes"
827 --enable-gcov) gcov
="yes"
831 LDFLAGS
="-static $LDFLAGS"
832 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
834 --mandir=*) mandir
="$optarg"
836 --bindir=*) bindir
="$optarg"
838 --libdir=*) libdir
="$optarg"
840 --libexecdir=*) libexecdir
="$optarg"
842 --includedir=*) includedir
="$optarg"
844 --datadir=*) datadir
="$optarg"
846 --with-confsuffix=*) confsuffix
="$optarg"
848 --docdir=*) qemu_docdir
="$optarg"
850 --sysconfdir=*) sysconfdir
="$optarg"
852 --localstatedir=*) local_statedir
="$optarg"
854 --sbindir=*|
--sharedstatedir=*|\
855 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
856 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
857 # These switches are silently ignored, for compatibility with
858 # autoconf-generated configure scripts. This allows QEMU's
859 # configure to be used by RPM and similar macros that set
860 # lots of directory switches by default.
862 --with-system-pixman) pixman
="system"
864 --without-system-pixman) pixman
="internal"
866 --without-pixman) pixman
="none"
868 --disable-sdl) sdl
="no"
870 --enable-sdl) sdl
="yes"
872 --with-sdlabi=*) sdlabi
="$optarg"
874 --disable-qom-cast-debug) qom_cast_debug
="no"
876 --enable-qom-cast-debug) qom_cast_debug
="yes"
878 --disable-virtfs) virtfs
="no"
880 --enable-virtfs) virtfs
="yes"
882 --disable-vnc) vnc
="no"
884 --enable-vnc) vnc
="yes"
886 --oss-lib=*) oss_lib
="$optarg"
888 --audio-drv-list=*) audio_drv_list
="$optarg"
890 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
892 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
894 --enable-debug-tcg) debug_tcg
="yes"
896 --disable-debug-tcg) debug_tcg
="no"
899 # Enable debugging options that aren't excessively noisy
904 --enable-sparse) sparse
="yes"
906 --disable-sparse) sparse
="no"
908 --disable-strip) strip_opt
="no"
910 --disable-vnc-tls) vnc_tls
="no"
912 --enable-vnc-tls) vnc_tls
="yes"
914 --disable-vnc-sasl) vnc_sasl
="no"
916 --enable-vnc-sasl) vnc_sasl
="yes"
918 --disable-vnc-jpeg) vnc_jpeg
="no"
920 --enable-vnc-jpeg) vnc_jpeg
="yes"
922 --disable-vnc-png) vnc_png
="no"
924 --enable-vnc-png) vnc_png
="yes"
926 --disable-slirp) slirp
="no"
928 --disable-uuid) uuid
="no"
930 --enable-uuid) uuid
="yes"
932 --disable-vde) vde
="no"
934 --enable-vde) vde
="yes"
936 --disable-netmap) netmap
="no"
938 --enable-netmap) netmap
="yes"
940 --disable-xen) xen
="no"
942 --enable-xen) xen
="yes"
944 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
946 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
948 --disable-brlapi) brlapi
="no"
950 --enable-brlapi) brlapi
="yes"
952 --disable-bluez) bluez
="no"
954 --enable-bluez) bluez
="yes"
956 --disable-kvm) kvm
="no"
958 --enable-kvm) kvm
="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"
986 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
988 --disable-system) softmmu
="no"
990 --enable-system) softmmu
="yes"
997 --disable-linux-user) linux_user
="no"
999 --enable-linux-user) linux_user
="yes"
1001 --disable-bsd-user) bsd_user
="no"
1003 --enable-bsd-user) bsd_user
="yes"
1005 --enable-pie) pie
="yes"
1007 --disable-pie) pie
="no"
1009 --enable-werror) werror
="yes"
1011 --disable-werror) werror
="no"
1013 --enable-stack-protector) stack_protector
="yes"
1015 --disable-stack-protector) stack_protector
="no"
1017 --disable-curses) curses
="no"
1019 --enable-curses) curses
="yes"
1021 --disable-curl) curl
="no"
1023 --enable-curl) curl
="yes"
1025 --disable-fdt) fdt
="no"
1027 --enable-fdt) fdt
="yes"
1029 --disable-linux-aio) linux_aio
="no"
1031 --enable-linux-aio) linux_aio
="yes"
1033 --disable-attr) attr
="no"
1035 --enable-attr) attr
="yes"
1037 --disable-blobs) blobs
="no"
1039 --with-pkgversion=*) pkgversion
=" ($optarg)"
1041 --with-coroutine=*) coroutine
="$optarg"
1043 --disable-coroutine-pool) coroutine_pool
="no"
1045 --enable-coroutine-pool) coroutine_pool
="yes"
1047 --disable-docs) docs
="no"
1049 --enable-docs) docs
="yes"
1051 --disable-vhost-net) vhost_net
="no"
1053 --enable-vhost-net) vhost_net
="yes"
1055 --disable-vhost-scsi) vhost_scsi
="no"
1057 --enable-vhost-scsi) vhost_scsi
="yes"
1059 --disable-opengl) opengl
="no"
1061 --enable-opengl) opengl
="yes"
1063 --disable-rbd) rbd
="no"
1065 --enable-rbd) rbd
="yes"
1067 --disable-xfsctl) xfs
="no"
1069 --enable-xfsctl) xfs
="yes"
1071 --disable-smartcard-nss) smartcard_nss
="no"
1073 --enable-smartcard-nss) smartcard_nss
="yes"
1075 --disable-libusb) libusb
="no"
1077 --enable-libusb) libusb
="yes"
1079 --disable-usb-redir) usb_redir
="no"
1081 --enable-usb-redir) usb_redir
="yes"
1083 --disable-zlib-test) zlib
="no"
1085 --disable-lzo) lzo
="no"
1087 --enable-lzo) lzo
="yes"
1089 --disable-snappy) snappy
="no"
1091 --enable-snappy) snappy
="yes"
1093 --disable-bzip2) bzip2="no"
1095 --enable-bzip2) bzip2="yes"
1097 --enable-guest-agent) guest_agent
="yes"
1099 --disable-guest-agent) guest_agent
="no"
1101 --enable-guest-agent-msi) guest_agent_msi
="yes"
1103 --disable-guest-agent-msi) guest_agent_msi
="no"
1105 --with-vss-sdk) vss_win32_sdk
=""
1107 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1109 --without-vss-sdk) vss_win32_sdk
="no"
1111 --with-win-sdk) win_sdk
=""
1113 --with-win-sdk=*) win_sdk
="$optarg"
1115 --without-win-sdk) win_sdk
="no"
1117 --enable-tools) want_tools
="yes"
1119 --disable-tools) want_tools
="no"
1121 --enable-seccomp) seccomp
="yes"
1123 --disable-seccomp) seccomp
="no"
1125 --disable-glusterfs) glusterfs
="no"
1127 --enable-glusterfs) glusterfs
="yes"
1129 --disable-archipelago) archipelago
="no"
1131 --enable-archipelago) archipelago
="yes"
1133 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1134 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1136 --disable-gtk) gtk
="no"
1138 --enable-gtk) gtk
="yes"
1140 --disable-gnutls) gnutls
="no"
1142 --enable-gnutls) gnutls
="yes"
1144 --enable-rdma) rdma
="yes"
1146 --disable-rdma) rdma
="no"
1148 --with-gtkabi=*) gtkabi
="$optarg"
1150 --disable-vte) vte
="no"
1152 --enable-vte) vte
="yes"
1154 --disable-tpm) tpm
="no"
1156 --enable-tpm) tpm
="yes"
1158 --disable-libssh2) libssh2
="no"
1160 --enable-libssh2) libssh2
="yes"
1162 --enable-vhdx) vhdx
="yes"
1164 --disable-vhdx) vhdx
="no"
1166 --disable-numa) numa
="no"
1168 --enable-numa) numa
="yes"
1170 --disable-tcmalloc) tcmalloc
="no"
1172 --enable-tcmalloc) tcmalloc
="yes"
1175 echo "ERROR: unknown option $opt"
1176 echo "Try '$0 --help' for more information"
1182 if ! has
$python; then
1183 error_exit
"Python not found. Use --python=/path/to/python"
1186 # Note that if the Python conditional here evaluates True we will exit
1187 # with status 1 which is a shell 'false' value.
1188 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1189 error_exit
"Cannot use '$python', Python 2.4 or later is required." \
1190 "Note that Python 3 or later is not yet supported." \
1191 "Use --python=/path/to/python to specify a supported Python."
1194 # The -B switch was added in Python 2.6.
1195 # If it is supplied, compiled files are not written.
1196 # Use it for Python versions which support it.
1197 if $python -B -c 'import sys; sys.exit(0)' 2>/dev
/null
; then
1204 LDFLAGS
="-m32 $LDFLAGS"
1208 LDFLAGS
="-m64 $LDFLAGS"
1211 LDFLAGS
="-m32 $LDFLAGS"
1212 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1215 LDFLAGS
="-m64 $LDFLAGS"
1216 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1220 LDFLAGS
="-m31 $LDFLAGS"
1224 LDFLAGS
="-m64 $LDFLAGS"
1228 LDFLAGS
="-m32 $LDFLAGS"
1229 cc_i386
='$(CC) -m32'
1233 LDFLAGS
="-m64 $LDFLAGS"
1234 cc_i386
='$(CC) -m32'
1238 LDFLAGS
="-mx32 $LDFLAGS"
1239 cc_i386
='$(CC) -m32'
1241 # No special flags required for other host CPUs
1244 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1245 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1247 default_target_list
=""
1251 if [ "$softmmu" = "yes" ]; then
1252 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1254 if [ "$linux_user" = "yes" ]; then
1255 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1257 if [ "$bsd_user" = "yes" ]; then
1258 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1261 for config
in $mak_wilds; do
1262 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1265 if test x
"$show_help" = x
"yes" ; then
1268 Usage: configure [options]
1269 Options: [defaults in brackets after descriptions]
1272 --help print this message
1273 --prefix=PREFIX install in PREFIX [$prefix]
1274 --interp-prefix=PREFIX where to find shared libraries, etc.
1275 use %M for cpu name [$interp_prefix]
1276 --target-list=LIST set target list (default: build everything)
1277 $(echo Available targets: $default_target_list | \
1278 fold -s -w 53 | sed -e 's/^/ /')
1280 Advanced options (experts only):
1281 --source-path=PATH path of source code [$source_path]
1282 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1283 --cc=CC use C compiler CC [$cc]
1284 --iasl=IASL use ACPI compiler IASL [$iasl]
1285 --host-cc=CC use C compiler CC [$host_cc] for code run at
1287 --cxx=CXX use C++ compiler CXX [$cxx]
1288 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1289 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1290 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1291 --make=MAKE use specified make [$make]
1292 --install=INSTALL use specified install [$install]
1293 --python=PYTHON use specified python [$python]
1294 --smbd=SMBD use specified smbd [$smbd]
1295 --static enable static build [$static]
1296 --mandir=PATH install man pages in PATH
1297 --datadir=PATH install firmware in PATH$confsuffix
1298 --docdir=PATH install documentation in PATH$confsuffix
1299 --bindir=PATH install binaries in PATH
1300 --libdir=PATH install libraries in PATH
1301 --sysconfdir=PATH install config in PATH$confsuffix
1302 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1303 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1304 --enable-debug enable common debug build options
1305 --disable-strip disable stripping binaries
1306 --disable-werror disable compilation abort on warning
1307 --disable-stack-protector disable compiler-provided stack protection
1308 --audio-drv-list=LIST set audio drivers list:
1309 Available drivers: $audio_possible_drivers
1310 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1311 --block-drv-rw-whitelist=L
1312 set block driver read-write whitelist
1313 (affects only QEMU, not qemu-img)
1314 --block-drv-ro-whitelist=L
1315 set block driver read-only whitelist
1316 (affects only QEMU, not qemu-img)
1317 --enable-trace-backends=B Set trace backend
1318 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1319 --with-trace-file=NAME Full PATH,NAME of file to store traces
1321 --disable-slirp disable SLIRP userspace network connectivity
1322 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1323 --oss-lib path to OSS library
1324 --cpu=CPU Build for host CPU [$cpu]
1325 --with-coroutine=BACKEND coroutine backend. Supported options:
1326 gthread, ucontext, sigaltstack, windows
1327 --enable-gcov enable test coverage analysis with gcov
1328 --gcov=GCOV use specified gcov [$gcov_tool]
1329 --disable-blobs disable installing provided firmware blobs
1330 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1331 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1333 Optional features, enabled with --enable-FEATURE and
1334 disabled with --disable-FEATURE, default is enabled if available:
1336 system all system emulation targets
1337 user supported user emulation targets
1338 linux-user all linux usermode emulation targets
1339 bsd-user all BSD usermode emulation targets
1340 docs build documentation
1341 guest-agent build the QEMU Guest Agent
1342 guest-agent-msi build guest agent Windows MSI installation package
1343 pie Position Independent Executables
1344 modules modules support
1345 debug-tcg TCG debugging (default is disabled)
1346 debug-info debugging information
1347 sparse sparse checker
1349 gnutls GNUTLS cryptography support
1351 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1353 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1354 vte vte support for the gtk UI
1357 vnc-tls TLS encryption for VNC server
1358 vnc-sasl SASL encryption for VNC server
1359 vnc-jpeg JPEG lossy compression for VNC server
1360 vnc-png PNG compression for VNC server
1361 cocoa Cocoa UI (Mac OS X only)
1363 xen xen backend driver support
1365 brlapi BrlAPI (Braile)
1366 curl curl connectivity
1368 bluez bluez stack connectivity
1369 kvm KVM acceleration support
1370 rdma RDMA-based migration support
1372 vde support for vde network
1373 netmap support for netmap network
1374 linux-aio Linux AIO support
1375 cap-ng libcap-ng support
1376 attr attr and xattr support
1377 vhost-net vhost-net acceleration support
1379 rbd rados block device (rbd)
1380 libiscsi iscsi support
1382 smartcard-nss smartcard nss support
1383 libusb libusb (for usb passthrough)
1384 usb-redir usb network redirection support
1385 lzo support of lzo compression library
1386 snappy support of snappy compression library
1387 bzip2 support of bzip2 compression library
1388 (for reading bzip2-compressed dmg images)
1389 seccomp seccomp support
1390 coroutine-pool coroutine freelist (better performance)
1391 glusterfs GlusterFS backend
1392 archipelago Archipelago backend
1394 libssh2 ssh block device support
1395 vhdx support for the Microsoft VHDX image format
1396 numa libnuma support
1397 tcmalloc tcmalloc support
1399 NOTE: The object files are built at the place where configure is launched
1404 # Now we have handled --enable-tcg-interpreter and know we're not just
1405 # printing the help message, bail out if the host CPU isn't supported.
1406 if test "$ARCH" = "unknown"; then
1407 if test "$tcg_interpreter" = "yes" ; then
1408 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1411 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1415 # Consult white-list to determine whether to enable werror
1416 # by default. Only enable by default for git builds
1417 z_version
=`cut -f3 -d. $source_path/VERSION`
1419 if test -z "$werror" ; then
1420 if test -d "$source_path/.git" -a \
1421 "$linux" = "yes" ; then
1428 # check that the C compiler works.
1430 if compile_object
; then
1431 : C compiler works ok
1433 error_exit
"\"$cc\" either does not exist or does not work"
1436 # Check that the C++ compiler exists and works with the C compiler
1439 int c_function(void);
1440 int main(void) { return c_function(); }
1447 int c_function(void);
1449 int c_function(void) { return 42; }
1454 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1455 # C++ compiler $cxx works ok with C compiler $cc
1458 echo "C++ compiler $cxx does not work with C compiler $cc"
1459 echo "Disabling C++ specific optional code"
1463 echo "No C++ compiler available; disabling C++ specific optional code"
1467 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1468 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1469 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1470 gcc_flags
="-Wunused-but-set-variable $gcc_flags"
1471 gcc_flags
="-Wendif-labels $gcc_flags"
1472 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1473 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1474 # Note that we do not add -Werror to gcc_flags here, because that would
1475 # enable it for all configure tests. If a configure test failed due
1476 # to -Werror this would just silently disable some features,
1477 # so it's too error prone.
1479 cc_has_warning_flag
() {
1482 # Use the positive sense of the flag when testing for -Wno-wombat
1483 # support (gcc will happily accept the -Wno- form of unknown
1485 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1486 compile_prog
"-Werror $optflag" ""
1489 for flag
in $gcc_flags; do
1490 if cc_has_warning_flag
$flag ; then
1491 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1495 if test "$mingw32" = "yes"; then
1496 stack_protector
="no"
1498 if test "$stack_protector" != "no"; then
1499 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1501 for flag
in $gcc_flags; do
1502 # We need to check both a compile and a link, since some compiler
1503 # setups fail only on a .c->.o compile and some only at link time
1504 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1505 compile_prog
"-Werror $flag" ""; then
1506 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1507 LIBTOOLFLAGS
="$LIBTOOLFLAGS -Wc,$flag"
1512 if test "$stack_protector" = yes; then
1513 if test $sp_on = 0; then
1514 error_exit
"Stack protector not supported"
1519 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1520 # large functions that use global variables. The bug is in all releases of
1521 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1522 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1524 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1525 int main(void) { return 0; }
1527 #error No bug in this compiler.
1530 if compile_prog
"-Werror -fno-gcse" "" ; then
1531 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1534 if test "$static" = "yes" ; then
1535 if test "$modules" = "yes" ; then
1536 error_exit
"static and modules are mutually incompatible"
1538 if test "$pie" = "yes" ; then
1539 error_exit
"static and pie are mutually incompatible"
1545 # Unconditional check for compiler __thread support
1547 static __thread int tls_var;
1548 int main(void) { return tls_var; }
1551 if ! compile_prog
"-Werror" "" ; then
1552 error_exit
"Your compiler does not support the __thread specifier for " \
1553 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1556 if test "$pie" = ""; then
1557 case "$cpu-$targetos" in
1558 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1566 if test "$pie" != "no" ; then
1570 # define THREAD __thread
1575 static THREAD int tls_var;
1577 int main(void) { return tls_var; }
1580 if compile_prog
"-fPIE -DPIE" "-pie"; then
1581 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1582 LDFLAGS
="-pie $LDFLAGS"
1584 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1585 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1588 if test "$pie" = "yes"; then
1589 error_exit
"PIE not available due to missing toolchain support"
1591 echo "Disabling PIE due to missing toolchain support"
1596 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1597 CFLAGS_NOPIE
="-fno-pie"
1598 LDFLAGS_NOPIE
="-nopie"
1602 # check for broken gcc and libtool in RHEL5
1603 if test -n "$libtool" -a "$pie" != "no" ; then
1606 void *f(unsigned char *buf, int len);
1607 void *g(unsigned char *buf, int len);
1610 f(unsigned char *buf, int len)
1616 g(unsigned char *buf, int len)
1622 if ! libtool_prog
; then
1623 echo "Disabling libtool due to broken toolchain support"
1628 ##########################################
1629 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1630 # use i686 as default anyway, but for those that don't, an explicit
1631 # specification is necessary
1633 if test "$cpu" = "i386"; then
1635 static int sfaa(int *ptr)
1637 return __sync_fetch_and_and(ptr, 0);
1643 val = __sync_val_compare_and_swap(&val, 0, 1);
1648 if ! compile_prog
"" "" ; then
1649 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1653 #########################################
1654 # Solaris specific configure tool chain decisions
1656 if test "$solaris" = "yes" ; then
1657 if has
$install; then
1660 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1661 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1662 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1664 if test "`path_of $install`" = "/usr/sbin/install" ; then
1665 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1666 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1667 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1672 if test -f /usr
/ccs
/bin
/ar ; then
1673 error_exit
"No path includes ar" \
1674 "Add /usr/ccs/bin to your path and rerun configure"
1676 error_exit
"No path includes ar"
1680 if test -z "${target_list+xxx}" ; then
1681 target_list
="$default_target_list"
1683 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
1686 # Check that we recognised the target name; this allows a more
1687 # friendly error message than if we let it fall through.
1688 for target
in $target_list; do
1689 case " $default_target_list " in
1693 error_exit
"Unknown target name '$target'"
1698 # see if system emulation was really requested
1699 case " $target_list " in
1700 *"-softmmu "*) softmmu
=yes
1706 feature_not_found
() {
1710 error_exit
"User requested feature $feature" \
1711 "configure was not able to find it." \
1716 # big/little endian test
1718 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1719 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1720 extern int foo(short *, short *);
1721 int main(int argc, char *argv[]) {
1722 return foo(big_endian, little_endian);
1726 if compile_object
; then
1727 if grep -q BiGeNdIaN
$TMPO ; then
1729 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1732 echo big
/little
test failed
1735 echo big
/little
test failed
1738 ##########################################
1739 # cocoa implies not SDL or GTK
1740 # (the cocoa UI code currently assumes it is always the active UI
1741 # and doesn't interact well with other UI frontend code)
1742 if test "$cocoa" = "yes"; then
1743 if test "$sdl" = "yes"; then
1744 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1746 if test "$gtk" = "yes"; then
1747 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1753 ##########################################
1757 #include <sys/socket.h>
1758 #include <linux/ip.h>
1759 int main(void) { return sizeof(struct mmsghdr); }
1761 if compile_prog
"" "" ; then
1767 ##########################################
1770 if ! has
"$pkg_config_exe"; then
1771 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1774 ##########################################
1777 if test "$linux_user" = "yes"; then
1780 #include <linux/futex.h>
1782 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1788 if ! compile_object
; then
1789 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1793 ##########################################
1796 if test "$zlib" != "no" ; then
1799 int main(void) { zlibVersion(); return 0; }
1801 if compile_prog
"" "-lz" ; then
1804 error_exit
"zlib check failed" \
1805 "Make sure to have the zlib libs and headers installed."
1810 ##########################################
1813 if test "$lzo" != "no" ; then
1815 #include <lzo/lzo1x.h>
1816 int main(void) { lzo_version(); return 0; }
1818 if compile_prog
"" "-llzo2" ; then
1819 libs_softmmu
="$libs_softmmu -llzo2"
1822 if test "$lzo" = "yes"; then
1823 feature_not_found
"liblzo2" "Install liblzo2 devel"
1829 ##########################################
1832 if test "$snappy" != "no" ; then
1834 #include <snappy-c.h>
1835 int main(void) { snappy_max_compressed_length(4096); return 0; }
1837 if compile_prog
"" "-lsnappy" ; then
1838 libs_softmmu
="$libs_softmmu -lsnappy"
1841 if test "$snappy" = "yes"; then
1842 feature_not_found
"libsnappy" "Install libsnappy devel"
1848 ##########################################
1851 if test "$bzip2" != "no" ; then
1854 int main(void) { BZ2_bzlibVersion(); return 0; }
1856 if compile_prog
"" "-lbz2" ; then
1859 if test "$bzip2" = "yes"; then
1860 feature_not_found
"libbzip2" "Install libbzip2 devel"
1866 ##########################################
1869 if test "$seccomp" != "no" ; then
1870 if test "$cpu" = "i386" ||
test "$cpu" = "x86_64" &&
1871 $pkg_config --atleast-version=2.1.1 libseccomp
; then
1872 libs_softmmu
="$libs_softmmu `$pkg_config --libs libseccomp`"
1873 QEMU_CFLAGS
="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1876 if test "$seccomp" = "yes"; then
1877 feature_not_found
"libseccomp" "Install libseccomp devel >= 2.1.1"
1882 ##########################################
1885 if test "$xen" != "no" ; then
1886 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1888 # First we test whether Xen headers and libraries are available.
1889 # If no, we are done and there is no Xen support.
1890 # If yes, more tests are run to detect the Xen version.
1894 #include <xenctrl.h>
1899 if ! compile_prog
"" "$xen_libs" ; then
1901 if test "$xen" = "yes" ; then
1902 feature_not_found
"xen" "Install xen devel"
1908 cat > $TMPC <<EOF &&
1909 #include <xenctrl.h>
1910 #include <xenstore.h>
1912 #include <xen/hvm/hvm_info_table.h>
1913 #if !defined(HVM_MAX_VCPUS)
1914 # error HVM_MAX_VCPUS not defined
1919 xc = xc_interface_open(0, 0, 0);
1920 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1921 xc_gnttab_open(NULL, 0);
1922 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1923 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1924 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1928 compile_prog
"" "$xen_libs"
1930 xen_ctrl_version
=450
1934 cat > $TMPC <<EOF &&
1935 #include <xenctrl.h>
1936 #include <xenstore.h>
1938 #include <xen/hvm/hvm_info_table.h>
1939 #if !defined(HVM_MAX_VCPUS)
1940 # error HVM_MAX_VCPUS not defined
1945 xc = xc_interface_open(0, 0, 0);
1946 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1947 xc_gnttab_open(NULL, 0);
1948 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1949 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1953 compile_prog
"" "$xen_libs"
1955 xen_ctrl_version
=420
1959 cat > $TMPC <<EOF &&
1960 #include <xenctrl.h>
1963 #include <xen/hvm/hvm_info_table.h>
1964 #if !defined(HVM_MAX_VCPUS)
1965 # error HVM_MAX_VCPUS not defined
1969 xc_interface_open(0, 0, 0);
1970 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1971 xc_gnttab_open(NULL, 0);
1972 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1976 compile_prog
"" "$xen_libs"
1978 xen_ctrl_version
=410
1983 cat > $TMPC <<EOF &&
1984 #include <xenctrl.h>
1987 #include <xen/hvm/hvm_info_table.h>
1988 #if !defined(HVM_MAX_VCPUS)
1989 # error HVM_MAX_VCPUS not defined
1992 struct xen_add_to_physmap xatp = {
1993 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1996 xc_interface_open();
1998 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1999 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2003 compile_prog
"" "$xen_libs"
2005 xen_ctrl_version
=400
2010 cat > $TMPC <<EOF &&
2011 #include <xenctrl.h>
2014 struct xen_add_to_physmap xatp = {
2015 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2018 xc_interface_open();
2020 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2021 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2025 compile_prog
"" "$xen_libs"
2027 xen_ctrl_version
=340
2032 cat > $TMPC <<EOF &&
2033 #include <xenctrl.h>
2037 xc_interface_open();
2039 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2043 compile_prog
"" "$xen_libs"
2045 xen_ctrl_version
=330
2048 # Xen version unsupported
2050 if test "$xen" = "yes" ; then
2051 feature_not_found
"xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2056 if test "$xen" = yes; then
2057 libs_softmmu
="$xen_libs $libs_softmmu"
2061 if test "$xen_pci_passthrough" != "no"; then
2062 if test "$xen" = "yes" && test "$linux" = "yes" &&
2063 test "$xen_ctrl_version" -ge 340; then
2064 xen_pci_passthrough
=yes
2066 if test "$xen_pci_passthrough" = "yes"; then
2067 if test "$xen_ctrl_version" -lt 340; then
2068 error_exit
"User requested feature Xen PCI Passthrough" \
2069 "This feature does not work with Xen 3.3"
2071 error_exit
"User requested feature Xen PCI Passthrough" \
2072 " but this feature requires /sys from Linux"
2074 xen_pci_passthrough
=no
2078 ##########################################
2081 if ! has
$libtool; then
2085 # MacOSX ships with a libtool which isn't the GNU one; weed this
2086 # out by checking whether libtool supports the --version switch
2087 if test -n "$libtool"; then
2088 if ! "$libtool" --version >/dev
/null
2>&1; then
2093 ##########################################
2095 if test "$sparse" != "no" ; then
2099 if test "$sparse" = "yes" ; then
2100 feature_not_found
"sparse" "Install sparse binary"
2106 ##########################################
2110 if $pkg_config --exists "x11"; then
2111 x11_cflags
=`$pkg_config --cflags x11`
2112 x11_libs
=`$pkg_config --libs x11`
2115 ##########################################
2118 if test "$gtkabi" = ""; then
2119 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2120 # Use 3.0 as a fallback if that is available.
2121 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2123 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2130 if test "$gtk" != "no"; then
2131 gtkpackage
="gtk+-$gtkabi"
2132 gtkx11package
="gtk+-x11-$gtkabi"
2133 if test "$gtkabi" = "3.0" ; then
2138 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2139 gtk_cflags
=`$pkg_config --cflags $gtkpackage`
2140 gtk_libs
=`$pkg_config --libs $gtkpackage`
2141 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2142 gtk_cflags
="$gtk_cflags $x11_cflags"
2143 gtk_libs
="$gtk_libs $x11_libs"
2145 libs_softmmu
="$gtk_libs $libs_softmmu"
2147 elif test "$gtk" = "yes"; then
2148 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2155 ##########################################
2159 # Unfortunately some distros have bad pkg-config information for gnutls
2160 # such that it claims to exist but you get a compiler error if you try
2161 # to use the options returned by --libs. Specifically, Ubuntu for --static
2162 # builds doesn't work:
2163 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2165 # So sanity check the cflags/libs before assuming gnutls can be used.
2166 if ! $pkg_config --exists "gnutls"; then
2171 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2176 if test "$gnutls" != "no"; then
2177 if gnutls_works
; then
2178 gnutls_cflags
=`$pkg_config --cflags gnutls`
2179 gnutls_libs
=`$pkg_config --libs gnutls`
2180 libs_softmmu
="$gnutls_libs $libs_softmmu"
2181 libs_tools
="$gnutls_libs $libs_tools"
2182 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2185 # gnutls_hash_init requires >= 2.9.10
2186 if $pkg_config --exists "gnutls >= 2.9.10"; then
2192 if $pkg_config --exists 'gnutls >= 3.0'; then
2195 elif $pkg_config --exists 'gnutls >= 2.12'; then
2196 case `$pkg_config --libs --static gnutls` in
2214 elif test "$gnutls" = "yes"; then
2215 feature_not_found
"gnutls" "Install gnutls devel"
2224 if test "$gnutls_gcrypt" != "no"; then
2225 if has
"libgcrypt-config"; then
2226 gcrypt_cflags
=`libgcrypt-config --cflags`
2227 gcrypt_libs
=`libgcrypt-config --libs`
2228 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2229 libs_tools
="$gcrypt_libs $libs_tools"
2230 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2232 feature_not_found
"gcrypt" "Install gcrypt devel"
2237 if test "$gnutls_nettle" != "no"; then
2238 if $pkg_config --exists "nettle"; then
2239 nettle_cflags
=`$pkg_config --cflags nettle`
2240 nettle_libs
=`$pkg_config --libs nettle`
2241 nettle_version
=`$pkg_config --modversion nettle`
2242 libs_softmmu
="$nettle_libs $libs_softmmu"
2243 libs_tools
="$nettle_libs $libs_tools"
2244 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2246 feature_not_found
"nettle" "Install nettle devel"
2251 ##########################################
2254 if test "$vte" != "no"; then
2255 if test "$gtkabi" = "3.0"; then
2256 vtepackage
="vte-2.90"
2262 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2263 vte_cflags
=`$pkg_config --cflags $vtepackage`
2264 vte_libs
=`$pkg_config --libs $vtepackage`
2265 libs_softmmu
="$vte_libs $libs_softmmu"
2267 elif test "$vte" = "yes"; then
2268 if test "$gtkabi" = "3.0"; then
2269 feature_not_found
"vte" "Install libvte-2.90 devel"
2271 feature_not_found
"vte" "Install libvte devel"
2278 ##########################################
2281 # Look for sdl configuration program (pkg-config or sdl-config). Try
2282 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2284 if test $sdlabi = "2.0"; then
2285 sdl_config
=$sdl2_config
2287 sdlconfigname
=sdl2_config
2290 sdlconfigname
=sdl_config
2293 if test "`basename $sdl_config`" != $sdlconfigname && ! has
${sdl_config}; then
2294 sdl_config
=$sdlconfigname
2297 if $pkg_config $sdlname --exists; then
2298 sdlconfig
="$pkg_config $sdlname"
2299 _sdlversion
=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2300 elif has
${sdl_config}; then
2301 sdlconfig
="$sdl_config"
2302 _sdlversion
=`$sdlconfig --version | sed 's/[^0-9]//g'`
2304 if test "$sdl" = "yes" ; then
2305 feature_not_found
"sdl" "Install SDL devel"
2309 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2310 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2314 if test "$sdl" != "no" ; then
2317 #undef main /* We don't want SDL to override our main() */
2318 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2320 sdl_cflags
=`$sdlconfig --cflags 2> /dev/null`
2321 if test "$static" = "yes" ; then
2322 sdl_libs
=`$sdlconfig --static-libs 2>/dev/null`
2324 sdl_libs
=`$sdlconfig --libs 2> /dev/null`
2326 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2327 if test "$_sdlversion" -lt 121 ; then
2333 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2334 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2335 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2336 sdl_libs
="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2337 sdl_cflags
="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2339 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2345 else # sdl not found
2346 if test "$sdl" = "yes" ; then
2347 feature_not_found
"sdl" "Install SDL devel"
2350 fi # sdl compile test
2353 if test "$sdl" = "yes" ; then
2356 #if defined(SDL_VIDEO_DRIVER_X11)
2357 #include <X11/XKBlib.h>
2359 #error No x11 support
2361 int main(void) { return 0; }
2363 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2364 sdl_cflags
="$sdl_cflags $x11_cflags"
2365 sdl_libs
="$sdl_libs $x11_libs"
2367 libs_softmmu
="$sdl_libs $libs_softmmu"
2370 ##########################################
2371 # RDMA needs OpenFabrics libraries
2372 if test "$rdma" != "no" ; then
2374 #include <rdma/rdma_cma.h>
2375 int main(void) { return 0; }
2377 rdma_libs
="-lrdmacm -libverbs"
2378 if compile_prog
"" "$rdma_libs" ; then
2380 libs_softmmu
="$libs_softmmu $rdma_libs"
2382 if test "$rdma" = "yes" ; then
2384 " OpenFabrics librdmacm/libibverbs not present." \
2386 " (1) Fast: Install infiniband packages from your distro." \
2387 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2388 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2394 ##########################################
2395 # VNC TLS/WS detection
2396 if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
2398 #include <gnutls/gnutls.h>
2399 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2401 if $pkg_config --exists gnutls
; then
2402 vnc_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2403 vnc_tls_libs
=`$pkg_config --libs gnutls 2>/dev/null`
2406 vnc_tls_libs
=-lgnutls
2408 if compile_prog
"$vnc_tls_cflags" "$vnc_tls_libs" ; then
2409 if test "$vnc_tls" != "no" ; then
2412 libs_softmmu
="$vnc_tls_libs $libs_softmmu"
2413 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_tls_cflags"
2415 if test "$vnc_tls" = "yes" ; then
2416 feature_not_found
"vnc-tls" "Install gnutls devel"
2422 ##########################################
2423 # VNC SASL detection
2424 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2426 #include <sasl/sasl.h>
2428 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2430 # Assuming Cyrus-SASL installed in /usr prefix
2432 vnc_sasl_libs
="-lsasl2"
2433 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2435 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2436 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2438 if test "$vnc_sasl" = "yes" ; then
2439 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2445 ##########################################
2446 # VNC JPEG detection
2447 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2450 #include <jpeglib.h>
2451 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2454 vnc_jpeg_libs
="-ljpeg"
2455 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2457 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2458 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2460 if test "$vnc_jpeg" = "yes" ; then
2461 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2467 ##########################################
2469 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2471 //#include <stdio.h>
2475 png_structp png_ptr;
2476 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2477 return png_ptr != 0;
2480 if $pkg_config libpng
--exists; then
2481 vnc_png_cflags
=`$pkg_config libpng --cflags`
2482 vnc_png_libs
=`$pkg_config libpng --libs`
2485 vnc_png_libs
="-lpng"
2487 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2489 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2490 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2492 if test "$vnc_png" = "yes" ; then
2493 feature_not_found
"vnc-png" "Install libpng devel"
2499 ##########################################
2500 # fnmatch() probe, used for ACL routines
2503 #include <fnmatch.h>
2506 fnmatch("foo", "foo", 0);
2510 if compile_prog
"" "" ; then
2514 ##########################################
2515 # uuid_generate() probe, used for vdi block driver
2516 # Note that on some systems (notably MacOSX) no extra library
2517 # need be linked to get the uuid functions.
2518 if test "$uuid" != "no" ; then
2521 #include <uuid/uuid.h>
2525 uuid_generate(my_uuid);
2529 if compile_prog
"" "" ; then
2531 elif compile_prog
"" "$uuid_libs" ; then
2533 libs_softmmu
="$uuid_libs $libs_softmmu"
2534 libs_tools
="$uuid_libs $libs_tools"
2536 if test "$uuid" = "yes" ; then
2537 feature_not_found
"uuid" "Install libuuid devel"
2543 if test "$vhdx" = "yes" ; then
2544 if test "$uuid" = "no" ; then
2545 error_exit
"uuid required for VHDX support"
2547 elif test "$vhdx" != "no" ; then
2548 if test "$uuid" = "yes" ; then
2555 ##########################################
2556 # xfsctl() probe, used for raw-posix
2557 if test "$xfs" != "no" ; then
2559 #include <stddef.h> /* NULL */
2560 #include <xfs/xfs.h>
2563 xfsctl(NULL, 0, 0, NULL);
2567 if compile_prog
"" "" ; then
2570 if test "$xfs" = "yes" ; then
2571 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2577 ##########################################
2578 # vde libraries probe
2579 if test "$vde" != "no" ; then
2580 vde_libs
="-lvdeplug"
2583 #include <libvdeplug.h>
2586 struct vde_open_args a = {0, 0, 0};
2592 if compile_prog
"" "$vde_libs" ; then
2594 libs_softmmu
="$vde_libs $libs_softmmu"
2595 libs_tools
="$vde_libs $libs_tools"
2597 if test "$vde" = "yes" ; then
2598 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2604 ##########################################
2605 # netmap support probe
2606 # Apart from looking for netmap headers, we make sure that the host API version
2607 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2608 # a minor/major version number. Minor new features will be marked with values up
2609 # to 15, and if something happens that requires a change to the backend we will
2610 # move above 15, submit the backend fixes and modify this two bounds.
2611 if test "$netmap" != "no" ; then
2613 #include <inttypes.h>
2615 #include <net/netmap.h>
2616 #include <net/netmap_user.h>
2617 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2620 int main(void) { return 0; }
2622 if compile_prog
"" "" ; then
2625 if test "$netmap" = "yes" ; then
2626 feature_not_found
"netmap"
2632 ##########################################
2633 # libcap-ng library probe
2634 if test "$cap_ng" != "no" ; then
2640 capng_capability_to_name(CAPNG_EFFECTIVE);
2644 if compile_prog
"" "$cap_libs" ; then
2646 libs_tools
="$cap_libs $libs_tools"
2648 if test "$cap_ng" = "yes" ; then
2649 feature_not_found
"cap_ng" "Install libcap-ng devel"
2655 ##########################################
2656 # Sound support libraries probe
2667 int main(void) { $exp }
2669 if compile_prog
"$cfl" "$lib" ; then
2672 error_exit
"$drv check failed" \
2673 "Make sure to have the $drv libs and headers installed."
2677 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2678 for drv
in $audio_drv_list; do
2681 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2682 "return snd_pcm_close((snd_pcm_t *)0);"
2683 libs_softmmu
="-lasound $libs_softmmu"
2687 audio_drv_probe
$drv pulse
/mainloop.h
"-lpulse" \
2688 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2689 libs_softmmu
="-lpulse $libs_softmmu"
2694 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2698 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2703 libs_softmmu
="$oss_lib $libs_softmmu"
2707 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2711 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2712 error_exit
"Unknown driver '$drv' selected" \
2713 "Possible drivers are: $audio_possible_drivers"
2719 ##########################################
2722 if test "$brlapi" != "no" ; then
2723 brlapi_libs
="-lbrlapi"
2727 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2729 if compile_prog
"" "$brlapi_libs" ; then
2731 libs_softmmu
="$brlapi_libs $libs_softmmu"
2733 if test "$brlapi" = "yes" ; then
2734 feature_not_found
"brlapi" "Install brlapi devel"
2740 ##########################################
2742 if test "$curses" != "no" ; then
2743 if test "$mingw32" = "yes" ; then
2744 curses_list
="-lpdcurses"
2746 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2752 const char *s = curses_version();
2758 for curses_lib
in $curses_list; do
2760 if compile_prog
"" "$curses_lib" ; then
2762 libs_softmmu
="$curses_lib $libs_softmmu"
2767 if test "$curses_found" = "yes" ; then
2770 if test "$curses" = "yes" ; then
2771 feature_not_found
"curses" "Install ncurses devel"
2777 ##########################################
2779 if test "$curl" != "no" ; then
2780 if $pkg_config libcurl
--exists; then
2781 curlconfig
="$pkg_config libcurl"
2783 curlconfig
=curl-config
2786 #include <curl/curl.h>
2787 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2789 curl_cflags
=`$curlconfig --cflags 2>/dev/null`
2790 curl_libs
=`$curlconfig --libs 2>/dev/null`
2791 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2794 if test "$curl" = "yes" ; then
2795 feature_not_found
"curl" "Install libcurl devel"
2801 ##########################################
2802 # bluez support probe
2803 if test "$bluez" != "no" ; then
2805 #include <bluetooth/bluetooth.h>
2806 int main(void) { return bt_error(0); }
2808 bluez_cflags
=`$pkg_config --cflags bluez 2> /dev/null`
2809 bluez_libs
=`$pkg_config --libs bluez 2> /dev/null`
2810 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2812 libs_softmmu
="$bluez_libs $libs_softmmu"
2814 if test "$bluez" = "yes" ; then
2815 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2821 ##########################################
2822 # glib support probe
2825 glib_modules
=gthread-2.0
2826 if test "$modules" = yes; then
2827 glib_modules
="$glib_modules gmodule-2.0"
2830 for i
in $glib_modules; do
2831 if $pkg_config --atleast-version=$glib_req_ver $i; then
2832 glib_cflags
=`$pkg_config --cflags $i`
2833 glib_libs
=`$pkg_config --libs $i`
2834 CFLAGS
="$glib_cflags $CFLAGS"
2835 LIBS
="$glib_libs $LIBS"
2836 libs_qga
="$glib_libs $libs_qga"
2838 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2842 # g_test_trap_subprocess added in 2.38. Used by some tests.
2844 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
2848 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2851 int main(void) { return 0; }
2853 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
2854 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
2855 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
2856 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
2860 ##########################################
2861 # SHA command probe for modules
2862 if test "$modules" = yes; then
2863 shacmd_probe
="sha1sum sha1 shasum"
2864 for c
in $shacmd_probe; do
2870 if test "$shacmd" = ""; then
2871 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
2875 ##########################################
2876 # pixman support probe
2878 if test "$pixman" = ""; then
2879 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2881 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
2887 if test "$pixman" = "none"; then
2888 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2889 error_exit
"pixman disabled but system emulation or tools build" \
2890 "enabled. You can turn off pixman only if you also" \
2891 "disable all system emulation targets and the tools" \
2892 "build with '--disable-tools --disable-system'."
2896 elif test "$pixman" = "system"; then
2897 # pixman version has been checked above
2898 pixman_cflags
=`$pkg_config --cflags pixman-1`
2899 pixman_libs
=`$pkg_config --libs pixman-1`
2901 if test ! -d ${source_path}/pixman
/pixman
; then
2902 error_exit
"pixman >= 0.21.8 not present. Your options:" \
2903 " (1) Preferred: Install the pixman devel package (any recent" \
2904 " distro should have packages as Xorg needs pixman too)." \
2905 " (2) Fetch the pixman submodule, using:" \
2906 " git submodule update --init pixman"
2908 mkdir
-p pixman
/pixman
2909 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2910 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2913 ##########################################
2916 if test "$cap" != "no" ; then
2919 #include <sys/capability.h>
2920 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2922 if compile_prog
"" "-lcap" ; then
2929 ##########################################
2931 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
2935 #include <pthread.h>
2936 static void *f(void *p) { return NULL; }
2939 pthread_create(&thread, 0, f, 0);
2943 if compile_prog
"" "" ; then
2946 for pthread_lib
in $PTHREADLIBS_LIST; do
2947 if compile_prog
"" "$pthread_lib" ; then
2950 for lib_entry
in $LIBS; do
2951 if test "$lib_entry" = "$pthread_lib"; then
2956 if test "$found" = "no"; then
2957 LIBS
="$pthread_lib $LIBS"
2964 if test "$mingw32" != yes -a "$pthread" = no
; then
2965 error_exit
"pthread check failed" \
2966 "Make sure to have the pthread libs and headers installed."
2969 # check for pthread_setname_np
2970 pthread_setname_np
=no
2972 #include <pthread.h>
2974 static void *f(void *p) { return NULL; }
2978 pthread_create(&thread, 0, f, 0);
2979 pthread_setname_np(thread, "QEMU");
2983 if compile_prog
"" "$pthread_lib" ; then
2984 pthread_setname_np
=yes
2987 ##########################################
2989 if test "$rbd" != "no" ; then
2992 #include <rbd/librbd.h>
2995 rados_create(&cluster, NULL);
2999 rbd_libs
="-lrbd -lrados"
3000 if compile_prog
"" "$rbd_libs" ; then
3003 if test "$rbd" = "yes" ; then
3004 feature_not_found
"rados block device" "Install librbd/ceph devel"
3010 ##########################################
3012 min_libssh2_version
=1.2.8
3013 if test "$libssh2" != "no" ; then
3014 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3015 libssh2_cflags
=`$pkg_config libssh2 --cflags`
3016 libssh2_libs
=`$pkg_config libssh2 --libs`
3019 if test "$libssh2" = "yes" ; then
3020 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3026 ##########################################
3027 # libssh2_sftp_fsync probe
3029 if test "$libssh2" = "yes"; then
3032 #include <libssh2.h>
3033 #include <libssh2_sftp.h>
3035 LIBSSH2_SESSION *session;
3037 LIBSSH2_SFTP_HANDLE *sftp_handle;
3038 session = libssh2_session_init ();
3039 sftp = libssh2_sftp_init (session);
3040 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3041 libssh2_sftp_fsync (sftp_handle);
3045 # libssh2_cflags/libssh2_libs defined in previous test.
3046 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3047 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3051 ##########################################
3054 if test "$linux_aio" != "no" ; then
3057 #include <sys/eventfd.h>
3059 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3061 if compile_prog
"" "-laio" ; then
3064 if test "$linux_aio" = "yes" ; then
3065 feature_not_found
"linux AIO" "Install libaio devel"
3071 ##########################################
3072 # TPM passthrough is only on x86 Linux
3074 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3075 tpm_passthrough
=$tpm
3080 ##########################################
3083 if test "$attr" != "no" ; then
3086 #include <sys/types.h>
3087 #ifdef CONFIG_LIBATTR
3088 #include <attr/xattr.h>
3090 #include <sys/xattr.h>
3092 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3094 if compile_prog
"" "" ; then
3096 # Older distros have <attr/xattr.h>, and need -lattr:
3097 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3102 if test "$attr" = "yes" ; then
3103 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3109 ##########################################
3112 #include <sys/types.h>
3113 #include <sys/uio.h>
3115 int main(void) { return sizeof(struct iovec); }
3118 if compile_prog
"" "" ; then
3122 ##########################################
3125 #include <sys/types.h>
3126 #include <sys/uio.h>
3128 int main(void) { return preadv(0, 0, 0, 0); }
3131 if compile_prog
"" "" ; then
3135 ##########################################
3137 # fdt support is mandatory for at least some target architectures,
3138 # so insist on it if we're building those system emulators.
3140 for target
in $target_list; do
3142 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3148 if test "$fdt_required" = "yes"; then
3149 if test "$fdt" = "no"; then
3150 error_exit
"fdt disabled but some requested targets require it." \
3151 "You can turn off fdt only if you also disable all the system emulation" \
3152 "targets which need it (by specifying a cut down --target-list)."
3157 if test "$fdt" != "no" ; then
3159 # explicitly check for libfdt_env.h as it is missing in some stable installs
3160 # and test for required functions to make sure we are on a version >= 1.4.0
3163 #include <libfdt_env.h>
3164 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3166 if compile_prog
"" "$fdt_libs" ; then
3167 # system DTC is good - use it
3169 elif test -d ${source_path}/dtc
/libfdt
; then
3170 # have submodule DTC - use it
3174 if [ "$pwd_is_source_path" != "y" ] ; then
3175 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3176 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3178 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3179 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3180 elif test "$fdt" = "yes" ; then
3181 # have neither and want - prompt for system/submodule install
3182 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3183 " (1) Preferred: Install the DTC (libfdt) devel package" \
3184 " (2) Fetch the DTC submodule, using:" \
3185 " git submodule update --init dtc"
3187 # don't have and don't want
3193 libs_softmmu
="$libs_softmmu $fdt_libs"
3195 ##########################################
3196 # opengl probe (for sdl2, milkymist-tmu2)
3198 # GLX probe, used by milkymist-tmu2
3199 # this is temporary, code will be switched to egl mid-term.
3201 #include <X11/Xlib.h>
3204 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3206 if compile_prog
"" "-lGL -lX11" ; then
3212 if test "$opengl" != "no" ; then
3213 opengl_pkgs
="gl glesv2 epoxy egl"
3214 if $pkg_config $opengl_pkgs x11
&& test "$have_glx" = "yes"; then
3215 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3216 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3219 if test "$opengl" = "yes" ; then
3220 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3229 ##########################################
3231 if test "$archipelago" != "no" ; then
3234 #include <xseg/xseg.h>
3235 #include <xseg/protocol.h>
3241 archipelago_libs
=-lxseg
3242 if compile_prog
"" "$archipelago_libs"; then
3244 libs_tools
="$archipelago_libs $libs_tools"
3245 libs_softmmu
="$archipelago_libs $libs_softmmu"
3247 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3248 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3249 echo "license and therefore prevent redistribution."
3251 echo "To disable Archipelago, use --disable-archipelago"
3253 if test "$archipelago" = "yes" ; then
3254 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3261 ##########################################
3263 if test "$glusterfs" != "no" ; then
3264 if $pkg_config --atleast-version=3 glusterfs-api
; then
3266 glusterfs_cflags
=`$pkg_config --cflags glusterfs-api`
3267 glusterfs_libs
=`$pkg_config --libs glusterfs-api`
3268 if $pkg_config --atleast-version=5 glusterfs-api
; then
3269 glusterfs_discard
="yes"
3271 if $pkg_config --atleast-version=6 glusterfs-api
; then
3272 glusterfs_zerofill
="yes"
3275 if test "$glusterfs" = "yes" ; then
3276 feature_not_found
"GlusterFS backend support" \
3277 "Install glusterfs-api devel >= 3"
3283 # Check for inotify functions when we are building linux-user
3284 # emulator. This is done because older glibc versions don't
3285 # have syscall stubs for these implemented. In that case we
3286 # don't provide them even if kernel supports them.
3290 #include <sys/inotify.h>
3295 /* try to start inotify */
3296 return inotify_init();
3299 if compile_prog
"" "" ; then
3305 #include <sys/inotify.h>
3310 /* try to start inotify */
3311 return inotify_init1(0);
3314 if compile_prog
"" "" ; then
3318 # check if utimensat and futimens are supported
3321 #define _ATFILE_SOURCE
3324 #include <sys/stat.h>
3328 utimensat(AT_FDCWD, "foo", NULL, 0);
3333 if compile_prog
"" "" ; then
3337 # check if pipe2 is there
3346 return pipe2(pipefd, O_CLOEXEC);
3349 if compile_prog
"" "" ; then
3353 # check if accept4 is there
3356 #include <sys/socket.h>
3361 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3365 if compile_prog
"" "" ; then
3369 # check if tee/splice is there. vmsplice was added same time.
3379 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3380 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3384 if compile_prog
"" "" ; then
3388 ##########################################
3391 if test "$numa" != "no" ; then
3394 int main(void) { return numa_available(); }
3397 if compile_prog
"" "-lnuma" ; then
3399 libs_softmmu
="-lnuma $libs_softmmu"
3401 if test "$numa" = "yes" ; then
3402 feature_not_found
"numa" "install numactl devel"
3408 ##########################################
3411 if test "$tcmalloc" = "yes" ; then
3414 int main(void) { malloc(1); return 0; }
3417 if compile_prog
"" "-ltcmalloc" ; then
3418 LIBS
="-ltcmalloc $LIBS"
3420 feature_not_found
"tcmalloc" "install gperftools devel"
3424 ##########################################
3429 #include <sys/syscall.h>
3431 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3434 if compile_prog
"" "" ; then
3438 # check if eventfd is supported
3441 #include <sys/eventfd.h>
3445 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3448 if compile_prog
"" "" ; then
3452 # check for fallocate
3459 fallocate(0, 0, 0, 0);
3463 if compile_prog
"" "" ; then
3467 # check for fallocate hole punching
3468 fallocate_punch_hole
=no
3471 #include <linux/falloc.h>
3475 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3479 if compile_prog
"" "" ; then
3480 fallocate_punch_hole
=yes
3483 # check that fallocate supports range zeroing inside the file
3484 fallocate_zero_range
=no
3487 #include <linux/falloc.h>
3491 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3495 if compile_prog
"" "" ; then
3496 fallocate_zero_range
=yes
3499 # check for posix_fallocate
3506 posix_fallocate(0, 0, 0);
3510 if compile_prog
"" "" ; then
3514 # check for sync_file_range
3521 sync_file_range(0, 0, 0, 0);
3525 if compile_prog
"" "" ; then
3529 # check for linux/fiemap.h and FS_IOC_FIEMAP
3532 #include <sys/ioctl.h>
3533 #include <linux/fs.h>
3534 #include <linux/fiemap.h>
3538 ioctl(0, FS_IOC_FIEMAP, 0);
3542 if compile_prog
"" "" ; then
3557 if compile_prog
"" "" ; then
3561 # check for ppoll support
3568 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3569 ppoll(&pfd, 1, 0, 0);
3573 if compile_prog
"" "" ; then
3577 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3578 prctl_pr_set_timerslack
=no
3580 #include <sys/prctl.h>
3584 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3588 if compile_prog
"" "" ; then
3589 prctl_pr_set_timerslack
=yes
3592 # check for epoll support
3595 #include <sys/epoll.h>
3603 if compile_prog
"" "" ; then
3607 # epoll_create1 and epoll_pwait are later additions
3608 # so we must check separately for their presence
3611 #include <sys/epoll.h>
3615 /* Note that we use epoll_create1 as a value, not as
3616 * a function being called. This is necessary so that on
3617 * old SPARC glibc versions where the function was present in
3618 * the library but not declared in the header file we will
3619 * fail the configure check. (Otherwise we will get a compiler
3620 * warning but not an error, and will proceed to fail the
3621 * qemu compile where we compile with -Werror.)
3623 return (int)(uintptr_t)&epoll_create1;
3626 if compile_prog
"" "" ; then
3632 #include <sys/epoll.h>
3636 epoll_pwait(0, 0, 0, 0, 0);
3640 if compile_prog
"" "" ; then
3644 # check for sendfile support
3647 #include <sys/sendfile.h>
3651 return sendfile(0, 0, 0, 0);
3654 if compile_prog
"" "" ; then
3658 # check for timerfd support (glibc 2.8 and newer)
3661 #include <sys/timerfd.h>
3665 return(timerfd_create(CLOCK_REALTIME, 0));
3668 if compile_prog
"" "" ; then
3672 # check for setns and unshare support
3685 if compile_prog
"" "" ; then
3689 # Check if tools are available to build documentation.
3690 if test "$docs" != "no" ; then
3691 if has makeinfo
&& has pod2man
; then
3694 if test "$docs" = "yes" ; then
3695 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3701 if test "$want_tools" = ""; then
3702 if test `expr "$target_list" : ".*softmmu.*"` != 0; then
3709 # Search for bswap_32 function
3712 #include <byteswap.h>
3713 int main(void) { return bswap_32(0); }
3715 if compile_prog
"" "" ; then
3719 # Search for bswap32 function
3722 #include <sys/endian.h>
3723 #include <sys/types.h>
3724 #include <machine/bswap.h>
3725 int main(void) { return bswap32(0); }
3727 if compile_prog
"" "" ; then
3731 ##########################################
3732 # Do we have libiscsi >= 1.9.0
3733 if test "$libiscsi" != "no" ; then
3734 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3736 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3737 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3739 if test "$libiscsi" = "yes" ; then
3740 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3746 ##########################################
3750 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3752 if compile_prog
"" "" ; then
3754 elif compile_prog
"" "-lm" ; then
3756 libs_qga
="-lm $libs_qga"
3758 error_exit
"libm check failed"
3761 ##########################################
3763 # uClibc provides 2 versions of clock_gettime(), one with realtime
3764 # support and one without. This means that the clock_gettime() don't
3765 # need -lrt. We still need it for timer_create() so we check for this
3766 # function in addition.
3771 timer_create(CLOCK_REALTIME, NULL, NULL);
3772 return clock_gettime(CLOCK_REALTIME, NULL);
3776 if compile_prog
"" "" ; then
3778 # we need pthread for static linking. use previous pthread test result
3779 elif compile_prog
"" "$pthread_lib -lrt" ; then
3781 libs_qga
="$libs_qga -lrt"
3784 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3785 "$aix" != "yes" -a "$haiku" != "yes" ; then
3786 libs_softmmu
="-lutil $libs_softmmu"
3789 ##########################################
3791 if test "$spice" != "no" ; then
3794 int main(void) { spice_server_new(); return 0; }
3796 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3797 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3798 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
3799 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
3800 compile_prog
"$spice_cflags" "$spice_libs" ; then
3802 libs_softmmu
="$libs_softmmu $spice_libs"
3803 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
3804 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
3805 spice_server_version
=$
($pkg_config --modversion spice-server
)
3807 if test "$spice" = "yes" ; then
3808 feature_not_found
"spice" \
3809 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3815 # check for libcacard for smartcard support
3817 # TODO - what's the minimal nss version we support?
3818 if test "$smartcard_nss" != "no"; then
3820 #include <pk11pub.h>
3821 int main(void) { PK11_FreeSlot(0); return 0; }
3823 # FIXME: do not include $glib_* in here
3824 nss_libs
="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3825 nss_cflags
="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3826 test_cflags
="$nss_cflags"
3827 # The header files in nss < 3.13.3 have a bug which causes them to
3828 # emit a warning. If we're going to compile QEMU with -Werror, then
3829 # test that the headers don't have this bug. Otherwise we would pass
3830 # the configure test but fail to compile QEMU later.
3831 if test "$werror" = "yes"; then
3832 test_cflags
="-Werror $test_cflags"
3834 if test -n "$libtool" &&
3835 $pkg_config --atleast-version=3.12.8 nss
&& \
3836 compile_prog
"$test_cflags" "$nss_libs"; then
3839 if test "$smartcard_nss" = "yes"; then
3840 feature_not_found
"nss" "Install nss devel >= 3.12.8"
3847 if test "$libusb" != "no" ; then
3848 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
3850 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
3851 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
3852 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
3853 libs_softmmu
="$libs_softmmu $libusb_libs"
3855 if test "$libusb" = "yes"; then
3856 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
3862 # check for usbredirparser for usb network redirection support
3863 if test "$usb_redir" != "no" ; then
3864 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
3866 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
3867 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
3868 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
3869 libs_softmmu
="$libs_softmmu $usb_redir_libs"
3871 if test "$usb_redir" = "yes"; then
3872 feature_not_found
"usb-redir" "Install usbredir devel"
3878 ##########################################
3879 # check if we have VSS SDK headers for win
3881 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3882 case "$vss_win32_sdk" in
3883 "") vss_win32_include
="-I$source_path" ;;
3884 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
3885 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3886 vss_win32_include
="-I$source_path/.sdk/vss"
3887 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3889 *) vss_win32_include
="-I$vss_win32_sdk"
3892 #define __MIDL_user_allocate_free_DEFINED__
3893 #include <inc/win2003/vss.h>
3894 int main(void) { return VSS_CTX_BACKUP; }
3896 if compile_prog
"$vss_win32_include" "" ; then
3897 guest_agent_with_vss
="yes"
3898 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
3899 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3901 if test "$vss_win32_sdk" != "" ; then
3902 echo "ERROR: Please download and install Microsoft VSS SDK:"
3903 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3904 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3905 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3906 echo "ERROR: The headers are extracted in the directory \`inc'."
3907 feature_not_found
"VSS support"
3909 guest_agent_with_vss
="no"
3913 ##########################################
3914 # lookup Windows platform SDK (if not specified)
3915 # The SDK is needed only to build .tlb (type library) file of guest agent
3916 # VSS provider from the source. It is usually unnecessary because the
3917 # pre-compiled .tlb file is included.
3919 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3920 if test -z "$win_sdk"; then
3921 programfiles
="$PROGRAMFILES"
3922 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
3923 if test -n "$programfiles"; then
3924 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
3926 feature_not_found
"Windows SDK"
3928 elif test "$win_sdk" = "no"; then
3933 ##########################################
3934 # check if mingw environment provides a recent ntddscsi.h
3935 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3937 #include <windows.h>
3938 #include <ntddscsi.h>
3940 #if !defined(IOCTL_SCSI_GET_ADDRESS)
3941 #error Missing required ioctl definitions
3943 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3947 if compile_prog
"" "" ; then
3948 guest_agent_ntddscsi
=yes
3949 libs_qga
="-lsetupapi $libs_qga"
3953 ##########################################
3954 # Guest agent Window MSI package
3956 if test "$guest_agent" != yes; then
3957 if test "$guest_agent_msi" = yes; then
3958 error_exit
"MSI guest agent package requires guest agent enabled"
3961 elif test "$mingw32" != "yes"; then
3962 if test "$guest_agent_msi" = "yes"; then
3963 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
3966 elif ! has wixl
; then
3967 if test "$guest_agent_msi" = "yes"; then
3968 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3973 if test "$guest_agent_msi" != "no"; then
3974 if test "$guest_agent_with_vss" = "yes"; then
3975 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
3978 if test "$QEMU_GA_MANUFACTURER" = ""; then
3979 QEMU_GA_MANUFACTURER
=QEMU
3982 if test "$QEMU_GA_DISTRO" = ""; then
3983 QEMU_GA_DISTRO
=Linux
3986 if test "$QEMU_GA_VERSION" = ""; then
3987 QEMU_GA_VERSION
=`cat $source_path/VERSION`
3990 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3994 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
3997 QEMU_GA_MSI_ARCH
="-D Arch=32"
4000 error_exit
"CPU $cpu not supported for building installation package"
4005 ##########################################
4006 # check if we have fdatasync
4012 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4013 return fdatasync(0);
4015 #error Not supported
4019 if compile_prog
"" "" ; then
4023 ##########################################
4024 # check if we have madvise
4028 #include <sys/types.h>
4029 #include <sys/mman.h>
4031 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4033 if compile_prog
"" "" ; then
4037 ##########################################
4038 # check if we have posix_madvise
4042 #include <sys/mman.h>
4044 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4046 if compile_prog
"" "" ; then
4050 ##########################################
4051 # check if we have usable SIGEV_THREAD_ID
4058 ev.sigev_notify = SIGEV_THREAD_ID;
4059 ev._sigev_un._tid = 0;
4060 asm volatile("" : : "g"(&ev));
4064 if compile_prog
"" "" ; then
4068 ##########################################
4069 # check if trace backend exists
4071 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4072 if test "$?" -ne 0 ; then
4073 error_exit
"invalid trace backends" \
4074 "Please choose supported trace backends."
4077 ##########################################
4078 # For 'ust' backend, test if ust headers are present
4079 if have_backend
"ust"; then
4081 #include <lttng/tracepoint.h>
4082 int main(void) { return 0; }
4084 if compile_prog
"" "" ; then
4085 if $pkg_config lttng-ust
--exists; then
4086 lttng_ust_libs
=`$pkg_config --libs lttng-ust`
4088 lttng_ust_libs
="-llttng-ust"
4090 if $pkg_config liburcu-bp
--exists; then
4091 urcu_bp_libs
=`$pkg_config --libs liburcu-bp`
4093 urcu_bp_libs
="-lurcu-bp"
4096 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4097 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4099 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4103 ##########################################
4104 # For 'dtrace' backend, test if 'dtrace' command is present
4105 if have_backend
"dtrace"; then
4106 if ! has
'dtrace' ; then
4107 error_exit
"dtrace command is not found in PATH $PATH"
4109 trace_backend_stap
="no"
4110 if has
'stap' ; then
4111 trace_backend_stap
="yes"
4115 ##########################################
4116 # check and set a backend for coroutine
4118 # We prefer ucontext, but it's not always possible. The fallback
4119 # is sigcontext. gthread is not selectable except explicitly, because
4120 # it is not functional enough to run QEMU proper. (It is occasionally
4121 # useful for debugging purposes.) On Windows the only valid backend
4122 # is the Windows-specific one.
4125 if test "$darwin" != "yes"; then
4127 #include <ucontext.h>
4128 #ifdef __stub_makecontext
4129 #error Ignoring glibc stub makecontext which will always fail
4131 int main(void) { makecontext(0, 0, 0); return 0; }
4133 if compile_prog
"" "" ; then
4138 if test "$coroutine" = ""; then
4139 if test "$mingw32" = "yes"; then
4141 elif test "$ucontext_works" = "yes"; then
4144 coroutine
=sigaltstack
4149 if test "$mingw32" != "yes"; then
4150 error_exit
"'windows' coroutine backend only valid for Windows"
4152 # Unfortunately the user visible backend name doesn't match the
4153 # coroutine-*.c filename for this case, so we have to adjust it here.
4157 if test "$ucontext_works" != "yes"; then
4158 feature_not_found
"ucontext"
4161 gthread|sigaltstack
)
4162 if test "$mingw32" = "yes"; then
4163 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4167 error_exit
"unknown coroutine backend $coroutine"
4172 if test "$coroutine_pool" = ""; then
4173 if test "$coroutine" = "gthread" -o "$coroutine" = "win32"; then
4179 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4180 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4183 ##########################################
4184 # check if we have open_by_handle_at
4186 open_by_handle_at
=no
4189 #if !defined(AT_EMPTY_PATH)
4190 # error missing definition
4192 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4195 if compile_prog
"" "" ; then
4196 open_by_handle_at
=yes
4199 ########################################
4200 # check if we have linux/magic.h
4204 #include <linux/magic.h>
4209 if compile_prog
"" "" ; then
4213 ########################################
4214 # check whether we can disable warning option with a pragma (this is needed
4215 # to silence warnings in the headers of some versions of external libraries).
4216 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4219 # If we can't selectively disable warning in the code, disable -Werror so that
4220 # the build doesn't fail anyway.
4222 pragma_disable_unused_but_set
=no
4224 #pragma GCC diagnostic push
4225 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4226 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4227 #pragma GCC diagnostic pop
4233 if compile_prog
"-Werror" "" ; then
4234 pragma_diagnostic_available
=yes
4237 ########################################
4238 # check if we have valgrind/valgrind.h
4242 #include <valgrind/valgrind.h>
4247 if compile_prog
"" "" ; then
4251 ########################################
4252 # check if environ is declared
4262 if compile_prog
"" "" ; then
4266 ########################################
4267 # check if cpuid.h is usable.
4273 unsigned a, b, c, d;
4274 int max = __get_cpuid_max(0, 0);
4277 __cpuid(1, a, b, c, d);
4281 __cpuid_count(7, 0, a, b, c, d);
4287 if compile_prog
"" "" ; then
4291 ########################################
4292 # check if __[u]int128_t is usable.
4296 #if defined(__clang_major__) && defined(__clang_minor__)
4297 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4298 # error __int128_t does not work in CLANG before 3.2
4310 if compile_prog
"" "" ; then
4314 ########################################
4315 # check if getauxval is available.
4319 #include <sys/auxv.h>
4321 return getauxval(AT_HWCAP) == 0;
4324 if compile_prog
"" "" ; then
4328 ########################################
4329 # check if ccache is interfering with
4330 # semantic analysis of macros
4334 static const int Z = 1;
4335 #define fn() ({ Z; })
4336 #define TAUT(X) ((X) == Z)
4337 #define PAREN(X, Y) (X == Y)
4339 int main(int argc, char *argv[])
4345 if (PAREN(x, y)) return 0;
4346 if (TAUT(Z)) return 0;
4351 if ! compile_object
"-Werror"; then
4355 ##########################################
4357 # After here, no more $cc or $ld runs
4359 if test "$gcov" = "yes" ; then
4360 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4361 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4362 elif test "$debug" = "no" ; then
4363 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4366 ##########################################
4368 if test "$libnfs" != "no" ; then
4369 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4371 libnfs_libs
=$
($pkg_config --libs libnfs
)
4372 LIBS
="$LIBS $libnfs_libs"
4374 if test "$libnfs" = "yes" ; then
4375 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4381 # Disable zero malloc errors for official releases unless explicitly told to
4383 if test -z "$zero_malloc" ; then
4384 if test "$z_version" = "50" ; then
4391 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4392 if test "$werror" = "yes"; then
4393 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4396 if test "$solaris" = "no" ; then
4397 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4398 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4402 # test if pod2man has --utf8 option
4403 if pod2man
--help |
grep -q utf8
; then
4404 POD2MAN
="pod2man --utf8"
4409 # Use large addresses, ASLR, no-SEH and DEP if available.
4410 if test "$mingw32" = "yes" ; then
4411 if test "$cpu" = i386
; then
4412 LDFLAGS
="-Wl,--large-address-aware $LDFLAGS"
4414 for flag
in --dynamicbase --no-seh --nxcompat; do
4415 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4416 LDFLAGS
="-Wl,$flag $LDFLAGS"
4421 qemu_confdir
=$sysconfdir$confsuffix
4422 qemu_moddir
=$libdir$confsuffix
4423 qemu_datadir
=$datadir$confsuffix
4424 qemu_localedir
="$datadir/locale"
4427 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4428 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4429 tools
="qemu-nbd\$(EXESUF) $tools"
4431 if test "$softmmu" = yes ; then
4432 if test "$virtfs" != no
; then
4433 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4435 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4437 if test "$virtfs" = yes; then
4438 error_exit
"VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4444 if [ "$guest_agent" != "no" ]; then
4445 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4446 tools
="qemu-ga\$(EXESUF) $tools"
4447 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4448 tools
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4451 elif [ "$guest_agent" != yes ]; then
4454 error_exit
"Guest agent is not supported on this platform"
4458 # Mac OS X ships with a broken assembler
4460 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4461 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4462 "$softmmu" = yes ; then
4465 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4466 roms
="$roms spapr-rtas"
4469 if test "$cpu" = "s390x" ; then
4470 roms
="$roms s390-ccw"
4473 # Probe for the need for relocating the user-only binary.
4474 if test "$pie" = "no" ; then
4477 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4478 # ??? Rationale for choosing this address
4479 textseg_addr
=0x60000000
4482 # A 256M aligned address, high in the address space, with enough
4483 # room for the code_gen_buffer above it before the stack.
4484 textseg_addr
=0x60000000
4487 if [ -n "$textseg_addr" ]; then
4489 int main(void) { return 0; }
4491 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4492 if ! compile_prog
"" "$textseg_ldflags"; then
4493 # In case ld does not support -Ttext-segment, edit the default linker
4494 # script via sed to set the .text start addr. This is needed on FreeBSD
4496 $ld --verbose |
sed \
4497 -e '1,/==================================================/d' \
4498 -e '/==================================================/,$d' \
4499 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4500 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4501 textseg_ldflags
="-Wl,-T../config-host.ld"
4506 # prepend pixman and ftd flags after all config tests are done
4507 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4508 libs_softmmu
="$pixman_libs $libs_softmmu"
4510 echo "Install prefix $prefix"
4511 echo "BIOS directory `eval echo $qemu_datadir`"
4512 echo "binary directory `eval echo $bindir`"
4513 echo "library directory `eval echo $libdir`"
4514 echo "module directory `eval echo $qemu_moddir`"
4515 echo "libexec directory `eval echo $libexecdir`"
4516 echo "include directory `eval echo $includedir`"
4517 echo "config directory `eval echo $sysconfdir`"
4518 if test "$mingw32" = "no" ; then
4519 echo "local state directory `eval echo $local_statedir`"
4520 echo "Manual directory `eval echo $mandir`"
4521 echo "ELF interp prefix $interp_prefix"
4523 echo "local state directory queried at runtime"
4524 echo "Windows SDK $win_sdk"
4526 echo "Source path $source_path"
4527 echo "C compiler $cc"
4528 echo "Host C compiler $host_cc"
4529 echo "C++ compiler $cxx"
4530 echo "Objective-C compiler $objcc"
4531 echo "ARFLAGS $ARFLAGS"
4532 echo "CFLAGS $CFLAGS"
4533 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4534 echo "LDFLAGS $LDFLAGS"
4536 echo "install $install"
4537 echo "python $python"
4538 if test "$slirp" = "yes" ; then
4541 echo "module support $modules"
4542 echo "host CPU $cpu"
4543 echo "host big endian $bigendian"
4544 echo "target list $target_list"
4545 echo "tcg debug enabled $debug_tcg"
4546 echo "gprof enabled $gprof"
4547 echo "sparse enabled $sparse"
4548 echo "strip binaries $strip_opt"
4549 echo "profiler $profiler"
4550 echo "static build $static"
4551 if test "$darwin" = "yes" ; then
4552 echo "Cocoa support $cocoa"
4554 echo "pixman $pixman"
4555 echo "SDL support $sdl"
4556 echo "GTK support $gtk"
4557 echo "GNUTLS support $gnutls"
4558 echo "GNUTLS hash $gnutls_hash"
4559 echo "GNUTLS gcrypt $gnutls_gcrypt"
4560 echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
4561 echo "VTE support $vte"
4562 echo "curses support $curses"
4563 echo "curl support $curl"
4564 echo "mingw32 support $mingw32"
4565 echo "Audio drivers $audio_drv_list"
4566 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4567 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4568 echo "VirtFS support $virtfs"
4569 echo "VNC support $vnc"
4570 if test "$vnc" = "yes" ; then
4571 echo "VNC TLS support $vnc_tls"
4572 echo "VNC SASL support $vnc_sasl"
4573 echo "VNC JPEG support $vnc_jpeg"
4574 echo "VNC PNG support $vnc_png"
4576 if test -n "$sparc_cpu"; then
4577 echo "Target Sparc Arch $sparc_cpu"
4579 echo "xen support $xen"
4580 if test "$xen" = "yes" ; then
4581 echo "xen ctrl version $xen_ctrl_version"
4583 echo "brlapi support $brlapi"
4584 echo "bluez support $bluez"
4585 echo "Documentation $docs"
4588 echo "vde support $vde"
4589 echo "netmap support $netmap"
4590 echo "Linux AIO support $linux_aio"
4591 echo "(X)ATTR support $attr"
4592 echo "Install blobs $blobs"
4593 echo "KVM support $kvm"
4594 echo "RDMA support $rdma"
4595 echo "TCG interpreter $tcg_interpreter"
4596 echo "fdt support $fdt"
4597 echo "preadv support $preadv"
4598 echo "fdatasync $fdatasync"
4599 echo "madvise $madvise"
4600 echo "posix_madvise $posix_madvise"
4601 echo "sigev_thread_id $sigev_thread_id"
4602 echo "uuid support $uuid"
4603 echo "libcap-ng support $cap_ng"
4604 echo "vhost-net support $vhost_net"
4605 echo "vhost-scsi support $vhost_scsi"
4606 echo "Trace backends $trace_backends"
4607 if test "$trace_backend" = "simple"; then
4608 echo "Trace output file $trace_file-<pid>"
4610 if test "$spice" = "yes"; then
4611 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4613 echo "spice support $spice"
4615 echo "rbd support $rbd"
4616 echo "xfsctl support $xfs"
4617 echo "nss used $smartcard_nss"
4618 echo "libusb $libusb"
4619 echo "usb net redir $usb_redir"
4620 echo "OpenGL support $opengl"
4621 echo "libiscsi support $libiscsi"
4622 echo "libnfs support $libnfs"
4623 echo "build guest agent $guest_agent"
4624 echo "QGA VSS support $guest_agent_with_vss"
4625 echo "QGA w32 disk info $guest_agent_ntddscsi"
4626 echo "seccomp support $seccomp"
4627 echo "coroutine backend $coroutine"
4628 echo "coroutine pool $coroutine_pool"
4629 echo "GlusterFS support $glusterfs"
4630 echo "Archipelago support $archipelago"
4631 echo "gcov $gcov_tool"
4632 echo "gcov enabled $gcov"
4633 echo "TPM support $tpm"
4634 echo "libssh2 support $libssh2"
4635 echo "TPM passthrough $tpm_passthrough"
4636 echo "QOM debugging $qom_cast_debug"
4638 echo "lzo support $lzo"
4639 echo "snappy support $snappy"
4640 echo "bzip2 support $bzip2"
4641 echo "NUMA host support $numa"
4642 echo "tcmalloc support $tcmalloc"
4644 if test "$sdl_too_old" = "yes"; then
4645 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4648 config_host_mak
="config-host.mak"
4650 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4652 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4653 echo >> $config_host_mak
4655 echo all
: >> $config_host_mak
4656 echo "prefix=$prefix" >> $config_host_mak
4657 echo "bindir=$bindir" >> $config_host_mak
4658 echo "libdir=$libdir" >> $config_host_mak
4659 echo "libexecdir=$libexecdir" >> $config_host_mak
4660 echo "includedir=$includedir" >> $config_host_mak
4661 echo "mandir=$mandir" >> $config_host_mak
4662 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4663 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4664 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4665 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4666 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4667 if test "$mingw32" = "no" ; then
4668 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4670 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4671 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4672 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4673 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4674 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4676 echo "ARCH=$ARCH" >> $config_host_mak
4678 if test "$debug_tcg" = "yes" ; then
4679 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4681 if test "$strip_opt" = "yes" ; then
4682 echo "STRIP=${strip}" >> $config_host_mak
4684 if test "$bigendian" = "yes" ; then
4685 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4687 if test "$mingw32" = "yes" ; then
4688 echo "CONFIG_WIN32=y" >> $config_host_mak
4689 echo "CONFIG_INSTALLER=y" >> $config_host_mak
4690 rc_version
=`cat "$source_path/VERSION"`
4691 version_major
=${rc_version%%.*}
4692 rc_version
=${rc_version#*.}
4693 version_minor
=${rc_version%%.*}
4694 rc_version
=${rc_version#*.}
4695 version_subminor
=${rc_version%%.*}
4697 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4698 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4699 if test "$guest_agent_with_vss" = "yes" ; then
4700 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4701 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4703 if test "$guest_agent_ntddscsi" = "yes" ; then
4704 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4706 if test "$guest_agent_msi" != "no"; then
4707 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4708 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4709 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4710 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4711 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4712 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4713 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4716 echo "CONFIG_POSIX=y" >> $config_host_mak
4719 if test "$linux" = "yes" ; then
4720 echo "CONFIG_LINUX=y" >> $config_host_mak
4723 if test "$darwin" = "yes" ; then
4724 echo "CONFIG_DARWIN=y" >> $config_host_mak
4727 if test "$aix" = "yes" ; then
4728 echo "CONFIG_AIX=y" >> $config_host_mak
4731 if test "$solaris" = "yes" ; then
4732 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4733 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4734 if test "$needs_libsunmath" = "yes" ; then
4735 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4738 if test "$haiku" = "yes" ; then
4739 echo "CONFIG_HAIKU=y" >> $config_host_mak
4741 if test "$static" = "yes" ; then
4742 echo "CONFIG_STATIC=y" >> $config_host_mak
4744 if test "$profiler" = "yes" ; then
4745 echo "CONFIG_PROFILER=y" >> $config_host_mak
4747 if test "$slirp" = "yes" ; then
4748 echo "CONFIG_SLIRP=y" >> $config_host_mak
4749 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4751 if test "$vde" = "yes" ; then
4752 echo "CONFIG_VDE=y" >> $config_host_mak
4754 if test "$netmap" = "yes" ; then
4755 echo "CONFIG_NETMAP=y" >> $config_host_mak
4757 if test "$l2tpv3" = "yes" ; then
4758 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4760 if test "$cap_ng" = "yes" ; then
4761 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4763 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4764 for drv
in $audio_drv_list; do
4765 def
=CONFIG_
`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4766 echo "$def=y" >> $config_host_mak
4768 if test "$audio_pt_int" = "yes" ; then
4769 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4771 if test "$audio_win_int" = "yes" ; then
4772 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4774 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4775 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4776 if test "$vnc" = "yes" ; then
4777 echo "CONFIG_VNC=y" >> $config_host_mak
4779 if test "$vnc_tls" = "yes" ; then
4780 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4782 if test "$vnc_sasl" = "yes" ; then
4783 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4785 if test "$vnc_jpeg" = "yes" ; then
4786 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4788 if test "$vnc_png" = "yes" ; then
4789 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4791 if test "$fnmatch" = "yes" ; then
4792 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4794 if test "$uuid" = "yes" ; then
4795 echo "CONFIG_UUID=y" >> $config_host_mak
4797 if test "$xfs" = "yes" ; then
4798 echo "CONFIG_XFS=y" >> $config_host_mak
4800 qemu_version
=`head "$source_path/VERSION"`
4801 echo "VERSION=$qemu_version" >>$config_host_mak
4802 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4803 echo "SRC_PATH=$source_path" >> $config_host_mak
4804 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4805 if [ "$docs" = "yes" ] ; then
4806 echo "BUILD_DOCS=yes" >> $config_host_mak
4808 if [ "$want_tools" = "yes" ] ; then
4809 echo "BUILD_TOOLS=yes" >> $config_host_mak
4811 if test "$modules" = "yes"; then
4812 # $shacmd can generate a hash started with digit, which the compiler doesn't
4813 # like as an symbol. So prefix it with an underscore
4814 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4815 echo "CONFIG_MODULES=y" >> $config_host_mak
4817 if test "$sdl" = "yes" ; then
4818 echo "CONFIG_SDL=y" >> $config_host_mak
4819 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4820 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4822 if test "$cocoa" = "yes" ; then
4823 echo "CONFIG_COCOA=y" >> $config_host_mak
4825 if test "$curses" = "yes" ; then
4826 echo "CONFIG_CURSES=y" >> $config_host_mak
4828 if test "$utimens" = "yes" ; then
4829 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4831 if test "$pipe2" = "yes" ; then
4832 echo "CONFIG_PIPE2=y" >> $config_host_mak
4834 if test "$accept4" = "yes" ; then
4835 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4837 if test "$splice" = "yes" ; then
4838 echo "CONFIG_SPLICE=y" >> $config_host_mak
4840 if test "$eventfd" = "yes" ; then
4841 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4843 if test "$fallocate" = "yes" ; then
4844 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4846 if test "$fallocate_punch_hole" = "yes" ; then
4847 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4849 if test "$fallocate_zero_range" = "yes" ; then
4850 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4852 if test "$posix_fallocate" = "yes" ; then
4853 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4855 if test "$sync_file_range" = "yes" ; then
4856 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4858 if test "$fiemap" = "yes" ; then
4859 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4861 if test "$dup3" = "yes" ; then
4862 echo "CONFIG_DUP3=y" >> $config_host_mak
4864 if test "$ppoll" = "yes" ; then
4865 echo "CONFIG_PPOLL=y" >> $config_host_mak
4867 if test "$prctl_pr_set_timerslack" = "yes" ; then
4868 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4870 if test "$epoll" = "yes" ; then
4871 echo "CONFIG_EPOLL=y" >> $config_host_mak
4873 if test "$epoll_create1" = "yes" ; then
4874 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4876 if test "$epoll_pwait" = "yes" ; then
4877 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4879 if test "$sendfile" = "yes" ; then
4880 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4882 if test "$timerfd" = "yes" ; then
4883 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4885 if test "$setns" = "yes" ; then
4886 echo "CONFIG_SETNS=y" >> $config_host_mak
4888 if test "$inotify" = "yes" ; then
4889 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4891 if test "$inotify1" = "yes" ; then
4892 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4894 if test "$byteswap_h" = "yes" ; then
4895 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4897 if test "$bswap_h" = "yes" ; then
4898 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4900 if test "$curl" = "yes" ; then
4901 echo "CONFIG_CURL=m" >> $config_host_mak
4902 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4903 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4905 if test "$brlapi" = "yes" ; then
4906 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4908 if test "$bluez" = "yes" ; then
4909 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4910 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4912 if test "$glib_subprocess" = "yes" ; then
4913 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4915 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4916 if test "$gtk" = "yes" ; then
4917 echo "CONFIG_GTK=y" >> $config_host_mak
4918 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4919 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4921 if test "$gnutls" = "yes" ; then
4922 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4924 if test "$gnutls_hash" = "yes" ; then
4925 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4927 if test "$gnutls_gcrypt" = "yes" ; then
4928 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4930 if test "$gnutls_nettle" = "yes" ; then
4931 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
4932 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
4934 if test "$vte" = "yes" ; then
4935 echo "CONFIG_VTE=y" >> $config_host_mak
4936 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4938 if test "$xen" = "yes" ; then
4939 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4940 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4942 if test "$linux_aio" = "yes" ; then
4943 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4945 if test "$attr" = "yes" ; then
4946 echo "CONFIG_ATTR=y" >> $config_host_mak
4948 if test "$libattr" = "yes" ; then
4949 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4951 if test "$virtfs" = "yes" ; then
4952 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4954 if test "$vhost_scsi" = "yes" ; then
4955 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4957 if test "$vhost_net" = "yes" ; then
4958 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4960 if test "$blobs" = "yes" ; then
4961 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4963 if test "$iovec" = "yes" ; then
4964 echo "CONFIG_IOVEC=y" >> $config_host_mak
4966 if test "$preadv" = "yes" ; then
4967 echo "CONFIG_PREADV=y" >> $config_host_mak
4969 if test "$fdt" = "yes" ; then
4970 echo "CONFIG_FDT=y" >> $config_host_mak
4972 if test "$signalfd" = "yes" ; then
4973 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4975 if test "$tcg_interpreter" = "yes" ; then
4976 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4978 if test "$fdatasync" = "yes" ; then
4979 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4981 if test "$madvise" = "yes" ; then
4982 echo "CONFIG_MADVISE=y" >> $config_host_mak
4984 if test "$posix_madvise" = "yes" ; then
4985 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4987 if test "$sigev_thread_id" = "yes" ; then
4988 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4991 if test "$spice" = "yes" ; then
4992 echo "CONFIG_SPICE=y" >> $config_host_mak
4995 if test "$smartcard_nss" = "yes" ; then
4996 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4997 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4998 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
5001 if test "$libusb" = "yes" ; then
5002 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5005 if test "$usb_redir" = "yes" ; then
5006 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5009 if test "$opengl" = "yes" ; then
5010 echo "CONFIG_OPENGL=y" >> $config_host_mak
5011 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5012 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5015 if test "$lzo" = "yes" ; then
5016 echo "CONFIG_LZO=y" >> $config_host_mak
5019 if test "$snappy" = "yes" ; then
5020 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5023 if test "$bzip2" = "yes" ; then
5024 echo "CONFIG_BZIP2=y" >> $config_host_mak
5025 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5028 if test "$libiscsi" = "yes" ; then
5029 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5030 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5031 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5034 if test "$libnfs" = "yes" ; then
5035 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5038 if test "$seccomp" = "yes"; then
5039 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5042 # XXX: suppress that
5043 if [ "$bsd" = "yes" ] ; then
5044 echo "CONFIG_BSD=y" >> $config_host_mak
5047 if test "$zero_malloc" = "yes" ; then
5048 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5050 if test "$qom_cast_debug" = "yes" ; then
5051 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5053 if test "$rbd" = "yes" ; then
5054 echo "CONFIG_RBD=m" >> $config_host_mak
5055 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5056 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5059 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5060 if test "$coroutine_pool" = "yes" ; then
5061 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5063 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5066 if test "$open_by_handle_at" = "yes" ; then
5067 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5070 if test "$linux_magic_h" = "yes" ; then
5071 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5074 if test "$pragma_diagnostic_available" = "yes" ; then
5075 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5078 if test "$valgrind_h" = "yes" ; then
5079 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5082 if test "$has_environ" = "yes" ; then
5083 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5086 if test "$cpuid_h" = "yes" ; then
5087 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5090 if test "$int128" = "yes" ; then
5091 echo "CONFIG_INT128=y" >> $config_host_mak
5094 if test "$getauxval" = "yes" ; then
5095 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5098 if test "$glusterfs" = "yes" ; then
5099 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5100 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5101 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5104 if test "$glusterfs_discard" = "yes" ; then
5105 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5108 if test "$glusterfs_zerofill" = "yes" ; then
5109 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5112 if test "$archipelago" = "yes" ; then
5113 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5114 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5117 if test "$libssh2" = "yes" ; then
5118 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5119 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5120 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5123 if test "$vhdx" = "yes" ; then
5124 echo "CONFIG_VHDX=y" >> $config_host_mak
5128 if test "$libusb" = "yes"; then
5129 echo "HOST_USB=libusb legacy" >> $config_host_mak
5131 echo "HOST_USB=stub" >> $config_host_mak
5134 # TPM passthrough support?
5135 if test "$tpm" = "yes"; then
5136 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5137 if test "$tpm_passthrough" = "yes"; then
5138 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5142 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5143 if have_backend
"nop"; then
5144 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5146 if have_backend
"simple"; then
5147 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5148 # Set the appropriate trace file.
5149 trace_file
="\"$trace_file-\" FMT_pid"
5151 if have_backend
"stderr"; then
5152 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5154 if have_backend
"ust"; then
5155 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5157 if have_backend
"dtrace"; then
5158 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5159 if test "$trace_backend_stap" = "yes" ; then
5160 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5163 if have_backend
"ftrace"; then
5164 if test "$linux" = "yes" ; then
5165 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5167 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5170 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5172 if test "$rdma" = "yes" ; then
5173 echo "CONFIG_RDMA=y" >> $config_host_mak
5176 # Hold two types of flag:
5177 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5178 # a thread we have a handle to
5179 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5181 if test "$pthread_setname_np" = "yes" ; then
5182 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5183 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5186 if test "$tcg_interpreter" = "yes"; then
5187 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5188 elif test "$ARCH" = "sparc64" ; then
5189 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5190 elif test "$ARCH" = "s390x" ; then
5191 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5192 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5193 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5194 elif test "$ARCH" = "ppc64" ; then
5195 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5197 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5199 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5201 echo "TOOLS=$tools" >> $config_host_mak
5202 echo "ROMS=$roms" >> $config_host_mak
5203 echo "MAKE=$make" >> $config_host_mak
5204 echo "INSTALL=$install" >> $config_host_mak
5205 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5206 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5207 if test -n "$libtool"; then
5208 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5209 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5211 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5212 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5214 echo "PYTHON=$python" >> $config_host_mak
5215 echo "CC=$cc" >> $config_host_mak
5216 if $iasl -h > /dev
/null
2>&1; then
5217 echo "IASL=$iasl" >> $config_host_mak
5219 echo "CC_I386=$cc_i386" >> $config_host_mak
5220 echo "HOST_CC=$host_cc" >> $config_host_mak
5221 echo "CXX=$cxx" >> $config_host_mak
5222 echo "OBJCC=$objcc" >> $config_host_mak
5223 echo "AR=$ar" >> $config_host_mak
5224 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5225 echo "AS=$as" >> $config_host_mak
5226 echo "CPP=$cpp" >> $config_host_mak
5227 echo "OBJCOPY=$objcopy" >> $config_host_mak
5228 echo "LD=$ld" >> $config_host_mak
5229 echo "NM=$nm" >> $config_host_mak
5230 echo "WINDRES=$windres" >> $config_host_mak
5231 echo "LIBTOOL=$libtool" >> $config_host_mak
5232 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5233 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5234 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5235 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5236 if test "$sparse" = "yes" ; then
5237 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5238 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5239 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5240 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5241 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5243 if test "$cross_prefix" != ""; then
5244 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5246 echo "AUTOCONF_HOST := " >> $config_host_mak
5248 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5249 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5250 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5251 echo "LIBS+=$LIBS" >> $config_host_mak
5252 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5253 echo "EXESUF=$EXESUF" >> $config_host_mak
5254 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5255 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5256 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5257 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5258 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5259 if test "$gcov" = "yes" ; then
5260 echo "CONFIG_GCOV=y" >> $config_host_mak
5261 echo "GCOV=$gcov_tool" >> $config_host_mak
5264 # use included Linux headers
5265 if test "$linux" = "yes" ; then
5266 mkdir
-p linux-headers
5284 # For most CPUs the kernel architecture name and QEMU CPU name match.
5288 # For non-KVM architectures we will not have asm headers
5289 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5290 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5294 for target
in $target_list; do
5295 target_dir
="$target"
5296 config_target_mak
=$target_dir/config-target.mak
5297 target_name
=`echo $target | cut -d '-' -f 1`
5298 target_bigendian
="no"
5300 case "$target_name" in
5301 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5302 target_bigendian
=yes
5306 target_user_only
="no"
5307 target_linux_user
="no"
5308 target_bsd_user
="no"
5310 ${target_name}-softmmu)
5311 target_softmmu
="yes"
5313 ${target_name}-linux-user)
5314 if test "$linux" != "yes" ; then
5315 error_exit
"Target '$target' is only available on a Linux host"
5317 target_user_only
="yes"
5318 target_linux_user
="yes"
5320 ${target_name}-bsd-user)
5321 if test "$bsd" != "yes" ; then
5322 error_exit
"Target '$target' is only available on a BSD host"
5324 target_user_only
="yes"
5325 target_bsd_user
="yes"
5328 error_exit
"Target '$target' not recognised"
5333 mkdir
-p $target_dir
5334 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5337 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5340 TARGET_ARCH
="$target_name"
5344 case "$target_name" in
5348 TARGET_BASE_ARCH
=i386
5355 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5358 TARGET_BASE_ARCH
=arm
5360 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5368 gdb_xml_files
="cf-core.xml cf-fp.xml"
5370 microblaze|microblazeel
)
5371 TARGET_ARCH
=microblaze
5376 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5380 TARGET_BASE_ARCH
=mips
5381 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5382 echo "TARGET_ABI32=y" >> $config_target_mak
5386 TARGET_BASE_ARCH
=mips
5387 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5392 TARGET_ARCH
=openrisc
5393 TARGET_BASE_ARCH
=openrisc
5396 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5399 TARGET_BASE_ARCH
=ppc
5401 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5404 TARGET_BASE_ARCH
=ppc
5406 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5410 TARGET_BASE_ARCH
=ppc
5412 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5416 TARGET_BASE_ARCH
=ppc
5418 echo "TARGET_ABI32=y" >> $config_target_mak
5419 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5428 TARGET_BASE_ARCH
=sparc
5432 TARGET_BASE_ARCH
=sparc
5433 TARGET_ABI_DIR
=sparc
5434 echo "TARGET_ABI32=y" >> $config_target_mak
5437 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5447 error_exit
"Unsupported target CPU"
5450 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5451 if [ "$TARGET_BASE_ARCH" = "" ]; then
5452 TARGET_BASE_ARCH
=$TARGET_ARCH
5455 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5458 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5461 target_arch_name
="`upper $TARGET_ARCH`"
5462 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5463 echo "TARGET_NAME=$target_name" >> $config_target_mak
5464 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5465 if [ "$TARGET_ABI_DIR" = "" ]; then
5466 TARGET_ABI_DIR
=$TARGET_ARCH
5468 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5469 if [ "$HOST_VARIANT_DIR" != "" ]; then
5470 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5472 case "$target_name" in
5474 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5475 echo "CONFIG_XEN=y" >> $config_target_mak
5476 if test "$xen_pci_passthrough" = yes; then
5477 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5483 case "$target_name" in
5484 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5485 # Make sure the target and host cpus are compatible
5486 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5487 \
( "$target_name" = "$cpu" -o \
5488 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5489 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5490 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5491 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5492 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5493 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5494 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5495 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5496 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5497 echo "CONFIG_KVM=y" >> $config_target_mak
5498 if test "$vhost_net" = "yes" ; then
5499 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5503 if test "$target_bigendian" = "yes" ; then
5504 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5506 if test "$target_softmmu" = "yes" ; then
5507 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5509 if test "$target_user_only" = "yes" ; then
5510 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5511 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5513 if test "$target_linux_user" = "yes" ; then
5514 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5517 if test ! -z "$gdb_xml_files" ; then
5518 for x
in $gdb_xml_files; do
5519 list
="$list $source_path/gdb-xml/$x"
5521 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5524 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5525 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5527 if test "$target_bsd_user" = "yes" ; then
5528 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5531 # generate QEMU_CFLAGS/LDFLAGS for targets
5536 for i
in $ARCH $TARGET_BASE_ARCH ; do
5539 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5540 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5543 if test -n "${cxx}"; then
5544 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5545 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5549 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5550 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5551 if test -n "${cxx}"; then
5552 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5553 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5557 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5558 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5561 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5562 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5565 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5566 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5569 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5570 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5573 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5574 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5577 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5578 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5581 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5582 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5585 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5586 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5589 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5590 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5593 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5594 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5597 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5598 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5601 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5602 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5605 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5606 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5609 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5610 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5613 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5614 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5618 if test "$tcg_interpreter" = "yes" ; then
5619 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5620 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5625 # Ensure there's only a single GP
5626 cflags
="-msmall-data $cflags"
5630 if test "$gprof" = "yes" ; then
5631 echo "TARGET_GPROF=yes" >> $config_target_mak
5632 if test "$target_linux_user" = "yes" ; then
5634 ldflags
="-p $ldflags"
5636 if test "$target_softmmu" = "yes" ; then
5637 ldflags
="-p $ldflags"
5638 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5642 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5643 ldflags
="$ldflags $textseg_ldflags"
5646 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5647 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5649 done # for target in $targets
5651 if [ "$pixman" = "internal" ]; then
5652 echo "config-host.h: subdir-pixman" >> $config_host_mak
5655 if [ "$dtc_internal" = "yes" ]; then
5656 echo "config-host.h: subdir-dtc" >> $config_host_mak
5659 if test "$numa" = "yes"; then
5660 echo "CONFIG_NUMA=y" >> $config_host_mak
5663 if test "$ccache_cpp2" = "yes"; then
5664 echo "export CCACHE_CPP2=y" >> $config_host_mak
5667 # build tree in object directory in case the source is not in the current directory
5668 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5670 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5671 DIRS
="$DIRS roms/seabios roms/vgabios"
5672 DIRS
="$DIRS qapi-generated"
5673 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
5674 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5675 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5676 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5677 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
5678 FILES
="$FILES pc-bios/s390-ccw/Makefile"
5679 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5680 FILES
="$FILES pc-bios/qemu-icon.bmp"
5682 $source_path/pc-bios
/*.bin \
5683 $source_path/pc-bios
/*.aml \
5684 $source_path/pc-bios
/*.rom \
5685 $source_path/pc-bios
/*.dtb \
5686 $source_path/pc-bios
/*.img \
5687 $source_path/pc-bios
/openbios-
* \
5688 $source_path/pc-bios
/u-boot.
* \
5689 $source_path/pc-bios
/palcode-
*
5691 FILES
="$FILES pc-bios/`basename $bios_file`"
5693 for test_file
in `find $source_path/tests/acpi-test-data -type f`
5695 FILES
="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5698 for f
in $FILES ; do
5699 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5700 symlink
"$source_path/$f" "$f"
5704 # temporary config to build submodules
5705 for rom
in seabios vgabios
; do
5706 config_mak
=roms
/$rom/config.mak
5707 echo "# Automatically generated by configure - do not modify" > $config_mak
5708 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5709 echo "AS=$as" >> $config_mak
5710 echo "CC=$cc" >> $config_mak
5711 echo "BCC=bcc" >> $config_mak
5712 echo "CPP=$cpp" >> $config_mak
5713 echo "OBJCOPY=objcopy" >> $config_mak
5714 echo "IASL=$iasl" >> $config_mak
5715 echo "LD=$ld" >> $config_mak
5718 # set up qemu-iotests in this build directory
5719 iotests_common_env
="tests/qemu-iotests/common.env"
5720 iotests_check
="tests/qemu-iotests/check"
5722 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5723 echo >> "$iotests_common_env"
5724 echo "export PYTHON='$python'" >> "$iotests_common_env"
5726 if [ ! -e "$iotests_check" ]; then
5727 symlink
"$source_path/$iotests_check" "$iotests_check"
5730 # Save the configure command line for later reuse.
5731 cat <<EOD >config.status
5733 # Generated by configure.
5734 # Run this file to recreate the current configuration.
5735 # Compiler output produced by configure, useful for debugging
5736 # configure, is in config.log if it exists.
5738 printf "exec" >>config.status
5739 printf " '%s'" "$0" "$@" >>config.status
5740 echo >>config.status
5741 chmod +x config.status