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
107 do_cc
$QEMU_CFLAGS -c -o $TMPO $TMPC
113 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
119 # Run the compiler, capturing its output to the log.
120 echo $libtool $mode --tag=CC
$cc "$@" >> config.log
121 $libtool $mode --tag=CC
$cc "$@" >> config.log
2>&1 ||
return $?
122 # Test passed. If this is an --enable-werror build, rerun
123 # the test with -Werror and bail out if it fails. This
124 # makes warning-generating-errors in configure test code
125 # obvious to developers.
126 if test "$werror" != "yes"; then
129 # Don't bother rerunning the compile if we were already using -Werror
135 echo $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
136 $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
2>&1 && return $?
137 error_exit
"configure test passed without -Werror but failed with -Werror." \
138 "This is probably a bug in the configure script. The failing command" \
139 "will be at the bottom of config.log." \
140 "You can run configure with --disable-werror to bypass this check."
144 do_libtool
--mode=compile
$QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC ||
return $?
145 do_libtool
--mode=link
$LDFLAGS -o $TMPA $TMPL -rpath /usr
/local
/lib
148 # symbolically link $1 to $2. Portable version of "ln -sf".
151 mkdir
-p "$(dirname "$2")"
155 # check whether a command is available to this shell (may be either an
156 # executable or a builtin)
158 type "$1" >/dev
/null
2>&1
161 # search for an executable in PATH
167 # pathname has a dir component?
168 if [ "${local_command#*/}" != "$local_command" ]; then
169 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
170 echo "$local_command"
174 if [ -z "$local_command" ]; then
179 for local_dir
in $PATH; do
180 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
181 echo "$local_dir/$local_command"
182 IFS
="${local_ifs:-$(printf ' \t\n')}"
187 IFS
="${local_ifs:-$(printf ' \t\n')}"
192 echo "$trace_backends" |
grep "$1" >/dev
/null
196 source_path
=`dirname "$0"`
199 interp_prefix
="/usr/gnemul/qemu-%M"
203 block_drv_rw_whitelist
=""
204 block_drv_ro_whitelist
=""
210 cc_i386
=i386-pc-linux-gnu-gcc
215 # Don't accept a target_list environment variable.
218 # Default value for a variable defining feature "foo".
219 # * foo="no" feature will only be used if --enable-foo arg is given
220 # * foo="" feature will be searched for, and if found, will be used
221 # unless --disable-foo is given
222 # * foo="yes" this value will only be set by --enable-foo flag.
223 # feature will searched for,
224 # if not found, configure exits with error
226 # Always add --enable-foo and --disable-foo command line args.
227 # Distributions want to ensure that several features are compiled in, and it
228 # is impossible without a --enable-foo that exits if a feature is not found.
252 xen_pci_passthrough
=""
274 LDFLAGS_SHARED
="-shared"
277 mandir
="\${prefix}/share/man"
278 datadir
="\${prefix}/share"
279 qemu_docdir
="\${prefix}/share/doc/qemu"
280 bindir
="\${prefix}/bin"
281 libdir
="\${prefix}/lib"
282 libexecdir
="\${prefix}/libexec"
283 includedir
="\${prefix}/include"
284 sysconfdir
="\${prefix}/etc"
285 local_statedir
="\${prefix}/var"
320 guest_agent_with_vss
="no"
330 glusterfs_discard
="no"
331 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
="$optarg $QEMU_CFLAGS"
358 EXTRA_CFLAGS
="$optarg"
360 --extra-ldflags=*) LDFLAGS
="$optarg $LDFLAGS"
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; }
452 if check_define __linux__
; then
454 elif check_define _WIN32
; then
456 elif check_define __OpenBSD__
; then
458 elif check_define __sun__
; then
460 elif check_define __HAIKU__
; then
466 # Some host OSes need non-standard checks for which CPU to use.
467 # Note that these checks are broken for cross-compilation: if you're
468 # cross-compiling to one of these OSes then you'll need to specify
469 # the correct CPU with the --cpu option.
472 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
473 # run 64-bit userspace code.
474 # If the user didn't specify a CPU explicitly and the kernel says this is
475 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
476 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
481 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
482 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
487 if test ! -z "$cpu" ; then
488 # command line argument
490 elif check_define __i386__
; then
492 elif check_define __x86_64__
; then
493 if check_define __ILP32__
; then
498 elif check_define __sparc__
; then
499 if check_define __arch64__
; then
504 elif check_define _ARCH_PPC
; then
505 if check_define _ARCH_PPC64
; then
510 elif check_define __mips__
; then
511 if check_define __mips64
; then
516 elif check_define __ia64__
; then
518 elif check_define __s390__
; then
519 if check_define __s390x__
; then
524 elif check_define __arm__
; then
526 elif check_define __aarch64__
; then
528 elif check_define __hppa__
; then
535 # Normalise host CPU name and set ARCH.
536 # Note that this case should only have supported host CPUs, not guests.
538 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
541 i386|i486|i586|i686|i86pc|BePC
)
555 if check_define __MIPSEL__
; then
566 # This will result in either an error or falling back to TCI later
570 if test -z "$ARCH"; then
576 # host *BSD for user mode
582 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
583 audio_possible_drivers
="winwave sdl"
584 audio_drv_list
="winwave"
588 audio_possible_drivers
="winwave dsound sdl fmod"
589 audio_drv_list
="winwave"
594 audio_possible_drivers
="oss sdl esd pa"
600 audio_possible_drivers
="oss sdl esd pa"
601 # needed for kinfo_getvmmap(3) in libutil.h
603 netmap
="" # enable netmap autodetect
604 HOST_VARIANT_DIR
="freebsd"
610 audio_possible_drivers
="oss sdl esd pa"
611 HOST_VARIANT_DIR
="dragonfly"
617 audio_possible_drivers
="oss sdl esd"
619 HOST_VARIANT_DIR
="netbsd"
625 audio_possible_drivers
="sdl esd"
626 HOST_VARIANT_DIR
="openbsd"
631 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
632 if [ "$cpu" = "x86_64" ] ; then
633 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
634 LDFLAGS
="-arch x86_64 $LDFLAGS"
637 audio_drv_list
="coreaudio"
638 audio_possible_drivers
="coreaudio sdl fmod"
639 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
640 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
641 # Disable attempts to use ObjectiveC features in os/object.h since they
642 # won't work when we're compiling with gcc as a C compiler.
643 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
644 HOST_VARIANT_DIR
="darwin"
649 install="${INSTALL-ginstall}"
651 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
652 needs_libsunmath
="no"
653 solarisrev
=`uname -r | cut -f2 -d.`
654 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
655 if test "$solarisrev" -le 9 ; then
656 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
657 needs_libsunmath
="yes"
658 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
659 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
660 LIBS
="-lsunmath $LIBS"
662 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
663 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
664 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
665 "Studio 11 can be downloaded from www.sun.com."
669 if test -f /usr
/include
/sys
/soundcard.h
; then
672 audio_possible_drivers
="oss sdl"
673 # needed for CMSG_ macros in sys/socket.h
674 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
675 # needed for TIOCWIN* defines in termios.h
676 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
677 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
678 solarisnetlibs
="-lsocket -lnsl -lresolv"
679 LIBS
="$solarisnetlibs $LIBS"
680 libs_qga
="$solarisnetlibs $libs_qga"
688 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
689 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
693 audio_possible_drivers
="oss alsa sdl esd pa"
699 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
700 audio_possible_drivers
="$audio_possible_drivers fmod"
702 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
706 if [ "$bsd" = "yes" ] ; then
707 if [ "$darwin" != "yes" ] ; then
712 : ${make=${MAKE-make}}
713 : ${install=${INSTALL-install}}
714 : ${python=${PYTHON-python}}
715 : ${smbd=${SMBD-/usr/sbin/smbd}}
717 # Default objcc to clang if available, otherwise use CC
724 if test "$mingw32" = "yes" ; then
727 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
728 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
729 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
730 # MinGW-w64 needs _POSIX defined.
731 QEMU_CFLAGS
="-D_POSIX=1 $QEMU_CFLAGS"
732 # MinGW needs -mthreads for TLS and macro _MT.
733 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
734 QEMU_CFLAGS
="-I\$(SRC_PATH)/hosts/w32/include $QEMU_CFLAGS"
735 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
737 int main(void) { return 0; }
739 if compile_prog
"" "-liberty" ; then
740 LIBS
="-liberty $LIBS"
742 prefix
="c:/Program Files/QEMU"
745 qemu_docdir
="\${prefix}"
747 sysconfdir
="\${prefix}"
750 libs_qga
="-lws2_32 -lwinmm -lpowrprof $libs_qga"
756 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
758 --help|
-h) show_help
=yes
760 --version|
-V) exec cat $source_path/VERSION
762 --prefix=*) prefix
="$optarg"
764 --interp-prefix=*) interp_prefix
="$optarg"
772 --host-cc=*) host_cc
="$optarg"
776 --iasl=*) iasl
="$optarg"
778 --objcc=*) objcc
="$optarg"
780 --make=*) make="$optarg"
782 --install=*) install="$optarg"
784 --python=*) python
="$optarg"
786 --gcov=*) gcov_tool
="$optarg"
788 --smbd=*) smbd
="$optarg"
796 --disable-debug-info)
803 --target-list=*) target_list
="$optarg"
805 --enable-trace-backends=*) trace_backends
="$optarg"
807 # XXX: backwards compatibility
808 --enable-trace-backend=*) trace_backends
="$optarg"
810 --with-trace-file=*) trace_file
="$optarg"
812 --enable-gprof) gprof
="yes"
814 --enable-gcov) gcov
="yes"
818 LDFLAGS
="-static $LDFLAGS"
819 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
821 --mandir=*) mandir
="$optarg"
823 --bindir=*) bindir
="$optarg"
825 --libdir=*) libdir
="$optarg"
827 --libexecdir=*) libexecdir
="$optarg"
829 --includedir=*) includedir
="$optarg"
831 --datadir=*) datadir
="$optarg"
833 --with-confsuffix=*) confsuffix
="$optarg"
835 --docdir=*) qemu_docdir
="$optarg"
837 --sysconfdir=*) sysconfdir
="$optarg"
839 --localstatedir=*) local_statedir
="$optarg"
841 --sbindir=*|
--sharedstatedir=*|\
842 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
843 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
844 # These switches are silently ignored, for compatibility with
845 # autoconf-generated configure scripts. This allows QEMU's
846 # configure to be used by RPM and similar macros that set
847 # lots of directory switches by default.
849 --with-system-pixman) pixman
="system"
851 --without-system-pixman) pixman
="internal"
853 --without-pixman) pixman
="none"
855 --disable-sdl) sdl
="no"
857 --enable-sdl) sdl
="yes"
859 --with-sdlabi=*) sdlabi
="$optarg"
861 --disable-qom-cast-debug) qom_cast_debug
="no"
863 --enable-qom-cast-debug) qom_cast_debug
="yes"
865 --disable-virtfs) virtfs
="no"
867 --enable-virtfs) virtfs
="yes"
869 --disable-vnc) vnc
="no"
871 --enable-vnc) vnc
="yes"
873 --fmod-lib=*) fmod_lib
="$optarg"
875 --fmod-inc=*) fmod_inc
="$optarg"
877 --oss-lib=*) oss_lib
="$optarg"
879 --audio-drv-list=*) audio_drv_list
="$optarg"
881 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
883 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
885 --enable-debug-tcg) debug_tcg
="yes"
887 --disable-debug-tcg) debug_tcg
="no"
890 # Enable debugging options that aren't excessively noisy
895 --enable-sparse) sparse
="yes"
897 --disable-sparse) sparse
="no"
899 --disable-strip) strip_opt
="no"
901 --disable-vnc-tls) vnc_tls
="no"
903 --enable-vnc-tls) vnc_tls
="yes"
905 --disable-vnc-sasl) vnc_sasl
="no"
907 --enable-vnc-sasl) vnc_sasl
="yes"
909 --disable-vnc-jpeg) vnc_jpeg
="no"
911 --enable-vnc-jpeg) vnc_jpeg
="yes"
913 --disable-vnc-png) vnc_png
="no"
915 --enable-vnc-png) vnc_png
="yes"
917 --disable-vnc-ws) vnc_ws
="no"
919 --enable-vnc-ws) vnc_ws
="yes"
921 --disable-slirp) slirp
="no"
923 --disable-uuid) uuid
="no"
925 --enable-uuid) uuid
="yes"
927 --disable-vde) vde
="no"
929 --enable-vde) vde
="yes"
931 --disable-netmap) netmap
="no"
933 --enable-netmap) netmap
="yes"
935 --disable-xen) xen
="no"
937 --enable-xen) xen
="yes"
939 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
941 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
943 --disable-brlapi) brlapi
="no"
945 --enable-brlapi) brlapi
="yes"
947 --disable-bluez) bluez
="no"
949 --enable-bluez) bluez
="yes"
951 --disable-kvm) kvm
="no"
953 --enable-kvm) kvm
="yes"
955 --disable-tcg-interpreter) tcg_interpreter
="no"
957 --enable-tcg-interpreter) tcg_interpreter
="yes"
959 --disable-cap-ng) cap_ng
="no"
961 --enable-cap-ng) cap_ng
="yes"
963 --disable-spice) spice
="no"
965 --enable-spice) spice
="yes"
967 --disable-libiscsi) libiscsi
="no"
969 --enable-libiscsi) libiscsi
="yes"
971 --disable-libnfs) libnfs
="no"
973 --enable-libnfs) libnfs
="yes"
975 --enable-profiler) profiler
="yes"
977 --disable-cocoa) cocoa
="no"
982 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
984 --disable-system) softmmu
="no"
986 --enable-system) softmmu
="yes"
993 --disable-linux-user) linux_user
="no"
995 --enable-linux-user) linux_user
="yes"
997 --disable-bsd-user) bsd_user
="no"
999 --enable-bsd-user) bsd_user
="yes"
1001 --enable-guest-base) guest_base
="yes"
1003 --disable-guest-base) guest_base
="no"
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 --with-vss-sdk) vss_win32_sdk
=""
1103 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1105 --without-vss-sdk) vss_win32_sdk
="no"
1107 --with-win-sdk) win_sdk
=""
1109 --with-win-sdk=*) win_sdk
="$optarg"
1111 --without-win-sdk) win_sdk
="no"
1113 --enable-tools) want_tools
="yes"
1115 --disable-tools) want_tools
="no"
1117 --enable-seccomp) seccomp
="yes"
1119 --disable-seccomp) seccomp
="no"
1121 --disable-glusterfs) glusterfs
="no"
1123 --enable-glusterfs) glusterfs
="yes"
1125 --disable-archipelago) archipelago
="no"
1127 --enable-archipelago) archipelago
="yes"
1129 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1130 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1132 --disable-gtk) gtk
="no"
1134 --enable-gtk) gtk
="yes"
1136 --enable-rdma) rdma
="yes"
1138 --disable-rdma) rdma
="no"
1140 --with-gtkabi=*) gtkabi
="$optarg"
1142 --disable-vte) vte
="no"
1144 --enable-vte) vte
="yes"
1146 --disable-tpm) tpm
="no"
1148 --enable-tpm) tpm
="yes"
1150 --disable-libssh2) libssh2
="no"
1152 --enable-libssh2) libssh2
="yes"
1154 --enable-vhdx) vhdx
="yes"
1156 --disable-vhdx) vhdx
="no"
1158 --disable-quorum) quorum
="no"
1160 --enable-quorum) quorum
="yes"
1162 --disable-numa) numa
="no"
1164 --enable-numa) numa
="yes"
1166 --disable-tcmalloc) tcmalloc
="no"
1168 --enable-tcmalloc) tcmalloc
="yes"
1171 echo "ERROR: unknown option $opt"
1172 echo "Try '$0 --help' for more information"
1178 if ! has
$python; then
1179 error_exit
"Python not found. Use --python=/path/to/python"
1182 # Note that if the Python conditional here evaluates True we will exit
1183 # with status 1 which is a shell 'false' value.
1184 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1185 error_exit
"Cannot use '$python', Python 2.4 or later is required." \
1186 "Note that Python 3 or later is not yet supported." \
1187 "Use --python=/path/to/python to specify a supported Python."
1190 # The -B switch was added in Python 2.6.
1191 # If it is supplied, compiled files are not written.
1192 # Use it for Python versions which support it.
1193 if $python -B -c 'import sys; sys.exit(0)' 2>/dev
/null
; then
1200 LDFLAGS
="-m32 $LDFLAGS"
1204 LDFLAGS
="-m64 $LDFLAGS"
1207 LDFLAGS
="-m32 $LDFLAGS"
1208 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1211 LDFLAGS
="-m64 $LDFLAGS"
1212 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1216 LDFLAGS
="-m31 $LDFLAGS"
1220 LDFLAGS
="-m64 $LDFLAGS"
1224 LDFLAGS
="-m32 $LDFLAGS"
1225 cc_i386
='$(CC) -m32'
1229 LDFLAGS
="-m64 $LDFLAGS"
1230 cc_i386
='$(CC) -m32'
1234 LDFLAGS
="-mx32 $LDFLAGS"
1235 cc_i386
='$(CC) -m32'
1237 # No special flags required for other host CPUs
1240 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1241 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1243 default_target_list
=""
1247 if [ "$softmmu" = "yes" ]; then
1248 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1250 if [ "$linux_user" = "yes" ]; then
1251 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1253 if [ "$bsd_user" = "yes" ]; then
1254 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1257 for config
in $mak_wilds; do
1258 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1261 if test x
"$show_help" = x
"yes" ; then
1264 Usage: configure [options]
1265 Options: [defaults in brackets after descriptions]
1268 --help print this message
1269 --prefix=PREFIX install in PREFIX [$prefix]
1270 --interp-prefix=PREFIX where to find shared libraries, etc.
1271 use %M for cpu name [$interp_prefix]
1272 --target-list=LIST set target list (default: build everything)
1273 $(echo Available targets: $default_target_list | \
1274 fold -s -w 53 | sed -e 's/^/ /')
1276 Advanced options (experts only):
1277 --source-path=PATH path of source code [$source_path]
1278 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1279 --cc=CC use C compiler CC [$cc]
1280 --iasl=IASL use ACPI compiler IASL [$iasl]
1281 --host-cc=CC use C compiler CC [$host_cc] for code run at
1283 --cxx=CXX use C++ compiler CXX [$cxx]
1284 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1285 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1286 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1287 --make=MAKE use specified make [$make]
1288 --install=INSTALL use specified install [$install]
1289 --python=PYTHON use specified python [$python]
1290 --smbd=SMBD use specified smbd [$smbd]
1291 --static enable static build [$static]
1292 --mandir=PATH install man pages in PATH
1293 --datadir=PATH install firmware in PATH$confsuffix
1294 --docdir=PATH install documentation in PATH$confsuffix
1295 --bindir=PATH install binaries in PATH
1296 --libdir=PATH install libraries in PATH
1297 --sysconfdir=PATH install config in PATH$confsuffix
1298 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1299 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1300 --enable-modules enable modules support
1301 --enable-debug-tcg enable TCG debugging
1302 --disable-debug-tcg disable TCG debugging (default)
1303 --enable-debug-info enable debugging information (default)
1304 --disable-debug-info disable debugging information
1305 --enable-debug enable common debug build options
1306 --enable-sparse enable sparse checker
1307 --disable-sparse disable sparse checker (default)
1308 --disable-strip disable stripping binaries
1309 --disable-werror disable compilation abort on warning
1310 --disable-stack-protector disable compiler-provided stack protection
1311 --disable-sdl disable SDL
1312 --enable-sdl enable SDL
1313 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1314 --disable-gtk disable gtk UI
1315 --enable-gtk enable gtk UI
1316 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1317 --disable-virtfs disable VirtFS
1318 --enable-virtfs enable VirtFS
1319 --disable-vnc disable VNC
1320 --enable-vnc enable VNC
1321 --disable-cocoa disable Cocoa (Mac OS X only)
1322 --enable-cocoa enable Cocoa (default on Mac OS X)
1323 --audio-drv-list=LIST set audio drivers list:
1324 Available drivers: $audio_possible_drivers
1325 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1326 --block-drv-rw-whitelist=L
1327 set block driver read-write whitelist
1328 (affects only QEMU, not qemu-img)
1329 --block-drv-ro-whitelist=L
1330 set block driver read-only whitelist
1331 (affects only QEMU, not qemu-img)
1332 --disable-xen disable xen backend driver support
1333 --enable-xen enable xen backend driver support
1334 --disable-xen-pci-passthrough
1335 --enable-xen-pci-passthrough
1336 --disable-brlapi disable BrlAPI
1337 --enable-brlapi enable BrlAPI
1338 --disable-vnc-tls disable TLS encryption for VNC server
1339 --enable-vnc-tls enable TLS encryption for VNC server
1340 --disable-vnc-sasl disable SASL encryption for VNC server
1341 --enable-vnc-sasl enable SASL encryption for VNC server
1342 --disable-vnc-jpeg disable JPEG lossy compression for VNC server
1343 --enable-vnc-jpeg enable JPEG lossy compression for VNC server
1344 --disable-vnc-png disable PNG compression for VNC server (default)
1345 --enable-vnc-png enable PNG compression for VNC server
1346 --disable-vnc-ws disable Websockets support for VNC server
1347 --enable-vnc-ws enable Websockets support for VNC server
1348 --disable-curses disable curses output
1349 --enable-curses enable curses output
1350 --disable-curl disable curl connectivity
1351 --enable-curl enable curl connectivity
1352 --disable-fdt disable fdt device tree
1353 --enable-fdt enable fdt device tree
1354 --disable-bluez disable bluez stack connectivity
1355 --enable-bluez enable bluez stack connectivity
1356 --disable-slirp disable SLIRP userspace network connectivity
1357 --disable-kvm disable KVM acceleration support
1358 --enable-kvm enable KVM acceleration support
1359 --disable-rdma disable RDMA-based migration support
1360 --enable-rdma enable RDMA-based migration support
1361 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1362 --enable-system enable all system emulation targets
1363 --disable-system disable all system emulation targets
1364 --enable-user enable supported user emulation targets
1365 --disable-user disable all user emulation targets
1366 --enable-linux-user enable all linux usermode emulation targets
1367 --disable-linux-user disable all linux usermode emulation targets
1368 --enable-bsd-user enable all BSD usermode emulation targets
1369 --disable-bsd-user disable all BSD usermode emulation targets
1370 --enable-guest-base enable GUEST_BASE support for usermode
1372 --disable-guest-base disable GUEST_BASE support
1373 --enable-pie build Position Independent Executables
1374 --disable-pie do not build Position Independent Executables
1375 --fmod-lib path to FMOD library
1376 --fmod-inc path to FMOD includes
1377 --oss-lib path to OSS library
1378 --cpu=CPU Build for host CPU [$cpu]
1379 --disable-uuid disable uuid support
1380 --enable-uuid enable uuid support
1381 --disable-vde disable support for vde network
1382 --enable-vde enable support for vde network
1383 --disable-netmap disable support for netmap network
1384 --enable-netmap enable support for netmap network
1385 --disable-linux-aio disable Linux AIO support
1386 --enable-linux-aio enable Linux AIO support
1387 --disable-cap-ng disable libcap-ng support
1388 --enable-cap-ng enable libcap-ng support
1389 --disable-attr disable attr and xattr support
1390 --enable-attr enable attr and xattr support
1391 --disable-blobs disable installing provided firmware blobs
1392 --enable-docs enable documentation build
1393 --disable-docs disable documentation build
1394 --disable-vhost-net disable vhost-net acceleration support
1395 --enable-vhost-net enable vhost-net acceleration support
1396 --enable-trace-backends=B Set trace backend
1397 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1398 --with-trace-file=NAME Full PATH,NAME of file to store traces
1400 --disable-spice disable spice
1401 --enable-spice enable spice
1402 --enable-rbd enable building the rados block device (rbd)
1403 --disable-libiscsi disable iscsi support
1404 --enable-libiscsi enable iscsi support
1405 --disable-libnfs disable nfs support
1406 --enable-libnfs enable nfs support
1407 --disable-smartcard-nss disable smartcard nss support
1408 --enable-smartcard-nss enable smartcard nss support
1409 --disable-libusb disable libusb (for usb passthrough)
1410 --enable-libusb enable libusb (for usb passthrough)
1411 --disable-usb-redir disable usb network redirection support
1412 --enable-usb-redir enable usb network redirection support
1413 --enable-lzo enable the support of lzo compression library
1414 --enable-snappy enable the support of snappy compression library
1415 --enable-bzip2 enable the support of bzip2 compression library (for
1416 reading bzip2-compressed dmg images)
1417 --disable-guest-agent disable building of the QEMU Guest Agent
1418 --enable-guest-agent enable building of the QEMU Guest Agent
1419 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1420 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1421 --disable-seccomp disable seccomp support
1422 --enable-seccomp enable seccomp support
1423 --with-coroutine=BACKEND coroutine backend. Supported options:
1424 gthread, ucontext, sigaltstack, windows
1425 --disable-coroutine-pool disable coroutine freelist (worse performance)
1426 --enable-coroutine-pool enable coroutine freelist (better performance)
1427 --enable-glusterfs enable GlusterFS backend
1428 --disable-glusterfs disable GlusterFS backend
1429 --enable-archipelago enable Archipelago backend
1430 --disable-archipelago disable Archipelago backend
1431 --enable-gcov enable test coverage analysis with gcov
1432 --gcov=GCOV use specified gcov [$gcov_tool]
1433 --disable-tpm disable TPM support
1434 --enable-tpm enable TPM support
1435 --disable-libssh2 disable ssh block device support
1436 --enable-libssh2 enable ssh block device support
1437 --disable-vhdx disable support for the Microsoft VHDX image format
1438 --enable-vhdx enable support for the Microsoft VHDX image format
1439 --disable-quorum disable quorum block filter support
1440 --enable-quorum enable quorum block filter support
1441 --disable-numa disable libnuma support
1442 --enable-numa enable libnuma support
1443 --disable-tcmalloc disable tcmalloc support
1444 --enable-tcmalloc enable tcmalloc support
1446 NOTE: The object files are built at the place where configure is launched
1451 # Now we have handled --enable-tcg-interpreter and know we're not just
1452 # printing the help message, bail out if the host CPU isn't supported.
1453 if test "$ARCH" = "unknown"; then
1454 if test "$tcg_interpreter" = "yes" ; then
1455 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1458 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1462 # Consult white-list to determine whether to enable werror
1463 # by default. Only enable by default for git builds
1464 z_version
=`cut -f3 -d. $source_path/VERSION`
1466 if test -z "$werror" ; then
1467 if test -d "$source_path/.git" -a \
1468 "$linux" = "yes" ; then
1475 # check that the C compiler works.
1477 int main(void) { return 0; }
1480 if compile_object
; then
1481 : C compiler works ok
1483 error_exit
"\"$cc\" either does not exist or does not work"
1486 # Check that the C++ compiler exists and works with the C compiler
1489 int c_function(void);
1490 int main(void) { return c_function(); }
1497 int c_function(void);
1499 int c_function(void) { return 42; }
1504 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1505 # C++ compiler $cxx works ok with C compiler $cc
1508 echo "C++ compiler $cxx does not work with C compiler $cc"
1509 echo "Disabling C++ specific optional code"
1513 echo "No C++ compiler available; disabling C++ specific optional code"
1517 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1518 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1519 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1520 gcc_flags
="-Wunused-but-set-variable $gcc_flags"
1521 gcc_flags
="-Wendif-labels $gcc_flags"
1522 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1523 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1524 # Note that we do not add -Werror to gcc_flags here, because that would
1525 # enable it for all configure tests. If a configure test failed due
1526 # to -Werror this would just silently disable some features,
1527 # so it's too error prone.
1529 int main(void) { return 0; }
1531 for flag
in $gcc_flags; do
1532 # Use the positive sense of the flag when testing for -Wno-wombat
1533 # support (gcc will happily accept the -Wno- form of unknown
1535 optflag
="$(echo $flag | sed -e 's/^-Wno-/-W/')"
1536 if compile_prog
"-Werror $optflag" "" ; then
1537 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1541 if test "$mingw32" = "yes"; then
1542 stack_protector
="no"
1544 if test "$stack_protector" != "no"; then
1545 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1547 for flag
in $gcc_flags; do
1548 # We need to check both a compile and a link, since some compiler
1549 # setups fail only on a .c->.o compile and some only at link time
1550 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1551 compile_prog
"-Werror $flag" ""; then
1552 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1553 LIBTOOLFLAGS
="$LIBTOOLFLAGS -Wc,$flag"
1558 if test "$stack_protector" = yes; then
1559 if test $sp_on = 0; then
1560 error_exit
"Stack protector not supported"
1565 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1566 # large functions that use global variables. The bug is in all releases of
1567 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1568 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1570 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1571 int main(void) { return 0; }
1573 #error No bug in this compiler.
1576 if compile_prog
"-Werror -fno-gcse" "" ; then
1577 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1580 if test "$static" = "yes" ; then
1581 if test "$modules" = "yes" ; then
1582 error_exit
"static and modules are mutually incompatible"
1584 if test "$pie" = "yes" ; then
1585 error_exit
"static and pie are mutually incompatible"
1591 # Unconditional check for compiler __thread support
1593 static __thread int tls_var;
1594 int main(void) { return tls_var; }
1597 if ! compile_prog
"-Werror" "" ; then
1598 error_exit
"Your compiler does not support the __thread specifier for " \
1599 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1602 if test "$pie" = ""; then
1603 case "$cpu-$targetos" in
1604 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1612 if test "$pie" != "no" ; then
1616 # define THREAD __thread
1621 static THREAD int tls_var;
1623 int main(void) { return tls_var; }
1626 if compile_prog
"-fPIE -DPIE" "-pie"; then
1627 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1628 LDFLAGS
="-pie $LDFLAGS"
1630 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1631 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1634 if test "$pie" = "yes"; then
1635 error_exit
"PIE not available due to missing toolchain support"
1637 echo "Disabling PIE due to missing toolchain support"
1642 if compile_prog
"-fno-pie" "-nopie"; then
1643 CFLAGS_NOPIE
="-fno-pie"
1644 LDFLAGS_NOPIE
="-nopie"
1648 # check for broken gcc and libtool in RHEL5
1649 if test -n "$libtool" -a "$pie" != "no" ; then
1652 void *f(unsigned char *buf, int len);
1653 void *g(unsigned char *buf, int len);
1656 f(unsigned char *buf, int len)
1662 g(unsigned char *buf, int len)
1668 if ! libtool_prog
; then
1669 echo "Disabling libtool due to broken toolchain support"
1674 ##########################################
1675 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1676 # use i686 as default anyway, but for those that don't, an explicit
1677 # specification is necessary
1679 if test "$cpu" = "i386"; then
1681 static int sfaa(int *ptr)
1683 return __sync_fetch_and_and(ptr, 0);
1689 val = __sync_val_compare_and_swap(&val, 0, 1);
1694 if ! compile_prog
"" "" ; then
1695 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1699 #########################################
1700 # Solaris specific configure tool chain decisions
1702 if test "$solaris" = "yes" ; then
1703 if has
$install; then
1706 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1707 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1708 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1710 if test "`path_of $install`" = "/usr/sbin/install" ; then
1711 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1712 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1713 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1718 if test -f /usr
/ccs
/bin
/ar ; then
1719 error_exit
"No path includes ar" \
1720 "Add /usr/ccs/bin to your path and rerun configure"
1722 error_exit
"No path includes ar"
1726 if test -z "${target_list+xxx}" ; then
1727 target_list
="$default_target_list"
1729 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
1732 # Check that we recognised the target name; this allows a more
1733 # friendly error message than if we let it fall through.
1734 for target
in $target_list; do
1735 case " $default_target_list " in
1739 error_exit
"Unknown target name '$target'"
1744 # see if system emulation was really requested
1745 case " $target_list " in
1746 *"-softmmu "*) softmmu
=yes
1752 feature_not_found
() {
1756 error_exit
"User requested feature $feature" \
1757 "configure was not able to find it." \
1762 # big/little endian test
1764 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1765 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1766 extern int foo(short *, short *);
1767 int main(int argc, char *argv[]) {
1768 return foo(big_endian, little_endian);
1772 if compile_object
; then
1773 if grep -q BiGeNdIaN
$TMPO ; then
1775 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1778 echo big
/little
test failed
1781 echo big
/little
test failed
1784 ##########################################
1788 #include <sys/socket.h>
1789 #include <linux/ip.h>
1790 int main(void) { return sizeof(struct mmsghdr); }
1792 if compile_prog
"" "" ; then
1798 ##########################################
1801 if ! has
"$pkg_config_exe"; then
1802 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1805 ##########################################
1808 if test "$linux_user" = "yes"; then
1811 #include <linux/futex.h>
1813 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1819 if ! compile_object
; then
1820 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1824 ##########################################
1827 if test "$zlib" != "no" ; then
1830 int main(void) { zlibVersion(); return 0; }
1832 if compile_prog
"" "-lz" ; then
1835 error_exit
"zlib check failed" \
1836 "Make sure to have the zlib libs and headers installed."
1841 ##########################################
1844 if test "$lzo" != "no" ; then
1846 #include <lzo/lzo1x.h>
1847 int main(void) { lzo_version(); return 0; }
1849 if compile_prog
"" "-llzo2" ; then
1850 libs_softmmu
="$libs_softmmu -llzo2"
1853 if test "$lzo" = "yes"; then
1854 feature_not_found
"liblzo2" "Install liblzo2 devel"
1860 ##########################################
1863 if test "$snappy" != "no" ; then
1865 #include <snappy-c.h>
1866 int main(void) { snappy_max_compressed_length(4096); return 0; }
1868 if compile_prog
"" "-lsnappy" ; then
1869 libs_softmmu
="$libs_softmmu -lsnappy"
1872 if test "$snappy" = "yes"; then
1873 feature_not_found
"libsnappy" "Install libsnappy devel"
1879 ##########################################
1882 if test "$bzip2" != "no" ; then
1885 int main(void) { BZ2_bzlibVersion(); return 0; }
1887 if compile_prog
"" "-lbz2" ; then
1890 if test "$bzip2" = "yes"; then
1891 feature_not_found
"libbzip2" "Install libbzip2 devel"
1897 ##########################################
1900 if test "$seccomp" != "no" ; then
1901 if test "$cpu" = "i386" ||
test "$cpu" = "x86_64" &&
1902 $pkg_config --atleast-version=2.1.1 libseccomp
; then
1903 libs_softmmu
="$libs_softmmu `$pkg_config --libs libseccomp`"
1904 QEMU_CFLAGS
="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1907 if test "$seccomp" = "yes"; then
1908 feature_not_found
"libseccomp" "Install libseccomp devel >= 2.1.1"
1913 ##########################################
1916 if test "$xen" != "no" ; then
1917 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1919 # First we test whether Xen headers and libraries are available.
1920 # If no, we are done and there is no Xen support.
1921 # If yes, more tests are run to detect the Xen version.
1925 #include <xenctrl.h>
1930 if ! compile_prog
"" "$xen_libs" ; then
1932 if test "$xen" = "yes" ; then
1933 feature_not_found
"xen" "Install xen devel"
1939 cat > $TMPC <<EOF &&
1940 #include <xenctrl.h>
1941 #include <xenstore.h>
1943 #include <xen/hvm/hvm_info_table.h>
1944 #if !defined(HVM_MAX_VCPUS)
1945 # error HVM_MAX_VCPUS not defined
1950 xc = xc_interface_open(0, 0, 0);
1951 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1952 xc_gnttab_open(NULL, 0);
1953 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1954 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1955 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1959 compile_prog
"" "$xen_libs"
1961 xen_ctrl_version
=450
1965 cat > $TMPC <<EOF &&
1966 #include <xenctrl.h>
1967 #include <xenstore.h>
1969 #include <xen/hvm/hvm_info_table.h>
1970 #if !defined(HVM_MAX_VCPUS)
1971 # error HVM_MAX_VCPUS not defined
1976 xc = xc_interface_open(0, 0, 0);
1977 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1978 xc_gnttab_open(NULL, 0);
1979 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1980 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1984 compile_prog
"" "$xen_libs"
1986 xen_ctrl_version
=420
1990 cat > $TMPC <<EOF &&
1991 #include <xenctrl.h>
1994 #include <xen/hvm/hvm_info_table.h>
1995 #if !defined(HVM_MAX_VCPUS)
1996 # error HVM_MAX_VCPUS not defined
2000 xc_interface_open(0, 0, 0);
2001 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2002 xc_gnttab_open(NULL, 0);
2003 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2007 compile_prog
"" "$xen_libs"
2009 xen_ctrl_version
=410
2014 cat > $TMPC <<EOF &&
2015 #include <xenctrl.h>
2018 #include <xen/hvm/hvm_info_table.h>
2019 #if !defined(HVM_MAX_VCPUS)
2020 # error HVM_MAX_VCPUS not defined
2023 struct xen_add_to_physmap xatp = {
2024 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2027 xc_interface_open();
2029 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2030 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2034 compile_prog
"" "$xen_libs"
2036 xen_ctrl_version
=400
2041 cat > $TMPC <<EOF &&
2042 #include <xenctrl.h>
2045 struct xen_add_to_physmap xatp = {
2046 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2049 xc_interface_open();
2051 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2052 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2056 compile_prog
"" "$xen_libs"
2058 xen_ctrl_version
=340
2063 cat > $TMPC <<EOF &&
2064 #include <xenctrl.h>
2068 xc_interface_open();
2070 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2074 compile_prog
"" "$xen_libs"
2076 xen_ctrl_version
=330
2079 # Xen version unsupported
2081 if test "$xen" = "yes" ; then
2082 feature_not_found
"xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2087 if test "$xen" = yes; then
2088 libs_softmmu
="$xen_libs $libs_softmmu"
2092 if test "$xen_pci_passthrough" != "no"; then
2093 if test "$xen" = "yes" && test "$linux" = "yes" &&
2094 test "$xen_ctrl_version" -ge 340; then
2095 xen_pci_passthrough
=yes
2097 if test "$xen_pci_passthrough" = "yes"; then
2098 if test "$xen_ctrl_version" -lt 340; then
2099 error_exit
"User requested feature Xen PCI Passthrough" \
2100 "This feature does not work with Xen 3.3"
2102 error_exit
"User requested feature Xen PCI Passthrough" \
2103 " but this feature requires /sys from Linux"
2105 xen_pci_passthrough
=no
2109 ##########################################
2112 if ! has
$libtool; then
2116 # MacOSX ships with a libtool which isn't the GNU one; weed this
2117 # out by checking whether libtool supports the --version switch
2118 if test -n "$libtool"; then
2119 if ! "$libtool" --version >/dev
/null
2>&1; then
2124 ##########################################
2126 if test "$sparse" != "no" ; then
2130 if test "$sparse" = "yes" ; then
2131 feature_not_found
"sparse" "Install sparse binary"
2137 ##########################################
2141 if $pkg_config --exists "x11"; then
2142 x11_cflags
=`$pkg_config --cflags x11`
2143 x11_libs
=`$pkg_config --libs x11`
2146 ##########################################
2149 if test "$gtkabi" = ""; then
2150 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2151 # Use 3.0 as a fallback if that is available.
2152 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2154 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2161 if test "$gtk" != "no"; then
2162 gtkpackage
="gtk+-$gtkabi"
2163 gtkx11package
="gtk+-x11-$gtkabi"
2164 if test "$gtkabi" = "3.0" ; then
2169 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2170 gtk_cflags
=`$pkg_config --cflags $gtkpackage`
2171 gtk_libs
=`$pkg_config --libs $gtkpackage`
2172 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2173 gtk_cflags
="$gtk_cflags $x11_cflags"
2174 gtk_libs
="$gtk_libs $x11_libs"
2176 libs_softmmu
="$gtk_libs $libs_softmmu"
2178 elif test "$gtk" = "yes"; then
2179 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2185 ##########################################
2188 if test "$vte" != "no"; then
2189 if test "$gtkabi" = "3.0"; then
2190 vtepackage
="vte-2.90"
2196 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2197 vte_cflags
=`$pkg_config --cflags $vtepackage`
2198 vte_libs
=`$pkg_config --libs $vtepackage`
2199 libs_softmmu
="$vte_libs $libs_softmmu"
2201 elif test "$vte" = "yes"; then
2202 if test "$gtkabi" = "3.0"; then
2203 feature_not_found
"vte" "Install libvte-2.90 devel"
2205 feature_not_found
"vte" "Install libvte devel"
2212 ##########################################
2215 # Look for sdl configuration program (pkg-config or sdl-config). Try
2216 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2218 if test $sdlabi = "2.0"; then
2219 sdl_config
=$sdl2_config
2221 sdlconfigname
=sdl2_config
2224 sdlconfigname
=sdl_config
2227 if test "`basename $sdl_config`" != $sdlconfigname && ! has
${sdl_config}; then
2228 sdl_config
=$sdlconfigname
2231 if $pkg_config $sdlname --exists; then
2232 sdlconfig
="$pkg_config $sdlname"
2233 _sdlversion
=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2234 elif has
${sdl_config}; then
2235 sdlconfig
="$sdl_config"
2236 _sdlversion
=`$sdlconfig --version | sed 's/[^0-9]//g'`
2238 if test "$sdl" = "yes" ; then
2239 feature_not_found
"sdl" "Install SDL devel"
2243 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2244 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2248 if test "$sdl" != "no" ; then
2251 #undef main /* We don't want SDL to override our main() */
2252 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2254 sdl_cflags
=`$sdlconfig --cflags 2> /dev/null`
2255 if test "$static" = "yes" ; then
2256 sdl_libs
=`$sdlconfig --static-libs 2>/dev/null`
2258 sdl_libs
=`$sdlconfig --libs 2> /dev/null`
2260 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2261 if test "$_sdlversion" -lt 121 ; then
2264 if test "$cocoa" = "no" ; then
2269 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2270 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2271 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2272 sdl_libs
="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2273 sdl_cflags
="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2275 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2281 else # sdl not found
2282 if test "$sdl" = "yes" ; then
2283 feature_not_found
"sdl" "Install SDL devel"
2286 fi # sdl compile test
2289 if test "$sdl" = "yes" ; then
2292 #if defined(SDL_VIDEO_DRIVER_X11)
2293 #include <X11/XKBlib.h>
2295 #error No x11 support
2297 int main(void) { return 0; }
2299 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2300 sdl_cflags
="$sdl_cflags $x11_cflags"
2301 sdl_libs
="$sdl_libs $x11_libs"
2303 libs_softmmu
="$sdl_libs $libs_softmmu"
2306 ##########################################
2307 # RDMA needs OpenFabrics libraries
2308 if test "$rdma" != "no" ; then
2310 #include <rdma/rdma_cma.h>
2311 int main(void) { return 0; }
2313 rdma_libs
="-lrdmacm -libverbs"
2314 if compile_prog
"" "$rdma_libs" ; then
2316 libs_softmmu
="$libs_softmmu $rdma_libs"
2318 if test "$rdma" = "yes" ; then
2320 " OpenFabrics librdmacm/libibverbs not present." \
2322 " (1) Fast: Install infiniband packages from your distro." \
2323 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2324 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2330 ##########################################
2331 # VNC TLS/WS detection
2332 if test "$vnc" = "yes" -a \
( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \
) ; then
2334 #include <gnutls/gnutls.h>
2335 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2337 if $pkg_config --exists gnutls
; then
2338 vnc_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2339 vnc_tls_libs
=`$pkg_config --libs gnutls 2>/dev/null`
2342 vnc_tls_libs
=-lgnutls
2344 if compile_prog
"$vnc_tls_cflags" "$vnc_tls_libs" ; then
2345 if test "$vnc_tls" != "no" ; then
2348 if test "$vnc_ws" != "no" ; then
2351 libs_softmmu
="$vnc_tls_libs $libs_softmmu"
2352 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_tls_cflags"
2354 if test "$vnc_tls" = "yes" ; then
2355 feature_not_found
"vnc-tls" "Install gnutls devel"
2357 if test "$vnc_ws" = "yes" ; then
2358 feature_not_found
"vnc-ws" "Install gnutls devel"
2365 ##########################################
2366 # Quorum probe (check for gnutls)
2367 if test "$quorum" != "no" ; then
2369 #include <gnutls/gnutls.h>
2370 #include <gnutls/crypto.h>
2371 int main(void) {char data[4096], digest[32];
2372 gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest);
2376 quorum_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2377 quorum_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2378 if compile_prog
"$quorum_tls_cflags" "$quorum_tls_libs" ; then
2380 libs_softmmu
="$quorum_tls_libs $libs_softmmu"
2381 libs_tools
="$quorum_tls_libs $libs_softmmu"
2382 QEMU_CFLAGS
="$QEMU_CFLAGS $quorum_tls_cflags"
2385 if test "$quorum" = "yes"; then
2386 feature_not_found
"gnutls" "gnutls > 2.10.0 required to compile Quorum"
2392 ##########################################
2393 # VNC SASL detection
2394 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2396 #include <sasl/sasl.h>
2398 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2400 # Assuming Cyrus-SASL installed in /usr prefix
2402 vnc_sasl_libs
="-lsasl2"
2403 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2405 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2406 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2408 if test "$vnc_sasl" = "yes" ; then
2409 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2415 ##########################################
2416 # VNC JPEG detection
2417 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2420 #include <jpeglib.h>
2421 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2424 vnc_jpeg_libs
="-ljpeg"
2425 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2427 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2428 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2430 if test "$vnc_jpeg" = "yes" ; then
2431 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2437 ##########################################
2439 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2441 //#include <stdio.h>
2445 png_structp png_ptr;
2446 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2447 return png_ptr != 0;
2450 if $pkg_config libpng
--exists; then
2451 vnc_png_cflags
=`$pkg_config libpng --cflags`
2452 vnc_png_libs
=`$pkg_config libpng --libs`
2455 vnc_png_libs
="-lpng"
2457 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2459 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2460 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2462 if test "$vnc_png" = "yes" ; then
2463 feature_not_found
"vnc-png" "Install libpng devel"
2469 ##########################################
2470 # fnmatch() probe, used for ACL routines
2473 #include <fnmatch.h>
2476 fnmatch("foo", "foo", 0);
2480 if compile_prog
"" "" ; then
2484 ##########################################
2485 # uuid_generate() probe, used for vdi block driver
2486 # Note that on some systems (notably MacOSX) no extra library
2487 # need be linked to get the uuid functions.
2488 if test "$uuid" != "no" ; then
2491 #include <uuid/uuid.h>
2495 uuid_generate(my_uuid);
2499 if compile_prog
"" "" ; then
2501 elif compile_prog
"" "$uuid_libs" ; then
2503 libs_softmmu
="$uuid_libs $libs_softmmu"
2504 libs_tools
="$uuid_libs $libs_tools"
2506 if test "$uuid" = "yes" ; then
2507 feature_not_found
"uuid" "Install libuuid devel"
2513 if test "$vhdx" = "yes" ; then
2514 if test "$uuid" = "no" ; then
2515 error_exit
"uuid required for VHDX support"
2517 elif test "$vhdx" != "no" ; then
2518 if test "$uuid" = "yes" ; then
2525 ##########################################
2526 # xfsctl() probe, used for raw-posix
2527 if test "$xfs" != "no" ; then
2529 #include <stddef.h> /* NULL */
2530 #include <xfs/xfs.h>
2533 xfsctl(NULL, 0, 0, NULL);
2537 if compile_prog
"" "" ; then
2540 if test "$xfs" = "yes" ; then
2541 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2547 ##########################################
2548 # vde libraries probe
2549 if test "$vde" != "no" ; then
2550 vde_libs
="-lvdeplug"
2553 #include <libvdeplug.h>
2556 struct vde_open_args a = {0, 0, 0};
2562 if compile_prog
"" "$vde_libs" ; then
2564 libs_softmmu
="$vde_libs $libs_softmmu"
2565 libs_tools
="$vde_libs $libs_tools"
2567 if test "$vde" = "yes" ; then
2568 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2574 ##########################################
2575 # netmap support probe
2576 # Apart from looking for netmap headers, we make sure that the host API version
2577 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2578 # a minor/major version number. Minor new features will be marked with values up
2579 # to 15, and if something happens that requires a change to the backend we will
2580 # move above 15, submit the backend fixes and modify this two bounds.
2581 if test "$netmap" != "no" ; then
2583 #include <inttypes.h>
2585 #include <net/netmap.h>
2586 #include <net/netmap_user.h>
2587 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2590 int main(void) { return 0; }
2592 if compile_prog
"" "" ; then
2595 if test "$netmap" = "yes" ; then
2596 feature_not_found
"netmap"
2602 ##########################################
2603 # libcap-ng library probe
2604 if test "$cap_ng" != "no" ; then
2610 capng_capability_to_name(CAPNG_EFFECTIVE);
2614 if compile_prog
"" "$cap_libs" ; then
2616 libs_tools
="$cap_libs $libs_tools"
2618 if test "$cap_ng" = "yes" ; then
2619 feature_not_found
"cap_ng" "Install libcap-ng devel"
2625 ##########################################
2626 # Sound support libraries probe
2637 int main(void) { $exp }
2639 if compile_prog
"$cfl" "$lib" ; then
2642 error_exit
"$drv check failed" \
2643 "Make sure to have the $drv libs and headers installed."
2647 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2648 for drv
in $audio_drv_list; do
2651 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2652 "return snd_pcm_close((snd_pcm_t *)0);"
2653 libs_softmmu
="-lasound $libs_softmmu"
2657 if test -z $fmod_lib ||
test -z $fmod_inc; then
2658 error_exit
"You must specify path to FMOD library and headers" \
2659 "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
2661 audio_drv_probe
$drv fmod.h
$fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
2662 libs_softmmu
="$fmod_lib $libs_softmmu"
2666 audio_drv_probe
$drv esd.h
-lesd 'return esd_play_stream(0, 0, "", 0);'
2667 libs_softmmu
="-lesd $libs_softmmu"
2672 audio_drv_probe
$drv pulse
/mainloop.h
"-lpulse" \
2673 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2674 libs_softmmu
="-lpulse $libs_softmmu"
2679 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2683 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2688 libs_softmmu
="$oss_lib $libs_softmmu"
2692 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2696 libs_softmmu
="-lwinmm $libs_softmmu"
2701 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2702 error_exit
"Unknown driver '$drv' selected" \
2703 "Possible drivers are: $audio_possible_drivers"
2709 ##########################################
2712 if test "$brlapi" != "no" ; then
2713 brlapi_libs
="-lbrlapi"
2717 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2719 if compile_prog
"" "$brlapi_libs" ; then
2721 libs_softmmu
="$brlapi_libs $libs_softmmu"
2723 if test "$brlapi" = "yes" ; then
2724 feature_not_found
"brlapi" "Install brlapi devel"
2730 ##########################################
2732 if test "$curses" != "no" ; then
2733 if test "$mingw32" = "yes" ; then
2734 curses_list
="-lpdcurses"
2736 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2742 const char *s = curses_version();
2748 for curses_lib
in $curses_list; do
2750 if compile_prog
"" "$curses_lib" ; then
2752 libs_softmmu
="$curses_lib $libs_softmmu"
2757 if test "$curses_found" = "yes" ; then
2760 if test "$curses" = "yes" ; then
2761 feature_not_found
"curses" "Install ncurses devel"
2767 ##########################################
2769 if test "$curl" != "no" ; then
2770 if $pkg_config libcurl
--exists; then
2771 curlconfig
="$pkg_config libcurl"
2773 curlconfig
=curl-config
2776 #include <curl/curl.h>
2777 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2779 curl_cflags
=`$curlconfig --cflags 2>/dev/null`
2780 curl_libs
=`$curlconfig --libs 2>/dev/null`
2781 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2784 if test "$curl" = "yes" ; then
2785 feature_not_found
"curl" "Install libcurl devel"
2791 ##########################################
2792 # bluez support probe
2793 if test "$bluez" != "no" ; then
2795 #include <bluetooth/bluetooth.h>
2796 int main(void) { return bt_error(0); }
2798 bluez_cflags
=`$pkg_config --cflags bluez 2> /dev/null`
2799 bluez_libs
=`$pkg_config --libs bluez 2> /dev/null`
2800 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2802 libs_softmmu
="$bluez_libs $libs_softmmu"
2804 if test "$bluez" = "yes" ; then
2805 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2811 ##########################################
2812 # glib support probe
2814 if test "$mingw32" = yes; then
2815 # g_poll is required in order to integrate with the glib main loop.
2820 glib_modules
=gthread-2.0
2821 if test "$modules" = yes; then
2822 glib_modules
="$glib_modules gmodule-2.0"
2825 for i
in $glib_modules; do
2826 if $pkg_config --atleast-version=$glib_req_ver $i; then
2827 glib_cflags
=`$pkg_config --cflags $i`
2828 glib_libs
=`$pkg_config --libs $i`
2829 CFLAGS
="$glib_cflags $CFLAGS"
2830 LIBS
="$glib_libs $LIBS"
2831 libs_qga
="$glib_libs $libs_qga"
2833 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2837 # g_test_trap_subprocess added in 2.38. Used by some tests.
2839 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
2843 ##########################################
2844 # SHA command probe for modules
2845 if test "$modules" = yes; then
2846 shacmd_probe
="sha1sum sha1 shasum"
2847 for c
in $shacmd_probe; do
2853 if test "$shacmd" = ""; then
2854 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
2858 ##########################################
2859 # pixman support probe
2861 if test "$pixman" = ""; then
2862 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2864 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
2870 if test "$pixman" = "none"; then
2871 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2872 error_exit
"pixman disabled but system emulation or tools build" \
2873 "enabled. You can turn off pixman only if you also" \
2874 "disable all system emulation targets and the tools" \
2875 "build with '--disable-tools --disable-system'."
2879 elif test "$pixman" = "system"; then
2880 # pixman version has been checked above
2881 pixman_cflags
=`$pkg_config --cflags pixman-1`
2882 pixman_libs
=`$pkg_config --libs pixman-1`
2884 if test ! -d ${source_path}/pixman
/pixman
; then
2885 error_exit
"pixman >= 0.21.8 not present. Your options:" \
2886 " (1) Preferred: Install the pixman devel package (any recent" \
2887 " distro should have packages as Xorg needs pixman too)." \
2888 " (2) Fetch the pixman submodule, using:" \
2889 " git submodule update --init pixman"
2891 mkdir
-p pixman
/pixman
2892 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2893 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2896 ##########################################
2899 if test "$cap" != "no" ; then
2902 #include <sys/capability.h>
2903 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2905 if compile_prog
"" "-lcap" ; then
2912 ##########################################
2914 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
2918 #include <pthread.h>
2919 static void *f(void *p) { return NULL; }
2922 pthread_create(&thread, 0, f, 0);
2926 if compile_prog
"" "" ; then
2929 for pthread_lib
in $PTHREADLIBS_LIST; do
2930 if compile_prog
"" "$pthread_lib" ; then
2933 for lib_entry
in $LIBS; do
2934 if test "$lib_entry" = "$pthread_lib"; then
2939 if test "$found" = "no"; then
2940 LIBS
="$pthread_lib $LIBS"
2947 if test "$mingw32" != yes -a "$pthread" = no
; then
2948 error_exit
"pthread check failed" \
2949 "Make sure to have the pthread libs and headers installed."
2952 # check for pthread_setname_np
2953 pthread_setname_np
=no
2955 #include <pthread.h>
2957 static void *f(void *p) { return NULL; }
2961 pthread_create(&thread, 0, f, 0);
2962 pthread_setname_np(thread, "QEMU");
2966 if compile_prog
"" "$pthread_lib" ; then
2967 pthread_setname_np
=yes
2970 ##########################################
2972 if test "$rbd" != "no" ; then
2975 #include <rbd/librbd.h>
2978 rados_create(&cluster, NULL);
2982 rbd_libs
="-lrbd -lrados"
2983 if compile_prog
"" "$rbd_libs" ; then
2986 if test "$rbd" = "yes" ; then
2987 feature_not_found
"rados block device" "Install librbd/ceph devel"
2993 ##########################################
2995 min_libssh2_version
=1.2.8
2996 if test "$libssh2" != "no" ; then
2997 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
2998 libssh2_cflags
=`$pkg_config libssh2 --cflags`
2999 libssh2_libs
=`$pkg_config libssh2 --libs`
3002 if test "$libssh2" = "yes" ; then
3003 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3009 ##########################################
3010 # libssh2_sftp_fsync probe
3012 if test "$libssh2" = "yes"; then
3015 #include <libssh2.h>
3016 #include <libssh2_sftp.h>
3018 LIBSSH2_SESSION *session;
3020 LIBSSH2_SFTP_HANDLE *sftp_handle;
3021 session = libssh2_session_init ();
3022 sftp = libssh2_sftp_init (session);
3023 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3024 libssh2_sftp_fsync (sftp_handle);
3028 # libssh2_cflags/libssh2_libs defined in previous test.
3029 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3030 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3034 ##########################################
3037 if test "$linux_aio" != "no" ; then
3040 #include <sys/eventfd.h>
3042 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3044 if compile_prog
"" "-laio" ; then
3047 if test "$linux_aio" = "yes" ; then
3048 feature_not_found
"linux AIO" "Install libaio devel"
3054 ##########################################
3055 # TPM passthrough is only on x86 Linux
3057 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3058 tpm_passthrough
=$tpm
3063 ##########################################
3066 if test "$attr" != "no" ; then
3069 #include <sys/types.h>
3070 #ifdef CONFIG_LIBATTR
3071 #include <attr/xattr.h>
3073 #include <sys/xattr.h>
3075 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3077 if compile_prog
"" "" ; then
3079 # Older distros have <attr/xattr.h>, and need -lattr:
3080 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3085 if test "$attr" = "yes" ; then
3086 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3092 ##########################################
3095 #include <sys/types.h>
3096 #include <sys/uio.h>
3098 int main(void) { return sizeof(struct iovec); }
3101 if compile_prog
"" "" ; then
3105 ##########################################
3108 #include <sys/types.h>
3109 #include <sys/uio.h>
3111 int main(void) { return preadv(0, 0, 0, 0); }
3114 if compile_prog
"" "" ; then
3118 ##########################################
3120 # fdt support is mandatory for at least some target architectures,
3121 # so insist on it if we're building those system emulators.
3123 for target
in $target_list; do
3125 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3131 if test "$fdt_required" = "yes"; then
3132 if test "$fdt" = "no"; then
3133 error_exit
"fdt disabled but some requested targets require it." \
3134 "You can turn off fdt only if you also disable all the system emulation" \
3135 "targets which need it (by specifying a cut down --target-list)."
3140 if test "$fdt" != "no" ; then
3142 # explicitly check for libfdt_env.h as it is missing in some stable installs
3144 #include <libfdt_env.h>
3145 int main(void) { return 0; }
3147 if compile_prog
"" "$fdt_libs" ; then
3148 # system DTC is good - use it
3150 elif test -d ${source_path}/dtc
/libfdt
; then
3151 # have submodule DTC - use it
3155 if [ "$pwd_is_source_path" != "y" ] ; then
3156 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3157 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3159 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3160 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3161 elif test "$fdt" = "yes" ; then
3162 # have neither and want - prompt for system/submodule install
3163 error_exit
"DTC (libfdt) not present. Your options:" \
3164 " (1) Preferred: Install the DTC (libfdt) devel package" \
3165 " (2) Fetch the DTC submodule, using:" \
3166 " git submodule update --init dtc"
3168 # don't have and don't want
3174 libs_softmmu
="$libs_softmmu $fdt_libs"
3176 ##########################################
3177 # opengl probe (for sdl2, milkymist-tmu2)
3179 # GLX probe, used by milkymist-tmu2
3180 # this is temporary, code will be switched to egl mid-term.
3182 #include <X11/Xlib.h>
3185 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3187 if compile_prog
"" "-lGL -lX11" ; then
3193 if test "$opengl" != "no" ; then
3194 opengl_pkgs
="gl glesv2"
3195 if $pkg_config $opengl_pkgs x11
&& test "$have_glx" = "yes"; then
3196 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3197 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3200 if test "$opengl" = "yes" ; then
3201 feature_not_found
"opengl" "Install GL devel (e.g. MESA)"
3210 ##########################################
3212 if test "$archipelago" != "no" ; then
3215 #include <xseg/xseg.h>
3216 #include <xseg/protocol.h>
3222 archipelago_libs
=-lxseg
3223 if compile_prog
"" "$archipelago_libs"; then
3225 libs_tools
="$archipelago_libs $libs_tools"
3226 libs_softmmu
="$archipelago_libs $libs_softmmu"
3228 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3229 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3230 echo "license and therefore prevent redistribution."
3232 echo "To disable Archipelago, use --disable-archipelago"
3234 if test "$archipelago" = "yes" ; then
3235 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3242 ##########################################
3244 if test "$glusterfs" != "no" ; then
3245 if $pkg_config --atleast-version=3 glusterfs-api
; then
3247 glusterfs_cflags
=`$pkg_config --cflags glusterfs-api`
3248 glusterfs_libs
=`$pkg_config --libs glusterfs-api`
3249 if $pkg_config --atleast-version=5 glusterfs-api
; then
3250 glusterfs_discard
="yes"
3252 if $pkg_config --atleast-version=6 glusterfs-api
; then
3253 glusterfs_zerofill
="yes"
3256 if test "$glusterfs" = "yes" ; then
3257 feature_not_found
"GlusterFS backend support" \
3258 "Install glusterfs-api devel >= 3"
3264 # Check for inotify functions when we are building linux-user
3265 # emulator. This is done because older glibc versions don't
3266 # have syscall stubs for these implemented. In that case we
3267 # don't provide them even if kernel supports them.
3271 #include <sys/inotify.h>
3276 /* try to start inotify */
3277 return inotify_init();
3280 if compile_prog
"" "" ; then
3286 #include <sys/inotify.h>
3291 /* try to start inotify */
3292 return inotify_init1(0);
3295 if compile_prog
"" "" ; then
3299 # check if utimensat and futimens are supported
3302 #define _ATFILE_SOURCE
3305 #include <sys/stat.h>
3309 utimensat(AT_FDCWD, "foo", NULL, 0);
3314 if compile_prog
"" "" ; then
3318 # check if pipe2 is there
3327 return pipe2(pipefd, O_CLOEXEC);
3330 if compile_prog
"" "" ; then
3334 # check if accept4 is there
3337 #include <sys/socket.h>
3342 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3346 if compile_prog
"" "" ; then
3350 # check if tee/splice is there. vmsplice was added same time.
3360 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3361 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3365 if compile_prog
"" "" ; then
3369 ##########################################
3372 if test "$numa" != "no" ; then
3375 int main(void) { return numa_available(); }
3378 if compile_prog
"" "-lnuma" ; then
3380 libs_softmmu
="-lnuma $libs_softmmu"
3382 if test "$numa" = "yes" ; then
3383 feature_not_found
"numa" "install numactl devel"
3389 ##########################################
3392 if test "$tcmalloc" = "yes" ; then
3395 int main(void) { malloc(1); return 0; }
3398 if compile_prog
"" "-ltcmalloc" ; then
3399 LIBS
="-ltcmalloc $LIBS"
3401 feature_not_found
"tcmalloc" "install gperftools devel"
3405 ##########################################
3410 #include <sys/syscall.h>
3412 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3415 if compile_prog
"" "" ; then
3419 # check if eventfd is supported
3422 #include <sys/eventfd.h>
3426 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3429 if compile_prog
"" "" ; then
3433 # check for fallocate
3440 fallocate(0, 0, 0, 0);
3444 if compile_prog
"" "" ; then
3448 # check for fallocate hole punching
3449 fallocate_punch_hole
=no
3452 #include <linux/falloc.h>
3456 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3460 if compile_prog
"" "" ; then
3461 fallocate_punch_hole
=yes
3464 # check that fallocate supports range zeroing inside the file
3465 fallocate_zero_range
=no
3468 #include <linux/falloc.h>
3472 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3476 if compile_prog
"" "" ; then
3477 fallocate_zero_range
=yes
3480 # check for posix_fallocate
3487 posix_fallocate(0, 0, 0);
3491 if compile_prog
"" "" ; then
3495 # check for sync_file_range
3502 sync_file_range(0, 0, 0, 0);
3506 if compile_prog
"" "" ; then
3510 # check for linux/fiemap.h and FS_IOC_FIEMAP
3513 #include <sys/ioctl.h>
3514 #include <linux/fs.h>
3515 #include <linux/fiemap.h>
3519 ioctl(0, FS_IOC_FIEMAP, 0);
3523 if compile_prog
"" "" ; then
3538 if compile_prog
"" "" ; then
3542 # check for ppoll support
3549 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3550 ppoll(&pfd, 1, 0, 0);
3554 if compile_prog
"" "" ; then
3558 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3559 prctl_pr_set_timerslack
=no
3561 #include <sys/prctl.h>
3565 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3569 if compile_prog
"" "" ; then
3570 prctl_pr_set_timerslack
=yes
3573 # check for epoll support
3576 #include <sys/epoll.h>
3584 if compile_prog
"" "" ; then
3588 # epoll_create1 and epoll_pwait are later additions
3589 # so we must check separately for their presence
3592 #include <sys/epoll.h>
3596 /* Note that we use epoll_create1 as a value, not as
3597 * a function being called. This is necessary so that on
3598 * old SPARC glibc versions where the function was present in
3599 * the library but not declared in the header file we will
3600 * fail the configure check. (Otherwise we will get a compiler
3601 * warning but not an error, and will proceed to fail the
3602 * qemu compile where we compile with -Werror.)
3604 return (int)(uintptr_t)&epoll_create1;
3607 if compile_prog
"" "" ; then
3613 #include <sys/epoll.h>
3617 epoll_pwait(0, 0, 0, 0, 0);
3621 if compile_prog
"" "" ; then
3625 # check for sendfile support
3628 #include <sys/sendfile.h>
3632 return sendfile(0, 0, 0, 0);
3635 if compile_prog
"" "" ; then
3639 # check for timerfd support (glibc 2.8 and newer)
3642 #include <sys/timerfd.h>
3646 return(timerfd_create(CLOCK_REALTIME, 0));
3649 if compile_prog
"" "" ; then
3653 # check for setns and unshare support
3666 if compile_prog
"" "" ; then
3670 # Check if tools are available to build documentation.
3671 if test "$docs" != "no" ; then
3672 if has makeinfo
&& has pod2man
; then
3675 if test "$docs" = "yes" ; then
3676 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3682 if test "$want_tools" = ""; then
3683 if test `expr "$target_list" : ".*softmmu.*"` != 0; then
3690 # Search for bswap_32 function
3693 #include <byteswap.h>
3694 int main(void) { return bswap_32(0); }
3696 if compile_prog
"" "" ; then
3700 # Search for bswap32 function
3703 #include <sys/endian.h>
3704 #include <sys/types.h>
3705 #include <machine/bswap.h>
3706 int main(void) { return bswap32(0); }
3708 if compile_prog
"" "" ; then
3712 ##########################################
3713 # Do we have libiscsi >= 1.9.0
3714 if test "$libiscsi" != "no" ; then
3715 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3717 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3718 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3720 if test "$libiscsi" = "yes" ; then
3721 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3727 ##########################################
3731 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3733 if compile_prog
"" "" ; then
3735 elif compile_prog
"" "-lm" ; then
3737 libs_qga
="-lm $libs_qga"
3739 error_exit
"libm check failed"
3742 ##########################################
3744 # uClibc provides 2 versions of clock_gettime(), one with realtime
3745 # support and one without. This means that the clock_gettime() don't
3746 # need -lrt. We still need it for timer_create() so we check for this
3747 # function in addition.
3752 timer_create(CLOCK_REALTIME, NULL, NULL);
3753 return clock_gettime(CLOCK_REALTIME, NULL);
3757 if compile_prog
"" "" ; then
3759 # we need pthread for static linking. use previous pthread test result
3760 elif compile_prog
"" "$pthread_lib -lrt" ; then
3762 libs_qga
="$libs_qga -lrt"
3765 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3766 "$aix" != "yes" -a "$haiku" != "yes" ; then
3767 libs_softmmu
="-lutil $libs_softmmu"
3770 ##########################################
3772 if test "$spice" != "no" ; then
3775 int main(void) { spice_server_new(); return 0; }
3777 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3778 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3779 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
3780 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
3781 compile_prog
"$spice_cflags" "$spice_libs" ; then
3783 libs_softmmu
="$libs_softmmu $spice_libs"
3784 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
3785 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
3786 spice_server_version
=$
($pkg_config --modversion spice-server
)
3788 if test "$spice" = "yes" ; then
3789 feature_not_found
"spice" \
3790 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3796 # check for libcacard for smartcard support
3798 # TODO - what's the minimal nss version we support?
3799 if test "$smartcard_nss" != "no"; then
3801 #include <pk11pub.h>
3802 int main(void) { PK11_FreeSlot(0); return 0; }
3804 # FIXME: do not include $glib_* in here
3805 nss_libs
="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3806 nss_cflags
="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3807 test_cflags
="$nss_cflags"
3808 # The header files in nss < 3.13.3 have a bug which causes them to
3809 # emit a warning. If we're going to compile QEMU with -Werror, then
3810 # test that the headers don't have this bug. Otherwise we would pass
3811 # the configure test but fail to compile QEMU later.
3812 if test "$werror" = "yes"; then
3813 test_cflags
="-Werror $test_cflags"
3815 if test -n "$libtool" &&
3816 $pkg_config --atleast-version=3.12.8 nss
&& \
3817 compile_prog
"$test_cflags" "$nss_libs"; then
3820 if test "$smartcard_nss" = "yes"; then
3821 feature_not_found
"nss" "Install nss devel >= 3.12.8"
3828 if test "$libusb" != "no" ; then
3829 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
3831 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
3832 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
3833 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
3834 libs_softmmu
="$libs_softmmu $libusb_libs"
3836 if test "$libusb" = "yes"; then
3837 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
3843 # check for usbredirparser for usb network redirection support
3844 if test "$usb_redir" != "no" ; then
3845 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
3847 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
3848 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
3849 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
3850 libs_softmmu
="$libs_softmmu $usb_redir_libs"
3852 if test "$usb_redir" = "yes"; then
3853 feature_not_found
"usb-redir" "Install usbredir devel"
3859 ##########################################
3860 # check if we have VSS SDK headers for win
3862 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3863 case "$vss_win32_sdk" in
3864 "") vss_win32_include
="-I$source_path" ;;
3865 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
3866 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3867 vss_win32_include
="-I$source_path/.sdk/vss"
3868 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3870 *) vss_win32_include
="-I$vss_win32_sdk"
3873 #define __MIDL_user_allocate_free_DEFINED__
3874 #include <inc/win2003/vss.h>
3875 int main(void) { return VSS_CTX_BACKUP; }
3877 if compile_prog
"$vss_win32_include" "" ; then
3878 guest_agent_with_vss
="yes"
3879 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
3880 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3882 if test "$vss_win32_sdk" != "" ; then
3883 echo "ERROR: Please download and install Microsoft VSS SDK:"
3884 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3885 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3886 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3887 echo "ERROR: The headers are extracted in the directory \`inc'."
3888 feature_not_found
"VSS support"
3890 guest_agent_with_vss
="no"
3894 ##########################################
3895 # lookup Windows platform SDK (if not specified)
3896 # The SDK is needed only to build .tlb (type library) file of guest agent
3897 # VSS provider from the source. It is usually unnecessary because the
3898 # pre-compiled .tlb file is included.
3900 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3901 if test -z "$win_sdk"; then
3902 programfiles
="$PROGRAMFILES"
3903 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
3904 if test -n "$programfiles"; then
3905 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
3907 feature_not_found
"Windows SDK"
3909 elif test "$win_sdk" = "no"; then
3914 ##########################################
3916 ##########################################
3917 # check if we have fdatasync
3923 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3924 return fdatasync(0);
3926 #error Not supported
3930 if compile_prog
"" "" ; then
3934 ##########################################
3935 # check if we have madvise
3939 #include <sys/types.h>
3940 #include <sys/mman.h>
3942 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3944 if compile_prog
"" "" ; then
3948 ##########################################
3949 # check if we have posix_madvise
3953 #include <sys/mman.h>
3955 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3957 if compile_prog
"" "" ; then
3961 ##########################################
3962 # check if we have usable SIGEV_THREAD_ID
3969 ev.sigev_notify = SIGEV_THREAD_ID;
3970 ev._sigev_un._tid = 0;
3971 asm volatile("" : : "g"(&ev));
3975 if compile_prog
"" "" ; then
3979 ##########################################
3980 # check if trace backend exists
3982 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
3983 if test "$?" -ne 0 ; then
3984 error_exit
"invalid trace backends" \
3985 "Please choose supported trace backends."
3988 ##########################################
3989 # For 'ust' backend, test if ust headers are present
3990 if have_backend
"ust"; then
3992 #include <lttng/tracepoint.h>
3993 int main(void) { return 0; }
3995 if compile_prog
"" "" ; then
3996 if $pkg_config lttng-ust
--exists; then
3997 lttng_ust_libs
=`$pkg_config --libs lttng-ust`
3999 lttng_ust_libs
="-llttng-ust"
4001 if $pkg_config liburcu-bp
--exists; then
4002 urcu_bp_libs
=`$pkg_config --libs liburcu-bp`
4004 urcu_bp_libs
="-lurcu-bp"
4007 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4008 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4010 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4014 ##########################################
4015 # For 'dtrace' backend, test if 'dtrace' command is present
4016 if have_backend
"dtrace"; then
4017 if ! has
'dtrace' ; then
4018 error_exit
"dtrace command is not found in PATH $PATH"
4020 trace_backend_stap
="no"
4021 if has
'stap' ; then
4022 trace_backend_stap
="yes"
4026 ##########################################
4027 # check and set a backend for coroutine
4029 # We prefer ucontext, but it's not always possible. The fallback
4030 # is sigcontext. gthread is not selectable except explicitly, because
4031 # it is not functional enough to run QEMU proper. (It is occasionally
4032 # useful for debugging purposes.) On Windows the only valid backend
4033 # is the Windows-specific one.
4036 if test "$darwin" != "yes"; then
4038 #include <ucontext.h>
4039 #ifdef __stub_makecontext
4040 #error Ignoring glibc stub makecontext which will always fail
4042 int main(void) { makecontext(0, 0, 0); return 0; }
4044 if compile_prog
"" "" ; then
4049 if test "$coroutine" = ""; then
4050 if test "$mingw32" = "yes"; then
4052 elif test "$ucontext_works" = "yes"; then
4055 coroutine
=sigaltstack
4060 if test "$mingw32" != "yes"; then
4061 error_exit
"'windows' coroutine backend only valid for Windows"
4063 # Unfortunately the user visible backend name doesn't match the
4064 # coroutine-*.c filename for this case, so we have to adjust it here.
4068 if test "$ucontext_works" != "yes"; then
4069 feature_not_found
"ucontext"
4072 gthread|sigaltstack
)
4073 if test "$mingw32" = "yes"; then
4074 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4078 error_exit
"unknown coroutine backend $coroutine"
4083 if test "$coroutine_pool" = ""; then
4084 if test "$coroutine" = "gthread" -o "$coroutine" = "win32"; then
4090 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4091 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4094 ##########################################
4095 # check if we have open_by_handle_at
4097 open_by_handle_at
=no
4100 #if !defined(AT_EMPTY_PATH)
4101 # error missing definition
4103 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4106 if compile_prog
"" "" ; then
4107 open_by_handle_at
=yes
4110 ########################################
4111 # check if we have linux/magic.h
4115 #include <linux/magic.h>
4120 if compile_prog
"" "" ; then
4124 ########################################
4125 # check whether we can disable warning option with a pragma (this is needed
4126 # to silence warnings in the headers of some versions of external libraries).
4127 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4130 # If we can't selectively disable warning in the code, disable -Werror so that
4131 # the build doesn't fail anyway.
4133 pragma_disable_unused_but_set
=no
4135 #pragma GCC diagnostic push
4136 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4137 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4138 #pragma GCC diagnostic pop
4144 if compile_prog
"-Werror" "" ; then
4145 pragma_diagnostic_available
=yes
4148 ########################################
4149 # check if we have valgrind/valgrind.h
4153 #include <valgrind/valgrind.h>
4158 if compile_prog
"" "" ; then
4162 ########################################
4163 # check if environ is declared
4173 if compile_prog
"" "" ; then
4177 ########################################
4178 # check if cpuid.h is usable.
4184 unsigned a, b, c, d;
4185 int max = __get_cpuid_max(0, 0);
4188 __cpuid(1, a, b, c, d);
4192 __cpuid_count(7, 0, a, b, c, d);
4198 if compile_prog
"" "" ; then
4202 ########################################
4203 # check if __[u]int128_t is usable.
4207 #if defined(__clang_major__) && defined(__clang_minor__)
4208 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4209 # error __int128_t does not work in CLANG before 3.2
4221 if compile_prog
"" "" ; then
4225 ########################################
4226 # check if getauxval is available.
4230 #include <sys/auxv.h>
4232 return getauxval(AT_HWCAP) == 0;
4235 if compile_prog
"" "" ; then
4239 ##########################################
4241 # After here, no more $cc or $ld runs
4243 if test "$gcov" = "yes" ; then
4244 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4245 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4246 elif test "$debug" = "no" ; then
4247 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4250 ##########################################
4252 if test "$libnfs" != "no" ; then
4253 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4255 libnfs_libs
=$
($pkg_config --libs libnfs
)
4256 LIBS
="$LIBS $libnfs_libs"
4258 if test "$libnfs" = "yes" ; then
4259 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4265 # Disable zero malloc errors for official releases unless explicitly told to
4267 if test -z "$zero_malloc" ; then
4268 if test "$z_version" = "50" ; then
4275 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4276 if test "$werror" = "yes"; then
4277 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4280 if test "$solaris" = "no" ; then
4281 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4282 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4286 # test if pod2man has --utf8 option
4287 if pod2man
--help |
grep -q utf8
; then
4288 POD2MAN
="pod2man --utf8"
4293 # Use large addresses, ASLR, no-SEH and DEP if available.
4294 if test "$mingw32" = "yes" ; then
4295 if test "$cpu" = i386
; then
4296 LDFLAGS
="-Wl,--large-address-aware $LDFLAGS"
4298 for flag
in --dynamicbase --no-seh --nxcompat; do
4299 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4300 LDFLAGS
="-Wl,$flag $LDFLAGS"
4305 qemu_confdir
=$sysconfdir$confsuffix
4306 qemu_moddir
=$libdir$confsuffix
4307 qemu_datadir
=$datadir$confsuffix
4308 qemu_localedir
="$datadir/locale"
4311 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4312 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4313 tools
="qemu-nbd\$(EXESUF) $tools"
4315 if test "$softmmu" = yes ; then
4316 if test "$virtfs" != no
; then
4317 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4319 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4321 if test "$virtfs" = yes; then
4322 error_exit
"VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4328 if [ "$guest_agent" != "no" ]; then
4329 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4330 tools
="qemu-ga\$(EXESUF) $tools"
4331 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4332 tools
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4335 elif [ "$guest_agent" != yes ]; then
4338 error_exit
"Guest agent is not supported on this platform"
4342 # Mac OS X ships with a broken assembler
4344 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4345 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4346 "$softmmu" = yes ; then
4349 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4350 roms
="$roms spapr-rtas"
4353 if test "$cpu" = "s390x" ; then
4354 roms
="$roms s390-ccw"
4357 # Probe for the need for relocating the user-only binary.
4358 if test "$pie" = "no" ; then
4361 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4362 # ??? Rationale for choosing this address
4363 textseg_addr
=0x60000000
4366 # A 256M aligned address, high in the address space, with enough
4367 # room for the code_gen_buffer above it before the stack.
4368 textseg_addr
=0x60000000
4371 if [ -n "$textseg_addr" ]; then
4373 int main(void) { return 0; }
4375 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4376 if ! compile_prog
"" "$textseg_ldflags"; then
4377 # In case ld does not support -Ttext-segment, edit the default linker
4378 # script via sed to set the .text start addr. This is needed on FreeBSD
4380 $ld --verbose |
sed \
4381 -e '1,/==================================================/d' \
4382 -e '/==================================================/,$d' \
4383 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4384 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4385 textseg_ldflags
="-Wl,-T../config-host.ld"
4390 # prepend pixman and ftd flags after all config tests are done
4391 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4392 libs_softmmu
="$pixman_libs $libs_softmmu"
4394 echo "Install prefix $prefix"
4395 echo "BIOS directory `eval echo $qemu_datadir`"
4396 echo "binary directory `eval echo $bindir`"
4397 echo "library directory `eval echo $libdir`"
4398 echo "module directory `eval echo $qemu_moddir`"
4399 echo "libexec directory `eval echo $libexecdir`"
4400 echo "include directory `eval echo $includedir`"
4401 echo "config directory `eval echo $sysconfdir`"
4402 if test "$mingw32" = "no" ; then
4403 echo "local state directory `eval echo $local_statedir`"
4404 echo "Manual directory `eval echo $mandir`"
4405 echo "ELF interp prefix $interp_prefix"
4407 echo "local state directory queried at runtime"
4408 echo "Windows SDK $win_sdk"
4410 echo "Source path $source_path"
4411 echo "C compiler $cc"
4412 echo "Host C compiler $host_cc"
4413 echo "C++ compiler $cxx"
4414 echo "Objective-C compiler $objcc"
4415 echo "ARFLAGS $ARFLAGS"
4416 echo "CFLAGS $CFLAGS"
4417 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4418 echo "LDFLAGS $LDFLAGS"
4420 echo "install $install"
4421 echo "python $python"
4422 if test "$slirp" = "yes" ; then
4425 echo "module support $modules"
4426 echo "host CPU $cpu"
4427 echo "host big endian $bigendian"
4428 echo "target list $target_list"
4429 echo "tcg debug enabled $debug_tcg"
4430 echo "gprof enabled $gprof"
4431 echo "sparse enabled $sparse"
4432 echo "strip binaries $strip_opt"
4433 echo "profiler $profiler"
4434 echo "static build $static"
4435 if test "$darwin" = "yes" ; then
4436 echo "Cocoa support $cocoa"
4438 echo "pixman $pixman"
4439 echo "SDL support $sdl"
4440 echo "GTK support $gtk"
4441 echo "VTE support $vte"
4442 echo "curses support $curses"
4443 echo "curl support $curl"
4444 echo "mingw32 support $mingw32"
4445 echo "Audio drivers $audio_drv_list"
4446 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4447 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4448 echo "VirtFS support $virtfs"
4449 echo "VNC support $vnc"
4450 if test "$vnc" = "yes" ; then
4451 echo "VNC TLS support $vnc_tls"
4452 echo "VNC SASL support $vnc_sasl"
4453 echo "VNC JPEG support $vnc_jpeg"
4454 echo "VNC PNG support $vnc_png"
4455 echo "VNC WS support $vnc_ws"
4457 if test -n "$sparc_cpu"; then
4458 echo "Target Sparc Arch $sparc_cpu"
4460 echo "xen support $xen"
4461 if test "$xen" = "yes" ; then
4462 echo "xen ctrl version $xen_ctrl_version"
4464 echo "brlapi support $brlapi"
4465 echo "bluez support $bluez"
4466 echo "Documentation $docs"
4468 echo "GUEST_BASE $guest_base"
4470 echo "vde support $vde"
4471 echo "netmap support $netmap"
4472 echo "Linux AIO support $linux_aio"
4473 echo "(X)ATTR support $attr"
4474 echo "Install blobs $blobs"
4475 echo "KVM support $kvm"
4476 echo "RDMA support $rdma"
4477 echo "TCG interpreter $tcg_interpreter"
4478 echo "fdt support $fdt"
4479 echo "preadv support $preadv"
4480 echo "fdatasync $fdatasync"
4481 echo "madvise $madvise"
4482 echo "posix_madvise $posix_madvise"
4483 echo "sigev_thread_id $sigev_thread_id"
4484 echo "uuid support $uuid"
4485 echo "libcap-ng support $cap_ng"
4486 echo "vhost-net support $vhost_net"
4487 echo "vhost-scsi support $vhost_scsi"
4488 echo "Trace backends $trace_backends"
4489 if test "$trace_backend" = "simple"; then
4490 echo "Trace output file $trace_file-<pid>"
4492 if test "$spice" = "yes"; then
4493 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4495 echo "spice support $spice"
4497 echo "rbd support $rbd"
4498 echo "xfsctl support $xfs"
4499 echo "nss used $smartcard_nss"
4500 echo "libusb $libusb"
4501 echo "usb net redir $usb_redir"
4502 echo "OpenGL support $opengl"
4503 echo "libiscsi support $libiscsi"
4504 echo "libnfs support $libnfs"
4505 echo "build guest agent $guest_agent"
4506 echo "QGA VSS support $guest_agent_with_vss"
4507 echo "seccomp support $seccomp"
4508 echo "coroutine backend $coroutine"
4509 echo "coroutine pool $coroutine_pool"
4510 echo "GlusterFS support $glusterfs"
4511 echo "Archipelago support $archipelago"
4512 echo "gcov $gcov_tool"
4513 echo "gcov enabled $gcov"
4514 echo "TPM support $tpm"
4515 echo "libssh2 support $libssh2"
4516 echo "TPM passthrough $tpm_passthrough"
4517 echo "QOM debugging $qom_cast_debug"
4519 echo "Quorum $quorum"
4520 echo "lzo support $lzo"
4521 echo "snappy support $snappy"
4522 echo "bzip2 support $bzip2"
4523 echo "NUMA host support $numa"
4524 echo "tcmalloc support $tcmalloc"
4526 if test "$sdl_too_old" = "yes"; then
4527 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4530 config_host_mak
="config-host.mak"
4532 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4534 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4535 echo >> $config_host_mak
4537 echo all
: >> $config_host_mak
4538 echo "prefix=$prefix" >> $config_host_mak
4539 echo "bindir=$bindir" >> $config_host_mak
4540 echo "libdir=$libdir" >> $config_host_mak
4541 echo "libexecdir=$libexecdir" >> $config_host_mak
4542 echo "includedir=$includedir" >> $config_host_mak
4543 echo "mandir=$mandir" >> $config_host_mak
4544 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4545 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4546 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4547 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4548 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4549 if test "$mingw32" = "no" ; then
4550 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4552 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4553 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4554 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4555 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4556 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4558 echo "ARCH=$ARCH" >> $config_host_mak
4560 if test "$debug_tcg" = "yes" ; then
4561 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4563 if test "$strip_opt" = "yes" ; then
4564 echo "STRIP=${strip}" >> $config_host_mak
4566 if test "$bigendian" = "yes" ; then
4567 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4569 if test "$mingw32" = "yes" ; then
4570 echo "CONFIG_WIN32=y" >> $config_host_mak
4571 echo "CONFIG_INSTALLER=y" >> $config_host_mak
4572 rc_version
=`cat "$source_path/VERSION"`
4573 version_major
=${rc_version%%.*}
4574 rc_version
=${rc_version#*.}
4575 version_minor
=${rc_version%%.*}
4576 rc_version
=${rc_version#*.}
4577 version_subminor
=${rc_version%%.*}
4579 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4580 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4581 if test "$guest_agent_with_vss" = "yes" ; then
4582 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4583 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4586 echo "CONFIG_POSIX=y" >> $config_host_mak
4589 if test "$linux" = "yes" ; then
4590 echo "CONFIG_LINUX=y" >> $config_host_mak
4593 if test "$darwin" = "yes" ; then
4594 echo "CONFIG_DARWIN=y" >> $config_host_mak
4597 if test "$aix" = "yes" ; then
4598 echo "CONFIG_AIX=y" >> $config_host_mak
4601 if test "$solaris" = "yes" ; then
4602 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4603 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4604 if test "$needs_libsunmath" = "yes" ; then
4605 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4608 if test "$haiku" = "yes" ; then
4609 echo "CONFIG_HAIKU=y" >> $config_host_mak
4611 if test "$static" = "yes" ; then
4612 echo "CONFIG_STATIC=y" >> $config_host_mak
4614 if test "$profiler" = "yes" ; then
4615 echo "CONFIG_PROFILER=y" >> $config_host_mak
4617 if test "$slirp" = "yes" ; then
4618 echo "CONFIG_SLIRP=y" >> $config_host_mak
4619 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4621 if test "$vde" = "yes" ; then
4622 echo "CONFIG_VDE=y" >> $config_host_mak
4624 if test "$netmap" = "yes" ; then
4625 echo "CONFIG_NETMAP=y" >> $config_host_mak
4627 if test "$l2tpv3" = "yes" ; then
4628 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4630 if test "$cap_ng" = "yes" ; then
4631 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4633 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4634 for drv
in $audio_drv_list; do
4635 def
=CONFIG_
`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4636 echo "$def=y" >> $config_host_mak
4637 if test "$drv" = "fmod"; then
4638 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
4641 if test "$audio_pt_int" = "yes" ; then
4642 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4644 if test "$audio_win_int" = "yes" ; then
4645 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4647 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4648 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4649 if test "$vnc" = "yes" ; then
4650 echo "CONFIG_VNC=y" >> $config_host_mak
4652 if test "$vnc_tls" = "yes" ; then
4653 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4655 if test "$vnc_sasl" = "yes" ; then
4656 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4658 if test "$vnc_jpeg" = "yes" ; then
4659 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4661 if test "$vnc_png" = "yes" ; then
4662 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4664 if test "$vnc_ws" = "yes" ; then
4665 echo "CONFIG_VNC_WS=y" >> $config_host_mak
4666 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
4668 if test "$fnmatch" = "yes" ; then
4669 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4671 if test "$uuid" = "yes" ; then
4672 echo "CONFIG_UUID=y" >> $config_host_mak
4674 if test "$xfs" = "yes" ; then
4675 echo "CONFIG_XFS=y" >> $config_host_mak
4677 qemu_version
=`head "$source_path/VERSION"`
4678 echo "VERSION=$qemu_version" >>$config_host_mak
4679 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4680 echo "SRC_PATH=$source_path" >> $config_host_mak
4681 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4682 if [ "$docs" = "yes" ] ; then
4683 echo "BUILD_DOCS=yes" >> $config_host_mak
4685 if [ "$want_tools" = "yes" ] ; then
4686 echo "BUILD_TOOLS=yes" >> $config_host_mak
4688 if test "$modules" = "yes"; then
4689 # $shacmd can generate a hash started with digit, which the compiler doesn't
4690 # like as an symbol. So prefix it with an underscore
4691 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4692 echo "CONFIG_MODULES=y" >> $config_host_mak
4694 if test "$sdl" = "yes" ; then
4695 echo "CONFIG_SDL=y" >> $config_host_mak
4696 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4697 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4699 if test "$cocoa" = "yes" ; then
4700 echo "CONFIG_COCOA=y" >> $config_host_mak
4702 if test "$curses" = "yes" ; then
4703 echo "CONFIG_CURSES=y" >> $config_host_mak
4705 if test "$utimens" = "yes" ; then
4706 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4708 if test "$pipe2" = "yes" ; then
4709 echo "CONFIG_PIPE2=y" >> $config_host_mak
4711 if test "$accept4" = "yes" ; then
4712 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4714 if test "$splice" = "yes" ; then
4715 echo "CONFIG_SPLICE=y" >> $config_host_mak
4717 if test "$eventfd" = "yes" ; then
4718 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4720 if test "$fallocate" = "yes" ; then
4721 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4723 if test "$fallocate_punch_hole" = "yes" ; then
4724 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4726 if test "$fallocate_zero_range" = "yes" ; then
4727 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4729 if test "$posix_fallocate" = "yes" ; then
4730 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4732 if test "$sync_file_range" = "yes" ; then
4733 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4735 if test "$fiemap" = "yes" ; then
4736 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4738 if test "$dup3" = "yes" ; then
4739 echo "CONFIG_DUP3=y" >> $config_host_mak
4741 if test "$ppoll" = "yes" ; then
4742 echo "CONFIG_PPOLL=y" >> $config_host_mak
4744 if test "$prctl_pr_set_timerslack" = "yes" ; then
4745 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4747 if test "$epoll" = "yes" ; then
4748 echo "CONFIG_EPOLL=y" >> $config_host_mak
4750 if test "$epoll_create1" = "yes" ; then
4751 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4753 if test "$epoll_pwait" = "yes" ; then
4754 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4756 if test "$sendfile" = "yes" ; then
4757 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4759 if test "$timerfd" = "yes" ; then
4760 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4762 if test "$setns" = "yes" ; then
4763 echo "CONFIG_SETNS=y" >> $config_host_mak
4765 if test "$inotify" = "yes" ; then
4766 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4768 if test "$inotify1" = "yes" ; then
4769 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4771 if test "$byteswap_h" = "yes" ; then
4772 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4774 if test "$bswap_h" = "yes" ; then
4775 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4777 if test "$curl" = "yes" ; then
4778 echo "CONFIG_CURL=m" >> $config_host_mak
4779 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4780 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4782 if test "$brlapi" = "yes" ; then
4783 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4785 if test "$bluez" = "yes" ; then
4786 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4787 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4789 if test "glib_subprocess" = "yes" ; then
4790 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4792 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4793 if test "$gtk" = "yes" ; then
4794 echo "CONFIG_GTK=y" >> $config_host_mak
4795 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4796 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4798 if test "$vte" = "yes" ; then
4799 echo "CONFIG_VTE=y" >> $config_host_mak
4800 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4802 if test "$xen" = "yes" ; then
4803 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4804 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4806 if test "$linux_aio" = "yes" ; then
4807 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4809 if test "$attr" = "yes" ; then
4810 echo "CONFIG_ATTR=y" >> $config_host_mak
4812 if test "$libattr" = "yes" ; then
4813 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4815 if test "$virtfs" = "yes" ; then
4816 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4818 if test "$vhost_scsi" = "yes" ; then
4819 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4821 if test "$vhost_net" = "yes" ; then
4822 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4824 if test "$blobs" = "yes" ; then
4825 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4827 if test "$iovec" = "yes" ; then
4828 echo "CONFIG_IOVEC=y" >> $config_host_mak
4830 if test "$preadv" = "yes" ; then
4831 echo "CONFIG_PREADV=y" >> $config_host_mak
4833 if test "$fdt" = "yes" ; then
4834 echo "CONFIG_FDT=y" >> $config_host_mak
4836 if test "$signalfd" = "yes" ; then
4837 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4839 if test "$tcg_interpreter" = "yes" ; then
4840 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4842 if test "$fdatasync" = "yes" ; then
4843 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4845 if test "$madvise" = "yes" ; then
4846 echo "CONFIG_MADVISE=y" >> $config_host_mak
4848 if test "$posix_madvise" = "yes" ; then
4849 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4851 if test "$sigev_thread_id" = "yes" ; then
4852 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4855 if test "$spice" = "yes" ; then
4856 echo "CONFIG_SPICE=y" >> $config_host_mak
4859 if test "$smartcard_nss" = "yes" ; then
4860 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4861 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4862 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4865 if test "$libusb" = "yes" ; then
4866 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4869 if test "$usb_redir" = "yes" ; then
4870 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4873 if test "$opengl" = "yes" ; then
4874 echo "CONFIG_OPENGL=y" >> $config_host_mak
4875 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4876 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4879 if test "$lzo" = "yes" ; then
4880 echo "CONFIG_LZO=y" >> $config_host_mak
4883 if test "$snappy" = "yes" ; then
4884 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4887 if test "$bzip2" = "yes" ; then
4888 echo "CONFIG_BZIP2=y" >> $config_host_mak
4889 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4892 if test "$libiscsi" = "yes" ; then
4893 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4894 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4895 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4898 if test "$libnfs" = "yes" ; then
4899 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4902 if test "$seccomp" = "yes"; then
4903 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4906 # XXX: suppress that
4907 if [ "$bsd" = "yes" ] ; then
4908 echo "CONFIG_BSD=y" >> $config_host_mak
4911 if test "$zero_malloc" = "yes" ; then
4912 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4914 if test "$qom_cast_debug" = "yes" ; then
4915 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4917 if test "$rbd" = "yes" ; then
4918 echo "CONFIG_RBD=m" >> $config_host_mak
4919 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
4920 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4923 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4924 if test "$coroutine_pool" = "yes" ; then
4925 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4927 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4930 if test "$open_by_handle_at" = "yes" ; then
4931 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
4934 if test "$linux_magic_h" = "yes" ; then
4935 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4938 if test "$pragma_diagnostic_available" = "yes" ; then
4939 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
4942 if test "$valgrind_h" = "yes" ; then
4943 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
4946 if test "$has_environ" = "yes" ; then
4947 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
4950 if test "$cpuid_h" = "yes" ; then
4951 echo "CONFIG_CPUID_H=y" >> $config_host_mak
4954 if test "$int128" = "yes" ; then
4955 echo "CONFIG_INT128=y" >> $config_host_mak
4958 if test "$getauxval" = "yes" ; then
4959 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
4962 if test "$glusterfs" = "yes" ; then
4963 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
4964 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
4965 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
4968 if test "$glusterfs_discard" = "yes" ; then
4969 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
4972 if test "$glusterfs_zerofill" = "yes" ; then
4973 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
4976 if test "$archipelago" = "yes" ; then
4977 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
4978 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
4981 if test "$libssh2" = "yes" ; then
4982 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
4983 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
4984 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
4987 if test "$quorum" = "yes" ; then
4988 echo "CONFIG_QUORUM=y" >> $config_host_mak
4991 if test "$vhdx" = "yes" ; then
4992 echo "CONFIG_VHDX=y" >> $config_host_mak
4996 if test "$libusb" = "yes"; then
4997 echo "HOST_USB=libusb legacy" >> $config_host_mak
4999 echo "HOST_USB=stub" >> $config_host_mak
5002 # TPM passthrough support?
5003 if test "$tpm" = "yes"; then
5004 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5005 if test "$tpm_passthrough" = "yes"; then
5006 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5010 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5011 if have_backend
"nop"; then
5012 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5014 if have_backend
"simple"; then
5015 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5016 # Set the appropriate trace file.
5017 trace_file
="\"$trace_file-\" FMT_pid"
5019 if have_backend
"stderr"; then
5020 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5022 if have_backend
"ust"; then
5023 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5025 if have_backend
"dtrace"; then
5026 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5027 if test "$trace_backend_stap" = "yes" ; then
5028 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5031 if have_backend
"ftrace"; then
5032 if test "$linux" = "yes" ; then
5033 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5035 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5038 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5040 if test "$rdma" = "yes" ; then
5041 echo "CONFIG_RDMA=y" >> $config_host_mak
5044 # Hold two types of flag:
5045 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5046 # a thread we have a handle to
5047 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5049 if test "$pthread_setname_np" = "yes" ; then
5050 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5051 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5054 if test "$tcg_interpreter" = "yes"; then
5055 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5056 elif test "$ARCH" = "sparc64" ; then
5057 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5058 elif test "$ARCH" = "s390x" ; then
5059 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5060 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5061 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5062 elif test "$ARCH" = "ppc64" ; then
5063 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5065 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5067 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5069 echo "TOOLS=$tools" >> $config_host_mak
5070 echo "ROMS=$roms" >> $config_host_mak
5071 echo "MAKE=$make" >> $config_host_mak
5072 echo "INSTALL=$install" >> $config_host_mak
5073 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5074 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5075 if test -n "$libtool"; then
5076 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5077 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5079 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5080 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5082 echo "PYTHON=$python" >> $config_host_mak
5083 echo "CC=$cc" >> $config_host_mak
5084 if $iasl -h > /dev
/null
2>&1; then
5085 echo "IASL=$iasl" >> $config_host_mak
5087 echo "CC_I386=$cc_i386" >> $config_host_mak
5088 echo "HOST_CC=$host_cc" >> $config_host_mak
5089 echo "CXX=$cxx" >> $config_host_mak
5090 echo "OBJCC=$objcc" >> $config_host_mak
5091 echo "AR=$ar" >> $config_host_mak
5092 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5093 echo "AS=$as" >> $config_host_mak
5094 echo "CPP=$cpp" >> $config_host_mak
5095 echo "OBJCOPY=$objcopy" >> $config_host_mak
5096 echo "LD=$ld" >> $config_host_mak
5097 echo "NM=$nm" >> $config_host_mak
5098 echo "WINDRES=$windres" >> $config_host_mak
5099 echo "LIBTOOL=$libtool" >> $config_host_mak
5100 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5101 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5102 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5103 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5104 if test "$sparse" = "yes" ; then
5105 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5106 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5107 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5108 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5109 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5111 if test "$cross_prefix" != ""; then
5112 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5114 echo "AUTOCONF_HOST := " >> $config_host_mak
5116 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5117 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5118 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5119 echo "LIBS+=$LIBS" >> $config_host_mak
5120 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5121 echo "EXESUF=$EXESUF" >> $config_host_mak
5122 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5123 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5124 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5125 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5126 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5127 if test "$gcov" = "yes" ; then
5128 echo "CONFIG_GCOV=y" >> $config_host_mak
5129 echo "GCOV=$gcov_tool" >> $config_host_mak
5132 # use included Linux headers
5133 if test "$linux" = "yes" ; then
5134 mkdir
-p linux-headers
5152 # For most CPUs the kernel architecture name and QEMU CPU name match.
5156 # For non-KVM architectures we will not have asm headers
5157 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5158 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5162 for target
in $target_list; do
5163 target_dir
="$target"
5164 config_target_mak
=$target_dir/config-target.mak
5165 target_name
=`echo $target | cut -d '-' -f 1`
5166 target_bigendian
="no"
5168 case "$target_name" in
5169 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5170 target_bigendian
=yes
5174 target_user_only
="no"
5175 target_linux_user
="no"
5176 target_bsd_user
="no"
5178 ${target_name}-softmmu)
5179 target_softmmu
="yes"
5181 ${target_name}-linux-user)
5182 if test "$linux" != "yes" ; then
5183 error_exit
"Target '$target' is only available on a Linux host"
5185 target_user_only
="yes"
5186 target_linux_user
="yes"
5188 ${target_name}-bsd-user)
5189 if test "$bsd" != "yes" ; then
5190 error_exit
"Target '$target' is only available on a BSD host"
5192 target_user_only
="yes"
5193 target_bsd_user
="yes"
5196 error_exit
"Target '$target' not recognised"
5201 mkdir
-p $target_dir
5202 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5205 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5208 TARGET_ARCH
="$target_name"
5212 case "$target_name" in
5216 TARGET_BASE_ARCH
=i386
5223 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5226 TARGET_BASE_ARCH
=arm
5228 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5236 gdb_xml_files
="cf-core.xml cf-fp.xml"
5238 microblaze|microblazeel
)
5239 TARGET_ARCH
=microblaze
5244 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5248 TARGET_BASE_ARCH
=mips
5249 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5250 echo "TARGET_ABI32=y" >> $config_target_mak
5254 TARGET_BASE_ARCH
=mips
5255 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5260 TARGET_ARCH
=openrisc
5261 TARGET_BASE_ARCH
=openrisc
5264 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5267 TARGET_BASE_ARCH
=ppc
5269 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5272 TARGET_BASE_ARCH
=ppc
5274 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5278 TARGET_BASE_ARCH
=ppc
5280 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5284 TARGET_BASE_ARCH
=ppc
5286 echo "TARGET_ABI32=y" >> $config_target_mak
5287 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5296 TARGET_BASE_ARCH
=sparc
5300 TARGET_BASE_ARCH
=sparc
5301 TARGET_ABI_DIR
=sparc
5302 echo "TARGET_ABI32=y" >> $config_target_mak
5305 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml"
5315 error_exit
"Unsupported target CPU"
5318 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5319 if [ "$TARGET_BASE_ARCH" = "" ]; then
5320 TARGET_BASE_ARCH
=$TARGET_ARCH
5323 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5326 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5329 target_arch_name
="`upper $TARGET_ARCH`"
5330 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5331 echo "TARGET_NAME=$target_name" >> $config_target_mak
5332 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5333 if [ "$TARGET_ABI_DIR" = "" ]; then
5334 TARGET_ABI_DIR
=$TARGET_ARCH
5336 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5337 if [ "$HOST_VARIANT_DIR" != "" ]; then
5338 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5340 case "$target_name" in
5342 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5343 echo "CONFIG_XEN=y" >> $config_target_mak
5344 if test "$xen_pci_passthrough" = yes; then
5345 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5351 case "$target_name" in
5352 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5353 # Make sure the target and host cpus are compatible
5354 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5355 \
( "$target_name" = "$cpu" -o \
5356 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5357 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5358 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5359 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5360 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5361 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5362 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5363 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5364 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5365 echo "CONFIG_KVM=y" >> $config_target_mak
5366 if test "$vhost_net" = "yes" ; then
5367 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5371 if test "$target_bigendian" = "yes" ; then
5372 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5374 if test "$target_softmmu" = "yes" ; then
5375 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5377 if test "$target_user_only" = "yes" ; then
5378 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5379 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5381 if test "$target_linux_user" = "yes" ; then
5382 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5385 if test ! -z "$gdb_xml_files" ; then
5386 for x
in $gdb_xml_files; do
5387 list
="$list $source_path/gdb-xml/$x"
5389 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5392 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5393 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5395 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5396 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5398 if test "$target_bsd_user" = "yes" ; then
5399 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5402 # generate QEMU_CFLAGS/LDFLAGS for targets
5407 for i
in $ARCH $TARGET_BASE_ARCH ; do
5410 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5411 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5414 if test -n "${cxx}"; then
5415 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5416 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5420 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5421 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5422 if test -n "${cxx}"; then
5423 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5424 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5428 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5429 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5432 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5433 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5436 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5437 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5440 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5441 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5444 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5445 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5448 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5449 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5452 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5453 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5456 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5457 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5460 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5461 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5464 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5465 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5468 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5469 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5472 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5473 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5476 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5477 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5480 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5481 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5484 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5485 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5489 if test "$tcg_interpreter" = "yes" ; then
5490 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5491 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5496 # Ensure there's only a single GP
5497 cflags
="-msmall-data $cflags"
5501 if test "$gprof" = "yes" ; then
5502 echo "TARGET_GPROF=yes" >> $config_target_mak
5503 if test "$target_linux_user" = "yes" ; then
5505 ldflags
="-p $ldflags"
5507 if test "$target_softmmu" = "yes" ; then
5508 ldflags
="-p $ldflags"
5509 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5513 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5514 ldflags
="$ldflags $textseg_ldflags"
5517 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5518 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5520 done # for target in $targets
5522 if [ "$pixman" = "internal" ]; then
5523 echo "config-host.h: subdir-pixman" >> $config_host_mak
5526 if test "$rdma" = "yes" ; then
5527 echo "CONFIG_RDMA=y" >> $config_host_mak
5530 if [ "$dtc_internal" = "yes" ]; then
5531 echo "config-host.h: subdir-dtc" >> $config_host_mak
5534 if test "$numa" = "yes"; then
5535 echo "CONFIG_NUMA=y" >> $config_host_mak
5538 # build tree in object directory in case the source is not in the current directory
5539 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5541 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5542 DIRS
="$DIRS roms/seabios roms/vgabios"
5543 DIRS
="$DIRS qapi-generated"
5544 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
5545 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5546 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5547 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5548 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
5549 FILES
="$FILES pc-bios/s390-ccw/Makefile"
5550 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5551 FILES
="$FILES pc-bios/qemu-icon.bmp"
5553 $source_path/pc-bios
/*.bin \
5554 $source_path/pc-bios
/*.aml \
5555 $source_path/pc-bios
/*.rom \
5556 $source_path/pc-bios
/*.dtb \
5557 $source_path/pc-bios
/*.img \
5558 $source_path/pc-bios
/openbios-
* \
5559 $source_path/pc-bios
/u-boot.
* \
5560 $source_path/pc-bios
/palcode-
*
5562 FILES
="$FILES pc-bios/`basename $bios_file`"
5564 for test_file
in `find $source_path/tests/acpi-test-data -type f`
5566 FILES
="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5569 for f
in $FILES ; do
5570 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5571 symlink
"$source_path/$f" "$f"
5575 # temporary config to build submodules
5576 for rom
in seabios vgabios
; do
5577 config_mak
=roms
/$rom/config.mak
5578 echo "# Automatically generated by configure - do not modify" > $config_mak
5579 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5580 echo "AS=$as" >> $config_mak
5581 echo "CC=$cc" >> $config_mak
5582 echo "BCC=bcc" >> $config_mak
5583 echo "CPP=$cpp" >> $config_mak
5584 echo "OBJCOPY=objcopy" >> $config_mak
5585 echo "IASL=$iasl" >> $config_mak
5586 echo "LD=$ld" >> $config_mak
5589 # set up qemu-iotests in this build directory
5590 iotests_common_env
="tests/qemu-iotests/common.env"
5591 iotests_check
="tests/qemu-iotests/check"
5593 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5594 echo >> "$iotests_common_env"
5595 echo "export PYTHON='$python'" >> "$iotests_common_env"
5597 if [ ! -e "$iotests_check" ]; then
5598 symlink
"$source_path/$iotests_check" "$iotests_check"
5601 # Save the configure command line for later reuse.
5602 cat <<EOD >config.status
5604 # Generated by configure.
5605 # Run this file to recreate the current configuration.
5606 # Compiler output produced by configure, useful for debugging
5607 # configure, is in config.log if it exists.
5609 printf "exec" >>config.status
5610 printf " '%s'" "$0" "$@" >>config.status
5611 echo >>config.status
5612 chmod +x config.status