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 TMPL
="${TMPDIR1}/${TMPB}.lo"
32 TMPA
="${TMPDIR1}/lib${TMPB}.la"
33 TMPE
="${TMPDIR1}/${TMPB}.exe"
34 TMPMO
="${TMPDIR1}/${TMPB}.mo"
38 # Print a helpful header at the top of config.log
39 echo "# QEMU configure log $(date)" >> config.log
40 printf "# Configured with:" >> config.log
41 printf " '%s'" "$0" "$@" >> config.log
43 echo "#" >> config.log
48 while test -n "$2"; do
57 # Run the compiler, capturing its output to the log. First argument
58 # is compiler binary to execute.
61 echo $compiler "$@" >> config.log
62 $compiler "$@" >> config.log
2>&1 ||
return $?
63 # Test passed. If this is an --enable-werror build, rerun
64 # the test with -Werror and bail out if it fails. This
65 # makes warning-generating-errors in configure test code
66 # obvious to developers.
67 if test "$werror" != "yes"; then
70 # Don't bother rerunning the compile if we were already using -Werror
76 echo $compiler -Werror "$@" >> config.log
77 $compiler -Werror "$@" >> config.log
2>&1 && return $?
78 error_exit
"configure test passed without -Werror but failed with -Werror." \
79 "This is probably a bug in the configure script. The failing command" \
80 "will be at the bottom of config.log." \
81 "You can run configure with --disable-werror to bypass this check."
85 do_compiler
"$cc" "$@"
89 do_compiler
"$cxx" "$@"
93 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
94 # options which some versions of GCC's C++ compiler complain about
95 # because they only make sense for C programs.
97 for arg
in $QEMU_CFLAGS; do
100 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
101 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
104 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
112 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
118 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
121 # symbolically link $1 to $2. Portable version of "ln -sf".
124 mkdir
-p "$(dirname "$2")"
128 # check whether a command is available to this shell (may be either an
129 # executable or a builtin)
131 type "$1" >/dev
/null
2>&1
134 # search for an executable in PATH
140 # pathname has a dir component?
141 if [ "${local_command#*/}" != "$local_command" ]; then
142 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
143 echo "$local_command"
147 if [ -z "$local_command" ]; then
152 for local_dir
in $PATH; do
153 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
154 echo "$local_dir/$local_command"
155 IFS
="${local_ifs:-$(printf ' \t\n')}"
160 IFS
="${local_ifs:-$(printf ' \t\n')}"
165 echo "$trace_backends" |
grep "$1" >/dev
/null
169 source_path
=$
(dirname "$0")
172 interp_prefix
="/usr/gnemul/qemu-%M"
176 block_drv_rw_whitelist
=""
177 block_drv_ro_whitelist
=""
183 cc_i386
=i386-pc-linux-gnu-gcc
188 # Don't accept a target_list environment variable.
191 # Default value for a variable defining feature "foo".
192 # * foo="no" feature will only be used if --enable-foo arg is given
193 # * foo="" feature will be searched for, and if found, will be used
194 # unless --disable-foo is given
195 # * foo="yes" this value will only be set by --enable-foo flag.
196 # feature will searched for,
197 # if not found, configure exits with error
199 # Always add --enable-foo and --disable-foo command line args.
200 # Distributions want to ensure that several features are compiled in, and it
201 # is impossible without a --enable-foo that exits if a feature is not found.
222 xen_pv_domain_build
="no"
223 xen_pci_passthrough
=""
247 LDFLAGS_SHARED
="-shared"
250 mandir
="\${prefix}/share/man"
251 datadir
="\${prefix}/share"
252 qemu_docdir
="\${prefix}/share/doc/qemu"
253 bindir
="\${prefix}/bin"
254 libdir
="\${prefix}/lib"
255 libexecdir
="\${prefix}/libexec"
256 includedir
="\${prefix}/include"
257 sysconfdir
="\${prefix}/etc"
258 local_statedir
="\${prefix}/var"
291 guest_agent_with_vss
="no"
292 guest_agent_ntddscsi
="no"
301 debug_stack_usage
="no"
304 glusterfs_xlator_opt
="no"
305 glusterfs_discard
="no"
306 glusterfs_zerofill
="no"
311 tls_priority
="NORMAL"
327 # parse CC options first
329 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
331 --cross-prefix=*) cross_prefix
="$optarg"
335 --cxx=*) CXX
="$optarg"
337 --source-path=*) source_path
="$optarg"
339 --cpu=*) cpu
="$optarg"
341 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
342 EXTRA_CFLAGS
="$optarg"
344 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
345 EXTRA_LDFLAGS
="$optarg"
347 --enable-debug-info) debug_info
="yes"
349 --disable-debug-info) debug_info
="no"
354 # Using uname is really, really broken. Once we have the right set of checks
355 # we can eliminate its usage altogether.
357 # Preferred compiler:
359 # ${cross_prefix}gcc (if cross-prefix specified)
361 if test -z "${CC}${cross_prefix}"; then
364 cc
="${CC-${cross_prefix}gcc}"
367 if test -z "${CXX}${cross_prefix}"; then
370 cxx
="${CXX-${cross_prefix}g++}"
373 ar="${AR-${cross_prefix}ar}"
374 as
="${AS-${cross_prefix}as}"
377 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
378 ld
="${LD-${cross_prefix}ld}"
379 nm
="${NM-${cross_prefix}nm}"
380 strip
="${STRIP-${cross_prefix}strip}"
381 windres
="${WINDRES-${cross_prefix}windres}"
382 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
384 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
386 pkg_config
=query_pkg_config
387 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
388 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
390 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
391 ARFLAGS
="${ARFLAGS-rv}"
393 # default flags for all hosts
394 # We use -fwrapv to tell the compiler that we require a C dialect where
395 # left shift of signed integers is well defined and has the expected
396 # 2s-complement style results. (Both clang and gcc agree that it
397 # provides these semantics.)
398 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
399 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
400 QEMU_CFLAGS
="-Wmissing-format-attribute $QEMU_CFLAGS"
401 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
402 QEMU_CFLAGS
="-Wno-unused-parameter $QEMU_CFLAGS"
403 QEMU_CFLAGS
="-Wno-missing-field-initializers $QEMU_CFLAGS"
404 QEMU_CFLAGS
="-Wno-sign-compare $QEMU_CFLAGS"
405 QEMU_CFLAGS
="-Wno-override-init $QEMU_CFLAGS"
406 QEMU_CFLAGS
="-Wno-error=format $QEMU_CFLAGS"
407 QEMU_CFLAGS
="-Wno-error=format-extra-args $QEMU_CFLAGS"
408 QEMU_CFLAGS
="-Wno-error=parentheses $QEMU_CFLAGS"
409 QEMU_CFLAGS
="-Wextra $QEMU_CFLAGS"
410 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
411 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
412 if test "$debug_info" = "yes"; then
414 LDFLAGS
="-g $LDFLAGS"
417 # make source path absolute
418 source_path
=$
(cd "$source_path"; pwd)
420 cc_macros
=$
($cc $QEMU_CFLAGS -E -dD - </dev
/null
)
422 # running configure in the source tree?
423 # we know that's the case if configure is there.
424 if test -f "./configure"; then
425 pwd_is_source_path
="y"
427 pwd_is_source_path
="n"
434 #error $1 not defined
436 int main(void) { return 0; }
444 int main(void) { return 0; }
451 int main(void) { return 0; }
455 if check_define __linux__
; then
457 elif check_define _WIN32
; then
459 elif check_define __OpenBSD__
; then
461 elif check_define __sun__
; then
463 elif check_define __HAIKU__
; then
469 # Some host OSes need non-standard checks for which CPU to use.
470 # Note that these checks are broken for cross-compilation: if you're
471 # cross-compiling to one of these OSes then you'll need to specify
472 # the correct CPU with the --cpu option.
475 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
476 # run 64-bit userspace code.
477 # If the user didn't specify a CPU explicitly and the kernel says this is
478 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
479 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
484 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
485 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
490 if test ! -z "$cpu" ; then
491 # command line argument
493 elif check_define __i386__
; then
495 elif check_define __x86_64__
; then
496 if check_define __ILP32__
; then
501 elif check_define __sparc__
; then
502 if check_define __arch64__
; then
507 elif check_define _ARCH_PPC
; then
508 if check_define _ARCH_PPC64
; then
513 elif check_define __mips__
; then
514 if check_define __mips64
; then
519 elif check_define __ia64__
; then
521 elif check_define __s390__
; then
522 if check_define __s390x__
; then
527 elif check_define __arm__
; then
529 elif check_define __aarch64__
; then
536 # Normalise host CPU name and set ARCH.
537 # Note that this case should only have supported host CPUs, not guests.
539 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
542 i386|i486|i586|i686|i86pc|BePC
)
556 if check_define __MIPSEL__
; then
567 # This will result in either an error or falling back to TCI later
571 if test -z "$ARCH"; then
577 # host *BSD for user mode
583 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
584 audio_possible_drivers
="sdl"
589 audio_possible_drivers
="dsound sdl"
590 if check_include dsound.h
; then
591 audio_drv_list
="dsound"
599 audio_possible_drivers
="oss sdl pa"
605 audio_possible_drivers
="oss sdl pa"
606 # needed for kinfo_getvmmap(3) in libutil.h
608 netmap
="" # enable netmap autodetect
609 HOST_VARIANT_DIR
="freebsd"
615 audio_possible_drivers
="oss sdl pa"
616 HOST_VARIANT_DIR
="dragonfly"
622 audio_possible_drivers
="oss sdl"
624 HOST_VARIANT_DIR
="netbsd"
630 audio_possible_drivers
="sdl"
631 HOST_VARIANT_DIR
="openbsd"
636 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
637 if [ "$cpu" = "x86_64" ] ; then
638 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
639 LDFLAGS
="-arch x86_64 $LDFLAGS"
642 audio_drv_list
="coreaudio"
643 audio_possible_drivers
="coreaudio sdl"
644 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
645 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
646 # Disable attempts to use ObjectiveC features in os/object.h since they
647 # won't work when we're compiling with gcc as a C compiler.
648 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
649 HOST_VARIANT_DIR
="darwin"
654 install="${INSTALL-ginstall}"
656 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
657 needs_libsunmath
="no"
658 solarisrev
=$
(uname
-r | cut
-f2 -d.
)
659 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
660 if test "$solarisrev" -le 9 ; then
661 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
662 needs_libsunmath
="yes"
663 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
664 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
665 LIBS
="-lsunmath $LIBS"
667 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
668 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
669 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
670 "Studio 11 can be downloaded from www.sun.com."
674 if test -f /usr
/include
/sys
/soundcard.h
; then
677 audio_possible_drivers
="oss sdl"
678 # needed for CMSG_ macros in sys/socket.h
679 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
680 # needed for TIOCWIN* defines in termios.h
681 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
682 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
683 solarisnetlibs
="-lsocket -lnsl -lresolv"
684 LIBS
="$solarisnetlibs $LIBS"
685 libs_qga
="$solarisnetlibs $libs_qga"
693 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
694 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
698 audio_possible_drivers
="oss alsa sdl pa"
705 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
709 if [ "$bsd" = "yes" ] ; then
710 if [ "$darwin" != "yes" ] ; then
715 : ${make=${MAKE-make}}
716 : ${install=${INSTALL-install}}
717 : ${python=${PYTHON-python}}
718 : ${smbd=${SMBD-/usr/sbin/smbd}}
720 # Default objcc to clang if available, otherwise use CC
727 if test "$mingw32" = "yes" ; then
730 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
731 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
732 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
733 # MinGW-w64 needs _POSIX defined.
734 QEMU_CFLAGS
="-D_POSIX=1 $QEMU_CFLAGS"
735 # MinGW needs -mthreads for TLS and macro _MT.
736 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
737 QEMU_CFLAGS
="-I\$(SRC_PATH)/hosts/w32/include $QEMU_CFLAGS"
738 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
740 if compile_prog
"" "-liberty" ; then
741 LIBS
="-liberty $LIBS"
743 prefix
="c:/Program Files/QEMU"
746 qemu_docdir
="\${prefix}"
748 sysconfdir
="\${prefix}"
751 libs_qga
="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
757 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
759 --help|
-h) show_help
=yes
761 --version|
-V) exec cat $source_path/VERSION
763 --prefix=*) prefix
="$optarg"
765 --interp-prefix=*) interp_prefix
="$optarg"
773 --host-cc=*) host_cc
="$optarg"
777 --iasl=*) iasl
="$optarg"
779 --objcc=*) objcc
="$optarg"
781 --make=*) make="$optarg"
783 --install=*) install="$optarg"
785 --python=*) python
="$optarg"
787 --gcov=*) gcov_tool
="$optarg"
789 --smbd=*) smbd
="$optarg"
797 --disable-debug-info)
807 --target-list=*) target_list
="$optarg"
809 --enable-trace-backends=*) trace_backends
="$optarg"
811 # XXX: backwards compatibility
812 --enable-trace-backend=*) trace_backends
="$optarg"
814 --with-trace-file=*) trace_file
="$optarg"
816 --enable-gprof) gprof
="yes"
818 --enable-gcov) gcov
="yes"
822 LDFLAGS
="-static $LDFLAGS"
823 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
825 --mandir=*) mandir
="$optarg"
827 --bindir=*) bindir
="$optarg"
829 --libdir=*) libdir
="$optarg"
831 --libexecdir=*) libexecdir
="$optarg"
833 --includedir=*) includedir
="$optarg"
835 --datadir=*) datadir
="$optarg"
837 --with-confsuffix=*) confsuffix
="$optarg"
839 --docdir=*) qemu_docdir
="$optarg"
841 --sysconfdir=*) sysconfdir
="$optarg"
843 --localstatedir=*) local_statedir
="$optarg"
845 --sbindir=*|
--sharedstatedir=*|\
846 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
847 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
848 # These switches are silently ignored, for compatibility with
849 # autoconf-generated configure scripts. This allows QEMU's
850 # configure to be used by RPM and similar macros that set
851 # lots of directory switches by default.
853 --with-system-pixman) pixman
="system"
855 --without-system-pixman) pixman
="internal"
857 --without-pixman) pixman
="none"
859 --disable-sdl) sdl
="no"
861 --enable-sdl) sdl
="yes"
863 --with-sdlabi=*) sdlabi
="$optarg"
865 --disable-qom-cast-debug) qom_cast_debug
="no"
867 --enable-qom-cast-debug) qom_cast_debug
="yes"
869 --disable-virtfs) virtfs
="no"
871 --enable-virtfs) virtfs
="yes"
873 --disable-vnc) vnc
="no"
875 --enable-vnc) vnc
="yes"
877 --oss-lib=*) oss_lib
="$optarg"
879 --audio-drv-list=*) audio_drv_list
="$optarg"
881 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
883 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
885 --enable-debug-tcg) debug_tcg
="yes"
887 --disable-debug-tcg) debug_tcg
="no"
890 # Enable debugging options that aren't excessively noisy
896 --enable-sparse) sparse
="yes"
898 --disable-sparse) sparse
="no"
900 --disable-strip) strip_opt
="no"
902 --disable-vnc-sasl) vnc_sasl
="no"
904 --enable-vnc-sasl) vnc_sasl
="yes"
906 --disable-vnc-jpeg) vnc_jpeg
="no"
908 --enable-vnc-jpeg) vnc_jpeg
="yes"
910 --disable-vnc-png) vnc_png
="no"
912 --enable-vnc-png) vnc_png
="yes"
914 --disable-slirp) slirp
="no"
916 --disable-vde) vde
="no"
918 --enable-vde) vde
="yes"
920 --disable-netmap) netmap
="no"
922 --enable-netmap) netmap
="yes"
924 --disable-xen) xen
="no"
926 --enable-xen) xen
="yes"
928 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
930 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
932 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
934 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
936 --disable-brlapi) brlapi
="no"
938 --enable-brlapi) brlapi
="yes"
940 --disable-bluez) bluez
="no"
942 --enable-bluez) bluez
="yes"
944 --disable-kvm) kvm
="no"
946 --enable-kvm) kvm
="yes"
948 --disable-tcg-interpreter) tcg_interpreter
="no"
950 --enable-tcg-interpreter) tcg_interpreter
="yes"
952 --disable-cap-ng) cap_ng
="no"
954 --enable-cap-ng) cap_ng
="yes"
956 --disable-spice) spice
="no"
958 --enable-spice) spice
="yes"
960 --disable-libiscsi) libiscsi
="no"
962 --enable-libiscsi) libiscsi
="yes"
964 --disable-libnfs) libnfs
="no"
966 --enable-libnfs) libnfs
="yes"
968 --enable-profiler) profiler
="yes"
970 --disable-cocoa) cocoa
="no"
974 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
976 --disable-system) softmmu
="no"
978 --enable-system) softmmu
="yes"
985 --disable-linux-user) linux_user
="no"
987 --enable-linux-user) linux_user
="yes"
989 --disable-bsd-user) bsd_user
="no"
991 --enable-bsd-user) bsd_user
="yes"
993 --enable-pie) pie
="yes"
995 --disable-pie) pie
="no"
997 --enable-werror) werror
="yes"
999 --disable-werror) werror
="no"
1001 --enable-stack-protector) stack_protector
="yes"
1003 --disable-stack-protector) stack_protector
="no"
1005 --disable-curses) curses
="no"
1007 --enable-curses) curses
="yes"
1009 --disable-curl) curl
="no"
1011 --enable-curl) curl
="yes"
1013 --disable-fdt) fdt
="no"
1015 --enable-fdt) fdt
="yes"
1017 --disable-linux-aio) linux_aio
="no"
1019 --enable-linux-aio) linux_aio
="yes"
1021 --disable-attr) attr
="no"
1023 --enable-attr) attr
="yes"
1025 --disable-blobs) blobs
="no"
1027 --with-pkgversion=*) pkgversion
=" ($optarg)"
1029 --with-coroutine=*) coroutine
="$optarg"
1031 --disable-coroutine-pool) coroutine_pool
="no"
1033 --enable-coroutine-pool) coroutine_pool
="yes"
1035 --enable-debug-stack-usage) debug_stack_usage
="yes"
1037 --disable-docs) docs
="no"
1039 --enable-docs) docs
="yes"
1041 --disable-vhost-net) vhost_net
="no"
1043 --enable-vhost-net) vhost_net
="yes"
1045 --disable-vhost-scsi) vhost_scsi
="no"
1047 --enable-vhost-scsi) vhost_scsi
="yes"
1049 --disable-vhost-vsock) vhost_vsock
="no"
1051 --enable-vhost-vsock) vhost_vsock
="yes"
1053 --disable-opengl) opengl
="no"
1055 --enable-opengl) opengl
="yes"
1057 --disable-rbd) rbd
="no"
1059 --enable-rbd) rbd
="yes"
1061 --disable-xfsctl) xfs
="no"
1063 --enable-xfsctl) xfs
="yes"
1065 --disable-smartcard) smartcard
="no"
1067 --enable-smartcard) smartcard
="yes"
1069 --disable-libusb) libusb
="no"
1071 --enable-libusb) libusb
="yes"
1073 --disable-usb-redir) usb_redir
="no"
1075 --enable-usb-redir) usb_redir
="yes"
1077 --disable-zlib-test) zlib
="no"
1079 --disable-lzo) lzo
="no"
1081 --enable-lzo) lzo
="yes"
1083 --disable-snappy) snappy
="no"
1085 --enable-snappy) snappy
="yes"
1087 --disable-bzip2) bzip2="no"
1089 --enable-bzip2) bzip2="yes"
1091 --enable-guest-agent) guest_agent
="yes"
1093 --disable-guest-agent) guest_agent
="no"
1095 --enable-guest-agent-msi) guest_agent_msi
="yes"
1097 --disable-guest-agent-msi) guest_agent_msi
="no"
1099 --with-vss-sdk) vss_win32_sdk
=""
1101 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1103 --without-vss-sdk) vss_win32_sdk
="no"
1105 --with-win-sdk) win_sdk
=""
1107 --with-win-sdk=*) win_sdk
="$optarg"
1109 --without-win-sdk) win_sdk
="no"
1111 --enable-tools) want_tools
="yes"
1113 --disable-tools) want_tools
="no"
1115 --enable-seccomp) seccomp
="yes"
1117 --disable-seccomp) seccomp
="no"
1119 --disable-glusterfs) glusterfs
="no"
1121 --enable-glusterfs) glusterfs
="yes"
1123 --disable-archipelago) archipelago
="no"
1125 --enable-archipelago) archipelago
="yes"
1127 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1128 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1130 --enable-vhdx|
--disable-vhdx)
1131 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1133 --enable-uuid|
--disable-uuid)
1134 echo "$0: $opt is obsolete, UUID support is always built" >&2
1136 --disable-gtk) gtk
="no"
1138 --enable-gtk) gtk
="yes"
1140 --tls-priority=*) tls_priority
="$optarg"
1142 --disable-gnutls) gnutls
="no"
1144 --enable-gnutls) gnutls
="yes"
1146 --disable-nettle) nettle
="no"
1148 --enable-nettle) nettle
="yes"
1150 --disable-gcrypt) gcrypt
="no"
1152 --enable-gcrypt) gcrypt
="yes"
1154 --enable-rdma) rdma
="yes"
1156 --disable-rdma) rdma
="no"
1158 --with-gtkabi=*) gtkabi
="$optarg"
1160 --disable-vte) vte
="no"
1162 --enable-vte) vte
="yes"
1164 --disable-virglrenderer) virglrenderer
="no"
1166 --enable-virglrenderer) virglrenderer
="yes"
1168 --disable-tpm) tpm
="no"
1170 --enable-tpm) tpm
="yes"
1172 --disable-libssh2) libssh2
="no"
1174 --enable-libssh2) libssh2
="yes"
1176 --disable-numa) numa
="no"
1178 --enable-numa) numa
="yes"
1180 --disable-tcmalloc) tcmalloc
="no"
1182 --enable-tcmalloc) tcmalloc
="yes"
1184 --disable-jemalloc) jemalloc
="no"
1186 --enable-jemalloc) jemalloc
="yes"
1188 --disable-replication) replication
="no"
1190 --enable-replication) replication
="yes"
1193 echo "ERROR: unknown option $opt"
1194 echo "Try '$0 --help' for more information"
1200 if ! has
$python; then
1201 error_exit
"Python not found. Use --python=/path/to/python"
1204 # Note that if the Python conditional here evaluates True we will exit
1205 # with status 1 which is a shell 'false' value.
1206 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1207 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1208 "Note that Python 3 or later is not yet supported." \
1209 "Use --python=/path/to/python to specify a supported Python."
1212 # Suppress writing compiled files
1218 LDFLAGS
="-m32 $LDFLAGS"
1222 LDFLAGS
="-m64 $LDFLAGS"
1225 LDFLAGS
="-m32 $LDFLAGS"
1226 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1229 LDFLAGS
="-m64 $LDFLAGS"
1230 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1234 LDFLAGS
="-m31 $LDFLAGS"
1238 LDFLAGS
="-m64 $LDFLAGS"
1242 LDFLAGS
="-m32 $LDFLAGS"
1243 cc_i386
='$(CC) -m32'
1247 LDFLAGS
="-m64 $LDFLAGS"
1248 cc_i386
='$(CC) -m32'
1252 LDFLAGS
="-mx32 $LDFLAGS"
1253 cc_i386
='$(CC) -m32'
1255 # No special flags required for other host CPUs
1258 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1259 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1261 # For user-mode emulation the host arch has to be one we explicitly
1262 # support, even if we're using TCI.
1263 if [ "$ARCH" = "unknown" ]; then
1268 default_target_list
=""
1272 if [ "$softmmu" = "yes" ]; then
1273 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1275 if [ "$linux_user" = "yes" ]; then
1276 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1278 if [ "$bsd_user" = "yes" ]; then
1279 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1282 for config
in $mak_wilds; do
1283 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1286 if test x
"$show_help" = x
"yes" ; then
1289 Usage: configure [options]
1290 Options: [defaults in brackets after descriptions]
1293 --help print this message
1294 --prefix=PREFIX install in PREFIX [$prefix]
1295 --interp-prefix=PREFIX where to find shared libraries, etc.
1296 use %M for cpu name [$interp_prefix]
1297 --target-list=LIST set target list (default: build everything)
1298 $(echo Available targets: $default_target_list | \
1299 fold -s -w 53 | sed -e 's/^/ /')
1301 Advanced options (experts only):
1302 --source-path=PATH path of source code [$source_path]
1303 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1304 --cc=CC use C compiler CC [$cc]
1305 --iasl=IASL use ACPI compiler IASL [$iasl]
1306 --host-cc=CC use C compiler CC [$host_cc] for code run at
1308 --cxx=CXX use C++ compiler CXX [$cxx]
1309 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1310 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1311 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1312 --make=MAKE use specified make [$make]
1313 --install=INSTALL use specified install [$install]
1314 --python=PYTHON use specified python [$python]
1315 --smbd=SMBD use specified smbd [$smbd]
1316 --static enable static build [$static]
1317 --mandir=PATH install man pages in PATH
1318 --datadir=PATH install firmware in PATH$confsuffix
1319 --docdir=PATH install documentation in PATH$confsuffix
1320 --bindir=PATH install binaries in PATH
1321 --libdir=PATH install libraries in PATH
1322 --sysconfdir=PATH install config in PATH$confsuffix
1323 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1324 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1325 --enable-debug enable common debug build options
1326 --disable-strip disable stripping binaries
1327 --disable-werror disable compilation abort on warning
1328 --disable-stack-protector disable compiler-provided stack protection
1329 --audio-drv-list=LIST set audio drivers list:
1330 Available drivers: $audio_possible_drivers
1331 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1332 --block-drv-rw-whitelist=L
1333 set block driver read-write whitelist
1334 (affects only QEMU, not qemu-img)
1335 --block-drv-ro-whitelist=L
1336 set block driver read-only whitelist
1337 (affects only QEMU, not qemu-img)
1338 --enable-trace-backends=B Set trace backend
1339 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1340 --with-trace-file=NAME Full PATH,NAME of file to store traces
1342 --disable-slirp disable SLIRP userspace network connectivity
1343 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1344 --oss-lib path to OSS library
1345 --cpu=CPU Build for host CPU [$cpu]
1346 --with-coroutine=BACKEND coroutine backend. Supported options:
1347 gthread, ucontext, sigaltstack, windows
1348 --enable-gcov enable test coverage analysis with gcov
1349 --gcov=GCOV use specified gcov [$gcov_tool]
1350 --disable-blobs disable installing provided firmware blobs
1351 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1352 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1353 --tls-priority default TLS protocol/cipher priority string
1355 Optional features, enabled with --enable-FEATURE and
1356 disabled with --disable-FEATURE, default is enabled if available:
1358 system all system emulation targets
1359 user supported user emulation targets
1360 linux-user all linux usermode emulation targets
1361 bsd-user all BSD usermode emulation targets
1362 docs build documentation
1363 guest-agent build the QEMU Guest Agent
1364 guest-agent-msi build guest agent Windows MSI installation package
1365 pie Position Independent Executables
1366 modules modules support
1367 debug-tcg TCG debugging (default is disabled)
1368 debug-info debugging information
1369 sparse sparse checker
1371 gnutls GNUTLS cryptography support
1372 nettle nettle cryptography support
1373 gcrypt libgcrypt cryptography support
1375 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1377 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1378 vte vte support for the gtk UI
1381 vnc-sasl SASL encryption for VNC server
1382 vnc-jpeg JPEG lossy compression for VNC server
1383 vnc-png PNG compression for VNC server
1384 cocoa Cocoa UI (Mac OS X only)
1386 xen xen backend driver support
1388 brlapi BrlAPI (Braile)
1389 curl curl connectivity
1391 bluez bluez stack connectivity
1392 kvm KVM acceleration support
1393 rdma RDMA-based migration support
1394 vde support for vde network
1395 netmap support for netmap network
1396 linux-aio Linux AIO support
1397 cap-ng libcap-ng support
1398 attr attr and xattr support
1399 vhost-net vhost-net acceleration support
1401 rbd rados block device (rbd)
1402 libiscsi iscsi support
1404 smartcard smartcard support (libcacard)
1405 libusb libusb (for usb passthrough)
1406 usb-redir usb network redirection support
1407 lzo support of lzo compression library
1408 snappy support of snappy compression library
1409 bzip2 support of bzip2 compression library
1410 (for reading bzip2-compressed dmg images)
1411 seccomp seccomp support
1412 coroutine-pool coroutine freelist (better performance)
1413 glusterfs GlusterFS backend
1414 archipelago Archipelago backend
1416 libssh2 ssh block device support
1417 numa libnuma support
1418 tcmalloc tcmalloc support
1419 jemalloc jemalloc support
1420 replication replication support
1422 NOTE: The object files are built at the place where configure is launched
1427 # Now we have handled --enable-tcg-interpreter and know we're not just
1428 # printing the help message, bail out if the host CPU isn't supported.
1429 if test "$ARCH" = "unknown"; then
1430 if test "$tcg_interpreter" = "yes" ; then
1431 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1433 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1437 # Consult white-list to determine whether to enable werror
1438 # by default. Only enable by default for git builds
1439 if test -z "$werror" ; then
1440 if test -d "$source_path/.git" -a \
1441 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1448 # check that the C compiler works.
1450 if compile_object
; then
1451 : C compiler works ok
1453 error_exit
"\"$cc\" either does not exist or does not work"
1455 if ! compile_prog
; then
1456 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1459 # Check that the C++ compiler exists and works with the C compiler
1462 int c_function(void);
1463 int main(void) { return c_function(); }
1470 int c_function(void);
1472 int c_function(void) { return 42; }
1477 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1478 # C++ compiler $cxx works ok with C compiler $cc
1481 echo "C++ compiler $cxx does not work with C compiler $cc"
1482 echo "Disabling C++ specific optional code"
1486 echo "No C++ compiler available; disabling C++ specific optional code"
1490 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1491 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1492 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1493 gcc_flags
="-Wunused-but-set-variable $gcc_flags"
1494 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1495 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1496 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1497 # Note that we do not add -Werror to gcc_flags here, because that would
1498 # enable it for all configure tests. If a configure test failed due
1499 # to -Werror this would just silently disable some features,
1500 # so it's too error prone.
1502 cc_has_warning_flag
() {
1505 # Use the positive sense of the flag when testing for -Wno-wombat
1506 # support (gcc will happily accept the -Wno- form of unknown
1508 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1509 compile_prog
"-Werror $optflag" ""
1512 for flag
in $gcc_flags; do
1513 if cc_has_warning_flag
$flag ; then
1514 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1518 if test "$mingw32" = "yes"; then
1519 stack_protector
="no"
1521 if test "$stack_protector" != "no"; then
1523 int main(int argc, char *argv[])
1525 char arr[64], *p = arr, *c = argv[0];
1532 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1534 for flag
in $gcc_flags; do
1535 # We need to check both a compile and a link, since some compiler
1536 # setups fail only on a .c->.o compile and some only at link time
1537 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1538 compile_prog
"-Werror $flag" ""; then
1539 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1544 if test "$stack_protector" = yes; then
1545 if test $sp_on = 0; then
1546 error_exit
"Stack protector not supported"
1551 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1552 # large functions that use global variables. The bug is in all releases of
1553 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1554 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1556 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1557 int main(void) { return 0; }
1559 #error No bug in this compiler.
1562 if compile_prog
"-Werror -fno-gcse" "" ; then
1563 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1566 if test "$static" = "yes" ; then
1567 if test "$modules" = "yes" ; then
1568 error_exit
"static and modules are mutually incompatible"
1570 if test "$pie" = "yes" ; then
1571 error_exit
"static and pie are mutually incompatible"
1577 # Unconditional check for compiler __thread support
1579 static __thread int tls_var;
1580 int main(void) { return tls_var; }
1583 if ! compile_prog
"-Werror" "" ; then
1584 error_exit
"Your compiler does not support the __thread specifier for " \
1585 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1588 if test "$pie" = ""; then
1589 case "$cpu-$targetos" in
1590 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1598 if test "$pie" != "no" ; then
1602 # define THREAD __thread
1607 static THREAD int tls_var;
1609 int main(void) { return tls_var; }
1612 if compile_prog
"-fPIE -DPIE" "-pie"; then
1613 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1614 LDFLAGS
="-pie $LDFLAGS"
1616 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1617 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1620 if test "$pie" = "yes"; then
1621 error_exit
"PIE not available due to missing toolchain support"
1623 echo "Disabling PIE due to missing toolchain support"
1628 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1629 CFLAGS_NOPIE
="-fno-pie"
1630 LDFLAGS_NOPIE
="-nopie"
1634 ##########################################
1635 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1636 # use i686 as default anyway, but for those that don't, an explicit
1637 # specification is necessary
1639 if test "$cpu" = "i386"; then
1641 static int sfaa(int *ptr)
1643 return __sync_fetch_and_and(ptr, 0);
1649 val = __sync_val_compare_and_swap(&val, 0, 1);
1654 if ! compile_prog
"" "" ; then
1655 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1659 #########################################
1660 # Solaris specific configure tool chain decisions
1662 if test "$solaris" = "yes" ; then
1663 if has
$install; then
1666 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1667 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1668 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1670 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1671 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1672 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1673 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1678 if test -f /usr
/ccs
/bin
/ar ; then
1679 error_exit
"No path includes ar" \
1680 "Add /usr/ccs/bin to your path and rerun configure"
1682 error_exit
"No path includes ar"
1686 if test -z "${target_list+xxx}" ; then
1687 target_list
="$default_target_list"
1689 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1692 # Check that we recognised the target name; this allows a more
1693 # friendly error message than if we let it fall through.
1694 for target
in $target_list; do
1695 case " $default_target_list " in
1699 error_exit
"Unknown target name '$target'"
1704 # see if system emulation was really requested
1705 case " $target_list " in
1706 *"-softmmu "*) softmmu
=yes
1712 feature_not_found
() {
1716 error_exit
"User requested feature $feature" \
1717 "configure was not able to find it." \
1722 # big/little endian test
1724 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1725 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1726 extern int foo(short *, short *);
1727 int main(int argc, char *argv[]) {
1728 return foo(big_endian, little_endian);
1732 if compile_object
; then
1733 if grep -q BiGeNdIaN
$TMPO ; then
1735 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1738 echo big
/little
test failed
1741 echo big
/little
test failed
1744 ##########################################
1745 # cocoa implies not SDL or GTK
1746 # (the cocoa UI code currently assumes it is always the active UI
1747 # and doesn't interact well with other UI frontend code)
1748 if test "$cocoa" = "yes"; then
1749 if test "$sdl" = "yes"; then
1750 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1752 if test "$gtk" = "yes"; then
1753 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1759 # Some versions of Mac OS X incorrectly define SIZE_MAX
1763 int main(int argc, char *argv[]) {
1764 return printf("%zu", SIZE_MAX);
1767 have_broken_size_max
=no
1768 if ! compile_object
-Werror ; then
1769 have_broken_size_max
=yes
1772 ##########################################
1776 #include <sys/socket.h>
1777 #include <linux/ip.h>
1778 int main(void) { return sizeof(struct mmsghdr); }
1780 if compile_prog
"" "" ; then
1786 ##########################################
1787 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1789 if test "$mingw32" = "yes"; then
1790 # Some versions of MinGW / Mingw-w64 lack localtime_r
1791 # and gmtime_r entirely.
1793 # Some versions of Mingw-w64 define a macro for
1794 # localtime_r/gmtime_r.
1796 # Some versions of Mingw-w64 will define functions
1797 # for localtime_r/gmtime_r, but only if you have
1798 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1799 # though, unistd.h and pthread.h both define
1802 # So this #undef localtime_r and #include <unistd.h>
1803 # are not in fact redundant.
1808 int main(void) { localtime_r(NULL, NULL); return 0; }
1810 if compile_prog
"" "" ; then
1817 ##########################################
1820 if ! has
"$pkg_config_exe"; then
1821 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1824 ##########################################
1827 if test "$linux_user" = "yes"; then
1830 #include <linux/futex.h>
1832 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1838 if ! compile_object
; then
1839 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1843 ##########################################
1844 # avx2 optimization requirement check
1847 #pragma GCC push_options
1848 #pragma GCC target("avx2")
1850 #include <immintrin.h>
1851 static int bar(void *a) {
1852 __m256i x = *(__m256i *)a;
1853 return _mm256_testz_si256(x, x);
1855 int main(int argc, char *argv[]) { return bar(argv[0]); }
1857 if compile_object
"" ; then
1861 ##########################################
1864 if test "$lzo" != "no" ; then
1866 #include <lzo/lzo1x.h>
1867 int main(void) { lzo_version(); return 0; }
1869 if compile_prog
"" "-llzo2" ; then
1870 libs_softmmu
="$libs_softmmu -llzo2"
1873 if test "$lzo" = "yes"; then
1874 feature_not_found
"liblzo2" "Install liblzo2 devel"
1880 ##########################################
1883 if test "$snappy" != "no" ; then
1885 #include <snappy-c.h>
1886 int main(void) { snappy_max_compressed_length(4096); return 0; }
1888 if compile_prog
"" "-lsnappy" ; then
1889 libs_softmmu
="$libs_softmmu -lsnappy"
1892 if test "$snappy" = "yes"; then
1893 feature_not_found
"libsnappy" "Install libsnappy devel"
1899 ##########################################
1902 if test "$bzip2" != "no" ; then
1905 int main(void) { BZ2_bzlibVersion(); return 0; }
1907 if compile_prog
"" "-lbz2" ; then
1910 if test "$bzip2" = "yes"; then
1911 feature_not_found
"libbzip2" "Install libbzip2 devel"
1917 ##########################################
1920 if test "$seccomp" != "no" ; then
1923 libseccomp_minver
="2.1.0"
1926 libseccomp_minver
="2.2.0"
1929 libseccomp_minver
="2.2.3"
1932 libseccomp_minver
="2.3.0"
1935 libseccomp_minver
=""
1939 if test "$libseccomp_minver" != "" &&
1940 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
1941 libs_softmmu
="$libs_softmmu $($pkg_config --libs libseccomp)"
1942 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
1945 if test "$seccomp" = "yes" ; then
1946 if test "$libseccomp_minver" != "" ; then
1947 feature_not_found
"libseccomp" \
1948 "Install libseccomp devel >= $libseccomp_minver"
1950 feature_not_found
"libseccomp" \
1951 "libseccomp is not supported for host cpu $cpu"
1957 ##########################################
1960 if test "$xen" != "no" ; then
1961 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1962 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
1964 # First we test whether Xen headers and libraries are available.
1965 # If no, we are done and there is no Xen support.
1966 # If yes, more tests are run to detect the Xen version.
1970 #include <xenctrl.h>
1975 if ! compile_prog
"" "$xen_libs" ; then
1977 if test "$xen" = "yes" ; then
1978 feature_not_found
"xen" "Install xen devel"
1984 cat > $TMPC <<EOF &&
1986 * If we have stable libs the we don't want the libxc compat
1987 * layers, regardless of what CFLAGS we may have been given.
1989 * Also, check if xengnttab_grant_copy_segment_t is defined and
1990 * grant copy operation is implemented.
1992 #undef XC_WANT_COMPAT_EVTCHN_API
1993 #undef XC_WANT_COMPAT_GNTTAB_API
1994 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
1995 #include <xenctrl.h>
1996 #include <xenstore.h>
1997 #include <xenevtchn.h>
1998 #include <xengnttab.h>
1999 #include <xenforeignmemory.h>
2001 #include <xen/hvm/hvm_info_table.h>
2002 #if !defined(HVM_MAX_VCPUS)
2003 # error HVM_MAX_VCPUS not defined
2006 xc_interface *xc = NULL;
2007 xenforeignmemory_handle *xfmem;
2008 xenevtchn_handle *xe;
2009 xengnttab_handle *xg;
2010 xen_domain_handle_t handle;
2011 xengnttab_grant_copy_segment_t* seg = NULL;
2015 xc = xc_interface_open(0, 0, 0);
2016 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2017 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2018 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2019 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2020 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2022 xfmem = xenforeignmemory_open(0, 0);
2023 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2025 xe = xenevtchn_open(0, 0);
2028 xg = xengnttab_open(0, 0);
2029 xengnttab_grant_copy(xg, 0, seg);
2034 compile_prog
"" "$xen_libs $xen_stable_libs"
2036 xen_ctrl_version
=480
2039 cat > $TMPC <<EOF &&
2041 * If we have stable libs the we don't want the libxc compat
2042 * layers, regardless of what CFLAGS we may have been given.
2044 #undef XC_WANT_COMPAT_EVTCHN_API
2045 #undef XC_WANT_COMPAT_GNTTAB_API
2046 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2047 #include <xenctrl.h>
2048 #include <xenstore.h>
2049 #include <xenevtchn.h>
2050 #include <xengnttab.h>
2051 #include <xenforeignmemory.h>
2053 #include <xen/hvm/hvm_info_table.h>
2054 #if !defined(HVM_MAX_VCPUS)
2055 # error HVM_MAX_VCPUS not defined
2058 xc_interface *xc = NULL;
2059 xenforeignmemory_handle *xfmem;
2060 xenevtchn_handle *xe;
2061 xengnttab_handle *xg;
2062 xen_domain_handle_t handle;
2066 xc = xc_interface_open(0, 0, 0);
2067 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2068 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2069 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2070 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2071 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2073 xfmem = xenforeignmemory_open(0, 0);
2074 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2076 xe = xenevtchn_open(0, 0);
2079 xg = xengnttab_open(0, 0);
2080 xengnttab_map_grant_ref(xg, 0, 0, 0);
2085 compile_prog
"" "$xen_libs $xen_stable_libs"
2087 xen_ctrl_version
=471
2090 cat > $TMPC <<EOF &&
2091 #include <xenctrl.h>
2094 xc_interface *xc = NULL;
2095 xen_domain_handle_t handle;
2096 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2100 compile_prog
"" "$xen_libs"
2102 xen_ctrl_version
=470
2107 cat > $TMPC <<EOF &&
2108 #include <xenctrl.h>
2109 #include <xenstore.h>
2111 #include <xen/hvm/hvm_info_table.h>
2112 #if !defined(HVM_MAX_VCPUS)
2113 # error HVM_MAX_VCPUS not defined
2118 xc = xc_interface_open(0, 0, 0);
2119 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2120 xc_gnttab_open(NULL, 0);
2121 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2122 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2123 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2124 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2128 compile_prog
"" "$xen_libs"
2130 xen_ctrl_version
=460
2135 cat > $TMPC <<EOF &&
2136 #include <xenctrl.h>
2137 #include <xenstore.h>
2139 #include <xen/hvm/hvm_info_table.h>
2140 #if !defined(HVM_MAX_VCPUS)
2141 # error HVM_MAX_VCPUS not defined
2146 xc = xc_interface_open(0, 0, 0);
2147 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2148 xc_gnttab_open(NULL, 0);
2149 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2150 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2151 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2155 compile_prog
"" "$xen_libs"
2157 xen_ctrl_version
=450
2161 cat > $TMPC <<EOF &&
2162 #include <xenctrl.h>
2163 #include <xenstore.h>
2165 #include <xen/hvm/hvm_info_table.h>
2166 #if !defined(HVM_MAX_VCPUS)
2167 # error HVM_MAX_VCPUS not defined
2172 xc = xc_interface_open(0, 0, 0);
2173 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2174 xc_gnttab_open(NULL, 0);
2175 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2176 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2180 compile_prog
"" "$xen_libs"
2182 xen_ctrl_version
=420
2186 if test "$xen" = "yes" ; then
2187 feature_not_found
"xen (unsupported version)" \
2188 "Install a supported xen (xen 4.2 or newer)"
2193 if test "$xen" = yes; then
2194 if test $xen_ctrl_version -ge 471 ; then
2195 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2197 libs_softmmu
="$xen_libs $libs_softmmu"
2201 if test "$xen_pci_passthrough" != "no"; then
2202 if test "$xen" = "yes" && test "$linux" = "yes"; then
2203 xen_pci_passthrough
=yes
2205 if test "$xen_pci_passthrough" = "yes"; then
2206 error_exit
"User requested feature Xen PCI Passthrough" \
2207 " but this feature requires /sys from Linux"
2209 xen_pci_passthrough
=no
2213 if test "$xen_pv_domain_build" = "yes" &&
2214 test "$xen" != "yes"; then
2215 error_exit
"User requested Xen PV domain builder support" \
2216 "which requires Xen support."
2219 ##########################################
2221 if test "$sparse" != "no" ; then
2225 if test "$sparse" = "yes" ; then
2226 feature_not_found
"sparse" "Install sparse binary"
2232 ##########################################
2236 if $pkg_config --exists "x11"; then
2237 x11_cflags
=$
($pkg_config --cflags x11
)
2238 x11_libs
=$
($pkg_config --libs x11
)
2241 ##########################################
2244 if test "$gtkabi" = ""; then
2245 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2246 # Use 3.0 as a fallback if that is available.
2247 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2249 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2256 if test "$gtk" != "no"; then
2257 gtkpackage
="gtk+-$gtkabi"
2258 gtkx11package
="gtk+-x11-$gtkabi"
2259 if test "$gtkabi" = "3.0" ; then
2264 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2265 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2266 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2267 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2268 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2269 gtk_cflags
="$gtk_cflags $x11_cflags"
2270 gtk_libs
="$gtk_libs $x11_libs"
2272 libs_softmmu
="$gtk_libs $libs_softmmu"
2274 elif test "$gtk" = "yes"; then
2275 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2282 ##########################################
2286 # Unfortunately some distros have bad pkg-config information for gnutls
2287 # such that it claims to exist but you get a compiler error if you try
2288 # to use the options returned by --libs. Specifically, Ubuntu for --static
2289 # builds doesn't work:
2290 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2292 # So sanity check the cflags/libs before assuming gnutls can be used.
2293 if ! $pkg_config --exists "gnutls"; then
2298 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2303 if test "$gnutls" != "no"; then
2304 if gnutls_works
; then
2305 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2306 gnutls_libs
=$
($pkg_config --libs gnutls
)
2307 libs_softmmu
="$gnutls_libs $libs_softmmu"
2308 libs_tools
="$gnutls_libs $libs_tools"
2309 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2312 # gnutls_rnd requires >= 2.11.0
2313 if $pkg_config --exists "gnutls >= 2.11.0"; then
2319 if $pkg_config --exists 'gnutls >= 3.0'; then
2322 elif $pkg_config --exists 'gnutls >= 2.12'; then
2323 case $
($pkg_config --libs --static gnutls
) in
2341 elif test "$gnutls" = "yes"; then
2342 feature_not_found
"gnutls" "Install gnutls devel"
2352 # If user didn't give a --disable/enable-gcrypt flag,
2353 # then mark as disabled if user requested nettle
2354 # explicitly, or if gnutls links to nettle
2355 if test -z "$gcrypt"
2357 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2363 # If user didn't give a --disable/enable-nettle flag,
2364 # then mark as disabled if user requested gcrypt
2365 # explicitly, or if gnutls links to gcrypt
2366 if test -z "$nettle"
2368 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2374 has_libgcrypt_config
() {
2375 if ! has
"libgcrypt-config"
2380 if test -n "$cross_prefix"
2382 host=$
(libgcrypt-config
--host)
2383 if test "$host-" != $cross_prefix
2392 if test "$gcrypt" != "no"; then
2393 if has_libgcrypt_config
; then
2394 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2395 gcrypt_libs
=$
(libgcrypt-config
--libs)
2396 # Debian has remove -lgpg-error from libgcrypt-config
2397 # as it "spreads unnecessary dependencies" which in
2398 # turn breaks static builds...
2399 if test "$static" = "yes"
2401 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2403 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2404 libs_tools
="$gcrypt_libs $libs_tools"
2405 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2407 if test -z "$nettle"; then
2414 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2416 NULL, 0, 0, 0, NULL);
2420 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2424 if test "$gcrypt" = "yes"; then
2425 feature_not_found
"gcrypt" "Install gcrypt devel"
2433 if test "$nettle" != "no"; then
2434 if $pkg_config --exists "nettle"; then
2435 nettle_cflags
=$
($pkg_config --cflags nettle
)
2436 nettle_libs
=$
($pkg_config --libs nettle
)
2437 nettle_version
=$
($pkg_config --modversion nettle
)
2438 libs_softmmu
="$nettle_libs $libs_softmmu"
2439 libs_tools
="$nettle_libs $libs_tools"
2440 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2445 #include <nettle/pbkdf2.h>
2447 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2451 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2455 if test "$nettle" = "yes"; then
2456 feature_not_found
"nettle" "Install nettle devel"
2463 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2465 error_exit
"Only one of gcrypt & nettle can be enabled"
2468 ##########################################
2469 # libtasn1 - only for the TLS creds/session test suite
2474 if $pkg_config --exists "libtasn1"; then
2475 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2476 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2482 ##########################################
2483 # getifaddrs (for tests/test-io-channel-socket )
2486 if ! check_include
"ifaddrs.h" ; then
2490 ##########################################
2493 if test "$vte" != "no"; then
2494 if test "$gtkabi" = "3.0"; then
2495 vteminversion
="0.32.0"
2496 if $pkg_config --exists "vte-2.91"; then
2497 vtepackage
="vte-2.91"
2499 vtepackage
="vte-2.90"
2503 vteminversion
="0.24.0"
2505 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2506 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2507 vte_libs
=$
($pkg_config --libs $vtepackage)
2508 vteversion
=$
($pkg_config --modversion $vtepackage)
2509 libs_softmmu
="$vte_libs $libs_softmmu"
2511 elif test "$vte" = "yes"; then
2512 if test "$gtkabi" = "3.0"; then
2513 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2515 feature_not_found
"vte" "Install libvte devel"
2522 ##########################################
2525 # Look for sdl configuration program (pkg-config or sdl-config). Try
2526 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2528 if test "$sdlabi" = ""; then
2529 if $pkg_config --exists "sdl"; then
2531 elif $pkg_config --exists "sdl2"; then
2538 if test $sdlabi = "2.0"; then
2539 sdl_config
=$sdl2_config
2541 sdlconfigname
=sdl2_config
2542 elif test $sdlabi = "1.2"; then
2544 sdlconfigname
=sdl_config
2546 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2549 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2550 sdl_config
=$sdlconfigname
2553 if $pkg_config $sdlname --exists; then
2554 sdlconfig
="$pkg_config $sdlname"
2555 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2556 elif has
${sdl_config}; then
2557 sdlconfig
="$sdl_config"
2558 sdlversion
=$
($sdlconfig --version)
2560 if test "$sdl" = "yes" ; then
2561 feature_not_found
"sdl" "Install SDL devel"
2565 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2566 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2570 if test "$sdl" != "no" ; then
2573 #undef main /* We don't want SDL to override our main() */
2574 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2576 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2577 if test "$static" = "yes" ; then
2578 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2580 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2582 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2583 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2589 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2590 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2591 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2592 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2593 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2595 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2601 else # sdl not found
2602 if test "$sdl" = "yes" ; then
2603 feature_not_found
"sdl" "Install SDL devel"
2606 fi # sdl compile test
2609 if test "$sdl" = "yes" ; then
2612 #if defined(SDL_VIDEO_DRIVER_X11)
2613 #include <X11/XKBlib.h>
2615 #error No x11 support
2617 int main(void) { return 0; }
2619 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2620 sdl_cflags
="$sdl_cflags $x11_cflags"
2621 sdl_libs
="$sdl_libs $x11_libs"
2623 libs_softmmu
="$sdl_libs $libs_softmmu"
2626 ##########################################
2627 # RDMA needs OpenFabrics libraries
2628 if test "$rdma" != "no" ; then
2630 #include <rdma/rdma_cma.h>
2631 int main(void) { return 0; }
2633 rdma_libs
="-lrdmacm -libverbs"
2634 if compile_prog
"" "$rdma_libs" ; then
2636 libs_softmmu
="$libs_softmmu $rdma_libs"
2638 if test "$rdma" = "yes" ; then
2640 " OpenFabrics librdmacm/libibverbs not present." \
2642 " (1) Fast: Install infiniband packages from your distro." \
2643 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2644 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2650 ##########################################
2651 # VNC SASL detection
2652 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2654 #include <sasl/sasl.h>
2656 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2658 # Assuming Cyrus-SASL installed in /usr prefix
2660 vnc_sasl_libs
="-lsasl2"
2661 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2663 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2664 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2666 if test "$vnc_sasl" = "yes" ; then
2667 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2673 ##########################################
2674 # VNC JPEG detection
2675 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2676 if $pkg_config --exists libjpeg
; then
2678 libs_softmmu
="$libs_softmmu $($pkg_config --libs libjpeg)"
2679 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libjpeg)"
2683 #include <jpeglib.h>
2684 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2687 vnc_jpeg_libs
="-ljpeg"
2688 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2690 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2691 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2693 if test "$vnc_jpeg" = "yes" ; then
2694 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2701 ##########################################
2703 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2705 //#include <stdio.h>
2709 png_structp png_ptr;
2710 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2711 return png_ptr != 0;
2714 if $pkg_config libpng
--exists; then
2715 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2716 vnc_png_libs
=$
($pkg_config libpng
--libs)
2719 vnc_png_libs
="-lpng"
2721 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2723 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2724 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2726 if test "$vnc_png" = "yes" ; then
2727 feature_not_found
"vnc-png" "Install libpng devel"
2733 ##########################################
2734 # fnmatch() probe, used for ACL routines
2737 #include <fnmatch.h>
2740 fnmatch("foo", "foo", 0);
2744 if compile_prog
"" "" ; then
2748 ##########################################
2749 # xfsctl() probe, used for raw-posix
2750 if test "$xfs" != "no" ; then
2752 #include <stddef.h> /* NULL */
2753 #include <xfs/xfs.h>
2756 xfsctl(NULL, 0, 0, NULL);
2760 if compile_prog
"" "" ; then
2763 if test "$xfs" = "yes" ; then
2764 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2770 ##########################################
2771 # vde libraries probe
2772 if test "$vde" != "no" ; then
2773 vde_libs
="-lvdeplug"
2776 #include <libvdeplug.h>
2779 struct vde_open_args a = {0, 0, 0};
2785 if compile_prog
"" "$vde_libs" ; then
2787 libs_softmmu
="$vde_libs $libs_softmmu"
2788 libs_tools
="$vde_libs $libs_tools"
2790 if test "$vde" = "yes" ; then
2791 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2797 ##########################################
2798 # netmap support probe
2799 # Apart from looking for netmap headers, we make sure that the host API version
2800 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2801 # a minor/major version number. Minor new features will be marked with values up
2802 # to 15, and if something happens that requires a change to the backend we will
2803 # move above 15, submit the backend fixes and modify this two bounds.
2804 if test "$netmap" != "no" ; then
2806 #include <inttypes.h>
2808 #include <net/netmap.h>
2809 #include <net/netmap_user.h>
2810 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2813 int main(void) { return 0; }
2815 if compile_prog
"" "" ; then
2818 if test "$netmap" = "yes" ; then
2819 feature_not_found
"netmap"
2825 ##########################################
2826 # libcap-ng library probe
2827 if test "$cap_ng" != "no" ; then
2833 capng_capability_to_name(CAPNG_EFFECTIVE);
2837 if compile_prog
"" "$cap_libs" ; then
2839 libs_tools
="$cap_libs $libs_tools"
2841 if test "$cap_ng" = "yes" ; then
2842 feature_not_found
"cap_ng" "Install libcap-ng devel"
2848 ##########################################
2849 # Sound support libraries probe
2860 int main(void) { $exp }
2862 if compile_prog
"$cfl" "$lib" ; then
2865 error_exit
"$drv check failed" \
2866 "Make sure to have the $drv libs and headers installed."
2870 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
2871 for drv
in $audio_drv_list; do
2874 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2875 "return snd_pcm_close((snd_pcm_t *)0);"
2876 libs_softmmu
="-lasound $libs_softmmu"
2880 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
2881 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
2882 libs_softmmu
="-lpulse $libs_softmmu"
2887 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2891 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2896 libs_softmmu
="$oss_lib $libs_softmmu"
2900 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2904 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2905 error_exit
"Unknown driver '$drv' selected" \
2906 "Possible drivers are: $audio_possible_drivers"
2912 ##########################################
2915 if test "$brlapi" != "no" ; then
2916 brlapi_libs
="-lbrlapi"
2920 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2922 if compile_prog
"" "$brlapi_libs" ; then
2924 libs_softmmu
="$brlapi_libs $libs_softmmu"
2926 if test "$brlapi" = "yes" ; then
2927 feature_not_found
"brlapi" "Install brlapi devel"
2933 ##########################################
2935 if test "$curses" != "no" ; then
2937 if $pkg_config --exists ncurses
; then
2939 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags ncurses)"
2940 libs_softmmu
="$libs_softmmu $($pkg_config --libs ncurses)"
2942 if test "$mingw32" = "yes" ; then
2943 curses_list
="-lpdcurses"
2945 curses_list
="-lncurses:-lcurses"
2950 const char *s = curses_version();
2956 for curses_lib
in $curses_list; do
2958 if compile_prog
"" "$curses_lib" ; then
2960 libs_softmmu
="$curses_lib $libs_softmmu"
2966 if test "$curses_found" = "yes" ; then
2969 if test "$curses" = "yes" ; then
2970 feature_not_found
"curses" "Install ncurses devel"
2976 ##########################################
2978 if test "$curl" != "no" ; then
2979 if $pkg_config libcurl
--exists; then
2980 curlconfig
="$pkg_config libcurl"
2982 curlconfig
=curl-config
2985 #include <curl/curl.h>
2986 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2988 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
2989 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
2990 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2993 if test "$curl" = "yes" ; then
2994 feature_not_found
"curl" "Install libcurl devel"
3000 ##########################################
3001 # bluez support probe
3002 if test "$bluez" != "no" ; then
3004 #include <bluetooth/bluetooth.h>
3005 int main(void) { return bt_error(0); }
3007 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3008 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3009 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3011 libs_softmmu
="$bluez_libs $libs_softmmu"
3013 if test "$bluez" = "yes" ; then
3014 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3020 ##########################################
3021 # glib support probe
3024 glib_modules
=gthread-2.0
3025 if test "$modules" = yes; then
3026 glib_modules
="$glib_modules gmodule-2.0"
3029 for i
in $glib_modules; do
3030 if $pkg_config --atleast-version=$glib_req_ver $i; then
3031 glib_cflags
=$
($pkg_config --cflags $i)
3032 glib_libs
=$
($pkg_config --libs $i)
3033 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3034 LIBS
="$glib_libs $LIBS"
3035 libs_qga
="$glib_libs $libs_qga"
3037 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3041 # Sanity check that the current size_t matches the
3042 # size that glib thinks it should be. This catches
3043 # problems on multi-arch where people try to build
3044 # 32-bit QEMU while pointing at 64-bit glib headers
3049 #define QEMU_BUILD_BUG_ON(x) \
3050 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3053 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3058 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3059 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3060 "You probably need to set PKG_CONFIG_LIBDIR"\
3061 "to point to the right pkg-config files for your"\
3065 # g_test_trap_subprocess added in 2.38. Used by some tests.
3067 if test "$mingw32" = "yes" ||
! $pkg_config --atleast-version=2.38 glib-2.0
; then
3071 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3074 int main(void) { return 0; }
3076 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3077 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3078 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3079 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3083 #########################################
3086 if test "$zlib" != "no" ; then
3087 if $pkg_config --exists zlib
; then
3088 zlib_cflags
=$
($pkg_config --cflags zlib
)
3089 zlib_libs
=$
($pkg_config --libs zlib
)
3090 QEMU_CFLAGS
="$zlib_cflags $QEMU_CFLAGS"
3091 LIBS
="$zlib_libs $LIBS"
3095 int main(void) { zlibVersion(); return 0; }
3097 if compile_prog
"" "-lz" ; then
3100 error_exit
"zlib check failed" \
3101 "Make sure to have the zlib libs and headers installed."
3106 ##########################################
3107 # SHA command probe for modules
3108 if test "$modules" = yes; then
3109 shacmd_probe
="sha1sum sha1 shasum"
3110 for c
in $shacmd_probe; do
3116 if test "$shacmd" = ""; then
3117 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3121 ##########################################
3122 # pixman support probe
3124 if test "$pixman" = ""; then
3125 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3127 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3133 if test "$pixman" = "none"; then
3134 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3135 error_exit
"pixman disabled but system emulation or tools build" \
3136 "enabled. You can turn off pixman only if you also" \
3137 "disable all system emulation targets and the tools" \
3138 "build with '--disable-tools --disable-system'."
3142 elif test "$pixman" = "system"; then
3143 # pixman version has been checked above
3144 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3145 pixman_libs
=$
($pkg_config --libs pixman-1
)
3147 if test ! -d ${source_path}/pixman
/pixman
; then
3148 error_exit
"pixman >= 0.21.8 not present. Your options:" \
3149 " (1) Preferred: Install the pixman devel package (any recent" \
3150 " distro should have packages as Xorg needs pixman too)." \
3151 " (2) Fetch the pixman submodule, using:" \
3152 " git submodule update --init pixman"
3154 mkdir
-p pixman
/pixman
3155 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3156 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3159 ##########################################
3162 if test "$cap" != "no" ; then
3165 #include <sys/capability.h>
3166 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3168 if compile_prog
"" "-lcap" ; then
3175 ##########################################
3177 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3181 #include <pthread.h>
3182 static void *f(void *p) { return NULL; }
3185 pthread_create(&thread, 0, f, 0);
3189 if compile_prog
"" "" ; then
3192 for pthread_lib
in $PTHREADLIBS_LIST; do
3193 if compile_prog
"" "$pthread_lib" ; then
3196 for lib_entry
in $LIBS; do
3197 if test "$lib_entry" = "$pthread_lib"; then
3202 if test "$found" = "no"; then
3203 LIBS
="$pthread_lib $LIBS"
3205 PTHREAD_LIB
="$pthread_lib"
3211 if test "$mingw32" != yes -a "$pthread" = no
; then
3212 error_exit
"pthread check failed" \
3213 "Make sure to have the pthread libs and headers installed."
3216 # check for pthread_setname_np
3217 pthread_setname_np
=no
3219 #include <pthread.h>
3221 static void *f(void *p) { return NULL; }
3225 pthread_create(&thread, 0, f, 0);
3226 pthread_setname_np(thread, "QEMU");
3230 if compile_prog
"" "$pthread_lib" ; then
3231 pthread_setname_np
=yes
3234 ##########################################
3236 if test "$rbd" != "no" ; then
3239 #include <rbd/librbd.h>
3242 rados_create(&cluster, NULL);
3246 rbd_libs
="-lrbd -lrados"
3247 if compile_prog
"" "$rbd_libs" ; then
3250 if test "$rbd" = "yes" ; then
3251 feature_not_found
"rados block device" "Install librbd/ceph devel"
3257 ##########################################
3259 min_libssh2_version
=1.2.8
3260 if test "$libssh2" != "no" ; then
3261 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3262 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3263 libssh2_libs
=$
($pkg_config libssh2
--libs)
3266 if test "$libssh2" = "yes" ; then
3267 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3273 ##########################################
3274 # libssh2_sftp_fsync probe
3276 if test "$libssh2" = "yes"; then
3279 #include <libssh2.h>
3280 #include <libssh2_sftp.h>
3282 LIBSSH2_SESSION *session;
3284 LIBSSH2_SFTP_HANDLE *sftp_handle;
3285 session = libssh2_session_init ();
3286 sftp = libssh2_sftp_init (session);
3287 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3288 libssh2_sftp_fsync (sftp_handle);
3292 # libssh2_cflags/libssh2_libs defined in previous test.
3293 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3294 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3298 ##########################################
3301 if test "$linux_aio" != "no" ; then
3304 #include <sys/eventfd.h>
3306 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3308 if compile_prog
"" "-laio" ; then
3311 if test "$linux_aio" = "yes" ; then
3312 feature_not_found
"linux AIO" "Install libaio devel"
3318 ##########################################
3319 # TPM passthrough is only on x86 Linux
3321 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3322 tpm_passthrough
=$tpm
3327 ##########################################
3330 if test "$attr" != "no" ; then
3333 #include <sys/types.h>
3334 #ifdef CONFIG_LIBATTR
3335 #include <attr/xattr.h>
3337 #include <sys/xattr.h>
3339 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3341 if compile_prog
"" "" ; then
3343 # Older distros have <attr/xattr.h>, and need -lattr:
3344 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3349 if test "$attr" = "yes" ; then
3350 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3356 ##########################################
3359 #include <sys/types.h>
3360 #include <sys/uio.h>
3362 int main(void) { return sizeof(struct iovec); }
3365 if compile_prog
"" "" ; then
3369 ##########################################
3372 #include <sys/types.h>
3373 #include <sys/uio.h>
3375 int main(void) { return preadv(0, 0, 0, 0); }
3378 if compile_prog
"" "" ; then
3382 ##########################################
3384 # fdt support is mandatory for at least some target architectures,
3385 # so insist on it if we're building those system emulators.
3387 for target
in $target_list; do
3389 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3395 if test "$fdt_required" = "yes"; then
3396 if test "$fdt" = "no"; then
3397 error_exit
"fdt disabled but some requested targets require it." \
3398 "You can turn off fdt only if you also disable all the system emulation" \
3399 "targets which need it (by specifying a cut down --target-list)."
3404 if test "$fdt" != "no" ; then
3406 # explicitly check for libfdt_env.h as it is missing in some stable installs
3407 # and test for required functions to make sure we are on a version >= 1.4.0
3410 #include <libfdt_env.h>
3411 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3413 if compile_prog
"" "$fdt_libs" ; then
3414 # system DTC is good - use it
3416 elif test -d ${source_path}/dtc
/libfdt
; then
3417 # have submodule DTC - use it
3421 if [ "$pwd_is_source_path" != "y" ] ; then
3422 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3423 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3425 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3426 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3427 elif test "$fdt" = "yes" ; then
3428 # have neither and want - prompt for system/submodule install
3429 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3430 " (1) Preferred: Install the DTC (libfdt) devel package" \
3431 " (2) Fetch the DTC submodule, using:" \
3432 " git submodule update --init dtc"
3434 # don't have and don't want
3440 libs_softmmu
="$libs_softmmu $fdt_libs"
3442 ##########################################
3443 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3445 if test "$opengl" != "no" ; then
3446 opengl_pkgs
="epoxy libdrm gbm"
3447 if $pkg_config $opengl_pkgs x11
; then
3448 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3449 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3451 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3455 if test "$opengl" = "yes" ; then
3456 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3464 if test "$opengl" = "yes"; then
3466 #include <epoxy/egl.h>
3467 #ifndef EGL_MESA_image_dma_buf_export
3468 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3470 int main(void) { return 0; }
3472 if compile_prog
"" "" ; then
3477 ##########################################
3479 if test "$archipelago" != "no" ; then
3482 #include <xseg/xseg.h>
3483 #include <xseg/protocol.h>
3489 archipelago_libs
=-lxseg
3490 if compile_prog
"" "$archipelago_libs"; then
3492 libs_tools
="$archipelago_libs $libs_tools"
3493 libs_softmmu
="$archipelago_libs $libs_softmmu"
3495 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3496 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3497 echo "license and therefore prevent redistribution."
3499 echo "To disable Archipelago, use --disable-archipelago"
3501 if test "$archipelago" = "yes" ; then
3502 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3509 ##########################################
3511 if test "$glusterfs" != "no" ; then
3512 if $pkg_config --atleast-version=3 glusterfs-api
; then
3514 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3515 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3516 if $pkg_config --atleast-version=4 glusterfs-api
; then
3517 glusterfs_xlator_opt
="yes"
3519 if $pkg_config --atleast-version=5 glusterfs-api
; then
3520 glusterfs_discard
="yes"
3522 if $pkg_config --atleast-version=6 glusterfs-api
; then
3523 glusterfs_zerofill
="yes"
3526 if test "$glusterfs" = "yes" ; then
3527 feature_not_found
"GlusterFS backend support" \
3528 "Install glusterfs-api devel >= 3"
3534 # Check for inotify functions when we are building linux-user
3535 # emulator. This is done because older glibc versions don't
3536 # have syscall stubs for these implemented. In that case we
3537 # don't provide them even if kernel supports them.
3541 #include <sys/inotify.h>
3546 /* try to start inotify */
3547 return inotify_init();
3550 if compile_prog
"" "" ; then
3556 #include <sys/inotify.h>
3561 /* try to start inotify */
3562 return inotify_init1(0);
3565 if compile_prog
"" "" ; then
3569 # check if utimensat and futimens are supported
3572 #define _ATFILE_SOURCE
3575 #include <sys/stat.h>
3579 utimensat(AT_FDCWD, "foo", NULL, 0);
3584 if compile_prog
"" "" ; then
3588 # check if pipe2 is there
3597 return pipe2(pipefd, O_CLOEXEC);
3600 if compile_prog
"" "" ; then
3604 # check if accept4 is there
3607 #include <sys/socket.h>
3612 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3616 if compile_prog
"" "" ; then
3620 # check if tee/splice is there. vmsplice was added same time.
3630 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3631 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3635 if compile_prog
"" "" ; then
3639 ##########################################
3642 if test "$numa" != "no" ; then
3645 int main(void) { return numa_available(); }
3648 if compile_prog
"" "-lnuma" ; then
3650 libs_softmmu
="-lnuma $libs_softmmu"
3652 if test "$numa" = "yes" ; then
3653 feature_not_found
"numa" "install numactl devel"
3659 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3660 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3664 ##########################################
3667 if test "$tcmalloc" = "yes" ; then
3670 int main(void) { malloc(1); return 0; }
3673 if compile_prog
"" "-ltcmalloc" ; then
3674 LIBS
="-ltcmalloc $LIBS"
3676 feature_not_found
"tcmalloc" "install gperftools devel"
3680 ##########################################
3683 if test "$jemalloc" = "yes" ; then
3686 int main(void) { malloc(1); return 0; }
3689 if compile_prog
"" "-ljemalloc" ; then
3690 LIBS
="-ljemalloc $LIBS"
3692 feature_not_found
"jemalloc" "install jemalloc devel"
3696 ##########################################
3701 #include <sys/syscall.h>
3703 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3706 if compile_prog
"" "" ; then
3710 # check if eventfd is supported
3713 #include <sys/eventfd.h>
3717 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3720 if compile_prog
"" "" ; then
3724 # check if memfd is supported
3727 #include <sys/memfd.h>
3731 return memfd_create("foo", MFD_ALLOW_SEALING);
3734 if compile_prog
"" "" ; then
3740 # check for fallocate
3747 fallocate(0, 0, 0, 0);
3751 if compile_prog
"" "" ; then
3755 # check for fallocate hole punching
3756 fallocate_punch_hole
=no
3759 #include <linux/falloc.h>
3763 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3767 if compile_prog
"" "" ; then
3768 fallocate_punch_hole
=yes
3771 # check that fallocate supports range zeroing inside the file
3772 fallocate_zero_range
=no
3775 #include <linux/falloc.h>
3779 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3783 if compile_prog
"" "" ; then
3784 fallocate_zero_range
=yes
3787 # check for posix_fallocate
3794 posix_fallocate(0, 0, 0);
3798 if compile_prog
"" "" ; then
3802 # check for sync_file_range
3809 sync_file_range(0, 0, 0, 0);
3813 if compile_prog
"" "" ; then
3817 # check for linux/fiemap.h and FS_IOC_FIEMAP
3820 #include <sys/ioctl.h>
3821 #include <linux/fs.h>
3822 #include <linux/fiemap.h>
3826 ioctl(0, FS_IOC_FIEMAP, 0);
3830 if compile_prog
"" "" ; then
3845 if compile_prog
"" "" ; then
3849 # check for ppoll support
3856 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3857 ppoll(&pfd, 1, 0, 0);
3861 if compile_prog
"" "" ; then
3865 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3866 prctl_pr_set_timerslack
=no
3868 #include <sys/prctl.h>
3872 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3876 if compile_prog
"" "" ; then
3877 prctl_pr_set_timerslack
=yes
3880 # check for epoll support
3883 #include <sys/epoll.h>
3891 if compile_prog
"" "" ; then
3895 # epoll_create1 is a later addition
3896 # so we must check separately for its presence
3899 #include <sys/epoll.h>
3903 /* Note that we use epoll_create1 as a value, not as
3904 * a function being called. This is necessary so that on
3905 * old SPARC glibc versions where the function was present in
3906 * the library but not declared in the header file we will
3907 * fail the configure check. (Otherwise we will get a compiler
3908 * warning but not an error, and will proceed to fail the
3909 * qemu compile where we compile with -Werror.)
3911 return (int)(uintptr_t)&epoll_create1;
3914 if compile_prog
"" "" ; then
3918 # check for sendfile support
3921 #include <sys/sendfile.h>
3925 return sendfile(0, 0, 0, 0);
3928 if compile_prog
"" "" ; then
3932 # check for timerfd support (glibc 2.8 and newer)
3935 #include <sys/timerfd.h>
3939 return(timerfd_create(CLOCK_REALTIME, 0));
3942 if compile_prog
"" "" ; then
3946 # check for setns and unshare support
3959 if compile_prog
"" "" ; then
3963 # Check if tools are available to build documentation.
3964 if test "$docs" != "no" ; then
3965 if has makeinfo
&& has pod2man
; then
3968 if test "$docs" = "yes" ; then
3969 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3975 if test "$want_tools" = ""; then
3976 if test $
(expr "$target_list" : ".*softmmu.*") != 0; then
3983 # Search for bswap_32 function
3986 #include <byteswap.h>
3987 int main(void) { return bswap_32(0); }
3989 if compile_prog
"" "" ; then
3993 # Search for bswap32 function
3996 #include <sys/endian.h>
3997 #include <sys/types.h>
3998 #include <machine/bswap.h>
3999 int main(void) { return bswap32(0); }
4001 if compile_prog
"" "" ; then
4005 ##########################################
4006 # Do we have libiscsi >= 1.9.0
4007 if test "$libiscsi" != "no" ; then
4008 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4010 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4011 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4013 if test "$libiscsi" = "yes" ; then
4014 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4020 ##########################################
4024 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4026 if compile_prog
"" "" ; then
4028 elif compile_prog
"" "-lm" ; then
4030 libs_qga
="-lm $libs_qga"
4032 error_exit
"libm check failed"
4035 ##########################################
4037 # uClibc provides 2 versions of clock_gettime(), one with realtime
4038 # support and one without. This means that the clock_gettime() don't
4039 # need -lrt. We still need it for timer_create() so we check for this
4040 # function in addition.
4045 timer_create(CLOCK_REALTIME, NULL, NULL);
4046 return clock_gettime(CLOCK_REALTIME, NULL);
4050 if compile_prog
"" "" ; then
4052 # we need pthread for static linking. use previous pthread test result
4053 elif compile_prog
"" "$pthread_lib -lrt" ; then
4055 libs_qga
="$libs_qga -lrt"
4058 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4059 "$aix" != "yes" -a "$haiku" != "yes" ; then
4060 libs_softmmu
="-lutil $libs_softmmu"
4063 ##########################################
4065 if test "$spice" != "no" ; then
4068 int main(void) { spice_server_new(); return 0; }
4070 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4071 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4072 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4073 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4074 compile_prog
"$spice_cflags" "$spice_libs" ; then
4076 libs_softmmu
="$libs_softmmu $spice_libs"
4077 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4078 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4079 spice_server_version
=$
($pkg_config --modversion spice-server
)
4081 if test "$spice" = "yes" ; then
4082 feature_not_found
"spice" \
4083 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4089 # check for smartcard support
4091 if test "$smartcard" != "no"; then
4092 if $pkg_config libcacard
; then
4093 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4094 libcacard_libs
=$
($pkg_config --libs libcacard
)
4095 QEMU_CFLAGS
="$QEMU_CFLAGS $libcacard_cflags"
4096 libs_softmmu
="$libs_softmmu $libcacard_libs"
4099 if test "$smartcard" = "yes"; then
4100 feature_not_found
"smartcard" "Install libcacard devel"
4107 if test "$libusb" != "no" ; then
4108 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4110 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4111 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4112 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
4113 libs_softmmu
="$libs_softmmu $libusb_libs"
4115 if test "$libusb" = "yes"; then
4116 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4122 # check for usbredirparser for usb network redirection support
4123 if test "$usb_redir" != "no" ; then
4124 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4126 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4127 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4128 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
4129 libs_softmmu
="$libs_softmmu $usb_redir_libs"
4131 if test "$usb_redir" = "yes"; then
4132 feature_not_found
"usb-redir" "Install usbredir devel"
4138 ##########################################
4139 # check if we have VSS SDK headers for win
4141 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4142 case "$vss_win32_sdk" in
4143 "") vss_win32_include
="-isystem $source_path" ;;
4144 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4145 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4146 vss_win32_include
="-isystem $source_path/.sdk/vss"
4147 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4149 *) vss_win32_include
="-isystem $vss_win32_sdk"
4152 #define __MIDL_user_allocate_free_DEFINED__
4153 #include <inc/win2003/vss.h>
4154 int main(void) { return VSS_CTX_BACKUP; }
4156 if compile_prog
"$vss_win32_include" "" ; then
4157 guest_agent_with_vss
="yes"
4158 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4159 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4160 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4162 if test "$vss_win32_sdk" != "" ; then
4163 echo "ERROR: Please download and install Microsoft VSS SDK:"
4164 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4165 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4166 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4167 echo "ERROR: The headers are extracted in the directory \`inc'."
4168 feature_not_found
"VSS support"
4170 guest_agent_with_vss
="no"
4174 ##########################################
4175 # lookup Windows platform SDK (if not specified)
4176 # The SDK is needed only to build .tlb (type library) file of guest agent
4177 # VSS provider from the source. It is usually unnecessary because the
4178 # pre-compiled .tlb file is included.
4180 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4181 if test -z "$win_sdk"; then
4182 programfiles
="$PROGRAMFILES"
4183 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4184 if test -n "$programfiles"; then
4185 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4187 feature_not_found
"Windows SDK"
4189 elif test "$win_sdk" = "no"; then
4194 ##########################################
4195 # check if mingw environment provides a recent ntddscsi.h
4196 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4198 #include <windows.h>
4199 #include <ntddscsi.h>
4201 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4202 #error Missing required ioctl definitions
4204 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4208 if compile_prog
"" "" ; then
4209 guest_agent_ntddscsi
=yes
4210 libs_qga
="-lsetupapi $libs_qga"
4214 ##########################################
4215 # virgl renderer probe
4217 if test "$virglrenderer" != "no" ; then
4219 #include <virglrenderer.h>
4220 int main(void) { virgl_renderer_poll(); return 0; }
4222 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4223 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4224 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4225 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4228 if test "$virglrenderer" = "yes" ; then
4229 feature_not_found
"virglrenderer"
4235 ##########################################
4236 # check if we have fdatasync
4242 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4243 return fdatasync(0);
4245 #error Not supported
4249 if compile_prog
"" "" ; then
4253 ##########################################
4254 # check if we have madvise
4258 #include <sys/types.h>
4259 #include <sys/mman.h>
4261 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4263 if compile_prog
"" "" ; then
4267 ##########################################
4268 # check if we have posix_madvise
4272 #include <sys/mman.h>
4274 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4276 if compile_prog
"" "" ; then
4280 ##########################################
4281 # check if we have posix_syslog
4286 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4288 if compile_prog
"" "" ; then
4292 ##########################################
4293 # check if trace backend exists
4295 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4296 if test "$?" -ne 0 ; then
4297 error_exit
"invalid trace backends" \
4298 "Please choose supported trace backends."
4301 ##########################################
4302 # For 'ust' backend, test if ust headers are present
4303 if have_backend
"ust"; then
4305 #include <lttng/tracepoint.h>
4306 int main(void) { return 0; }
4308 if compile_prog
"" "" ; then
4309 if $pkg_config lttng-ust
--exists; then
4310 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4312 lttng_ust_libs
="-llttng-ust"
4314 if $pkg_config liburcu-bp
--exists; then
4315 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4317 urcu_bp_libs
="-lurcu-bp"
4320 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4321 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4323 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4327 ##########################################
4328 # For 'dtrace' backend, test if 'dtrace' command is present
4329 if have_backend
"dtrace"; then
4330 if ! has
'dtrace' ; then
4331 error_exit
"dtrace command is not found in PATH $PATH"
4333 trace_backend_stap
="no"
4334 if has
'stap' ; then
4335 trace_backend_stap
="yes"
4339 ##########################################
4340 # check and set a backend for coroutine
4342 # We prefer ucontext, but it's not always possible. The fallback
4343 # is sigcontext. gthread is not selectable except explicitly, because
4344 # it is not functional enough to run QEMU proper. (It is occasionally
4345 # useful for debugging purposes.) On Windows the only valid backend
4346 # is the Windows-specific one.
4349 if test "$darwin" != "yes"; then
4351 #include <ucontext.h>
4352 #ifdef __stub_makecontext
4353 #error Ignoring glibc stub makecontext which will always fail
4355 int main(void) { makecontext(0, 0, 0); return 0; }
4357 if compile_prog
"" "" ; then
4362 if test "$coroutine" = ""; then
4363 if test "$mingw32" = "yes"; then
4365 elif test "$ucontext_works" = "yes"; then
4368 coroutine
=sigaltstack
4373 if test "$mingw32" != "yes"; then
4374 error_exit
"'windows' coroutine backend only valid for Windows"
4376 # Unfortunately the user visible backend name doesn't match the
4377 # coroutine-*.c filename for this case, so we have to adjust it here.
4381 if test "$ucontext_works" != "yes"; then
4382 feature_not_found
"ucontext"
4385 gthread|sigaltstack
)
4386 if test "$mingw32" = "yes"; then
4387 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4391 error_exit
"unknown coroutine backend $coroutine"
4396 if test "$coroutine_pool" = ""; then
4397 if test "$coroutine" = "gthread" -o "$coroutine" = "win32"; then
4403 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4404 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4407 if test "$debug_stack_usage" = "yes"; then
4408 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4409 error_exit
"stack usage debugging is not supported for $cpu"
4411 if test "$coroutine_pool" = "yes"; then
4412 echo "WARN: disabling coroutine pool for stack usage debugging"
4418 ##########################################
4419 # check if we have open_by_handle_at
4421 open_by_handle_at
=no
4424 #if !defined(AT_EMPTY_PATH)
4425 # error missing definition
4427 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4430 if compile_prog
"" "" ; then
4431 open_by_handle_at
=yes
4434 ########################################
4435 # check if we have linux/magic.h
4439 #include <linux/magic.h>
4444 if compile_prog
"" "" ; then
4448 ########################################
4449 # check whether we can disable warning option with a pragma (this is needed
4450 # to silence warnings in the headers of some versions of external libraries).
4451 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4454 # If we can't selectively disable warning in the code, disable -Werror so that
4455 # the build doesn't fail anyway.
4457 pragma_disable_unused_but_set
=no
4459 #pragma GCC diagnostic push
4460 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4461 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4462 #pragma GCC diagnostic pop
4468 if compile_prog
"-Werror" "" ; then
4469 pragma_diagnostic_available
=yes
4472 ########################################
4473 # check if we have valgrind/valgrind.h
4477 #include <valgrind/valgrind.h>
4482 if compile_prog
"" "" ; then
4486 ########################################
4487 # check if environ is declared
4497 if compile_prog
"" "" ; then
4501 ########################################
4502 # check if cpuid.h is usable.
4508 unsigned a, b, c, d;
4509 int max = __get_cpuid_max(0, 0);
4512 __cpuid(1, a, b, c, d);
4516 __cpuid_count(7, 0, a, b, c, d);
4522 if compile_prog
"" "" ; then
4526 ########################################
4527 # check if __[u]int128_t is usable.
4531 #if defined(__clang_major__) && defined(__clang_minor__)
4532 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4533 # error __int128_t does not work in CLANG before 3.2
4545 if compile_prog
"" "" ; then
4549 ########################################
4550 # check if getauxval is available.
4554 #include <sys/auxv.h>
4556 return getauxval(AT_HWCAP) == 0;
4559 if compile_prog
"" "" ; then
4563 ########################################
4564 # check if ccache is interfering with
4565 # semantic analysis of macros
4570 static const int Z = 1;
4571 #define fn() ({ Z; })
4572 #define TAUT(X) ((X) == Z)
4573 #define PAREN(X, Y) (X == Y)
4575 int main(int argc, char *argv[])
4581 if (PAREN(x, y)) return 0;
4582 if (TAUT(Z)) return 0;
4587 if ! compile_object
"-Werror"; then
4591 #################################################
4592 # clang does not support glibc + FORTIFY_SOURCE.
4594 if test "$fortify_source" != "no"; then
4595 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4596 fortify_source
="no";
4597 elif test -n "$cxx" &&
4598 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4599 fortify_source
="no";
4601 fortify_source
="yes"
4605 ##########################################
4606 # check if struct fsxattr is available via linux/fs.h
4610 #include <linux/fs.h>
4616 if compile_prog
"" "" ; then
4620 ##########################################
4621 # check if rtnetlink.h exists and is useful
4624 #include <linux/rtnetlink.h>
4626 return IFLA_PROTO_DOWN;
4629 if compile_prog
"" "" ; then
4633 #################################################
4634 # Sparc implicitly links with --relax, which is
4635 # incompatible with -r, so --no-relax should be
4636 # given. It does no harm to give it on other
4639 # Note: the prototype is needed since QEMU_CFLAGS
4640 # contains -Wmissing-prototypes
4642 extern int foo(void);
4643 int foo(void) { return 0; }
4645 if ! compile_object
""; then
4646 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
4648 if do_cc
-nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then
4649 LD_REL_FLAGS
="-Wl,--no-relax"
4652 ##########################################
4654 # After here, no more $cc or $ld runs
4656 if test "$gcov" = "yes" ; then
4657 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4658 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4659 elif test "$fortify_source" = "yes" ; then
4660 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4661 elif test "$debug" = "no"; then
4662 CFLAGS
="-O2 $CFLAGS"
4665 ##########################################
4667 if test "$libnfs" != "no" ; then
4668 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4670 libnfs_libs
=$
($pkg_config --libs libnfs
)
4672 if test "$libnfs" = "yes" ; then
4673 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4679 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4680 if test "$werror" = "yes"; then
4681 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4684 if test "$solaris" = "no" ; then
4685 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4686 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4690 # test if pod2man has --utf8 option
4691 if pod2man
--help |
grep -q utf8
; then
4692 POD2MAN
="pod2man --utf8"
4697 # Use large addresses, ASLR, no-SEH and DEP if available.
4698 if test "$mingw32" = "yes" ; then
4699 if test "$cpu" = i386
; then
4700 LDFLAGS
="-Wl,--large-address-aware $LDFLAGS"
4702 for flag
in --dynamicbase --no-seh --nxcompat; do
4703 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4704 LDFLAGS
="-Wl,$flag $LDFLAGS"
4709 qemu_confdir
=$sysconfdir$confsuffix
4710 qemu_moddir
=$libdir$confsuffix
4711 qemu_datadir
=$datadir$confsuffix
4712 qemu_localedir
="$datadir/locale"
4715 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4716 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4717 tools
="qemu-nbd\$(EXESUF) $tools"
4718 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4720 if test "$softmmu" = yes ; then
4721 if test "$virtfs" != no
; then
4722 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4724 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4726 if test "$virtfs" = yes; then
4727 error_exit
"VirtFS is supported only on Linux and requires libcap devel and libattr devel"
4734 # Probe for guest agent support/options
4736 if [ "$guest_agent" != "no" ]; then
4737 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4738 tools
="qemu-ga $tools"
4740 elif [ "$guest_agent" != yes ]; then
4743 error_exit
"Guest agent is not supported on this platform"
4747 # Guest agent Window MSI package
4749 if test "$guest_agent" != yes; then
4750 if test "$guest_agent_msi" = yes; then
4751 error_exit
"MSI guest agent package requires guest agent enabled"
4754 elif test "$mingw32" != "yes"; then
4755 if test "$guest_agent_msi" = "yes"; then
4756 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
4759 elif ! has wixl
; then
4760 if test "$guest_agent_msi" = "yes"; then
4761 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4765 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4766 # disabled explicitly
4767 if test "$guest_agent_msi" != "no"; then
4772 if test "$guest_agent_msi" = "yes"; then
4773 if test "$guest_agent_with_vss" = "yes"; then
4774 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
4777 if test "$QEMU_GA_MANUFACTURER" = ""; then
4778 QEMU_GA_MANUFACTURER
=QEMU
4781 if test "$QEMU_GA_DISTRO" = ""; then
4782 QEMU_GA_DISTRO
=Linux
4785 if test "$QEMU_GA_VERSION" = ""; then
4786 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
4789 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
4793 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
4796 QEMU_GA_MSI_ARCH
="-D Arch=32"
4799 error_exit
"CPU $cpu not supported for building installation package"
4804 # Mac OS X ships with a broken assembler
4806 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4807 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4808 "$softmmu" = yes ; then
4809 # Different host OS linkers have different ideas about the name of the ELF
4810 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
4811 # variant; and Windows uses i386pe.
4812 for emu
in elf_i386 elf_i386_fbsd i386pe
; do
4813 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
4814 ld_i386_emulation
="$emu"
4820 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4821 roms
="$roms spapr-rtas"
4824 if test "$cpu" = "s390x" ; then
4825 roms
="$roms s390-ccw"
4828 # Probe for the need for relocating the user-only binary.
4829 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
4832 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4833 # ??? Rationale for choosing this address
4834 textseg_addr
=0x60000000
4837 # A 256M aligned address, high in the address space, with enough
4838 # room for the code_gen_buffer above it before the stack.
4839 textseg_addr
=0x60000000
4842 if [ -n "$textseg_addr" ]; then
4844 int main(void) { return 0; }
4846 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4847 if ! compile_prog
"" "$textseg_ldflags"; then
4848 # In case ld does not support -Ttext-segment, edit the default linker
4849 # script via sed to set the .text start addr. This is needed on FreeBSD
4851 if ! $ld --verbose >/dev
/null
2>&1; then
4853 "We need to link the QEMU user mode binaries at a" \
4854 "specific text address. Unfortunately your linker" \
4855 "doesn't support either the -Ttext-segment option or" \
4856 "printing the default linker script with --verbose." \
4857 "If you don't want the user mode binaries, pass the" \
4858 "--disable-user option to configure."
4861 $ld --verbose |
sed \
4862 -e '1,/==================================================/d' \
4863 -e '/==================================================/,$d' \
4864 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4865 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4866 textseg_ldflags
="-Wl,-T../config-host.ld"
4872 if test "$1" = "yes" ; then
4877 # prepend pixman and ftd flags after all config tests are done
4878 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4879 libs_softmmu
="$pixman_libs $libs_softmmu"
4881 echo "Install prefix $prefix"
4882 echo "BIOS directory $(eval echo $qemu_datadir)"
4883 echo "binary directory $(eval echo $bindir)"
4884 echo "library directory $(eval echo $libdir)"
4885 echo "module directory $(eval echo $qemu_moddir)"
4886 echo "libexec directory $(eval echo $libexecdir)"
4887 echo "include directory $(eval echo $includedir)"
4888 echo "config directory $(eval echo $sysconfdir)"
4889 if test "$mingw32" = "no" ; then
4890 echo "local state directory $(eval echo $local_statedir)"
4891 echo "Manual directory $(eval echo $mandir)"
4892 echo "ELF interp prefix $interp_prefix"
4894 echo "local state directory queried at runtime"
4895 echo "Windows SDK $win_sdk"
4897 echo "Source path $source_path"
4898 echo "C compiler $cc"
4899 echo "Host C compiler $host_cc"
4900 echo "C++ compiler $cxx"
4901 echo "Objective-C compiler $objcc"
4902 echo "ARFLAGS $ARFLAGS"
4903 echo "CFLAGS $CFLAGS"
4904 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4905 echo "LDFLAGS $LDFLAGS"
4907 echo "install $install"
4908 echo "python $python"
4909 if test "$slirp" = "yes" ; then
4912 echo "module support $modules"
4913 echo "host CPU $cpu"
4914 echo "host big endian $bigendian"
4915 echo "target list $target_list"
4916 echo "tcg debug enabled $debug_tcg"
4917 echo "gprof enabled $gprof"
4918 echo "sparse enabled $sparse"
4919 echo "strip binaries $strip_opt"
4920 echo "profiler $profiler"
4921 echo "static build $static"
4922 if test "$darwin" = "yes" ; then
4923 echo "Cocoa support $cocoa"
4925 echo "pixman $pixman"
4926 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
4927 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
4928 echo "GTK GL support $gtk_gl"
4929 echo "VTE support $vte $(echo_version $vte $vteversion)"
4930 echo "TLS priority $tls_priority"
4931 echo "GNUTLS support $gnutls"
4932 echo "GNUTLS rnd $gnutls_rnd"
4933 if test "$gcrypt" = "yes"; then
4934 echo "encryption libgcrypt"
4935 echo "libgcrypt kdf $gcrypt_kdf"
4936 elif test "$nettle" = "yes"; then
4937 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
4939 echo "encryption none"
4941 echo "nettle kdf $nettle_kdf"
4942 echo "libtasn1 $tasn1"
4943 echo "curses support $curses"
4944 echo "virgl support $virglrenderer"
4945 echo "curl support $curl"
4946 echo "mingw32 support $mingw32"
4947 echo "Audio drivers $audio_drv_list"
4948 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4949 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4950 echo "VirtFS support $virtfs"
4951 echo "VNC support $vnc"
4952 if test "$vnc" = "yes" ; then
4953 echo "VNC SASL support $vnc_sasl"
4954 echo "VNC JPEG support $vnc_jpeg"
4955 echo "VNC PNG support $vnc_png"
4957 if test -n "$sparc_cpu"; then
4958 echo "Target Sparc Arch $sparc_cpu"
4960 echo "xen support $xen"
4961 if test "$xen" = "yes" ; then
4962 echo "xen ctrl version $xen_ctrl_version"
4963 echo "pv dom build $xen_pv_domain_build"
4965 echo "brlapi support $brlapi"
4966 echo "bluez support $bluez"
4967 echo "Documentation $docs"
4970 echo "vde support $vde"
4971 echo "netmap support $netmap"
4972 echo "Linux AIO support $linux_aio"
4973 echo "(X)ATTR support $attr"
4974 echo "Install blobs $blobs"
4975 echo "KVM support $kvm"
4976 echo "RDMA support $rdma"
4977 echo "TCG interpreter $tcg_interpreter"
4978 echo "fdt support $fdt"
4979 echo "preadv support $preadv"
4980 echo "fdatasync $fdatasync"
4981 echo "madvise $madvise"
4982 echo "posix_madvise $posix_madvise"
4983 echo "libcap-ng support $cap_ng"
4984 echo "vhost-net support $vhost_net"
4985 echo "vhost-scsi support $vhost_scsi"
4986 echo "vhost-vsock support $vhost_vsock"
4987 echo "Trace backends $trace_backends"
4988 if have_backend
"simple"; then
4989 echo "Trace output file $trace_file-<pid>"
4991 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
4992 echo "rbd support $rbd"
4993 echo "xfsctl support $xfs"
4994 echo "smartcard support $smartcard"
4995 echo "libusb $libusb"
4996 echo "usb net redir $usb_redir"
4997 echo "OpenGL support $opengl"
4998 echo "OpenGL dmabufs $opengl_dmabuf"
4999 echo "libiscsi support $libiscsi"
5000 echo "libnfs support $libnfs"
5001 echo "build guest agent $guest_agent"
5002 echo "QGA VSS support $guest_agent_with_vss"
5003 echo "QGA w32 disk info $guest_agent_ntddscsi"
5004 echo "QGA MSI support $guest_agent_msi"
5005 echo "seccomp support $seccomp"
5006 echo "coroutine backend $coroutine"
5007 echo "coroutine pool $coroutine_pool"
5008 echo "debug stack usage $debug_stack_usage"
5009 echo "GlusterFS support $glusterfs"
5010 echo "Archipelago support $archipelago"
5011 echo "gcov $gcov_tool"
5012 echo "gcov enabled $gcov"
5013 echo "TPM support $tpm"
5014 echo "libssh2 support $libssh2"
5015 echo "TPM passthrough $tpm_passthrough"
5016 echo "QOM debugging $qom_cast_debug"
5017 echo "lzo support $lzo"
5018 echo "snappy support $snappy"
5019 echo "bzip2 support $bzip2"
5020 echo "NUMA host support $numa"
5021 echo "tcmalloc support $tcmalloc"
5022 echo "jemalloc support $jemalloc"
5023 echo "avx2 optimization $avx2_opt"
5024 echo "replication support $replication"
5026 if test "$sdl_too_old" = "yes"; then
5027 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5030 config_host_mak
="config-host.mak"
5032 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5034 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5035 echo >> $config_host_mak
5037 echo all
: >> $config_host_mak
5038 echo "prefix=$prefix" >> $config_host_mak
5039 echo "bindir=$bindir" >> $config_host_mak
5040 echo "libdir=$libdir" >> $config_host_mak
5041 echo "libexecdir=$libexecdir" >> $config_host_mak
5042 echo "includedir=$includedir" >> $config_host_mak
5043 echo "mandir=$mandir" >> $config_host_mak
5044 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5045 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5046 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5047 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5048 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5049 if test "$mingw32" = "no" ; then
5050 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5052 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5053 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5054 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5055 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5056 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5058 echo "ARCH=$ARCH" >> $config_host_mak
5060 if test "$debug_tcg" = "yes" ; then
5061 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5063 if test "$strip_opt" = "yes" ; then
5064 echo "STRIP=${strip}" >> $config_host_mak
5066 if test "$bigendian" = "yes" ; then
5067 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5069 if test "$mingw32" = "yes" ; then
5070 echo "CONFIG_WIN32=y" >> $config_host_mak
5071 echo "CONFIG_INSTALLER=y" >> $config_host_mak
5072 rc_version
=$
(cat $source_path/VERSION
)
5073 version_major
=${rc_version%%.*}
5074 rc_version
=${rc_version#*.}
5075 version_minor
=${rc_version%%.*}
5076 rc_version
=${rc_version#*.}
5077 version_subminor
=${rc_version%%.*}
5079 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5080 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5081 if test "$guest_agent_with_vss" = "yes" ; then
5082 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5083 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5084 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5086 if test "$guest_agent_ntddscsi" = "yes" ; then
5087 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5089 if test "$guest_agent_msi" = "yes"; then
5090 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5091 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5092 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5093 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5094 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5095 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5096 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5099 echo "CONFIG_POSIX=y" >> $config_host_mak
5102 if test "$linux" = "yes" ; then
5103 echo "CONFIG_LINUX=y" >> $config_host_mak
5106 if test "$darwin" = "yes" ; then
5107 echo "CONFIG_DARWIN=y" >> $config_host_mak
5110 if test "$aix" = "yes" ; then
5111 echo "CONFIG_AIX=y" >> $config_host_mak
5114 if test "$solaris" = "yes" ; then
5115 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5116 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5117 if test "$needs_libsunmath" = "yes" ; then
5118 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5121 if test "$haiku" = "yes" ; then
5122 echo "CONFIG_HAIKU=y" >> $config_host_mak
5124 if test "$static" = "yes" ; then
5125 echo "CONFIG_STATIC=y" >> $config_host_mak
5127 if test "$profiler" = "yes" ; then
5128 echo "CONFIG_PROFILER=y" >> $config_host_mak
5130 if test "$slirp" = "yes" ; then
5131 echo "CONFIG_SLIRP=y" >> $config_host_mak
5132 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5134 if test "$vde" = "yes" ; then
5135 echo "CONFIG_VDE=y" >> $config_host_mak
5137 if test "$netmap" = "yes" ; then
5138 echo "CONFIG_NETMAP=y" >> $config_host_mak
5140 if test "$l2tpv3" = "yes" ; then
5141 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5143 if test "$cap_ng" = "yes" ; then
5144 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5146 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5147 for drv
in $audio_drv_list; do
5148 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5149 echo "$def=y" >> $config_host_mak
5151 if test "$audio_pt_int" = "yes" ; then
5152 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5154 if test "$audio_win_int" = "yes" ; then
5155 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5157 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5158 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5159 if test "$vnc" = "yes" ; then
5160 echo "CONFIG_VNC=y" >> $config_host_mak
5162 if test "$vnc_sasl" = "yes" ; then
5163 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5165 if test "$vnc_jpeg" = "yes" ; then
5166 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5168 if test "$vnc_png" = "yes" ; then
5169 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5171 if test "$fnmatch" = "yes" ; then
5172 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5174 if test "$xfs" = "yes" ; then
5175 echo "CONFIG_XFS=y" >> $config_host_mak
5177 qemu_version
=$
(head $source_path/VERSION
)
5178 echo "VERSION=$qemu_version" >>$config_host_mak
5179 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5180 echo "SRC_PATH=$source_path" >> $config_host_mak
5181 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5182 if [ "$docs" = "yes" ] ; then
5183 echo "BUILD_DOCS=yes" >> $config_host_mak
5185 if [ "$want_tools" = "yes" ] ; then
5186 echo "BUILD_TOOLS=yes" >> $config_host_mak
5188 if test "$modules" = "yes"; then
5189 # $shacmd can generate a hash started with digit, which the compiler doesn't
5190 # like as an symbol. So prefix it with an underscore
5191 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5192 echo "CONFIG_MODULES=y" >> $config_host_mak
5194 if test "$sdl" = "yes" ; then
5195 echo "CONFIG_SDL=y" >> $config_host_mak
5196 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5197 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5199 if test "$cocoa" = "yes" ; then
5200 echo "CONFIG_COCOA=y" >> $config_host_mak
5202 if test "$curses" = "yes" ; then
5203 echo "CONFIG_CURSES=y" >> $config_host_mak
5205 if test "$utimens" = "yes" ; then
5206 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
5208 if test "$pipe2" = "yes" ; then
5209 echo "CONFIG_PIPE2=y" >> $config_host_mak
5211 if test "$accept4" = "yes" ; then
5212 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5214 if test "$splice" = "yes" ; then
5215 echo "CONFIG_SPLICE=y" >> $config_host_mak
5217 if test "$eventfd" = "yes" ; then
5218 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5220 if test "$memfd" = "yes" ; then
5221 echo "CONFIG_MEMFD=y" >> $config_host_mak
5223 if test "$fallocate" = "yes" ; then
5224 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5226 if test "$fallocate_punch_hole" = "yes" ; then
5227 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5229 if test "$fallocate_zero_range" = "yes" ; then
5230 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5232 if test "$posix_fallocate" = "yes" ; then
5233 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5235 if test "$sync_file_range" = "yes" ; then
5236 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5238 if test "$fiemap" = "yes" ; then
5239 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5241 if test "$dup3" = "yes" ; then
5242 echo "CONFIG_DUP3=y" >> $config_host_mak
5244 if test "$ppoll" = "yes" ; then
5245 echo "CONFIG_PPOLL=y" >> $config_host_mak
5247 if test "$prctl_pr_set_timerslack" = "yes" ; then
5248 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5250 if test "$epoll" = "yes" ; then
5251 echo "CONFIG_EPOLL=y" >> $config_host_mak
5253 if test "$epoll_create1" = "yes" ; then
5254 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5256 if test "$sendfile" = "yes" ; then
5257 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5259 if test "$timerfd" = "yes" ; then
5260 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5262 if test "$setns" = "yes" ; then
5263 echo "CONFIG_SETNS=y" >> $config_host_mak
5265 if test "$inotify" = "yes" ; then
5266 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5268 if test "$inotify1" = "yes" ; then
5269 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5271 if test "$byteswap_h" = "yes" ; then
5272 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5274 if test "$bswap_h" = "yes" ; then
5275 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5277 if test "$curl" = "yes" ; then
5278 echo "CONFIG_CURL=m" >> $config_host_mak
5279 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5280 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5282 if test "$brlapi" = "yes" ; then
5283 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5285 if test "$bluez" = "yes" ; then
5286 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5287 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5289 if test "$glib_subprocess" = "yes" ; then
5290 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5292 if test "$gtk" = "yes" ; then
5293 echo "CONFIG_GTK=y" >> $config_host_mak
5294 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5295 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5296 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5297 if test "$gtk_gl" = "yes" ; then
5298 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5301 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5302 if test "$gnutls" = "yes" ; then
5303 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5305 if test "$gnutls_rnd" = "yes" ; then
5306 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5308 if test "$gcrypt" = "yes" ; then
5309 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5310 if test "$gcrypt_kdf" = "yes" ; then
5311 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5314 if test "$nettle" = "yes" ; then
5315 echo "CONFIG_NETTLE=y" >> $config_host_mak
5316 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5317 if test "$nettle_kdf" = "yes" ; then
5318 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5321 if test "$tasn1" = "yes" ; then
5322 echo "CONFIG_TASN1=y" >> $config_host_mak
5324 if test "$have_ifaddrs_h" = "yes" ; then
5325 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5327 if test "$have_broken_size_max" = "yes" ; then
5328 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5331 # Work around a system header bug with some kernel/XFS header
5332 # versions where they both try to define 'struct fsxattr':
5333 # xfs headers will not try to redefine structs from linux headers
5334 # if this macro is set.
5335 if test "$have_fsxattr" = "yes" ; then
5336 echo "HAVE_FSXATTR=y" >> $config_host_mak
5338 if test "$vte" = "yes" ; then
5339 echo "CONFIG_VTE=y" >> $config_host_mak
5340 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5342 if test "$virglrenderer" = "yes" ; then
5343 echo "CONFIG_VIRGL=y" >> $config_host_mak
5344 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5345 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5347 if test "$xen" = "yes" ; then
5348 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5349 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5350 if test "$xen_pv_domain_build" = "yes" ; then
5351 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5354 if test "$linux_aio" = "yes" ; then
5355 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5357 if test "$attr" = "yes" ; then
5358 echo "CONFIG_ATTR=y" >> $config_host_mak
5360 if test "$libattr" = "yes" ; then
5361 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5363 if test "$virtfs" = "yes" ; then
5364 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5366 if test "$vhost_scsi" = "yes" ; then
5367 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5369 if test "$vhost_net" = "yes" ; then
5370 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5372 if test "$vhost_vsock" = "yes" ; then
5373 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5375 if test "$blobs" = "yes" ; then
5376 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5378 if test "$iovec" = "yes" ; then
5379 echo "CONFIG_IOVEC=y" >> $config_host_mak
5381 if test "$preadv" = "yes" ; then
5382 echo "CONFIG_PREADV=y" >> $config_host_mak
5384 if test "$fdt" = "yes" ; then
5385 echo "CONFIG_FDT=y" >> $config_host_mak
5387 if test "$signalfd" = "yes" ; then
5388 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5390 if test "$tcg_interpreter" = "yes" ; then
5391 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5393 if test "$fdatasync" = "yes" ; then
5394 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5396 if test "$madvise" = "yes" ; then
5397 echo "CONFIG_MADVISE=y" >> $config_host_mak
5399 if test "$posix_madvise" = "yes" ; then
5400 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5403 if test "$spice" = "yes" ; then
5404 echo "CONFIG_SPICE=y" >> $config_host_mak
5407 if test "$smartcard" = "yes" ; then
5408 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5411 if test "$libusb" = "yes" ; then
5412 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5415 if test "$usb_redir" = "yes" ; then
5416 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5419 if test "$opengl" = "yes" ; then
5420 echo "CONFIG_OPENGL=y" >> $config_host_mak
5421 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5422 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5423 if test "$opengl_dmabuf" = "yes" ; then
5424 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5428 if test "$avx2_opt" = "yes" ; then
5429 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5432 if test "$lzo" = "yes" ; then
5433 echo "CONFIG_LZO=y" >> $config_host_mak
5436 if test "$snappy" = "yes" ; then
5437 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5440 if test "$bzip2" = "yes" ; then
5441 echo "CONFIG_BZIP2=y" >> $config_host_mak
5442 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5445 if test "$libiscsi" = "yes" ; then
5446 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5447 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5448 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5451 if test "$libnfs" = "yes" ; then
5452 echo "CONFIG_LIBNFS=m" >> $config_host_mak
5453 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
5456 if test "$seccomp" = "yes"; then
5457 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5460 # XXX: suppress that
5461 if [ "$bsd" = "yes" ] ; then
5462 echo "CONFIG_BSD=y" >> $config_host_mak
5465 if test "$localtime_r" = "yes" ; then
5466 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5468 if test "$qom_cast_debug" = "yes" ; then
5469 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5471 if test "$rbd" = "yes" ; then
5472 echo "CONFIG_RBD=m" >> $config_host_mak
5473 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5474 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5477 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5478 if test "$coroutine_pool" = "yes" ; then
5479 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5481 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5484 if test "$debug_stack_usage" = "yes" ; then
5485 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
5488 if test "$open_by_handle_at" = "yes" ; then
5489 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5492 if test "$linux_magic_h" = "yes" ; then
5493 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5496 if test "$pragma_diagnostic_available" = "yes" ; then
5497 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5500 if test "$valgrind_h" = "yes" ; then
5501 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5504 if test "$has_environ" = "yes" ; then
5505 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5508 if test "$cpuid_h" = "yes" ; then
5509 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5512 if test "$int128" = "yes" ; then
5513 echo "CONFIG_INT128=y" >> $config_host_mak
5516 if test "$getauxval" = "yes" ; then
5517 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5520 if test "$glusterfs" = "yes" ; then
5521 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5522 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5523 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5526 if test "$glusterfs_xlator_opt" = "yes" ; then
5527 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5530 if test "$glusterfs_discard" = "yes" ; then
5531 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5534 if test "$glusterfs_zerofill" = "yes" ; then
5535 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5538 if test "$archipelago" = "yes" ; then
5539 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5540 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5543 if test "$libssh2" = "yes" ; then
5544 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5545 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5546 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5550 if test "$libusb" = "yes"; then
5551 echo "HOST_USB=libusb legacy" >> $config_host_mak
5553 echo "HOST_USB=stub" >> $config_host_mak
5556 # TPM passthrough support?
5557 if test "$tpm" = "yes"; then
5558 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5559 if test "$tpm_passthrough" = "yes"; then
5560 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5564 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5565 if have_backend
"nop"; then
5566 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5568 if have_backend
"simple"; then
5569 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5570 # Set the appropriate trace file.
5571 trace_file
="\"$trace_file-\" FMT_pid"
5573 if have_backend
"log"; then
5574 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
5576 if have_backend
"ust"; then
5577 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5579 if have_backend
"dtrace"; then
5580 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5581 if test "$trace_backend_stap" = "yes" ; then
5582 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5585 if have_backend
"ftrace"; then
5586 if test "$linux" = "yes" ; then
5587 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5589 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5592 if have_backend
"syslog"; then
5593 if test "$posix_syslog" = "yes" ; then
5594 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
5596 feature_not_found
"syslog(trace backend)" "syslog not available"
5599 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5601 if test "$rdma" = "yes" ; then
5602 echo "CONFIG_RDMA=y" >> $config_host_mak
5605 if test "$have_rtnetlink" = "yes" ; then
5606 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5609 if test "$replication" = "yes" ; then
5610 echo "CONFIG_REPLICATION=y" >> $config_host_mak
5613 # Hold two types of flag:
5614 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5615 # a thread we have a handle to
5616 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5618 if test "$pthread_setname_np" = "yes" ; then
5619 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5620 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5623 if test "$tcg_interpreter" = "yes"; then
5624 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5625 elif test "$ARCH" = "sparc64" ; then
5626 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5627 elif test "$ARCH" = "s390x" ; then
5628 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5629 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5630 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5631 elif test "$ARCH" = "ppc64" ; then
5632 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5634 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5636 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5638 echo "TOOLS=$tools" >> $config_host_mak
5639 echo "ROMS=$roms" >> $config_host_mak
5640 echo "MAKE=$make" >> $config_host_mak
5641 echo "INSTALL=$install" >> $config_host_mak
5642 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5643 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5644 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5645 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5646 echo "PYTHON=$python" >> $config_host_mak
5647 echo "CC=$cc" >> $config_host_mak
5648 if $iasl -h > /dev
/null
2>&1; then
5649 echo "IASL=$iasl" >> $config_host_mak
5651 echo "CC_I386=$cc_i386" >> $config_host_mak
5652 echo "HOST_CC=$host_cc" >> $config_host_mak
5653 echo "CXX=$cxx" >> $config_host_mak
5654 echo "OBJCC=$objcc" >> $config_host_mak
5655 echo "AR=$ar" >> $config_host_mak
5656 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5657 echo "AS=$as" >> $config_host_mak
5658 echo "CCAS=$ccas" >> $config_host_mak
5659 echo "CPP=$cpp" >> $config_host_mak
5660 echo "OBJCOPY=$objcopy" >> $config_host_mak
5661 echo "LD=$ld" >> $config_host_mak
5662 echo "NM=$nm" >> $config_host_mak
5663 echo "WINDRES=$windres" >> $config_host_mak
5664 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5665 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5666 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5667 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5668 if test "$sparse" = "yes" ; then
5669 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5670 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5671 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5672 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5673 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5675 if test "$cross_prefix" != ""; then
5676 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5678 echo "AUTOCONF_HOST := " >> $config_host_mak
5680 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5681 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5682 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
5683 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
5684 echo "LIBS+=$LIBS" >> $config_host_mak
5685 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5686 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
5687 echo "EXESUF=$EXESUF" >> $config_host_mak
5688 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5689 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5690 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5691 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5692 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5693 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5694 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5695 if test "$gcov" = "yes" ; then
5696 echo "CONFIG_GCOV=y" >> $config_host_mak
5697 echo "GCOV=$gcov_tool" >> $config_host_mak
5700 # use included Linux headers
5701 if test "$linux" = "yes" ; then
5702 mkdir
-p linux-headers
5720 # For most CPUs the kernel architecture name and QEMU CPU name match.
5724 # For non-KVM architectures we will not have asm headers
5725 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5726 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5730 for target
in $target_list; do
5731 target_dir
="$target"
5732 config_target_mak
=$target_dir/config-target.mak
5733 target_name
=$
(echo $target | cut
-d '-' -f 1)
5734 target_bigendian
="no"
5736 case "$target_name" in
5737 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5738 target_bigendian
=yes
5742 target_user_only
="no"
5743 target_linux_user
="no"
5744 target_bsd_user
="no"
5746 ${target_name}-softmmu)
5747 target_softmmu
="yes"
5749 ${target_name}-linux-user)
5750 if test "$linux" != "yes" ; then
5751 error_exit
"Target '$target' is only available on a Linux host"
5753 target_user_only
="yes"
5754 target_linux_user
="yes"
5756 ${target_name}-bsd-user)
5757 if test "$bsd" != "yes" ; then
5758 error_exit
"Target '$target' is only available on a BSD host"
5760 target_user_only
="yes"
5761 target_bsd_user
="yes"
5764 error_exit
"Target '$target' not recognised"
5769 mkdir
-p $target_dir
5770 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5773 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
5776 TARGET_ARCH
="$target_name"
5780 case "$target_name" in
5784 TARGET_BASE_ARCH
=i386
5791 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5794 TARGET_BASE_ARCH
=arm
5796 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5804 gdb_xml_files
="cf-core.xml cf-fp.xml"
5806 microblaze|microblazeel
)
5807 TARGET_ARCH
=microblaze
5812 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5816 TARGET_BASE_ARCH
=mips
5817 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5818 echo "TARGET_ABI32=y" >> $config_target_mak
5822 TARGET_BASE_ARCH
=mips
5823 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5828 TARGET_ARCH
=openrisc
5829 TARGET_BASE_ARCH
=openrisc
5832 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5835 TARGET_BASE_ARCH
=ppc
5837 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5840 TARGET_BASE_ARCH
=ppc
5842 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5846 TARGET_BASE_ARCH
=ppc
5848 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5852 TARGET_BASE_ARCH
=ppc
5854 echo "TARGET_ABI32=y" >> $config_target_mak
5855 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5864 TARGET_BASE_ARCH
=sparc
5868 TARGET_BASE_ARCH
=sparc
5869 TARGET_ABI_DIR
=sparc
5870 echo "TARGET_ABI32=y" >> $config_target_mak
5873 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
5885 error_exit
"Unsupported target CPU"
5888 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5889 if [ "$TARGET_BASE_ARCH" = "" ]; then
5890 TARGET_BASE_ARCH
=$TARGET_ARCH
5893 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5896 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5899 target_arch_name
="$(upper $TARGET_ARCH)"
5900 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5901 echo "TARGET_NAME=$target_name" >> $config_target_mak
5902 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5903 if [ "$TARGET_ABI_DIR" = "" ]; then
5904 TARGET_ABI_DIR
=$TARGET_ARCH
5906 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5907 if [ "$HOST_VARIANT_DIR" != "" ]; then
5908 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5910 case "$target_name" in
5912 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5913 echo "CONFIG_XEN=y" >> $config_target_mak
5914 if test "$xen_pci_passthrough" = yes; then
5915 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5921 case "$target_name" in
5922 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5923 # Make sure the target and host cpus are compatible
5924 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5925 \
( "$target_name" = "$cpu" -o \
5926 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5927 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5928 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5929 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5930 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5931 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5932 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5933 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5934 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5935 echo "CONFIG_KVM=y" >> $config_target_mak
5936 if test "$vhost_net" = "yes" ; then
5937 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5938 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
5942 if test "$target_bigendian" = "yes" ; then
5943 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5945 if test "$target_softmmu" = "yes" ; then
5946 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5948 if test "$target_user_only" = "yes" ; then
5949 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5950 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5952 if test "$target_linux_user" = "yes" ; then
5953 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5956 if test ! -z "$gdb_xml_files" ; then
5957 for x
in $gdb_xml_files; do
5958 list
="$list $source_path/gdb-xml/$x"
5960 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5963 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5964 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5966 if test "$target_bsd_user" = "yes" ; then
5967 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5970 # generate QEMU_CFLAGS/LDFLAGS for targets
5976 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5977 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5980 for i
in $ARCH $TARGET_BASE_ARCH ; do
5983 disas_config
"ALPHA"
5986 if test -n "${cxx}"; then
5987 disas_config
"ARM_A64"
5992 if test -n "${cxx}"; then
5993 disas_config
"ARM_A64"
6012 disas_config
"MICROBLAZE"
6018 disas_config
"MOXIE"
6021 disas_config
"OPENRISC"
6033 disas_config
"SPARC"
6036 disas_config
"XTENSA"
6040 if test "$tcg_interpreter" = "yes" ; then
6046 # Ensure there's only a single GP
6047 cflags
="-msmall-data $cflags"
6051 if test "$gprof" = "yes" ; then
6052 echo "TARGET_GPROF=yes" >> $config_target_mak
6053 if test "$target_linux_user" = "yes" ; then
6055 ldflags
="-p $ldflags"
6057 if test "$target_softmmu" = "yes" ; then
6058 ldflags
="-p $ldflags"
6059 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6063 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6064 ldflags
="$ldflags $textseg_ldflags"
6067 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6068 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6070 done # for target in $targets
6072 if [ "$pixman" = "internal" ]; then
6073 echo "config-host.h: subdir-pixman" >> $config_host_mak
6076 if [ "$dtc_internal" = "yes" ]; then
6077 echo "config-host.h: subdir-dtc" >> $config_host_mak
6080 if test "$numa" = "yes"; then
6081 echo "CONFIG_NUMA=y" >> $config_host_mak
6084 if test "$ccache_cpp2" = "yes"; then
6085 echo "export CCACHE_CPP2=y" >> $config_host_mak
6088 # build tree in object directory in case the source is not in the current directory
6089 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6091 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6092 DIRS
="$DIRS roms/seabios roms/vgabios"
6093 DIRS
="$DIRS qapi-generated"
6094 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6095 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6096 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6097 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6098 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6099 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6100 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6101 FILES
="$FILES pc-bios/qemu-icon.bmp"
6103 $source_path/pc-bios
/*.bin \
6104 $source_path/pc-bios
/*.aml \
6105 $source_path/pc-bios
/*.rom \
6106 $source_path/pc-bios
/*.dtb \
6107 $source_path/pc-bios
/*.img \
6108 $source_path/pc-bios
/openbios-
* \
6109 $source_path/pc-bios
/u-boot.
* \
6110 $source_path/pc-bios
/palcode-
*
6112 FILES
="$FILES pc-bios/$(basename $bios_file)"
6114 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6116 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6119 for f
in $FILES ; do
6120 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6121 symlink
"$source_path/$f" "$f"
6125 # temporary config to build submodules
6126 for rom
in seabios vgabios
; do
6127 config_mak
=roms
/$rom/config.mak
6128 echo "# Automatically generated by configure - do not modify" > $config_mak
6129 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6130 echo "AS=$as" >> $config_mak
6131 echo "CCAS=$ccas" >> $config_mak
6132 echo "CC=$cc" >> $config_mak
6133 echo "BCC=bcc" >> $config_mak
6134 echo "CPP=$cpp" >> $config_mak
6135 echo "OBJCOPY=objcopy" >> $config_mak
6136 echo "IASL=$iasl" >> $config_mak
6137 echo "LD=$ld" >> $config_mak
6140 # set up tests data directory
6141 if [ ! -e tests
/data
]; then
6142 symlink
"$source_path/tests/data" tests
/data
6145 # set up qemu-iotests in this build directory
6146 iotests_common_env
="tests/qemu-iotests/common.env"
6147 iotests_check
="tests/qemu-iotests/check"
6149 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6150 echo >> "$iotests_common_env"
6151 echo "export PYTHON='$python'" >> "$iotests_common_env"
6153 if [ ! -e "$iotests_check" ]; then
6154 symlink
"$source_path/$iotests_check" "$iotests_check"
6157 # Save the configure command line for later reuse.
6158 cat <<EOD >config.status
6160 # Generated by configure.
6161 # Run this file to recreate the current configuration.
6162 # Compiler output produced by configure, useful for debugging
6163 # configure, is in config.log if it exists.
6165 printf "exec" >>config.status
6166 printf " '%s'" "$0" "$@" >>config.status
6167 echo ' "$@"' >>config.status
6168 chmod +x config.status