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.
223 xen_pv_domain_build
="no"
224 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"
303 glusterfs_xlator_opt
="no"
304 glusterfs_discard
="no"
305 glusterfs_zerofill
="no"
310 tls_priority
="NORMAL"
326 # parse CC options first
328 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
330 --cross-prefix=*) cross_prefix
="$optarg"
334 --cxx=*) CXX
="$optarg"
336 --source-path=*) source_path
="$optarg"
338 --cpu=*) cpu
="$optarg"
340 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
341 EXTRA_CFLAGS
="$optarg"
343 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
344 EXTRA_LDFLAGS
="$optarg"
346 --enable-debug-info) debug_info
="yes"
348 --disable-debug-info) debug_info
="no"
353 # Using uname is really, really broken. Once we have the right set of checks
354 # we can eliminate its usage altogether.
356 # Preferred compiler:
358 # ${cross_prefix}gcc (if cross-prefix specified)
360 if test -z "${CC}${cross_prefix}"; then
363 cc
="${CC-${cross_prefix}gcc}"
366 if test -z "${CXX}${cross_prefix}"; then
369 cxx
="${CXX-${cross_prefix}g++}"
372 ar="${AR-${cross_prefix}ar}"
373 as
="${AS-${cross_prefix}as}"
376 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
377 ld
="${LD-${cross_prefix}ld}"
378 nm
="${NM-${cross_prefix}nm}"
379 strip
="${STRIP-${cross_prefix}strip}"
380 windres
="${WINDRES-${cross_prefix}windres}"
381 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
383 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
385 pkg_config
=query_pkg_config
386 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
387 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
389 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
390 ARFLAGS
="${ARFLAGS-rv}"
392 # default flags for all hosts
393 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
394 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
395 QEMU_CFLAGS
="-Wmissing-format-attribute $QEMU_CFLAGS"
396 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
397 QEMU_CFLAGS
="-Wno-unused-parameter $QEMU_CFLAGS"
398 QEMU_CFLAGS
="-Wno-missing-field-initializers $QEMU_CFLAGS"
399 QEMU_CFLAGS
="-Wno-sign-compare $QEMU_CFLAGS"
400 QEMU_CFLAGS
="-Wno-override-init $QEMU_CFLAGS"
401 QEMU_CFLAGS
="-Wno-error=format $QEMU_CFLAGS"
402 QEMU_CFLAGS
="-Wno-error=format-extra-args $QEMU_CFLAGS"
403 QEMU_CFLAGS
="-Wno-error=parentheses $QEMU_CFLAGS"
404 QEMU_CFLAGS
="-Wextra $QEMU_CFLAGS"
405 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
406 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
407 if test "$debug_info" = "yes"; then
409 LDFLAGS
="-g $LDFLAGS"
412 # make source path absolute
413 source_path
=$
(cd "$source_path"; pwd)
415 cc_macros
=$
($cc $QEMU_CFLAGS -E -dD - </dev
/null
)
417 # running configure in the source tree?
418 # we know that's the case if configure is there.
419 if test -f "./configure"; then
420 pwd_is_source_path
="y"
422 pwd_is_source_path
="n"
429 #error $1 not defined
431 int main(void) { return 0; }
439 int main(void) { return 0; }
446 int main(void) { return 0; }
450 if check_define __linux__
; then
452 elif check_define _WIN32
; then
454 elif check_define __OpenBSD__
; then
456 elif check_define __sun__
; then
458 elif check_define __HAIKU__
; then
464 # Some host OSes need non-standard checks for which CPU to use.
465 # Note that these checks are broken for cross-compilation: if you're
466 # cross-compiling to one of these OSes then you'll need to specify
467 # the correct CPU with the --cpu option.
470 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
471 # run 64-bit userspace code.
472 # If the user didn't specify a CPU explicitly and the kernel says this is
473 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
474 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
479 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
480 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
485 if test ! -z "$cpu" ; then
486 # command line argument
488 elif check_define __i386__
; then
490 elif check_define __x86_64__
; then
491 if check_define __ILP32__
; then
496 elif check_define __sparc__
; then
497 if check_define __arch64__
; then
502 elif check_define _ARCH_PPC
; then
503 if check_define _ARCH_PPC64
; then
508 elif check_define __mips__
; then
509 if check_define __mips64
; then
514 elif check_define __ia64__
; then
516 elif check_define __s390__
; then
517 if check_define __s390x__
; then
522 elif check_define __arm__
; then
524 elif check_define __aarch64__
; then
526 elif check_define __hppa__
; then
533 # Normalise host CPU name and set ARCH.
534 # Note that this case should only have supported host CPUs, not guests.
536 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
539 i386|i486|i586|i686|i86pc|BePC
)
553 if check_define __MIPSEL__
; then
564 # This will result in either an error or falling back to TCI later
568 if test -z "$ARCH"; then
574 # host *BSD for user mode
580 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
581 audio_possible_drivers
="sdl"
586 audio_possible_drivers
="dsound sdl"
587 if check_include dsound.h
; then
588 audio_drv_list
="dsound"
596 audio_possible_drivers
="oss sdl pa"
602 audio_possible_drivers
="oss sdl pa"
603 # needed for kinfo_getvmmap(3) in libutil.h
605 netmap
="" # enable netmap autodetect
606 HOST_VARIANT_DIR
="freebsd"
612 audio_possible_drivers
="oss sdl pa"
613 HOST_VARIANT_DIR
="dragonfly"
619 audio_possible_drivers
="oss sdl"
621 HOST_VARIANT_DIR
="netbsd"
627 audio_possible_drivers
="sdl"
628 HOST_VARIANT_DIR
="openbsd"
633 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
634 if [ "$cpu" = "x86_64" ] ; then
635 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
636 LDFLAGS
="-arch x86_64 $LDFLAGS"
639 audio_drv_list
="coreaudio"
640 audio_possible_drivers
="coreaudio sdl"
641 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
642 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
643 # Disable attempts to use ObjectiveC features in os/object.h since they
644 # won't work when we're compiling with gcc as a C compiler.
645 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
646 HOST_VARIANT_DIR
="darwin"
651 install="${INSTALL-ginstall}"
653 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
654 needs_libsunmath
="no"
655 solarisrev
=$
(uname
-r | cut
-f2 -d.
)
656 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
657 if test "$solarisrev" -le 9 ; then
658 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
659 needs_libsunmath
="yes"
660 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
661 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
662 LIBS
="-lsunmath $LIBS"
664 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
665 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
666 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
667 "Studio 11 can be downloaded from www.sun.com."
671 if test -f /usr
/include
/sys
/soundcard.h
; then
674 audio_possible_drivers
="oss sdl"
675 # needed for CMSG_ macros in sys/socket.h
676 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
677 # needed for TIOCWIN* defines in termios.h
678 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
679 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
680 solarisnetlibs
="-lsocket -lnsl -lresolv"
681 LIBS
="$solarisnetlibs $LIBS"
682 libs_qga
="$solarisnetlibs $libs_qga"
690 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
691 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
695 audio_possible_drivers
="oss alsa sdl pa"
701 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
705 if [ "$bsd" = "yes" ] ; then
706 if [ "$darwin" != "yes" ] ; then
711 : ${make=${MAKE-make}}
712 : ${install=${INSTALL-install}}
713 : ${python=${PYTHON-python}}
714 : ${smbd=${SMBD-/usr/sbin/smbd}}
716 # Default objcc to clang if available, otherwise use CC
723 if test "$mingw32" = "yes" ; then
726 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
727 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
728 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
729 # MinGW-w64 needs _POSIX defined.
730 QEMU_CFLAGS
="-D_POSIX=1 $QEMU_CFLAGS"
731 # MinGW needs -mthreads for TLS and macro _MT.
732 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
733 QEMU_CFLAGS
="-I\$(SRC_PATH)/hosts/w32/include $QEMU_CFLAGS"
734 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
736 if compile_prog
"" "-liberty" ; then
737 LIBS
="-liberty $LIBS"
739 prefix
="c:/Program Files/QEMU"
742 qemu_docdir
="\${prefix}"
744 sysconfdir
="\${prefix}"
747 libs_qga
="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
753 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
755 --help|
-h) show_help
=yes
757 --version|
-V) exec cat $source_path/VERSION
759 --prefix=*) prefix
="$optarg"
761 --interp-prefix=*) interp_prefix
="$optarg"
769 --host-cc=*) host_cc
="$optarg"
773 --iasl=*) iasl
="$optarg"
775 --objcc=*) objcc
="$optarg"
777 --make=*) make="$optarg"
779 --install=*) install="$optarg"
781 --python=*) python
="$optarg"
783 --gcov=*) gcov_tool
="$optarg"
785 --smbd=*) smbd
="$optarg"
793 --disable-debug-info)
803 --target-list=*) target_list
="$optarg"
805 --enable-trace-backends=*) trace_backends
="$optarg"
807 # XXX: backwards compatibility
808 --enable-trace-backend=*) trace_backends
="$optarg"
810 --with-trace-file=*) trace_file
="$optarg"
812 --enable-gprof) gprof
="yes"
814 --enable-gcov) gcov
="yes"
818 LDFLAGS
="-static $LDFLAGS"
819 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
821 --mandir=*) mandir
="$optarg"
823 --bindir=*) bindir
="$optarg"
825 --libdir=*) libdir
="$optarg"
827 --libexecdir=*) libexecdir
="$optarg"
829 --includedir=*) includedir
="$optarg"
831 --datadir=*) datadir
="$optarg"
833 --with-confsuffix=*) confsuffix
="$optarg"
835 --docdir=*) qemu_docdir
="$optarg"
837 --sysconfdir=*) sysconfdir
="$optarg"
839 --localstatedir=*) local_statedir
="$optarg"
841 --sbindir=*|
--sharedstatedir=*|\
842 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
843 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
844 # These switches are silently ignored, for compatibility with
845 # autoconf-generated configure scripts. This allows QEMU's
846 # configure to be used by RPM and similar macros that set
847 # lots of directory switches by default.
849 --with-system-pixman) pixman
="system"
851 --without-system-pixman) pixman
="internal"
853 --without-pixman) pixman
="none"
855 --disable-sdl) sdl
="no"
857 --enable-sdl) sdl
="yes"
859 --with-sdlabi=*) sdlabi
="$optarg"
861 --disable-qom-cast-debug) qom_cast_debug
="no"
863 --enable-qom-cast-debug) qom_cast_debug
="yes"
865 --disable-virtfs) virtfs
="no"
867 --enable-virtfs) virtfs
="yes"
869 --disable-vnc) vnc
="no"
871 --enable-vnc) vnc
="yes"
873 --oss-lib=*) oss_lib
="$optarg"
875 --audio-drv-list=*) audio_drv_list
="$optarg"
877 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
879 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
881 --enable-debug-tcg) debug_tcg
="yes"
883 --disable-debug-tcg) debug_tcg
="no"
886 # Enable debugging options that aren't excessively noisy
892 --enable-sparse) sparse
="yes"
894 --disable-sparse) sparse
="no"
896 --disable-strip) strip_opt
="no"
898 --disable-vnc-sasl) vnc_sasl
="no"
900 --enable-vnc-sasl) vnc_sasl
="yes"
902 --disable-vnc-jpeg) vnc_jpeg
="no"
904 --enable-vnc-jpeg) vnc_jpeg
="yes"
906 --disable-vnc-png) vnc_png
="no"
908 --enable-vnc-png) vnc_png
="yes"
910 --disable-slirp) slirp
="no"
912 --disable-uuid) uuid
="no"
914 --enable-uuid) uuid
="yes"
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 --disable-docs) docs
="no"
1037 --enable-docs) docs
="yes"
1039 --disable-vhost-net) vhost_net
="no"
1041 --enable-vhost-net) vhost_net
="yes"
1043 --disable-vhost-scsi) vhost_scsi
="no"
1045 --enable-vhost-scsi) vhost_scsi
="yes"
1047 --disable-opengl) opengl
="no"
1049 --enable-opengl) opengl
="yes"
1051 --disable-rbd) rbd
="no"
1053 --enable-rbd) rbd
="yes"
1055 --disable-xfsctl) xfs
="no"
1057 --enable-xfsctl) xfs
="yes"
1059 --disable-smartcard) smartcard
="no"
1061 --enable-smartcard) smartcard
="yes"
1063 --disable-libusb) libusb
="no"
1065 --enable-libusb) libusb
="yes"
1067 --disable-usb-redir) usb_redir
="no"
1069 --enable-usb-redir) usb_redir
="yes"
1071 --disable-zlib-test) zlib
="no"
1073 --disable-lzo) lzo
="no"
1075 --enable-lzo) lzo
="yes"
1077 --disable-snappy) snappy
="no"
1079 --enable-snappy) snappy
="yes"
1081 --disable-bzip2) bzip2="no"
1083 --enable-bzip2) bzip2="yes"
1085 --enable-guest-agent) guest_agent
="yes"
1087 --disable-guest-agent) guest_agent
="no"
1089 --enable-guest-agent-msi) guest_agent_msi
="yes"
1091 --disable-guest-agent-msi) guest_agent_msi
="no"
1093 --with-vss-sdk) vss_win32_sdk
=""
1095 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1097 --without-vss-sdk) vss_win32_sdk
="no"
1099 --with-win-sdk) win_sdk
=""
1101 --with-win-sdk=*) win_sdk
="$optarg"
1103 --without-win-sdk) win_sdk
="no"
1105 --enable-tools) want_tools
="yes"
1107 --disable-tools) want_tools
="no"
1109 --enable-seccomp) seccomp
="yes"
1111 --disable-seccomp) seccomp
="no"
1113 --disable-glusterfs) glusterfs
="no"
1115 --enable-glusterfs) glusterfs
="yes"
1117 --disable-archipelago) archipelago
="no"
1119 --enable-archipelago) archipelago
="yes"
1121 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1122 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1124 --disable-gtk) gtk
="no"
1126 --enable-gtk) gtk
="yes"
1128 --tls-priority=*) tls_priority
="$optarg"
1130 --disable-gnutls) gnutls
="no"
1132 --enable-gnutls) gnutls
="yes"
1134 --disable-nettle) nettle
="no"
1136 --enable-nettle) nettle
="yes"
1138 --disable-gcrypt) gcrypt
="no"
1140 --enable-gcrypt) gcrypt
="yes"
1142 --enable-rdma) rdma
="yes"
1144 --disable-rdma) rdma
="no"
1146 --with-gtkabi=*) gtkabi
="$optarg"
1148 --disable-vte) vte
="no"
1150 --enable-vte) vte
="yes"
1152 --disable-virglrenderer) virglrenderer
="no"
1154 --enable-virglrenderer) virglrenderer
="yes"
1156 --disable-tpm) tpm
="no"
1158 --enable-tpm) tpm
="yes"
1160 --disable-libssh2) libssh2
="no"
1162 --enable-libssh2) libssh2
="yes"
1164 --enable-vhdx) vhdx
="yes"
1166 --disable-vhdx) vhdx
="no"
1168 --disable-numa) numa
="no"
1170 --enable-numa) numa
="yes"
1172 --disable-tcmalloc) tcmalloc
="no"
1174 --enable-tcmalloc) tcmalloc
="yes"
1176 --disable-jemalloc) jemalloc
="no"
1178 --enable-jemalloc) jemalloc
="yes"
1181 echo "ERROR: unknown option $opt"
1182 echo "Try '$0 --help' for more information"
1188 if ! has
$python; then
1189 error_exit
"Python not found. Use --python=/path/to/python"
1192 # Note that if the Python conditional here evaluates True we will exit
1193 # with status 1 which is a shell 'false' value.
1194 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1195 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1196 "Note that Python 3 or later is not yet supported." \
1197 "Use --python=/path/to/python to specify a supported Python."
1200 # Suppress writing compiled files
1206 LDFLAGS
="-m32 $LDFLAGS"
1210 LDFLAGS
="-m64 $LDFLAGS"
1213 LDFLAGS
="-m32 $LDFLAGS"
1214 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1217 LDFLAGS
="-m64 $LDFLAGS"
1218 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1222 LDFLAGS
="-m31 $LDFLAGS"
1226 LDFLAGS
="-m64 $LDFLAGS"
1230 LDFLAGS
="-m32 $LDFLAGS"
1231 cc_i386
='$(CC) -m32'
1235 LDFLAGS
="-m64 $LDFLAGS"
1236 cc_i386
='$(CC) -m32'
1240 LDFLAGS
="-mx32 $LDFLAGS"
1241 cc_i386
='$(CC) -m32'
1243 # No special flags required for other host CPUs
1246 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1247 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1249 # For user-mode emulation the host arch has to be one we explicitly
1250 # support, even if we're using TCI.
1251 if [ "$ARCH" = "unknown" ]; then
1256 default_target_list
=""
1260 if [ "$softmmu" = "yes" ]; then
1261 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1263 if [ "$linux_user" = "yes" ]; then
1264 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1266 if [ "$bsd_user" = "yes" ]; then
1267 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1270 for config
in $mak_wilds; do
1271 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1274 if test x
"$show_help" = x
"yes" ; then
1277 Usage: configure [options]
1278 Options: [defaults in brackets after descriptions]
1281 --help print this message
1282 --prefix=PREFIX install in PREFIX [$prefix]
1283 --interp-prefix=PREFIX where to find shared libraries, etc.
1284 use %M for cpu name [$interp_prefix]
1285 --target-list=LIST set target list (default: build everything)
1286 $(echo Available targets: $default_target_list | \
1287 fold -s -w 53 | sed -e 's/^/ /')
1289 Advanced options (experts only):
1290 --source-path=PATH path of source code [$source_path]
1291 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1292 --cc=CC use C compiler CC [$cc]
1293 --iasl=IASL use ACPI compiler IASL [$iasl]
1294 --host-cc=CC use C compiler CC [$host_cc] for code run at
1296 --cxx=CXX use C++ compiler CXX [$cxx]
1297 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1298 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1299 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1300 --make=MAKE use specified make [$make]
1301 --install=INSTALL use specified install [$install]
1302 --python=PYTHON use specified python [$python]
1303 --smbd=SMBD use specified smbd [$smbd]
1304 --static enable static build [$static]
1305 --mandir=PATH install man pages in PATH
1306 --datadir=PATH install firmware in PATH$confsuffix
1307 --docdir=PATH install documentation in PATH$confsuffix
1308 --bindir=PATH install binaries in PATH
1309 --libdir=PATH install libraries in PATH
1310 --sysconfdir=PATH install config in PATH$confsuffix
1311 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1312 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1313 --enable-debug enable common debug build options
1314 --disable-strip disable stripping binaries
1315 --disable-werror disable compilation abort on warning
1316 --disable-stack-protector disable compiler-provided stack protection
1317 --audio-drv-list=LIST set audio drivers list:
1318 Available drivers: $audio_possible_drivers
1319 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1320 --block-drv-rw-whitelist=L
1321 set block driver read-write whitelist
1322 (affects only QEMU, not qemu-img)
1323 --block-drv-ro-whitelist=L
1324 set block driver read-only whitelist
1325 (affects only QEMU, not qemu-img)
1326 --enable-trace-backends=B Set trace backend
1327 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1328 --with-trace-file=NAME Full PATH,NAME of file to store traces
1330 --disable-slirp disable SLIRP userspace network connectivity
1331 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1332 --oss-lib path to OSS library
1333 --cpu=CPU Build for host CPU [$cpu]
1334 --with-coroutine=BACKEND coroutine backend. Supported options:
1335 gthread, ucontext, sigaltstack, windows
1336 --enable-gcov enable test coverage analysis with gcov
1337 --gcov=GCOV use specified gcov [$gcov_tool]
1338 --disable-blobs disable installing provided firmware blobs
1339 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1340 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1341 --tls-priority default TLS protocol/cipher priority string
1343 Optional features, enabled with --enable-FEATURE and
1344 disabled with --disable-FEATURE, default is enabled if available:
1346 system all system emulation targets
1347 user supported user emulation targets
1348 linux-user all linux usermode emulation targets
1349 bsd-user all BSD usermode emulation targets
1350 docs build documentation
1351 guest-agent build the QEMU Guest Agent
1352 guest-agent-msi build guest agent Windows MSI installation package
1353 pie Position Independent Executables
1354 modules modules support
1355 debug-tcg TCG debugging (default is disabled)
1356 debug-info debugging information
1357 sparse sparse checker
1359 gnutls GNUTLS cryptography support
1360 nettle nettle cryptography support
1361 gcrypt libgcrypt cryptography support
1363 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1365 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1366 vte vte support for the gtk UI
1369 vnc-sasl SASL encryption for VNC server
1370 vnc-jpeg JPEG lossy compression for VNC server
1371 vnc-png PNG compression for VNC server
1372 cocoa Cocoa UI (Mac OS X only)
1374 xen xen backend driver support
1376 brlapi BrlAPI (Braile)
1377 curl curl connectivity
1379 bluez bluez stack connectivity
1380 kvm KVM acceleration support
1381 rdma RDMA-based migration support
1383 vde support for vde network
1384 netmap support for netmap network
1385 linux-aio Linux AIO support
1386 cap-ng libcap-ng support
1387 attr attr and xattr support
1388 vhost-net vhost-net acceleration support
1390 rbd rados block device (rbd)
1391 libiscsi iscsi support
1393 smartcard smartcard support (libcacard)
1394 libusb libusb (for usb passthrough)
1395 usb-redir usb network redirection support
1396 lzo support of lzo compression library
1397 snappy support of snappy compression library
1398 bzip2 support of bzip2 compression library
1399 (for reading bzip2-compressed dmg images)
1400 seccomp seccomp support
1401 coroutine-pool coroutine freelist (better performance)
1402 glusterfs GlusterFS backend
1403 archipelago Archipelago backend
1405 libssh2 ssh block device support
1406 vhdx support for the Microsoft VHDX image format
1407 numa libnuma support
1408 tcmalloc tcmalloc support
1409 jemalloc jemalloc support
1411 NOTE: The object files are built at the place where configure is launched
1416 # Now we have handled --enable-tcg-interpreter and know we're not just
1417 # printing the help message, bail out if the host CPU isn't supported.
1418 if test "$ARCH" = "unknown"; then
1419 if test "$tcg_interpreter" = "yes" ; then
1420 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1422 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1426 # Consult white-list to determine whether to enable werror
1427 # by default. Only enable by default for git builds
1428 if test -z "$werror" ; then
1429 if test -d "$source_path/.git" -a \
1430 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1437 # check that the C compiler works.
1439 if compile_object
; then
1440 : C compiler works ok
1442 error_exit
"\"$cc\" either does not exist or does not work"
1444 if ! compile_prog
; then
1445 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1448 # Check that the C++ compiler exists and works with the C compiler
1451 int c_function(void);
1452 int main(void) { return c_function(); }
1459 int c_function(void);
1461 int c_function(void) { return 42; }
1466 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1467 # C++ compiler $cxx works ok with C compiler $cc
1470 echo "C++ compiler $cxx does not work with C compiler $cc"
1471 echo "Disabling C++ specific optional code"
1475 echo "No C++ compiler available; disabling C++ specific optional code"
1479 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1480 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1481 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1482 gcc_flags
="-Wunused-but-set-variable $gcc_flags"
1483 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1484 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1485 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1486 # Note that we do not add -Werror to gcc_flags here, because that would
1487 # enable it for all configure tests. If a configure test failed due
1488 # to -Werror this would just silently disable some features,
1489 # so it's too error prone.
1491 cc_has_warning_flag
() {
1494 # Use the positive sense of the flag when testing for -Wno-wombat
1495 # support (gcc will happily accept the -Wno- form of unknown
1497 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1498 compile_prog
"-Werror $optflag" ""
1501 for flag
in $gcc_flags; do
1502 if cc_has_warning_flag
$flag ; then
1503 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1507 if test "$mingw32" = "yes"; then
1508 stack_protector
="no"
1510 if test "$stack_protector" != "no"; then
1512 int main(int argc, char *argv[])
1514 char arr[64], *p = arr, *c = argv[0];
1521 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1523 for flag
in $gcc_flags; do
1524 # We need to check both a compile and a link, since some compiler
1525 # setups fail only on a .c->.o compile and some only at link time
1526 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1527 compile_prog
"-Werror $flag" ""; then
1528 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1533 if test "$stack_protector" = yes; then
1534 if test $sp_on = 0; then
1535 error_exit
"Stack protector not supported"
1540 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1541 # large functions that use global variables. The bug is in all releases of
1542 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1543 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1545 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1546 int main(void) { return 0; }
1548 #error No bug in this compiler.
1551 if compile_prog
"-Werror -fno-gcse" "" ; then
1552 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1555 if test "$static" = "yes" ; then
1556 if test "$modules" = "yes" ; then
1557 error_exit
"static and modules are mutually incompatible"
1559 if test "$pie" = "yes" ; then
1560 error_exit
"static and pie are mutually incompatible"
1566 # Unconditional check for compiler __thread support
1568 static __thread int tls_var;
1569 int main(void) { return tls_var; }
1572 if ! compile_prog
"-Werror" "" ; then
1573 error_exit
"Your compiler does not support the __thread specifier for " \
1574 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1577 if test "$pie" = ""; then
1578 case "$cpu-$targetos" in
1579 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1587 if test "$pie" != "no" ; then
1591 # define THREAD __thread
1596 static THREAD int tls_var;
1598 int main(void) { return tls_var; }
1601 if compile_prog
"-fPIE -DPIE" "-pie"; then
1602 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1603 LDFLAGS
="-pie $LDFLAGS"
1605 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1606 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1609 if test "$pie" = "yes"; then
1610 error_exit
"PIE not available due to missing toolchain support"
1612 echo "Disabling PIE due to missing toolchain support"
1617 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1618 CFLAGS_NOPIE
="-fno-pie"
1619 LDFLAGS_NOPIE
="-nopie"
1623 ##########################################
1624 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1625 # use i686 as default anyway, but for those that don't, an explicit
1626 # specification is necessary
1628 if test "$cpu" = "i386"; then
1630 static int sfaa(int *ptr)
1632 return __sync_fetch_and_and(ptr, 0);
1638 val = __sync_val_compare_and_swap(&val, 0, 1);
1643 if ! compile_prog
"" "" ; then
1644 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1648 #########################################
1649 # Solaris specific configure tool chain decisions
1651 if test "$solaris" = "yes" ; then
1652 if has
$install; then
1655 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1656 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1657 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1659 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1660 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1661 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1662 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1667 if test -f /usr
/ccs
/bin
/ar ; then
1668 error_exit
"No path includes ar" \
1669 "Add /usr/ccs/bin to your path and rerun configure"
1671 error_exit
"No path includes ar"
1675 if test -z "${target_list+xxx}" ; then
1676 target_list
="$default_target_list"
1678 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1681 # Check that we recognised the target name; this allows a more
1682 # friendly error message than if we let it fall through.
1683 for target
in $target_list; do
1684 case " $default_target_list " in
1688 error_exit
"Unknown target name '$target'"
1693 # see if system emulation was really requested
1694 case " $target_list " in
1695 *"-softmmu "*) softmmu
=yes
1701 feature_not_found
() {
1705 error_exit
"User requested feature $feature" \
1706 "configure was not able to find it." \
1711 # big/little endian test
1713 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1714 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1715 extern int foo(short *, short *);
1716 int main(int argc, char *argv[]) {
1717 return foo(big_endian, little_endian);
1721 if compile_object
; then
1722 if grep -q BiGeNdIaN
$TMPO ; then
1724 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1727 echo big
/little
test failed
1730 echo big
/little
test failed
1733 ##########################################
1734 # cocoa implies not SDL or GTK
1735 # (the cocoa UI code currently assumes it is always the active UI
1736 # and doesn't interact well with other UI frontend code)
1737 if test "$cocoa" = "yes"; then
1738 if test "$sdl" = "yes"; then
1739 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1741 if test "$gtk" = "yes"; then
1742 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1748 ##########################################
1752 #include <sys/socket.h>
1753 #include <linux/ip.h>
1754 int main(void) { return sizeof(struct mmsghdr); }
1756 if compile_prog
"" "" ; then
1762 ##########################################
1763 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1765 if test "$mingw32" = "yes"; then
1766 # Some versions of MinGW / Mingw-w64 lack localtime_r
1767 # and gmtime_r entirely.
1769 # Some versions of Mingw-w64 define a macro for
1770 # localtime_r/gmtime_r.
1772 # Some versions of Mingw-w64 will define functions
1773 # for localtime_r/gmtime_r, but only if you have
1774 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1775 # though, unistd.h and pthread.h both define
1778 # So this #undef localtime_r and #include <unistd.h>
1779 # are not in fact redundant.
1784 int main(void) { localtime_r(NULL, NULL); return 0; }
1786 if compile_prog
"" "" ; then
1793 ##########################################
1796 if ! has
"$pkg_config_exe"; then
1797 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1800 ##########################################
1803 if test "$linux_user" = "yes"; then
1806 #include <linux/futex.h>
1808 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1814 if ! compile_object
; then
1815 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1819 ##########################################
1820 # avx2 optimization requirement check
1823 if test "$static" = "no" ; then
1825 #pragma GCC push_options
1826 #pragma GCC target("avx2")
1828 #include <immintrin.h>
1830 static int bar(void *a) {
1831 return _mm256_movemask_epi8(_mm256_cmpeq_epi8(*(__m256i *)a, (__m256i){0}));
1833 static void *bar_ifunc(void) {return (void*) bar;}
1834 int foo(void *a) __attribute__((ifunc("bar_ifunc")));
1835 int main(int argc, char *argv[]) { return foo(argv[0]);}
1837 if compile_object
"" ; then
1838 if has readelf
; then
1839 if readelf
--syms $TMPO 2>/dev
/null |
grep -q "IFUNC.*foo"; then
1846 #########################################
1849 if test "$zlib" != "no" ; then
1852 int main(void) { zlibVersion(); return 0; }
1854 if compile_prog
"" "-lz" ; then
1857 error_exit
"zlib check failed" \
1858 "Make sure to have the zlib libs and headers installed."
1863 ##########################################
1866 if test "$lzo" != "no" ; then
1868 #include <lzo/lzo1x.h>
1869 int main(void) { lzo_version(); return 0; }
1871 if compile_prog
"" "-llzo2" ; then
1872 libs_softmmu
="$libs_softmmu -llzo2"
1875 if test "$lzo" = "yes"; then
1876 feature_not_found
"liblzo2" "Install liblzo2 devel"
1882 ##########################################
1885 if test "$snappy" != "no" ; then
1887 #include <snappy-c.h>
1888 int main(void) { snappy_max_compressed_length(4096); return 0; }
1890 if compile_prog
"" "-lsnappy" ; then
1891 libs_softmmu
="$libs_softmmu -lsnappy"
1894 if test "$snappy" = "yes"; then
1895 feature_not_found
"libsnappy" "Install libsnappy devel"
1901 ##########################################
1904 if test "$bzip2" != "no" ; then
1907 int main(void) { BZ2_bzlibVersion(); return 0; }
1909 if compile_prog
"" "-lbz2" ; then
1912 if test "$bzip2" = "yes"; then
1913 feature_not_found
"libbzip2" "Install libbzip2 devel"
1919 ##########################################
1922 if test "$seccomp" != "no" ; then
1925 libseccomp_minver
="2.1.0"
1928 libseccomp_minver
="2.2.0"
1931 libseccomp_minver
="2.2.3"
1934 libseccomp_minver
="2.3.0"
1937 libseccomp_minver
=""
1941 if test "$libseccomp_minver" != "" &&
1942 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
1943 libs_softmmu
="$libs_softmmu $($pkg_config --libs libseccomp)"
1944 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
1947 if test "$seccomp" = "yes" ; then
1948 if test "$libseccomp_minver" != "" ; then
1949 feature_not_found
"libseccomp" \
1950 "Install libseccomp devel >= $libseccomp_minver"
1952 feature_not_found
"libseccomp" \
1953 "libseccomp is not supported for host cpu $cpu"
1959 ##########################################
1962 if test "$xen" != "no" ; then
1963 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1964 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
1966 # First we test whether Xen headers and libraries are available.
1967 # If no, we are done and there is no Xen support.
1968 # If yes, more tests are run to detect the Xen version.
1972 #include <xenctrl.h>
1977 if ! compile_prog
"" "$xen_libs" ; then
1979 if test "$xen" = "yes" ; then
1980 feature_not_found
"xen" "Install xen devel"
1986 cat > $TMPC <<EOF &&
1988 * If we have stable libs the we don't want the libxc compat
1989 * layers, regardless of what CFLAGS we may have been given.
1991 #undef XC_WANT_COMPAT_EVTCHN_API
1992 #undef XC_WANT_COMPAT_GNTTAB_API
1993 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
1994 #include <xenctrl.h>
1995 #include <xenstore.h>
1996 #include <xenevtchn.h>
1997 #include <xengnttab.h>
1998 #include <xenforeignmemory.h>
2000 #include <xen/hvm/hvm_info_table.h>
2001 #if !defined(HVM_MAX_VCPUS)
2002 # error HVM_MAX_VCPUS not defined
2005 xc_interface *xc = NULL;
2006 xenforeignmemory_handle *xfmem;
2007 xenevtchn_handle *xe;
2008 xengnttab_handle *xg;
2009 xen_domain_handle_t handle;
2013 xc = xc_interface_open(0, 0, 0);
2014 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2015 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2016 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2017 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2018 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2020 xfmem = xenforeignmemory_open(0, 0);
2021 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2023 xe = xenevtchn_open(0, 0);
2026 xg = xengnttab_open(0, 0);
2027 xengnttab_map_grant_ref(xg, 0, 0, 0);
2032 compile_prog
"" "$xen_libs $xen_stable_libs"
2034 xen_ctrl_version
=471
2037 cat > $TMPC <<EOF &&
2038 #include <xenctrl.h>
2041 xc_interface *xc = NULL;
2042 xen_domain_handle_t handle;
2043 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2047 compile_prog
"" "$xen_libs"
2049 xen_ctrl_version
=470
2054 cat > $TMPC <<EOF &&
2055 #include <xenctrl.h>
2056 #include <xenstore.h>
2058 #include <xen/hvm/hvm_info_table.h>
2059 #if !defined(HVM_MAX_VCPUS)
2060 # error HVM_MAX_VCPUS not defined
2065 xc = xc_interface_open(0, 0, 0);
2066 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2067 xc_gnttab_open(NULL, 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_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2075 compile_prog
"" "$xen_libs"
2077 xen_ctrl_version
=460
2082 cat > $TMPC <<EOF &&
2083 #include <xenctrl.h>
2084 #include <xenstore.h>
2086 #include <xen/hvm/hvm_info_table.h>
2087 #if !defined(HVM_MAX_VCPUS)
2088 # error HVM_MAX_VCPUS not defined
2093 xc = xc_interface_open(0, 0, 0);
2094 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2095 xc_gnttab_open(NULL, 0);
2096 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2097 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2098 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2102 compile_prog
"" "$xen_libs"
2104 xen_ctrl_version
=450
2108 cat > $TMPC <<EOF &&
2109 #include <xenctrl.h>
2110 #include <xenstore.h>
2112 #include <xen/hvm/hvm_info_table.h>
2113 #if !defined(HVM_MAX_VCPUS)
2114 # error HVM_MAX_VCPUS not defined
2119 xc = xc_interface_open(0, 0, 0);
2120 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2121 xc_gnttab_open(NULL, 0);
2122 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2123 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2127 compile_prog
"" "$xen_libs"
2129 xen_ctrl_version
=420
2133 if test "$xen" = "yes" ; then
2134 feature_not_found
"xen (unsupported version)" \
2135 "Install a supported xen (xen 4.2 or newer)"
2140 if test "$xen" = yes; then
2141 if test $xen_ctrl_version -ge 471 ; then
2142 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2144 libs_softmmu
="$xen_libs $libs_softmmu"
2148 if test "$xen_pci_passthrough" != "no"; then
2149 if test "$xen" = "yes" && test "$linux" = "yes"; then
2150 xen_pci_passthrough
=yes
2152 if test "$xen_pci_passthrough" = "yes"; then
2153 error_exit
"User requested feature Xen PCI Passthrough" \
2154 " but this feature requires /sys from Linux"
2156 xen_pci_passthrough
=no
2160 if test "$xen_pv_domain_build" = "yes" &&
2161 test "$xen" != "yes"; then
2162 error_exit
"User requested Xen PV domain builder support" \
2163 "which requires Xen support."
2166 ##########################################
2168 if test "$sparse" != "no" ; then
2172 if test "$sparse" = "yes" ; then
2173 feature_not_found
"sparse" "Install sparse binary"
2179 ##########################################
2183 if $pkg_config --exists "x11"; then
2184 x11_cflags
=$
($pkg_config --cflags x11
)
2185 x11_libs
=$
($pkg_config --libs x11
)
2188 ##########################################
2191 if test "$gtkabi" = ""; then
2192 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2193 # Use 3.0 as a fallback if that is available.
2194 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2196 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2203 if test "$gtk" != "no"; then
2204 gtkpackage
="gtk+-$gtkabi"
2205 gtkx11package
="gtk+-x11-$gtkabi"
2206 if test "$gtkabi" = "3.0" ; then
2211 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2212 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2213 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2214 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2215 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2216 gtk_cflags
="$gtk_cflags $x11_cflags"
2217 gtk_libs
="$gtk_libs $x11_libs"
2219 libs_softmmu
="$gtk_libs $libs_softmmu"
2221 elif test "$gtk" = "yes"; then
2222 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2229 ##########################################
2233 # Unfortunately some distros have bad pkg-config information for gnutls
2234 # such that it claims to exist but you get a compiler error if you try
2235 # to use the options returned by --libs. Specifically, Ubuntu for --static
2236 # builds doesn't work:
2237 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2239 # So sanity check the cflags/libs before assuming gnutls can be used.
2240 if ! $pkg_config --exists "gnutls"; then
2245 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2250 if test "$gnutls" != "no"; then
2251 if gnutls_works
; then
2252 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2253 gnutls_libs
=$
($pkg_config --libs gnutls
)
2254 libs_softmmu
="$gnutls_libs $libs_softmmu"
2255 libs_tools
="$gnutls_libs $libs_tools"
2256 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2259 # gnutls_rnd requires >= 2.11.0
2260 if $pkg_config --exists "gnutls >= 2.11.0"; then
2266 if $pkg_config --exists 'gnutls >= 3.0'; then
2269 elif $pkg_config --exists 'gnutls >= 2.12'; then
2270 case $
($pkg_config --libs --static gnutls
) in
2288 elif test "$gnutls" = "yes"; then
2289 feature_not_found
"gnutls" "Install gnutls devel"
2299 # If user didn't give a --disable/enable-gcrypt flag,
2300 # then mark as disabled if user requested nettle
2301 # explicitly, or if gnutls links to nettle
2302 if test -z "$gcrypt"
2304 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2310 # If user didn't give a --disable/enable-nettle flag,
2311 # then mark as disabled if user requested gcrypt
2312 # explicitly, or if gnutls links to gcrypt
2313 if test -z "$nettle"
2315 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2321 has_libgcrypt_config
() {
2322 if ! has
"libgcrypt-config"
2327 if test -n "$cross_prefix"
2329 host=$
(libgcrypt-config
--host)
2330 if test "$host-" != $cross_prefix
2339 if test "$gcrypt" != "no"; then
2340 if has_libgcrypt_config
; then
2341 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2342 gcrypt_libs
=$
(libgcrypt-config
--libs)
2343 # Debian has remove -lgpg-error from libgcrypt-config
2344 # as it "spreads unnecessary dependencies" which in
2345 # turn breaks static builds...
2346 if test "$static" = "yes"
2348 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2350 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2351 libs_tools
="$gcrypt_libs $libs_tools"
2352 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2354 if test -z "$nettle"; then
2361 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2363 NULL, 0, 0, 0, NULL);
2367 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2371 if test "$gcrypt" = "yes"; then
2372 feature_not_found
"gcrypt" "Install gcrypt devel"
2380 if test "$nettle" != "no"; then
2381 if $pkg_config --exists "nettle"; then
2382 nettle_cflags
=$
($pkg_config --cflags nettle
)
2383 nettle_libs
=$
($pkg_config --libs nettle
)
2384 nettle_version
=$
($pkg_config --modversion nettle
)
2385 libs_softmmu
="$nettle_libs $libs_softmmu"
2386 libs_tools
="$nettle_libs $libs_tools"
2387 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2392 #include <nettle/pbkdf2.h>
2394 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2398 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2402 if test "$nettle" = "yes"; then
2403 feature_not_found
"nettle" "Install nettle devel"
2410 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2412 error_exit
"Only one of gcrypt & nettle can be enabled"
2415 ##########################################
2416 # libtasn1 - only for the TLS creds/session test suite
2421 if $pkg_config --exists "libtasn1"; then
2422 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2423 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2429 ##########################################
2430 # getifaddrs (for tests/test-io-channel-socket )
2433 if ! check_include
"ifaddrs.h" ; then
2437 ##########################################
2440 if test "$vte" != "no"; then
2441 if test "$gtkabi" = "3.0"; then
2442 vteminversion
="0.32.0"
2443 if $pkg_config --exists "vte-2.91"; then
2444 vtepackage
="vte-2.91"
2446 vtepackage
="vte-2.90"
2450 vteminversion
="0.24.0"
2452 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2453 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2454 vte_libs
=$
($pkg_config --libs $vtepackage)
2455 vteversion
=$
($pkg_config --modversion $vtepackage)
2456 libs_softmmu
="$vte_libs $libs_softmmu"
2458 elif test "$vte" = "yes"; then
2459 if test "$gtkabi" = "3.0"; then
2460 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2462 feature_not_found
"vte" "Install libvte devel"
2469 ##########################################
2472 # Look for sdl configuration program (pkg-config or sdl-config). Try
2473 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2475 if test "$sdlabi" = ""; then
2476 if $pkg_config --exists "sdl"; then
2478 elif $pkg_config --exists "sdl2"; then
2485 if test $sdlabi = "2.0"; then
2486 sdl_config
=$sdl2_config
2488 sdlconfigname
=sdl2_config
2489 elif test $sdlabi = "1.2"; then
2491 sdlconfigname
=sdl_config
2493 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2496 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2497 sdl_config
=$sdlconfigname
2500 if $pkg_config $sdlname --exists; then
2501 sdlconfig
="$pkg_config $sdlname"
2502 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2503 elif has
${sdl_config}; then
2504 sdlconfig
="$sdl_config"
2505 sdlversion
=$
($sdlconfig --version)
2507 if test "$sdl" = "yes" ; then
2508 feature_not_found
"sdl" "Install SDL devel"
2512 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2513 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2517 if test "$sdl" != "no" ; then
2520 #undef main /* We don't want SDL to override our main() */
2521 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2523 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2524 if test "$static" = "yes" ; then
2525 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2527 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2529 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2530 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2536 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2537 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2538 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2539 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2540 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2542 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2548 else # sdl not found
2549 if test "$sdl" = "yes" ; then
2550 feature_not_found
"sdl" "Install SDL devel"
2553 fi # sdl compile test
2556 if test "$sdl" = "yes" ; then
2559 #if defined(SDL_VIDEO_DRIVER_X11)
2560 #include <X11/XKBlib.h>
2562 #error No x11 support
2564 int main(void) { return 0; }
2566 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2567 sdl_cflags
="$sdl_cflags $x11_cflags"
2568 sdl_libs
="$sdl_libs $x11_libs"
2570 libs_softmmu
="$sdl_libs $libs_softmmu"
2573 ##########################################
2574 # RDMA needs OpenFabrics libraries
2575 if test "$rdma" != "no" ; then
2577 #include <rdma/rdma_cma.h>
2578 int main(void) { return 0; }
2580 rdma_libs
="-lrdmacm -libverbs"
2581 if compile_prog
"" "$rdma_libs" ; then
2583 libs_softmmu
="$libs_softmmu $rdma_libs"
2585 if test "$rdma" = "yes" ; then
2587 " OpenFabrics librdmacm/libibverbs not present." \
2589 " (1) Fast: Install infiniband packages from your distro." \
2590 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2591 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2597 ##########################################
2598 # VNC SASL detection
2599 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2601 #include <sasl/sasl.h>
2603 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2605 # Assuming Cyrus-SASL installed in /usr prefix
2607 vnc_sasl_libs
="-lsasl2"
2608 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2610 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2611 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2613 if test "$vnc_sasl" = "yes" ; then
2614 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2620 ##########################################
2621 # VNC JPEG detection
2622 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2625 #include <jpeglib.h>
2626 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2629 vnc_jpeg_libs
="-ljpeg"
2630 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2632 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2633 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2635 if test "$vnc_jpeg" = "yes" ; then
2636 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2642 ##########################################
2644 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2646 //#include <stdio.h>
2650 png_structp png_ptr;
2651 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2652 return png_ptr != 0;
2655 if $pkg_config libpng
--exists; then
2656 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2657 vnc_png_libs
=$
($pkg_config libpng
--libs)
2660 vnc_png_libs
="-lpng"
2662 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2664 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2665 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2667 if test "$vnc_png" = "yes" ; then
2668 feature_not_found
"vnc-png" "Install libpng devel"
2674 ##########################################
2675 # fnmatch() probe, used for ACL routines
2678 #include <fnmatch.h>
2681 fnmatch("foo", "foo", 0);
2685 if compile_prog
"" "" ; then
2689 ##########################################
2690 # uuid_generate() probe, used for vdi block driver
2691 # Note that on some systems (notably MacOSX) no extra library
2692 # need be linked to get the uuid functions.
2693 if test "$uuid" != "no" ; then
2696 #include <uuid/uuid.h>
2700 uuid_generate(my_uuid);
2704 if compile_prog
"" "" ; then
2706 elif compile_prog
"" "$uuid_libs" ; then
2708 libs_softmmu
="$uuid_libs $libs_softmmu"
2709 libs_tools
="$uuid_libs $libs_tools"
2711 if test "$uuid" = "yes" ; then
2712 feature_not_found
"uuid" "Install libuuid devel"
2718 if test "$vhdx" = "yes" ; then
2719 if test "$uuid" = "no" ; then
2720 error_exit
"uuid required for VHDX support"
2722 elif test "$vhdx" != "no" ; then
2723 if test "$uuid" = "yes" ; then
2730 ##########################################
2731 # xfsctl() probe, used for raw-posix
2732 if test "$xfs" != "no" ; then
2734 #include <stddef.h> /* NULL */
2735 #include <xfs/xfs.h>
2738 xfsctl(NULL, 0, 0, NULL);
2742 if compile_prog
"" "" ; then
2745 if test "$xfs" = "yes" ; then
2746 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2752 ##########################################
2753 # vde libraries probe
2754 if test "$vde" != "no" ; then
2755 vde_libs
="-lvdeplug"
2758 #include <libvdeplug.h>
2761 struct vde_open_args a = {0, 0, 0};
2767 if compile_prog
"" "$vde_libs" ; then
2769 libs_softmmu
="$vde_libs $libs_softmmu"
2770 libs_tools
="$vde_libs $libs_tools"
2772 if test "$vde" = "yes" ; then
2773 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2779 ##########################################
2780 # netmap support probe
2781 # Apart from looking for netmap headers, we make sure that the host API version
2782 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2783 # a minor/major version number. Minor new features will be marked with values up
2784 # to 15, and if something happens that requires a change to the backend we will
2785 # move above 15, submit the backend fixes and modify this two bounds.
2786 if test "$netmap" != "no" ; then
2788 #include <inttypes.h>
2790 #include <net/netmap.h>
2791 #include <net/netmap_user.h>
2792 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2795 int main(void) { return 0; }
2797 if compile_prog
"" "" ; then
2800 if test "$netmap" = "yes" ; then
2801 feature_not_found
"netmap"
2807 ##########################################
2808 # libcap-ng library probe
2809 if test "$cap_ng" != "no" ; then
2815 capng_capability_to_name(CAPNG_EFFECTIVE);
2819 if compile_prog
"" "$cap_libs" ; then
2821 libs_tools
="$cap_libs $libs_tools"
2823 if test "$cap_ng" = "yes" ; then
2824 feature_not_found
"cap_ng" "Install libcap-ng devel"
2830 ##########################################
2831 # Sound support libraries probe
2842 int main(void) { $exp }
2844 if compile_prog
"$cfl" "$lib" ; then
2847 error_exit
"$drv check failed" \
2848 "Make sure to have the $drv libs and headers installed."
2852 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
2853 for drv
in $audio_drv_list; do
2856 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2857 "return snd_pcm_close((snd_pcm_t *)0);"
2858 libs_softmmu
="-lasound $libs_softmmu"
2862 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
2863 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
2864 libs_softmmu
="-lpulse $libs_softmmu"
2869 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2873 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2878 libs_softmmu
="$oss_lib $libs_softmmu"
2882 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2886 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2887 error_exit
"Unknown driver '$drv' selected" \
2888 "Possible drivers are: $audio_possible_drivers"
2894 ##########################################
2897 if test "$brlapi" != "no" ; then
2898 brlapi_libs
="-lbrlapi"
2902 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2904 if compile_prog
"" "$brlapi_libs" ; then
2906 libs_softmmu
="$brlapi_libs $libs_softmmu"
2908 if test "$brlapi" = "yes" ; then
2909 feature_not_found
"brlapi" "Install brlapi devel"
2915 ##########################################
2917 if test "$curses" != "no" ; then
2918 if test "$mingw32" = "yes" ; then
2919 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
2921 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2927 const char *s = curses_version();
2933 for curses_lib
in $curses_list; do
2935 if compile_prog
"" "$curses_lib" ; then
2937 libs_softmmu
="$curses_lib $libs_softmmu"
2942 if test "$curses_found" = "yes" ; then
2945 if test "$curses" = "yes" ; then
2946 feature_not_found
"curses" "Install ncurses devel"
2952 ##########################################
2954 if test "$curl" != "no" ; then
2955 if $pkg_config libcurl
--exists; then
2956 curlconfig
="$pkg_config libcurl"
2958 curlconfig
=curl-config
2961 #include <curl/curl.h>
2962 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2964 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
2965 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
2966 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2969 if test "$curl" = "yes" ; then
2970 feature_not_found
"curl" "Install libcurl devel"
2976 ##########################################
2977 # bluez support probe
2978 if test "$bluez" != "no" ; then
2980 #include <bluetooth/bluetooth.h>
2981 int main(void) { return bt_error(0); }
2983 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
2984 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
2985 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2987 libs_softmmu
="$bluez_libs $libs_softmmu"
2989 if test "$bluez" = "yes" ; then
2990 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2996 ##########################################
2997 # glib support probe
3000 glib_modules
=gthread-2.0
3001 if test "$modules" = yes; then
3002 glib_modules
="$glib_modules gmodule-2.0"
3005 for i
in $glib_modules; do
3006 if $pkg_config --atleast-version=$glib_req_ver $i; then
3007 glib_cflags
=$
($pkg_config --cflags $i)
3008 glib_libs
=$
($pkg_config --libs $i)
3009 CFLAGS
="$glib_cflags $CFLAGS"
3010 LIBS
="$glib_libs $LIBS"
3011 libs_qga
="$glib_libs $libs_qga"
3013 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3017 # Sanity check that the current size_t matches the
3018 # size that glib thinks it should be. This catches
3019 # problems on multi-arch where people try to build
3020 # 32-bit QEMU while pointing at 64-bit glib headers
3025 #define QEMU_BUILD_BUG_ON(x) \
3026 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3029 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3034 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3035 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3036 "You probably need to set PKG_CONFIG_LIBDIR"\
3037 "to point to the right pkg-config files for your"\
3041 # g_test_trap_subprocess added in 2.38. Used by some tests.
3043 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
3047 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3050 int main(void) { return 0; }
3052 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3053 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3054 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3055 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3059 ##########################################
3060 # SHA command probe for modules
3061 if test "$modules" = yes; then
3062 shacmd_probe
="sha1sum sha1 shasum"
3063 for c
in $shacmd_probe; do
3069 if test "$shacmd" = ""; then
3070 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3074 ##########################################
3075 # pixman support probe
3077 if test "$pixman" = ""; then
3078 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3080 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3086 if test "$pixman" = "none"; then
3087 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3088 error_exit
"pixman disabled but system emulation or tools build" \
3089 "enabled. You can turn off pixman only if you also" \
3090 "disable all system emulation targets and the tools" \
3091 "build with '--disable-tools --disable-system'."
3095 elif test "$pixman" = "system"; then
3096 # pixman version has been checked above
3097 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3098 pixman_libs
=$
($pkg_config --libs pixman-1
)
3100 if test ! -d ${source_path}/pixman
/pixman
; then
3101 error_exit
"pixman >= 0.21.8 not present. Your options:" \
3102 " (1) Preferred: Install the pixman devel package (any recent" \
3103 " distro should have packages as Xorg needs pixman too)." \
3104 " (2) Fetch the pixman submodule, using:" \
3105 " git submodule update --init pixman"
3107 mkdir
-p pixman
/pixman
3108 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3109 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3112 ##########################################
3115 if test "$cap" != "no" ; then
3118 #include <sys/capability.h>
3119 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3121 if compile_prog
"" "-lcap" ; then
3128 ##########################################
3130 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3134 #include <pthread.h>
3135 static void *f(void *p) { return NULL; }
3138 pthread_create(&thread, 0, f, 0);
3142 if compile_prog
"" "" ; then
3145 for pthread_lib
in $PTHREADLIBS_LIST; do
3146 if compile_prog
"" "$pthread_lib" ; then
3149 for lib_entry
in $LIBS; do
3150 if test "$lib_entry" = "$pthread_lib"; then
3155 if test "$found" = "no"; then
3156 LIBS
="$pthread_lib $LIBS"
3158 PTHREAD_LIB
="$pthread_lib"
3164 if test "$mingw32" != yes -a "$pthread" = no
; then
3165 error_exit
"pthread check failed" \
3166 "Make sure to have the pthread libs and headers installed."
3169 # check for pthread_setname_np
3170 pthread_setname_np
=no
3172 #include <pthread.h>
3174 static void *f(void *p) { return NULL; }
3178 pthread_create(&thread, 0, f, 0);
3179 pthread_setname_np(thread, "QEMU");
3183 if compile_prog
"" "$pthread_lib" ; then
3184 pthread_setname_np
=yes
3187 ##########################################
3189 if test "$rbd" != "no" ; then
3192 #include <rbd/librbd.h>
3195 rados_create(&cluster, NULL);
3199 rbd_libs
="-lrbd -lrados"
3200 if compile_prog
"" "$rbd_libs" ; then
3203 if test "$rbd" = "yes" ; then
3204 feature_not_found
"rados block device" "Install librbd/ceph devel"
3210 ##########################################
3212 min_libssh2_version
=1.2.8
3213 if test "$libssh2" != "no" ; then
3214 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3215 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3216 libssh2_libs
=$
($pkg_config libssh2
--libs)
3219 if test "$libssh2" = "yes" ; then
3220 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3226 ##########################################
3227 # libssh2_sftp_fsync probe
3229 if test "$libssh2" = "yes"; then
3232 #include <libssh2.h>
3233 #include <libssh2_sftp.h>
3235 LIBSSH2_SESSION *session;
3237 LIBSSH2_SFTP_HANDLE *sftp_handle;
3238 session = libssh2_session_init ();
3239 sftp = libssh2_sftp_init (session);
3240 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3241 libssh2_sftp_fsync (sftp_handle);
3245 # libssh2_cflags/libssh2_libs defined in previous test.
3246 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3247 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3251 ##########################################
3254 if test "$linux_aio" != "no" ; then
3257 #include <sys/eventfd.h>
3259 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3261 if compile_prog
"" "-laio" ; then
3264 if test "$linux_aio" = "yes" ; then
3265 feature_not_found
"linux AIO" "Install libaio devel"
3271 ##########################################
3272 # TPM passthrough is only on x86 Linux
3274 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3275 tpm_passthrough
=$tpm
3280 ##########################################
3283 if test "$attr" != "no" ; then
3286 #include <sys/types.h>
3287 #ifdef CONFIG_LIBATTR
3288 #include <attr/xattr.h>
3290 #include <sys/xattr.h>
3292 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3294 if compile_prog
"" "" ; then
3296 # Older distros have <attr/xattr.h>, and need -lattr:
3297 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3302 if test "$attr" = "yes" ; then
3303 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3309 ##########################################
3312 #include <sys/types.h>
3313 #include <sys/uio.h>
3315 int main(void) { return sizeof(struct iovec); }
3318 if compile_prog
"" "" ; then
3322 ##########################################
3325 #include <sys/types.h>
3326 #include <sys/uio.h>
3328 int main(void) { return preadv(0, 0, 0, 0); }
3331 if compile_prog
"" "" ; then
3335 ##########################################
3337 # fdt support is mandatory for at least some target architectures,
3338 # so insist on it if we're building those system emulators.
3340 for target
in $target_list; do
3342 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3348 if test "$fdt_required" = "yes"; then
3349 if test "$fdt" = "no"; then
3350 error_exit
"fdt disabled but some requested targets require it." \
3351 "You can turn off fdt only if you also disable all the system emulation" \
3352 "targets which need it (by specifying a cut down --target-list)."
3357 if test "$fdt" != "no" ; then
3359 # explicitly check for libfdt_env.h as it is missing in some stable installs
3360 # and test for required functions to make sure we are on a version >= 1.4.0
3363 #include <libfdt_env.h>
3364 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3366 if compile_prog
"" "$fdt_libs" ; then
3367 # system DTC is good - use it
3369 elif test -d ${source_path}/dtc
/libfdt
; then
3370 # have submodule DTC - use it
3374 if [ "$pwd_is_source_path" != "y" ] ; then
3375 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3376 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3378 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3379 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3380 elif test "$fdt" = "yes" ; then
3381 # have neither and want - prompt for system/submodule install
3382 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3383 " (1) Preferred: Install the DTC (libfdt) devel package" \
3384 " (2) Fetch the DTC submodule, using:" \
3385 " git submodule update --init dtc"
3387 # don't have and don't want
3393 libs_softmmu
="$libs_softmmu $fdt_libs"
3395 ##########################################
3396 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3398 if test "$opengl" != "no" ; then
3399 opengl_pkgs
="epoxy libdrm gbm"
3400 if $pkg_config $opengl_pkgs x11
; then
3401 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3402 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3404 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3408 if test "$opengl" = "yes" ; then
3409 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3417 if test "$opengl" = "yes"; then
3419 #include <epoxy/egl.h>
3420 #ifndef EGL_MESA_image_dma_buf_export
3421 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3423 int main(void) { return 0; }
3425 if compile_prog
"" "" ; then
3430 ##########################################
3432 if test "$archipelago" != "no" ; then
3435 #include <xseg/xseg.h>
3436 #include <xseg/protocol.h>
3442 archipelago_libs
=-lxseg
3443 if compile_prog
"" "$archipelago_libs"; then
3445 libs_tools
="$archipelago_libs $libs_tools"
3446 libs_softmmu
="$archipelago_libs $libs_softmmu"
3448 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3449 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3450 echo "license and therefore prevent redistribution."
3452 echo "To disable Archipelago, use --disable-archipelago"
3454 if test "$archipelago" = "yes" ; then
3455 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3462 ##########################################
3464 if test "$glusterfs" != "no" ; then
3465 if $pkg_config --atleast-version=3 glusterfs-api
; then
3467 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3468 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3469 if $pkg_config --atleast-version=4 glusterfs-api
; then
3470 glusterfs_xlator_opt
="yes"
3472 if $pkg_config --atleast-version=5 glusterfs-api
; then
3473 glusterfs_discard
="yes"
3475 if $pkg_config --atleast-version=6 glusterfs-api
; then
3476 glusterfs_zerofill
="yes"
3479 if test "$glusterfs" = "yes" ; then
3480 feature_not_found
"GlusterFS backend support" \
3481 "Install glusterfs-api devel >= 3"
3487 # Check for inotify functions when we are building linux-user
3488 # emulator. This is done because older glibc versions don't
3489 # have syscall stubs for these implemented. In that case we
3490 # don't provide them even if kernel supports them.
3494 #include <sys/inotify.h>
3499 /* try to start inotify */
3500 return inotify_init();
3503 if compile_prog
"" "" ; then
3509 #include <sys/inotify.h>
3514 /* try to start inotify */
3515 return inotify_init1(0);
3518 if compile_prog
"" "" ; then
3522 # check if utimensat and futimens are supported
3525 #define _ATFILE_SOURCE
3528 #include <sys/stat.h>
3532 utimensat(AT_FDCWD, "foo", NULL, 0);
3537 if compile_prog
"" "" ; then
3541 # check if pipe2 is there
3550 return pipe2(pipefd, O_CLOEXEC);
3553 if compile_prog
"" "" ; then
3557 # check if accept4 is there
3560 #include <sys/socket.h>
3565 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3569 if compile_prog
"" "" ; then
3573 # check if tee/splice is there. vmsplice was added same time.
3583 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3584 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3588 if compile_prog
"" "" ; then
3592 ##########################################
3595 if test "$numa" != "no" ; then
3598 int main(void) { return numa_available(); }
3601 if compile_prog
"" "-lnuma" ; then
3603 libs_softmmu
="-lnuma $libs_softmmu"
3605 if test "$numa" = "yes" ; then
3606 feature_not_found
"numa" "install numactl devel"
3612 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3613 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3617 ##########################################
3620 if test "$tcmalloc" = "yes" ; then
3623 int main(void) { malloc(1); return 0; }
3626 if compile_prog
"" "-ltcmalloc" ; then
3627 LIBS
="-ltcmalloc $LIBS"
3629 feature_not_found
"tcmalloc" "install gperftools devel"
3633 ##########################################
3636 if test "$jemalloc" = "yes" ; then
3639 int main(void) { malloc(1); return 0; }
3642 if compile_prog
"" "-ljemalloc" ; then
3643 LIBS
="-ljemalloc $LIBS"
3645 feature_not_found
"jemalloc" "install jemalloc devel"
3649 ##########################################
3654 #include <sys/syscall.h>
3656 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3659 if compile_prog
"" "" ; then
3663 # check if eventfd is supported
3666 #include <sys/eventfd.h>
3670 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3673 if compile_prog
"" "" ; then
3677 # check if memfd is supported
3680 #include <sys/memfd.h>
3684 return memfd_create("foo", MFD_ALLOW_SEALING);
3687 if compile_prog
"" "" ; then
3693 # check for fallocate
3700 fallocate(0, 0, 0, 0);
3704 if compile_prog
"" "" ; then
3708 # check for fallocate hole punching
3709 fallocate_punch_hole
=no
3712 #include <linux/falloc.h>
3716 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3720 if compile_prog
"" "" ; then
3721 fallocate_punch_hole
=yes
3724 # check that fallocate supports range zeroing inside the file
3725 fallocate_zero_range
=no
3728 #include <linux/falloc.h>
3732 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3736 if compile_prog
"" "" ; then
3737 fallocate_zero_range
=yes
3740 # check for posix_fallocate
3747 posix_fallocate(0, 0, 0);
3751 if compile_prog
"" "" ; then
3755 # check for sync_file_range
3762 sync_file_range(0, 0, 0, 0);
3766 if compile_prog
"" "" ; then
3770 # check for linux/fiemap.h and FS_IOC_FIEMAP
3773 #include <sys/ioctl.h>
3774 #include <linux/fs.h>
3775 #include <linux/fiemap.h>
3779 ioctl(0, FS_IOC_FIEMAP, 0);
3783 if compile_prog
"" "" ; then
3798 if compile_prog
"" "" ; then
3802 # check for ppoll support
3809 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3810 ppoll(&pfd, 1, 0, 0);
3814 if compile_prog
"" "" ; then
3818 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3819 prctl_pr_set_timerslack
=no
3821 #include <sys/prctl.h>
3825 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3829 if compile_prog
"" "" ; then
3830 prctl_pr_set_timerslack
=yes
3833 # check for epoll support
3836 #include <sys/epoll.h>
3844 if compile_prog
"" "" ; then
3848 # epoll_create1 is a later addition
3849 # so we must check separately for its presence
3852 #include <sys/epoll.h>
3856 /* Note that we use epoll_create1 as a value, not as
3857 * a function being called. This is necessary so that on
3858 * old SPARC glibc versions where the function was present in
3859 * the library but not declared in the header file we will
3860 * fail the configure check. (Otherwise we will get a compiler
3861 * warning but not an error, and will proceed to fail the
3862 * qemu compile where we compile with -Werror.)
3864 return (int)(uintptr_t)&epoll_create1;
3867 if compile_prog
"" "" ; then
3871 # check for sendfile support
3874 #include <sys/sendfile.h>
3878 return sendfile(0, 0, 0, 0);
3881 if compile_prog
"" "" ; then
3885 # check for timerfd support (glibc 2.8 and newer)
3888 #include <sys/timerfd.h>
3892 return(timerfd_create(CLOCK_REALTIME, 0));
3895 if compile_prog
"" "" ; then
3899 # check for setns and unshare support
3912 if compile_prog
"" "" ; then
3916 # Check if tools are available to build documentation.
3917 if test "$docs" != "no" ; then
3918 if has makeinfo
&& has pod2man
; then
3921 if test "$docs" = "yes" ; then
3922 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3928 if test "$want_tools" = ""; then
3929 if test $
(expr "$target_list" : ".*softmmu.*") != 0; then
3936 # Search for bswap_32 function
3939 #include <byteswap.h>
3940 int main(void) { return bswap_32(0); }
3942 if compile_prog
"" "" ; then
3946 # Search for bswap32 function
3949 #include <sys/endian.h>
3950 #include <sys/types.h>
3951 #include <machine/bswap.h>
3952 int main(void) { return bswap32(0); }
3954 if compile_prog
"" "" ; then
3958 ##########################################
3959 # Do we have libiscsi >= 1.9.0
3960 if test "$libiscsi" != "no" ; then
3961 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3963 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3964 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3966 if test "$libiscsi" = "yes" ; then
3967 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3973 ##########################################
3977 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3979 if compile_prog
"" "" ; then
3981 elif compile_prog
"" "-lm" ; then
3983 libs_qga
="-lm $libs_qga"
3985 error_exit
"libm check failed"
3988 ##########################################
3990 # uClibc provides 2 versions of clock_gettime(), one with realtime
3991 # support and one without. This means that the clock_gettime() don't
3992 # need -lrt. We still need it for timer_create() so we check for this
3993 # function in addition.
3998 timer_create(CLOCK_REALTIME, NULL, NULL);
3999 return clock_gettime(CLOCK_REALTIME, NULL);
4003 if compile_prog
"" "" ; then
4005 # we need pthread for static linking. use previous pthread test result
4006 elif compile_prog
"" "$pthread_lib -lrt" ; then
4008 libs_qga
="$libs_qga -lrt"
4011 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4012 "$aix" != "yes" -a "$haiku" != "yes" ; then
4013 libs_softmmu
="-lutil $libs_softmmu"
4016 ##########################################
4018 if test "$spice" != "no" ; then
4021 int main(void) { spice_server_new(); return 0; }
4023 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4024 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4025 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4026 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4027 compile_prog
"$spice_cflags" "$spice_libs" ; then
4029 libs_softmmu
="$libs_softmmu $spice_libs"
4030 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4031 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4032 spice_server_version
=$
($pkg_config --modversion spice-server
)
4034 if test "$spice" = "yes" ; then
4035 feature_not_found
"spice" \
4036 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4042 # check for smartcard support
4044 if test "$smartcard" != "no"; then
4045 if $pkg_config libcacard
; then
4046 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4047 libcacard_libs
=$
($pkg_config --libs libcacard
)
4048 QEMU_CFLAGS
="$QEMU_CFLAGS $libcacard_cflags"
4049 libs_softmmu
="$libs_softmmu $libcacard_libs"
4052 if test "$smartcard" = "yes"; then
4053 feature_not_found
"smartcard" "Install libcacard devel"
4060 if test "$libusb" != "no" ; then
4061 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4063 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4064 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4065 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
4066 libs_softmmu
="$libs_softmmu $libusb_libs"
4068 if test "$libusb" = "yes"; then
4069 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4075 # check for usbredirparser for usb network redirection support
4076 if test "$usb_redir" != "no" ; then
4077 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4079 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4080 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4081 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
4082 libs_softmmu
="$libs_softmmu $usb_redir_libs"
4084 if test "$usb_redir" = "yes"; then
4085 feature_not_found
"usb-redir" "Install usbredir devel"
4091 ##########################################
4092 # check if we have VSS SDK headers for win
4094 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4095 case "$vss_win32_sdk" in
4096 "") vss_win32_include
="-isystem $source_path" ;;
4097 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4098 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4099 vss_win32_include
="-isystem $source_path/.sdk/vss"
4100 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4102 *) vss_win32_include
="-isystem $vss_win32_sdk"
4105 #define __MIDL_user_allocate_free_DEFINED__
4106 #include <inc/win2003/vss.h>
4107 int main(void) { return VSS_CTX_BACKUP; }
4109 if compile_prog
"$vss_win32_include" "" ; then
4110 guest_agent_with_vss
="yes"
4111 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4112 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4113 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4115 if test "$vss_win32_sdk" != "" ; then
4116 echo "ERROR: Please download and install Microsoft VSS SDK:"
4117 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4118 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4119 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4120 echo "ERROR: The headers are extracted in the directory \`inc'."
4121 feature_not_found
"VSS support"
4123 guest_agent_with_vss
="no"
4127 ##########################################
4128 # lookup Windows platform SDK (if not specified)
4129 # The SDK is needed only to build .tlb (type library) file of guest agent
4130 # VSS provider from the source. It is usually unnecessary because the
4131 # pre-compiled .tlb file is included.
4133 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4134 if test -z "$win_sdk"; then
4135 programfiles
="$PROGRAMFILES"
4136 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4137 if test -n "$programfiles"; then
4138 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4140 feature_not_found
"Windows SDK"
4142 elif test "$win_sdk" = "no"; then
4147 ##########################################
4148 # check if mingw environment provides a recent ntddscsi.h
4149 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4151 #include <windows.h>
4152 #include <ntddscsi.h>
4154 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4155 #error Missing required ioctl definitions
4157 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4161 if compile_prog
"" "" ; then
4162 guest_agent_ntddscsi
=yes
4163 libs_qga
="-lsetupapi $libs_qga"
4167 ##########################################
4168 # virgl renderer probe
4170 if test "$virglrenderer" != "no" ; then
4172 #include <virglrenderer.h>
4173 int main(void) { virgl_renderer_poll(); return 0; }
4175 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4176 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4177 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4178 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4181 if test "$virglrenderer" = "yes" ; then
4182 feature_not_found
"virglrenderer"
4188 ##########################################
4189 # check if we have fdatasync
4195 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4196 return fdatasync(0);
4198 #error Not supported
4202 if compile_prog
"" "" ; then
4206 ##########################################
4207 # check if we have madvise
4211 #include <sys/types.h>
4212 #include <sys/mman.h>
4214 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4216 if compile_prog
"" "" ; then
4220 ##########################################
4221 # check if we have posix_madvise
4225 #include <sys/mman.h>
4227 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4229 if compile_prog
"" "" ; then
4233 ##########################################
4234 # check if trace backend exists
4236 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4237 if test "$?" -ne 0 ; then
4238 error_exit
"invalid trace backends" \
4239 "Please choose supported trace backends."
4242 ##########################################
4243 # For 'ust' backend, test if ust headers are present
4244 if have_backend
"ust"; then
4246 #include <lttng/tracepoint.h>
4247 int main(void) { return 0; }
4249 if compile_prog
"" "" ; then
4250 if $pkg_config lttng-ust
--exists; then
4251 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4253 lttng_ust_libs
="-llttng-ust"
4255 if $pkg_config liburcu-bp
--exists; then
4256 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4258 urcu_bp_libs
="-lurcu-bp"
4261 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4262 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4264 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4268 ##########################################
4269 # For 'dtrace' backend, test if 'dtrace' command is present
4270 if have_backend
"dtrace"; then
4271 if ! has
'dtrace' ; then
4272 error_exit
"dtrace command is not found in PATH $PATH"
4274 trace_backend_stap
="no"
4275 if has
'stap' ; then
4276 trace_backend_stap
="yes"
4280 ##########################################
4281 # check and set a backend for coroutine
4283 # We prefer ucontext, but it's not always possible. The fallback
4284 # is sigcontext. gthread is not selectable except explicitly, because
4285 # it is not functional enough to run QEMU proper. (It is occasionally
4286 # useful for debugging purposes.) On Windows the only valid backend
4287 # is the Windows-specific one.
4290 if test "$darwin" != "yes"; then
4292 #include <ucontext.h>
4293 #ifdef __stub_makecontext
4294 #error Ignoring glibc stub makecontext which will always fail
4296 int main(void) { makecontext(0, 0, 0); return 0; }
4298 if compile_prog
"" "" ; then
4303 if test "$coroutine" = ""; then
4304 if test "$mingw32" = "yes"; then
4306 elif test "$ucontext_works" = "yes"; then
4309 coroutine
=sigaltstack
4314 if test "$mingw32" != "yes"; then
4315 error_exit
"'windows' coroutine backend only valid for Windows"
4317 # Unfortunately the user visible backend name doesn't match the
4318 # coroutine-*.c filename for this case, so we have to adjust it here.
4322 if test "$ucontext_works" != "yes"; then
4323 feature_not_found
"ucontext"
4326 gthread|sigaltstack
)
4327 if test "$mingw32" = "yes"; then
4328 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4332 error_exit
"unknown coroutine backend $coroutine"
4337 if test "$coroutine_pool" = ""; then
4338 if test "$coroutine" = "gthread" -o "$coroutine" = "win32"; then
4344 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4345 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4348 ##########################################
4349 # check if we have open_by_handle_at
4351 open_by_handle_at
=no
4354 #if !defined(AT_EMPTY_PATH)
4355 # error missing definition
4357 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4360 if compile_prog
"" "" ; then
4361 open_by_handle_at
=yes
4364 ########################################
4365 # check if we have linux/magic.h
4369 #include <linux/magic.h>
4374 if compile_prog
"" "" ; then
4378 ########################################
4379 # check whether we can disable warning option with a pragma (this is needed
4380 # to silence warnings in the headers of some versions of external libraries).
4381 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4384 # If we can't selectively disable warning in the code, disable -Werror so that
4385 # the build doesn't fail anyway.
4387 pragma_disable_unused_but_set
=no
4389 #pragma GCC diagnostic push
4390 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4391 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4392 #pragma GCC diagnostic pop
4398 if compile_prog
"-Werror" "" ; then
4399 pragma_diagnostic_available
=yes
4402 ########################################
4403 # check if we have valgrind/valgrind.h
4407 #include <valgrind/valgrind.h>
4412 if compile_prog
"" "" ; then
4416 ########################################
4417 # check if environ is declared
4427 if compile_prog
"" "" ; then
4431 ########################################
4432 # check if cpuid.h is usable.
4438 unsigned a, b, c, d;
4439 int max = __get_cpuid_max(0, 0);
4442 __cpuid(1, a, b, c, d);
4446 __cpuid_count(7, 0, a, b, c, d);
4452 if compile_prog
"" "" ; then
4456 ########################################
4457 # check if __[u]int128_t is usable.
4461 #if defined(__clang_major__) && defined(__clang_minor__)
4462 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4463 # error __int128_t does not work in CLANG before 3.2
4475 if compile_prog
"" "" ; then
4479 ########################################
4480 # check if getauxval is available.
4484 #include <sys/auxv.h>
4486 return getauxval(AT_HWCAP) == 0;
4489 if compile_prog
"" "" ; then
4493 ########################################
4494 # check if ccache is interfering with
4495 # semantic analysis of macros
4500 static const int Z = 1;
4501 #define fn() ({ Z; })
4502 #define TAUT(X) ((X) == Z)
4503 #define PAREN(X, Y) (X == Y)
4505 int main(int argc, char *argv[])
4511 if (PAREN(x, y)) return 0;
4512 if (TAUT(Z)) return 0;
4517 if ! compile_object
"-Werror"; then
4521 #################################################
4522 # clang does not support glibc + FORTIFY_SOURCE.
4524 if test "$fortify_source" != "no"; then
4525 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4526 fortify_source
="no";
4527 elif test -n "$cxx" &&
4528 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4529 fortify_source
="no";
4531 fortify_source
="yes"
4535 ##########################################
4536 # check if struct fsxattr is available via linux/fs.h
4540 #include <linux/fs.h>
4546 if compile_prog
"" "" ; then
4550 ##########################################
4551 # check if rtnetlink.h exists and is useful
4554 #include <linux/rtnetlink.h>
4556 return IFLA_PROTO_DOWN;
4559 if compile_prog
"" "" ; then
4563 #################################################
4564 # Sparc implicitly links with --relax, which is
4565 # incompatible with -r, so --no-relax should be
4566 # given. It does no harm to give it on other
4569 # Note: the prototype is needed since QEMU_CFLAGS
4570 # contains -Wmissing-prototypes
4572 extern int foo(void);
4573 int foo(void) { return 0; }
4575 if ! compile_object
""; then
4576 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
4578 if do_cc
-nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then
4579 LD_REL_FLAGS
="-Wl,--no-relax"
4582 ##########################################
4584 # After here, no more $cc or $ld runs
4586 if test "$gcov" = "yes" ; then
4587 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4588 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4589 elif test "$fortify_source" = "yes" ; then
4590 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4591 elif test "$debug" = "no"; then
4592 CFLAGS
="-O2 $CFLAGS"
4595 ##########################################
4597 if test "$libnfs" != "no" ; then
4598 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4600 libnfs_libs
=$
($pkg_config --libs libnfs
)
4601 LIBS
="$LIBS $libnfs_libs"
4603 if test "$libnfs" = "yes" ; then
4604 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4610 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4611 if test "$werror" = "yes"; then
4612 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4615 if test "$solaris" = "no" ; then
4616 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4617 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4621 # test if pod2man has --utf8 option
4622 if pod2man
--help |
grep -q utf8
; then
4623 POD2MAN
="pod2man --utf8"
4628 # Use large addresses, ASLR, no-SEH and DEP if available.
4629 if test "$mingw32" = "yes" ; then
4630 if test "$cpu" = i386
; then
4631 LDFLAGS
="-Wl,--large-address-aware $LDFLAGS"
4633 for flag
in --dynamicbase --no-seh --nxcompat; do
4634 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4635 LDFLAGS
="-Wl,$flag $LDFLAGS"
4640 qemu_confdir
=$sysconfdir$confsuffix
4641 qemu_moddir
=$libdir$confsuffix
4642 qemu_datadir
=$datadir$confsuffix
4643 qemu_localedir
="$datadir/locale"
4646 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4647 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4648 tools
="qemu-nbd\$(EXESUF) $tools"
4649 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4651 if test "$softmmu" = yes ; then
4652 if test "$virtfs" != no
; then
4653 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4655 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4657 if test "$virtfs" = yes; then
4658 error_exit
"VirtFS is supported only on Linux and requires libcap devel and libattr devel"
4665 # Probe for guest agent support/options
4667 if [ "$guest_agent" != "no" ]; then
4668 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4669 tools
="qemu-ga $tools"
4671 elif [ "$guest_agent" != yes ]; then
4674 error_exit
"Guest agent is not supported on this platform"
4678 # Guest agent Window MSI package
4680 if test "$guest_agent" != yes; then
4681 if test "$guest_agent_msi" = yes; then
4682 error_exit
"MSI guest agent package requires guest agent enabled"
4685 elif test "$mingw32" != "yes"; then
4686 if test "$guest_agent_msi" = "yes"; then
4687 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
4690 elif ! has wixl
; then
4691 if test "$guest_agent_msi" = "yes"; then
4692 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4696 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4697 # disabled explicitly
4698 if test "$guest_agent_msi" != "no"; then
4703 if test "$guest_agent_msi" = "yes"; then
4704 if test "$guest_agent_with_vss" = "yes"; then
4705 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
4708 if test "$QEMU_GA_MANUFACTURER" = ""; then
4709 QEMU_GA_MANUFACTURER
=QEMU
4712 if test "$QEMU_GA_DISTRO" = ""; then
4713 QEMU_GA_DISTRO
=Linux
4716 if test "$QEMU_GA_VERSION" = ""; then
4717 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
4720 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
4724 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
4727 QEMU_GA_MSI_ARCH
="-D Arch=32"
4730 error_exit
"CPU $cpu not supported for building installation package"
4735 # Mac OS X ships with a broken assembler
4737 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4738 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4739 "$softmmu" = yes ; then
4740 # Different host OS linkers have different ideas about the name of the ELF
4741 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
4742 # variant; and Windows uses i386pe.
4743 for emu
in elf_i386 elf_i386_fbsd i386pe
; do
4744 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
4745 ld_i386_emulation
="$emu"
4751 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4752 roms
="$roms spapr-rtas"
4755 if test "$cpu" = "s390x" ; then
4756 roms
="$roms s390-ccw"
4759 # Probe for the need for relocating the user-only binary.
4760 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
4763 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4764 # ??? Rationale for choosing this address
4765 textseg_addr
=0x60000000
4768 # A 256M aligned address, high in the address space, with enough
4769 # room for the code_gen_buffer above it before the stack.
4770 textseg_addr
=0x60000000
4773 if [ -n "$textseg_addr" ]; then
4775 int main(void) { return 0; }
4777 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4778 if ! compile_prog
"" "$textseg_ldflags"; then
4779 # In case ld does not support -Ttext-segment, edit the default linker
4780 # script via sed to set the .text start addr. This is needed on FreeBSD
4782 if ! $ld --verbose >/dev
/null
2>&1; then
4784 "We need to link the QEMU user mode binaries at a" \
4785 "specific text address. Unfortunately your linker" \
4786 "doesn't support either the -Ttext-segment option or" \
4787 "printing the default linker script with --verbose." \
4788 "If you don't want the user mode binaries, pass the" \
4789 "--disable-user option to configure."
4792 $ld --verbose |
sed \
4793 -e '1,/==================================================/d' \
4794 -e '/==================================================/,$d' \
4795 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4796 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4797 textseg_ldflags
="-Wl,-T../config-host.ld"
4803 if test "$1" = "yes" ; then
4808 # prepend pixman and ftd flags after all config tests are done
4809 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4810 libs_softmmu
="$pixman_libs $libs_softmmu"
4812 echo "Install prefix $prefix"
4813 echo "BIOS directory $(eval echo $qemu_datadir)"
4814 echo "binary directory $(eval echo $bindir)"
4815 echo "library directory $(eval echo $libdir)"
4816 echo "module directory $(eval echo $qemu_moddir)"
4817 echo "libexec directory $(eval echo $libexecdir)"
4818 echo "include directory $(eval echo $includedir)"
4819 echo "config directory $(eval echo $sysconfdir)"
4820 if test "$mingw32" = "no" ; then
4821 echo "local state directory $(eval echo $local_statedir)"
4822 echo "Manual directory $(eval echo $mandir)"
4823 echo "ELF interp prefix $interp_prefix"
4825 echo "local state directory queried at runtime"
4826 echo "Windows SDK $win_sdk"
4828 echo "Source path $source_path"
4829 echo "C compiler $cc"
4830 echo "Host C compiler $host_cc"
4831 echo "C++ compiler $cxx"
4832 echo "Objective-C compiler $objcc"
4833 echo "ARFLAGS $ARFLAGS"
4834 echo "CFLAGS $CFLAGS"
4835 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4836 echo "LDFLAGS $LDFLAGS"
4838 echo "install $install"
4839 echo "python $python"
4840 if test "$slirp" = "yes" ; then
4843 echo "module support $modules"
4844 echo "host CPU $cpu"
4845 echo "host big endian $bigendian"
4846 echo "target list $target_list"
4847 echo "tcg debug enabled $debug_tcg"
4848 echo "gprof enabled $gprof"
4849 echo "sparse enabled $sparse"
4850 echo "strip binaries $strip_opt"
4851 echo "profiler $profiler"
4852 echo "static build $static"
4853 if test "$darwin" = "yes" ; then
4854 echo "Cocoa support $cocoa"
4856 echo "pixman $pixman"
4857 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
4858 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
4859 echo "GTK GL support $gtk_gl"
4860 echo "VTE support $vte $(echo_version $vte $vteversion)"
4861 echo "TLS priority $tls_priority"
4862 echo "GNUTLS support $gnutls"
4863 echo "GNUTLS rnd $gnutls_rnd"
4864 if test "$gcrypt" = "yes"; then
4865 echo "encryption libgcrypt"
4866 echo "libgcrypt kdf $gcrypt_kdf"
4867 elif test "$nettle" = "yes"; then
4868 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
4870 echo "encryption none"
4872 echo "nettle kdf $nettle_kdf"
4873 echo "libtasn1 $tasn1"
4874 echo "curses support $curses"
4875 echo "virgl support $virglrenderer"
4876 echo "curl support $curl"
4877 echo "mingw32 support $mingw32"
4878 echo "Audio drivers $audio_drv_list"
4879 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4880 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4881 echo "VirtFS support $virtfs"
4882 echo "VNC support $vnc"
4883 if test "$vnc" = "yes" ; then
4884 echo "VNC SASL support $vnc_sasl"
4885 echo "VNC JPEG support $vnc_jpeg"
4886 echo "VNC PNG support $vnc_png"
4888 if test -n "$sparc_cpu"; then
4889 echo "Target Sparc Arch $sparc_cpu"
4891 echo "xen support $xen"
4892 if test "$xen" = "yes" ; then
4893 echo "xen ctrl version $xen_ctrl_version"
4894 echo "pv dom build $xen_pv_domain_build"
4896 echo "brlapi support $brlapi"
4897 echo "bluez support $bluez"
4898 echo "Documentation $docs"
4901 echo "vde support $vde"
4902 echo "netmap support $netmap"
4903 echo "Linux AIO support $linux_aio"
4904 echo "(X)ATTR support $attr"
4905 echo "Install blobs $blobs"
4906 echo "KVM support $kvm"
4907 echo "RDMA support $rdma"
4908 echo "TCG interpreter $tcg_interpreter"
4909 echo "fdt support $fdt"
4910 echo "preadv support $preadv"
4911 echo "fdatasync $fdatasync"
4912 echo "madvise $madvise"
4913 echo "posix_madvise $posix_madvise"
4914 echo "uuid support $uuid"
4915 echo "libcap-ng support $cap_ng"
4916 echo "vhost-net support $vhost_net"
4917 echo "vhost-scsi support $vhost_scsi"
4918 echo "Trace backends $trace_backends"
4919 if have_backend
"simple"; then
4920 echo "Trace output file $trace_file-<pid>"
4922 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
4923 echo "rbd support $rbd"
4924 echo "xfsctl support $xfs"
4925 echo "smartcard support $smartcard"
4926 echo "libusb $libusb"
4927 echo "usb net redir $usb_redir"
4928 echo "OpenGL support $opengl"
4929 echo "OpenGL dmabufs $opengl_dmabuf"
4930 echo "libiscsi support $libiscsi"
4931 echo "libnfs support $libnfs"
4932 echo "build guest agent $guest_agent"
4933 echo "QGA VSS support $guest_agent_with_vss"
4934 echo "QGA w32 disk info $guest_agent_ntddscsi"
4935 echo "QGA MSI support $guest_agent_msi"
4936 echo "seccomp support $seccomp"
4937 echo "coroutine backend $coroutine"
4938 echo "coroutine pool $coroutine_pool"
4939 echo "GlusterFS support $glusterfs"
4940 echo "Archipelago support $archipelago"
4941 echo "gcov $gcov_tool"
4942 echo "gcov enabled $gcov"
4943 echo "TPM support $tpm"
4944 echo "libssh2 support $libssh2"
4945 echo "TPM passthrough $tpm_passthrough"
4946 echo "QOM debugging $qom_cast_debug"
4948 echo "lzo support $lzo"
4949 echo "snappy support $snappy"
4950 echo "bzip2 support $bzip2"
4951 echo "NUMA host support $numa"
4952 echo "tcmalloc support $tcmalloc"
4953 echo "jemalloc support $jemalloc"
4954 echo "avx2 optimization $avx2_opt"
4956 if test "$sdl_too_old" = "yes"; then
4957 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4960 config_host_mak
="config-host.mak"
4962 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4964 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4965 echo >> $config_host_mak
4967 echo all
: >> $config_host_mak
4968 echo "prefix=$prefix" >> $config_host_mak
4969 echo "bindir=$bindir" >> $config_host_mak
4970 echo "libdir=$libdir" >> $config_host_mak
4971 echo "libexecdir=$libexecdir" >> $config_host_mak
4972 echo "includedir=$includedir" >> $config_host_mak
4973 echo "mandir=$mandir" >> $config_host_mak
4974 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4975 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4976 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4977 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4978 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4979 if test "$mingw32" = "no" ; then
4980 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4982 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4983 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4984 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4985 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4986 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4988 echo "ARCH=$ARCH" >> $config_host_mak
4990 if test "$debug_tcg" = "yes" ; then
4991 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4993 if test "$strip_opt" = "yes" ; then
4994 echo "STRIP=${strip}" >> $config_host_mak
4996 if test "$bigendian" = "yes" ; then
4997 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4999 if test "$mingw32" = "yes" ; then
5000 echo "CONFIG_WIN32=y" >> $config_host_mak
5001 echo "CONFIG_INSTALLER=y" >> $config_host_mak
5002 rc_version
=$
(cat $source_path/VERSION
)
5003 version_major
=${rc_version%%.*}
5004 rc_version
=${rc_version#*.}
5005 version_minor
=${rc_version%%.*}
5006 rc_version
=${rc_version#*.}
5007 version_subminor
=${rc_version%%.*}
5009 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5010 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5011 if test "$guest_agent_with_vss" = "yes" ; then
5012 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5013 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5014 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5016 if test "$guest_agent_ntddscsi" = "yes" ; then
5017 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5019 if test "$guest_agent_msi" = "yes"; then
5020 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5021 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5022 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5023 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5024 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5025 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5026 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5029 echo "CONFIG_POSIX=y" >> $config_host_mak
5032 if test "$linux" = "yes" ; then
5033 echo "CONFIG_LINUX=y" >> $config_host_mak
5036 if test "$darwin" = "yes" ; then
5037 echo "CONFIG_DARWIN=y" >> $config_host_mak
5040 if test "$aix" = "yes" ; then
5041 echo "CONFIG_AIX=y" >> $config_host_mak
5044 if test "$solaris" = "yes" ; then
5045 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5046 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5047 if test "$needs_libsunmath" = "yes" ; then
5048 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5051 if test "$haiku" = "yes" ; then
5052 echo "CONFIG_HAIKU=y" >> $config_host_mak
5054 if test "$static" = "yes" ; then
5055 echo "CONFIG_STATIC=y" >> $config_host_mak
5057 if test "$profiler" = "yes" ; then
5058 echo "CONFIG_PROFILER=y" >> $config_host_mak
5060 if test "$slirp" = "yes" ; then
5061 echo "CONFIG_SLIRP=y" >> $config_host_mak
5062 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5064 if test "$vde" = "yes" ; then
5065 echo "CONFIG_VDE=y" >> $config_host_mak
5067 if test "$netmap" = "yes" ; then
5068 echo "CONFIG_NETMAP=y" >> $config_host_mak
5070 if test "$l2tpv3" = "yes" ; then
5071 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5073 if test "$cap_ng" = "yes" ; then
5074 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5076 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5077 for drv
in $audio_drv_list; do
5078 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5079 echo "$def=y" >> $config_host_mak
5081 if test "$audio_pt_int" = "yes" ; then
5082 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5084 if test "$audio_win_int" = "yes" ; then
5085 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5087 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5088 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5089 if test "$vnc" = "yes" ; then
5090 echo "CONFIG_VNC=y" >> $config_host_mak
5092 if test "$vnc_sasl" = "yes" ; then
5093 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5095 if test "$vnc_jpeg" = "yes" ; then
5096 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5098 if test "$vnc_png" = "yes" ; then
5099 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5101 if test "$fnmatch" = "yes" ; then
5102 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5104 if test "$uuid" = "yes" ; then
5105 echo "CONFIG_UUID=y" >> $config_host_mak
5107 if test "$xfs" = "yes" ; then
5108 echo "CONFIG_XFS=y" >> $config_host_mak
5110 qemu_version
=$
(head $source_path/VERSION
)
5111 echo "VERSION=$qemu_version" >>$config_host_mak
5112 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5113 echo "SRC_PATH=$source_path" >> $config_host_mak
5114 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5115 if [ "$docs" = "yes" ] ; then
5116 echo "BUILD_DOCS=yes" >> $config_host_mak
5118 if [ "$want_tools" = "yes" ] ; then
5119 echo "BUILD_TOOLS=yes" >> $config_host_mak
5121 if test "$modules" = "yes"; then
5122 # $shacmd can generate a hash started with digit, which the compiler doesn't
5123 # like as an symbol. So prefix it with an underscore
5124 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5125 echo "CONFIG_MODULES=y" >> $config_host_mak
5127 if test "$sdl" = "yes" ; then
5128 echo "CONFIG_SDL=y" >> $config_host_mak
5129 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5130 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5132 if test "$cocoa" = "yes" ; then
5133 echo "CONFIG_COCOA=y" >> $config_host_mak
5135 if test "$curses" = "yes" ; then
5136 echo "CONFIG_CURSES=y" >> $config_host_mak
5138 if test "$utimens" = "yes" ; then
5139 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
5141 if test "$pipe2" = "yes" ; then
5142 echo "CONFIG_PIPE2=y" >> $config_host_mak
5144 if test "$accept4" = "yes" ; then
5145 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5147 if test "$splice" = "yes" ; then
5148 echo "CONFIG_SPLICE=y" >> $config_host_mak
5150 if test "$eventfd" = "yes" ; then
5151 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5153 if test "$memfd" = "yes" ; then
5154 echo "CONFIG_MEMFD=y" >> $config_host_mak
5156 if test "$fallocate" = "yes" ; then
5157 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5159 if test "$fallocate_punch_hole" = "yes" ; then
5160 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5162 if test "$fallocate_zero_range" = "yes" ; then
5163 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5165 if test "$posix_fallocate" = "yes" ; then
5166 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5168 if test "$sync_file_range" = "yes" ; then
5169 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5171 if test "$fiemap" = "yes" ; then
5172 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5174 if test "$dup3" = "yes" ; then
5175 echo "CONFIG_DUP3=y" >> $config_host_mak
5177 if test "$ppoll" = "yes" ; then
5178 echo "CONFIG_PPOLL=y" >> $config_host_mak
5180 if test "$prctl_pr_set_timerslack" = "yes" ; then
5181 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5183 if test "$epoll" = "yes" ; then
5184 echo "CONFIG_EPOLL=y" >> $config_host_mak
5186 if test "$epoll_create1" = "yes" ; then
5187 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5189 if test "$sendfile" = "yes" ; then
5190 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5192 if test "$timerfd" = "yes" ; then
5193 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5195 if test "$setns" = "yes" ; then
5196 echo "CONFIG_SETNS=y" >> $config_host_mak
5198 if test "$inotify" = "yes" ; then
5199 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5201 if test "$inotify1" = "yes" ; then
5202 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5204 if test "$byteswap_h" = "yes" ; then
5205 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5207 if test "$bswap_h" = "yes" ; then
5208 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5210 if test "$curl" = "yes" ; then
5211 echo "CONFIG_CURL=m" >> $config_host_mak
5212 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5213 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5215 if test "$brlapi" = "yes" ; then
5216 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5218 if test "$bluez" = "yes" ; then
5219 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5220 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5222 if test "$glib_subprocess" = "yes" ; then
5223 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5225 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
5226 if test "$gtk" = "yes" ; then
5227 echo "CONFIG_GTK=y" >> $config_host_mak
5228 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5229 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5230 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5231 if test "$gtk_gl" = "yes" ; then
5232 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5235 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5236 if test "$gnutls" = "yes" ; then
5237 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5239 if test "$gnutls_rnd" = "yes" ; then
5240 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5242 if test "$gcrypt" = "yes" ; then
5243 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5244 if test "$gcrypt_kdf" = "yes" ; then
5245 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5248 if test "$nettle" = "yes" ; then
5249 echo "CONFIG_NETTLE=y" >> $config_host_mak
5250 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5251 if test "$nettle_kdf" = "yes" ; then
5252 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5255 if test "$tasn1" = "yes" ; then
5256 echo "CONFIG_TASN1=y" >> $config_host_mak
5258 if test "$have_ifaddrs_h" = "yes" ; then
5259 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5262 # Work around a system header bug with some kernel/XFS header
5263 # versions where they both try to define 'struct fsxattr':
5264 # xfs headers will not try to redefine structs from linux headers
5265 # if this macro is set.
5266 if test "$have_fsxattr" = "yes" ; then
5267 echo "HAVE_FSXATTR=y" >> $config_host_mak
5269 if test "$vte" = "yes" ; then
5270 echo "CONFIG_VTE=y" >> $config_host_mak
5271 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5273 if test "$virglrenderer" = "yes" ; then
5274 echo "CONFIG_VIRGL=y" >> $config_host_mak
5275 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5276 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5278 if test "$xen" = "yes" ; then
5279 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5280 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5281 if test "$xen_pv_domain_build" = "yes" ; then
5282 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5285 if test "$linux_aio" = "yes" ; then
5286 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5288 if test "$attr" = "yes" ; then
5289 echo "CONFIG_ATTR=y" >> $config_host_mak
5291 if test "$libattr" = "yes" ; then
5292 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5294 if test "$virtfs" = "yes" ; then
5295 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5297 if test "$vhost_scsi" = "yes" ; then
5298 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5300 if test "$vhost_net" = "yes" ; then
5301 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5303 if test "$blobs" = "yes" ; then
5304 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5306 if test "$iovec" = "yes" ; then
5307 echo "CONFIG_IOVEC=y" >> $config_host_mak
5309 if test "$preadv" = "yes" ; then
5310 echo "CONFIG_PREADV=y" >> $config_host_mak
5312 if test "$fdt" = "yes" ; then
5313 echo "CONFIG_FDT=y" >> $config_host_mak
5315 if test "$signalfd" = "yes" ; then
5316 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5318 if test "$tcg_interpreter" = "yes" ; then
5319 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5321 if test "$fdatasync" = "yes" ; then
5322 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5324 if test "$madvise" = "yes" ; then
5325 echo "CONFIG_MADVISE=y" >> $config_host_mak
5327 if test "$posix_madvise" = "yes" ; then
5328 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5331 if test "$spice" = "yes" ; then
5332 echo "CONFIG_SPICE=y" >> $config_host_mak
5335 if test "$smartcard" = "yes" ; then
5336 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5339 if test "$libusb" = "yes" ; then
5340 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5343 if test "$usb_redir" = "yes" ; then
5344 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5347 if test "$opengl" = "yes" ; then
5348 echo "CONFIG_OPENGL=y" >> $config_host_mak
5349 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5350 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5351 if test "$opengl_dmabuf" = "yes" ; then
5352 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5356 if test "$avx2_opt" = "yes" ; then
5357 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5360 if test "$lzo" = "yes" ; then
5361 echo "CONFIG_LZO=y" >> $config_host_mak
5364 if test "$snappy" = "yes" ; then
5365 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5368 if test "$bzip2" = "yes" ; then
5369 echo "CONFIG_BZIP2=y" >> $config_host_mak
5370 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5373 if test "$libiscsi" = "yes" ; then
5374 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5375 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5376 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5379 if test "$libnfs" = "yes" ; then
5380 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5383 if test "$seccomp" = "yes"; then
5384 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5387 # XXX: suppress that
5388 if [ "$bsd" = "yes" ] ; then
5389 echo "CONFIG_BSD=y" >> $config_host_mak
5392 if test "$localtime_r" = "yes" ; then
5393 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5395 if test "$qom_cast_debug" = "yes" ; then
5396 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5398 if test "$rbd" = "yes" ; then
5399 echo "CONFIG_RBD=m" >> $config_host_mak
5400 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5401 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5404 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5405 if test "$coroutine_pool" = "yes" ; then
5406 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5408 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5411 if test "$open_by_handle_at" = "yes" ; then
5412 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5415 if test "$linux_magic_h" = "yes" ; then
5416 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5419 if test "$pragma_diagnostic_available" = "yes" ; then
5420 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5423 if test "$valgrind_h" = "yes" ; then
5424 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5427 if test "$has_environ" = "yes" ; then
5428 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5431 if test "$cpuid_h" = "yes" ; then
5432 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5435 if test "$int128" = "yes" ; then
5436 echo "CONFIG_INT128=y" >> $config_host_mak
5439 if test "$getauxval" = "yes" ; then
5440 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5443 if test "$glusterfs" = "yes" ; then
5444 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5445 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5446 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5449 if test "$glusterfs_xlator_opt" = "yes" ; then
5450 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5453 if test "$glusterfs_discard" = "yes" ; then
5454 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5457 if test "$glusterfs_zerofill" = "yes" ; then
5458 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5461 if test "$archipelago" = "yes" ; then
5462 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5463 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5466 if test "$libssh2" = "yes" ; then
5467 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5468 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5469 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5472 if test "$vhdx" = "yes" ; then
5473 echo "CONFIG_VHDX=y" >> $config_host_mak
5477 if test "$libusb" = "yes"; then
5478 echo "HOST_USB=libusb legacy" >> $config_host_mak
5480 echo "HOST_USB=stub" >> $config_host_mak
5483 # TPM passthrough support?
5484 if test "$tpm" = "yes"; then
5485 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5486 if test "$tpm_passthrough" = "yes"; then
5487 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5491 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5492 if have_backend
"nop"; then
5493 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5495 if have_backend
"simple"; then
5496 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5497 # Set the appropriate trace file.
5498 trace_file
="\"$trace_file-\" FMT_pid"
5500 if have_backend
"log"; then
5501 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
5503 if have_backend
"ust"; then
5504 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5506 if have_backend
"dtrace"; then
5507 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5508 if test "$trace_backend_stap" = "yes" ; then
5509 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5512 if have_backend
"ftrace"; then
5513 if test "$linux" = "yes" ; then
5514 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5516 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5519 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5521 if test "$rdma" = "yes" ; then
5522 echo "CONFIG_RDMA=y" >> $config_host_mak
5525 if test "$have_rtnetlink" = "yes" ; then
5526 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5529 # Hold two types of flag:
5530 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5531 # a thread we have a handle to
5532 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5534 if test "$pthread_setname_np" = "yes" ; then
5535 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5536 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5539 if test "$tcg_interpreter" = "yes"; then
5540 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5541 elif test "$ARCH" = "sparc64" ; then
5542 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5543 elif test "$ARCH" = "s390x" ; then
5544 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5545 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5546 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5547 elif test "$ARCH" = "ppc64" ; then
5548 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5550 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5552 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5554 echo "TOOLS=$tools" >> $config_host_mak
5555 echo "ROMS=$roms" >> $config_host_mak
5556 echo "MAKE=$make" >> $config_host_mak
5557 echo "INSTALL=$install" >> $config_host_mak
5558 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5559 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5560 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5561 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5562 echo "PYTHON=$python" >> $config_host_mak
5563 echo "CC=$cc" >> $config_host_mak
5564 if $iasl -h > /dev
/null
2>&1; then
5565 echo "IASL=$iasl" >> $config_host_mak
5567 echo "CC_I386=$cc_i386" >> $config_host_mak
5568 echo "HOST_CC=$host_cc" >> $config_host_mak
5569 echo "CXX=$cxx" >> $config_host_mak
5570 echo "OBJCC=$objcc" >> $config_host_mak
5571 echo "AR=$ar" >> $config_host_mak
5572 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5573 echo "AS=$as" >> $config_host_mak
5574 echo "CCAS=$ccas" >> $config_host_mak
5575 echo "CPP=$cpp" >> $config_host_mak
5576 echo "OBJCOPY=$objcopy" >> $config_host_mak
5577 echo "LD=$ld" >> $config_host_mak
5578 echo "NM=$nm" >> $config_host_mak
5579 echo "WINDRES=$windres" >> $config_host_mak
5580 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5581 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5582 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5583 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5584 if test "$sparse" = "yes" ; then
5585 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5586 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5587 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5588 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5589 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5591 if test "$cross_prefix" != ""; then
5592 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5594 echo "AUTOCONF_HOST := " >> $config_host_mak
5596 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5597 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5598 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
5599 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
5600 echo "LIBS+=$LIBS" >> $config_host_mak
5601 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5602 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
5603 echo "EXESUF=$EXESUF" >> $config_host_mak
5604 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5605 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5606 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5607 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5608 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5609 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5610 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5611 if test "$gcov" = "yes" ; then
5612 echo "CONFIG_GCOV=y" >> $config_host_mak
5613 echo "GCOV=$gcov_tool" >> $config_host_mak
5616 # use included Linux headers
5617 if test "$linux" = "yes" ; then
5618 mkdir
-p linux-headers
5636 # For most CPUs the kernel architecture name and QEMU CPU name match.
5640 # For non-KVM architectures we will not have asm headers
5641 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5642 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5646 for target
in $target_list; do
5647 target_dir
="$target"
5648 config_target_mak
=$target_dir/config-target.mak
5649 target_name
=$
(echo $target | cut
-d '-' -f 1)
5650 target_bigendian
="no"
5652 case "$target_name" in
5653 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5654 target_bigendian
=yes
5658 target_user_only
="no"
5659 target_linux_user
="no"
5660 target_bsd_user
="no"
5662 ${target_name}-softmmu)
5663 target_softmmu
="yes"
5665 ${target_name}-linux-user)
5666 if test "$linux" != "yes" ; then
5667 error_exit
"Target '$target' is only available on a Linux host"
5669 target_user_only
="yes"
5670 target_linux_user
="yes"
5672 ${target_name}-bsd-user)
5673 if test "$bsd" != "yes" ; then
5674 error_exit
"Target '$target' is only available on a BSD host"
5676 target_user_only
="yes"
5677 target_bsd_user
="yes"
5680 error_exit
"Target '$target' not recognised"
5685 mkdir
-p $target_dir
5686 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5689 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
5692 TARGET_ARCH
="$target_name"
5696 case "$target_name" in
5700 TARGET_BASE_ARCH
=i386
5707 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5710 TARGET_BASE_ARCH
=arm
5712 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5720 gdb_xml_files
="cf-core.xml cf-fp.xml"
5722 microblaze|microblazeel
)
5723 TARGET_ARCH
=microblaze
5728 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5732 TARGET_BASE_ARCH
=mips
5733 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5734 echo "TARGET_ABI32=y" >> $config_target_mak
5738 TARGET_BASE_ARCH
=mips
5739 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5744 TARGET_ARCH
=openrisc
5745 TARGET_BASE_ARCH
=openrisc
5748 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5751 TARGET_BASE_ARCH
=ppc
5753 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5756 TARGET_BASE_ARCH
=ppc
5758 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5762 TARGET_BASE_ARCH
=ppc
5764 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5768 TARGET_BASE_ARCH
=ppc
5770 echo "TARGET_ABI32=y" >> $config_target_mak
5771 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5780 TARGET_BASE_ARCH
=sparc
5784 TARGET_BASE_ARCH
=sparc
5785 TARGET_ABI_DIR
=sparc
5786 echo "TARGET_ABI32=y" >> $config_target_mak
5789 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
5801 error_exit
"Unsupported target CPU"
5804 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5805 if [ "$TARGET_BASE_ARCH" = "" ]; then
5806 TARGET_BASE_ARCH
=$TARGET_ARCH
5809 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5812 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5815 target_arch_name
="$(upper $TARGET_ARCH)"
5816 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5817 echo "TARGET_NAME=$target_name" >> $config_target_mak
5818 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5819 if [ "$TARGET_ABI_DIR" = "" ]; then
5820 TARGET_ABI_DIR
=$TARGET_ARCH
5822 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5823 if [ "$HOST_VARIANT_DIR" != "" ]; then
5824 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5826 case "$target_name" in
5828 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5829 echo "CONFIG_XEN=y" >> $config_target_mak
5830 if test "$xen_pci_passthrough" = yes; then
5831 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5837 case "$target_name" in
5838 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5839 # Make sure the target and host cpus are compatible
5840 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5841 \
( "$target_name" = "$cpu" -o \
5842 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5843 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5844 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5845 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5846 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5847 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5848 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5849 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5850 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5851 echo "CONFIG_KVM=y" >> $config_target_mak
5852 if test "$vhost_net" = "yes" ; then
5853 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5854 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
5858 if test "$target_bigendian" = "yes" ; then
5859 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5861 if test "$target_softmmu" = "yes" ; then
5862 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5864 if test "$target_user_only" = "yes" ; then
5865 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5866 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5868 if test "$target_linux_user" = "yes" ; then
5869 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5872 if test ! -z "$gdb_xml_files" ; then
5873 for x
in $gdb_xml_files; do
5874 list
="$list $source_path/gdb-xml/$x"
5876 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5879 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5880 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5882 if test "$target_bsd_user" = "yes" ; then
5883 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5886 # generate QEMU_CFLAGS/LDFLAGS for targets
5892 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5893 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5896 for i
in $ARCH $TARGET_BASE_ARCH ; do
5899 disas_config
"ALPHA"
5902 if test -n "${cxx}"; then
5903 disas_config
"ARM_A64"
5908 if test -n "${cxx}"; then
5909 disas_config
"ARM_A64"
5931 disas_config
"MICROBLAZE"
5937 disas_config
"MOXIE"
5940 disas_config
"OPENRISC"
5952 disas_config
"SPARC"
5955 disas_config
"XTENSA"
5959 if test "$tcg_interpreter" = "yes" ; then
5965 # Ensure there's only a single GP
5966 cflags
="-msmall-data $cflags"
5970 if test "$gprof" = "yes" ; then
5971 echo "TARGET_GPROF=yes" >> $config_target_mak
5972 if test "$target_linux_user" = "yes" ; then
5974 ldflags
="-p $ldflags"
5976 if test "$target_softmmu" = "yes" ; then
5977 ldflags
="-p $ldflags"
5978 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5982 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5983 ldflags
="$ldflags $textseg_ldflags"
5986 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5987 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5989 done # for target in $targets
5991 if [ "$pixman" = "internal" ]; then
5992 echo "config-host.h: subdir-pixman" >> $config_host_mak
5995 if [ "$dtc_internal" = "yes" ]; then
5996 echo "config-host.h: subdir-dtc" >> $config_host_mak
5999 if test "$numa" = "yes"; then
6000 echo "CONFIG_NUMA=y" >> $config_host_mak
6003 if test "$ccache_cpp2" = "yes"; then
6004 echo "export CCACHE_CPP2=y" >> $config_host_mak
6007 # build tree in object directory in case the source is not in the current directory
6008 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6010 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6011 DIRS
="$DIRS roms/seabios roms/vgabios"
6012 DIRS
="$DIRS qapi-generated"
6013 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6014 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6015 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6016 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6017 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6018 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6019 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6020 FILES
="$FILES pc-bios/qemu-icon.bmp"
6022 $source_path/pc-bios
/*.bin \
6023 $source_path/pc-bios
/*.aml \
6024 $source_path/pc-bios
/*.rom \
6025 $source_path/pc-bios
/*.dtb \
6026 $source_path/pc-bios
/*.img \
6027 $source_path/pc-bios
/openbios-
* \
6028 $source_path/pc-bios
/u-boot.
* \
6029 $source_path/pc-bios
/palcode-
*
6031 FILES
="$FILES pc-bios/$(basename $bios_file)"
6033 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6035 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6038 for f
in $FILES ; do
6039 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6040 symlink
"$source_path/$f" "$f"
6044 # temporary config to build submodules
6045 for rom
in seabios vgabios
; do
6046 config_mak
=roms
/$rom/config.mak
6047 echo "# Automatically generated by configure - do not modify" > $config_mak
6048 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6049 echo "AS=$as" >> $config_mak
6050 echo "CCAS=$ccas" >> $config_mak
6051 echo "CC=$cc" >> $config_mak
6052 echo "BCC=bcc" >> $config_mak
6053 echo "CPP=$cpp" >> $config_mak
6054 echo "OBJCOPY=objcopy" >> $config_mak
6055 echo "IASL=$iasl" >> $config_mak
6056 echo "LD=$ld" >> $config_mak
6059 # set up tests data directory
6060 if [ ! -e tests
/data
]; then
6061 symlink
"$source_path/tests/data" tests
/data
6064 # set up qemu-iotests in this build directory
6065 iotests_common_env
="tests/qemu-iotests/common.env"
6066 iotests_check
="tests/qemu-iotests/check"
6068 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6069 echo >> "$iotests_common_env"
6070 echo "export PYTHON='$python'" >> "$iotests_common_env"
6072 if [ ! -e "$iotests_check" ]; then
6073 symlink
"$source_path/$iotests_check" "$iotests_check"
6076 # Save the configure command line for later reuse.
6077 cat <<EOD >config.status
6079 # Generated by configure.
6080 # Run this file to recreate the current configuration.
6081 # Compiler output produced by configure, useful for debugging
6082 # configure, is in config.log if it exists.
6084 printf "exec" >>config.status
6085 printf " '%s'" "$0" "$@" >>config.status
6086 echo ' "$@"' >>config.status
6087 chmod +x config.status