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 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE
=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC
="${TMPDIR1}/${TMPB}.c"
29 TMPO
="${TMPDIR1}/${TMPB}.o"
30 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
31 TMPE
="${TMPDIR1}/${TMPB}.exe"
32 TMPMO
="${TMPDIR1}/${TMPB}.mo"
36 # Print a helpful header at the top of config.log
37 echo "# QEMU configure log $(date)" >> config.log
38 printf "# Configured with:" >> config.log
39 printf " '%s'" "$0" "$@" >> config.log
41 echo "#" >> config.log
46 while test -n "$2"; do
55 # Run the compiler, capturing its output to the log. First argument
56 # is compiler binary to execute.
59 echo $compiler "$@" >> config.log
60 $compiler "$@" >> config.log
2>&1 ||
return $?
61 # Test passed. If this is an --enable-werror build, rerun
62 # the test with -Werror and bail out if it fails. This
63 # makes warning-generating-errors in configure test code
64 # obvious to developers.
65 if test "$werror" != "yes"; then
68 # Don't bother rerunning the compile if we were already using -Werror
74 echo $compiler -Werror "$@" >> config.log
75 $compiler -Werror "$@" >> config.log
2>&1 && return $?
76 error_exit
"configure test passed without -Werror but failed with -Werror." \
77 "This is probably a bug in the configure script. The failing command" \
78 "will be at the bottom of config.log." \
79 "You can run configure with --disable-werror to bypass this check."
83 do_compiler
"$cc" "$@"
87 do_compiler
"$cxx" "$@"
91 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
92 # options which some versions of GCC's C++ compiler complain about
93 # because they only make sense for C programs.
95 for arg
in $QEMU_CFLAGS; do
97 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
98 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
101 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
109 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
115 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
118 # symbolically link $1 to $2. Portable version of "ln -sf".
121 mkdir
-p "$(dirname "$2")"
125 # check whether a command is available to this shell (may be either an
126 # executable or a builtin)
128 type "$1" >/dev
/null
2>&1
131 # search for an executable in PATH
137 # pathname has a dir component?
138 if [ "${local_command#*/}" != "$local_command" ]; then
139 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
140 echo "$local_command"
144 if [ -z "$local_command" ]; then
149 for local_dir
in $PATH; do
150 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
151 echo "$local_dir/$local_command"
152 IFS
="${local_ifs:-$(printf ' \t\n')}"
157 IFS
="${local_ifs:-$(printf ' \t\n')}"
162 echo "$trace_backends" |
grep "$1" >/dev
/null
166 source_path
=$
(dirname "$0")
169 interp_prefix
="/usr/gnemul/qemu-%M"
173 block_drv_rw_whitelist
=""
174 block_drv_ro_whitelist
=""
180 cc_i386
=i386-pc-linux-gnu-gcc
185 # Don't accept a target_list environment variable.
188 # Default value for a variable defining feature "foo".
189 # * foo="no" feature will only be used if --enable-foo arg is given
190 # * foo="" feature will be searched for, and if found, will be used
191 # unless --disable-foo is given
192 # * foo="yes" this value will only be set by --enable-foo flag.
193 # feature will searched for,
194 # if not found, configure exits with error
196 # Always add --enable-foo and --disable-foo command line args.
197 # Distributions want to ensure that several features are compiled in, and it
198 # is impossible without a --enable-foo that exits if a feature is not found.
219 xen_pv_domain_build
="no"
220 xen_pci_passthrough
=""
245 LDFLAGS_SHARED
="-shared"
248 mandir
="\${prefix}/share/man"
249 datadir
="\${prefix}/share"
250 qemu_docdir
="\${prefix}/share/doc/qemu"
251 bindir
="\${prefix}/bin"
252 libdir
="\${prefix}/lib"
253 libexecdir
="\${prefix}/libexec"
254 includedir
="\${prefix}/include"
255 sysconfdir
="\${prefix}/etc"
256 local_statedir
="\${prefix}/var"
288 guest_agent_with_vss
="no"
289 guest_agent_ntddscsi
="no"
298 debug_stack_usage
="no"
301 glusterfs_xlator_opt
="no"
302 glusterfs_discard
="no"
303 glusterfs_fallocate
="no"
304 glusterfs_zerofill
="no"
308 tls_priority
="NORMAL"
320 live_block_migration
="yes"
331 # parse CC options first
333 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
335 --cross-prefix=*) cross_prefix
="$optarg"
339 --cxx=*) CXX
="$optarg"
341 --source-path=*) source_path
="$optarg"
343 --cpu=*) cpu
="$optarg"
345 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
346 EXTRA_CFLAGS
="$optarg"
348 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
349 EXTRA_LDFLAGS
="$optarg"
351 --enable-debug-info) debug_info
="yes"
353 --disable-debug-info) debug_info
="no"
358 # Using uname is really, really broken. Once we have the right set of checks
359 # we can eliminate its usage altogether.
361 # Preferred compiler:
363 # ${cross_prefix}gcc (if cross-prefix specified)
365 if test -z "${CC}${cross_prefix}"; then
368 cc
="${CC-${cross_prefix}gcc}"
371 if test -z "${CXX}${cross_prefix}"; then
374 cxx
="${CXX-${cross_prefix}g++}"
377 ar="${AR-${cross_prefix}ar}"
378 as
="${AS-${cross_prefix}as}"
381 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
382 ld
="${LD-${cross_prefix}ld}"
383 nm
="${NM-${cross_prefix}nm}"
384 strip
="${STRIP-${cross_prefix}strip}"
385 windres
="${WINDRES-${cross_prefix}windres}"
386 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
388 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
390 pkg_config
=query_pkg_config
391 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
392 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
394 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
395 ARFLAGS
="${ARFLAGS-rv}"
397 # default flags for all hosts
398 # We use -fwrapv to tell the compiler that we require a C dialect where
399 # left shift of signed integers is well defined and has the expected
400 # 2s-complement style results. (Both clang and gcc agree that it
401 # provides these semantics.)
402 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
403 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
404 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
405 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
406 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
407 if test "$debug_info" = "yes"; then
409 LDFLAGS
="-g $LDFLAGS"
412 # make source path absolute
413 source_path
=$
(cd "$source_path"; pwd)
415 # running configure in the source tree?
416 # we know that's the case if configure is there.
417 if test -f "./configure"; then
418 pwd_is_source_path
="y"
420 pwd_is_source_path
="n"
426 #error $1 not defined
428 int main(void) { return 0; }
436 int main(void) { return 0; }
443 int main(void) { return 0; }
447 if check_define __linux__
; then
449 elif check_define _WIN32
; then
451 elif check_define __OpenBSD__
; then
453 elif check_define __sun__
; then
455 elif check_define __HAIKU__
; then
461 # Some host OSes need non-standard checks for which CPU to use.
462 # Note that these checks are broken for cross-compilation: if you're
463 # cross-compiling to one of these OSes then you'll need to specify
464 # the correct CPU with the --cpu option.
467 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
468 # run 64-bit userspace code.
469 # If the user didn't specify a CPU explicitly and the kernel says this is
470 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
471 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
476 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
477 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
482 if test ! -z "$cpu" ; then
483 # command line argument
485 elif check_define __i386__
; then
487 elif check_define __x86_64__
; then
488 if check_define __ILP32__
; then
493 elif check_define __sparc__
; then
494 if check_define __arch64__
; then
499 elif check_define _ARCH_PPC
; then
500 if check_define _ARCH_PPC64
; then
505 elif check_define __mips__
; then
507 elif check_define __ia64__
; then
509 elif check_define __s390__
; then
510 if check_define __s390x__
; then
515 elif check_define __arm__
; then
517 elif check_define __aarch64__
; then
524 # Normalise host CPU name and set ARCH.
525 # Note that this case should only have supported host CPUs, not guests.
527 ppc|ppc64|s390|s390x|sparc64|x32
)
534 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
576 audio_possible_drivers
="dsound sdl"
577 if check_include dsound.h
; then
578 audio_drv_list
="dsound"
587 audio_possible_drivers
="oss sdl pa"
593 audio_possible_drivers
="oss sdl pa"
594 # needed for kinfo_getvmmap(3) in libutil.h
596 # needed for kinfo_getproc
597 libs_qga
="-lutil $libs_qga"
598 netmap
="" # enable netmap autodetect
599 HOST_VARIANT_DIR
="freebsd"
606 audio_possible_drivers
="oss sdl pa"
607 HOST_VARIANT_DIR
="dragonfly"
613 audio_possible_drivers
="oss sdl"
615 HOST_VARIANT_DIR
="netbsd"
622 audio_possible_drivers
="sdl"
623 HOST_VARIANT_DIR
="openbsd"
629 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
630 if [ "$cpu" = "x86_64" ] ; then
631 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
632 LDFLAGS
="-arch x86_64 $LDFLAGS"
635 audio_drv_list
="coreaudio"
636 audio_possible_drivers
="coreaudio sdl"
637 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
638 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
639 # Disable attempts to use ObjectiveC features in os/object.h since they
640 # won't work when we're compiling with gcc as a C compiler.
641 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
642 HOST_VARIANT_DIR
="darwin"
648 install="${INSTALL-ginstall}"
650 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
651 needs_libsunmath
="no"
652 solarisrev
=$
(uname
-r | cut
-f2 -d.
)
653 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
654 if test "$solarisrev" -le 9 ; then
655 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
656 needs_libsunmath
="yes"
657 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
658 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
659 LIBS
="-lsunmath $LIBS"
661 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
662 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
663 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
664 "Studio 11 can be downloaded from www.sun.com."
668 if test -f /usr
/include
/sys
/soundcard.h
; then
671 audio_possible_drivers
="oss sdl"
672 # needed for CMSG_ macros in sys/socket.h
673 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
674 # needed for TIOCWIN* defines in termios.h
675 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
676 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
677 solarisnetlibs
="-lsocket -lnsl -lresolv"
678 LIBS
="$solarisnetlibs $LIBS"
679 libs_qga
="$solarisnetlibs $libs_qga"
687 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
688 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
692 audio_possible_drivers
="oss alsa sdl pa"
699 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
703 # This is a fatal error, but don't report it yet, because we
704 # might be going to just print the --help text, or it might
705 # be the result of a missing compiler.
710 if [ "$bsd" = "yes" ] ; then
711 if [ "$darwin" != "yes" ] ; then
716 : ${make=${MAKE-make}}
717 : ${install=${INSTALL-install}}
718 : ${python=${PYTHON-python}}
719 : ${smbd=${SMBD-/usr/sbin/smbd}}
721 # Default objcc to clang if available, otherwise use CC
728 if test "$mingw32" = "yes" ; then
731 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
732 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
733 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
734 # MinGW needs -mthreads for TLS and macro _MT.
735 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
736 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
738 if compile_prog
"" "-liberty" ; then
739 LIBS
="-liberty $LIBS"
741 prefix
="c:/Program Files/QEMU"
744 qemu_docdir
="\${prefix}"
746 sysconfdir
="\${prefix}"
749 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -liphlpapi -lnetapi32 $libs_qga"
755 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
757 --help|
-h) show_help
=yes
759 --version|
-V) exec cat $source_path/VERSION
761 --prefix=*) prefix
="$optarg"
763 --interp-prefix=*) interp_prefix
="$optarg"
771 --host-cc=*) host_cc
="$optarg"
775 --iasl=*) iasl
="$optarg"
777 --objcc=*) objcc
="$optarg"
779 --make=*) make="$optarg"
781 --install=*) install="$optarg"
783 --python=*) python
="$optarg"
785 --gcov=*) gcov_tool
="$optarg"
787 --smbd=*) smbd
="$optarg"
795 --disable-debug-info)
805 --target-list=*) target_list
="$optarg"
807 --enable-trace-backends=*) trace_backends
="$optarg"
809 # XXX: backwards compatibility
810 --enable-trace-backend=*) trace_backends
="$optarg"
812 --with-trace-file=*) trace_file
="$optarg"
814 --enable-gprof) gprof
="yes"
816 --enable-gcov) gcov
="yes"
820 LDFLAGS
="-static $LDFLAGS"
821 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
823 --mandir=*) mandir
="$optarg"
825 --bindir=*) bindir
="$optarg"
827 --libdir=*) libdir
="$optarg"
829 --libexecdir=*) libexecdir
="$optarg"
831 --includedir=*) includedir
="$optarg"
833 --datadir=*) datadir
="$optarg"
835 --with-confsuffix=*) confsuffix
="$optarg"
837 --docdir=*) qemu_docdir
="$optarg"
839 --sysconfdir=*) sysconfdir
="$optarg"
841 --localstatedir=*) local_statedir
="$optarg"
843 --sbindir=*|
--sharedstatedir=*|\
844 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
845 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
846 # These switches are silently ignored, for compatibility with
847 # autoconf-generated configure scripts. This allows QEMU's
848 # configure to be used by RPM and similar macros that set
849 # lots of directory switches by default.
851 --with-system-pixman) pixman
="system"
853 --without-system-pixman) pixman
="internal"
855 --without-pixman) pixman
="none"
857 --disable-sdl) sdl
="no"
859 --enable-sdl) sdl
="yes"
861 --with-sdlabi=*) sdlabi
="$optarg"
863 --disable-qom-cast-debug) qom_cast_debug
="no"
865 --enable-qom-cast-debug) qom_cast_debug
="yes"
867 --disable-virtfs) virtfs
="no"
869 --enable-virtfs) virtfs
="yes"
871 --disable-vnc) vnc
="no"
873 --enable-vnc) vnc
="yes"
875 --oss-lib=*) oss_lib
="$optarg"
877 --audio-drv-list=*) audio_drv_list
="$optarg"
879 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
881 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
883 --enable-debug-tcg) debug_tcg
="yes"
885 --disable-debug-tcg) debug_tcg
="no"
888 # Enable debugging options that aren't excessively noisy
894 --enable-sparse) sparse
="yes"
896 --disable-sparse) sparse
="no"
898 --disable-strip) strip_opt
="no"
900 --disable-vnc-sasl) vnc_sasl
="no"
902 --enable-vnc-sasl) vnc_sasl
="yes"
904 --disable-vnc-jpeg) vnc_jpeg
="no"
906 --enable-vnc-jpeg) vnc_jpeg
="yes"
908 --disable-vnc-png) vnc_png
="no"
910 --enable-vnc-png) vnc_png
="yes"
912 --disable-slirp) slirp
="no"
914 --disable-vde) vde
="no"
916 --enable-vde) vde
="yes"
918 --disable-netmap) netmap
="no"
920 --enable-netmap) netmap
="yes"
922 --disable-xen) xen
="no"
924 --enable-xen) xen
="yes"
926 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
928 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
930 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
932 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
934 --disable-brlapi) brlapi
="no"
936 --enable-brlapi) brlapi
="yes"
938 --disable-bluez) bluez
="no"
940 --enable-bluez) bluez
="yes"
942 --disable-kvm) kvm
="no"
944 --enable-kvm) kvm
="yes"
946 --disable-hax) hax
="no"
948 --enable-hax) hax
="yes"
950 --disable-tcg-interpreter) tcg_interpreter
="no"
952 --enable-tcg-interpreter) tcg_interpreter
="yes"
954 --disable-cap-ng) cap_ng
="no"
956 --enable-cap-ng) cap_ng
="yes"
958 --disable-spice) spice
="no"
960 --enable-spice) spice
="yes"
962 --disable-libiscsi) libiscsi
="no"
964 --enable-libiscsi) libiscsi
="yes"
966 --disable-libnfs) libnfs
="no"
968 --enable-libnfs) libnfs
="yes"
970 --enable-profiler) profiler
="yes"
972 --disable-cocoa) cocoa
="no"
976 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
978 --disable-system) softmmu
="no"
980 --enable-system) softmmu
="yes"
987 --disable-linux-user) linux_user
="no"
989 --enable-linux-user) linux_user
="yes"
991 --disable-bsd-user) bsd_user
="no"
993 --enable-bsd-user) bsd_user
="yes"
995 --enable-pie) pie
="yes"
997 --disable-pie) pie
="no"
999 --enable-werror) werror
="yes"
1001 --disable-werror) werror
="no"
1003 --enable-stack-protector) stack_protector
="yes"
1005 --disable-stack-protector) stack_protector
="no"
1007 --disable-curses) curses
="no"
1009 --enable-curses) curses
="yes"
1011 --disable-curl) curl
="no"
1013 --enable-curl) curl
="yes"
1015 --disable-fdt) fdt
="no"
1017 --enable-fdt) fdt
="yes"
1019 --disable-linux-aio) linux_aio
="no"
1021 --enable-linux-aio) linux_aio
="yes"
1023 --disable-attr) attr
="no"
1025 --enable-attr) attr
="yes"
1027 --disable-blobs) blobs
="no"
1029 --with-pkgversion=*) pkgversion
=" ($optarg)"
1031 --with-coroutine=*) coroutine
="$optarg"
1033 --disable-coroutine-pool) coroutine_pool
="no"
1035 --enable-coroutine-pool) coroutine_pool
="yes"
1037 --enable-debug-stack-usage) debug_stack_usage
="yes"
1039 --disable-docs) docs
="no"
1041 --enable-docs) docs
="yes"
1043 --disable-vhost-net) vhost_net
="no"
1045 --enable-vhost-net) vhost_net
="yes"
1047 --disable-vhost-scsi) vhost_scsi
="no"
1049 --enable-vhost-scsi) vhost_scsi
="yes"
1051 --disable-vhost-vsock) vhost_vsock
="no"
1053 --enable-vhost-vsock) vhost_vsock
="yes"
1055 --disable-opengl) opengl
="no"
1057 --enable-opengl) opengl
="yes"
1059 --disable-rbd) rbd
="no"
1061 --enable-rbd) rbd
="yes"
1063 --disable-xfsctl) xfs
="no"
1065 --enable-xfsctl) xfs
="yes"
1067 --disable-smartcard) smartcard
="no"
1069 --enable-smartcard) smartcard
="yes"
1071 --disable-libusb) libusb
="no"
1073 --enable-libusb) libusb
="yes"
1075 --disable-usb-redir) usb_redir
="no"
1077 --enable-usb-redir) usb_redir
="yes"
1079 --disable-zlib-test) zlib
="no"
1081 --disable-lzo) lzo
="no"
1083 --enable-lzo) lzo
="yes"
1085 --disable-snappy) snappy
="no"
1087 --enable-snappy) snappy
="yes"
1089 --disable-bzip2) bzip2="no"
1091 --enable-bzip2) bzip2="yes"
1093 --enable-guest-agent) guest_agent
="yes"
1095 --disable-guest-agent) guest_agent
="no"
1097 --enable-guest-agent-msi) guest_agent_msi
="yes"
1099 --disable-guest-agent-msi) guest_agent_msi
="no"
1101 --with-vss-sdk) vss_win32_sdk
=""
1103 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1105 --without-vss-sdk) vss_win32_sdk
="no"
1107 --with-win-sdk) win_sdk
=""
1109 --with-win-sdk=*) win_sdk
="$optarg"
1111 --without-win-sdk) win_sdk
="no"
1113 --enable-tools) want_tools
="yes"
1115 --disable-tools) want_tools
="no"
1117 --enable-seccomp) seccomp
="yes"
1119 --disable-seccomp) seccomp
="no"
1121 --disable-glusterfs) glusterfs
="no"
1123 --enable-glusterfs) glusterfs
="yes"
1125 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1126 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1128 --enable-vhdx|
--disable-vhdx)
1129 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1131 --enable-uuid|
--disable-uuid)
1132 echo "$0: $opt is obsolete, UUID support is always built" >&2
1134 --disable-gtk) gtk
="no"
1136 --enable-gtk) gtk
="yes"
1138 --tls-priority=*) tls_priority
="$optarg"
1140 --disable-gnutls) gnutls
="no"
1142 --enable-gnutls) gnutls
="yes"
1144 --disable-nettle) nettle
="no"
1146 --enable-nettle) nettle
="yes"
1148 --disable-gcrypt) gcrypt
="no"
1150 --enable-gcrypt) gcrypt
="yes"
1152 --enable-rdma) rdma
="yes"
1154 --disable-rdma) rdma
="no"
1156 --with-gtkabi=*) gtkabi
="$optarg"
1158 --disable-vte) vte
="no"
1160 --enable-vte) vte
="yes"
1162 --disable-virglrenderer) virglrenderer
="no"
1164 --enable-virglrenderer) virglrenderer
="yes"
1166 --disable-tpm) tpm
="no"
1168 --enable-tpm) tpm
="yes"
1170 --disable-libssh2) libssh2
="no"
1172 --enable-libssh2) libssh2
="yes"
1174 --disable-live-block-migration) live_block_migration
="no"
1176 --enable-live-block-migration) live_block_migration
="yes"
1178 --disable-numa) numa
="no"
1180 --enable-numa) numa
="yes"
1182 --disable-tcmalloc) tcmalloc
="no"
1184 --enable-tcmalloc) tcmalloc
="yes"
1186 --disable-jemalloc) jemalloc
="no"
1188 --enable-jemalloc) jemalloc
="yes"
1190 --disable-replication) replication
="no"
1192 --enable-replication) replication
="yes"
1194 --disable-vxhs) vxhs
="no"
1196 --enable-vxhs) vxhs
="yes"
1199 echo "ERROR: unknown option $opt"
1200 echo "Try '$0 --help' for more information"
1209 LDFLAGS
="-m32 $LDFLAGS"
1213 LDFLAGS
="-m64 $LDFLAGS"
1216 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1217 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1220 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1221 LDFLAGS
="-m64 $LDFLAGS"
1225 LDFLAGS
="-m31 $LDFLAGS"
1229 LDFLAGS
="-m64 $LDFLAGS"
1233 LDFLAGS
="-m32 $LDFLAGS"
1234 cc_i386
='$(CC) -m32'
1237 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1238 # If we truly care, we should simply detect this case at
1239 # runtime and generate the fallback to serial emulation.
1240 CPU_CFLAGS
="-m64 -mcx16"
1241 LDFLAGS
="-m64 $LDFLAGS"
1242 cc_i386
='$(CC) -m32'
1246 LDFLAGS
="-mx32 $LDFLAGS"
1247 cc_i386
='$(CC) -m32'
1249 # No special flags required for other host CPUs
1252 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1253 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1255 # For user-mode emulation the host arch has to be one we explicitly
1256 # support, even if we're using TCI.
1257 if [ "$ARCH" = "unknown" ]; then
1262 default_target_list
=""
1266 if [ "$softmmu" = "yes" ]; then
1267 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1269 if [ "$linux_user" = "yes" ]; then
1270 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1272 if [ "$bsd_user" = "yes" ]; then
1273 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1276 for config
in $mak_wilds; do
1277 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1280 # Enumerate public trace backends for --help output
1281 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1283 if test x
"$show_help" = x
"yes" ; then
1286 Usage: configure [options]
1287 Options: [defaults in brackets after descriptions]
1290 --help print this message
1291 --prefix=PREFIX install in PREFIX [$prefix]
1292 --interp-prefix=PREFIX where to find shared libraries, etc.
1293 use %M for cpu name [$interp_prefix]
1294 --target-list=LIST set target list (default: build everything)
1295 $(echo Available targets: $default_target_list | \
1296 fold -s -w 53 | sed -e 's/^/ /')
1298 Advanced options (experts only):
1299 --source-path=PATH path of source code [$source_path]
1300 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1301 --cc=CC use C compiler CC [$cc]
1302 --iasl=IASL use ACPI compiler IASL [$iasl]
1303 --host-cc=CC use C compiler CC [$host_cc] for code run at
1305 --cxx=CXX use C++ compiler CXX [$cxx]
1306 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1307 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1308 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1309 --make=MAKE use specified make [$make]
1310 --install=INSTALL use specified install [$install]
1311 --python=PYTHON use specified python [$python]
1312 --smbd=SMBD use specified smbd [$smbd]
1313 --static enable static build [$static]
1314 --mandir=PATH install man pages in PATH
1315 --datadir=PATH install firmware in PATH$confsuffix
1316 --docdir=PATH install documentation in PATH$confsuffix
1317 --bindir=PATH install binaries in PATH
1318 --libdir=PATH install libraries in PATH
1319 --sysconfdir=PATH install config in PATH$confsuffix
1320 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1321 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1322 --enable-debug enable common debug build options
1323 --disable-strip disable stripping binaries
1324 --disable-werror disable compilation abort on warning
1325 --disable-stack-protector disable compiler-provided stack protection
1326 --audio-drv-list=LIST set audio drivers list:
1327 Available drivers: $audio_possible_drivers
1328 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1329 --block-drv-rw-whitelist=L
1330 set block driver read-write whitelist
1331 (affects only QEMU, not qemu-img)
1332 --block-drv-ro-whitelist=L
1333 set block driver read-only whitelist
1334 (affects only QEMU, not qemu-img)
1335 --enable-trace-backends=B Set trace backend
1336 Available backends: $trace_backend_list
1337 --with-trace-file=NAME Full PATH,NAME of file to store traces
1339 --disable-slirp disable SLIRP userspace network connectivity
1340 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1341 --oss-lib path to OSS library
1342 --cpu=CPU Build for host CPU [$cpu]
1343 --with-coroutine=BACKEND coroutine backend. Supported options:
1344 ucontext, sigaltstack, windows
1345 --enable-gcov enable test coverage analysis with gcov
1346 --gcov=GCOV use specified gcov [$gcov_tool]
1347 --disable-blobs disable installing provided firmware blobs
1348 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1349 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1350 --tls-priority default TLS protocol/cipher priority string
1351 --enable-gprof QEMU profiling with gprof
1352 --enable-profiler profiler support
1353 --enable-xen-pv-domain-build
1354 xen pv domain builder
1355 --enable-debug-stack-usage
1356 track the maximum stack usage of stacks created by qemu_alloc_stack
1358 Optional features, enabled with --enable-FEATURE and
1359 disabled with --disable-FEATURE, default is enabled if available:
1361 system all system emulation targets
1362 user supported user emulation targets
1363 linux-user all linux usermode emulation targets
1364 bsd-user all BSD usermode emulation targets
1365 docs build documentation
1366 guest-agent build the QEMU Guest Agent
1367 guest-agent-msi build guest agent Windows MSI installation package
1368 pie Position Independent Executables
1369 modules modules support
1370 debug-tcg TCG debugging (default is disabled)
1371 debug-info debugging information
1372 sparse sparse checker
1374 gnutls GNUTLS cryptography support
1375 nettle nettle cryptography support
1376 gcrypt libgcrypt cryptography support
1378 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1380 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1381 vte vte support for the gtk UI
1384 vnc-sasl SASL encryption for VNC server
1385 vnc-jpeg JPEG lossy compression for VNC server
1386 vnc-png PNG compression for VNC server
1387 cocoa Cocoa UI (Mac OS X only)
1389 xen xen backend driver support
1391 brlapi BrlAPI (Braile)
1392 curl curl connectivity
1394 bluez bluez stack connectivity
1395 kvm KVM acceleration support
1396 hax HAX acceleration support
1397 rdma RDMA-based migration support
1398 vde support for vde network
1399 netmap support for netmap network
1400 linux-aio Linux AIO support
1401 cap-ng libcap-ng support
1402 attr attr and xattr support
1403 vhost-net vhost-net acceleration support
1405 rbd rados block device (rbd)
1406 libiscsi iscsi support
1408 smartcard smartcard support (libcacard)
1409 libusb libusb (for usb passthrough)
1410 live-block-migration Block migration in the main migration stream
1411 usb-redir usb network redirection support
1412 lzo support of lzo compression library
1413 snappy support of snappy compression library
1414 bzip2 support of bzip2 compression library
1415 (for reading bzip2-compressed dmg images)
1416 seccomp seccomp support
1417 coroutine-pool coroutine freelist (better performance)
1418 glusterfs GlusterFS backend
1420 libssh2 ssh block device support
1421 numa libnuma support
1422 tcmalloc tcmalloc support
1423 jemalloc jemalloc support
1424 replication replication support
1425 vhost-vsock virtio sockets device support
1426 opengl opengl support
1427 virglrenderer virgl rendering support
1428 xfsctl xfsctl support
1429 qom-cast-debug cast debugging support
1430 tools build qemu-io, qemu-nbd and qemu-image tools
1431 vxhs Veritas HyperScale vDisk backend support
1433 NOTE: The object files are built at the place where configure is launched
1438 if ! has
$python; then
1439 error_exit
"Python not found. Use --python=/path/to/python"
1442 # Note that if the Python conditional here evaluates True we will exit
1443 # with status 1 which is a shell 'false' value.
1444 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1445 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1446 "Note that Python 3 or later is not yet supported." \
1447 "Use --python=/path/to/python to specify a supported Python."
1450 # Suppress writing compiled files
1453 # Now we have handled --enable-tcg-interpreter and know we're not just
1454 # printing the help message, bail out if the host CPU isn't supported.
1455 if test "$ARCH" = "unknown"; then
1456 if test "$tcg_interpreter" = "yes" ; then
1457 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1459 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1463 # Consult white-list to determine whether to enable werror
1464 # by default. Only enable by default for git builds
1465 if test -z "$werror" ; then
1466 if test -d "$source_path/.git" -a \
1467 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1474 # check that the C compiler works.
1476 if compile_object
; then
1477 : C compiler works ok
1479 error_exit
"\"$cc\" either does not exist or does not work"
1481 if ! compile_prog
; then
1482 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1485 if test "$bogus_os" = "yes"; then
1486 # Now that we know that we're not printing the help and that
1487 # the compiler works (so the results of the check_defines we used
1488 # to identify the OS are reliable), if we didn't recognize the
1489 # host OS we should stop now.
1490 error_exit
"Unrecognized host OS $targetos"
1493 # Check that the C++ compiler exists and works with the C compiler
1496 int c_function(void);
1497 int main(void) { return c_function(); }
1504 int c_function(void);
1506 int c_function(void) { return 42; }
1511 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1512 # C++ compiler $cxx works ok with C compiler $cc
1515 echo "C++ compiler $cxx does not work with C compiler $cc"
1516 echo "Disabling C++ specific optional code"
1520 echo "No C++ compiler available; disabling C++ specific optional code"
1524 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1525 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1526 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1527 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1528 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1529 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1530 # Note that we do not add -Werror to gcc_flags here, because that would
1531 # enable it for all configure tests. If a configure test failed due
1532 # to -Werror this would just silently disable some features,
1533 # so it's too error prone.
1535 cc_has_warning_flag
() {
1538 # Use the positive sense of the flag when testing for -Wno-wombat
1539 # support (gcc will happily accept the -Wno- form of unknown
1541 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1542 compile_prog
"-Werror $optflag" ""
1545 for flag
in $gcc_flags; do
1546 if cc_has_warning_flag
$flag ; then
1547 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1551 if test "$stack_protector" != "no"; then
1553 int main(int argc, char *argv[])
1555 char arr[64], *p = arr, *c = argv[0];
1562 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1564 for flag
in $gcc_flags; do
1565 # We need to check both a compile and a link, since some compiler
1566 # setups fail only on a .c->.o compile and some only at link time
1567 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1568 compile_prog
"-Werror $flag" ""; then
1569 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1574 if test "$stack_protector" = yes; then
1575 if test $sp_on = 0; then
1576 error_exit
"Stack protector not supported"
1581 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1582 # large functions that use global variables. The bug is in all releases of
1583 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1584 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1586 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1587 int main(void) { return 0; }
1589 #error No bug in this compiler.
1592 if compile_prog
"-Werror -fno-gcse" "" ; then
1593 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1596 if test "$static" = "yes" ; then
1597 if test "$modules" = "yes" ; then
1598 error_exit
"static and modules are mutually incompatible"
1600 if test "$pie" = "yes" ; then
1601 error_exit
"static and pie are mutually incompatible"
1607 # Unconditional check for compiler __thread support
1609 static __thread int tls_var;
1610 int main(void) { return tls_var; }
1613 if ! compile_prog
"-Werror" "" ; then
1614 error_exit
"Your compiler does not support the __thread specifier for " \
1615 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1618 if test "$pie" = ""; then
1619 case "$cpu-$targetos" in
1620 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1628 if test "$pie" != "no" ; then
1632 # define THREAD __thread
1637 static THREAD int tls_var;
1639 int main(void) { return tls_var; }
1642 if compile_prog
"-fPIE -DPIE" "-pie"; then
1643 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1644 LDFLAGS
="-pie $LDFLAGS"
1646 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1647 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1650 if test "$pie" = "yes"; then
1651 error_exit
"PIE not available due to missing toolchain support"
1653 echo "Disabling PIE due to missing toolchain support"
1658 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1659 CFLAGS_NOPIE
="-fno-pie"
1660 LDFLAGS_NOPIE
="-nopie"
1664 ##########################################
1665 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1666 # use i686 as default anyway, but for those that don't, an explicit
1667 # specification is necessary
1669 if test "$cpu" = "i386"; then
1671 static int sfaa(int *ptr)
1673 return __sync_fetch_and_and(ptr, 0);
1679 val = __sync_val_compare_and_swap(&val, 0, 1);
1684 if ! compile_prog
"" "" ; then
1685 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1689 #########################################
1690 # Solaris specific configure tool chain decisions
1692 if test "$solaris" = "yes" ; then
1693 if has
$install; then
1696 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1697 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1698 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1700 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1701 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1702 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1703 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1708 if test -f /usr
/ccs
/bin
/ar ; then
1709 error_exit
"No path includes ar" \
1710 "Add /usr/ccs/bin to your path and rerun configure"
1712 error_exit
"No path includes ar"
1716 if test -z "${target_list+xxx}" ; then
1717 target_list
="$default_target_list"
1719 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1722 # Check that we recognised the target name; this allows a more
1723 # friendly error message than if we let it fall through.
1724 for target
in $target_list; do
1725 case " $default_target_list " in
1729 error_exit
"Unknown target name '$target'"
1734 # see if system emulation was really requested
1735 case " $target_list " in
1736 *"-softmmu "*) softmmu
=yes
1742 feature_not_found
() {
1746 error_exit
"User requested feature $feature" \
1747 "configure was not able to find it." \
1752 # big/little endian test
1754 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1755 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1756 extern int foo(short *, short *);
1757 int main(int argc, char *argv[]) {
1758 return foo(big_endian, little_endian);
1762 if compile_object
; then
1763 if grep -q BiGeNdIaN
$TMPO ; then
1765 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1768 echo big
/little
test failed
1771 echo big
/little
test failed
1774 ##########################################
1775 # cocoa implies not SDL or GTK
1776 # (the cocoa UI code currently assumes it is always the active UI
1777 # and doesn't interact well with other UI frontend code)
1778 if test "$cocoa" = "yes"; then
1779 if test "$sdl" = "yes"; then
1780 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1782 if test "$gtk" = "yes"; then
1783 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1789 # Some versions of Mac OS X incorrectly define SIZE_MAX
1793 int main(int argc, char *argv[]) {
1794 return printf("%zu", SIZE_MAX);
1797 have_broken_size_max
=no
1798 if ! compile_object
-Werror ; then
1799 have_broken_size_max
=yes
1802 ##########################################
1806 #include <sys/socket.h>
1807 #include <linux/ip.h>
1808 int main(void) { return sizeof(struct mmsghdr); }
1810 if compile_prog
"" "" ; then
1816 ##########################################
1817 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1819 if test "$mingw32" = "yes"; then
1820 # Some versions of MinGW / Mingw-w64 lack localtime_r
1821 # and gmtime_r entirely.
1823 # Some versions of Mingw-w64 define a macro for
1824 # localtime_r/gmtime_r.
1826 # Some versions of Mingw-w64 will define functions
1827 # for localtime_r/gmtime_r, but only if you have
1828 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1829 # though, unistd.h and pthread.h both define
1832 # So this #undef localtime_r and #include <unistd.h>
1833 # are not in fact redundant.
1838 int main(void) { localtime_r(NULL, NULL); return 0; }
1840 if compile_prog
"" "" ; then
1847 ##########################################
1850 if ! has
"$pkg_config_exe"; then
1851 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1854 ##########################################
1857 if test "$linux_user" = "yes"; then
1860 #include <linux/futex.h>
1862 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1868 if ! compile_object
; then
1869 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1873 ##########################################
1874 # avx2 optimization requirement check
1877 #pragma GCC push_options
1878 #pragma GCC target("avx2")
1880 #include <immintrin.h>
1881 static int bar(void *a) {
1882 __m256i x = *(__m256i *)a;
1883 return _mm256_testz_si256(x, x);
1885 int main(int argc, char *argv[]) { return bar(argv[0]); }
1887 if compile_object
"" ; then
1891 #########################################
1894 if test "$zlib" != "no" ; then
1897 int main(void) { zlibVersion(); return 0; }
1899 if compile_prog
"" "-lz" ; then
1902 error_exit
"zlib check failed" \
1903 "Make sure to have the zlib libs and headers installed."
1908 ##########################################
1911 if test "$lzo" != "no" ; then
1913 #include <lzo/lzo1x.h>
1914 int main(void) { lzo_version(); return 0; }
1916 if compile_prog
"" "-llzo2" ; then
1917 libs_softmmu
="$libs_softmmu -llzo2"
1920 if test "$lzo" = "yes"; then
1921 feature_not_found
"liblzo2" "Install liblzo2 devel"
1927 ##########################################
1930 if test "$snappy" != "no" ; then
1932 #include <snappy-c.h>
1933 int main(void) { snappy_max_compressed_length(4096); return 0; }
1935 if compile_prog
"" "-lsnappy" ; then
1936 libs_softmmu
="$libs_softmmu -lsnappy"
1939 if test "$snappy" = "yes"; then
1940 feature_not_found
"libsnappy" "Install libsnappy devel"
1946 ##########################################
1949 if test "$bzip2" != "no" ; then
1952 int main(void) { BZ2_bzlibVersion(); return 0; }
1954 if compile_prog
"" "-lbz2" ; then
1957 if test "$bzip2" = "yes"; then
1958 feature_not_found
"libbzip2" "Install libbzip2 devel"
1964 ##########################################
1967 if test "$seccomp" != "no" ; then
1970 libseccomp_minver
="2.1.0"
1973 libseccomp_minver
="2.2.0"
1976 libseccomp_minver
="2.2.3"
1979 libseccomp_minver
="2.3.0"
1982 libseccomp_minver
=""
1986 if test "$libseccomp_minver" != "" &&
1987 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
1988 libs_softmmu
="$libs_softmmu $($pkg_config --libs libseccomp)"
1989 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
1992 if test "$seccomp" = "yes" ; then
1993 if test "$libseccomp_minver" != "" ; then
1994 feature_not_found
"libseccomp" \
1995 "Install libseccomp devel >= $libseccomp_minver"
1997 feature_not_found
"libseccomp" \
1998 "libseccomp is not supported for host cpu $cpu"
2004 ##########################################
2007 if test "$xen" != "no" ; then
2008 # Check whether Xen library path is specified via --extra-ldflags to avoid
2009 # overriding this setting with pkg-config output. If not, try pkg-config
2010 # to obtain all needed flags.
2012 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2013 $pkg_config --exists xencontrol
; then
2014 xen_ctrl_version
="$(printf '%d%02d%02d' \
2015 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2017 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2018 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2019 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2020 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2021 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2024 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2025 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2027 # First we test whether Xen headers and libraries are available.
2028 # If no, we are done and there is no Xen support.
2029 # If yes, more tests are run to detect the Xen version.
2033 #include <xenctrl.h>
2038 if ! compile_prog
"" "$xen_libs" ; then
2040 if test "$xen" = "yes" ; then
2041 feature_not_found
"xen" "Install xen devel"
2047 cat > $TMPC <<EOF &&
2048 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2049 #define __XEN_TOOLS__
2050 #include <xendevicemodel.h>
2052 xendevicemodel_handle *xd;
2054 xd = xendevicemodel_open(0, 0);
2055 xendevicemodel_close(xd);
2060 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2062 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2063 xen_ctrl_version
=40900
2066 cat > $TMPC <<EOF &&
2068 * If we have stable libs the we don't want the libxc compat
2069 * layers, regardless of what CFLAGS we may have been given.
2071 * Also, check if xengnttab_grant_copy_segment_t is defined and
2072 * grant copy operation is implemented.
2074 #undef XC_WANT_COMPAT_EVTCHN_API
2075 #undef XC_WANT_COMPAT_GNTTAB_API
2076 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2077 #include <xenctrl.h>
2078 #include <xenstore.h>
2079 #include <xenevtchn.h>
2080 #include <xengnttab.h>
2081 #include <xenforeignmemory.h>
2083 #include <xen/hvm/hvm_info_table.h>
2084 #if !defined(HVM_MAX_VCPUS)
2085 # error HVM_MAX_VCPUS not defined
2088 xc_interface *xc = NULL;
2089 xenforeignmemory_handle *xfmem;
2090 xenevtchn_handle *xe;
2091 xengnttab_handle *xg;
2092 xen_domain_handle_t handle;
2093 xengnttab_grant_copy_segment_t* seg = NULL;
2097 xc = xc_interface_open(0, 0, 0);
2098 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2099 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2100 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2101 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2102 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2104 xfmem = xenforeignmemory_open(0, 0);
2105 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2107 xe = xenevtchn_open(0, 0);
2110 xg = xengnttab_open(0, 0);
2111 xengnttab_grant_copy(xg, 0, seg);
2116 compile_prog
"" "$xen_libs $xen_stable_libs"
2118 xen_ctrl_version
=40800
2121 cat > $TMPC <<EOF &&
2123 * If we have stable libs the we don't want the libxc compat
2124 * layers, regardless of what CFLAGS we may have been given.
2126 #undef XC_WANT_COMPAT_EVTCHN_API
2127 #undef XC_WANT_COMPAT_GNTTAB_API
2128 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2129 #include <xenctrl.h>
2130 #include <xenstore.h>
2131 #include <xenevtchn.h>
2132 #include <xengnttab.h>
2133 #include <xenforeignmemory.h>
2135 #include <xen/hvm/hvm_info_table.h>
2136 #if !defined(HVM_MAX_VCPUS)
2137 # error HVM_MAX_VCPUS not defined
2140 xc_interface *xc = NULL;
2141 xenforeignmemory_handle *xfmem;
2142 xenevtchn_handle *xe;
2143 xengnttab_handle *xg;
2144 xen_domain_handle_t handle;
2148 xc = xc_interface_open(0, 0, 0);
2149 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2150 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2151 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2152 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2153 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2155 xfmem = xenforeignmemory_open(0, 0);
2156 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2158 xe = xenevtchn_open(0, 0);
2161 xg = xengnttab_open(0, 0);
2162 xengnttab_map_grant_ref(xg, 0, 0, 0);
2167 compile_prog
"" "$xen_libs $xen_stable_libs"
2169 xen_ctrl_version
=40701
2172 cat > $TMPC <<EOF &&
2173 #include <xenctrl.h>
2176 xc_interface *xc = NULL;
2177 xen_domain_handle_t handle;
2178 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2182 compile_prog
"" "$xen_libs"
2184 xen_ctrl_version
=40700
2189 cat > $TMPC <<EOF &&
2190 #include <xenctrl.h>
2191 #include <xenstore.h>
2193 #include <xen/hvm/hvm_info_table.h>
2194 #if !defined(HVM_MAX_VCPUS)
2195 # error HVM_MAX_VCPUS not defined
2200 xc = xc_interface_open(0, 0, 0);
2201 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2202 xc_gnttab_open(NULL, 0);
2203 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2204 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2205 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2206 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2210 compile_prog
"" "$xen_libs"
2212 xen_ctrl_version
=40600
2217 cat > $TMPC <<EOF &&
2218 #include <xenctrl.h>
2219 #include <xenstore.h>
2221 #include <xen/hvm/hvm_info_table.h>
2222 #if !defined(HVM_MAX_VCPUS)
2223 # error HVM_MAX_VCPUS not defined
2228 xc = xc_interface_open(0, 0, 0);
2229 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2230 xc_gnttab_open(NULL, 0);
2231 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2232 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2233 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2237 compile_prog
"" "$xen_libs"
2239 xen_ctrl_version
=40500
2243 cat > $TMPC <<EOF &&
2244 #include <xenctrl.h>
2245 #include <xenstore.h>
2247 #include <xen/hvm/hvm_info_table.h>
2248 #if !defined(HVM_MAX_VCPUS)
2249 # error HVM_MAX_VCPUS not defined
2254 xc = xc_interface_open(0, 0, 0);
2255 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2256 xc_gnttab_open(NULL, 0);
2257 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2258 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2262 compile_prog
"" "$xen_libs"
2264 xen_ctrl_version
=40200
2268 if test "$xen" = "yes" ; then
2269 feature_not_found
"xen (unsupported version)" \
2270 "Install a supported xen (xen 4.2 or newer)"
2275 if test "$xen" = yes; then
2276 if test $xen_ctrl_version -ge 40701 ; then
2277 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2279 libs_softmmu
="$xen_libs $libs_softmmu"
2284 if test "$xen_pci_passthrough" != "no"; then
2285 if test "$xen" = "yes" && test "$linux" = "yes"; then
2286 xen_pci_passthrough
=yes
2288 if test "$xen_pci_passthrough" = "yes"; then
2289 error_exit
"User requested feature Xen PCI Passthrough" \
2290 " but this feature requires /sys from Linux"
2292 xen_pci_passthrough
=no
2296 if test "$xen_pv_domain_build" = "yes" &&
2297 test "$xen" != "yes"; then
2298 error_exit
"User requested Xen PV domain builder support" \
2299 "which requires Xen support."
2302 ##########################################
2304 if test "$sparse" != "no" ; then
2308 if test "$sparse" = "yes" ; then
2309 feature_not_found
"sparse" "Install sparse binary"
2315 ##########################################
2319 if $pkg_config --exists "x11"; then
2320 x11_cflags
=$
($pkg_config --cflags x11
)
2321 x11_libs
=$
($pkg_config --libs x11
)
2324 ##########################################
2327 if test "$gtkabi" = ""; then
2328 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2329 # Use 3.0 as a fallback if that is available.
2330 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2332 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2339 if test "$gtk" != "no"; then
2340 gtkpackage
="gtk+-$gtkabi"
2341 gtkx11package
="gtk+-x11-$gtkabi"
2342 if test "$gtkabi" = "3.0" ; then
2347 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2348 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2349 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2350 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2351 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2352 gtk_cflags
="$gtk_cflags $x11_cflags"
2353 gtk_libs
="$gtk_libs $x11_libs"
2355 libs_softmmu
="$gtk_libs $libs_softmmu"
2357 elif test "$gtk" = "yes"; then
2358 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2365 ##########################################
2369 # Unfortunately some distros have bad pkg-config information for gnutls
2370 # such that it claims to exist but you get a compiler error if you try
2371 # to use the options returned by --libs. Specifically, Ubuntu for --static
2372 # builds doesn't work:
2373 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2375 # So sanity check the cflags/libs before assuming gnutls can be used.
2376 if ! $pkg_config --exists "gnutls"; then
2381 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2386 if test "$gnutls" != "no"; then
2387 if gnutls_works
; then
2388 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2389 gnutls_libs
=$
($pkg_config --libs gnutls
)
2390 libs_softmmu
="$gnutls_libs $libs_softmmu"
2391 libs_tools
="$gnutls_libs $libs_tools"
2392 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2395 # gnutls_rnd requires >= 2.11.0
2396 if $pkg_config --exists "gnutls >= 2.11.0"; then
2402 if $pkg_config --exists 'gnutls >= 3.0'; then
2405 elif $pkg_config --exists 'gnutls >= 2.12'; then
2406 case $
($pkg_config --libs --static gnutls
) in
2424 elif test "$gnutls" = "yes"; then
2425 feature_not_found
"gnutls" "Install gnutls devel"
2435 # If user didn't give a --disable/enable-gcrypt flag,
2436 # then mark as disabled if user requested nettle
2437 # explicitly, or if gnutls links to nettle
2438 if test -z "$gcrypt"
2440 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2446 # If user didn't give a --disable/enable-nettle flag,
2447 # then mark as disabled if user requested gcrypt
2448 # explicitly, or if gnutls links to gcrypt
2449 if test -z "$nettle"
2451 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2457 has_libgcrypt_config
() {
2458 if ! has
"libgcrypt-config"
2463 if test -n "$cross_prefix"
2465 host=$
(libgcrypt-config
--host)
2466 if test "$host-" != $cross_prefix
2475 if test "$gcrypt" != "no"; then
2476 if has_libgcrypt_config
; then
2477 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2478 gcrypt_libs
=$
(libgcrypt-config
--libs)
2479 # Debian has remove -lgpg-error from libgcrypt-config
2480 # as it "spreads unnecessary dependencies" which in
2481 # turn breaks static builds...
2482 if test "$static" = "yes"
2484 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2486 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2487 libs_tools
="$gcrypt_libs $libs_tools"
2488 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2490 if test -z "$nettle"; then
2497 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2499 NULL, 0, 0, 0, NULL);
2503 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2510 gcry_mac_hd_t handle;
2511 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2512 GCRY_MAC_FLAG_SECURE, NULL);
2516 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2520 if test "$gcrypt" = "yes"; then
2521 feature_not_found
"gcrypt" "Install gcrypt devel"
2529 if test "$nettle" != "no"; then
2530 if $pkg_config --exists "nettle"; then
2531 nettle_cflags
=$
($pkg_config --cflags nettle
)
2532 nettle_libs
=$
($pkg_config --libs nettle
)
2533 nettle_version
=$
($pkg_config --modversion nettle
)
2534 libs_softmmu
="$nettle_libs $libs_softmmu"
2535 libs_tools
="$nettle_libs $libs_tools"
2536 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2541 #include <nettle/pbkdf2.h>
2543 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2547 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2551 if test "$nettle" = "yes"; then
2552 feature_not_found
"nettle" "Install nettle devel"
2559 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2561 error_exit
"Only one of gcrypt & nettle can be enabled"
2564 ##########################################
2565 # libtasn1 - only for the TLS creds/session test suite
2570 if $pkg_config --exists "libtasn1"; then
2571 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2572 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2578 ##########################################
2579 # getifaddrs (for tests/test-io-channel-socket )
2582 if ! check_include
"ifaddrs.h" ; then
2586 ##########################################
2589 if test "$vte" != "no"; then
2590 if test "$gtkabi" = "3.0"; then
2591 vteminversion
="0.32.0"
2592 if $pkg_config --exists "vte-2.91"; then
2593 vtepackage
="vte-2.91"
2595 vtepackage
="vte-2.90"
2599 vteminversion
="0.24.0"
2601 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2602 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2603 vte_libs
=$
($pkg_config --libs $vtepackage)
2604 vteversion
=$
($pkg_config --modversion $vtepackage)
2605 libs_softmmu
="$vte_libs $libs_softmmu"
2607 elif test "$vte" = "yes"; then
2608 if test "$gtkabi" = "3.0"; then
2609 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2611 feature_not_found
"vte" "Install libvte devel"
2618 ##########################################
2621 # Look for sdl configuration program (pkg-config or sdl-config). Try
2622 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2624 if test "$sdlabi" = ""; then
2625 if $pkg_config --exists "sdl"; then
2627 elif $pkg_config --exists "sdl2"; then
2634 if test $sdlabi = "2.0"; then
2635 sdl_config
=$sdl2_config
2637 sdlconfigname
=sdl2_config
2638 elif test $sdlabi = "1.2"; then
2640 sdlconfigname
=sdl_config
2642 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2645 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2646 sdl_config
=$sdlconfigname
2649 if $pkg_config $sdlname --exists; then
2650 sdlconfig
="$pkg_config $sdlname"
2651 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2652 elif has
${sdl_config}; then
2653 sdlconfig
="$sdl_config"
2654 sdlversion
=$
($sdlconfig --version)
2656 if test "$sdl" = "yes" ; then
2657 feature_not_found
"sdl" "Install SDL devel"
2661 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2662 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2666 if test "$sdl" != "no" ; then
2669 #undef main /* We don't want SDL to override our main() */
2670 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2672 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2673 if test "$static" = "yes" ; then
2674 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2676 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2678 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2679 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2685 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2686 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2687 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2688 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2689 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2691 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2697 else # sdl not found
2698 if test "$sdl" = "yes" ; then
2699 feature_not_found
"sdl" "Install SDL devel"
2702 fi # sdl compile test
2705 if test "$sdl" = "yes" ; then
2708 #if defined(SDL_VIDEO_DRIVER_X11)
2709 #include <X11/XKBlib.h>
2711 #error No x11 support
2713 int main(void) { return 0; }
2715 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2716 sdl_cflags
="$sdl_cflags $x11_cflags"
2717 sdl_libs
="$sdl_libs $x11_libs"
2719 libs_softmmu
="$sdl_libs $libs_softmmu"
2722 ##########################################
2723 # RDMA needs OpenFabrics libraries
2724 if test "$rdma" != "no" ; then
2726 #include <rdma/rdma_cma.h>
2727 int main(void) { return 0; }
2729 rdma_libs
="-lrdmacm -libverbs"
2730 if compile_prog
"" "$rdma_libs" ; then
2732 libs_softmmu
="$libs_softmmu $rdma_libs"
2734 if test "$rdma" = "yes" ; then
2736 " OpenFabrics librdmacm/libibverbs not present." \
2738 " (1) Fast: Install infiniband packages from your distro." \
2739 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2740 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2747 ##########################################
2748 # VNC SASL detection
2749 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2751 #include <sasl/sasl.h>
2753 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2755 # Assuming Cyrus-SASL installed in /usr prefix
2757 vnc_sasl_libs
="-lsasl2"
2758 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2760 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2761 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2763 if test "$vnc_sasl" = "yes" ; then
2764 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2770 ##########################################
2771 # VNC JPEG detection
2772 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2775 #include <jpeglib.h>
2776 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2779 vnc_jpeg_libs
="-ljpeg"
2780 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2782 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2783 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2785 if test "$vnc_jpeg" = "yes" ; then
2786 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2792 ##########################################
2794 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2796 //#include <stdio.h>
2800 png_structp png_ptr;
2801 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2802 return png_ptr != 0;
2805 if $pkg_config libpng
--exists; then
2806 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2807 vnc_png_libs
=$
($pkg_config libpng
--libs)
2810 vnc_png_libs
="-lpng"
2812 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2814 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2815 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2817 if test "$vnc_png" = "yes" ; then
2818 feature_not_found
"vnc-png" "Install libpng devel"
2824 ##########################################
2825 # fnmatch() probe, used for ACL routines
2828 #include <fnmatch.h>
2831 fnmatch("foo", "foo", 0);
2835 if compile_prog
"" "" ; then
2839 ##########################################
2840 # xfsctl() probe, used for file-posix.c
2841 if test "$xfs" != "no" ; then
2843 #include <stddef.h> /* NULL */
2844 #include <xfs/xfs.h>
2847 xfsctl(NULL, 0, 0, NULL);
2851 if compile_prog
"" "" ; then
2854 if test "$xfs" = "yes" ; then
2855 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2861 ##########################################
2862 # vde libraries probe
2863 if test "$vde" != "no" ; then
2864 vde_libs
="-lvdeplug"
2866 #include <libvdeplug.h>
2869 struct vde_open_args a = {0, 0, 0};
2875 if compile_prog
"" "$vde_libs" ; then
2877 libs_softmmu
="$vde_libs $libs_softmmu"
2878 libs_tools
="$vde_libs $libs_tools"
2880 if test "$vde" = "yes" ; then
2881 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2887 ##########################################
2888 # netmap support probe
2889 # Apart from looking for netmap headers, we make sure that the host API version
2890 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2891 # a minor/major version number. Minor new features will be marked with values up
2892 # to 15, and if something happens that requires a change to the backend we will
2893 # move above 15, submit the backend fixes and modify this two bounds.
2894 if test "$netmap" != "no" ; then
2896 #include <inttypes.h>
2898 #include <net/netmap.h>
2899 #include <net/netmap_user.h>
2900 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2903 int main(void) { return 0; }
2905 if compile_prog
"" "" ; then
2908 if test "$netmap" = "yes" ; then
2909 feature_not_found
"netmap"
2915 ##########################################
2916 # libcap-ng library probe
2917 if test "$cap_ng" != "no" ; then
2923 capng_capability_to_name(CAPNG_EFFECTIVE);
2927 if compile_prog
"" "$cap_libs" ; then
2929 libs_tools
="$cap_libs $libs_tools"
2931 if test "$cap_ng" = "yes" ; then
2932 feature_not_found
"cap_ng" "Install libcap-ng devel"
2938 ##########################################
2939 # Sound support libraries probe
2950 int main(void) { $exp }
2952 if compile_prog
"$cfl" "$lib" ; then
2955 error_exit
"$drv check failed" \
2956 "Make sure to have the $drv libs and headers installed."
2960 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
2961 for drv
in $audio_drv_list; do
2964 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2965 "return snd_pcm_close((snd_pcm_t *)0);"
2966 libs_softmmu
="-lasound $libs_softmmu"
2970 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
2971 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
2972 libs_softmmu
="-lpulse $libs_softmmu"
2977 if test "$sdl" = "no"; then
2978 error_exit
"sdl not found or disabled, can not use sdl audio driver"
2983 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2987 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2992 libs_softmmu
="$oss_lib $libs_softmmu"
2996 # XXX: Probes for CoreAudio, DirectSound
3000 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3001 error_exit
"Unknown driver '$drv' selected" \
3002 "Possible drivers are: $audio_possible_drivers"
3008 ##########################################
3011 if test "$brlapi" != "no" ; then
3012 brlapi_libs
="-lbrlapi"
3016 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3018 if compile_prog
"" "$brlapi_libs" ; then
3020 libs_softmmu
="$brlapi_libs $libs_softmmu"
3022 if test "$brlapi" = "yes" ; then
3023 feature_not_found
"brlapi" "Install brlapi devel"
3029 ##########################################
3031 if test "$curses" != "no" ; then
3032 if test "$mingw32" = "yes" ; then
3033 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3034 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3036 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3037 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3046 setlocale(LC_ALL, "");
3048 addwstr(L"wide chars\n");
3050 add_wch(WACS_DEGREE);
3055 for curses_inc
in $curses_inc_list; do
3057 for curses_lib
in $curses_lib_list; do
3059 if compile_prog
"$curses_inc" "$curses_lib" ; then
3061 QEMU_CFLAGS
="$curses_inc $QEMU_CFLAGS"
3062 libs_softmmu
="$curses_lib $libs_softmmu"
3066 if test "$curses_found" = yes ; then
3071 if test "$curses_found" = "yes" ; then
3074 if test "$curses" = "yes" ; then
3075 feature_not_found
"curses" "Install ncurses devel"
3081 ##########################################
3083 if test "$curl" != "no" ; then
3084 if $pkg_config libcurl
--exists; then
3085 curlconfig
="$pkg_config libcurl"
3087 curlconfig
=curl-config
3090 #include <curl/curl.h>
3091 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3093 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3094 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3095 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3098 if test "$curl" = "yes" ; then
3099 feature_not_found
"curl" "Install libcurl devel"
3105 ##########################################
3106 # bluez support probe
3107 if test "$bluez" != "no" ; then
3109 #include <bluetooth/bluetooth.h>
3110 int main(void) { return bt_error(0); }
3112 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3113 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3114 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3116 libs_softmmu
="$bluez_libs $libs_softmmu"
3118 if test "$bluez" = "yes" ; then
3119 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3125 ##########################################
3126 # glib support probe
3128 if test "$mingw32" = yes; then
3133 glib_modules
=gthread-2.0
3134 if test "$modules" = yes; then
3135 glib_modules
="$glib_modules gmodule-2.0"
3138 # This workaround is required due to a bug in pkg-config file for glib as it
3139 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3141 if test "$static" = yes -a "$mingw32" = yes; then
3142 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3145 for i
in $glib_modules; do
3146 if $pkg_config --atleast-version=$glib_req_ver $i; then
3147 glib_cflags
=$
($pkg_config --cflags $i)
3148 glib_libs
=$
($pkg_config --libs $i)
3149 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3150 LIBS
="$glib_libs $LIBS"
3151 libs_qga
="$glib_libs $libs_qga"
3153 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3157 # Sanity check that the current size_t matches the
3158 # size that glib thinks it should be. This catches
3159 # problems on multi-arch where people try to build
3160 # 32-bit QEMU while pointing at 64-bit glib headers
3165 #define QEMU_BUILD_BUG_ON(x) \
3166 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3169 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3174 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3175 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3176 "You probably need to set PKG_CONFIG_LIBDIR"\
3177 "to point to the right pkg-config files for your"\
3181 # g_test_trap_subprocess added in 2.38. Used by some tests.
3183 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
3187 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3190 int main(void) { return 0; }
3192 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3193 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3194 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3195 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3199 ##########################################
3200 # SHA command probe for modules
3201 if test "$modules" = yes; then
3202 shacmd_probe
="sha1sum sha1 shasum"
3203 for c
in $shacmd_probe; do
3209 if test "$shacmd" = ""; then
3210 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3214 ##########################################
3215 # pixman support probe
3217 if test "$pixman" = ""; then
3218 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3220 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3226 if test "$pixman" = "none"; then
3227 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3228 error_exit
"pixman disabled but system emulation or tools build" \
3229 "enabled. You can turn off pixman only if you also" \
3230 "disable all system emulation targets and the tools" \
3231 "build with '--disable-tools --disable-system'."
3235 elif test "$pixman" = "system"; then
3236 # pixman version has been checked above
3237 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3238 pixman_libs
=$
($pkg_config --libs pixman-1
)
3240 if test ! -d ${source_path}/pixman
/pixman
; then
3241 error_exit
"pixman >= 0.21.8 not present. Your options:" \
3242 " (1) Preferred: Install the pixman devel package (any recent" \
3243 " distro should have packages as Xorg needs pixman too)." \
3244 " (2) Fetch the pixman submodule, using:" \
3245 " git submodule update --init pixman"
3247 mkdir
-p pixman
/pixman
3248 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3249 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3252 ##########################################
3255 if test "$cap" != "no" ; then
3258 #include <sys/capability.h>
3259 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3261 if compile_prog
"" "-lcap" ; then
3268 ##########################################
3270 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3274 #include <pthread.h>
3275 static void *f(void *p) { return NULL; }
3278 pthread_create(&thread, 0, f, 0);
3282 if compile_prog
"" "" ; then
3285 for pthread_lib
in $PTHREADLIBS_LIST; do
3286 if compile_prog
"" "$pthread_lib" ; then
3289 for lib_entry
in $LIBS; do
3290 if test "$lib_entry" = "$pthread_lib"; then
3295 if test "$found" = "no"; then
3296 LIBS
="$pthread_lib $LIBS"
3298 PTHREAD_LIB
="$pthread_lib"
3304 if test "$mingw32" != yes -a "$pthread" = no
; then
3305 error_exit
"pthread check failed" \
3306 "Make sure to have the pthread libs and headers installed."
3309 # check for pthread_setname_np
3310 pthread_setname_np
=no
3312 #include <pthread.h>
3314 static void *f(void *p) { return NULL; }
3318 pthread_create(&thread, 0, f, 0);
3319 pthread_setname_np(thread, "QEMU");
3323 if compile_prog
"" "$pthread_lib" ; then
3324 pthread_setname_np
=yes
3327 ##########################################
3329 if test "$rbd" != "no" ; then
3332 #include <rbd/librbd.h>
3335 rados_create(&cluster, NULL);
3339 rbd_libs
="-lrbd -lrados"
3340 if compile_prog
"" "$rbd_libs" ; then
3343 if test "$rbd" = "yes" ; then
3344 feature_not_found
"rados block device" "Install librbd/ceph devel"
3350 ##########################################
3352 min_libssh2_version
=1.2.8
3353 if test "$libssh2" != "no" ; then
3354 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3355 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3356 libssh2_libs
=$
($pkg_config libssh2
--libs)
3359 if test "$libssh2" = "yes" ; then
3360 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3366 ##########################################
3367 # libssh2_sftp_fsync probe
3369 if test "$libssh2" = "yes"; then
3372 #include <libssh2.h>
3373 #include <libssh2_sftp.h>
3375 LIBSSH2_SESSION *session;
3377 LIBSSH2_SFTP_HANDLE *sftp_handle;
3378 session = libssh2_session_init ();
3379 sftp = libssh2_sftp_init (session);
3380 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3381 libssh2_sftp_fsync (sftp_handle);
3385 # libssh2_cflags/libssh2_libs defined in previous test.
3386 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3387 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3391 ##########################################
3394 if test "$linux_aio" != "no" ; then
3397 #include <sys/eventfd.h>
3399 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3401 if compile_prog
"" "-laio" ; then
3404 if test "$linux_aio" = "yes" ; then
3405 feature_not_found
"linux AIO" "Install libaio devel"
3411 ##########################################
3412 # TPM passthrough is only on x86 Linux
3414 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3415 tpm_passthrough
=$tpm
3420 ##########################################
3423 if test "$attr" != "no" ; then
3426 #include <sys/types.h>
3427 #ifdef CONFIG_LIBATTR
3428 #include <attr/xattr.h>
3430 #include <sys/xattr.h>
3432 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3434 if compile_prog
"" "" ; then
3436 # Older distros have <attr/xattr.h>, and need -lattr:
3437 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3442 if test "$attr" = "yes" ; then
3443 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3449 ##########################################
3452 #include <sys/types.h>
3453 #include <sys/uio.h>
3455 int main(void) { return sizeof(struct iovec); }
3458 if compile_prog
"" "" ; then
3462 ##########################################
3465 #include <sys/types.h>
3466 #include <sys/uio.h>
3468 int main(void) { return preadv(0, 0, 0, 0); }
3471 if compile_prog
"" "" ; then
3475 ##########################################
3477 # fdt support is mandatory for at least some target architectures,
3478 # so insist on it if we're building those system emulators.
3480 for target
in $target_list; do
3482 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu
)
3488 if test "$fdt_required" = "yes"; then
3489 if test "$fdt" = "no"; then
3490 error_exit
"fdt disabled but some requested targets require it." \
3491 "You can turn off fdt only if you also disable all the system emulation" \
3492 "targets which need it (by specifying a cut down --target-list)."
3497 if test "$fdt" != "no" ; then
3499 # explicitly check for libfdt_env.h as it is missing in some stable installs
3500 # and test for required functions to make sure we are on a version >= 1.4.2
3503 #include <libfdt_env.h>
3504 int main(void) { fdt_first_subnode(0, 0); return 0; }
3506 if compile_prog
"" "$fdt_libs" ; then
3507 # system DTC is good - use it
3509 elif test -d ${source_path}/dtc
/libfdt
; then
3510 # have submodule DTC - use it
3514 if [ "$pwd_is_source_path" != "y" ] ; then
3515 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3516 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3518 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3519 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3520 elif test "$fdt" = "yes" ; then
3521 # have neither and want - prompt for system/submodule install
3522 error_exit
"DTC (libfdt) version >= 1.4.2 not present. Your options:" \
3523 " (1) Preferred: Install the DTC (libfdt) devel package" \
3524 " (2) Fetch the DTC submodule, using:" \
3525 " git submodule update --init dtc"
3527 # don't have and don't want
3533 libs_softmmu
="$libs_softmmu $fdt_libs"
3535 ##########################################
3536 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3538 if test "$opengl" != "no" ; then
3539 opengl_pkgs
="epoxy libdrm gbm"
3540 if $pkg_config $opengl_pkgs x11
; then
3541 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3542 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3544 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3547 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3549 if test "$opengl" = "yes" ; then
3550 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3558 if test "$opengl" = "yes"; then
3560 #include <epoxy/egl.h>
3561 #ifndef EGL_MESA_image_dma_buf_export
3562 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3564 int main(void) { return 0; }
3566 if compile_prog
"" "" ; then
3572 ##########################################
3574 if test "$glusterfs" != "no" ; then
3575 if $pkg_config --atleast-version=3 glusterfs-api
; then
3577 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3578 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3579 if $pkg_config --atleast-version=4 glusterfs-api
; then
3580 glusterfs_xlator_opt
="yes"
3582 if $pkg_config --atleast-version=5 glusterfs-api
; then
3583 glusterfs_discard
="yes"
3585 if $pkg_config --atleast-version=6 glusterfs-api
; then
3586 glusterfs_fallocate
="yes"
3587 glusterfs_zerofill
="yes"
3590 if test "$glusterfs" = "yes" ; then
3591 feature_not_found
"GlusterFS backend support" \
3592 "Install glusterfs-api devel >= 3"
3598 # Check for inotify functions when we are building linux-user
3599 # emulator. This is done because older glibc versions don't
3600 # have syscall stubs for these implemented. In that case we
3601 # don't provide them even if kernel supports them.
3605 #include <sys/inotify.h>
3610 /* try to start inotify */
3611 return inotify_init();
3614 if compile_prog
"" "" ; then
3620 #include <sys/inotify.h>
3625 /* try to start inotify */
3626 return inotify_init1(0);
3629 if compile_prog
"" "" ; then
3633 # check if pipe2 is there
3642 return pipe2(pipefd, O_CLOEXEC);
3645 if compile_prog
"" "" ; then
3649 # check if accept4 is there
3652 #include <sys/socket.h>
3657 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3661 if compile_prog
"" "" ; then
3665 # check if tee/splice is there. vmsplice was added same time.
3675 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3676 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3680 if compile_prog
"" "" ; then
3684 ##########################################
3687 if test "$numa" != "no" ; then
3690 int main(void) { return numa_available(); }
3693 if compile_prog
"" "-lnuma" ; then
3695 libs_softmmu
="-lnuma $libs_softmmu"
3697 if test "$numa" = "yes" ; then
3698 feature_not_found
"numa" "install numactl devel"
3704 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3705 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3709 ##########################################
3712 if test "$tcmalloc" = "yes" ; then
3715 int main(void) { malloc(1); return 0; }
3718 if compile_prog
"" "-ltcmalloc" ; then
3719 LIBS
="-ltcmalloc $LIBS"
3721 feature_not_found
"tcmalloc" "install gperftools devel"
3725 ##########################################
3728 if test "$jemalloc" = "yes" ; then
3731 int main(void) { malloc(1); return 0; }
3734 if compile_prog
"" "-ljemalloc" ; then
3735 LIBS
="-ljemalloc $LIBS"
3737 feature_not_found
"jemalloc" "install jemalloc devel"
3741 ##########################################
3746 #include <sys/syscall.h>
3748 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3751 if compile_prog
"" "" ; then
3755 # check if eventfd is supported
3758 #include <sys/eventfd.h>
3762 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3765 if compile_prog
"" "" ; then
3769 # check if memfd is supported
3772 #include <sys/memfd.h>
3776 return memfd_create("foo", MFD_ALLOW_SEALING);
3779 if compile_prog
"" "" ; then
3785 # check for fallocate
3792 fallocate(0, 0, 0, 0);
3796 if compile_prog
"" "" ; then
3800 # check for fallocate hole punching
3801 fallocate_punch_hole
=no
3804 #include <linux/falloc.h>
3808 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3812 if compile_prog
"" "" ; then
3813 fallocate_punch_hole
=yes
3816 # check that fallocate supports range zeroing inside the file
3817 fallocate_zero_range
=no
3820 #include <linux/falloc.h>
3824 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3828 if compile_prog
"" "" ; then
3829 fallocate_zero_range
=yes
3832 # check for posix_fallocate
3839 posix_fallocate(0, 0, 0);
3843 if compile_prog
"" "" ; then
3847 # check for sync_file_range
3854 sync_file_range(0, 0, 0, 0);
3858 if compile_prog
"" "" ; then
3862 # check for linux/fiemap.h and FS_IOC_FIEMAP
3865 #include <sys/ioctl.h>
3866 #include <linux/fs.h>
3867 #include <linux/fiemap.h>
3871 ioctl(0, FS_IOC_FIEMAP, 0);
3875 if compile_prog
"" "" ; then
3890 if compile_prog
"" "" ; then
3894 # check for ppoll support
3901 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3902 ppoll(&pfd, 1, 0, 0);
3906 if compile_prog
"" "" ; then
3910 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3911 prctl_pr_set_timerslack
=no
3913 #include <sys/prctl.h>
3917 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3921 if compile_prog
"" "" ; then
3922 prctl_pr_set_timerslack
=yes
3925 # check for epoll support
3928 #include <sys/epoll.h>
3936 if compile_prog
"" "" ; then
3940 # epoll_create1 is a later addition
3941 # so we must check separately for its presence
3944 #include <sys/epoll.h>
3948 /* Note that we use epoll_create1 as a value, not as
3949 * a function being called. This is necessary so that on
3950 * old SPARC glibc versions where the function was present in
3951 * the library but not declared in the header file we will
3952 * fail the configure check. (Otherwise we will get a compiler
3953 * warning but not an error, and will proceed to fail the
3954 * qemu compile where we compile with -Werror.)
3956 return (int)(uintptr_t)&epoll_create1;
3959 if compile_prog
"" "" ; then
3963 # check for sendfile support
3966 #include <sys/sendfile.h>
3970 return sendfile(0, 0, 0, 0);
3973 if compile_prog
"" "" ; then
3977 # check for timerfd support (glibc 2.8 and newer)
3980 #include <sys/timerfd.h>
3984 return(timerfd_create(CLOCK_REALTIME, 0));
3987 if compile_prog
"" "" ; then
3991 # check for setns and unshare support
4004 if compile_prog
"" "" ; then
4008 # clock_adjtime probe
4015 return clock_adjtime(0, 0);
4019 if compile_prog
"" "" ; then
4034 if compile_prog
"" "" ; then
4038 # Check if tools are available to build documentation.
4039 if test "$docs" != "no" ; then
4040 if has makeinfo
&& has pod2man
; then
4043 if test "$docs" = "yes" ; then
4044 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4050 # Search for bswap_32 function
4053 #include <byteswap.h>
4054 int main(void) { return bswap_32(0); }
4056 if compile_prog
"" "" ; then
4060 # Search for bswap32 function
4063 #include <sys/endian.h>
4064 #include <sys/types.h>
4065 #include <machine/bswap.h>
4066 int main(void) { return bswap32(0); }
4068 if compile_prog
"" "" ; then
4072 ##########################################
4073 # Do we have libiscsi >= 1.9.0
4074 if test "$libiscsi" != "no" ; then
4075 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4077 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4078 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4080 if test "$libiscsi" = "yes" ; then
4081 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4087 ##########################################
4091 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4093 if compile_prog
"" "" ; then
4095 elif compile_prog
"" "-lm" ; then
4097 libs_qga
="-lm $libs_qga"
4099 error_exit
"libm check failed"
4102 ##########################################
4104 # uClibc provides 2 versions of clock_gettime(), one with realtime
4105 # support and one without. This means that the clock_gettime() don't
4106 # need -lrt. We still need it for timer_create() so we check for this
4107 # function in addition.
4112 timer_create(CLOCK_REALTIME, NULL, NULL);
4113 return clock_gettime(CLOCK_REALTIME, NULL);
4117 if compile_prog
"" "" ; then
4119 # we need pthread for static linking. use previous pthread test result
4120 elif compile_prog
"" "$pthread_lib -lrt" ; then
4122 libs_qga
="$libs_qga -lrt"
4125 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4126 "$aix" != "yes" -a "$haiku" != "yes" ; then
4127 libs_softmmu
="-lutil $libs_softmmu"
4130 ##########################################
4132 if test "$spice" != "no" ; then
4135 int main(void) { spice_server_new(); return 0; }
4137 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4138 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4139 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4140 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4141 compile_prog
"$spice_cflags" "$spice_libs" ; then
4143 libs_softmmu
="$libs_softmmu $spice_libs"
4144 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4145 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4146 spice_server_version
=$
($pkg_config --modversion spice-server
)
4148 if test "$spice" = "yes" ; then
4149 feature_not_found
"spice" \
4150 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4156 # check for smartcard support
4158 if test "$smartcard" != "no"; then
4159 if $pkg_config libcacard
; then
4160 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4161 libcacard_libs
=$
($pkg_config --libs libcacard
)
4162 QEMU_CFLAGS
="$QEMU_CFLAGS $libcacard_cflags"
4163 libs_softmmu
="$libs_softmmu $libcacard_libs"
4166 if test "$smartcard" = "yes"; then
4167 feature_not_found
"smartcard" "Install libcacard devel"
4174 if test "$libusb" != "no" ; then
4175 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4177 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4178 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4179 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
4180 libs_softmmu
="$libs_softmmu $libusb_libs"
4182 if test "$libusb" = "yes"; then
4183 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4189 # check for usbredirparser for usb network redirection support
4190 if test "$usb_redir" != "no" ; then
4191 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4193 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4194 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4195 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
4196 libs_softmmu
="$libs_softmmu $usb_redir_libs"
4198 if test "$usb_redir" = "yes"; then
4199 feature_not_found
"usb-redir" "Install usbredir devel"
4205 ##########################################
4206 # check if we have VSS SDK headers for win
4208 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4209 case "$vss_win32_sdk" in
4210 "") vss_win32_include
="-isystem $source_path" ;;
4211 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4212 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4213 vss_win32_include
="-isystem $source_path/.sdk/vss"
4214 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4216 *) vss_win32_include
="-isystem $vss_win32_sdk"
4219 #define __MIDL_user_allocate_free_DEFINED__
4220 #include <inc/win2003/vss.h>
4221 int main(void) { return VSS_CTX_BACKUP; }
4223 if compile_prog
"$vss_win32_include" "" ; then
4224 guest_agent_with_vss
="yes"
4225 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4226 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4227 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4229 if test "$vss_win32_sdk" != "" ; then
4230 echo "ERROR: Please download and install Microsoft VSS SDK:"
4231 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4232 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4233 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4234 echo "ERROR: The headers are extracted in the directory \`inc'."
4235 feature_not_found
"VSS support"
4237 guest_agent_with_vss
="no"
4241 ##########################################
4242 # lookup Windows platform SDK (if not specified)
4243 # The SDK is needed only to build .tlb (type library) file of guest agent
4244 # VSS provider from the source. It is usually unnecessary because the
4245 # pre-compiled .tlb file is included.
4247 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4248 if test -z "$win_sdk"; then
4249 programfiles
="$PROGRAMFILES"
4250 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4251 if test -n "$programfiles"; then
4252 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4254 feature_not_found
"Windows SDK"
4256 elif test "$win_sdk" = "no"; then
4261 ##########################################
4262 # check if mingw environment provides a recent ntddscsi.h
4263 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4265 #include <windows.h>
4266 #include <ntddscsi.h>
4268 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4269 #error Missing required ioctl definitions
4271 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4275 if compile_prog
"" "" ; then
4276 guest_agent_ntddscsi
=yes
4277 libs_qga
="-lsetupapi $libs_qga"
4281 ##########################################
4282 # virgl renderer probe
4284 if test "$virglrenderer" != "no" ; then
4286 #include <virglrenderer.h>
4287 int main(void) { virgl_renderer_poll(); return 0; }
4289 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4290 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4291 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4292 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4295 if test "$virglrenderer" = "yes" ; then
4296 feature_not_found
"virglrenderer"
4302 ##########################################
4303 # check if we have fdatasync
4309 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4310 return fdatasync(0);
4312 #error Not supported
4316 if compile_prog
"" "" ; then
4320 ##########################################
4321 # check if we have madvise
4325 #include <sys/types.h>
4326 #include <sys/mman.h>
4328 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4330 if compile_prog
"" "" ; then
4334 ##########################################
4335 # check if we have posix_madvise
4339 #include <sys/mman.h>
4341 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4343 if compile_prog
"" "" ; then
4347 ##########################################
4348 # check if we have posix_syslog
4353 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4355 if compile_prog
"" "" ; then
4359 ##########################################
4360 # check if trace backend exists
4362 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4363 if test "$?" -ne 0 ; then
4364 error_exit
"invalid trace backends" \
4365 "Please choose supported trace backends."
4368 ##########################################
4369 # For 'ust' backend, test if ust headers are present
4370 if have_backend
"ust"; then
4372 #include <lttng/tracepoint.h>
4373 int main(void) { return 0; }
4375 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4376 if $pkg_config lttng-ust
--exists; then
4377 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4379 lttng_ust_libs
="-llttng-ust -ldl"
4381 if $pkg_config liburcu-bp
--exists; then
4382 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4384 urcu_bp_libs
="-lurcu-bp"
4387 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4388 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4390 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4394 ##########################################
4395 # For 'dtrace' backend, test if 'dtrace' command is present
4396 if have_backend
"dtrace"; then
4397 if ! has
'dtrace' ; then
4398 error_exit
"dtrace command is not found in PATH $PATH"
4400 trace_backend_stap
="no"
4401 if has
'stap' ; then
4402 trace_backend_stap
="yes"
4406 ##########################################
4407 # check and set a backend for coroutine
4409 # We prefer ucontext, but it's not always possible. The fallback
4410 # is sigcontext. On Windows the only valid backend is the Windows
4414 if test "$darwin" != "yes"; then
4416 #include <ucontext.h>
4417 #ifdef __stub_makecontext
4418 #error Ignoring glibc stub makecontext which will always fail
4420 int main(void) { makecontext(0, 0, 0); return 0; }
4422 if compile_prog
"" "" ; then
4427 if test "$coroutine" = ""; then
4428 if test "$mingw32" = "yes"; then
4430 elif test "$ucontext_works" = "yes"; then
4433 coroutine
=sigaltstack
4438 if test "$mingw32" != "yes"; then
4439 error_exit
"'windows' coroutine backend only valid for Windows"
4441 # Unfortunately the user visible backend name doesn't match the
4442 # coroutine-*.c filename for this case, so we have to adjust it here.
4446 if test "$ucontext_works" != "yes"; then
4447 feature_not_found
"ucontext"
4451 if test "$mingw32" = "yes"; then
4452 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4456 error_exit
"unknown coroutine backend $coroutine"
4461 if test "$coroutine_pool" = ""; then
4465 if test "$debug_stack_usage" = "yes"; then
4466 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4467 error_exit
"stack usage debugging is not supported for $cpu"
4469 if test "$coroutine_pool" = "yes"; then
4470 echo "WARN: disabling coroutine pool for stack usage debugging"
4476 ##########################################
4477 # check if we have open_by_handle_at
4479 open_by_handle_at
=no
4482 #if !defined(AT_EMPTY_PATH)
4483 # error missing definition
4485 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4488 if compile_prog
"" "" ; then
4489 open_by_handle_at
=yes
4492 ########################################
4493 # check if we have linux/magic.h
4497 #include <linux/magic.h>
4502 if compile_prog
"" "" ; then
4506 ########################################
4507 # check whether we can disable warning option with a pragma (this is needed
4508 # to silence warnings in the headers of some versions of external libraries).
4509 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4512 # If we can't selectively disable warning in the code, disable -Werror so that
4513 # the build doesn't fail anyway.
4515 pragma_disable_unused_but_set
=no
4517 #pragma GCC diagnostic push
4518 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4519 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4520 #pragma GCC diagnostic pop
4526 if compile_prog
"-Werror" "" ; then
4527 pragma_diagnostic_available
=yes
4532 ########################################
4533 # check if we have valgrind/valgrind.h
4537 #include <valgrind/valgrind.h>
4542 if compile_prog
"" "" ; then
4546 ########################################
4547 # check if environ is declared
4557 if compile_prog
"" "" ; then
4561 ########################################
4562 # check if cpuid.h is usable.
4568 unsigned a, b, c, d;
4569 int max = __get_cpuid_max(0, 0);
4572 __cpuid(1, a, b, c, d);
4576 __cpuid_count(7, 0, a, b, c, d);
4582 if compile_prog
"" "" ; then
4586 ########################################
4587 # check if __[u]int128_t is usable.
4591 #if defined(__clang_major__) && defined(__clang_minor__)
4592 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4593 # error __int128_t does not work in CLANG before 3.2
4605 if compile_prog
"" "" ; then
4609 #########################################
4610 # See if 128-bit atomic operations are supported.
4613 if test "$int128" = "yes"; then
4617 unsigned __int128 x = 0, y = 0;
4618 y = __atomic_load_16(&x, 0);
4619 __atomic_store_16(&x, y, 0);
4620 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4624 if compile_prog
"" "" ; then
4629 #########################################
4630 # See if 64-bit atomic operations are supported.
4631 # Note that without __atomic builtins, we can only
4632 # assume atomic loads/stores max at pointer size.
4638 uint64_t x = 0, y = 0;
4639 #ifdef __ATOMIC_RELAXED
4640 y = __atomic_load_8(&x, 0);
4641 __atomic_store_8(&x, y, 0);
4642 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4643 __atomic_exchange_8(&x, y, 0);
4644 __atomic_fetch_add_8(&x, y, 0);
4646 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4647 __sync_lock_test_and_set(&x, y);
4648 __sync_val_compare_and_swap(&x, y, 0);
4649 __sync_fetch_and_add(&x, y);
4654 if compile_prog
"" "" ; then
4658 ########################################
4659 # check if getauxval is available.
4663 #include <sys/auxv.h>
4665 return getauxval(AT_HWCAP) == 0;
4668 if compile_prog
"" "" ; then
4672 ########################################
4673 # check if ccache is interfering with
4674 # semantic analysis of macros
4679 static const int Z = 1;
4680 #define fn() ({ Z; })
4681 #define TAUT(X) ((X) == Z)
4682 #define PAREN(X, Y) (X == Y)
4684 int main(int argc, char *argv[])
4690 if (PAREN(x, y)) return 0;
4691 if (TAUT(Z)) return 0;
4696 if ! compile_object
"-Werror"; then
4700 #################################################
4701 # clang does not support glibc + FORTIFY_SOURCE.
4703 if test "$fortify_source" != "no"; then
4704 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4705 fortify_source
="no";
4706 elif test -n "$cxx" &&
4707 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4708 fortify_source
="no";
4710 fortify_source
="yes"
4714 ##########################################
4715 # check if struct fsxattr is available via linux/fs.h
4719 #include <linux/fs.h>
4725 if compile_prog
"" "" ; then
4729 ##########################################
4730 # check if rtnetlink.h exists and is useful
4733 #include <linux/rtnetlink.h>
4735 return IFLA_PROTO_DOWN;
4738 if compile_prog
"" "" ; then
4742 ##########################################
4743 # check for usable AF_VSOCK environment
4747 #include <sys/types.h>
4748 #include <sys/socket.h>
4749 #if !defined(AF_VSOCK)
4750 # error missing AF_VSOCK flag
4752 #include <linux/vm_sockets.h>
4755 struct sockaddr_vm svm;
4756 socklen_t len = sizeof(svm);
4757 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4758 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4759 if ((ret == -1) && (errno == ENOTCONN)) {
4765 if compile_prog
"" "" ; then
4769 #################################################
4770 # Sparc implicitly links with --relax, which is
4771 # incompatible with -r, so --no-relax should be
4772 # given. It does no harm to give it on other
4775 # Note: the prototype is needed since QEMU_CFLAGS
4776 # contains -Wmissing-prototypes
4778 extern int foo(void);
4779 int foo(void) { return 0; }
4781 if ! compile_object
""; then
4782 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
4784 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
4785 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
4790 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
4791 feature_not_found
"modules" "Cannot find how to build relocatable objects"
4794 ##########################################
4795 # check for sysmacros.h
4799 #include <sys/sysmacros.h>
4801 return makedev(0, 0);
4804 if compile_prog
"" "" ; then
4808 ##########################################
4809 # Veritas HyperScale block driver VxHS
4810 # Check if libvxhs is installed
4812 if test "$vxhs" != "no" ; then
4815 #include <qnio/qnio_api.h>
4817 void *vxhs_callback;
4820 iio_init(QNIO_VERSION, vxhs_callback);
4824 vxhs_libs
="-lvxhs -lssl"
4825 if compile_prog
"" "$vxhs_libs" ; then
4828 if test "$vxhs" = "yes" ; then
4829 feature_not_found
"vxhs block device" "Install libvxhs See github"
4835 ##########################################
4836 # check for _Static_assert()
4838 have_static_assert
=no
4840 _Static_assert(1, "success");
4845 if compile_prog
"" "" ; then
4846 have_static_assert
=yes
4849 ##########################################
4851 # After here, no more $cc or $ld runs
4853 if test "$gcov" = "yes" ; then
4854 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4855 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4856 elif test "$fortify_source" = "yes" ; then
4857 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4858 elif test "$debug" = "no"; then
4859 CFLAGS
="-O2 $CFLAGS"
4862 ##########################################
4864 if test "$libnfs" != "no" ; then
4865 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4867 libnfs_libs
=$
($pkg_config --libs libnfs
)
4869 if test "$libnfs" = "yes" ; then
4870 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4876 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4877 if test "$werror" = "yes"; then
4878 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4881 if test "$solaris" = "no" ; then
4882 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4883 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4887 # test if pod2man has --utf8 option
4888 if pod2man
--help |
grep -q utf8
; then
4889 POD2MAN
="pod2man --utf8"
4894 # Use ASLR, no-SEH and DEP if available
4895 if test "$mingw32" = "yes" ; then
4896 for flag
in --dynamicbase --no-seh --nxcompat; do
4897 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4898 LDFLAGS
="-Wl,$flag $LDFLAGS"
4903 qemu_confdir
=$sysconfdir$confsuffix
4904 qemu_moddir
=$libdir$confsuffix
4905 qemu_datadir
=$datadir$confsuffix
4906 qemu_localedir
="$datadir/locale"
4909 if test "$want_tools" = "yes" ; then
4910 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4911 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4912 tools
="qemu-nbd\$(EXESUF) $tools"
4913 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4916 if test "$softmmu" = yes ; then
4917 if test "$virtfs" != no
; then
4918 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4920 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4922 if test "$virtfs" = yes; then
4923 error_exit
"VirtFS is supported only on Linux and requires libcap devel and libattr devel"
4930 # Probe for guest agent support/options
4932 if [ "$guest_agent" != "no" ]; then
4933 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4934 tools
="qemu-ga $tools"
4936 elif [ "$guest_agent" != yes ]; then
4939 error_exit
"Guest agent is not supported on this platform"
4943 # Guest agent Window MSI package
4945 if test "$guest_agent" != yes; then
4946 if test "$guest_agent_msi" = yes; then
4947 error_exit
"MSI guest agent package requires guest agent enabled"
4950 elif test "$mingw32" != "yes"; then
4951 if test "$guest_agent_msi" = "yes"; then
4952 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
4955 elif ! has wixl
; then
4956 if test "$guest_agent_msi" = "yes"; then
4957 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4961 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4962 # disabled explicitly
4963 if test "$guest_agent_msi" != "no"; then
4968 if test "$guest_agent_msi" = "yes"; then
4969 if test "$guest_agent_with_vss" = "yes"; then
4970 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
4973 if test "$QEMU_GA_MANUFACTURER" = ""; then
4974 QEMU_GA_MANUFACTURER
=QEMU
4977 if test "$QEMU_GA_DISTRO" = ""; then
4978 QEMU_GA_DISTRO
=Linux
4981 if test "$QEMU_GA_VERSION" = ""; then
4982 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
4985 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
4989 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
4992 QEMU_GA_MSI_ARCH
="-D Arch=32"
4995 error_exit
"CPU $cpu not supported for building installation package"
5000 # Mac OS X ships with a broken assembler
5002 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5003 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5004 "$softmmu" = yes ; then
5005 # Different host OS linkers have different ideas about the name of the ELF
5006 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
5007 # variant; and Windows uses i386pe.
5008 for emu
in elf_i386 elf_i386_fbsd i386pe
; do
5009 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5010 ld_i386_emulation
="$emu"
5016 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5017 roms
="$roms spapr-rtas"
5020 if test "$cpu" = "s390x" ; then
5021 roms
="$roms s390-ccw"
5024 # Probe for the need for relocating the user-only binary.
5025 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5028 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5029 # ??? Rationale for choosing this address
5030 textseg_addr
=0x60000000
5033 # A 256M aligned address, high in the address space, with enough
5034 # room for the code_gen_buffer above it before the stack.
5035 textseg_addr
=0x60000000
5038 if [ -n "$textseg_addr" ]; then
5040 int main(void) { return 0; }
5042 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5043 if ! compile_prog
"" "$textseg_ldflags"; then
5044 # In case ld does not support -Ttext-segment, edit the default linker
5045 # script via sed to set the .text start addr. This is needed on FreeBSD
5047 if ! $ld --verbose >/dev
/null
2>&1; then
5049 "We need to link the QEMU user mode binaries at a" \
5050 "specific text address. Unfortunately your linker" \
5051 "doesn't support either the -Ttext-segment option or" \
5052 "printing the default linker script with --verbose." \
5053 "If you don't want the user mode binaries, pass the" \
5054 "--disable-user option to configure."
5057 $ld --verbose |
sed \
5058 -e '1,/==================================================/d' \
5059 -e '/==================================================/,$d' \
5060 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5061 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5062 textseg_ldflags
="-Wl,-T../config-host.ld"
5068 if test "$1" = "yes" ; then
5073 # prepend pixman and ftd flags after all config tests are done
5074 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5075 libs_softmmu
="$pixman_libs $libs_softmmu"
5077 echo "Install prefix $prefix"
5078 echo "BIOS directory $(eval echo $qemu_datadir)"
5079 echo "binary directory $(eval echo $bindir)"
5080 echo "library directory $(eval echo $libdir)"
5081 echo "module directory $(eval echo $qemu_moddir)"
5082 echo "libexec directory $(eval echo $libexecdir)"
5083 echo "include directory $(eval echo $includedir)"
5084 echo "config directory $(eval echo $sysconfdir)"
5085 if test "$mingw32" = "no" ; then
5086 echo "local state directory $(eval echo $local_statedir)"
5087 echo "Manual directory $(eval echo $mandir)"
5088 echo "ELF interp prefix $interp_prefix"
5090 echo "local state directory queried at runtime"
5091 echo "Windows SDK $win_sdk"
5093 echo "Source path $source_path"
5094 echo "C compiler $cc"
5095 echo "Host C compiler $host_cc"
5096 echo "C++ compiler $cxx"
5097 echo "Objective-C compiler $objcc"
5098 echo "ARFLAGS $ARFLAGS"
5099 echo "CFLAGS $CFLAGS"
5100 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5101 echo "LDFLAGS $LDFLAGS"
5103 echo "install $install"
5104 echo "python $python"
5105 if test "$slirp" = "yes" ; then
5108 echo "module support $modules"
5109 echo "host CPU $cpu"
5110 echo "host big endian $bigendian"
5111 echo "target list $target_list"
5112 echo "tcg debug enabled $debug_tcg"
5113 echo "gprof enabled $gprof"
5114 echo "sparse enabled $sparse"
5115 echo "strip binaries $strip_opt"
5116 echo "profiler $profiler"
5117 echo "static build $static"
5118 if test "$darwin" = "yes" ; then
5119 echo "Cocoa support $cocoa"
5121 echo "pixman $pixman"
5122 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5123 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5124 echo "GTK GL support $gtk_gl"
5125 echo "VTE support $vte $(echo_version $vte $vteversion)"
5126 echo "TLS priority $tls_priority"
5127 echo "GNUTLS support $gnutls"
5128 echo "GNUTLS rnd $gnutls_rnd"
5129 echo "libgcrypt $gcrypt"
5130 echo "libgcrypt kdf $gcrypt_kdf"
5131 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5132 echo "nettle kdf $nettle_kdf"
5133 echo "libtasn1 $tasn1"
5134 echo "curses support $curses"
5135 echo "virgl support $virglrenderer"
5136 echo "curl support $curl"
5137 echo "mingw32 support $mingw32"
5138 echo "Audio drivers $audio_drv_list"
5139 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5140 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5141 echo "VirtFS support $virtfs"
5142 echo "VNC support $vnc"
5143 if test "$vnc" = "yes" ; then
5144 echo "VNC SASL support $vnc_sasl"
5145 echo "VNC JPEG support $vnc_jpeg"
5146 echo "VNC PNG support $vnc_png"
5148 if test -n "$sparc_cpu"; then
5149 echo "Target Sparc Arch $sparc_cpu"
5151 echo "xen support $xen"
5152 if test "$xen" = "yes" ; then
5153 echo "xen ctrl version $xen_ctrl_version"
5154 echo "pv dom build $xen_pv_domain_build"
5156 echo "brlapi support $brlapi"
5157 echo "bluez support $bluez"
5158 echo "Documentation $docs"
5160 echo "vde support $vde"
5161 echo "netmap support $netmap"
5162 echo "Linux AIO support $linux_aio"
5163 echo "ATTR/XATTR support $attr"
5164 echo "Install blobs $blobs"
5165 echo "KVM support $kvm"
5166 echo "HAX support $hax"
5167 echo "RDMA support $rdma"
5168 echo "TCG interpreter $tcg_interpreter"
5169 echo "fdt support $fdt"
5170 echo "preadv support $preadv"
5171 echo "fdatasync $fdatasync"
5172 echo "madvise $madvise"
5173 echo "posix_madvise $posix_madvise"
5174 echo "libcap-ng support $cap_ng"
5175 echo "vhost-net support $vhost_net"
5176 echo "vhost-scsi support $vhost_scsi"
5177 echo "vhost-vsock support $vhost_vsock"
5178 echo "Trace backends $trace_backends"
5179 if have_backend
"simple"; then
5180 echo "Trace output file $trace_file-<pid>"
5182 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5183 echo "rbd support $rbd"
5184 echo "xfsctl support $xfs"
5185 echo "smartcard support $smartcard"
5186 echo "libusb $libusb"
5187 echo "usb net redir $usb_redir"
5188 echo "OpenGL support $opengl"
5189 echo "OpenGL dmabufs $opengl_dmabuf"
5190 echo "libiscsi support $libiscsi"
5191 echo "libnfs support $libnfs"
5192 echo "build guest agent $guest_agent"
5193 echo "QGA VSS support $guest_agent_with_vss"
5194 echo "QGA w32 disk info $guest_agent_ntddscsi"
5195 echo "QGA MSI support $guest_agent_msi"
5196 echo "seccomp support $seccomp"
5197 echo "coroutine backend $coroutine"
5198 echo "coroutine pool $coroutine_pool"
5199 echo "debug stack usage $debug_stack_usage"
5200 echo "GlusterFS support $glusterfs"
5201 echo "gcov $gcov_tool"
5202 echo "gcov enabled $gcov"
5203 echo "TPM support $tpm"
5204 echo "libssh2 support $libssh2"
5205 echo "TPM passthrough $tpm_passthrough"
5206 echo "QOM debugging $qom_cast_debug"
5207 echo "Live block migration $live_block_migration"
5208 echo "lzo support $lzo"
5209 echo "snappy support $snappy"
5210 echo "bzip2 support $bzip2"
5211 echo "NUMA host support $numa"
5212 echo "tcmalloc support $tcmalloc"
5213 echo "jemalloc support $jemalloc"
5214 echo "avx2 optimization $avx2_opt"
5215 echo "replication support $replication"
5216 echo "VxHS block device $vxhs"
5218 if test "$sdl_too_old" = "yes"; then
5219 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5222 if test "$supported_cpu" = "no"; then
5224 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5226 echo "CPU host architecture $cpu support is not currently maintained."
5227 echo "The QEMU project intends to remove support for this host CPU in"
5228 echo "a future release if nobody volunteers to maintain it and to"
5229 echo "provide a build host for our continuous integration setup."
5230 echo "configure has succeeded and you can continue to build, but"
5231 echo "if you care about QEMU on this platform you should contact"
5232 echo "us upstream at qemu-devel@nongnu.org."
5235 if test "$supported_os" = "no"; then
5237 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5239 echo "Host OS $targetos support is not currently maintained."
5240 echo "The QEMU project intends to remove support for this host OS in"
5241 echo "a future release if nobody volunteers to maintain it and to"
5242 echo "provide a build host for our continuous integration setup."
5243 echo "configure has succeeded and you can continue to build, but"
5244 echo "if you care about QEMU on this platform you should contact"
5245 echo "us upstream at qemu-devel@nongnu.org."
5248 config_host_mak
="config-host.mak"
5250 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5252 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5253 echo >> $config_host_mak
5255 echo all
: >> $config_host_mak
5256 echo "prefix=$prefix" >> $config_host_mak
5257 echo "bindir=$bindir" >> $config_host_mak
5258 echo "libdir=$libdir" >> $config_host_mak
5259 echo "libexecdir=$libexecdir" >> $config_host_mak
5260 echo "includedir=$includedir" >> $config_host_mak
5261 echo "mandir=$mandir" >> $config_host_mak
5262 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5263 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5264 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5265 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5266 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5267 if test "$mingw32" = "no" ; then
5268 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5270 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5271 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5272 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5273 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5274 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5276 echo "ARCH=$ARCH" >> $config_host_mak
5278 if test "$debug_tcg" = "yes" ; then
5279 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5281 if test "$strip_opt" = "yes" ; then
5282 echo "STRIP=${strip}" >> $config_host_mak
5284 if test "$bigendian" = "yes" ; then
5285 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5287 if test "$mingw32" = "yes" ; then
5288 echo "CONFIG_WIN32=y" >> $config_host_mak
5289 rc_version
=$
(cat $source_path/VERSION
)
5290 version_major
=${rc_version%%.*}
5291 rc_version
=${rc_version#*.}
5292 version_minor
=${rc_version%%.*}
5293 rc_version
=${rc_version#*.}
5294 version_subminor
=${rc_version%%.*}
5296 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5297 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5298 if test "$guest_agent_with_vss" = "yes" ; then
5299 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5300 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5301 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5303 if test "$guest_agent_ntddscsi" = "yes" ; then
5304 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5306 if test "$guest_agent_msi" = "yes"; then
5307 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5308 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5309 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5310 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5311 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5312 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5313 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5316 echo "CONFIG_POSIX=y" >> $config_host_mak
5319 if test "$linux" = "yes" ; then
5320 echo "CONFIG_LINUX=y" >> $config_host_mak
5323 if test "$darwin" = "yes" ; then
5324 echo "CONFIG_DARWIN=y" >> $config_host_mak
5327 if test "$aix" = "yes" ; then
5328 echo "CONFIG_AIX=y" >> $config_host_mak
5331 if test "$solaris" = "yes" ; then
5332 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5333 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5334 if test "$needs_libsunmath" = "yes" ; then
5335 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5338 if test "$haiku" = "yes" ; then
5339 echo "CONFIG_HAIKU=y" >> $config_host_mak
5341 if test "$static" = "yes" ; then
5342 echo "CONFIG_STATIC=y" >> $config_host_mak
5344 if test "$profiler" = "yes" ; then
5345 echo "CONFIG_PROFILER=y" >> $config_host_mak
5347 if test "$slirp" = "yes" ; then
5348 echo "CONFIG_SLIRP=y" >> $config_host_mak
5349 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5351 if test "$vde" = "yes" ; then
5352 echo "CONFIG_VDE=y" >> $config_host_mak
5354 if test "$netmap" = "yes" ; then
5355 echo "CONFIG_NETMAP=y" >> $config_host_mak
5357 if test "$l2tpv3" = "yes" ; then
5358 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5360 if test "$cap_ng" = "yes" ; then
5361 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5363 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5364 for drv
in $audio_drv_list; do
5365 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5366 echo "$def=y" >> $config_host_mak
5368 if test "$audio_pt_int" = "yes" ; then
5369 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5371 if test "$audio_win_int" = "yes" ; then
5372 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5374 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5375 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5376 if test "$vnc" = "yes" ; then
5377 echo "CONFIG_VNC=y" >> $config_host_mak
5379 if test "$vnc_sasl" = "yes" ; then
5380 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5382 if test "$vnc_jpeg" = "yes" ; then
5383 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5385 if test "$vnc_png" = "yes" ; then
5386 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5388 if test "$fnmatch" = "yes" ; then
5389 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5391 if test "$xfs" = "yes" ; then
5392 echo "CONFIG_XFS=y" >> $config_host_mak
5394 qemu_version
=$
(head $source_path/VERSION
)
5395 echo "VERSION=$qemu_version" >>$config_host_mak
5396 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5397 echo "SRC_PATH=$source_path" >> $config_host_mak
5398 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5399 if [ "$docs" = "yes" ] ; then
5400 echo "BUILD_DOCS=yes" >> $config_host_mak
5402 if test "$modules" = "yes"; then
5403 # $shacmd can generate a hash started with digit, which the compiler doesn't
5404 # like as an symbol. So prefix it with an underscore
5405 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5406 echo "CONFIG_MODULES=y" >> $config_host_mak
5408 if test "$sdl" = "yes" ; then
5409 echo "CONFIG_SDL=y" >> $config_host_mak
5410 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5411 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5413 if test "$cocoa" = "yes" ; then
5414 echo "CONFIG_COCOA=y" >> $config_host_mak
5416 if test "$curses" = "yes" ; then
5417 echo "CONFIG_CURSES=y" >> $config_host_mak
5419 if test "$pipe2" = "yes" ; then
5420 echo "CONFIG_PIPE2=y" >> $config_host_mak
5422 if test "$accept4" = "yes" ; then
5423 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5425 if test "$splice" = "yes" ; then
5426 echo "CONFIG_SPLICE=y" >> $config_host_mak
5428 if test "$eventfd" = "yes" ; then
5429 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5431 if test "$memfd" = "yes" ; then
5432 echo "CONFIG_MEMFD=y" >> $config_host_mak
5434 if test "$fallocate" = "yes" ; then
5435 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5437 if test "$fallocate_punch_hole" = "yes" ; then
5438 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5440 if test "$fallocate_zero_range" = "yes" ; then
5441 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5443 if test "$posix_fallocate" = "yes" ; then
5444 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5446 if test "$sync_file_range" = "yes" ; then
5447 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5449 if test "$fiemap" = "yes" ; then
5450 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5452 if test "$dup3" = "yes" ; then
5453 echo "CONFIG_DUP3=y" >> $config_host_mak
5455 if test "$ppoll" = "yes" ; then
5456 echo "CONFIG_PPOLL=y" >> $config_host_mak
5458 if test "$prctl_pr_set_timerslack" = "yes" ; then
5459 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5461 if test "$epoll" = "yes" ; then
5462 echo "CONFIG_EPOLL=y" >> $config_host_mak
5464 if test "$epoll_create1" = "yes" ; then
5465 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5467 if test "$sendfile" = "yes" ; then
5468 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5470 if test "$timerfd" = "yes" ; then
5471 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5473 if test "$setns" = "yes" ; then
5474 echo "CONFIG_SETNS=y" >> $config_host_mak
5476 if test "$clock_adjtime" = "yes" ; then
5477 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5479 if test "$syncfs" = "yes" ; then
5480 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5482 if test "$inotify" = "yes" ; then
5483 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5485 if test "$inotify1" = "yes" ; then
5486 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5488 if test "$byteswap_h" = "yes" ; then
5489 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5491 if test "$bswap_h" = "yes" ; then
5492 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5494 if test "$curl" = "yes" ; then
5495 echo "CONFIG_CURL=m" >> $config_host_mak
5496 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5497 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5499 if test "$brlapi" = "yes" ; then
5500 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5502 if test "$bluez" = "yes" ; then
5503 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5504 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5506 if test "$glib_subprocess" = "yes" ; then
5507 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5509 if test "$gtk" = "yes" ; then
5510 echo "CONFIG_GTK=y" >> $config_host_mak
5511 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5512 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5513 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5514 if test "$gtk_gl" = "yes" ; then
5515 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5518 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5519 if test "$gnutls" = "yes" ; then
5520 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5522 if test "$gnutls_rnd" = "yes" ; then
5523 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5525 if test "$gcrypt" = "yes" ; then
5526 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5527 if test "$gcrypt_hmac" = "yes" ; then
5528 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5530 if test "$gcrypt_kdf" = "yes" ; then
5531 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5534 if test "$nettle" = "yes" ; then
5535 echo "CONFIG_NETTLE=y" >> $config_host_mak
5536 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5537 if test "$nettle_kdf" = "yes" ; then
5538 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5541 if test "$tasn1" = "yes" ; then
5542 echo "CONFIG_TASN1=y" >> $config_host_mak
5544 if test "$have_ifaddrs_h" = "yes" ; then
5545 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5547 if test "$have_broken_size_max" = "yes" ; then
5548 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5551 # Work around a system header bug with some kernel/XFS header
5552 # versions where they both try to define 'struct fsxattr':
5553 # xfs headers will not try to redefine structs from linux headers
5554 # if this macro is set.
5555 if test "$have_fsxattr" = "yes" ; then
5556 echo "HAVE_FSXATTR=y" >> $config_host_mak
5558 if test "$vte" = "yes" ; then
5559 echo "CONFIG_VTE=y" >> $config_host_mak
5560 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5562 if test "$virglrenderer" = "yes" ; then
5563 echo "CONFIG_VIRGL=y" >> $config_host_mak
5564 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5565 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5567 if test "$xen" = "yes" ; then
5568 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5569 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5570 if test "$xen_pv_domain_build" = "yes" ; then
5571 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5574 if test "$linux_aio" = "yes" ; then
5575 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5577 if test "$attr" = "yes" ; then
5578 echo "CONFIG_ATTR=y" >> $config_host_mak
5580 if test "$libattr" = "yes" ; then
5581 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5583 if test "$virtfs" = "yes" ; then
5584 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5586 if test "$vhost_scsi" = "yes" ; then
5587 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5589 if test "$vhost_net" = "yes" ; then
5590 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5592 if test "$vhost_vsock" = "yes" ; then
5593 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5595 if test "$blobs" = "yes" ; then
5596 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5598 if test "$iovec" = "yes" ; then
5599 echo "CONFIG_IOVEC=y" >> $config_host_mak
5601 if test "$preadv" = "yes" ; then
5602 echo "CONFIG_PREADV=y" >> $config_host_mak
5604 if test "$fdt" = "yes" ; then
5605 echo "CONFIG_FDT=y" >> $config_host_mak
5607 if test "$signalfd" = "yes" ; then
5608 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5610 if test "$tcg_interpreter" = "yes" ; then
5611 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5613 if test "$fdatasync" = "yes" ; then
5614 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5616 if test "$madvise" = "yes" ; then
5617 echo "CONFIG_MADVISE=y" >> $config_host_mak
5619 if test "$posix_madvise" = "yes" ; then
5620 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5623 if test "$spice" = "yes" ; then
5624 echo "CONFIG_SPICE=y" >> $config_host_mak
5627 if test "$smartcard" = "yes" ; then
5628 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5631 if test "$libusb" = "yes" ; then
5632 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5635 if test "$usb_redir" = "yes" ; then
5636 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5639 if test "$opengl" = "yes" ; then
5640 echo "CONFIG_OPENGL=y" >> $config_host_mak
5641 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5642 if test "$opengl_dmabuf" = "yes" ; then
5643 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5647 if test "$avx2_opt" = "yes" ; then
5648 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5651 if test "$lzo" = "yes" ; then
5652 echo "CONFIG_LZO=y" >> $config_host_mak
5655 if test "$snappy" = "yes" ; then
5656 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5659 if test "$bzip2" = "yes" ; then
5660 echo "CONFIG_BZIP2=y" >> $config_host_mak
5661 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5664 if test "$libiscsi" = "yes" ; then
5665 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5666 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5667 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5670 if test "$libnfs" = "yes" ; then
5671 echo "CONFIG_LIBNFS=m" >> $config_host_mak
5672 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
5675 if test "$seccomp" = "yes"; then
5676 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5679 # XXX: suppress that
5680 if [ "$bsd" = "yes" ] ; then
5681 echo "CONFIG_BSD=y" >> $config_host_mak
5684 if test "$localtime_r" = "yes" ; then
5685 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5687 if test "$qom_cast_debug" = "yes" ; then
5688 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5690 if test "$rbd" = "yes" ; then
5691 echo "CONFIG_RBD=m" >> $config_host_mak
5692 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5693 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5696 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5697 if test "$coroutine_pool" = "yes" ; then
5698 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5700 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5703 if test "$debug_stack_usage" = "yes" ; then
5704 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
5707 if test "$open_by_handle_at" = "yes" ; then
5708 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5711 if test "$linux_magic_h" = "yes" ; then
5712 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5715 if test "$pragma_diagnostic_available" = "yes" ; then
5716 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5719 if test "$valgrind_h" = "yes" ; then
5720 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5723 if test "$has_environ" = "yes" ; then
5724 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5727 if test "$cpuid_h" = "yes" ; then
5728 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5731 if test "$int128" = "yes" ; then
5732 echo "CONFIG_INT128=y" >> $config_host_mak
5735 if test "$atomic128" = "yes" ; then
5736 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
5739 if test "$atomic64" = "yes" ; then
5740 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
5743 if test "$getauxval" = "yes" ; then
5744 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5747 if test "$glusterfs" = "yes" ; then
5748 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5749 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5750 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5753 if test "$glusterfs_xlator_opt" = "yes" ; then
5754 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5757 if test "$glusterfs_discard" = "yes" ; then
5758 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5761 if test "$glusterfs_fallocate" = "yes" ; then
5762 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
5765 if test "$glusterfs_zerofill" = "yes" ; then
5766 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5769 if test "$libssh2" = "yes" ; then
5770 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5771 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5772 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5775 if test "$live_block_migration" = "yes" ; then
5776 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
5780 if test "$libusb" = "yes"; then
5781 echo "HOST_USB=libusb legacy" >> $config_host_mak
5783 echo "HOST_USB=stub" >> $config_host_mak
5786 # TPM passthrough support?
5787 if test "$tpm" = "yes"; then
5788 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5789 if test "$tpm_passthrough" = "yes"; then
5790 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5794 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5795 if have_backend
"nop"; then
5796 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5798 if have_backend
"simple"; then
5799 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5800 # Set the appropriate trace file.
5801 trace_file
="\"$trace_file-\" FMT_pid"
5803 if have_backend
"log"; then
5804 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
5806 if have_backend
"ust"; then
5807 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5809 if have_backend
"dtrace"; then
5810 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5811 if test "$trace_backend_stap" = "yes" ; then
5812 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5815 if have_backend
"ftrace"; then
5816 if test "$linux" = "yes" ; then
5817 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5819 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5822 if have_backend
"syslog"; then
5823 if test "$posix_syslog" = "yes" ; then
5824 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
5826 feature_not_found
"syslog(trace backend)" "syslog not available"
5829 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5831 if test "$rdma" = "yes" ; then
5832 echo "CONFIG_RDMA=y" >> $config_host_mak
5835 if test "$have_rtnetlink" = "yes" ; then
5836 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5839 if test "$replication" = "yes" ; then
5840 echo "CONFIG_REPLICATION=y" >> $config_host_mak
5843 if test "$have_af_vsock" = "yes" ; then
5844 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
5847 if test "$have_sysmacros" = "yes" ; then
5848 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
5851 if test "$have_static_assert" = "yes" ; then
5852 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
5855 # Hold two types of flag:
5856 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5857 # a thread we have a handle to
5858 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5860 if test "$pthread_setname_np" = "yes" ; then
5861 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5862 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5865 if test "$vxhs" = "yes" ; then
5866 echo "CONFIG_VXHS=y" >> $config_host_mak
5867 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
5870 if test "$tcg_interpreter" = "yes"; then
5871 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5872 elif test "$ARCH" = "sparc64" ; then
5873 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5874 elif test "$ARCH" = "s390x" ; then
5875 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5876 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5877 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5878 elif test "$ARCH" = "ppc64" ; then
5879 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5881 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5883 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5885 echo "TOOLS=$tools" >> $config_host_mak
5886 echo "ROMS=$roms" >> $config_host_mak
5887 echo "MAKE=$make" >> $config_host_mak
5888 echo "INSTALL=$install" >> $config_host_mak
5889 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5890 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5891 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5892 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5893 echo "PYTHON=$python" >> $config_host_mak
5894 echo "CC=$cc" >> $config_host_mak
5895 if $iasl -h > /dev
/null
2>&1; then
5896 echo "IASL=$iasl" >> $config_host_mak
5898 echo "CC_I386=$cc_i386" >> $config_host_mak
5899 echo "HOST_CC=$host_cc" >> $config_host_mak
5900 echo "CXX=$cxx" >> $config_host_mak
5901 echo "OBJCC=$objcc" >> $config_host_mak
5902 echo "AR=$ar" >> $config_host_mak
5903 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5904 echo "AS=$as" >> $config_host_mak
5905 echo "CCAS=$ccas" >> $config_host_mak
5906 echo "CPP=$cpp" >> $config_host_mak
5907 echo "OBJCOPY=$objcopy" >> $config_host_mak
5908 echo "LD=$ld" >> $config_host_mak
5909 echo "NM=$nm" >> $config_host_mak
5910 echo "WINDRES=$windres" >> $config_host_mak
5911 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5912 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5913 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5914 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5915 if test "$sparse" = "yes" ; then
5916 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5917 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5918 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5919 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5920 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5922 if test "$cross_prefix" != ""; then
5923 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5925 echo "AUTOCONF_HOST := " >> $config_host_mak
5927 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5928 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5929 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
5930 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
5931 echo "LIBS+=$LIBS" >> $config_host_mak
5932 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5933 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
5934 echo "EXESUF=$EXESUF" >> $config_host_mak
5935 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5936 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5937 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5938 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5939 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5940 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5941 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5942 if test "$gcov" = "yes" ; then
5943 echo "CONFIG_GCOV=y" >> $config_host_mak
5944 echo "GCOV=$gcov_tool" >> $config_host_mak
5947 # use included Linux headers
5948 if test "$linux" = "yes" ; then
5949 mkdir
-p linux-headers
5967 # For most CPUs the kernel architecture name and QEMU CPU name match.
5971 # For non-KVM architectures we will not have asm headers
5972 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5973 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5977 for target
in $target_list; do
5978 target_dir
="$target"
5979 config_target_mak
=$target_dir/config-target.mak
5980 target_name
=$
(echo $target | cut
-d '-' -f 1)
5981 target_bigendian
="no"
5983 case "$target_name" in
5984 armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5985 target_bigendian
=yes
5989 target_user_only
="no"
5990 target_linux_user
="no"
5991 target_bsd_user
="no"
5993 ${target_name}-softmmu)
5994 target_softmmu
="yes"
5996 ${target_name}-linux-user)
5997 if test "$linux" != "yes" ; then
5998 error_exit
"Target '$target' is only available on a Linux host"
6000 target_user_only
="yes"
6001 target_linux_user
="yes"
6003 ${target_name}-bsd-user)
6004 if test "$bsd" != "yes" ; then
6005 error_exit
"Target '$target' is only available on a BSD host"
6007 target_user_only
="yes"
6008 target_bsd_user
="yes"
6011 error_exit
"Target '$target' not recognised"
6016 mkdir
-p $target_dir
6017 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6021 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
6024 TARGET_ARCH
="$target_name"
6028 case "$target_name" in
6030 gdb_xml_files
="i386-32bit-core.xml"
6033 TARGET_BASE_ARCH
=i386
6034 gdb_xml_files
="i386-64bit-core.xml"
6043 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6046 TARGET_BASE_ARCH
=arm
6049 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6059 gdb_xml_files
="cf-core.xml cf-fp.xml"
6061 microblaze|microblazeel
)
6062 TARGET_ARCH
=microblaze
6067 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6071 TARGET_BASE_ARCH
=mips
6072 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6073 echo "TARGET_ABI32=y" >> $config_target_mak
6077 TARGET_BASE_ARCH
=mips
6078 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6085 TARGET_ARCH
=openrisc
6086 TARGET_BASE_ARCH
=openrisc
6089 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6092 TARGET_BASE_ARCH
=ppc
6094 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6097 TARGET_BASE_ARCH
=ppc
6100 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6104 TARGET_BASE_ARCH
=ppc
6107 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6111 TARGET_BASE_ARCH
=ppc
6113 echo "TARGET_ABI32=y" >> $config_target_mak
6114 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6123 TARGET_BASE_ARCH
=sparc
6127 TARGET_BASE_ARCH
=sparc
6128 TARGET_ABI_DIR
=sparc
6129 echo "TARGET_ABI32=y" >> $config_target_mak
6132 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
6144 error_exit
"Unsupported target CPU"
6147 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6148 if [ "$TARGET_BASE_ARCH" = "" ]; then
6149 TARGET_BASE_ARCH
=$TARGET_ARCH
6152 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
6155 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
6158 target_arch_name
="$(upper $TARGET_ARCH)"
6159 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6160 echo "TARGET_NAME=$target_name" >> $config_target_mak
6161 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6162 if [ "$TARGET_ABI_DIR" = "" ]; then
6163 TARGET_ABI_DIR
=$TARGET_ARCH
6165 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6166 if [ "$HOST_VARIANT_DIR" != "" ]; then
6167 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6169 case "$target_name" in
6171 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
6172 echo "CONFIG_XEN=y" >> $config_target_mak
6173 if test "$xen_pci_passthrough" = yes; then
6174 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6180 case "$target_name" in
6181 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
6182 # Make sure the target and host cpus are compatible
6183 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
6184 \
( "$target_name" = "$cpu" -o \
6185 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
6186 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
6187 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
6188 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
6189 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
6190 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
6191 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
6192 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
6193 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
6194 echo "CONFIG_KVM=y" >> $config_target_mak
6195 if test "$vhost_net" = "yes" ; then
6196 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6197 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
6201 if test "$hax" = "yes" ; then
6202 if test "$target_softmmu" = "yes" ; then
6203 case "$target_name" in
6205 echo "CONFIG_HAX=y" >> $config_target_mak
6210 if test "$target_bigendian" = "yes" ; then
6211 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6213 if test "$target_softmmu" = "yes" ; then
6214 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6215 if test "$mttcg" = "yes" ; then
6216 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6219 if test "$target_user_only" = "yes" ; then
6220 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6221 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6223 if test "$target_linux_user" = "yes" ; then
6224 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6227 if test ! -z "$gdb_xml_files" ; then
6228 for x
in $gdb_xml_files; do
6229 list
="$list $source_path/gdb-xml/$x"
6231 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6234 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6235 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6237 if test "$target_bsd_user" = "yes" ; then
6238 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6241 # generate QEMU_CFLAGS/LDFLAGS for targets
6247 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6248 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6251 for i
in $ARCH $TARGET_BASE_ARCH ; do
6254 disas_config
"ALPHA"
6257 if test -n "${cxx}"; then
6258 disas_config
"ARM_A64"
6263 if test -n "${cxx}"; then
6264 disas_config
"ARM_A64"
6286 disas_config
"MICROBLAZE"
6292 disas_config
"MOXIE"
6295 disas_config
"NIOS2"
6298 disas_config
"OPENRISC"
6310 disas_config
"SPARC"
6313 disas_config
"XTENSA"
6317 if test "$tcg_interpreter" = "yes" ; then
6323 # Ensure there's only a single GP
6324 cflags
="-msmall-data $cflags"
6328 if test "$gprof" = "yes" ; then
6329 echo "TARGET_GPROF=yes" >> $config_target_mak
6330 if test "$target_linux_user" = "yes" ; then
6332 ldflags
="-p $ldflags"
6334 if test "$target_softmmu" = "yes" ; then
6335 ldflags
="-p $ldflags"
6336 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6340 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6341 ldflags
="$ldflags $textseg_ldflags"
6344 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6345 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6347 done # for target in $targets
6349 if [ "$pixman" = "internal" ]; then
6350 echo "config-host.h: subdir-pixman" >> $config_host_mak
6353 if [ "$dtc_internal" = "yes" ]; then
6354 echo "config-host.h: subdir-dtc" >> $config_host_mak
6357 if test "$numa" = "yes"; then
6358 echo "CONFIG_NUMA=y" >> $config_host_mak
6361 if test "$ccache_cpp2" = "yes"; then
6362 echo "export CCACHE_CPP2=y" >> $config_host_mak
6365 # build tree in object directory in case the source is not in the current directory
6366 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6367 DIRS
="$DIRS docs fsdev"
6368 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6369 DIRS
="$DIRS roms/seabios roms/vgabios"
6370 DIRS
="$DIRS qapi-generated"
6371 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6372 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6373 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6374 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6375 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6376 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6377 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6378 FILES
="$FILES pc-bios/qemu-icon.bmp"
6380 $source_path/pc-bios
/*.bin \
6381 $source_path/pc-bios
/*.lid \
6382 $source_path/pc-bios
/*.aml \
6383 $source_path/pc-bios
/*.rom \
6384 $source_path/pc-bios
/*.dtb \
6385 $source_path/pc-bios
/*.img \
6386 $source_path/pc-bios
/openbios-
* \
6387 $source_path/pc-bios
/u-boot.
* \
6388 $source_path/pc-bios
/palcode-
*
6390 FILES
="$FILES pc-bios/$(basename $bios_file)"
6392 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6394 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6397 for f
in $FILES ; do
6398 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6399 symlink
"$source_path/$f" "$f"
6403 # temporary config to build submodules
6404 for rom
in seabios vgabios
; do
6405 config_mak
=roms
/$rom/config.mak
6406 echo "# Automatically generated by configure - do not modify" > $config_mak
6407 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6408 echo "AS=$as" >> $config_mak
6409 echo "CCAS=$ccas" >> $config_mak
6410 echo "CC=$cc" >> $config_mak
6411 echo "BCC=bcc" >> $config_mak
6412 echo "CPP=$cpp" >> $config_mak
6413 echo "OBJCOPY=objcopy" >> $config_mak
6414 echo "IASL=$iasl" >> $config_mak
6415 echo "LD=$ld" >> $config_mak
6418 # set up tests data directory
6419 if [ ! -e tests
/data
]; then
6420 symlink
"$source_path/tests/data" tests
/data
6423 # set up qemu-iotests in this build directory
6424 iotests_common_env
="tests/qemu-iotests/common.env"
6425 iotests_check
="tests/qemu-iotests/check"
6427 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6428 echo >> "$iotests_common_env"
6429 echo "export PYTHON='$python'" >> "$iotests_common_env"
6431 if [ ! -e "$iotests_check" ]; then
6432 symlink
"$source_path/$iotests_check" "$iotests_check"
6435 # Save the configure command line for later reuse.
6436 cat <<EOD >config.status
6438 # Generated by configure.
6439 # Run this file to recreate the current configuration.
6440 # Compiler output produced by configure, useful for debugging
6441 # configure, is in config.log if it exists.
6443 printf "exec" >>config.status
6444 printf " '%s'" "$0" "$@" >>config.status
6445 echo ' "$@"' >>config.status
6446 chmod +x config.status