3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE
= GREP_OPTIONS
=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Temporary directory used for files created while
12 # configure runs. Since it is in the build directory
13 # we can safely blow away any previous version of it
14 # (and we need not jump through hoops to try to delete
15 # it when configure exits.)
20 echo "ERROR: failed to create temporary directory"
25 TMPC
="${TMPDIR1}/${TMPB}.c"
26 TMPO
="${TMPDIR1}/${TMPB}.o"
27 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
28 TMPL
="${TMPDIR1}/${TMPB}.lo"
29 TMPA
="${TMPDIR1}/lib${TMPB}.la"
30 TMPE
="${TMPDIR1}/${TMPB}.exe"
34 # Print a helpful header at the top of config.log
35 echo "# QEMU configure log $(date)" >> config.log
36 printf "# Configured with:" >> config.log
37 printf " '%s'" "$0" "$@" >> config.log
39 echo "#" >> config.log
44 while test -n "$2"; do
53 # Run the compiler, capturing its output to the log. First argument
54 # is compiler binary to execute.
57 echo $compiler "$@" >> config.log
58 $compiler "$@" >> config.log
2>&1 ||
return $?
59 # Test passed. If this is an --enable-werror build, rerun
60 # the test with -Werror and bail out if it fails. This
61 # makes warning-generating-errors in configure test code
62 # obvious to developers.
63 if test "$werror" != "yes"; then
66 # Don't bother rerunning the compile if we were already using -Werror
72 echo $compiler -Werror "$@" >> config.log
73 $compiler -Werror "$@" >> config.log
2>&1 && return $?
74 error_exit
"configure test passed without -Werror but failed with -Werror." \
75 "This is probably a bug in the configure script. The failing command" \
76 "will be at the bottom of config.log." \
77 "You can run configure with --disable-werror to bypass this check."
81 do_compiler
"$cc" "$@"
85 do_compiler
"$cxx" "$@"
89 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
90 # options which some versions of GCC's C++ compiler complain about
91 # because they only make sense for C programs.
93 for arg
in $QEMU_CFLAGS; do
95 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
96 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
99 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
107 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
113 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
119 # Run the compiler, capturing its output to the log.
120 echo $libtool $mode --tag=CC
$cc "$@" >> config.log
121 $libtool $mode --tag=CC
$cc "$@" >> config.log
2>&1 ||
return $?
122 # Test passed. If this is an --enable-werror build, rerun
123 # the test with -Werror and bail out if it fails. This
124 # makes warning-generating-errors in configure test code
125 # obvious to developers.
126 if test "$werror" != "yes"; then
129 # Don't bother rerunning the compile if we were already using -Werror
135 echo $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
136 $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
2>&1 && return $?
137 error_exit
"configure test passed without -Werror but failed with -Werror." \
138 "This is probably a bug in the configure script. The failing command" \
139 "will be at the bottom of config.log." \
140 "You can run configure with --disable-werror to bypass this check."
144 do_libtool
--mode=compile
$QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC ||
return $?
145 do_libtool
--mode=link
$LDFLAGS -o $TMPA $TMPL -rpath /usr
/local
/lib
148 # symbolically link $1 to $2. Portable version of "ln -sf".
151 mkdir
-p "$(dirname "$2")"
155 # check whether a command is available to this shell (may be either an
156 # executable or a builtin)
158 type "$1" >/dev
/null
2>&1
161 # search for an executable in PATH
167 # pathname has a dir component?
168 if [ "${local_command#*/}" != "$local_command" ]; then
169 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
170 echo "$local_command"
174 if [ -z "$local_command" ]; then
179 for local_dir
in $PATH; do
180 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
181 echo "$local_dir/$local_command"
182 IFS
="${local_ifs:-$(printf ' \t\n')}"
187 IFS
="${local_ifs:-$(printf ' \t\n')}"
192 echo "$trace_backends" |
grep "$1" >/dev
/null
196 source_path
=`dirname "$0"`
199 interp_prefix
="/usr/gnemul/qemu-%M"
203 block_drv_rw_whitelist
=""
204 block_drv_ro_whitelist
=""
210 cc_i386
=i386-pc-linux-gnu-gcc
215 # Don't accept a target_list environment variable.
218 # Default value for a variable defining feature "foo".
219 # * foo="no" feature will only be used if --enable-foo arg is given
220 # * foo="" feature will be searched for, and if found, will be used
221 # unless --disable-foo is given
222 # * foo="yes" this value will only be set by --enable-foo flag.
223 # feature will searched for,
224 # if not found, configure exits with error
226 # Always add --enable-foo and --disable-foo command line args.
227 # Distributions want to ensure that several features are compiled in, and it
228 # is impossible without a --enable-foo that exits if a feature is not found.
252 xen_pci_passthrough
=""
274 LDFLAGS_SHARED
="-shared"
277 mandir
="\${prefix}/share/man"
278 datadir
="\${prefix}/share"
279 qemu_docdir
="\${prefix}/share/doc/qemu"
280 bindir
="\${prefix}/bin"
281 libdir
="\${prefix}/lib"
282 libexecdir
="\${prefix}/libexec"
283 includedir
="\${prefix}/include"
284 sysconfdir
="\${prefix}/etc"
285 local_statedir
="\${prefix}/var"
317 guest_agent_with_vss
="no"
328 glusterfs_discard
="no"
329 glusterfs_zerofill
="no"
343 # parse CC options first
345 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
347 --cross-prefix=*) cross_prefix
="$optarg"
351 --cxx=*) CXX
="$optarg"
353 --source-path=*) source_path
="$optarg"
355 --cpu=*) cpu
="$optarg"
357 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
358 EXTRA_CFLAGS
="$optarg"
360 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
361 EXTRA_LDFLAGS
="$optarg"
363 --enable-debug-info) debug_info
="yes"
365 --disable-debug-info) debug_info
="no"
370 # Using uname is really, really broken. Once we have the right set of checks
371 # we can eliminate its usage altogether.
373 # Preferred compiler:
375 # ${cross_prefix}gcc (if cross-prefix specified)
377 if test -z "${CC}${cross_prefix}"; then
380 cc
="${CC-${cross_prefix}gcc}"
383 if test -z "${CXX}${cross_prefix}"; then
386 cxx
="${CXX-${cross_prefix}g++}"
389 ar="${AR-${cross_prefix}ar}"
390 as
="${AS-${cross_prefix}as}"
392 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
393 ld
="${LD-${cross_prefix}ld}"
394 libtool
="${LIBTOOL-${cross_prefix}libtool}"
395 nm
="${NM-${cross_prefix}nm}"
396 strip
="${STRIP-${cross_prefix}strip}"
397 windres
="${WINDRES-${cross_prefix}windres}"
398 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
400 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
402 pkg_config
=query_pkg_config
403 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
404 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
406 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
407 ARFLAGS
="${ARFLAGS-rv}"
409 # default flags for all hosts
410 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
411 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
412 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
413 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
414 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
415 if test "$debug_info" = "yes"; then
417 LDFLAGS
="-g $LDFLAGS"
420 # make source path absolute
421 source_path
=`cd "$source_path"; pwd`
423 # running configure in the source tree?
424 # we know that's the case if configure is there.
425 if test -f "./configure"; then
426 pwd_is_source_path
="y"
428 pwd_is_source_path
="n"
434 #error $1 not defined
436 int main(void) { return 0; }
444 int main(void) { return 0; }
451 int main(void) { return 0; }
455 if check_define __linux__
; then
457 elif check_define _WIN32
; then
459 elif check_define __OpenBSD__
; then
461 elif check_define __sun__
; then
463 elif check_define __HAIKU__
; then
469 # Some host OSes need non-standard checks for which CPU to use.
470 # Note that these checks are broken for cross-compilation: if you're
471 # cross-compiling to one of these OSes then you'll need to specify
472 # the correct CPU with the --cpu option.
475 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
476 # run 64-bit userspace code.
477 # If the user didn't specify a CPU explicitly and the kernel says this is
478 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
479 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
484 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
485 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
490 if test ! -z "$cpu" ; then
491 # command line argument
493 elif check_define __i386__
; then
495 elif check_define __x86_64__
; then
496 if check_define __ILP32__
; then
501 elif check_define __sparc__
; then
502 if check_define __arch64__
; then
507 elif check_define _ARCH_PPC
; then
508 if check_define _ARCH_PPC64
; then
513 elif check_define __mips__
; then
515 elif check_define __ia64__
; then
517 elif check_define __s390__
; then
518 if check_define __s390x__
; then
523 elif check_define __arm__
; then
525 elif check_define __aarch64__
; then
527 elif check_define __hppa__
; then
534 # Normalise host CPU name and set ARCH.
535 # Note that this case should only have supported host CPUs, not guests.
537 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
540 i386|i486|i586|i686|i86pc|BePC
)
559 # This will result in either an error or falling back to TCI later
563 if test -z "$ARCH"; then
569 # host *BSD for user mode
575 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
576 audio_possible_drivers
="sdl"
581 audio_possible_drivers
="dsound sdl"
582 if check_include dsound.h
; then
583 audio_drv_list
="dsound"
591 audio_possible_drivers
="oss sdl pa"
597 audio_possible_drivers
="oss sdl pa"
598 # needed for kinfo_getvmmap(3) in libutil.h
600 netmap
="" # enable netmap autodetect
601 HOST_VARIANT_DIR
="freebsd"
607 audio_possible_drivers
="oss sdl pa"
608 HOST_VARIANT_DIR
="dragonfly"
614 audio_possible_drivers
="oss sdl"
616 HOST_VARIANT_DIR
="netbsd"
622 audio_possible_drivers
="sdl"
623 HOST_VARIANT_DIR
="openbsd"
628 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
629 if [ "$cpu" = "x86_64" ] ; then
630 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
631 LDFLAGS
="-arch x86_64 $LDFLAGS"
634 audio_drv_list
="coreaudio"
635 audio_possible_drivers
="coreaudio sdl"
636 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
637 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
638 # Disable attempts to use ObjectiveC features in os/object.h since they
639 # won't work when we're compiling with gcc as a C compiler.
640 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
641 HOST_VARIANT_DIR
="darwin"
646 install="${INSTALL-ginstall}"
648 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
649 needs_libsunmath
="no"
650 solarisrev
=`uname -r | cut -f2 -d.`
651 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
652 if test "$solarisrev" -le 9 ; then
653 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
654 needs_libsunmath
="yes"
655 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
656 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
657 LIBS
="-lsunmath $LIBS"
659 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
660 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
661 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
662 "Studio 11 can be downloaded from www.sun.com."
666 if test -f /usr
/include
/sys
/soundcard.h
; then
669 audio_possible_drivers
="oss sdl"
670 # needed for CMSG_ macros in sys/socket.h
671 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
672 # needed for TIOCWIN* defines in termios.h
673 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
674 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
675 solarisnetlibs
="-lsocket -lnsl -lresolv"
676 LIBS
="$solarisnetlibs $LIBS"
677 libs_qga
="$solarisnetlibs $libs_qga"
685 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
686 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
690 audio_possible_drivers
="oss alsa sdl pa"
696 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
700 if [ "$bsd" = "yes" ] ; then
701 if [ "$darwin" != "yes" ] ; then
706 : ${make=${MAKE-make}}
707 : ${install=${INSTALL-install}}
708 : ${python=${PYTHON-python}}
709 : ${smbd=${SMBD-/usr/sbin/smbd}}
711 # Default objcc to clang if available, otherwise use CC
718 if test "$mingw32" = "yes" ; then
721 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
722 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
723 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
724 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
726 if compile_prog
"" "-liberty" ; then
727 LIBS
="-liberty $LIBS"
729 prefix
="c:/Program Files/QEMU"
732 qemu_docdir
="\${prefix}"
734 sysconfdir
="\${prefix}"
737 libs_qga
="-lws2_32 -lwinmm -lpowrprof $libs_qga"
743 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
745 --help|
-h) show_help
=yes
747 --version|
-V) exec cat $source_path/VERSION
749 --prefix=*) prefix
="$optarg"
751 --interp-prefix=*) interp_prefix
="$optarg"
759 --host-cc=*) host_cc
="$optarg"
763 --iasl=*) iasl
="$optarg"
765 --objcc=*) objcc
="$optarg"
767 --make=*) make="$optarg"
769 --install=*) install="$optarg"
771 --python=*) python
="$optarg"
773 --gcov=*) gcov_tool
="$optarg"
775 --smbd=*) smbd
="$optarg"
783 --disable-debug-info)
790 --target-list=*) target_list
="$optarg"
792 --enable-trace-backends=*) trace_backends
="$optarg"
794 # XXX: backwards compatibility
795 --enable-trace-backend=*) trace_backends
="$optarg"
797 --with-trace-file=*) trace_file
="$optarg"
799 --enable-gprof) gprof
="yes"
801 --enable-gcov) gcov
="yes"
805 LDFLAGS
="-static $LDFLAGS"
806 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
808 --mandir=*) mandir
="$optarg"
810 --bindir=*) bindir
="$optarg"
812 --libdir=*) libdir
="$optarg"
814 --libexecdir=*) libexecdir
="$optarg"
816 --includedir=*) includedir
="$optarg"
818 --datadir=*) datadir
="$optarg"
820 --with-confsuffix=*) confsuffix
="$optarg"
822 --docdir=*) qemu_docdir
="$optarg"
824 --sysconfdir=*) sysconfdir
="$optarg"
826 --localstatedir=*) local_statedir
="$optarg"
828 --sbindir=*|
--sharedstatedir=*|\
829 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
830 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
831 # These switches are silently ignored, for compatibility with
832 # autoconf-generated configure scripts. This allows QEMU's
833 # configure to be used by RPM and similar macros that set
834 # lots of directory switches by default.
836 --with-system-pixman) pixman
="system"
838 --without-system-pixman) pixman
="internal"
840 --without-pixman) pixman
="none"
842 --disable-sdl) sdl
="no"
844 --enable-sdl) sdl
="yes"
846 --with-sdlabi=*) sdlabi
="$optarg"
848 --disable-qom-cast-debug) qom_cast_debug
="no"
850 --enable-qom-cast-debug) qom_cast_debug
="yes"
852 --disable-virtfs) virtfs
="no"
854 --enable-virtfs) virtfs
="yes"
856 --disable-vnc) vnc
="no"
858 --enable-vnc) vnc
="yes"
860 --oss-lib=*) oss_lib
="$optarg"
862 --audio-drv-list=*) audio_drv_list
="$optarg"
864 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
866 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
868 --enable-debug-tcg) debug_tcg
="yes"
870 --disable-debug-tcg) debug_tcg
="no"
873 # Enable debugging options that aren't excessively noisy
878 --enable-sparse) sparse
="yes"
880 --disable-sparse) sparse
="no"
882 --disable-strip) strip_opt
="no"
884 --disable-vnc-tls) vnc_tls
="no"
886 --enable-vnc-tls) vnc_tls
="yes"
888 --disable-vnc-sasl) vnc_sasl
="no"
890 --enable-vnc-sasl) vnc_sasl
="yes"
892 --disable-vnc-jpeg) vnc_jpeg
="no"
894 --enable-vnc-jpeg) vnc_jpeg
="yes"
896 --disable-vnc-png) vnc_png
="no"
898 --enable-vnc-png) vnc_png
="yes"
900 --disable-vnc-ws) vnc_ws
="no"
902 --enable-vnc-ws) vnc_ws
="yes"
904 --disable-slirp) slirp
="no"
906 --disable-uuid) uuid
="no"
908 --enable-uuid) uuid
="yes"
910 --disable-vde) vde
="no"
912 --enable-vde) vde
="yes"
914 --disable-netmap) netmap
="no"
916 --enable-netmap) netmap
="yes"
918 --disable-xen) xen
="no"
920 --enable-xen) xen
="yes"
922 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
924 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
926 --disable-brlapi) brlapi
="no"
928 --enable-brlapi) brlapi
="yes"
930 --disable-bluez) bluez
="no"
932 --enable-bluez) bluez
="yes"
934 --disable-kvm) kvm
="no"
936 --enable-kvm) kvm
="yes"
938 --disable-tcg-interpreter) tcg_interpreter
="no"
940 --enable-tcg-interpreter) tcg_interpreter
="yes"
942 --disable-cap-ng) cap_ng
="no"
944 --enable-cap-ng) cap_ng
="yes"
946 --disable-spice) spice
="no"
948 --enable-spice) spice
="yes"
950 --disable-libiscsi) libiscsi
="no"
952 --enable-libiscsi) libiscsi
="yes"
954 --disable-libnfs) libnfs
="no"
956 --enable-libnfs) libnfs
="yes"
958 --enable-profiler) profiler
="yes"
960 --disable-cocoa) cocoa
="no"
965 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
967 --disable-system) softmmu
="no"
969 --enable-system) softmmu
="yes"
976 --disable-linux-user) linux_user
="no"
978 --enable-linux-user) linux_user
="yes"
980 --disable-bsd-user) bsd_user
="no"
982 --enable-bsd-user) bsd_user
="yes"
984 --enable-guest-base) guest_base
="yes"
986 --disable-guest-base) guest_base
="no"
988 --enable-pie) pie
="yes"
990 --disable-pie) pie
="no"
992 --enable-werror) werror
="yes"
994 --disable-werror) werror
="no"
996 --enable-stack-protector) stack_protector
="yes"
998 --disable-stack-protector) stack_protector
="no"
1000 --disable-curses) curses
="no"
1002 --enable-curses) curses
="yes"
1004 --disable-curl) curl
="no"
1006 --enable-curl) curl
="yes"
1008 --disable-fdt) fdt
="no"
1010 --enable-fdt) fdt
="yes"
1012 --disable-linux-aio) linux_aio
="no"
1014 --enable-linux-aio) linux_aio
="yes"
1016 --disable-attr) attr
="no"
1018 --enable-attr) attr
="yes"
1020 --disable-blobs) blobs
="no"
1022 --with-pkgversion=*) pkgversion
=" ($optarg)"
1024 --with-coroutine=*) coroutine
="$optarg"
1026 --disable-coroutine-pool) coroutine_pool
="no"
1028 --enable-coroutine-pool) coroutine_pool
="yes"
1030 --disable-docs) docs
="no"
1032 --enable-docs) docs
="yes"
1034 --disable-vhost-net) vhost_net
="no"
1036 --enable-vhost-net) vhost_net
="yes"
1038 --disable-vhost-scsi) vhost_scsi
="no"
1040 --enable-vhost-scsi) vhost_scsi
="yes"
1042 --disable-opengl) opengl
="no"
1044 --enable-opengl) opengl
="yes"
1046 --disable-rbd) rbd
="no"
1048 --enable-rbd) rbd
="yes"
1050 --disable-xfsctl) xfs
="no"
1052 --enable-xfsctl) xfs
="yes"
1054 --disable-smartcard-nss) smartcard_nss
="no"
1056 --enable-smartcard-nss) smartcard_nss
="yes"
1058 --disable-libusb) libusb
="no"
1060 --enable-libusb) libusb
="yes"
1062 --disable-usb-redir) usb_redir
="no"
1064 --enable-usb-redir) usb_redir
="yes"
1066 --disable-zlib-test) zlib
="no"
1068 --disable-lzo) lzo
="no"
1070 --enable-lzo) lzo
="yes"
1072 --disable-snappy) snappy
="no"
1074 --enable-snappy) snappy
="yes"
1076 --disable-bzip2) bzip2="no"
1078 --enable-bzip2) bzip2="yes"
1080 --enable-guest-agent) guest_agent
="yes"
1082 --disable-guest-agent) guest_agent
="no"
1084 --enable-guest-agent-msi) guest_agent_msi
="yes"
1086 --disable-guest-agent-msi) guest_agent_msi
="no"
1088 --with-vss-sdk) vss_win32_sdk
=""
1090 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1092 --without-vss-sdk) vss_win32_sdk
="no"
1094 --with-win-sdk) win_sdk
=""
1096 --with-win-sdk=*) win_sdk
="$optarg"
1098 --without-win-sdk) win_sdk
="no"
1100 --enable-tools) want_tools
="yes"
1102 --disable-tools) want_tools
="no"
1104 --enable-seccomp) seccomp
="yes"
1106 --disable-seccomp) seccomp
="no"
1108 --disable-glusterfs) glusterfs
="no"
1110 --enable-glusterfs) glusterfs
="yes"
1112 --disable-archipelago) archipelago
="no"
1114 --enable-archipelago) archipelago
="yes"
1116 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1117 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1119 --disable-gtk) gtk
="no"
1121 --enable-gtk) gtk
="yes"
1123 --disable-gnutls) gnutls
="no"
1125 --enable-gnutls) gnutls
="yes"
1127 --enable-rdma) rdma
="yes"
1129 --disable-rdma) rdma
="no"
1131 --with-gtkabi=*) gtkabi
="$optarg"
1133 --disable-vte) vte
="no"
1135 --enable-vte) vte
="yes"
1137 --disable-tpm) tpm
="no"
1139 --enable-tpm) tpm
="yes"
1141 --disable-libssh2) libssh2
="no"
1143 --enable-libssh2) libssh2
="yes"
1145 --enable-vhdx) vhdx
="yes"
1147 --disable-vhdx) vhdx
="no"
1149 --disable-quorum) quorum
="no"
1151 --enable-quorum) quorum
="yes"
1153 --disable-numa) numa
="no"
1155 --enable-numa) numa
="yes"
1157 --disable-tcmalloc) tcmalloc
="no"
1159 --enable-tcmalloc) tcmalloc
="yes"
1162 echo "ERROR: unknown option $opt"
1163 echo "Try '$0 --help' for more information"
1169 if ! has
$python; then
1170 error_exit
"Python not found. Use --python=/path/to/python"
1173 # Note that if the Python conditional here evaluates True we will exit
1174 # with status 1 which is a shell 'false' value.
1175 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1176 error_exit
"Cannot use '$python', Python 2.4 or later is required." \
1177 "Note that Python 3 or later is not yet supported." \
1178 "Use --python=/path/to/python to specify a supported Python."
1181 # The -B switch was added in Python 2.6.
1182 # If it is supplied, compiled files are not written.
1183 # Use it for Python versions which support it.
1184 if $python -B -c 'import sys; sys.exit(0)' 2>/dev
/null
; then
1191 LDFLAGS
="-m32 $LDFLAGS"
1195 LDFLAGS
="-m64 $LDFLAGS"
1198 LDFLAGS
="-m32 $LDFLAGS"
1199 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1202 LDFLAGS
="-m64 $LDFLAGS"
1203 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1207 LDFLAGS
="-m31 $LDFLAGS"
1211 LDFLAGS
="-m64 $LDFLAGS"
1215 LDFLAGS
="-m32 $LDFLAGS"
1216 cc_i386
='$(CC) -m32'
1220 LDFLAGS
="-m64 $LDFLAGS"
1221 cc_i386
='$(CC) -m32'
1225 LDFLAGS
="-mx32 $LDFLAGS"
1226 cc_i386
='$(CC) -m32'
1228 # No special flags required for other host CPUs
1231 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1232 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1234 default_target_list
=""
1238 if [ "$softmmu" = "yes" ]; then
1239 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1241 if [ "$linux_user" = "yes" ]; then
1242 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1244 if [ "$bsd_user" = "yes" ]; then
1245 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1248 for config
in $mak_wilds; do
1249 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1252 if test x
"$show_help" = x
"yes" ; then
1255 Usage: configure [options]
1256 Options: [defaults in brackets after descriptions]
1259 --help print this message
1260 --prefix=PREFIX install in PREFIX [$prefix]
1261 --interp-prefix=PREFIX where to find shared libraries, etc.
1262 use %M for cpu name [$interp_prefix]
1263 --target-list=LIST set target list (default: build everything)
1264 $(echo Available targets: $default_target_list | \
1265 fold -s -w 53 | sed -e 's/^/ /')
1267 Advanced options (experts only):
1268 --source-path=PATH path of source code [$source_path]
1269 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1270 --cc=CC use C compiler CC [$cc]
1271 --iasl=IASL use ACPI compiler IASL [$iasl]
1272 --host-cc=CC use C compiler CC [$host_cc] for code run at
1274 --cxx=CXX use C++ compiler CXX [$cxx]
1275 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1276 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1277 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1278 --make=MAKE use specified make [$make]
1279 --install=INSTALL use specified install [$install]
1280 --python=PYTHON use specified python [$python]
1281 --smbd=SMBD use specified smbd [$smbd]
1282 --static enable static build [$static]
1283 --mandir=PATH install man pages in PATH
1284 --datadir=PATH install firmware in PATH$confsuffix
1285 --docdir=PATH install documentation in PATH$confsuffix
1286 --bindir=PATH install binaries in PATH
1287 --libdir=PATH install libraries in PATH
1288 --sysconfdir=PATH install config in PATH$confsuffix
1289 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1290 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1291 --enable-debug enable common debug build options
1292 --disable-strip disable stripping binaries
1293 --disable-werror disable compilation abort on warning
1294 --disable-stack-protector disable compiler-provided stack protection
1295 --audio-drv-list=LIST set audio drivers list:
1296 Available drivers: $audio_possible_drivers
1297 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1298 --block-drv-rw-whitelist=L
1299 set block driver read-write whitelist
1300 (affects only QEMU, not qemu-img)
1301 --block-drv-ro-whitelist=L
1302 set block driver read-only whitelist
1303 (affects only QEMU, not qemu-img)
1304 --enable-trace-backends=B Set trace backend
1305 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1306 --with-trace-file=NAME Full PATH,NAME of file to store traces
1308 --disable-slirp disable SLIRP userspace network connectivity
1309 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1310 --oss-lib path to OSS library
1311 --cpu=CPU Build for host CPU [$cpu]
1312 --with-coroutine=BACKEND coroutine backend. Supported options:
1313 gthread, ucontext, sigaltstack, windows
1314 --enable-gcov enable test coverage analysis with gcov
1315 --gcov=GCOV use specified gcov [$gcov_tool]
1316 --disable-blobs disable installing provided firmware blobs
1317 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1318 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1320 Optional features, enabled with --enable-FEATURE and
1321 disabled with --disable-FEATURE, default is enabled if available:
1323 system all system emulation targets
1324 user supported user emulation targets
1325 linux-user all linux usermode emulation targets
1326 bsd-user all BSD usermode emulation targets
1327 guest-base GUEST_BASE support for usermode emulation targets
1328 docs build documentation
1329 guest-agent build the QEMU Guest Agent
1330 guest-agent-msi build guest agent Windows MSI installation package
1331 pie Position Independent Executables
1332 modules modules support
1333 debug-tcg TCG debugging (default is disabled)
1334 debug-info debugging information
1335 sparse sparse checker
1337 gnutls GNUTLS cryptography support
1339 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1341 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1342 vte vte support for the gtk UI
1345 vnc-tls TLS encryption for VNC server
1346 vnc-sasl SASL encryption for VNC server
1347 vnc-jpeg JPEG lossy compression for VNC server
1348 vnc-png PNG compression for VNC server
1349 vnc-ws Websockets support for VNC server
1350 cocoa Cocoa UI (Mac OS X only)
1352 xen xen backend driver support
1354 brlapi BrlAPI (Braile)
1355 curl curl connectivity
1357 bluez bluez stack connectivity
1358 kvm KVM acceleration support
1359 rdma RDMA-based migration support
1361 vde support for vde network
1362 netmap support for netmap network
1363 linux-aio Linux AIO support
1364 cap-ng libcap-ng support
1365 attr attr and xattr support
1366 vhost-net vhost-net acceleration support
1368 rbd rados block device (rbd)
1369 libiscsi iscsi support
1371 smartcard-nss smartcard nss support
1372 libusb libusb (for usb passthrough)
1373 usb-redir usb network redirection support
1374 lzo support of lzo compression library
1375 snappy support of snappy compression library
1376 bzip2 support of bzip2 compression library
1377 (for reading bzip2-compressed dmg images)
1378 seccomp seccomp support
1379 coroutine-pool coroutine freelist (better performance)
1380 glusterfs GlusterFS backend
1381 archipelago Archipelago backend
1383 libssh2 ssh block device support
1384 vhdx support for the Microsoft VHDX image format
1385 quorum quorum block filter support
1386 numa libnuma support
1387 tcmalloc tcmalloc support
1389 NOTE: The object files are built at the place where configure is launched
1394 # Now we have handled --enable-tcg-interpreter and know we're not just
1395 # printing the help message, bail out if the host CPU isn't supported.
1396 if test "$ARCH" = "unknown"; then
1397 if test "$tcg_interpreter" = "yes" ; then
1398 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1401 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1405 # Consult white-list to determine whether to enable werror
1406 # by default. Only enable by default for git builds
1407 z_version
=`cut -f3 -d. $source_path/VERSION`
1409 if test -z "$werror" ; then
1410 if test -d "$source_path/.git" -a \
1411 "$linux" = "yes" ; then
1418 # check that the C compiler works.
1420 if compile_object
; then
1421 : C compiler works ok
1423 error_exit
"\"$cc\" either does not exist or does not work"
1426 # Check that the C++ compiler exists and works with the C compiler
1429 int c_function(void);
1430 int main(void) { return c_function(); }
1437 int c_function(void);
1439 int c_function(void) { return 42; }
1444 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1445 # C++ compiler $cxx works ok with C compiler $cc
1448 echo "C++ compiler $cxx does not work with C compiler $cc"
1449 echo "Disabling C++ specific optional code"
1453 echo "No C++ compiler available; disabling C++ specific optional code"
1457 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1458 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1459 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1460 gcc_flags
="-Wendif-labels $gcc_flags"
1461 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1462 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1463 # Note that we do not add -Werror to gcc_flags here, because that would
1464 # enable it for all configure tests. If a configure test failed due
1465 # to -Werror this would just silently disable some features,
1466 # so it's too error prone.
1468 cc_has_warning_flag
() {
1471 # Use the positive sense of the flag when testing for -Wno-wombat
1472 # support (gcc will happily accept the -Wno- form of unknown
1474 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1475 compile_prog
"-Werror $optflag" ""
1478 for flag
in $gcc_flags; do
1479 if cc_has_warning_flag
$flag ; then
1480 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1484 if test "$stack_protector" != "no"; then
1485 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1487 for flag
in $gcc_flags; do
1488 # We need to check both a compile and a link, since some compiler
1489 # setups fail only on a .c->.o compile and some only at link time
1490 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1491 compile_prog
"-Werror $flag" ""; then
1492 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1493 LIBTOOLFLAGS
="$LIBTOOLFLAGS -Wc,$flag"
1498 if test "$stack_protector" = yes; then
1499 if test $sp_on = 0; then
1500 error_exit
"Stack protector not supported"
1505 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1506 # large functions that use global variables. The bug is in all releases of
1507 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1508 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1510 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1511 int main(void) { return 0; }
1513 #error No bug in this compiler.
1516 if compile_prog
"-Werror -fno-gcse" "" ; then
1517 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1520 if test "$static" = "yes" ; then
1521 if test "$modules" = "yes" ; then
1522 error_exit
"static and modules are mutually incompatible"
1524 if test "$pie" = "yes" ; then
1525 error_exit
"static and pie are mutually incompatible"
1531 # Unconditional check for compiler __thread support
1533 static __thread int tls_var;
1534 int main(void) { return tls_var; }
1537 if ! compile_prog
"-Werror" "" ; then
1538 error_exit
"Your compiler does not support the __thread specifier for " \
1539 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1542 if test "$pie" = ""; then
1543 case "$cpu-$targetos" in
1544 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1552 if test "$pie" != "no" ; then
1556 # define THREAD __thread
1561 static THREAD int tls_var;
1563 int main(void) { return tls_var; }
1566 if compile_prog
"-fPIE -DPIE" "-pie"; then
1567 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1568 LDFLAGS
="-pie $LDFLAGS"
1570 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1571 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1574 if test "$pie" = "yes"; then
1575 error_exit
"PIE not available due to missing toolchain support"
1577 echo "Disabling PIE due to missing toolchain support"
1582 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1583 CFLAGS_NOPIE
="-fno-pie"
1584 LDFLAGS_NOPIE
="-nopie"
1588 # check for broken gcc and libtool in RHEL5
1589 if test -n "$libtool" -a "$pie" != "no" ; then
1592 void *f(unsigned char *buf, int len);
1593 void *g(unsigned char *buf, int len);
1596 f(unsigned char *buf, int len)
1602 g(unsigned char *buf, int len)
1608 if ! libtool_prog
; then
1609 echo "Disabling libtool due to broken toolchain support"
1614 ##########################################
1615 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1616 # use i686 as default anyway, but for those that don't, an explicit
1617 # specification is necessary
1619 if test "$cpu" = "i386"; then
1621 static int sfaa(int *ptr)
1623 return __sync_fetch_and_and(ptr, 0);
1629 val = __sync_val_compare_and_swap(&val, 0, 1);
1634 if ! compile_prog
"" "" ; then
1635 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1639 #########################################
1640 # Solaris specific configure tool chain decisions
1642 if test "$solaris" = "yes" ; then
1643 if has
$install; then
1646 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1647 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1648 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1650 if test "`path_of $install`" = "/usr/sbin/install" ; then
1651 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1652 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1653 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1658 if test -f /usr
/ccs
/bin
/ar ; then
1659 error_exit
"No path includes ar" \
1660 "Add /usr/ccs/bin to your path and rerun configure"
1662 error_exit
"No path includes ar"
1666 if test -z "${target_list+xxx}" ; then
1667 target_list
="$default_target_list"
1669 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
1672 # Check that we recognised the target name; this allows a more
1673 # friendly error message than if we let it fall through.
1674 for target
in $target_list; do
1675 case " $default_target_list " in
1679 error_exit
"Unknown target name '$target'"
1684 # see if system emulation was really requested
1685 case " $target_list " in
1686 *"-softmmu "*) softmmu
=yes
1692 feature_not_found
() {
1696 error_exit
"User requested feature $feature" \
1697 "configure was not able to find it." \
1702 # big/little endian test
1704 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1705 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1706 extern int foo(short *, short *);
1707 int main(int argc, char *argv[]) {
1708 return foo(big_endian, little_endian);
1712 if compile_object
; then
1713 if grep -q BiGeNdIaN
$TMPO ; then
1715 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1718 echo big
/little
test failed
1721 echo big
/little
test failed
1724 ##########################################
1728 #include <sys/socket.h>
1729 #include <linux/ip.h>
1730 int main(void) { return sizeof(struct mmsghdr); }
1732 if compile_prog
"" "" ; then
1738 ##########################################
1741 if ! has
"$pkg_config_exe"; then
1742 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1745 ##########################################
1748 if test "$linux_user" = "yes"; then
1751 #include <linux/futex.h>
1753 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1759 if ! compile_object
; then
1760 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1764 ##########################################
1767 if test "$zlib" != "no" ; then
1770 int main(void) { zlibVersion(); return 0; }
1772 if compile_prog
"" "-lz" ; then
1775 error_exit
"zlib check failed" \
1776 "Make sure to have the zlib libs and headers installed."
1781 ##########################################
1784 if test "$lzo" != "no" ; then
1786 #include <lzo/lzo1x.h>
1787 int main(void) { lzo_version(); return 0; }
1789 if compile_prog
"" "-llzo2" ; then
1790 libs_softmmu
="$libs_softmmu -llzo2"
1793 if test "$lzo" = "yes"; then
1794 feature_not_found
"liblzo2" "Install liblzo2 devel"
1800 ##########################################
1803 if test "$snappy" != "no" ; then
1805 #include <snappy-c.h>
1806 int main(void) { snappy_max_compressed_length(4096); return 0; }
1808 if compile_prog
"" "-lsnappy" ; then
1809 libs_softmmu
="$libs_softmmu -lsnappy"
1812 if test "$snappy" = "yes"; then
1813 feature_not_found
"libsnappy" "Install libsnappy devel"
1819 ##########################################
1822 if test "$bzip2" != "no" ; then
1825 int main(void) { BZ2_bzlibVersion(); return 0; }
1827 if compile_prog
"" "-lbz2" ; then
1830 if test "$bzip2" = "yes"; then
1831 feature_not_found
"libbzip2" "Install libbzip2 devel"
1837 ##########################################
1840 if test "$seccomp" != "no" ; then
1841 if test "$cpu" = "i386" ||
test "$cpu" = "x86_64" &&
1842 $pkg_config --atleast-version=2.1.1 libseccomp
; then
1843 libs_softmmu
="$libs_softmmu `$pkg_config --libs libseccomp`"
1844 QEMU_CFLAGS
="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1847 if test "$seccomp" = "yes"; then
1848 feature_not_found
"libseccomp" "Install libseccomp devel >= 2.1.1"
1853 ##########################################
1856 if test "$xen" != "no" ; then
1857 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1859 # First we test whether Xen headers and libraries are available.
1860 # If no, we are done and there is no Xen support.
1861 # If yes, more tests are run to detect the Xen version.
1865 #include <xenctrl.h>
1870 if ! compile_prog
"" "$xen_libs" ; then
1872 if test "$xen" = "yes" ; then
1873 feature_not_found
"xen" "Install xen devel"
1879 cat > $TMPC <<EOF &&
1880 #include <xenctrl.h>
1881 #include <xenstore.h>
1883 #include <xen/hvm/hvm_info_table.h>
1884 #if !defined(HVM_MAX_VCPUS)
1885 # error HVM_MAX_VCPUS not defined
1890 xc = xc_interface_open(0, 0, 0);
1891 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1892 xc_gnttab_open(NULL, 0);
1893 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1894 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1895 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1899 compile_prog
"" "$xen_libs"
1901 xen_ctrl_version
=450
1905 cat > $TMPC <<EOF &&
1906 #include <xenctrl.h>
1907 #include <xenstore.h>
1909 #include <xen/hvm/hvm_info_table.h>
1910 #if !defined(HVM_MAX_VCPUS)
1911 # error HVM_MAX_VCPUS not defined
1916 xc = xc_interface_open(0, 0, 0);
1917 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1918 xc_gnttab_open(NULL, 0);
1919 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1920 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1924 compile_prog
"" "$xen_libs"
1926 xen_ctrl_version
=420
1930 cat > $TMPC <<EOF &&
1931 #include <xenctrl.h>
1934 #include <xen/hvm/hvm_info_table.h>
1935 #if !defined(HVM_MAX_VCPUS)
1936 # error HVM_MAX_VCPUS not defined
1940 xc_interface_open(0, 0, 0);
1941 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1942 xc_gnttab_open(NULL, 0);
1943 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1947 compile_prog
"" "$xen_libs"
1949 xen_ctrl_version
=410
1954 cat > $TMPC <<EOF &&
1955 #include <xenctrl.h>
1958 #include <xen/hvm/hvm_info_table.h>
1959 #if !defined(HVM_MAX_VCPUS)
1960 # error HVM_MAX_VCPUS not defined
1963 struct xen_add_to_physmap xatp = {
1964 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1967 xc_interface_open();
1969 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1970 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1974 compile_prog
"" "$xen_libs"
1976 xen_ctrl_version
=400
1981 cat > $TMPC <<EOF &&
1982 #include <xenctrl.h>
1985 struct xen_add_to_physmap xatp = {
1986 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1989 xc_interface_open();
1991 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1992 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1996 compile_prog
"" "$xen_libs"
1998 xen_ctrl_version
=340
2003 cat > $TMPC <<EOF &&
2004 #include <xenctrl.h>
2008 xc_interface_open();
2010 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2014 compile_prog
"" "$xen_libs"
2016 xen_ctrl_version
=330
2019 # Xen version unsupported
2021 if test "$xen" = "yes" ; then
2022 feature_not_found
"xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2027 if test "$xen" = yes; then
2028 libs_softmmu
="$xen_libs $libs_softmmu"
2032 if test "$xen_pci_passthrough" != "no"; then
2033 if test "$xen" = "yes" && test "$linux" = "yes" &&
2034 test "$xen_ctrl_version" -ge 340; then
2035 xen_pci_passthrough
=yes
2037 if test "$xen_pci_passthrough" = "yes"; then
2038 if test "$xen_ctrl_version" -lt 340; then
2039 error_exit
"User requested feature Xen PCI Passthrough" \
2040 "This feature does not work with Xen 3.3"
2042 error_exit
"User requested feature Xen PCI Passthrough" \
2043 " but this feature requires /sys from Linux"
2045 xen_pci_passthrough
=no
2049 ##########################################
2052 if ! has
$libtool; then
2056 # MacOSX ships with a libtool which isn't the GNU one; weed this
2057 # out by checking whether libtool supports the --version switch
2058 if test -n "$libtool"; then
2059 if ! "$libtool" --version >/dev
/null
2>&1; then
2064 ##########################################
2066 if test "$sparse" != "no" ; then
2070 if test "$sparse" = "yes" ; then
2071 feature_not_found
"sparse" "Install sparse binary"
2077 ##########################################
2081 if $pkg_config --exists "x11"; then
2082 x11_cflags
=`$pkg_config --cflags x11`
2083 x11_libs
=`$pkg_config --libs x11`
2086 ##########################################
2089 if test "$gtkabi" = ""; then
2090 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2091 # Use 3.0 as a fallback if that is available.
2092 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2094 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2101 if test "$gtk" != "no"; then
2102 gtkpackage
="gtk+-$gtkabi"
2103 gtkx11package
="gtk+-x11-$gtkabi"
2104 if test "$gtkabi" = "3.0" ; then
2109 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2110 gtk_cflags
=`$pkg_config --cflags $gtkpackage`
2111 gtk_libs
=`$pkg_config --libs $gtkpackage`
2112 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2113 gtk_cflags
="$gtk_cflags $x11_cflags"
2114 gtk_libs
="$gtk_libs $x11_libs"
2116 libs_softmmu
="$gtk_libs $libs_softmmu"
2118 elif test "$gtk" = "yes"; then
2119 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2126 ##########################################
2129 if test "$gnutls" != "no"; then
2130 if $pkg_config --exists "gnutls"; then
2131 gnutls_cflags
=`$pkg_config --cflags gnutls`
2132 gnutls_libs
=`$pkg_config --libs gnutls`
2133 libs_softmmu
="$gnutls_libs $libs_softmmu"
2134 libs_tools
="$gnutls_libs $libs_tools"
2135 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2138 # gnutls_hash_init requires >= 2.9.10
2139 if $pkg_config --exists "gnutls >= 2.9.10"; then
2144 elif test "$gnutls" = "yes"; then
2145 feature_not_found
"gnutls" "Install gnutls devel"
2155 ##########################################
2158 if test "$vte" != "no"; then
2159 if test "$gtkabi" = "3.0"; then
2160 vtepackage
="vte-2.90"
2166 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2167 vte_cflags
=`$pkg_config --cflags $vtepackage`
2168 vte_libs
=`$pkg_config --libs $vtepackage`
2169 libs_softmmu
="$vte_libs $libs_softmmu"
2171 elif test "$vte" = "yes"; then
2172 if test "$gtkabi" = "3.0"; then
2173 feature_not_found
"vte" "Install libvte-2.90 devel"
2175 feature_not_found
"vte" "Install libvte devel"
2182 ##########################################
2185 # Look for sdl configuration program (pkg-config or sdl-config). Try
2186 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2188 if test $sdlabi = "2.0"; then
2189 sdl_config
=$sdl2_config
2191 sdlconfigname
=sdl2_config
2194 sdlconfigname
=sdl_config
2197 if test "`basename $sdl_config`" != $sdlconfigname && ! has
${sdl_config}; then
2198 sdl_config
=$sdlconfigname
2201 if $pkg_config $sdlname --exists; then
2202 sdlconfig
="$pkg_config $sdlname"
2203 _sdlversion
=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2204 elif has
${sdl_config}; then
2205 sdlconfig
="$sdl_config"
2206 _sdlversion
=`$sdlconfig --version | sed 's/[^0-9]//g'`
2208 if test "$sdl" = "yes" ; then
2209 feature_not_found
"sdl" "Install SDL devel"
2213 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2214 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2218 if test "$sdl" != "no" ; then
2221 #undef main /* We don't want SDL to override our main() */
2222 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2224 sdl_cflags
=`$sdlconfig --cflags 2> /dev/null`
2225 if test "$static" = "yes" ; then
2226 sdl_libs
=`$sdlconfig --static-libs 2>/dev/null`
2228 sdl_libs
=`$sdlconfig --libs 2> /dev/null`
2230 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2231 if test "$_sdlversion" -lt 121 ; then
2234 if test "$cocoa" = "no" ; then
2239 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2240 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2241 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2242 sdl_libs
="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2243 sdl_cflags
="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2245 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2251 else # sdl not found
2252 if test "$sdl" = "yes" ; then
2253 feature_not_found
"sdl" "Install SDL devel"
2256 fi # sdl compile test
2259 if test "$sdl" = "yes" ; then
2262 #if defined(SDL_VIDEO_DRIVER_X11)
2263 #include <X11/XKBlib.h>
2265 #error No x11 support
2267 int main(void) { return 0; }
2269 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2270 sdl_cflags
="$sdl_cflags $x11_cflags"
2271 sdl_libs
="$sdl_libs $x11_libs"
2273 libs_softmmu
="$sdl_libs $libs_softmmu"
2276 ##########################################
2277 # RDMA needs OpenFabrics libraries
2278 if test "$rdma" != "no" ; then
2280 #include <rdma/rdma_cma.h>
2281 int main(void) { return 0; }
2283 rdma_libs
="-lrdmacm -libverbs"
2284 if compile_prog
"" "$rdma_libs" ; then
2286 libs_softmmu
="$libs_softmmu $rdma_libs"
2288 if test "$rdma" = "yes" ; then
2290 " OpenFabrics librdmacm/libibverbs not present." \
2292 " (1) Fast: Install infiniband packages from your distro." \
2293 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2294 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2300 ##########################################
2301 # VNC TLS/WS detection
2302 if test "$vnc" = "yes" -a \
( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \
) ; then
2304 #include <gnutls/gnutls.h>
2305 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2307 vnc_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2308 vnc_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2309 if compile_prog
"$vnc_tls_cflags" "$vnc_tls_libs" ; then
2310 if test "$vnc_tls" != "no" ; then
2313 if test "$vnc_ws" != "no" ; then
2316 libs_softmmu
="$vnc_tls_libs $libs_softmmu"
2317 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_tls_cflags"
2319 if test "$vnc_tls" = "yes" ; then
2320 feature_not_found
"vnc-tls" "Install gnutls devel"
2322 if test "$vnc_ws" = "yes" ; then
2323 feature_not_found
"vnc-ws" "Install gnutls devel"
2330 ##########################################
2331 # Quorum probe (check for gnutls)
2332 if test "$quorum" != "no" ; then
2334 #include <gnutls/gnutls.h>
2335 #include <gnutls/crypto.h>
2336 int main(void) {char data[4096], digest[32];
2337 gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest);
2341 quorum_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2342 quorum_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2343 if compile_prog
"$quorum_tls_cflags" "$quorum_tls_libs" ; then
2345 libs_softmmu
="$quorum_tls_libs $libs_softmmu"
2346 libs_tools
="$quorum_tls_libs $libs_softmmu"
2347 QEMU_CFLAGS
="$QEMU_CFLAGS $quorum_tls_cflags"
2350 if test "$quorum" = "yes"; then
2351 feature_not_found
"gnutls" "gnutls > 2.10.0 required to compile Quorum"
2357 ##########################################
2358 # VNC SASL detection
2359 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2361 #include <sasl/sasl.h>
2363 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2365 # Assuming Cyrus-SASL installed in /usr prefix
2367 vnc_sasl_libs
="-lsasl2"
2368 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2370 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2371 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2373 if test "$vnc_sasl" = "yes" ; then
2374 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2380 ##########################################
2381 # VNC JPEG detection
2382 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2385 #include <jpeglib.h>
2386 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2389 vnc_jpeg_libs
="-ljpeg"
2390 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2392 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2393 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2395 if test "$vnc_jpeg" = "yes" ; then
2396 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2402 ##########################################
2404 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2406 //#include <stdio.h>
2410 png_structp png_ptr;
2411 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2412 return png_ptr != 0;
2415 if $pkg_config libpng
--exists; then
2416 vnc_png_cflags
=`$pkg_config libpng --cflags`
2417 vnc_png_libs
=`$pkg_config libpng --libs`
2420 vnc_png_libs
="-lpng"
2422 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2424 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2425 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2427 if test "$vnc_png" = "yes" ; then
2428 feature_not_found
"vnc-png" "Install libpng devel"
2434 ##########################################
2435 # fnmatch() probe, used for ACL routines
2438 #include <fnmatch.h>
2441 fnmatch("foo", "foo", 0);
2445 if compile_prog
"" "" ; then
2449 ##########################################
2450 # uuid_generate() probe, used for vdi block driver
2451 # Note that on some systems (notably MacOSX) no extra library
2452 # need be linked to get the uuid functions.
2453 if test "$uuid" != "no" ; then
2456 #include <uuid/uuid.h>
2460 uuid_generate(my_uuid);
2464 if compile_prog
"" "" ; then
2466 elif compile_prog
"" "$uuid_libs" ; then
2468 libs_softmmu
="$uuid_libs $libs_softmmu"
2469 libs_tools
="$uuid_libs $libs_tools"
2471 if test "$uuid" = "yes" ; then
2472 feature_not_found
"uuid" "Install libuuid devel"
2478 if test "$vhdx" = "yes" ; then
2479 if test "$uuid" = "no" ; then
2480 error_exit
"uuid required for VHDX support"
2482 elif test "$vhdx" != "no" ; then
2483 if test "$uuid" = "yes" ; then
2490 ##########################################
2491 # xfsctl() probe, used for raw-posix
2492 if test "$xfs" != "no" ; then
2494 #include <stddef.h> /* NULL */
2495 #include <xfs/xfs.h>
2498 xfsctl(NULL, 0, 0, NULL);
2502 if compile_prog
"" "" ; then
2505 if test "$xfs" = "yes" ; then
2506 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2512 ##########################################
2513 # vde libraries probe
2514 if test "$vde" != "no" ; then
2515 vde_libs
="-lvdeplug"
2517 #include <libvdeplug.h>
2520 struct vde_open_args a = {0, 0, 0};
2526 if compile_prog
"" "$vde_libs" ; then
2528 libs_softmmu
="$vde_libs $libs_softmmu"
2529 libs_tools
="$vde_libs $libs_tools"
2531 if test "$vde" = "yes" ; then
2532 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2538 ##########################################
2539 # netmap support probe
2540 # Apart from looking for netmap headers, we make sure that the host API version
2541 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2542 # a minor/major version number. Minor new features will be marked with values up
2543 # to 15, and if something happens that requires a change to the backend we will
2544 # move above 15, submit the backend fixes and modify this two bounds.
2545 if test "$netmap" != "no" ; then
2547 #include <inttypes.h>
2549 #include <net/netmap.h>
2550 #include <net/netmap_user.h>
2551 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2554 int main(void) { return 0; }
2556 if compile_prog
"" "" ; then
2559 if test "$netmap" = "yes" ; then
2560 feature_not_found
"netmap"
2566 ##########################################
2567 # libcap-ng library probe
2568 if test "$cap_ng" != "no" ; then
2574 capng_capability_to_name(CAPNG_EFFECTIVE);
2578 if compile_prog
"" "$cap_libs" ; then
2580 libs_tools
="$cap_libs $libs_tools"
2582 if test "$cap_ng" = "yes" ; then
2583 feature_not_found
"cap_ng" "Install libcap-ng devel"
2589 ##########################################
2590 # Sound support libraries probe
2601 int main(void) { $exp }
2603 if compile_prog
"$cfl" "$lib" ; then
2606 error_exit
"$drv check failed" \
2607 "Make sure to have the $drv libs and headers installed."
2611 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2612 for drv
in $audio_drv_list; do
2615 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2616 "return snd_pcm_close((snd_pcm_t *)0);"
2617 libs_softmmu
="-lasound $libs_softmmu"
2621 audio_drv_probe
$drv pulse
/mainloop.h
"-lpulse" \
2622 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2623 libs_softmmu
="-lpulse $libs_softmmu"
2628 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2632 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2637 libs_softmmu
="$oss_lib $libs_softmmu"
2641 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2645 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2646 error_exit
"Unknown driver '$drv' selected" \
2647 "Possible drivers are: $audio_possible_drivers"
2653 ##########################################
2656 if test "$brlapi" != "no" ; then
2657 brlapi_libs
="-lbrlapi"
2661 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2663 if compile_prog
"" "$brlapi_libs" ; then
2665 libs_softmmu
="$brlapi_libs $libs_softmmu"
2667 if test "$brlapi" = "yes" ; then
2668 feature_not_found
"brlapi" "Install brlapi devel"
2674 ##########################################
2676 if test "$curses" != "no" ; then
2677 if test "$mingw32" = "yes" ; then
2678 curses_list
="-lpdcurses"
2680 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2686 const char *s = curses_version();
2692 for curses_lib
in $curses_list; do
2694 if compile_prog
"" "$curses_lib" ; then
2696 libs_softmmu
="$curses_lib $libs_softmmu"
2701 if test "$curses_found" = "yes" ; then
2704 if test "$curses" = "yes" ; then
2705 feature_not_found
"curses" "Install ncurses devel"
2711 ##########################################
2713 if test "$curl" != "no" ; then
2714 if $pkg_config libcurl
--exists; then
2715 curlconfig
="$pkg_config libcurl"
2717 curlconfig
=curl-config
2720 #include <curl/curl.h>
2721 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2723 curl_cflags
=`$curlconfig --cflags 2>/dev/null`
2724 curl_libs
=`$curlconfig --libs 2>/dev/null`
2725 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2728 if test "$curl" = "yes" ; then
2729 feature_not_found
"curl" "Install libcurl devel"
2735 ##########################################
2736 # bluez support probe
2737 if test "$bluez" != "no" ; then
2739 #include <bluetooth/bluetooth.h>
2740 int main(void) { return bt_error(0); }
2742 bluez_cflags
=`$pkg_config --cflags bluez 2> /dev/null`
2743 bluez_libs
=`$pkg_config --libs bluez 2> /dev/null`
2744 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2746 libs_softmmu
="$bluez_libs $libs_softmmu"
2748 if test "$bluez" = "yes" ; then
2749 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2755 ##########################################
2756 # glib support probe
2759 glib_modules
=gthread-2.0
2760 if test "$modules" = yes; then
2761 glib_modules
="$glib_modules gmodule-2.0"
2764 for i
in $glib_modules; do
2765 if $pkg_config --atleast-version=$glib_req_ver $i; then
2766 glib_cflags
=`$pkg_config --cflags $i`
2767 glib_libs
=`$pkg_config --libs $i`
2768 CFLAGS
="$glib_cflags $CFLAGS"
2769 LIBS
="$glib_libs $LIBS"
2770 libs_qga
="$glib_libs $libs_qga"
2772 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2776 # g_test_trap_subprocess added in 2.38. Used by some tests.
2778 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
2782 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2785 int main(void) { return 0; }
2787 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
2788 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
2789 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
2790 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
2794 ##########################################
2795 # SHA command probe for modules
2796 if test "$modules" = yes; then
2797 shacmd_probe
="sha1sum sha1 shasum"
2798 for c
in $shacmd_probe; do
2804 if test "$shacmd" = ""; then
2805 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
2809 ##########################################
2810 # pixman support probe
2812 if test "$pixman" = ""; then
2813 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2815 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
2821 if test "$pixman" = "none"; then
2822 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2823 error_exit
"pixman disabled but system emulation or tools build" \
2824 "enabled. You can turn off pixman only if you also" \
2825 "disable all system emulation targets and the tools" \
2826 "build with '--disable-tools --disable-system'."
2830 elif test "$pixman" = "system"; then
2831 # pixman version has been checked above
2832 pixman_cflags
=`$pkg_config --cflags pixman-1`
2833 pixman_libs
=`$pkg_config --libs pixman-1`
2835 if test ! -d ${source_path}/pixman
/pixman
; then
2836 error_exit
"pixman >= 0.21.8 not present. Your options:" \
2837 " (1) Preferred: Install the pixman devel package (any recent" \
2838 " distro should have packages as Xorg needs pixman too)." \
2839 " (2) Fetch the pixman submodule, using:" \
2840 " git submodule update --init pixman"
2842 mkdir
-p pixman
/pixman
2843 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2844 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2847 ##########################################
2850 if test "$cap" != "no" ; then
2853 #include <sys/capability.h>
2854 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2856 if compile_prog
"" "-lcap" ; then
2863 ##########################################
2865 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
2869 #include <pthread.h>
2870 static void *f(void *p) { return NULL; }
2873 pthread_create(&thread, 0, f, 0);
2877 if compile_prog
"" "" ; then
2880 for pthread_lib
in $PTHREADLIBS_LIST; do
2881 if compile_prog
"" "$pthread_lib" ; then
2884 for lib_entry
in $LIBS; do
2885 if test "$lib_entry" = "$pthread_lib"; then
2890 if test "$found" = "no"; then
2891 LIBS
="$pthread_lib $LIBS"
2898 if test "$mingw32" != yes -a "$pthread" = no
; then
2899 error_exit
"pthread check failed" \
2900 "Make sure to have the pthread libs and headers installed."
2903 # check for pthread_setname_np
2904 pthread_setname_np
=no
2906 #include <pthread.h>
2908 static void *f(void *p) { return NULL; }
2912 pthread_create(&thread, 0, f, 0);
2913 pthread_setname_np(thread, "QEMU");
2917 if compile_prog
"" "$pthread_lib" ; then
2918 pthread_setname_np
=yes
2921 ##########################################
2923 if test "$rbd" != "no" ; then
2926 #include <rbd/librbd.h>
2929 rados_create(&cluster, NULL);
2933 rbd_libs
="-lrbd -lrados"
2934 if compile_prog
"" "$rbd_libs" ; then
2937 if test "$rbd" = "yes" ; then
2938 feature_not_found
"rados block device" "Install librbd/ceph devel"
2944 ##########################################
2946 min_libssh2_version
=1.2.8
2947 if test "$libssh2" != "no" ; then
2948 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
2949 libssh2_cflags
=`$pkg_config libssh2 --cflags`
2950 libssh2_libs
=`$pkg_config libssh2 --libs`
2953 if test "$libssh2" = "yes" ; then
2954 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
2960 ##########################################
2961 # libssh2_sftp_fsync probe
2963 if test "$libssh2" = "yes"; then
2966 #include <libssh2.h>
2967 #include <libssh2_sftp.h>
2969 LIBSSH2_SESSION *session;
2971 LIBSSH2_SFTP_HANDLE *sftp_handle;
2972 session = libssh2_session_init ();
2973 sftp = libssh2_sftp_init (session);
2974 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2975 libssh2_sftp_fsync (sftp_handle);
2979 # libssh2_cflags/libssh2_libs defined in previous test.
2980 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
2981 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
2985 ##########################################
2988 if test "$linux_aio" != "no" ; then
2991 #include <sys/eventfd.h>
2993 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
2995 if compile_prog
"" "-laio" ; then
2998 if test "$linux_aio" = "yes" ; then
2999 feature_not_found
"linux AIO" "Install libaio devel"
3005 ##########################################
3006 # TPM passthrough is only on x86 Linux
3008 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3009 tpm_passthrough
=$tpm
3014 ##########################################
3017 if test "$attr" != "no" ; then
3020 #include <sys/types.h>
3021 #ifdef CONFIG_LIBATTR
3022 #include <attr/xattr.h>
3024 #include <sys/xattr.h>
3026 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3028 if compile_prog
"" "" ; then
3030 # Older distros have <attr/xattr.h>, and need -lattr:
3031 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3036 if test "$attr" = "yes" ; then
3037 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3043 ##########################################
3046 #include <sys/types.h>
3047 #include <sys/uio.h>
3049 int main(void) { return sizeof(struct iovec); }
3052 if compile_prog
"" "" ; then
3056 ##########################################
3059 #include <sys/types.h>
3060 #include <sys/uio.h>
3062 int main(void) { return preadv(0, 0, 0, 0); }
3065 if compile_prog
"" "" ; then
3069 ##########################################
3071 # fdt support is mandatory for at least some target architectures,
3072 # so insist on it if we're building those system emulators.
3074 for target
in $target_list; do
3076 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3082 if test "$fdt_required" = "yes"; then
3083 if test "$fdt" = "no"; then
3084 error_exit
"fdt disabled but some requested targets require it." \
3085 "You can turn off fdt only if you also disable all the system emulation" \
3086 "targets which need it (by specifying a cut down --target-list)."
3091 if test "$fdt" != "no" ; then
3093 # explicitly check for libfdt_env.h as it is missing in some stable installs
3094 # and test for required functions to make sure we are on a version >= 1.4.0
3097 #include <libfdt_env.h>
3098 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3100 if compile_prog
"" "$fdt_libs" ; then
3101 # system DTC is good - use it
3103 elif test -d ${source_path}/dtc
/libfdt
; then
3104 # have submodule DTC - use it
3108 if [ "$pwd_is_source_path" != "y" ] ; then
3109 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3110 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3112 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3113 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3114 elif test "$fdt" = "yes" ; then
3115 # have neither and want - prompt for system/submodule install
3116 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3117 " (1) Preferred: Install the DTC (libfdt) devel package" \
3118 " (2) Fetch the DTC submodule, using:" \
3119 " git submodule update --init dtc"
3121 # don't have and don't want
3127 libs_softmmu
="$libs_softmmu $fdt_libs"
3129 ##########################################
3130 # opengl probe (for sdl2, milkymist-tmu2)
3132 # GLX probe, used by milkymist-tmu2
3133 # this is temporary, code will be switched to egl mid-term.
3135 #include <X11/Xlib.h>
3138 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3140 if compile_prog
"" "-lGL -lX11" ; then
3146 if test "$opengl" != "no" ; then
3147 opengl_pkgs
="gl glesv2 epoxy egl"
3148 if $pkg_config $opengl_pkgs x11
&& test "$have_glx" = "yes"; then
3149 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3150 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3153 if test "$opengl" = "yes" ; then
3154 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3163 ##########################################
3165 if test "$archipelago" != "no" ; then
3168 #include <xseg/xseg.h>
3169 #include <xseg/protocol.h>
3175 archipelago_libs
=-lxseg
3176 if compile_prog
"" "$archipelago_libs"; then
3178 libs_tools
="$archipelago_libs $libs_tools"
3179 libs_softmmu
="$archipelago_libs $libs_softmmu"
3181 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3182 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3183 echo "license and therefore prevent redistribution."
3185 echo "To disable Archipelago, use --disable-archipelago"
3187 if test "$archipelago" = "yes" ; then
3188 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3195 ##########################################
3197 if test "$glusterfs" != "no" ; then
3198 if $pkg_config --atleast-version=3 glusterfs-api
; then
3200 glusterfs_cflags
=`$pkg_config --cflags glusterfs-api`
3201 glusterfs_libs
=`$pkg_config --libs glusterfs-api`
3202 if $pkg_config --atleast-version=5 glusterfs-api
; then
3203 glusterfs_discard
="yes"
3205 if $pkg_config --atleast-version=6 glusterfs-api
; then
3206 glusterfs_zerofill
="yes"
3209 if test "$glusterfs" = "yes" ; then
3210 feature_not_found
"GlusterFS backend support" \
3211 "Install glusterfs-api devel >= 3"
3217 # Check for inotify functions when we are building linux-user
3218 # emulator. This is done because older glibc versions don't
3219 # have syscall stubs for these implemented. In that case we
3220 # don't provide them even if kernel supports them.
3224 #include <sys/inotify.h>
3229 /* try to start inotify */
3230 return inotify_init();
3233 if compile_prog
"" "" ; then
3239 #include <sys/inotify.h>
3244 /* try to start inotify */
3245 return inotify_init1(0);
3248 if compile_prog
"" "" ; then
3252 # check if utimensat and futimens are supported
3255 #define _ATFILE_SOURCE
3258 #include <sys/stat.h>
3262 utimensat(AT_FDCWD, "foo", NULL, 0);
3267 if compile_prog
"" "" ; then
3271 # check if pipe2 is there
3280 return pipe2(pipefd, O_CLOEXEC);
3283 if compile_prog
"" "" ; then
3287 # check if accept4 is there
3290 #include <sys/socket.h>
3295 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3299 if compile_prog
"" "" ; then
3303 # check if tee/splice is there. vmsplice was added same time.
3313 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3314 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3318 if compile_prog
"" "" ; then
3322 ##########################################
3325 if test "$numa" != "no" ; then
3328 int main(void) { return numa_available(); }
3331 if compile_prog
"" "-lnuma" ; then
3333 libs_softmmu
="-lnuma $libs_softmmu"
3335 if test "$numa" = "yes" ; then
3336 feature_not_found
"numa" "install numactl devel"
3342 ##########################################
3345 if test "$tcmalloc" = "yes" ; then
3348 int main(void) { malloc(1); return 0; }
3351 if compile_prog
"" "-ltcmalloc" ; then
3352 LIBS
="-ltcmalloc $LIBS"
3354 feature_not_found
"tcmalloc" "install gperftools devel"
3358 ##########################################
3363 #include <sys/syscall.h>
3365 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3368 if compile_prog
"" "" ; then
3372 # check if eventfd is supported
3375 #include <sys/eventfd.h>
3379 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3382 if compile_prog
"" "" ; then
3386 # check for fallocate
3393 fallocate(0, 0, 0, 0);
3397 if compile_prog
"" "" ; then
3401 # check for fallocate hole punching
3402 fallocate_punch_hole
=no
3405 #include <linux/falloc.h>
3409 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3413 if compile_prog
"" "" ; then
3414 fallocate_punch_hole
=yes
3417 # check that fallocate supports range zeroing inside the file
3418 fallocate_zero_range
=no
3421 #include <linux/falloc.h>
3425 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3429 if compile_prog
"" "" ; then
3430 fallocate_zero_range
=yes
3433 # check for posix_fallocate
3440 posix_fallocate(0, 0, 0);
3444 if compile_prog
"" "" ; then
3448 # check for sync_file_range
3455 sync_file_range(0, 0, 0, 0);
3459 if compile_prog
"" "" ; then
3463 # check for linux/fiemap.h and FS_IOC_FIEMAP
3466 #include <sys/ioctl.h>
3467 #include <linux/fs.h>
3468 #include <linux/fiemap.h>
3472 ioctl(0, FS_IOC_FIEMAP, 0);
3476 if compile_prog
"" "" ; then
3491 if compile_prog
"" "" ; then
3495 # check for ppoll support
3502 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3503 ppoll(&pfd, 1, 0, 0);
3507 if compile_prog
"" "" ; then
3511 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3512 prctl_pr_set_timerslack
=no
3514 #include <sys/prctl.h>
3518 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3522 if compile_prog
"" "" ; then
3523 prctl_pr_set_timerslack
=yes
3526 # check for epoll support
3529 #include <sys/epoll.h>
3537 if compile_prog
"" "" ; then
3541 # epoll_create1 and epoll_pwait are later additions
3542 # so we must check separately for their presence
3545 #include <sys/epoll.h>
3549 /* Note that we use epoll_create1 as a value, not as
3550 * a function being called. This is necessary so that on
3551 * old SPARC glibc versions where the function was present in
3552 * the library but not declared in the header file we will
3553 * fail the configure check. (Otherwise we will get a compiler
3554 * warning but not an error, and will proceed to fail the
3555 * qemu compile where we compile with -Werror.)
3557 return (int)(uintptr_t)&epoll_create1;
3560 if compile_prog
"" "" ; then
3566 #include <sys/epoll.h>
3570 epoll_pwait(0, 0, 0, 0, 0);
3574 if compile_prog
"" "" ; then
3578 # check for sendfile support
3581 #include <sys/sendfile.h>
3585 return sendfile(0, 0, 0, 0);
3588 if compile_prog
"" "" ; then
3592 # check for timerfd support (glibc 2.8 and newer)
3595 #include <sys/timerfd.h>
3599 return(timerfd_create(CLOCK_REALTIME, 0));
3602 if compile_prog
"" "" ; then
3606 # check for setns and unshare support
3619 if compile_prog
"" "" ; then
3623 # Check if tools are available to build documentation.
3624 if test "$docs" != "no" ; then
3625 if has makeinfo
&& has pod2man
; then
3628 if test "$docs" = "yes" ; then
3629 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3635 # Search for bswap_32 function
3638 #include <byteswap.h>
3639 int main(void) { return bswap_32(0); }
3641 if compile_prog
"" "" ; then
3645 # Search for bswap32 function
3648 #include <sys/endian.h>
3649 #include <sys/types.h>
3650 #include <machine/bswap.h>
3651 int main(void) { return bswap32(0); }
3653 if compile_prog
"" "" ; then
3657 ##########################################
3658 # Do we have libiscsi >= 1.9.0
3659 if test "$libiscsi" != "no" ; then
3660 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3662 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3663 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3665 if test "$libiscsi" = "yes" ; then
3666 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3672 ##########################################
3676 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3678 if compile_prog
"" "" ; then
3680 elif compile_prog
"" "-lm" ; then
3682 libs_qga
="-lm $libs_qga"
3684 error_exit
"libm check failed"
3687 ##########################################
3689 # uClibc provides 2 versions of clock_gettime(), one with realtime
3690 # support and one without. This means that the clock_gettime() don't
3691 # need -lrt. We still need it for timer_create() so we check for this
3692 # function in addition.
3697 timer_create(CLOCK_REALTIME, NULL, NULL);
3698 return clock_gettime(CLOCK_REALTIME, NULL);
3702 if compile_prog
"" "" ; then
3704 # we need pthread for static linking. use previous pthread test result
3705 elif compile_prog
"" "$pthread_lib -lrt" ; then
3707 libs_qga
="$libs_qga -lrt"
3710 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3711 "$aix" != "yes" -a "$haiku" != "yes" ; then
3712 libs_softmmu
="-lutil $libs_softmmu"
3715 ##########################################
3717 if test "$spice" != "no" ; then
3720 int main(void) { spice_server_new(); return 0; }
3722 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3723 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3724 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
3725 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
3726 compile_prog
"$spice_cflags" "$spice_libs" ; then
3728 libs_softmmu
="$libs_softmmu $spice_libs"
3729 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
3730 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
3731 spice_server_version
=$
($pkg_config --modversion spice-server
)
3733 if test "$spice" = "yes" ; then
3734 feature_not_found
"spice" \
3735 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3741 # check for libcacard for smartcard support
3743 # TODO - what's the minimal nss version we support?
3744 if test "$smartcard_nss" != "no"; then
3746 #include <pk11pub.h>
3747 int main(void) { PK11_FreeSlot(0); return 0; }
3749 # FIXME: do not include $glib_* in here
3750 nss_libs
="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3751 nss_cflags
="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3752 test_cflags
="$nss_cflags"
3753 # The header files in nss < 3.13.3 have a bug which causes them to
3754 # emit a warning. If we're going to compile QEMU with -Werror, then
3755 # test that the headers don't have this bug. Otherwise we would pass
3756 # the configure test but fail to compile QEMU later.
3757 if test "$werror" = "yes"; then
3758 test_cflags
="-Werror $test_cflags"
3760 if test -n "$libtool" &&
3761 $pkg_config --atleast-version=3.12.8 nss
&& \
3762 compile_prog
"$test_cflags" "$nss_libs"; then
3765 if test "$smartcard_nss" = "yes"; then
3766 feature_not_found
"nss" "Install nss devel >= 3.12.8"
3773 if test "$libusb" != "no" ; then
3774 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
3776 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
3777 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
3778 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
3779 libs_softmmu
="$libs_softmmu $libusb_libs"
3781 if test "$libusb" = "yes"; then
3782 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
3788 # check for usbredirparser for usb network redirection support
3789 if test "$usb_redir" != "no" ; then
3790 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
3792 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
3793 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
3794 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
3795 libs_softmmu
="$libs_softmmu $usb_redir_libs"
3797 if test "$usb_redir" = "yes"; then
3798 feature_not_found
"usb-redir" "Install usbredir devel"
3804 ##########################################
3805 # check if we have VSS SDK headers for win
3807 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3808 case "$vss_win32_sdk" in
3809 "") vss_win32_include
="-I$source_path" ;;
3810 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
3811 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3812 vss_win32_include
="-I$source_path/.sdk/vss"
3813 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3815 *) vss_win32_include
="-I$vss_win32_sdk"
3818 #define __MIDL_user_allocate_free_DEFINED__
3819 #include <inc/win2003/vss.h>
3820 int main(void) { return VSS_CTX_BACKUP; }
3822 if compile_prog
"$vss_win32_include" "" ; then
3823 guest_agent_with_vss
="yes"
3824 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
3825 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3827 if test "$vss_win32_sdk" != "" ; then
3828 echo "ERROR: Please download and install Microsoft VSS SDK:"
3829 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3830 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3831 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3832 echo "ERROR: The headers are extracted in the directory \`inc'."
3833 feature_not_found
"VSS support"
3835 guest_agent_with_vss
="no"
3839 ##########################################
3840 # lookup Windows platform SDK (if not specified)
3841 # The SDK is needed only to build .tlb (type library) file of guest agent
3842 # VSS provider from the source. It is usually unnecessary because the
3843 # pre-compiled .tlb file is included.
3845 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3846 if test -z "$win_sdk"; then
3847 programfiles
="$PROGRAMFILES"
3848 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
3849 if test -n "$programfiles"; then
3850 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
3852 feature_not_found
"Windows SDK"
3854 elif test "$win_sdk" = "no"; then
3859 ##########################################
3860 # Guest agent Window MSI package
3862 if test "$guest_agent" != yes; then
3863 if test "$guest_agent_msi" = yes; then
3864 error_exit
"MSI guest agent package requires guest agent enabled"
3867 elif test "$mingw32" != "yes"; then
3868 if test "$guest_agent_msi" = "yes"; then
3869 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
3872 elif ! has wixl
; then
3873 if test "$guest_agent_msi" = "yes"; then
3874 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3879 if test "$guest_agent_msi" != "no"; then
3880 if test "$guest_agent_with_vss" = "yes"; then
3881 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
3884 if test "$QEMU_GA_MANUFACTURER" = ""; then
3885 QEMU_GA_MANUFACTURER
=QEMU
3888 if test "$QEMU_GA_DISTRO" = ""; then
3889 QEMU_GA_DISTRO
=Linux
3892 if test "$QEMU_GA_VERSION" = ""; then
3893 QEMU_GA_VERSION
=`cat $source_path/VERSION`
3896 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3900 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
3903 QEMU_GA_MSI_ARCH
="-D Arch=32"
3906 error_exit
"CPU $cpu not supported for building installation package"
3911 ##########################################
3912 # check if we have fdatasync
3918 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3919 return fdatasync(0);
3921 #error Not supported
3925 if compile_prog
"" "" ; then
3929 ##########################################
3930 # check if we have madvise
3934 #include <sys/types.h>
3935 #include <sys/mman.h>
3937 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3939 if compile_prog
"" "" ; then
3943 ##########################################
3944 # check if we have posix_madvise
3948 #include <sys/mman.h>
3950 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3952 if compile_prog
"" "" ; then
3956 ##########################################
3957 # check if we have usable SIGEV_THREAD_ID
3964 ev.sigev_notify = SIGEV_THREAD_ID;
3965 ev._sigev_un._tid = 0;
3966 asm volatile("" : : "g"(&ev));
3970 if compile_prog
"" "" ; then
3974 ##########################################
3975 # check if trace backend exists
3977 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
3978 if test "$?" -ne 0 ; then
3979 error_exit
"invalid trace backends" \
3980 "Please choose supported trace backends."
3983 ##########################################
3984 # For 'ust' backend, test if ust headers are present
3985 if have_backend
"ust"; then
3987 #include <lttng/tracepoint.h>
3988 int main(void) { return 0; }
3990 if compile_prog
"" "" ; then
3991 if $pkg_config lttng-ust
--exists; then
3992 lttng_ust_libs
=`$pkg_config --libs lttng-ust`
3994 lttng_ust_libs
="-llttng-ust"
3996 if $pkg_config liburcu-bp
--exists; then
3997 urcu_bp_libs
=`$pkg_config --libs liburcu-bp`
3999 urcu_bp_libs
="-lurcu-bp"
4002 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4003 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4005 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4009 ##########################################
4010 # For 'dtrace' backend, test if 'dtrace' command is present
4011 if have_backend
"dtrace"; then
4012 if ! has
'dtrace' ; then
4013 error_exit
"dtrace command is not found in PATH $PATH"
4015 trace_backend_stap
="no"
4016 if has
'stap' ; then
4017 trace_backend_stap
="yes"
4021 ##########################################
4022 # check and set a backend for coroutine
4024 # We prefer ucontext, but it's not always possible. The fallback
4025 # is sigcontext. gthread is not selectable except explicitly, because
4026 # it is not functional enough to run QEMU proper. (It is occasionally
4027 # useful for debugging purposes.) On Windows the only valid backend
4028 # is the Windows-specific one.
4031 if test "$darwin" != "yes"; then
4033 #include <ucontext.h>
4034 #ifdef __stub_makecontext
4035 #error Ignoring glibc stub makecontext which will always fail
4037 int main(void) { makecontext(0, 0, 0); return 0; }
4039 if compile_prog
"" "" ; then
4044 if test "$coroutine" = ""; then
4045 if test "$mingw32" = "yes"; then
4047 elif test "$ucontext_works" = "yes"; then
4050 coroutine
=sigaltstack
4055 if test "$mingw32" != "yes"; then
4056 error_exit
"'windows' coroutine backend only valid for Windows"
4058 # Unfortunately the user visible backend name doesn't match the
4059 # coroutine-*.c filename for this case, so we have to adjust it here.
4063 if test "$ucontext_works" != "yes"; then
4064 feature_not_found
"ucontext"
4067 gthread|sigaltstack
)
4068 if test "$mingw32" = "yes"; then
4069 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4073 error_exit
"unknown coroutine backend $coroutine"
4078 if test "$coroutine_pool" = ""; then
4079 if test "$coroutine" = "gthread"; then
4085 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4086 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4089 ##########################################
4090 # check if we have open_by_handle_at
4092 open_by_handle_at
=no
4095 #if !defined(AT_EMPTY_PATH)
4096 # error missing definition
4098 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4101 if compile_prog
"" "" ; then
4102 open_by_handle_at
=yes
4105 ########################################
4106 # check if we have linux/magic.h
4110 #include <linux/magic.h>
4115 if compile_prog
"" "" ; then
4119 ########################################
4120 # check whether we can disable warning option with a pragma (this is needed
4121 # to silence warnings in the headers of some versions of external libraries).
4122 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4125 # If we can't selectively disable warning in the code, disable -Werror so that
4126 # the build doesn't fail anyway.
4128 pragma_disable_unused_but_set
=no
4130 #pragma GCC diagnostic push
4131 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4132 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4133 #pragma GCC diagnostic pop
4139 if compile_prog
"-Werror" "" ; then
4140 pragma_diagnostic_available
=yes
4145 ########################################
4146 # check if we have valgrind/valgrind.h
4150 #include <valgrind/valgrind.h>
4155 if compile_prog
"" "" ; then
4159 ########################################
4160 # check if environ is declared
4170 if compile_prog
"" "" ; then
4174 ########################################
4175 # check if cpuid.h is usable.
4181 unsigned a, b, c, d;
4182 int max = __get_cpuid_max(0, 0);
4185 __cpuid(1, a, b, c, d);
4189 __cpuid_count(7, 0, a, b, c, d);
4195 if compile_prog
"" "" ; then
4199 ########################################
4200 # check if __[u]int128_t is usable.
4204 #if defined(__clang_major__) && defined(__clang_minor__)
4205 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4206 # error __int128_t does not work in CLANG before 3.2
4218 if compile_prog
"" "" ; then
4222 ########################################
4223 # check if getauxval is available.
4227 #include <sys/auxv.h>
4229 return getauxval(AT_HWCAP) == 0;
4232 if compile_prog
"" "" ; then
4236 ########################################
4237 # check if ccache is interfering with
4238 # semantic analysis of macros
4242 static const int Z = 1;
4243 #define fn() ({ Z; })
4244 #define TAUT(X) ((X) == Z)
4245 #define PAREN(X, Y) (X == Y)
4247 int main(int argc, char *argv[])
4253 if (PAREN(x, y)) return 0;
4254 if (TAUT(Z)) return 0;
4259 if ! compile_object
"-Werror"; then
4263 ##########################################
4265 # After here, no more $cc or $ld runs
4267 if test "$gcov" = "yes" ; then
4268 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4269 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4270 elif test "$debug" = "no" ; then
4271 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4274 ##########################################
4276 if test "$libnfs" != "no" ; then
4277 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4279 libnfs_libs
=$
($pkg_config --libs libnfs
)
4280 LIBS
="$LIBS $libnfs_libs"
4282 if test "$libnfs" = "yes" ; then
4283 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4289 # Disable zero malloc errors for official releases unless explicitly told to
4291 if test -z "$zero_malloc" ; then
4292 if test "$z_version" = "50" ; then
4299 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4300 if test "$werror" = "yes"; then
4301 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4304 if test "$solaris" = "no" ; then
4305 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4306 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4310 # test if pod2man has --utf8 option
4311 if pod2man
--help |
grep -q utf8
; then
4312 POD2MAN
="pod2man --utf8"
4317 # Use ASLR, no-SEH and DEP if available
4318 if test "$mingw32" = "yes" ; then
4319 for flag
in --dynamicbase --no-seh --nxcompat; do
4320 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4321 LDFLAGS
="-Wl,$flag $LDFLAGS"
4326 qemu_confdir
=$sysconfdir$confsuffix
4327 qemu_moddir
=$libdir$confsuffix
4328 qemu_datadir
=$datadir$confsuffix
4329 qemu_localedir
="$datadir/locale"
4332 if test "$want_tools" = "yes" ; then
4333 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4334 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4335 tools
="qemu-nbd\$(EXESUF) $tools"
4338 if test "$softmmu" = yes ; then
4339 if test "$virtfs" != no
; then
4340 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4342 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4344 if test "$virtfs" = yes; then
4345 error_exit
"VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4351 if [ "$guest_agent" != "no" ]; then
4352 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4353 tools
="qemu-ga\$(EXESUF) $tools"
4354 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4355 tools
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4358 elif [ "$guest_agent" != yes ]; then
4361 error_exit
"Guest agent is not supported on this platform"
4365 # Mac OS X ships with a broken assembler
4367 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4368 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4369 "$softmmu" = yes ; then
4372 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4373 roms
="$roms spapr-rtas"
4376 if test "$cpu" = "s390x" ; then
4377 roms
="$roms s390-ccw"
4380 # Probe for the need for relocating the user-only binary.
4381 if test "$pie" = "no" ; then
4384 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4385 # ??? Rationale for choosing this address
4386 textseg_addr
=0x60000000
4389 # A 256M aligned address, high in the address space, with enough
4390 # room for the code_gen_buffer above it before the stack.
4391 textseg_addr
=0x60000000
4394 if [ -n "$textseg_addr" ]; then
4396 int main(void) { return 0; }
4398 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4399 if ! compile_prog
"" "$textseg_ldflags"; then
4400 # In case ld does not support -Ttext-segment, edit the default linker
4401 # script via sed to set the .text start addr. This is needed on FreeBSD
4403 $ld --verbose |
sed \
4404 -e '1,/==================================================/d' \
4405 -e '/==================================================/,$d' \
4406 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4407 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4408 textseg_ldflags
="-Wl,-T../config-host.ld"
4413 # prepend pixman and ftd flags after all config tests are done
4414 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4415 libs_softmmu
="$pixman_libs $libs_softmmu"
4417 echo "Install prefix $prefix"
4418 echo "BIOS directory `eval echo $qemu_datadir`"
4419 echo "binary directory `eval echo $bindir`"
4420 echo "library directory `eval echo $libdir`"
4421 echo "module directory `eval echo $qemu_moddir`"
4422 echo "libexec directory `eval echo $libexecdir`"
4423 echo "include directory `eval echo $includedir`"
4424 echo "config directory `eval echo $sysconfdir`"
4425 if test "$mingw32" = "no" ; then
4426 echo "local state directory `eval echo $local_statedir`"
4427 echo "Manual directory `eval echo $mandir`"
4428 echo "ELF interp prefix $interp_prefix"
4430 echo "local state directory queried at runtime"
4431 echo "Windows SDK $win_sdk"
4433 echo "Source path $source_path"
4434 echo "C compiler $cc"
4435 echo "Host C compiler $host_cc"
4436 echo "C++ compiler $cxx"
4437 echo "Objective-C compiler $objcc"
4438 echo "ARFLAGS $ARFLAGS"
4439 echo "CFLAGS $CFLAGS"
4440 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4441 echo "LDFLAGS $LDFLAGS"
4443 echo "install $install"
4444 echo "python $python"
4445 if test "$slirp" = "yes" ; then
4448 echo "module support $modules"
4449 echo "host CPU $cpu"
4450 echo "host big endian $bigendian"
4451 echo "target list $target_list"
4452 echo "tcg debug enabled $debug_tcg"
4453 echo "gprof enabled $gprof"
4454 echo "sparse enabled $sparse"
4455 echo "strip binaries $strip_opt"
4456 echo "profiler $profiler"
4457 echo "static build $static"
4458 if test "$darwin" = "yes" ; then
4459 echo "Cocoa support $cocoa"
4461 echo "pixman $pixman"
4462 echo "SDL support $sdl"
4463 echo "GTK support $gtk"
4464 echo "GNUTLS support $gnutls"
4465 echo "GNUTLS hash $gnutls_hash"
4466 echo "VTE support $vte"
4467 echo "curses support $curses"
4468 echo "curl support $curl"
4469 echo "mingw32 support $mingw32"
4470 echo "Audio drivers $audio_drv_list"
4471 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4472 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4473 echo "VirtFS support $virtfs"
4474 echo "VNC support $vnc"
4475 if test "$vnc" = "yes" ; then
4476 echo "VNC TLS support $vnc_tls"
4477 echo "VNC SASL support $vnc_sasl"
4478 echo "VNC JPEG support $vnc_jpeg"
4479 echo "VNC PNG support $vnc_png"
4480 echo "VNC WS support $vnc_ws"
4482 if test -n "$sparc_cpu"; then
4483 echo "Target Sparc Arch $sparc_cpu"
4485 echo "xen support $xen"
4486 if test "$xen" = "yes" ; then
4487 echo "xen ctrl version $xen_ctrl_version"
4489 echo "brlapi support $brlapi"
4490 echo "bluez support $bluez"
4491 echo "Documentation $docs"
4492 echo "GUEST_BASE $guest_base"
4494 echo "vde support $vde"
4495 echo "netmap support $netmap"
4496 echo "Linux AIO support $linux_aio"
4497 echo "ATTR/XATTR support $attr"
4498 echo "Install blobs $blobs"
4499 echo "KVM support $kvm"
4500 echo "RDMA support $rdma"
4501 echo "TCG interpreter $tcg_interpreter"
4502 echo "fdt support $fdt"
4503 echo "preadv support $preadv"
4504 echo "fdatasync $fdatasync"
4505 echo "madvise $madvise"
4506 echo "posix_madvise $posix_madvise"
4507 echo "sigev_thread_id $sigev_thread_id"
4508 echo "uuid support $uuid"
4509 echo "libcap-ng support $cap_ng"
4510 echo "vhost-net support $vhost_net"
4511 echo "vhost-scsi support $vhost_scsi"
4512 echo "Trace backends $trace_backends"
4513 if test "$trace_backend" = "simple"; then
4514 echo "Trace output file $trace_file-<pid>"
4516 if test "$spice" = "yes"; then
4517 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4519 echo "spice support $spice"
4521 echo "rbd support $rbd"
4522 echo "xfsctl support $xfs"
4523 echo "nss used $smartcard_nss"
4524 echo "libusb $libusb"
4525 echo "usb net redir $usb_redir"
4526 echo "OpenGL support $opengl"
4527 echo "libiscsi support $libiscsi"
4528 echo "libnfs support $libnfs"
4529 echo "build guest agent $guest_agent"
4530 echo "QGA VSS support $guest_agent_with_vss"
4531 echo "seccomp support $seccomp"
4532 echo "coroutine backend $coroutine"
4533 echo "coroutine pool $coroutine_pool"
4534 echo "GlusterFS support $glusterfs"
4535 echo "Archipelago support $archipelago"
4536 echo "gcov $gcov_tool"
4537 echo "gcov enabled $gcov"
4538 echo "TPM support $tpm"
4539 echo "libssh2 support $libssh2"
4540 echo "TPM passthrough $tpm_passthrough"
4541 echo "QOM debugging $qom_cast_debug"
4543 echo "Quorum $quorum"
4544 echo "lzo support $lzo"
4545 echo "snappy support $snappy"
4546 echo "bzip2 support $bzip2"
4547 echo "NUMA host support $numa"
4548 echo "tcmalloc support $tcmalloc"
4550 if test "$sdl_too_old" = "yes"; then
4551 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4554 config_host_mak
="config-host.mak"
4556 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4558 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4559 echo >> $config_host_mak
4561 echo all
: >> $config_host_mak
4562 echo "prefix=$prefix" >> $config_host_mak
4563 echo "bindir=$bindir" >> $config_host_mak
4564 echo "libdir=$libdir" >> $config_host_mak
4565 echo "libexecdir=$libexecdir" >> $config_host_mak
4566 echo "includedir=$includedir" >> $config_host_mak
4567 echo "mandir=$mandir" >> $config_host_mak
4568 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4569 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4570 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4571 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4572 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4573 if test "$mingw32" = "no" ; then
4574 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4576 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4577 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4578 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4579 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4580 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4582 echo "ARCH=$ARCH" >> $config_host_mak
4584 if test "$debug_tcg" = "yes" ; then
4585 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4587 if test "$strip_opt" = "yes" ; then
4588 echo "STRIP=${strip}" >> $config_host_mak
4590 if test "$bigendian" = "yes" ; then
4591 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4593 if test "$mingw32" = "yes" ; then
4594 echo "CONFIG_WIN32=y" >> $config_host_mak
4595 rc_version
=`cat $source_path/VERSION`
4596 version_major
=${rc_version%%.*}
4597 rc_version
=${rc_version#*.}
4598 version_minor
=${rc_version%%.*}
4599 rc_version
=${rc_version#*.}
4600 version_subminor
=${rc_version%%.*}
4602 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4603 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4604 if test "$guest_agent_with_vss" = "yes" ; then
4605 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4606 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4608 if test "$guest_agent_msi" != "no"; then
4609 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4610 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4611 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4612 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4613 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4614 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4615 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4618 echo "CONFIG_POSIX=y" >> $config_host_mak
4621 if test "$linux" = "yes" ; then
4622 echo "CONFIG_LINUX=y" >> $config_host_mak
4625 if test "$darwin" = "yes" ; then
4626 echo "CONFIG_DARWIN=y" >> $config_host_mak
4629 if test "$aix" = "yes" ; then
4630 echo "CONFIG_AIX=y" >> $config_host_mak
4633 if test "$solaris" = "yes" ; then
4634 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4635 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4636 if test "$needs_libsunmath" = "yes" ; then
4637 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4640 if test "$haiku" = "yes" ; then
4641 echo "CONFIG_HAIKU=y" >> $config_host_mak
4643 if test "$static" = "yes" ; then
4644 echo "CONFIG_STATIC=y" >> $config_host_mak
4646 if test "$profiler" = "yes" ; then
4647 echo "CONFIG_PROFILER=y" >> $config_host_mak
4649 if test "$slirp" = "yes" ; then
4650 echo "CONFIG_SLIRP=y" >> $config_host_mak
4651 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4653 if test "$vde" = "yes" ; then
4654 echo "CONFIG_VDE=y" >> $config_host_mak
4656 if test "$netmap" = "yes" ; then
4657 echo "CONFIG_NETMAP=y" >> $config_host_mak
4659 if test "$l2tpv3" = "yes" ; then
4660 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4662 if test "$cap_ng" = "yes" ; then
4663 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4665 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4666 for drv
in $audio_drv_list; do
4667 def
=CONFIG_
`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4668 echo "$def=y" >> $config_host_mak
4670 if test "$audio_pt_int" = "yes" ; then
4671 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4673 if test "$audio_win_int" = "yes" ; then
4674 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4676 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4677 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4678 if test "$vnc" = "yes" ; then
4679 echo "CONFIG_VNC=y" >> $config_host_mak
4681 if test "$vnc_tls" = "yes" ; then
4682 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4684 if test "$vnc_sasl" = "yes" ; then
4685 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4687 if test "$vnc_jpeg" = "yes" ; then
4688 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4690 if test "$vnc_png" = "yes" ; then
4691 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4693 if test "$vnc_ws" = "yes" ; then
4694 echo "CONFIG_VNC_WS=y" >> $config_host_mak
4695 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
4697 if test "$fnmatch" = "yes" ; then
4698 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4700 if test "$uuid" = "yes" ; then
4701 echo "CONFIG_UUID=y" >> $config_host_mak
4703 if test "$xfs" = "yes" ; then
4704 echo "CONFIG_XFS=y" >> $config_host_mak
4706 qemu_version
=`head $source_path/VERSION`
4707 echo "VERSION=$qemu_version" >>$config_host_mak
4708 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4709 echo "SRC_PATH=$source_path" >> $config_host_mak
4710 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4711 if [ "$docs" = "yes" ] ; then
4712 echo "BUILD_DOCS=yes" >> $config_host_mak
4714 if test "$modules" = "yes"; then
4715 # $shacmd can generate a hash started with digit, which the compiler doesn't
4716 # like as an symbol. So prefix it with an underscore
4717 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4718 echo "CONFIG_MODULES=y" >> $config_host_mak
4720 if test "$sdl" = "yes" ; then
4721 echo "CONFIG_SDL=y" >> $config_host_mak
4722 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4723 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4725 if test "$cocoa" = "yes" ; then
4726 echo "CONFIG_COCOA=y" >> $config_host_mak
4728 if test "$curses" = "yes" ; then
4729 echo "CONFIG_CURSES=y" >> $config_host_mak
4731 if test "$utimens" = "yes" ; then
4732 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4734 if test "$pipe2" = "yes" ; then
4735 echo "CONFIG_PIPE2=y" >> $config_host_mak
4737 if test "$accept4" = "yes" ; then
4738 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4740 if test "$splice" = "yes" ; then
4741 echo "CONFIG_SPLICE=y" >> $config_host_mak
4743 if test "$eventfd" = "yes" ; then
4744 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4746 if test "$fallocate" = "yes" ; then
4747 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4749 if test "$fallocate_punch_hole" = "yes" ; then
4750 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4752 if test "$fallocate_zero_range" = "yes" ; then
4753 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4755 if test "$posix_fallocate" = "yes" ; then
4756 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4758 if test "$sync_file_range" = "yes" ; then
4759 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4761 if test "$fiemap" = "yes" ; then
4762 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4764 if test "$dup3" = "yes" ; then
4765 echo "CONFIG_DUP3=y" >> $config_host_mak
4767 if test "$ppoll" = "yes" ; then
4768 echo "CONFIG_PPOLL=y" >> $config_host_mak
4770 if test "$prctl_pr_set_timerslack" = "yes" ; then
4771 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4773 if test "$epoll" = "yes" ; then
4774 echo "CONFIG_EPOLL=y" >> $config_host_mak
4776 if test "$epoll_create1" = "yes" ; then
4777 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4779 if test "$epoll_pwait" = "yes" ; then
4780 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4782 if test "$sendfile" = "yes" ; then
4783 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4785 if test "$timerfd" = "yes" ; then
4786 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4788 if test "$setns" = "yes" ; then
4789 echo "CONFIG_SETNS=y" >> $config_host_mak
4791 if test "$inotify" = "yes" ; then
4792 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4794 if test "$inotify1" = "yes" ; then
4795 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4797 if test "$byteswap_h" = "yes" ; then
4798 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4800 if test "$bswap_h" = "yes" ; then
4801 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4803 if test "$curl" = "yes" ; then
4804 echo "CONFIG_CURL=m" >> $config_host_mak
4805 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4806 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4808 if test "$brlapi" = "yes" ; then
4809 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4811 if test "$bluez" = "yes" ; then
4812 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4813 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4815 if test "$glib_subprocess" = "yes" ; then
4816 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4818 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4819 if test "$gtk" = "yes" ; then
4820 echo "CONFIG_GTK=y" >> $config_host_mak
4821 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4822 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4824 if test "$gnutls" = "yes" ; then
4825 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4827 if test "$gnutls_hash" = "yes" ; then
4828 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4830 if test "$vte" = "yes" ; then
4831 echo "CONFIG_VTE=y" >> $config_host_mak
4832 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4834 if test "$xen" = "yes" ; then
4835 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4836 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4838 if test "$linux_aio" = "yes" ; then
4839 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4841 if test "$attr" = "yes" ; then
4842 echo "CONFIG_ATTR=y" >> $config_host_mak
4844 if test "$libattr" = "yes" ; then
4845 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4847 if test "$virtfs" = "yes" ; then
4848 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4850 if test "$vhost_scsi" = "yes" ; then
4851 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4853 if test "$vhost_net" = "yes" ; then
4854 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4856 if test "$blobs" = "yes" ; then
4857 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4859 if test "$iovec" = "yes" ; then
4860 echo "CONFIG_IOVEC=y" >> $config_host_mak
4862 if test "$preadv" = "yes" ; then
4863 echo "CONFIG_PREADV=y" >> $config_host_mak
4865 if test "$fdt" = "yes" ; then
4866 echo "CONFIG_FDT=y" >> $config_host_mak
4868 if test "$signalfd" = "yes" ; then
4869 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4871 if test "$tcg_interpreter" = "yes" ; then
4872 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4874 if test "$fdatasync" = "yes" ; then
4875 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4877 if test "$madvise" = "yes" ; then
4878 echo "CONFIG_MADVISE=y" >> $config_host_mak
4880 if test "$posix_madvise" = "yes" ; then
4881 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4883 if test "$sigev_thread_id" = "yes" ; then
4884 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4887 if test "$spice" = "yes" ; then
4888 echo "CONFIG_SPICE=y" >> $config_host_mak
4891 if test "$smartcard_nss" = "yes" ; then
4892 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4893 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4894 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4897 if test "$libusb" = "yes" ; then
4898 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4901 if test "$usb_redir" = "yes" ; then
4902 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4905 if test "$opengl" = "yes" ; then
4906 echo "CONFIG_OPENGL=y" >> $config_host_mak
4907 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4908 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4911 if test "$lzo" = "yes" ; then
4912 echo "CONFIG_LZO=y" >> $config_host_mak
4915 if test "$snappy" = "yes" ; then
4916 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4919 if test "$bzip2" = "yes" ; then
4920 echo "CONFIG_BZIP2=y" >> $config_host_mak
4921 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4924 if test "$libiscsi" = "yes" ; then
4925 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4926 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4927 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4930 if test "$libnfs" = "yes" ; then
4931 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4934 if test "$seccomp" = "yes"; then
4935 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4938 # XXX: suppress that
4939 if [ "$bsd" = "yes" ] ; then
4940 echo "CONFIG_BSD=y" >> $config_host_mak
4943 if test "$zero_malloc" = "yes" ; then
4944 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4946 if test "$qom_cast_debug" = "yes" ; then
4947 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4949 if test "$rbd" = "yes" ; then
4950 echo "CONFIG_RBD=m" >> $config_host_mak
4951 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
4952 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4955 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4956 if test "$coroutine_pool" = "yes" ; then
4957 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4959 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4962 if test "$open_by_handle_at" = "yes" ; then
4963 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
4966 if test "$linux_magic_h" = "yes" ; then
4967 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4970 if test "$pragma_diagnostic_available" = "yes" ; then
4971 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
4974 if test "$valgrind_h" = "yes" ; then
4975 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
4978 if test "$has_environ" = "yes" ; then
4979 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
4982 if test "$cpuid_h" = "yes" ; then
4983 echo "CONFIG_CPUID_H=y" >> $config_host_mak
4986 if test "$int128" = "yes" ; then
4987 echo "CONFIG_INT128=y" >> $config_host_mak
4990 if test "$getauxval" = "yes" ; then
4991 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
4994 if test "$glusterfs" = "yes" ; then
4995 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
4996 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
4997 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5000 if test "$glusterfs_discard" = "yes" ; then
5001 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5004 if test "$glusterfs_zerofill" = "yes" ; then
5005 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5008 if test "$archipelago" = "yes" ; then
5009 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5010 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5013 if test "$libssh2" = "yes" ; then
5014 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5015 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5016 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5019 if test "$quorum" = "yes" ; then
5020 echo "CONFIG_QUORUM=y" >> $config_host_mak
5023 if test "$vhdx" = "yes" ; then
5024 echo "CONFIG_VHDX=y" >> $config_host_mak
5028 if test "$libusb" = "yes"; then
5029 echo "HOST_USB=libusb legacy" >> $config_host_mak
5031 echo "HOST_USB=stub" >> $config_host_mak
5034 # TPM passthrough support?
5035 if test "$tpm" = "yes"; then
5036 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5037 if test "$tpm_passthrough" = "yes"; then
5038 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5042 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5043 if have_backend
"nop"; then
5044 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5046 if have_backend
"simple"; then
5047 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5048 # Set the appropriate trace file.
5049 trace_file
="\"$trace_file-\" FMT_pid"
5051 if have_backend
"stderr"; then
5052 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5054 if have_backend
"ust"; then
5055 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5057 if have_backend
"dtrace"; then
5058 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5059 if test "$trace_backend_stap" = "yes" ; then
5060 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5063 if have_backend
"ftrace"; then
5064 if test "$linux" = "yes" ; then
5065 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5067 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5070 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5072 if test "$rdma" = "yes" ; then
5073 echo "CONFIG_RDMA=y" >> $config_host_mak
5076 # Hold two types of flag:
5077 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5078 # a thread we have a handle to
5079 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5081 if test "$pthread_setname_np" = "yes" ; then
5082 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5083 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5086 if test "$tcg_interpreter" = "yes"; then
5087 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5088 elif test "$ARCH" = "sparc64" ; then
5089 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5090 elif test "$ARCH" = "s390x" ; then
5091 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5092 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5093 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5094 elif test "$ARCH" = "ppc64" ; then
5095 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5097 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5099 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5101 echo "TOOLS=$tools" >> $config_host_mak
5102 echo "ROMS=$roms" >> $config_host_mak
5103 echo "MAKE=$make" >> $config_host_mak
5104 echo "INSTALL=$install" >> $config_host_mak
5105 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5106 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5107 if test -n "$libtool"; then
5108 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5109 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5111 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5112 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5114 echo "PYTHON=$python" >> $config_host_mak
5115 echo "CC=$cc" >> $config_host_mak
5116 if $iasl -h > /dev
/null
2>&1; then
5117 echo "IASL=$iasl" >> $config_host_mak
5119 echo "CC_I386=$cc_i386" >> $config_host_mak
5120 echo "HOST_CC=$host_cc" >> $config_host_mak
5121 echo "CXX=$cxx" >> $config_host_mak
5122 echo "OBJCC=$objcc" >> $config_host_mak
5123 echo "AR=$ar" >> $config_host_mak
5124 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5125 echo "AS=$as" >> $config_host_mak
5126 echo "CPP=$cpp" >> $config_host_mak
5127 echo "OBJCOPY=$objcopy" >> $config_host_mak
5128 echo "LD=$ld" >> $config_host_mak
5129 echo "NM=$nm" >> $config_host_mak
5130 echo "WINDRES=$windres" >> $config_host_mak
5131 echo "LIBTOOL=$libtool" >> $config_host_mak
5132 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5133 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5134 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5135 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5136 if test "$sparse" = "yes" ; then
5137 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5138 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5139 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5140 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5141 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5143 if test "$cross_prefix" != ""; then
5144 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5146 echo "AUTOCONF_HOST := " >> $config_host_mak
5148 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5149 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5150 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5151 echo "LIBS+=$LIBS" >> $config_host_mak
5152 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5153 echo "EXESUF=$EXESUF" >> $config_host_mak
5154 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5155 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5156 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5157 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5158 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5159 if test "$gcov" = "yes" ; then
5160 echo "CONFIG_GCOV=y" >> $config_host_mak
5161 echo "GCOV=$gcov_tool" >> $config_host_mak
5164 # use included Linux headers
5165 if test "$linux" = "yes" ; then
5166 mkdir
-p linux-headers
5184 # For most CPUs the kernel architecture name and QEMU CPU name match.
5188 # For non-KVM architectures we will not have asm headers
5189 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5190 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5194 for target
in $target_list; do
5195 target_dir
="$target"
5196 config_target_mak
=$target_dir/config-target.mak
5197 target_name
=`echo $target | cut -d '-' -f 1`
5198 target_bigendian
="no"
5200 case "$target_name" in
5201 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5202 target_bigendian
=yes
5206 target_user_only
="no"
5207 target_linux_user
="no"
5208 target_bsd_user
="no"
5210 ${target_name}-softmmu)
5211 target_softmmu
="yes"
5213 ${target_name}-linux-user)
5214 if test "$linux" != "yes" ; then
5215 error_exit
"Target '$target' is only available on a Linux host"
5217 target_user_only
="yes"
5218 target_linux_user
="yes"
5220 ${target_name}-bsd-user)
5221 if test "$bsd" != "yes" ; then
5222 error_exit
"Target '$target' is only available on a BSD host"
5224 target_user_only
="yes"
5225 target_bsd_user
="yes"
5228 error_exit
"Target '$target' not recognised"
5233 mkdir
-p $target_dir
5234 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5237 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5240 TARGET_ARCH
="$target_name"
5244 case "$target_name" in
5248 TARGET_BASE_ARCH
=i386
5255 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5258 TARGET_BASE_ARCH
=arm
5260 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5268 gdb_xml_files
="cf-core.xml cf-fp.xml"
5270 microblaze|microblazeel
)
5271 TARGET_ARCH
=microblaze
5276 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5280 TARGET_BASE_ARCH
=mips
5281 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5282 echo "TARGET_ABI32=y" >> $config_target_mak
5286 TARGET_BASE_ARCH
=mips
5287 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5292 TARGET_ARCH
=openrisc
5293 TARGET_BASE_ARCH
=openrisc
5296 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5299 TARGET_BASE_ARCH
=ppc
5301 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5304 TARGET_BASE_ARCH
=ppc
5306 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5310 TARGET_BASE_ARCH
=ppc
5312 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5316 TARGET_BASE_ARCH
=ppc
5318 echo "TARGET_ABI32=y" >> $config_target_mak
5319 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5328 TARGET_BASE_ARCH
=sparc
5332 TARGET_BASE_ARCH
=sparc
5333 TARGET_ABI_DIR
=sparc
5334 echo "TARGET_ABI32=y" >> $config_target_mak
5337 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5347 error_exit
"Unsupported target CPU"
5350 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5351 if [ "$TARGET_BASE_ARCH" = "" ]; then
5352 TARGET_BASE_ARCH
=$TARGET_ARCH
5355 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5358 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5361 target_arch_name
="`upper $TARGET_ARCH`"
5362 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5363 echo "TARGET_NAME=$target_name" >> $config_target_mak
5364 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5365 if [ "$TARGET_ABI_DIR" = "" ]; then
5366 TARGET_ABI_DIR
=$TARGET_ARCH
5368 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5369 if [ "$HOST_VARIANT_DIR" != "" ]; then
5370 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5372 case "$target_name" in
5374 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5375 echo "CONFIG_XEN=y" >> $config_target_mak
5376 if test "$xen_pci_passthrough" = yes; then
5377 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5383 case "$target_name" in
5384 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5385 # Make sure the target and host cpus are compatible
5386 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5387 \
( "$target_name" = "$cpu" -o \
5388 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5389 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5390 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5391 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5392 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5393 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5394 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5395 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5396 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5397 echo "CONFIG_KVM=y" >> $config_target_mak
5398 if test "$vhost_net" = "yes" ; then
5399 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5403 if test "$target_bigendian" = "yes" ; then
5404 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5406 if test "$target_softmmu" = "yes" ; then
5407 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5409 if test "$target_user_only" = "yes" ; then
5410 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5411 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5413 if test "$target_linux_user" = "yes" ; then
5414 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5417 if test ! -z "$gdb_xml_files" ; then
5418 for x
in $gdb_xml_files; do
5419 list
="$list $source_path/gdb-xml/$x"
5421 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5424 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5425 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5427 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5428 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5430 if test "$target_bsd_user" = "yes" ; then
5431 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5434 # generate QEMU_CFLAGS/LDFLAGS for targets
5439 for i
in $ARCH $TARGET_BASE_ARCH ; do
5442 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5443 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5446 if test -n "${cxx}"; then
5447 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5448 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5452 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5453 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5454 if test -n "${cxx}"; then
5455 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5456 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5460 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5461 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5464 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5465 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5468 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5469 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5472 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5473 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5476 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5477 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5480 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5481 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5484 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5485 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5488 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5489 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5492 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5493 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5496 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5497 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5500 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5501 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5504 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5505 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5508 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5509 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5512 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5513 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5516 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5517 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5521 if test "$tcg_interpreter" = "yes" ; then
5522 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5523 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5528 # Ensure there's only a single GP
5529 cflags
="-msmall-data $cflags"
5533 if test "$gprof" = "yes" ; then
5534 echo "TARGET_GPROF=yes" >> $config_target_mak
5535 if test "$target_linux_user" = "yes" ; then
5537 ldflags
="-p $ldflags"
5539 if test "$target_softmmu" = "yes" ; then
5540 ldflags
="-p $ldflags"
5541 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5545 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5546 ldflags
="$ldflags $textseg_ldflags"
5549 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5550 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5552 done # for target in $targets
5554 if [ "$pixman" = "internal" ]; then
5555 echo "config-host.h: subdir-pixman" >> $config_host_mak
5558 if test "$rdma" = "yes" ; then
5559 echo "CONFIG_RDMA=y" >> $config_host_mak
5562 if [ "$dtc_internal" = "yes" ]; then
5563 echo "config-host.h: subdir-dtc" >> $config_host_mak
5566 if test "$numa" = "yes"; then
5567 echo "CONFIG_NUMA=y" >> $config_host_mak
5570 if test "$ccache_cpp2" = "yes"; then
5571 echo "export CCACHE_CPP2=y" >> $config_host_mak
5574 # build tree in object directory in case the source is not in the current directory
5575 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5577 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5578 DIRS
="$DIRS roms/seabios roms/vgabios"
5579 DIRS
="$DIRS qapi-generated"
5580 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
5581 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5582 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5583 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5584 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
5585 FILES
="$FILES pc-bios/s390-ccw/Makefile"
5586 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5587 FILES
="$FILES pc-bios/qemu-icon.bmp"
5589 $source_path/pc-bios
/*.bin \
5590 $source_path/pc-bios
/*.aml \
5591 $source_path/pc-bios
/*.rom \
5592 $source_path/pc-bios
/*.dtb \
5593 $source_path/pc-bios
/*.img \
5594 $source_path/pc-bios
/openbios-
* \
5595 $source_path/pc-bios
/u-boot.
* \
5596 $source_path/pc-bios
/palcode-
*
5598 FILES
="$FILES pc-bios/`basename $bios_file`"
5600 for test_file
in `find $source_path/tests/acpi-test-data -type f`
5602 FILES
="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5605 for f
in $FILES ; do
5606 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5607 symlink
"$source_path/$f" "$f"
5611 # temporary config to build submodules
5612 for rom
in seabios vgabios
; do
5613 config_mak
=roms
/$rom/config.mak
5614 echo "# Automatically generated by configure - do not modify" > $config_mak
5615 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5616 echo "AS=$as" >> $config_mak
5617 echo "CC=$cc" >> $config_mak
5618 echo "BCC=bcc" >> $config_mak
5619 echo "CPP=$cpp" >> $config_mak
5620 echo "OBJCOPY=objcopy" >> $config_mak
5621 echo "IASL=$iasl" >> $config_mak
5622 echo "LD=$ld" >> $config_mak
5625 # set up qemu-iotests in this build directory
5626 iotests_common_env
="tests/qemu-iotests/common.env"
5627 iotests_check
="tests/qemu-iotests/check"
5629 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5630 echo >> "$iotests_common_env"
5631 echo "export PYTHON='$python'" >> "$iotests_common_env"
5633 if [ ! -e "$iotests_check" ]; then
5634 symlink
"$source_path/$iotests_check" "$iotests_check"
5637 # Save the configure command line for later reuse.
5638 cat <<EOD >config.status
5640 # Generated by configure.
5641 # Run this file to recreate the current configuration.
5642 # Compiler output produced by configure, useful for debugging
5643 # configure, is in config.log if it exists.
5645 printf "exec" >>config.status
5646 printf " '%s'" "$0" "$@" >>config.status
5647 echo >>config.status
5648 chmod +x config.status