3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE
= GREP_OPTIONS
=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE
=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC
="${TMPDIR1}/${TMPB}.c"
29 TMPO
="${TMPDIR1}/${TMPB}.o"
30 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
31 TMPE
="${TMPDIR1}/${TMPB}.exe"
32 TMPMO
="${TMPDIR1}/${TMPB}.mo"
36 # Print a helpful header at the top of config.log
37 echo "# QEMU configure log $(date)" >> config.log
38 printf "# Configured with:" >> config.log
39 printf " '%s'" "$0" "$@" >> config.log
41 echo "#" >> config.log
46 while test -n "$2"; do
55 # Run the compiler, capturing its output to the log. First argument
56 # is compiler binary to execute.
59 echo $compiler "$@" >> config.log
60 $compiler "$@" >> config.log
2>&1 ||
return $?
61 # Test passed. If this is an --enable-werror build, rerun
62 # the test with -Werror and bail out if it fails. This
63 # makes warning-generating-errors in configure test code
64 # obvious to developers.
65 if test "$werror" != "yes"; then
68 # Don't bother rerunning the compile if we were already using -Werror
74 echo $compiler -Werror "$@" >> config.log
75 $compiler -Werror "$@" >> config.log
2>&1 && return $?
76 error_exit
"configure test passed without -Werror but failed with -Werror." \
77 "This is probably a bug in the configure script. The failing command" \
78 "will be at the bottom of config.log." \
79 "You can run configure with --disable-werror to bypass this check."
83 do_compiler
"$cc" "$@"
87 do_compiler
"$cxx" "$@"
91 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
92 # options which some versions of GCC's C++ compiler complain about
93 # because they only make sense for C programs.
95 for arg
in $QEMU_CFLAGS; do
98 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
99 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
102 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
110 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
116 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
119 # symbolically link $1 to $2. Portable version of "ln -sf".
122 mkdir
-p "$(dirname "$2")"
126 # check whether a command is available to this shell (may be either an
127 # executable or a builtin)
129 type "$1" >/dev
/null
2>&1
132 # search for an executable in PATH
138 # pathname has a dir component?
139 if [ "${local_command#*/}" != "$local_command" ]; then
140 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
141 echo "$local_command"
145 if [ -z "$local_command" ]; then
150 for local_dir
in $PATH; do
151 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
152 echo "$local_dir/$local_command"
153 IFS
="${local_ifs:-$(printf ' \t\n')}"
158 IFS
="${local_ifs:-$(printf ' \t\n')}"
163 echo "$trace_backends" |
grep "$1" >/dev
/null
167 source_path
=$
(dirname "$0")
170 interp_prefix
="/usr/gnemul/qemu-%M"
174 block_drv_rw_whitelist
=""
175 block_drv_ro_whitelist
=""
181 cc_i386
=i386-pc-linux-gnu-gcc
186 # Don't accept a target_list environment variable.
189 # Default value for a variable defining feature "foo".
190 # * foo="no" feature will only be used if --enable-foo arg is given
191 # * foo="" feature will be searched for, and if found, will be used
192 # unless --disable-foo is given
193 # * foo="yes" this value will only be set by --enable-foo flag.
194 # feature will searched for,
195 # if not found, configure exits with error
197 # Always add --enable-foo and --disable-foo command line args.
198 # Distributions want to ensure that several features are compiled in, and it
199 # is impossible without a --enable-foo that exits if a feature is not found.
220 xen_pv_domain_build
="no"
221 xen_pci_passthrough
=""
247 LDFLAGS_SHARED
="-shared"
250 mandir
="\${prefix}/share/man"
251 datadir
="\${prefix}/share"
252 qemu_docdir
="\${prefix}/share/doc/qemu"
253 bindir
="\${prefix}/bin"
254 libdir
="\${prefix}/lib"
255 libexecdir
="\${prefix}/libexec"
256 includedir
="\${prefix}/include"
257 sysconfdir
="\${prefix}/etc"
258 local_statedir
="\${prefix}/var"
291 guest_agent_with_vss
="no"
292 guest_agent_ntddscsi
="no"
301 debug_stack_usage
="no"
304 glusterfs_xlator_opt
="no"
305 glusterfs_discard
="no"
306 glusterfs_zerofill
="no"
311 tls_priority
="NORMAL"
328 # parse CC options first
330 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
332 --cross-prefix=*) cross_prefix
="$optarg"
336 --cxx=*) CXX
="$optarg"
338 --source-path=*) source_path
="$optarg"
340 --cpu=*) cpu
="$optarg"
342 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
343 EXTRA_CFLAGS
="$optarg"
345 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
346 EXTRA_LDFLAGS
="$optarg"
348 --enable-debug-info) debug_info
="yes"
350 --disable-debug-info) debug_info
="no"
355 # Using uname is really, really broken. Once we have the right set of checks
356 # we can eliminate its usage altogether.
358 # Preferred compiler:
360 # ${cross_prefix}gcc (if cross-prefix specified)
362 if test -z "${CC}${cross_prefix}"; then
365 cc
="${CC-${cross_prefix}gcc}"
368 if test -z "${CXX}${cross_prefix}"; then
371 cxx
="${CXX-${cross_prefix}g++}"
374 ar="${AR-${cross_prefix}ar}"
375 as
="${AS-${cross_prefix}as}"
378 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
379 ld
="${LD-${cross_prefix}ld}"
380 nm
="${NM-${cross_prefix}nm}"
381 strip
="${STRIP-${cross_prefix}strip}"
382 windres
="${WINDRES-${cross_prefix}windres}"
383 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
385 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
387 pkg_config
=query_pkg_config
388 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
389 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
391 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
392 ARFLAGS
="${ARFLAGS-rv}"
394 # default flags for all hosts
395 # We use -fwrapv to tell the compiler that we require a C dialect where
396 # left shift of signed integers is well defined and has the expected
397 # 2s-complement style results. (Both clang and gcc agree that it
398 # provides these semantics.)
399 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
400 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
401 QEMU_CFLAGS
="-Wmissing-format-attribute $QEMU_CFLAGS"
402 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
403 QEMU_CFLAGS
="-Wno-unused-parameter $QEMU_CFLAGS"
404 QEMU_CFLAGS
="-Wno-missing-field-initializers $QEMU_CFLAGS"
405 QEMU_CFLAGS
="-Wno-sign-compare $QEMU_CFLAGS"
406 QEMU_CFLAGS
="-Wno-override-init $QEMU_CFLAGS"
407 QEMU_CFLAGS
="-Wno-error=format $QEMU_CFLAGS"
408 QEMU_CFLAGS
="-Wno-error=format-extra-args $QEMU_CFLAGS"
409 QEMU_CFLAGS
="-Wno-error=parentheses $QEMU_CFLAGS"
410 QEMU_CFLAGS
="-Wextra $QEMU_CFLAGS"
411 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
412 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
413 if test "$debug_info" = "yes"; then
415 LDFLAGS
="-g $LDFLAGS"
418 # make source path absolute
419 source_path
=$
(cd "$source_path"; pwd)
421 cc_macros
=$
($cc $QEMU_CFLAGS -E -dD - </dev
/null
)
423 # running configure in the source tree?
424 # we know that's the case if configure is there.
425 if test -f "./configure"; then
426 pwd_is_source_path
="y"
428 pwd_is_source_path
="n"
435 #error $1 not defined
437 int main(void) { return 0; }
445 int main(void) { return 0; }
452 int main(void) { return 0; }
456 if check_define __linux__
; then
458 elif check_define _WIN32
; then
460 elif check_define __OpenBSD__
; then
462 elif check_define __sun__
; then
464 elif check_define __HAIKU__
; then
470 # Some host OSes need non-standard checks for which CPU to use.
471 # Note that these checks are broken for cross-compilation: if you're
472 # cross-compiling to one of these OSes then you'll need to specify
473 # the correct CPU with the --cpu option.
476 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
477 # run 64-bit userspace code.
478 # If the user didn't specify a CPU explicitly and the kernel says this is
479 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
480 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
485 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
486 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
491 if test ! -z "$cpu" ; then
492 # command line argument
494 elif check_define __i386__
; then
496 elif check_define __x86_64__
; then
497 if check_define __ILP32__
; then
502 elif check_define __sparc__
; then
503 if check_define __arch64__
; then
508 elif check_define _ARCH_PPC
; then
509 if check_define _ARCH_PPC64
; then
514 elif check_define __mips__
; then
515 if check_define __mips64
; then
520 elif check_define __ia64__
; then
522 elif check_define __s390__
; then
523 if check_define __s390x__
; then
528 elif check_define __arm__
; then
530 elif check_define __aarch64__
; then
537 # Normalise host CPU name and set ARCH.
538 # Note that this case should only have supported host CPUs, not guests.
540 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
543 i386|i486|i586|i686|i86pc|BePC
)
557 if check_define __MIPSEL__
; then
568 # This will result in either an error or falling back to TCI later
572 if test -z "$ARCH"; then
578 # host *BSD for user mode
584 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
585 audio_possible_drivers
="sdl"
591 audio_possible_drivers
="dsound sdl"
592 if check_include dsound.h
; then
593 audio_drv_list
="dsound"
601 audio_possible_drivers
="oss sdl pa"
607 audio_possible_drivers
="oss sdl pa"
608 # needed for kinfo_getvmmap(3) in libutil.h
610 # needed for kinfo_getproc
611 libs_qga
="-lutil $libs_qga"
612 netmap
="" # enable netmap autodetect
613 HOST_VARIANT_DIR
="freebsd"
619 audio_possible_drivers
="oss sdl pa"
620 HOST_VARIANT_DIR
="dragonfly"
626 audio_possible_drivers
="oss sdl"
628 HOST_VARIANT_DIR
="netbsd"
634 audio_possible_drivers
="sdl"
635 HOST_VARIANT_DIR
="openbsd"
641 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
642 if [ "$cpu" = "x86_64" ] ; then
643 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
644 LDFLAGS
="-arch x86_64 $LDFLAGS"
647 audio_drv_list
="coreaudio"
648 audio_possible_drivers
="coreaudio sdl"
649 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
650 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
651 # Disable attempts to use ObjectiveC features in os/object.h since they
652 # won't work when we're compiling with gcc as a C compiler.
653 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
654 HOST_VARIANT_DIR
="darwin"
659 install="${INSTALL-ginstall}"
661 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
662 needs_libsunmath
="no"
663 solarisrev
=$
(uname
-r | cut
-f2 -d.
)
664 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
665 if test "$solarisrev" -le 9 ; then
666 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
667 needs_libsunmath
="yes"
668 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
669 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
670 LIBS
="-lsunmath $LIBS"
672 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
673 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
674 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
675 "Studio 11 can be downloaded from www.sun.com."
679 if test -f /usr
/include
/sys
/soundcard.h
; then
682 audio_possible_drivers
="oss sdl"
683 # needed for CMSG_ macros in sys/socket.h
684 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
685 # needed for TIOCWIN* defines in termios.h
686 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
687 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
688 solarisnetlibs
="-lsocket -lnsl -lresolv"
689 LIBS
="$solarisnetlibs $LIBS"
690 libs_qga
="$solarisnetlibs $libs_qga"
698 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
699 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
703 audio_possible_drivers
="oss alsa sdl pa"
710 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
714 if [ "$bsd" = "yes" ] ; then
715 if [ "$darwin" != "yes" ] ; then
720 : ${make=${MAKE-make}}
721 : ${install=${INSTALL-install}}
722 : ${python=${PYTHON-python}}
723 : ${smbd=${SMBD-/usr/sbin/smbd}}
725 # Default objcc to clang if available, otherwise use CC
732 if test "$mingw32" = "yes" ; then
735 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
736 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
737 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
738 # MinGW-w64 needs _POSIX defined.
739 QEMU_CFLAGS
="-D_POSIX=1 $QEMU_CFLAGS"
740 # MinGW needs -mthreads for TLS and macro _MT.
741 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
742 QEMU_CFLAGS
="-I\$(SRC_PATH)/hosts/w32/include $QEMU_CFLAGS"
743 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
745 if compile_prog
"" "-liberty" ; then
746 LIBS
="-liberty $LIBS"
748 prefix
="c:/Program Files/QEMU"
751 qemu_docdir
="\${prefix}"
753 sysconfdir
="\${prefix}"
756 libs_qga
="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
762 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
764 --help|
-h) show_help
=yes
766 --version|
-V) exec cat $source_path/VERSION
768 --prefix=*) prefix
="$optarg"
770 --interp-prefix=*) interp_prefix
="$optarg"
778 --host-cc=*) host_cc
="$optarg"
782 --iasl=*) iasl
="$optarg"
784 --objcc=*) objcc
="$optarg"
786 --make=*) make="$optarg"
788 --install=*) install="$optarg"
790 --python=*) python
="$optarg"
792 --gcov=*) gcov_tool
="$optarg"
794 --smbd=*) smbd
="$optarg"
802 --disable-debug-info)
812 --target-list=*) target_list
="$optarg"
814 --enable-trace-backends=*) trace_backends
="$optarg"
816 # XXX: backwards compatibility
817 --enable-trace-backend=*) trace_backends
="$optarg"
819 --with-trace-file=*) trace_file
="$optarg"
821 --enable-gprof) gprof
="yes"
823 --enable-gcov) gcov
="yes"
827 LDFLAGS
="-static $LDFLAGS"
828 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
830 --mandir=*) mandir
="$optarg"
832 --bindir=*) bindir
="$optarg"
834 --libdir=*) libdir
="$optarg"
836 --libexecdir=*) libexecdir
="$optarg"
838 --includedir=*) includedir
="$optarg"
840 --datadir=*) datadir
="$optarg"
842 --with-confsuffix=*) confsuffix
="$optarg"
844 --docdir=*) qemu_docdir
="$optarg"
846 --sysconfdir=*) sysconfdir
="$optarg"
848 --localstatedir=*) local_statedir
="$optarg"
850 --sbindir=*|
--sharedstatedir=*|\
851 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
852 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
853 # These switches are silently ignored, for compatibility with
854 # autoconf-generated configure scripts. This allows QEMU's
855 # configure to be used by RPM and similar macros that set
856 # lots of directory switches by default.
858 --with-system-pixman) pixman
="system"
860 --without-system-pixman) pixman
="internal"
862 --without-pixman) pixman
="none"
864 --disable-sdl) sdl
="no"
866 --enable-sdl) sdl
="yes"
868 --with-sdlabi=*) sdlabi
="$optarg"
870 --disable-qom-cast-debug) qom_cast_debug
="no"
872 --enable-qom-cast-debug) qom_cast_debug
="yes"
874 --disable-virtfs) virtfs
="no"
876 --enable-virtfs) virtfs
="yes"
878 --disable-vnc) vnc
="no"
880 --enable-vnc) vnc
="yes"
882 --oss-lib=*) oss_lib
="$optarg"
884 --audio-drv-list=*) audio_drv_list
="$optarg"
886 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
888 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
890 --enable-debug-tcg) debug_tcg
="yes"
892 --disable-debug-tcg) debug_tcg
="no"
895 # Enable debugging options that aren't excessively noisy
901 --enable-sparse) sparse
="yes"
903 --disable-sparse) sparse
="no"
905 --disable-strip) strip_opt
="no"
907 --disable-vnc-sasl) vnc_sasl
="no"
909 --enable-vnc-sasl) vnc_sasl
="yes"
911 --disable-vnc-jpeg) vnc_jpeg
="no"
913 --enable-vnc-jpeg) vnc_jpeg
="yes"
915 --disable-vnc-png) vnc_png
="no"
917 --enable-vnc-png) vnc_png
="yes"
919 --disable-slirp) slirp
="no"
921 --disable-vde) vde
="no"
923 --enable-vde) vde
="yes"
925 --disable-netmap) netmap
="no"
927 --enable-netmap) netmap
="yes"
929 --disable-xen) xen
="no"
931 --enable-xen) xen
="yes"
933 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
935 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
937 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
939 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
941 --disable-brlapi) brlapi
="no"
943 --enable-brlapi) brlapi
="yes"
945 --disable-bluez) bluez
="no"
947 --enable-bluez) bluez
="yes"
949 --disable-kvm) kvm
="no"
951 --enable-kvm) kvm
="yes"
953 --disable-hax) hax
="no"
955 --enable-hax) hax
="yes"
957 --disable-colo) colo
="no"
959 --enable-colo) colo
="yes"
961 --disable-tcg-interpreter) tcg_interpreter
="no"
963 --enable-tcg-interpreter) tcg_interpreter
="yes"
965 --disable-cap-ng) cap_ng
="no"
967 --enable-cap-ng) cap_ng
="yes"
969 --disable-spice) spice
="no"
971 --enable-spice) spice
="yes"
973 --disable-libiscsi) libiscsi
="no"
975 --enable-libiscsi) libiscsi
="yes"
977 --disable-libnfs) libnfs
="no"
979 --enable-libnfs) libnfs
="yes"
981 --enable-profiler) profiler
="yes"
983 --disable-cocoa) cocoa
="no"
987 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
989 --disable-system) softmmu
="no"
991 --enable-system) softmmu
="yes"
998 --disable-linux-user) linux_user
="no"
1000 --enable-linux-user) linux_user
="yes"
1002 --disable-bsd-user) bsd_user
="no"
1004 --enable-bsd-user) bsd_user
="yes"
1006 --enable-pie) pie
="yes"
1008 --disable-pie) pie
="no"
1010 --enable-werror) werror
="yes"
1012 --disable-werror) werror
="no"
1014 --enable-stack-protector) stack_protector
="yes"
1016 --disable-stack-protector) stack_protector
="no"
1018 --disable-curses) curses
="no"
1020 --enable-curses) curses
="yes"
1022 --disable-curl) curl
="no"
1024 --enable-curl) curl
="yes"
1026 --disable-fdt) fdt
="no"
1028 --enable-fdt) fdt
="yes"
1030 --disable-linux-aio) linux_aio
="no"
1032 --enable-linux-aio) linux_aio
="yes"
1034 --disable-attr) attr
="no"
1036 --enable-attr) attr
="yes"
1038 --disable-blobs) blobs
="no"
1040 --with-pkgversion=*) pkgversion
=" ($optarg)"
1042 --with-coroutine=*) coroutine
="$optarg"
1044 --disable-coroutine-pool) coroutine_pool
="no"
1046 --enable-coroutine-pool) coroutine_pool
="yes"
1048 --enable-debug-stack-usage) debug_stack_usage
="yes"
1050 --disable-docs) docs
="no"
1052 --enable-docs) docs
="yes"
1054 --disable-vhost-net) vhost_net
="no"
1056 --enable-vhost-net) vhost_net
="yes"
1058 --disable-vhost-scsi) vhost_scsi
="no"
1060 --enable-vhost-scsi) vhost_scsi
="yes"
1062 --disable-vhost-vsock) vhost_vsock
="no"
1064 --enable-vhost-vsock) vhost_vsock
="yes"
1066 --disable-opengl) opengl
="no"
1068 --enable-opengl) opengl
="yes"
1070 --disable-rbd) rbd
="no"
1072 --enable-rbd) rbd
="yes"
1074 --disable-xfsctl) xfs
="no"
1076 --enable-xfsctl) xfs
="yes"
1078 --disable-smartcard) smartcard
="no"
1080 --enable-smartcard) smartcard
="yes"
1082 --disable-libusb) libusb
="no"
1084 --enable-libusb) libusb
="yes"
1086 --disable-usb-redir) usb_redir
="no"
1088 --enable-usb-redir) usb_redir
="yes"
1090 --disable-zlib-test) zlib
="no"
1092 --disable-lzo) lzo
="no"
1094 --enable-lzo) lzo
="yes"
1096 --disable-snappy) snappy
="no"
1098 --enable-snappy) snappy
="yes"
1100 --disable-bzip2) bzip2="no"
1102 --enable-bzip2) bzip2="yes"
1104 --enable-guest-agent) guest_agent
="yes"
1106 --disable-guest-agent) guest_agent
="no"
1108 --enable-guest-agent-msi) guest_agent_msi
="yes"
1110 --disable-guest-agent-msi) guest_agent_msi
="no"
1112 --with-vss-sdk) vss_win32_sdk
=""
1114 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1116 --without-vss-sdk) vss_win32_sdk
="no"
1118 --with-win-sdk) win_sdk
=""
1120 --with-win-sdk=*) win_sdk
="$optarg"
1122 --without-win-sdk) win_sdk
="no"
1124 --enable-tools) want_tools
="yes"
1126 --disable-tools) want_tools
="no"
1128 --enable-seccomp) seccomp
="yes"
1130 --disable-seccomp) seccomp
="no"
1132 --disable-glusterfs) glusterfs
="no"
1134 --enable-glusterfs) glusterfs
="yes"
1136 --disable-archipelago) archipelago
="no"
1138 --enable-archipelago) archipelago
="yes"
1140 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1141 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1143 --enable-vhdx|
--disable-vhdx)
1144 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1146 --enable-uuid|
--disable-uuid)
1147 echo "$0: $opt is obsolete, UUID support is always built" >&2
1149 --disable-gtk) gtk
="no"
1151 --enable-gtk) gtk
="yes"
1153 --tls-priority=*) tls_priority
="$optarg"
1155 --disable-gnutls) gnutls
="no"
1157 --enable-gnutls) gnutls
="yes"
1159 --disable-nettle) nettle
="no"
1161 --enable-nettle) nettle
="yes"
1163 --disable-gcrypt) gcrypt
="no"
1165 --enable-gcrypt) gcrypt
="yes"
1167 --enable-rdma) rdma
="yes"
1169 --disable-rdma) rdma
="no"
1171 --with-gtkabi=*) gtkabi
="$optarg"
1173 --disable-vte) vte
="no"
1175 --enable-vte) vte
="yes"
1177 --disable-virglrenderer) virglrenderer
="no"
1179 --enable-virglrenderer) virglrenderer
="yes"
1181 --disable-tpm) tpm
="no"
1183 --enable-tpm) tpm
="yes"
1185 --disable-libssh2) libssh2
="no"
1187 --enable-libssh2) libssh2
="yes"
1189 --disable-numa) numa
="no"
1191 --enable-numa) numa
="yes"
1193 --disable-tcmalloc) tcmalloc
="no"
1195 --enable-tcmalloc) tcmalloc
="yes"
1197 --disable-jemalloc) jemalloc
="no"
1199 --enable-jemalloc) jemalloc
="yes"
1201 --disable-replication) replication
="no"
1203 --enable-replication) replication
="yes"
1206 echo "ERROR: unknown option $opt"
1207 echo "Try '$0 --help' for more information"
1213 if ! has
$python; then
1214 error_exit
"Python not found. Use --python=/path/to/python"
1217 # Note that if the Python conditional here evaluates True we will exit
1218 # with status 1 which is a shell 'false' value.
1219 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1220 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1221 "Note that Python 3 or later is not yet supported." \
1222 "Use --python=/path/to/python to specify a supported Python."
1225 # Suppress writing compiled files
1231 LDFLAGS
="-m32 $LDFLAGS"
1235 LDFLAGS
="-m64 $LDFLAGS"
1238 LDFLAGS
="-m32 $LDFLAGS"
1239 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1242 LDFLAGS
="-m64 $LDFLAGS"
1243 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1247 LDFLAGS
="-m31 $LDFLAGS"
1251 LDFLAGS
="-m64 $LDFLAGS"
1255 LDFLAGS
="-m32 $LDFLAGS"
1256 cc_i386
='$(CC) -m32'
1259 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1260 # If we truly care, we should simply detect this case at
1261 # runtime and generate the fallback to serial emulation.
1262 CPU_CFLAGS
="-m64 -mcx16"
1263 LDFLAGS
="-m64 $LDFLAGS"
1264 cc_i386
='$(CC) -m32'
1268 LDFLAGS
="-mx32 $LDFLAGS"
1269 cc_i386
='$(CC) -m32'
1271 # No special flags required for other host CPUs
1274 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1275 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1277 # For user-mode emulation the host arch has to be one we explicitly
1278 # support, even if we're using TCI.
1279 if [ "$ARCH" = "unknown" ]; then
1284 default_target_list
=""
1288 if [ "$softmmu" = "yes" ]; then
1289 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1291 if [ "$linux_user" = "yes" ]; then
1292 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1294 if [ "$bsd_user" = "yes" ]; then
1295 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1298 for config
in $mak_wilds; do
1299 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1302 if test x
"$show_help" = x
"yes" ; then
1305 Usage: configure [options]
1306 Options: [defaults in brackets after descriptions]
1309 --help print this message
1310 --prefix=PREFIX install in PREFIX [$prefix]
1311 --interp-prefix=PREFIX where to find shared libraries, etc.
1312 use %M for cpu name [$interp_prefix]
1313 --target-list=LIST set target list (default: build everything)
1314 $(echo Available targets: $default_target_list | \
1315 fold -s -w 53 | sed -e 's/^/ /')
1317 Advanced options (experts only):
1318 --source-path=PATH path of source code [$source_path]
1319 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1320 --cc=CC use C compiler CC [$cc]
1321 --iasl=IASL use ACPI compiler IASL [$iasl]
1322 --host-cc=CC use C compiler CC [$host_cc] for code run at
1324 --cxx=CXX use C++ compiler CXX [$cxx]
1325 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1326 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1327 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1328 --make=MAKE use specified make [$make]
1329 --install=INSTALL use specified install [$install]
1330 --python=PYTHON use specified python [$python]
1331 --smbd=SMBD use specified smbd [$smbd]
1332 --static enable static build [$static]
1333 --mandir=PATH install man pages in PATH
1334 --datadir=PATH install firmware in PATH$confsuffix
1335 --docdir=PATH install documentation in PATH$confsuffix
1336 --bindir=PATH install binaries in PATH
1337 --libdir=PATH install libraries in PATH
1338 --sysconfdir=PATH install config in PATH$confsuffix
1339 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1340 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1341 --enable-debug enable common debug build options
1342 --disable-strip disable stripping binaries
1343 --disable-werror disable compilation abort on warning
1344 --disable-stack-protector disable compiler-provided stack protection
1345 --audio-drv-list=LIST set audio drivers list:
1346 Available drivers: $audio_possible_drivers
1347 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1348 --block-drv-rw-whitelist=L
1349 set block driver read-write whitelist
1350 (affects only QEMU, not qemu-img)
1351 --block-drv-ro-whitelist=L
1352 set block driver read-only whitelist
1353 (affects only QEMU, not qemu-img)
1354 --enable-trace-backends=B Set trace backend
1355 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1356 --with-trace-file=NAME Full PATH,NAME of file to store traces
1358 --disable-slirp disable SLIRP userspace network connectivity
1359 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1360 --oss-lib path to OSS library
1361 --cpu=CPU Build for host CPU [$cpu]
1362 --with-coroutine=BACKEND coroutine backend. Supported options:
1363 gthread, ucontext, sigaltstack, windows
1364 --enable-gcov enable test coverage analysis with gcov
1365 --gcov=GCOV use specified gcov [$gcov_tool]
1366 --disable-blobs disable installing provided firmware blobs
1367 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1368 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1369 --tls-priority default TLS protocol/cipher priority string
1371 Optional features, enabled with --enable-FEATURE and
1372 disabled with --disable-FEATURE, default is enabled if available:
1374 system all system emulation targets
1375 user supported user emulation targets
1376 linux-user all linux usermode emulation targets
1377 bsd-user all BSD usermode emulation targets
1378 docs build documentation
1379 guest-agent build the QEMU Guest Agent
1380 guest-agent-msi build guest agent Windows MSI installation package
1381 pie Position Independent Executables
1382 modules modules support
1383 debug-tcg TCG debugging (default is disabled)
1384 debug-info debugging information
1385 sparse sparse checker
1387 gnutls GNUTLS cryptography support
1388 nettle nettle cryptography support
1389 gcrypt libgcrypt cryptography support
1391 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1393 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1394 vte vte support for the gtk UI
1397 vnc-sasl SASL encryption for VNC server
1398 vnc-jpeg JPEG lossy compression for VNC server
1399 vnc-png PNG compression for VNC server
1400 cocoa Cocoa UI (Mac OS X only)
1402 xen xen backend driver support
1404 brlapi BrlAPI (Braile)
1405 curl curl connectivity
1407 bluez bluez stack connectivity
1408 kvm KVM acceleration support
1409 hax HAX acceleration support
1410 colo COarse-grain LOck-stepping VM for Non-stop Service
1411 rdma RDMA-based migration support
1412 vde support for vde network
1413 netmap support for netmap network
1414 linux-aio Linux AIO support
1415 cap-ng libcap-ng support
1416 attr attr and xattr support
1417 vhost-net vhost-net acceleration support
1419 rbd rados block device (rbd)
1420 libiscsi iscsi support
1422 smartcard smartcard support (libcacard)
1423 libusb libusb (for usb passthrough)
1424 usb-redir usb network redirection support
1425 lzo support of lzo compression library
1426 snappy support of snappy compression library
1427 bzip2 support of bzip2 compression library
1428 (for reading bzip2-compressed dmg images)
1429 seccomp seccomp support
1430 coroutine-pool coroutine freelist (better performance)
1431 glusterfs GlusterFS backend
1432 archipelago Archipelago backend
1434 libssh2 ssh block device support
1435 numa libnuma support
1436 tcmalloc tcmalloc support
1437 jemalloc jemalloc support
1438 replication replication support
1440 NOTE: The object files are built at the place where configure is launched
1445 # Now we have handled --enable-tcg-interpreter and know we're not just
1446 # printing the help message, bail out if the host CPU isn't supported.
1447 if test "$ARCH" = "unknown"; then
1448 if test "$tcg_interpreter" = "yes" ; then
1449 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1451 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1455 # Consult white-list to determine whether to enable werror
1456 # by default. Only enable by default for git builds
1457 if test -z "$werror" ; then
1458 if test -d "$source_path/.git" -a \
1459 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1466 # check that the C compiler works.
1468 if compile_object
; then
1469 : C compiler works ok
1471 error_exit
"\"$cc\" either does not exist or does not work"
1473 if ! compile_prog
; then
1474 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1477 # Check that the C++ compiler exists and works with the C compiler
1480 int c_function(void);
1481 int main(void) { return c_function(); }
1488 int c_function(void);
1490 int c_function(void) { return 42; }
1495 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1496 # C++ compiler $cxx works ok with C compiler $cc
1499 echo "C++ compiler $cxx does not work with C compiler $cc"
1500 echo "Disabling C++ specific optional code"
1504 echo "No C++ compiler available; disabling C++ specific optional code"
1508 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1509 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1510 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1511 gcc_flags
="-Wunused-but-set-variable $gcc_flags"
1512 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1513 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1514 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1515 # Note that we do not add -Werror to gcc_flags here, because that would
1516 # enable it for all configure tests. If a configure test failed due
1517 # to -Werror this would just silently disable some features,
1518 # so it's too error prone.
1520 cc_has_warning_flag
() {
1523 # Use the positive sense of the flag when testing for -Wno-wombat
1524 # support (gcc will happily accept the -Wno- form of unknown
1526 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1527 compile_prog
"-Werror $optflag" ""
1530 for flag
in $gcc_flags; do
1531 if cc_has_warning_flag
$flag ; then
1532 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1536 if test "$mingw32" = "yes"; then
1537 stack_protector
="no"
1539 if test "$stack_protector" != "no"; then
1541 int main(int argc, char *argv[])
1543 char arr[64], *p = arr, *c = argv[0];
1550 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1552 for flag
in $gcc_flags; do
1553 # We need to check both a compile and a link, since some compiler
1554 # setups fail only on a .c->.o compile and some only at link time
1555 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1556 compile_prog
"-Werror $flag" ""; then
1557 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1562 if test "$stack_protector" = yes; then
1563 if test $sp_on = 0; then
1564 error_exit
"Stack protector not supported"
1569 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1570 # large functions that use global variables. The bug is in all releases of
1571 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1572 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1574 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1575 int main(void) { return 0; }
1577 #error No bug in this compiler.
1580 if compile_prog
"-Werror -fno-gcse" "" ; then
1581 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1584 if test "$static" = "yes" ; then
1585 if test "$modules" = "yes" ; then
1586 error_exit
"static and modules are mutually incompatible"
1588 if test "$pie" = "yes" ; then
1589 error_exit
"static and pie are mutually incompatible"
1595 # Unconditional check for compiler __thread support
1597 static __thread int tls_var;
1598 int main(void) { return tls_var; }
1601 if ! compile_prog
"-Werror" "" ; then
1602 error_exit
"Your compiler does not support the __thread specifier for " \
1603 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1606 if test "$pie" = ""; then
1607 case "$cpu-$targetos" in
1608 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1616 if test "$pie" != "no" ; then
1620 # define THREAD __thread
1625 static THREAD int tls_var;
1627 int main(void) { return tls_var; }
1630 if compile_prog
"-fPIE -DPIE" "-pie"; then
1631 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1632 LDFLAGS
="-pie $LDFLAGS"
1634 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1635 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1638 if test "$pie" = "yes"; then
1639 error_exit
"PIE not available due to missing toolchain support"
1641 echo "Disabling PIE due to missing toolchain support"
1646 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1647 CFLAGS_NOPIE
="-fno-pie"
1648 LDFLAGS_NOPIE
="-nopie"
1652 ##########################################
1653 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1654 # use i686 as default anyway, but for those that don't, an explicit
1655 # specification is necessary
1657 if test "$cpu" = "i386"; then
1659 static int sfaa(int *ptr)
1661 return __sync_fetch_and_and(ptr, 0);
1667 val = __sync_val_compare_and_swap(&val, 0, 1);
1672 if ! compile_prog
"" "" ; then
1673 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1677 #########################################
1678 # Solaris specific configure tool chain decisions
1680 if test "$solaris" = "yes" ; then
1681 if has
$install; then
1684 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1685 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1686 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1688 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1689 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1690 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1691 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1696 if test -f /usr
/ccs
/bin
/ar ; then
1697 error_exit
"No path includes ar" \
1698 "Add /usr/ccs/bin to your path and rerun configure"
1700 error_exit
"No path includes ar"
1704 if test -z "${target_list+xxx}" ; then
1705 target_list
="$default_target_list"
1707 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1710 # Check that we recognised the target name; this allows a more
1711 # friendly error message than if we let it fall through.
1712 for target
in $target_list; do
1713 case " $default_target_list " in
1717 error_exit
"Unknown target name '$target'"
1722 # see if system emulation was really requested
1723 case " $target_list " in
1724 *"-softmmu "*) softmmu
=yes
1730 feature_not_found
() {
1734 error_exit
"User requested feature $feature" \
1735 "configure was not able to find it." \
1740 # big/little endian test
1742 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1743 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1744 extern int foo(short *, short *);
1745 int main(int argc, char *argv[]) {
1746 return foo(big_endian, little_endian);
1750 if compile_object
; then
1751 if grep -q BiGeNdIaN
$TMPO ; then
1753 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1756 echo big
/little
test failed
1759 echo big
/little
test failed
1762 ##########################################
1763 # cocoa implies not SDL or GTK
1764 # (the cocoa UI code currently assumes it is always the active UI
1765 # and doesn't interact well with other UI frontend code)
1766 if test "$cocoa" = "yes"; then
1767 if test "$sdl" = "yes"; then
1768 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1770 if test "$gtk" = "yes"; then
1771 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1777 # Some versions of Mac OS X incorrectly define SIZE_MAX
1781 int main(int argc, char *argv[]) {
1782 return printf("%zu", SIZE_MAX);
1785 have_broken_size_max
=no
1786 if ! compile_object
-Werror ; then
1787 have_broken_size_max
=yes
1790 ##########################################
1794 #include <sys/socket.h>
1795 #include <linux/ip.h>
1796 int main(void) { return sizeof(struct mmsghdr); }
1798 if compile_prog
"" "" ; then
1804 ##########################################
1805 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1807 if test "$mingw32" = "yes"; then
1808 # Some versions of MinGW / Mingw-w64 lack localtime_r
1809 # and gmtime_r entirely.
1811 # Some versions of Mingw-w64 define a macro for
1812 # localtime_r/gmtime_r.
1814 # Some versions of Mingw-w64 will define functions
1815 # for localtime_r/gmtime_r, but only if you have
1816 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1817 # though, unistd.h and pthread.h both define
1820 # So this #undef localtime_r and #include <unistd.h>
1821 # are not in fact redundant.
1826 int main(void) { localtime_r(NULL, NULL); return 0; }
1828 if compile_prog
"" "" ; then
1835 ##########################################
1838 if ! has
"$pkg_config_exe"; then
1839 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1842 ##########################################
1845 if test "$linux_user" = "yes"; then
1848 #include <linux/futex.h>
1850 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1856 if ! compile_object
; then
1857 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1861 ##########################################
1862 # avx2 optimization requirement check
1865 #pragma GCC push_options
1866 #pragma GCC target("avx2")
1868 #include <immintrin.h>
1869 static int bar(void *a) {
1870 __m256i x = *(__m256i *)a;
1871 return _mm256_testz_si256(x, x);
1873 int main(int argc, char *argv[]) { return bar(argv[0]); }
1875 if compile_object
"" ; then
1879 ##########################################
1882 if test "$lzo" != "no" ; then
1884 #include <lzo/lzo1x.h>
1885 int main(void) { lzo_version(); return 0; }
1887 if compile_prog
"" "-llzo2" ; then
1888 libs_softmmu
="$libs_softmmu -llzo2"
1891 if test "$lzo" = "yes"; then
1892 feature_not_found
"liblzo2" "Install liblzo2 devel"
1898 ##########################################
1901 if test "$snappy" != "no" ; then
1903 #include <snappy-c.h>
1904 int main(void) { snappy_max_compressed_length(4096); return 0; }
1906 if compile_prog
"" "-lsnappy" ; then
1907 libs_softmmu
="$libs_softmmu -lsnappy"
1910 if test "$snappy" = "yes"; then
1911 feature_not_found
"libsnappy" "Install libsnappy devel"
1917 ##########################################
1920 if test "$bzip2" != "no" ; then
1923 int main(void) { BZ2_bzlibVersion(); return 0; }
1925 if compile_prog
"" "-lbz2" ; then
1928 if test "$bzip2" = "yes"; then
1929 feature_not_found
"libbzip2" "Install libbzip2 devel"
1935 ##########################################
1938 if test "$seccomp" != "no" ; then
1941 libseccomp_minver
="2.1.0"
1944 libseccomp_minver
="2.2.0"
1947 libseccomp_minver
="2.2.3"
1950 libseccomp_minver
="2.3.0"
1953 libseccomp_minver
=""
1957 if test "$libseccomp_minver" != "" &&
1958 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
1959 libs_softmmu
="$libs_softmmu $($pkg_config --libs libseccomp)"
1960 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
1963 if test "$seccomp" = "yes" ; then
1964 if test "$libseccomp_minver" != "" ; then
1965 feature_not_found
"libseccomp" \
1966 "Install libseccomp devel >= $libseccomp_minver"
1968 feature_not_found
"libseccomp" \
1969 "libseccomp is not supported for host cpu $cpu"
1975 ##########################################
1978 if test "$xen" != "no" ; then
1979 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1980 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
1982 # First we test whether Xen headers and libraries are available.
1983 # If no, we are done and there is no Xen support.
1984 # If yes, more tests are run to detect the Xen version.
1988 #include <xenctrl.h>
1993 if ! compile_prog
"" "$xen_libs" ; then
1995 if test "$xen" = "yes" ; then
1996 feature_not_found
"xen" "Install xen devel"
2002 cat > $TMPC <<EOF &&
2004 * If we have stable libs the we don't want the libxc compat
2005 * layers, regardless of what CFLAGS we may have been given.
2007 * Also, check if xengnttab_grant_copy_segment_t is defined and
2008 * grant copy operation is implemented.
2010 #undef XC_WANT_COMPAT_EVTCHN_API
2011 #undef XC_WANT_COMPAT_GNTTAB_API
2012 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2013 #include <xenctrl.h>
2014 #include <xenstore.h>
2015 #include <xenevtchn.h>
2016 #include <xengnttab.h>
2017 #include <xenforeignmemory.h>
2019 #include <xen/hvm/hvm_info_table.h>
2020 #if !defined(HVM_MAX_VCPUS)
2021 # error HVM_MAX_VCPUS not defined
2024 xc_interface *xc = NULL;
2025 xenforeignmemory_handle *xfmem;
2026 xenevtchn_handle *xe;
2027 xengnttab_handle *xg;
2028 xen_domain_handle_t handle;
2029 xengnttab_grant_copy_segment_t* seg = NULL;
2033 xc = xc_interface_open(0, 0, 0);
2034 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2035 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2036 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2037 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2038 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2040 xfmem = xenforeignmemory_open(0, 0);
2041 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2043 xe = xenevtchn_open(0, 0);
2046 xg = xengnttab_open(0, 0);
2047 xengnttab_grant_copy(xg, 0, seg);
2052 compile_prog
"" "$xen_libs $xen_stable_libs"
2054 xen_ctrl_version
=480
2057 cat > $TMPC <<EOF &&
2059 * If we have stable libs the we don't want the libxc compat
2060 * layers, regardless of what CFLAGS we may have been given.
2062 #undef XC_WANT_COMPAT_EVTCHN_API
2063 #undef XC_WANT_COMPAT_GNTTAB_API
2064 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2065 #include <xenctrl.h>
2066 #include <xenstore.h>
2067 #include <xenevtchn.h>
2068 #include <xengnttab.h>
2069 #include <xenforeignmemory.h>
2071 #include <xen/hvm/hvm_info_table.h>
2072 #if !defined(HVM_MAX_VCPUS)
2073 # error HVM_MAX_VCPUS not defined
2076 xc_interface *xc = NULL;
2077 xenforeignmemory_handle *xfmem;
2078 xenevtchn_handle *xe;
2079 xengnttab_handle *xg;
2080 xen_domain_handle_t handle;
2084 xc = xc_interface_open(0, 0, 0);
2085 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2086 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2087 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2088 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2089 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2091 xfmem = xenforeignmemory_open(0, 0);
2092 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2094 xe = xenevtchn_open(0, 0);
2097 xg = xengnttab_open(0, 0);
2098 xengnttab_map_grant_ref(xg, 0, 0, 0);
2103 compile_prog
"" "$xen_libs $xen_stable_libs"
2105 xen_ctrl_version
=471
2108 cat > $TMPC <<EOF &&
2109 #include <xenctrl.h>
2112 xc_interface *xc = NULL;
2113 xen_domain_handle_t handle;
2114 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2118 compile_prog
"" "$xen_libs"
2120 xen_ctrl_version
=470
2125 cat > $TMPC <<EOF &&
2126 #include <xenctrl.h>
2127 #include <xenstore.h>
2129 #include <xen/hvm/hvm_info_table.h>
2130 #if !defined(HVM_MAX_VCPUS)
2131 # error HVM_MAX_VCPUS not defined
2136 xc = xc_interface_open(0, 0, 0);
2137 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2138 xc_gnttab_open(NULL, 0);
2139 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2140 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2141 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2142 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2146 compile_prog
"" "$xen_libs"
2148 xen_ctrl_version
=460
2153 cat > $TMPC <<EOF &&
2154 #include <xenctrl.h>
2155 #include <xenstore.h>
2157 #include <xen/hvm/hvm_info_table.h>
2158 #if !defined(HVM_MAX_VCPUS)
2159 # error HVM_MAX_VCPUS not defined
2164 xc = xc_interface_open(0, 0, 0);
2165 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2166 xc_gnttab_open(NULL, 0);
2167 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2168 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2169 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2173 compile_prog
"" "$xen_libs"
2175 xen_ctrl_version
=450
2179 cat > $TMPC <<EOF &&
2180 #include <xenctrl.h>
2181 #include <xenstore.h>
2183 #include <xen/hvm/hvm_info_table.h>
2184 #if !defined(HVM_MAX_VCPUS)
2185 # error HVM_MAX_VCPUS not defined
2190 xc = xc_interface_open(0, 0, 0);
2191 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2192 xc_gnttab_open(NULL, 0);
2193 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2194 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2198 compile_prog
"" "$xen_libs"
2200 xen_ctrl_version
=420
2204 if test "$xen" = "yes" ; then
2205 feature_not_found
"xen (unsupported version)" \
2206 "Install a supported xen (xen 4.2 or newer)"
2211 if test "$xen" = yes; then
2212 if test $xen_ctrl_version -ge 471 ; then
2213 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2215 libs_softmmu
="$xen_libs $libs_softmmu"
2219 if test "$xen_pci_passthrough" != "no"; then
2220 if test "$xen" = "yes" && test "$linux" = "yes"; then
2221 xen_pci_passthrough
=yes
2223 if test "$xen_pci_passthrough" = "yes"; then
2224 error_exit
"User requested feature Xen PCI Passthrough" \
2225 " but this feature requires /sys from Linux"
2227 xen_pci_passthrough
=no
2231 if test "$xen_pv_domain_build" = "yes" &&
2232 test "$xen" != "yes"; then
2233 error_exit
"User requested Xen PV domain builder support" \
2234 "which requires Xen support."
2237 ##########################################
2239 if test "$sparse" != "no" ; then
2243 if test "$sparse" = "yes" ; then
2244 feature_not_found
"sparse" "Install sparse binary"
2250 ##########################################
2254 if $pkg_config --exists "x11"; then
2255 x11_cflags
=$
($pkg_config --cflags x11
)
2256 x11_libs
=$
($pkg_config --libs x11
)
2259 ##########################################
2262 if test "$gtkabi" = ""; then
2263 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2264 # Use 3.0 as a fallback if that is available.
2265 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2267 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2274 if test "$gtk" != "no"; then
2275 gtkpackage
="gtk+-$gtkabi"
2276 gtkx11package
="gtk+-x11-$gtkabi"
2277 if test "$gtkabi" = "3.0" ; then
2282 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2283 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2284 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2285 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2286 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2287 gtk_cflags
="$gtk_cflags $x11_cflags"
2288 gtk_libs
="$gtk_libs $x11_libs"
2290 libs_softmmu
="$gtk_libs $libs_softmmu"
2292 elif test "$gtk" = "yes"; then
2293 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2300 ##########################################
2304 # Unfortunately some distros have bad pkg-config information for gnutls
2305 # such that it claims to exist but you get a compiler error if you try
2306 # to use the options returned by --libs. Specifically, Ubuntu for --static
2307 # builds doesn't work:
2308 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2310 # So sanity check the cflags/libs before assuming gnutls can be used.
2311 if ! $pkg_config --exists "gnutls"; then
2316 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2321 if test "$gnutls" != "no"; then
2322 if gnutls_works
; then
2323 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2324 gnutls_libs
=$
($pkg_config --libs gnutls
)
2325 libs_softmmu
="$gnutls_libs $libs_softmmu"
2326 libs_tools
="$gnutls_libs $libs_tools"
2327 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2330 # gnutls_rnd requires >= 2.11.0
2331 if $pkg_config --exists "gnutls >= 2.11.0"; then
2337 if $pkg_config --exists 'gnutls >= 3.0'; then
2340 elif $pkg_config --exists 'gnutls >= 2.12'; then
2341 case $
($pkg_config --libs --static gnutls
) in
2359 elif test "$gnutls" = "yes"; then
2360 feature_not_found
"gnutls" "Install gnutls devel"
2370 # If user didn't give a --disable/enable-gcrypt flag,
2371 # then mark as disabled if user requested nettle
2372 # explicitly, or if gnutls links to nettle
2373 if test -z "$gcrypt"
2375 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2381 # If user didn't give a --disable/enable-nettle flag,
2382 # then mark as disabled if user requested gcrypt
2383 # explicitly, or if gnutls links to gcrypt
2384 if test -z "$nettle"
2386 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2392 has_libgcrypt_config
() {
2393 if ! has
"libgcrypt-config"
2398 if test -n "$cross_prefix"
2400 host=$
(libgcrypt-config
--host)
2401 if test "$host-" != $cross_prefix
2410 if test "$gcrypt" != "no"; then
2411 if has_libgcrypt_config
; then
2412 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2413 gcrypt_libs
=$
(libgcrypt-config
--libs)
2414 # Debian has remove -lgpg-error from libgcrypt-config
2415 # as it "spreads unnecessary dependencies" which in
2416 # turn breaks static builds...
2417 if test "$static" = "yes"
2419 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2421 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2422 libs_tools
="$gcrypt_libs $libs_tools"
2423 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2425 if test -z "$nettle"; then
2432 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2434 NULL, 0, 0, 0, NULL);
2438 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2445 gcry_mac_hd_t handle;
2446 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2447 GCRY_MAC_FLAG_SECURE, NULL);
2451 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2455 if test "$gcrypt" = "yes"; then
2456 feature_not_found
"gcrypt" "Install gcrypt devel"
2464 if test "$nettle" != "no"; then
2465 if $pkg_config --exists "nettle"; then
2466 nettle_cflags
=$
($pkg_config --cflags nettle
)
2467 nettle_libs
=$
($pkg_config --libs nettle
)
2468 nettle_version
=$
($pkg_config --modversion nettle
)
2469 libs_softmmu
="$nettle_libs $libs_softmmu"
2470 libs_tools
="$nettle_libs $libs_tools"
2471 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2476 #include <nettle/pbkdf2.h>
2478 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2482 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2486 if test "$nettle" = "yes"; then
2487 feature_not_found
"nettle" "Install nettle devel"
2494 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2496 error_exit
"Only one of gcrypt & nettle can be enabled"
2499 ##########################################
2500 # libtasn1 - only for the TLS creds/session test suite
2505 if $pkg_config --exists "libtasn1"; then
2506 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2507 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2513 ##########################################
2514 # getifaddrs (for tests/test-io-channel-socket )
2517 if ! check_include
"ifaddrs.h" ; then
2521 ##########################################
2524 if test "$vte" != "no"; then
2525 if test "$gtkabi" = "3.0"; then
2526 vteminversion
="0.32.0"
2527 if $pkg_config --exists "vte-2.91"; then
2528 vtepackage
="vte-2.91"
2530 vtepackage
="vte-2.90"
2534 vteminversion
="0.24.0"
2536 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2537 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2538 vte_libs
=$
($pkg_config --libs $vtepackage)
2539 vteversion
=$
($pkg_config --modversion $vtepackage)
2540 libs_softmmu
="$vte_libs $libs_softmmu"
2542 elif test "$vte" = "yes"; then
2543 if test "$gtkabi" = "3.0"; then
2544 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2546 feature_not_found
"vte" "Install libvte devel"
2553 ##########################################
2556 # Look for sdl configuration program (pkg-config or sdl-config). Try
2557 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2559 if test "$sdlabi" = ""; then
2560 if $pkg_config --exists "sdl"; then
2562 elif $pkg_config --exists "sdl2"; then
2569 if test $sdlabi = "2.0"; then
2570 sdl_config
=$sdl2_config
2572 sdlconfigname
=sdl2_config
2573 elif test $sdlabi = "1.2"; then
2575 sdlconfigname
=sdl_config
2577 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2580 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2581 sdl_config
=$sdlconfigname
2584 if $pkg_config $sdlname --exists; then
2585 sdlconfig
="$pkg_config $sdlname"
2586 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2587 elif has
${sdl_config}; then
2588 sdlconfig
="$sdl_config"
2589 sdlversion
=$
($sdlconfig --version)
2591 if test "$sdl" = "yes" ; then
2592 feature_not_found
"sdl" "Install SDL devel"
2596 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2597 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2601 if test "$sdl" != "no" ; then
2604 #undef main /* We don't want SDL to override our main() */
2605 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2607 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2608 if test "$static" = "yes" ; then
2609 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2611 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2613 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2614 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2620 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2621 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2622 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2623 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2624 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2626 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2632 else # sdl not found
2633 if test "$sdl" = "yes" ; then
2634 feature_not_found
"sdl" "Install SDL devel"
2637 fi # sdl compile test
2640 if test "$sdl" = "yes" ; then
2643 #if defined(SDL_VIDEO_DRIVER_X11)
2644 #include <X11/XKBlib.h>
2646 #error No x11 support
2648 int main(void) { return 0; }
2650 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2651 sdl_cflags
="$sdl_cflags $x11_cflags"
2652 sdl_libs
="$sdl_libs $x11_libs"
2654 libs_softmmu
="$sdl_libs $libs_softmmu"
2657 ##########################################
2658 # RDMA needs OpenFabrics libraries
2659 if test "$rdma" != "no" ; then
2661 #include <rdma/rdma_cma.h>
2662 int main(void) { return 0; }
2664 rdma_libs
="-lrdmacm -libverbs"
2665 if compile_prog
"" "$rdma_libs" ; then
2667 libs_softmmu
="$libs_softmmu $rdma_libs"
2669 if test "$rdma" = "yes" ; then
2671 " OpenFabrics librdmacm/libibverbs not present." \
2673 " (1) Fast: Install infiniband packages from your distro." \
2674 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2675 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2681 ##########################################
2682 # VNC SASL detection
2683 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2685 #include <sasl/sasl.h>
2687 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2689 # Assuming Cyrus-SASL installed in /usr prefix
2691 vnc_sasl_libs
="-lsasl2"
2692 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2694 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2695 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2697 if test "$vnc_sasl" = "yes" ; then
2698 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2704 ##########################################
2705 # VNC JPEG detection
2706 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2707 if $pkg_config --exists libjpeg
; then
2709 libs_softmmu
="$libs_softmmu $($pkg_config --libs libjpeg)"
2710 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libjpeg)"
2714 #include <jpeglib.h>
2715 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2718 vnc_jpeg_libs
="-ljpeg"
2719 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2721 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2722 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2724 if test "$vnc_jpeg" = "yes" ; then
2725 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2732 ##########################################
2734 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2736 //#include <stdio.h>
2740 png_structp png_ptr;
2741 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2742 return png_ptr != 0;
2745 if $pkg_config libpng
--exists; then
2746 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2747 vnc_png_libs
=$
($pkg_config libpng
--libs)
2750 vnc_png_libs
="-lpng"
2752 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2754 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2755 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2757 if test "$vnc_png" = "yes" ; then
2758 feature_not_found
"vnc-png" "Install libpng devel"
2764 ##########################################
2765 # fnmatch() probe, used for ACL routines
2768 #include <fnmatch.h>
2771 fnmatch("foo", "foo", 0);
2775 if compile_prog
"" "" ; then
2779 ##########################################
2780 # xfsctl() probe, used for file-posix.c
2781 if test "$xfs" != "no" ; then
2783 #include <stddef.h> /* NULL */
2784 #include <xfs/xfs.h>
2787 xfsctl(NULL, 0, 0, NULL);
2791 if compile_prog
"" "" ; then
2794 if test "$xfs" = "yes" ; then
2795 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2801 ##########################################
2802 # vde libraries probe
2803 if test "$vde" != "no" ; then
2804 vde_libs
="-lvdeplug"
2807 #include <libvdeplug.h>
2810 struct vde_open_args a = {0, 0, 0};
2816 if compile_prog
"" "$vde_libs" ; then
2818 libs_softmmu
="$vde_libs $libs_softmmu"
2819 libs_tools
="$vde_libs $libs_tools"
2821 if test "$vde" = "yes" ; then
2822 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2828 ##########################################
2829 # netmap support probe
2830 # Apart from looking for netmap headers, we make sure that the host API version
2831 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2832 # a minor/major version number. Minor new features will be marked with values up
2833 # to 15, and if something happens that requires a change to the backend we will
2834 # move above 15, submit the backend fixes and modify this two bounds.
2835 if test "$netmap" != "no" ; then
2837 #include <inttypes.h>
2839 #include <net/netmap.h>
2840 #include <net/netmap_user.h>
2841 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2844 int main(void) { return 0; }
2846 if compile_prog
"" "" ; then
2849 if test "$netmap" = "yes" ; then
2850 feature_not_found
"netmap"
2856 ##########################################
2857 # libcap-ng library probe
2858 if test "$cap_ng" != "no" ; then
2864 capng_capability_to_name(CAPNG_EFFECTIVE);
2868 if compile_prog
"" "$cap_libs" ; then
2870 libs_tools
="$cap_libs $libs_tools"
2872 if test "$cap_ng" = "yes" ; then
2873 feature_not_found
"cap_ng" "Install libcap-ng devel"
2879 ##########################################
2880 # Sound support libraries probe
2891 int main(void) { $exp }
2893 if compile_prog
"$cfl" "$lib" ; then
2896 error_exit
"$drv check failed" \
2897 "Make sure to have the $drv libs and headers installed."
2901 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
2902 for drv
in $audio_drv_list; do
2905 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2906 "return snd_pcm_close((snd_pcm_t *)0);"
2907 libs_softmmu
="-lasound $libs_softmmu"
2911 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
2912 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
2913 libs_softmmu
="-lpulse $libs_softmmu"
2918 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2922 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2927 libs_softmmu
="$oss_lib $libs_softmmu"
2931 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2935 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2936 error_exit
"Unknown driver '$drv' selected" \
2937 "Possible drivers are: $audio_possible_drivers"
2943 ##########################################
2946 if test "$brlapi" != "no" ; then
2947 brlapi_libs
="-lbrlapi"
2951 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2953 if compile_prog
"" "$brlapi_libs" ; then
2955 libs_softmmu
="$brlapi_libs $libs_softmmu"
2957 if test "$brlapi" = "yes" ; then
2958 feature_not_found
"brlapi" "Install brlapi devel"
2964 ##########################################
2966 if test "$curses" != "no" ; then
2967 if test "$mingw32" = "yes" ; then
2968 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
2969 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
2971 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
2972 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
2980 const char *s = curses_version();
2982 setlocale(LC_ALL, "");
2984 addwstr(L"wide chars\n");
2986 add_wch(WACS_DEGREE);
2991 for curses_inc
in $curses_inc_list; do
2993 for curses_lib
in $curses_lib_list; do
2995 if compile_prog
"$curses_inc" "$curses_lib" ; then
2997 QEMU_CFLAGS
="$curses_inc $QEMU_CFLAGS"
2998 libs_softmmu
="$curses_lib $libs_softmmu"
3002 if test "$curses_found" = yes ; then
3007 if test "$curses_found" = "yes" ; then
3010 if test "$curses" = "yes" ; then
3011 feature_not_found
"curses" "Install ncurses devel"
3017 ##########################################
3019 if test "$curl" != "no" ; then
3020 if $pkg_config libcurl
--exists; then
3021 curlconfig
="$pkg_config libcurl"
3023 curlconfig
=curl-config
3026 #include <curl/curl.h>
3027 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3029 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3030 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3031 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3034 if test "$curl" = "yes" ; then
3035 feature_not_found
"curl" "Install libcurl devel"
3041 ##########################################
3042 # bluez support probe
3043 if test "$bluez" != "no" ; then
3045 #include <bluetooth/bluetooth.h>
3046 int main(void) { return bt_error(0); }
3048 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3049 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3050 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3052 libs_softmmu
="$bluez_libs $libs_softmmu"
3054 if test "$bluez" = "yes" ; then
3055 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3061 ##########################################
3062 # glib support probe
3065 glib_modules
=gthread-2.0
3066 if test "$modules" = yes; then
3067 glib_modules
="$glib_modules gmodule-2.0"
3070 for i
in $glib_modules; do
3071 if $pkg_config --atleast-version=$glib_req_ver $i; then
3072 glib_cflags
=$
($pkg_config --cflags $i)
3073 glib_libs
=$
($pkg_config --libs $i)
3074 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3075 LIBS
="$glib_libs $LIBS"
3076 libs_qga
="$glib_libs $libs_qga"
3078 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3082 # Sanity check that the current size_t matches the
3083 # size that glib thinks it should be. This catches
3084 # problems on multi-arch where people try to build
3085 # 32-bit QEMU while pointing at 64-bit glib headers
3090 #define QEMU_BUILD_BUG_ON(x) \
3091 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3094 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3099 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3100 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3101 "You probably need to set PKG_CONFIG_LIBDIR"\
3102 "to point to the right pkg-config files for your"\
3106 # g_test_trap_subprocess added in 2.38. Used by some tests.
3108 if test "$mingw32" = "yes" ||
! $pkg_config --atleast-version=2.38 glib-2.0
; then
3112 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3115 int main(void) { return 0; }
3117 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3118 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3119 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3120 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3124 #########################################
3127 if test "$zlib" != "no" ; then
3128 if $pkg_config --exists zlib
; then
3129 zlib_cflags
=$
($pkg_config --cflags zlib
)
3130 zlib_libs
=$
($pkg_config --libs zlib
)
3131 QEMU_CFLAGS
="$zlib_cflags $QEMU_CFLAGS"
3132 LIBS
="$zlib_libs $LIBS"
3136 int main(void) { zlibVersion(); return 0; }
3138 if compile_prog
"" "-lz" ; then
3141 error_exit
"zlib check failed" \
3142 "Make sure to have the zlib libs and headers installed."
3147 ##########################################
3148 # SHA command probe for modules
3149 if test "$modules" = yes; then
3150 shacmd_probe
="sha1sum sha1 shasum"
3151 for c
in $shacmd_probe; do
3157 if test "$shacmd" = ""; then
3158 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3162 ##########################################
3163 # pixman support probe
3165 if test "$pixman" = ""; then
3166 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3168 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3174 if test "$pixman" = "none"; then
3175 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3176 error_exit
"pixman disabled but system emulation or tools build" \
3177 "enabled. You can turn off pixman only if you also" \
3178 "disable all system emulation targets and the tools" \
3179 "build with '--disable-tools --disable-system'."
3183 elif test "$pixman" = "system"; then
3184 # pixman version has been checked above
3185 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3186 pixman_libs
=$
($pkg_config --libs pixman-1
)
3188 if test ! -d ${source_path}/pixman
/pixman
; then
3189 error_exit
"pixman >= 0.21.8 not present. Your options:" \
3190 " (1) Preferred: Install the pixman devel package (any recent" \
3191 " distro should have packages as Xorg needs pixman too)." \
3192 " (2) Fetch the pixman submodule, using:" \
3193 " git submodule update --init pixman"
3195 mkdir
-p pixman
/pixman
3196 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3197 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3200 ##########################################
3203 if test "$cap" != "no" ; then
3206 #include <sys/capability.h>
3207 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3209 if compile_prog
"" "-lcap" ; then
3216 ##########################################
3218 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3222 #include <pthread.h>
3223 static void *f(void *p) { return NULL; }
3226 pthread_create(&thread, 0, f, 0);
3230 if compile_prog
"" "" ; then
3233 for pthread_lib
in $PTHREADLIBS_LIST; do
3234 if compile_prog
"" "$pthread_lib" ; then
3237 for lib_entry
in $LIBS; do
3238 if test "$lib_entry" = "$pthread_lib"; then
3243 if test "$found" = "no"; then
3244 LIBS
="$pthread_lib $LIBS"
3246 PTHREAD_LIB
="$pthread_lib"
3252 if test "$mingw32" != yes -a "$pthread" = no
; then
3253 error_exit
"pthread check failed" \
3254 "Make sure to have the pthread libs and headers installed."
3257 # check for pthread_setname_np
3258 pthread_setname_np
=no
3260 #include <pthread.h>
3262 static void *f(void *p) { return NULL; }
3266 pthread_create(&thread, 0, f, 0);
3267 pthread_setname_np(thread, "QEMU");
3271 if compile_prog
"" "$pthread_lib" ; then
3272 pthread_setname_np
=yes
3275 ##########################################
3277 if test "$rbd" != "no" ; then
3280 #include <rbd/librbd.h>
3283 rados_create(&cluster, NULL);
3287 rbd_libs
="-lrbd -lrados"
3288 if compile_prog
"" "$rbd_libs" ; then
3291 if test "$rbd" = "yes" ; then
3292 feature_not_found
"rados block device" "Install librbd/ceph devel"
3298 ##########################################
3300 min_libssh2_version
=1.2.8
3301 if test "$libssh2" != "no" ; then
3302 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3303 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3304 libssh2_libs
=$
($pkg_config libssh2
--libs)
3307 if test "$libssh2" = "yes" ; then
3308 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3314 ##########################################
3315 # libssh2_sftp_fsync probe
3317 if test "$libssh2" = "yes"; then
3320 #include <libssh2.h>
3321 #include <libssh2_sftp.h>
3323 LIBSSH2_SESSION *session;
3325 LIBSSH2_SFTP_HANDLE *sftp_handle;
3326 session = libssh2_session_init ();
3327 sftp = libssh2_sftp_init (session);
3328 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3329 libssh2_sftp_fsync (sftp_handle);
3333 # libssh2_cflags/libssh2_libs defined in previous test.
3334 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3335 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3339 ##########################################
3342 if test "$linux_aio" != "no" ; then
3345 #include <sys/eventfd.h>
3347 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3349 if compile_prog
"" "-laio" ; then
3352 if test "$linux_aio" = "yes" ; then
3353 feature_not_found
"linux AIO" "Install libaio devel"
3359 ##########################################
3360 # TPM passthrough is only on x86 Linux
3362 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3363 tpm_passthrough
=$tpm
3368 ##########################################
3371 if test "$attr" != "no" ; then
3374 #include <sys/types.h>
3375 #ifdef CONFIG_LIBATTR
3376 #include <attr/xattr.h>
3378 #include <sys/xattr.h>
3380 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3382 if compile_prog
"" "" ; then
3384 # Older distros have <attr/xattr.h>, and need -lattr:
3385 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3390 if test "$attr" = "yes" ; then
3391 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3397 ##########################################
3400 #include <sys/types.h>
3401 #include <sys/uio.h>
3403 int main(void) { return sizeof(struct iovec); }
3406 if compile_prog
"" "" ; then
3410 ##########################################
3413 #include <sys/types.h>
3414 #include <sys/uio.h>
3416 int main(void) { return preadv(0, 0, 0, 0); }
3419 if compile_prog
"" "" ; then
3423 ##########################################
3425 # fdt support is mandatory for at least some target architectures,
3426 # so insist on it if we're building those system emulators.
3428 for target
in $target_list; do
3430 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3436 if test "$fdt_required" = "yes"; then
3437 if test "$fdt" = "no"; then
3438 error_exit
"fdt disabled but some requested targets require it." \
3439 "You can turn off fdt only if you also disable all the system emulation" \
3440 "targets which need it (by specifying a cut down --target-list)."
3445 if test "$fdt" != "no" ; then
3447 # explicitly check for libfdt_env.h as it is missing in some stable installs
3448 # and test for required functions to make sure we are on a version >= 1.4.0
3451 #include <libfdt_env.h>
3452 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3454 if compile_prog
"" "$fdt_libs" ; then
3455 # system DTC is good - use it
3457 elif test -d ${source_path}/dtc
/libfdt
; then
3458 # have submodule DTC - use it
3462 if [ "$pwd_is_source_path" != "y" ] ; then
3463 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3464 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3466 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3467 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3468 elif test "$fdt" = "yes" ; then
3469 # have neither and want - prompt for system/submodule install
3470 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3471 " (1) Preferred: Install the DTC (libfdt) devel package" \
3472 " (2) Fetch the DTC submodule, using:" \
3473 " git submodule update --init dtc"
3475 # don't have and don't want
3481 libs_softmmu
="$libs_softmmu $fdt_libs"
3483 ##########################################
3484 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3486 if test "$opengl" != "no" ; then
3487 opengl_pkgs
="epoxy libdrm gbm"
3488 if $pkg_config $opengl_pkgs x11
; then
3489 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3490 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3492 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3496 if test "$opengl" = "yes" ; then
3497 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3505 if test "$opengl" = "yes"; then
3507 #include <epoxy/egl.h>
3508 #ifndef EGL_MESA_image_dma_buf_export
3509 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3511 int main(void) { return 0; }
3513 if compile_prog
"" "" ; then
3518 ##########################################
3520 if test "$archipelago" != "no" ; then
3523 #include <xseg/xseg.h>
3524 #include <xseg/protocol.h>
3530 archipelago_libs
=-lxseg
3531 if compile_prog
"" "$archipelago_libs"; then
3533 libs_tools
="$archipelago_libs $libs_tools"
3534 libs_softmmu
="$archipelago_libs $libs_softmmu"
3536 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3537 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3538 echo "license and therefore prevent redistribution."
3540 echo "To disable Archipelago, use --disable-archipelago"
3542 if test "$archipelago" = "yes" ; then
3543 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3550 ##########################################
3552 if test "$glusterfs" != "no" ; then
3553 if $pkg_config --atleast-version=3 glusterfs-api
; then
3555 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3556 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3557 if $pkg_config --atleast-version=4 glusterfs-api
; then
3558 glusterfs_xlator_opt
="yes"
3560 if $pkg_config --atleast-version=5 glusterfs-api
; then
3561 glusterfs_discard
="yes"
3563 if $pkg_config --atleast-version=6 glusterfs-api
; then
3564 glusterfs_zerofill
="yes"
3567 if test "$glusterfs" = "yes" ; then
3568 feature_not_found
"GlusterFS backend support" \
3569 "Install glusterfs-api devel >= 3"
3575 # Check for inotify functions when we are building linux-user
3576 # emulator. This is done because older glibc versions don't
3577 # have syscall stubs for these implemented. In that case we
3578 # don't provide them even if kernel supports them.
3582 #include <sys/inotify.h>
3587 /* try to start inotify */
3588 return inotify_init();
3591 if compile_prog
"" "" ; then
3597 #include <sys/inotify.h>
3602 /* try to start inotify */
3603 return inotify_init1(0);
3606 if compile_prog
"" "" ; then
3610 # check if utimensat and futimens are supported
3613 #define _ATFILE_SOURCE
3616 #include <sys/stat.h>
3620 utimensat(AT_FDCWD, "foo", NULL, 0);
3625 if compile_prog
"" "" ; then
3629 # check if pipe2 is there
3638 return pipe2(pipefd, O_CLOEXEC);
3641 if compile_prog
"" "" ; then
3645 # check if accept4 is there
3648 #include <sys/socket.h>
3653 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3657 if compile_prog
"" "" ; then
3661 # check if tee/splice is there. vmsplice was added same time.
3671 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3672 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3676 if compile_prog
"" "" ; then
3680 ##########################################
3683 if test "$numa" != "no" ; then
3686 int main(void) { return numa_available(); }
3689 if compile_prog
"" "-lnuma" ; then
3691 libs_softmmu
="-lnuma $libs_softmmu"
3693 if test "$numa" = "yes" ; then
3694 feature_not_found
"numa" "install numactl devel"
3700 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3701 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3705 ##########################################
3708 if test "$tcmalloc" = "yes" ; then
3711 int main(void) { malloc(1); return 0; }
3714 if compile_prog
"" "-ltcmalloc" ; then
3715 LIBS
="-ltcmalloc $LIBS"
3717 feature_not_found
"tcmalloc" "install gperftools devel"
3721 ##########################################
3724 if test "$jemalloc" = "yes" ; then
3727 int main(void) { malloc(1); return 0; }
3730 if compile_prog
"" "-ljemalloc" ; then
3731 LIBS
="-ljemalloc $LIBS"
3733 feature_not_found
"jemalloc" "install jemalloc devel"
3737 ##########################################
3742 #include <sys/syscall.h>
3744 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3747 if compile_prog
"" "" ; then
3751 # check if eventfd is supported
3754 #include <sys/eventfd.h>
3758 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3761 if compile_prog
"" "" ; then
3765 # check if memfd is supported
3768 #include <sys/memfd.h>
3772 return memfd_create("foo", MFD_ALLOW_SEALING);
3775 if compile_prog
"" "" ; then
3781 # check for fallocate
3788 fallocate(0, 0, 0, 0);
3792 if compile_prog
"" "" ; then
3796 # check for fallocate hole punching
3797 fallocate_punch_hole
=no
3800 #include <linux/falloc.h>
3804 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3808 if compile_prog
"" "" ; then
3809 fallocate_punch_hole
=yes
3812 # check that fallocate supports range zeroing inside the file
3813 fallocate_zero_range
=no
3816 #include <linux/falloc.h>
3820 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3824 if compile_prog
"" "" ; then
3825 fallocate_zero_range
=yes
3828 # check for posix_fallocate
3835 posix_fallocate(0, 0, 0);
3839 if compile_prog
"" "" ; then
3843 # check for sync_file_range
3850 sync_file_range(0, 0, 0, 0);
3854 if compile_prog
"" "" ; then
3858 # check for linux/fiemap.h and FS_IOC_FIEMAP
3861 #include <sys/ioctl.h>
3862 #include <linux/fs.h>
3863 #include <linux/fiemap.h>
3867 ioctl(0, FS_IOC_FIEMAP, 0);
3871 if compile_prog
"" "" ; then
3886 if compile_prog
"" "" ; then
3890 # check for ppoll support
3897 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3898 ppoll(&pfd, 1, 0, 0);
3902 if compile_prog
"" "" ; then
3906 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3907 prctl_pr_set_timerslack
=no
3909 #include <sys/prctl.h>
3913 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3917 if compile_prog
"" "" ; then
3918 prctl_pr_set_timerslack
=yes
3921 # check for epoll support
3924 #include <sys/epoll.h>
3932 if compile_prog
"" "" ; then
3936 # epoll_create1 is a later addition
3937 # so we must check separately for its presence
3940 #include <sys/epoll.h>
3944 /* Note that we use epoll_create1 as a value, not as
3945 * a function being called. This is necessary so that on
3946 * old SPARC glibc versions where the function was present in
3947 * the library but not declared in the header file we will
3948 * fail the configure check. (Otherwise we will get a compiler
3949 * warning but not an error, and will proceed to fail the
3950 * qemu compile where we compile with -Werror.)
3952 return (int)(uintptr_t)&epoll_create1;
3955 if compile_prog
"" "" ; then
3959 # check for sendfile support
3962 #include <sys/sendfile.h>
3966 return sendfile(0, 0, 0, 0);
3969 if compile_prog
"" "" ; then
3973 # check for timerfd support (glibc 2.8 and newer)
3976 #include <sys/timerfd.h>
3980 return(timerfd_create(CLOCK_REALTIME, 0));
3983 if compile_prog
"" "" ; then
3987 # check for setns and unshare support
4000 if compile_prog
"" "" ; then
4004 # clock_adjtime probe
4011 return clock_adjtime(0, 0);
4015 if compile_prog
"" "" ; then
4030 if compile_prog
"" "" ; then
4034 # Check if tools are available to build documentation.
4035 if test "$docs" != "no" ; then
4036 if has makeinfo
&& has pod2man
; then
4039 if test "$docs" = "yes" ; then
4040 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4046 if test "$want_tools" = ""; then
4047 if test $
(expr "$target_list" : ".*softmmu.*") != 0; then
4054 # Search for bswap_32 function
4057 #include <byteswap.h>
4058 int main(void) { return bswap_32(0); }
4060 if compile_prog
"" "" ; then
4064 # Search for bswap32 function
4067 #include <sys/endian.h>
4068 #include <sys/types.h>
4069 #include <machine/bswap.h>
4070 int main(void) { return bswap32(0); }
4072 if compile_prog
"" "" ; then
4076 ##########################################
4077 # Do we have libiscsi >= 1.9.0
4078 if test "$libiscsi" != "no" ; then
4079 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4081 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4082 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4084 if test "$libiscsi" = "yes" ; then
4085 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4091 ##########################################
4095 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4097 if compile_prog
"" "" ; then
4099 elif compile_prog
"" "-lm" ; then
4101 libs_qga
="-lm $libs_qga"
4103 error_exit
"libm check failed"
4106 ##########################################
4108 # uClibc provides 2 versions of clock_gettime(), one with realtime
4109 # support and one without. This means that the clock_gettime() don't
4110 # need -lrt. We still need it for timer_create() so we check for this
4111 # function in addition.
4116 timer_create(CLOCK_REALTIME, NULL, NULL);
4117 return clock_gettime(CLOCK_REALTIME, NULL);
4121 if compile_prog
"" "" ; then
4123 # we need pthread for static linking. use previous pthread test result
4124 elif compile_prog
"" "$pthread_lib -lrt" ; then
4126 libs_qga
="$libs_qga -lrt"
4129 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4130 "$aix" != "yes" -a "$haiku" != "yes" ; then
4131 libs_softmmu
="-lutil $libs_softmmu"
4134 ##########################################
4136 if test "$spice" != "no" ; then
4139 int main(void) { spice_server_new(); return 0; }
4141 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4142 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4143 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4144 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4145 compile_prog
"$spice_cflags" "$spice_libs" ; then
4147 libs_softmmu
="$libs_softmmu $spice_libs"
4148 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4149 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4150 spice_server_version
=$
($pkg_config --modversion spice-server
)
4152 if test "$spice" = "yes" ; then
4153 feature_not_found
"spice" \
4154 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4160 # check for smartcard support
4162 if test "$smartcard" != "no"; then
4163 if $pkg_config libcacard
; then
4164 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4165 libcacard_libs
=$
($pkg_config --libs libcacard
)
4166 QEMU_CFLAGS
="$QEMU_CFLAGS $libcacard_cflags"
4167 libs_softmmu
="$libs_softmmu $libcacard_libs"
4170 if test "$smartcard" = "yes"; then
4171 feature_not_found
"smartcard" "Install libcacard devel"
4178 if test "$libusb" != "no" ; then
4179 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4181 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4182 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4183 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
4184 libs_softmmu
="$libs_softmmu $libusb_libs"
4186 if test "$libusb" = "yes"; then
4187 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4193 # check for usbredirparser for usb network redirection support
4194 if test "$usb_redir" != "no" ; then
4195 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4197 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4198 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4199 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
4200 libs_softmmu
="$libs_softmmu $usb_redir_libs"
4202 if test "$usb_redir" = "yes"; then
4203 feature_not_found
"usb-redir" "Install usbredir devel"
4209 ##########################################
4210 # check if we have VSS SDK headers for win
4212 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4213 case "$vss_win32_sdk" in
4214 "") vss_win32_include
="-isystem $source_path" ;;
4215 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4216 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4217 vss_win32_include
="-isystem $source_path/.sdk/vss"
4218 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4220 *) vss_win32_include
="-isystem $vss_win32_sdk"
4223 #define __MIDL_user_allocate_free_DEFINED__
4224 #include <inc/win2003/vss.h>
4225 int main(void) { return VSS_CTX_BACKUP; }
4227 if compile_prog
"$vss_win32_include" "" ; then
4228 guest_agent_with_vss
="yes"
4229 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4230 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4231 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4233 if test "$vss_win32_sdk" != "" ; then
4234 echo "ERROR: Please download and install Microsoft VSS SDK:"
4235 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4236 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4237 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4238 echo "ERROR: The headers are extracted in the directory \`inc'."
4239 feature_not_found
"VSS support"
4241 guest_agent_with_vss
="no"
4245 ##########################################
4246 # lookup Windows platform SDK (if not specified)
4247 # The SDK is needed only to build .tlb (type library) file of guest agent
4248 # VSS provider from the source. It is usually unnecessary because the
4249 # pre-compiled .tlb file is included.
4251 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4252 if test -z "$win_sdk"; then
4253 programfiles
="$PROGRAMFILES"
4254 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4255 if test -n "$programfiles"; then
4256 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4258 feature_not_found
"Windows SDK"
4260 elif test "$win_sdk" = "no"; then
4265 ##########################################
4266 # check if mingw environment provides a recent ntddscsi.h
4267 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4269 #include <windows.h>
4270 #include <ntddscsi.h>
4272 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4273 #error Missing required ioctl definitions
4275 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4279 if compile_prog
"" "" ; then
4280 guest_agent_ntddscsi
=yes
4281 libs_qga
="-lsetupapi $libs_qga"
4285 ##########################################
4286 # virgl renderer probe
4288 if test "$virglrenderer" != "no" ; then
4290 #include <virglrenderer.h>
4291 int main(void) { virgl_renderer_poll(); return 0; }
4293 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4294 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4295 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4296 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4299 if test "$virglrenderer" = "yes" ; then
4300 feature_not_found
"virglrenderer"
4306 ##########################################
4307 # check if we have fdatasync
4313 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4314 return fdatasync(0);
4316 #error Not supported
4320 if compile_prog
"" "" ; then
4324 ##########################################
4325 # check if we have madvise
4329 #include <sys/types.h>
4330 #include <sys/mman.h>
4332 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4334 if compile_prog
"" "" ; then
4338 ##########################################
4339 # check if we have posix_madvise
4343 #include <sys/mman.h>
4345 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4347 if compile_prog
"" "" ; then
4351 ##########################################
4352 # check if we have posix_syslog
4357 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4359 if compile_prog
"" "" ; then
4363 ##########################################
4364 # check if trace backend exists
4366 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4367 if test "$?" -ne 0 ; then
4368 error_exit
"invalid trace backends" \
4369 "Please choose supported trace backends."
4372 ##########################################
4373 # For 'ust' backend, test if ust headers are present
4374 if have_backend
"ust"; then
4376 #include <lttng/tracepoint.h>
4377 int main(void) { return 0; }
4379 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4380 if $pkg_config lttng-ust
--exists; then
4381 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4383 lttng_ust_libs
="-llttng-ust -ldl"
4385 if $pkg_config liburcu-bp
--exists; then
4386 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4388 urcu_bp_libs
="-lurcu-bp"
4391 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4392 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4394 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4398 ##########################################
4399 # For 'dtrace' backend, test if 'dtrace' command is present
4400 if have_backend
"dtrace"; then
4401 if ! has
'dtrace' ; then
4402 error_exit
"dtrace command is not found in PATH $PATH"
4404 trace_backend_stap
="no"
4405 if has
'stap' ; then
4406 trace_backend_stap
="yes"
4410 ##########################################
4411 # check and set a backend for coroutine
4413 # We prefer ucontext, but it's not always possible. The fallback
4414 # is sigcontext. gthread is not selectable except explicitly, because
4415 # it is not functional enough to run QEMU proper. (It is occasionally
4416 # useful for debugging purposes.) On Windows the only valid backend
4417 # is the Windows-specific one.
4420 if test "$darwin" != "yes"; then
4422 #include <ucontext.h>
4423 #ifdef __stub_makecontext
4424 #error Ignoring glibc stub makecontext which will always fail
4426 int main(void) { makecontext(0, 0, 0); return 0; }
4428 if compile_prog
"" "" ; then
4433 if test "$coroutine" = ""; then
4434 if test "$mingw32" = "yes"; then
4436 elif test "$ucontext_works" = "yes"; then
4439 coroutine
=sigaltstack
4444 if test "$mingw32" != "yes"; then
4445 error_exit
"'windows' coroutine backend only valid for Windows"
4447 # Unfortunately the user visible backend name doesn't match the
4448 # coroutine-*.c filename for this case, so we have to adjust it here.
4452 if test "$ucontext_works" != "yes"; then
4453 feature_not_found
"ucontext"
4456 gthread|sigaltstack
)
4457 if test "$mingw32" = "yes"; then
4458 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4462 error_exit
"unknown coroutine backend $coroutine"
4467 if test "$coroutine_pool" = ""; then
4468 if test "$coroutine" = "gthread" -o "$coroutine" = "win32"; then
4474 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4475 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4478 if test "$debug_stack_usage" = "yes"; then
4479 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4480 error_exit
"stack usage debugging is not supported for $cpu"
4482 if test "$coroutine_pool" = "yes"; then
4483 echo "WARN: disabling coroutine pool for stack usage debugging"
4489 ##########################################
4490 # check if we have open_by_handle_at
4492 open_by_handle_at
=no
4495 #if !defined(AT_EMPTY_PATH)
4496 # error missing definition
4498 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4501 if compile_prog
"" "" ; then
4502 open_by_handle_at
=yes
4505 ########################################
4506 # check if we have linux/magic.h
4510 #include <linux/magic.h>
4515 if compile_prog
"" "" ; then
4519 ########################################
4520 # check whether we can disable warning option with a pragma (this is needed
4521 # to silence warnings in the headers of some versions of external libraries).
4522 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4525 # If we can't selectively disable warning in the code, disable -Werror so that
4526 # the build doesn't fail anyway.
4528 pragma_disable_unused_but_set
=no
4530 #pragma GCC diagnostic push
4531 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4532 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4533 #pragma GCC diagnostic pop
4539 if compile_prog
"-Werror" "" ; then
4540 pragma_diagnostic_available
=yes
4543 ########################################
4544 # check if we have valgrind/valgrind.h
4548 #include <valgrind/valgrind.h>
4553 if compile_prog
"" "" ; then
4557 ########################################
4558 # check if environ is declared
4568 if compile_prog
"" "" ; then
4572 ########################################
4573 # check if cpuid.h is usable.
4579 unsigned a, b, c, d;
4580 int max = __get_cpuid_max(0, 0);
4583 __cpuid(1, a, b, c, d);
4587 __cpuid_count(7, 0, a, b, c, d);
4593 if compile_prog
"" "" ; then
4597 ########################################
4598 # check if __[u]int128_t is usable.
4602 #if defined(__clang_major__) && defined(__clang_minor__)
4603 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4604 # error __int128_t does not work in CLANG before 3.2
4616 if compile_prog
"" "" ; then
4620 #########################################
4621 # See if 128-bit atomic operations are supported.
4624 if test "$int128" = "yes"; then
4628 unsigned __int128 x = 0, y = 0;
4629 y = __atomic_load_16(&x, 0);
4630 __atomic_store_16(&x, y, 0);
4631 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4635 if compile_prog
"" "" ; then
4640 #########################################
4641 # See if 64-bit atomic operations are supported.
4642 # Note that without __atomic builtins, we can only
4643 # assume atomic loads/stores max at pointer size.
4649 uint64_t x = 0, y = 0;
4650 #ifdef __ATOMIC_RELAXED
4651 y = __atomic_load_8(&x, 0);
4652 __atomic_store_8(&x, y, 0);
4653 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4654 __atomic_exchange_8(&x, y, 0);
4655 __atomic_fetch_add_8(&x, y, 0);
4657 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4658 __sync_lock_test_and_set(&x, y);
4659 __sync_val_compare_and_swap(&x, y, 0);
4660 __sync_fetch_and_add(&x, y);
4665 if compile_prog
"" "" ; then
4669 ########################################
4670 # check if getauxval is available.
4674 #include <sys/auxv.h>
4676 return getauxval(AT_HWCAP) == 0;
4679 if compile_prog
"" "" ; then
4683 ########################################
4684 # check if ccache is interfering with
4685 # semantic analysis of macros
4690 static const int Z = 1;
4691 #define fn() ({ Z; })
4692 #define TAUT(X) ((X) == Z)
4693 #define PAREN(X, Y) (X == Y)
4695 int main(int argc, char *argv[])
4701 if (PAREN(x, y)) return 0;
4702 if (TAUT(Z)) return 0;
4707 if ! compile_object
"-Werror"; then
4711 #################################################
4712 # clang does not support glibc + FORTIFY_SOURCE.
4714 if test "$fortify_source" != "no"; then
4715 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4716 fortify_source
="no";
4717 elif test -n "$cxx" &&
4718 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4719 fortify_source
="no";
4721 fortify_source
="yes"
4725 ##########################################
4726 # check if struct fsxattr is available via linux/fs.h
4730 #include <linux/fs.h>
4736 if compile_prog
"" "" ; then
4740 ##########################################
4741 # check if rtnetlink.h exists and is useful
4744 #include <linux/rtnetlink.h>
4746 return IFLA_PROTO_DOWN;
4749 if compile_prog
"" "" ; then
4753 ##########################################
4754 # check for usable AF_VSOCK environment
4758 #include <sys/types.h>
4759 #include <sys/socket.h>
4760 #if !defined(AF_VSOCK)
4761 # error missing AF_VSOCK flag
4763 #include <linux/vm_sockets.h>
4766 struct sockaddr_vm svm;
4767 socklen_t len = sizeof(svm);
4768 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4769 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4770 if ((ret == -1) && (errno == ENOTCONN)) {
4776 if compile_prog
"" "" ; then
4780 #################################################
4781 # Sparc implicitly links with --relax, which is
4782 # incompatible with -r, so --no-relax should be
4783 # given. It does no harm to give it on other
4786 # Note: the prototype is needed since QEMU_CFLAGS
4787 # contains -Wmissing-prototypes
4789 extern int foo(void);
4790 int foo(void) { return 0; }
4792 if ! compile_object
""; then
4793 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
4795 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
4796 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
4801 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
4802 feature_not_found
"modules" "Cannot find how to build relocatable objects"
4805 ##########################################
4807 # After here, no more $cc or $ld runs
4809 if test "$gcov" = "yes" ; then
4810 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4811 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4812 elif test "$fortify_source" = "yes" ; then
4813 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4814 elif test "$debug" = "no"; then
4815 CFLAGS
="-O2 $CFLAGS"
4818 ##########################################
4820 if test "$libnfs" != "no" ; then
4821 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4823 libnfs_libs
=$
($pkg_config --libs libnfs
)
4825 if test "$libnfs" = "yes" ; then
4826 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4832 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4833 if test "$werror" = "yes"; then
4834 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4837 if test "$solaris" = "no" ; then
4838 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4839 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4843 # test if pod2man has --utf8 option
4844 if pod2man
--help |
grep -q utf8
; then
4845 POD2MAN
="pod2man --utf8"
4850 # Use large addresses, ASLR, no-SEH and DEP if available.
4851 if test "$mingw32" = "yes" ; then
4852 if test "$cpu" = i386
; then
4853 LDFLAGS
="-Wl,--large-address-aware $LDFLAGS"
4855 for flag
in --dynamicbase --no-seh --nxcompat; do
4856 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4857 LDFLAGS
="-Wl,$flag $LDFLAGS"
4862 qemu_confdir
=$sysconfdir$confsuffix
4863 qemu_moddir
=$libdir$confsuffix
4864 qemu_datadir
=$datadir$confsuffix
4865 qemu_localedir
="$datadir/locale"
4868 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4869 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4870 tools
="qemu-nbd\$(EXESUF) $tools"
4871 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4873 if test "$softmmu" = yes ; then
4874 if test "$virtfs" != no
; then
4875 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4877 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4879 if test "$virtfs" = yes; then
4880 error_exit
"VirtFS is supported only on Linux and requires libcap devel and libattr devel"
4887 # Probe for guest agent support/options
4889 if [ "$guest_agent" != "no" ]; then
4890 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4891 tools
="qemu-ga $tools"
4893 elif [ "$guest_agent" != yes ]; then
4896 error_exit
"Guest agent is not supported on this platform"
4900 # Guest agent Window MSI package
4902 if test "$guest_agent" != yes; then
4903 if test "$guest_agent_msi" = yes; then
4904 error_exit
"MSI guest agent package requires guest agent enabled"
4907 elif test "$mingw32" != "yes"; then
4908 if test "$guest_agent_msi" = "yes"; then
4909 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
4912 elif ! has wixl
; then
4913 if test "$guest_agent_msi" = "yes"; then
4914 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4918 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4919 # disabled explicitly
4920 if test "$guest_agent_msi" != "no"; then
4925 if test "$guest_agent_msi" = "yes"; then
4926 if test "$guest_agent_with_vss" = "yes"; then
4927 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
4930 if test "$QEMU_GA_MANUFACTURER" = ""; then
4931 QEMU_GA_MANUFACTURER
=QEMU
4934 if test "$QEMU_GA_DISTRO" = ""; then
4935 QEMU_GA_DISTRO
=Linux
4938 if test "$QEMU_GA_VERSION" = ""; then
4939 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
4942 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
4946 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
4949 QEMU_GA_MSI_ARCH
="-D Arch=32"
4952 error_exit
"CPU $cpu not supported for building installation package"
4957 # Mac OS X ships with a broken assembler
4959 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4960 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4961 "$softmmu" = yes ; then
4962 # Different host OS linkers have different ideas about the name of the ELF
4963 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
4964 # variant; and Windows uses i386pe.
4965 for emu
in elf_i386 elf_i386_fbsd i386pe
; do
4966 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
4967 ld_i386_emulation
="$emu"
4973 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4974 roms
="$roms spapr-rtas"
4977 if test "$cpu" = "s390x" ; then
4978 roms
="$roms s390-ccw"
4981 # Probe for the need for relocating the user-only binary.
4982 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
4985 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4986 # ??? Rationale for choosing this address
4987 textseg_addr
=0x60000000
4990 # A 256M aligned address, high in the address space, with enough
4991 # room for the code_gen_buffer above it before the stack.
4992 textseg_addr
=0x60000000
4995 if [ -n "$textseg_addr" ]; then
4997 int main(void) { return 0; }
4999 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5000 if ! compile_prog
"" "$textseg_ldflags"; then
5001 # In case ld does not support -Ttext-segment, edit the default linker
5002 # script via sed to set the .text start addr. This is needed on FreeBSD
5004 if ! $ld --verbose >/dev
/null
2>&1; then
5006 "We need to link the QEMU user mode binaries at a" \
5007 "specific text address. Unfortunately your linker" \
5008 "doesn't support either the -Ttext-segment option or" \
5009 "printing the default linker script with --verbose." \
5010 "If you don't want the user mode binaries, pass the" \
5011 "--disable-user option to configure."
5014 $ld --verbose |
sed \
5015 -e '1,/==================================================/d' \
5016 -e '/==================================================/,$d' \
5017 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5018 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5019 textseg_ldflags
="-Wl,-T../config-host.ld"
5025 if test "$1" = "yes" ; then
5030 # prepend pixman and ftd flags after all config tests are done
5031 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5032 libs_softmmu
="$pixman_libs $libs_softmmu"
5034 echo "Install prefix $prefix"
5035 echo "BIOS directory $(eval echo $qemu_datadir)"
5036 echo "binary directory $(eval echo $bindir)"
5037 echo "library directory $(eval echo $libdir)"
5038 echo "module directory $(eval echo $qemu_moddir)"
5039 echo "libexec directory $(eval echo $libexecdir)"
5040 echo "include directory $(eval echo $includedir)"
5041 echo "config directory $(eval echo $sysconfdir)"
5042 if test "$mingw32" = "no" ; then
5043 echo "local state directory $(eval echo $local_statedir)"
5044 echo "Manual directory $(eval echo $mandir)"
5045 echo "ELF interp prefix $interp_prefix"
5047 echo "local state directory queried at runtime"
5048 echo "Windows SDK $win_sdk"
5050 echo "Source path $source_path"
5051 echo "C compiler $cc"
5052 echo "Host C compiler $host_cc"
5053 echo "C++ compiler $cxx"
5054 echo "Objective-C compiler $objcc"
5055 echo "ARFLAGS $ARFLAGS"
5056 echo "CFLAGS $CFLAGS"
5057 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5058 echo "LDFLAGS $LDFLAGS"
5060 echo "install $install"
5061 echo "python $python"
5062 if test "$slirp" = "yes" ; then
5065 echo "module support $modules"
5066 echo "host CPU $cpu"
5067 echo "host big endian $bigendian"
5068 echo "target list $target_list"
5069 echo "tcg debug enabled $debug_tcg"
5070 echo "gprof enabled $gprof"
5071 echo "sparse enabled $sparse"
5072 echo "strip binaries $strip_opt"
5073 echo "profiler $profiler"
5074 echo "static build $static"
5075 if test "$darwin" = "yes" ; then
5076 echo "Cocoa support $cocoa"
5078 echo "pixman $pixman"
5079 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5080 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5081 echo "GTK GL support $gtk_gl"
5082 echo "VTE support $vte $(echo_version $vte $vteversion)"
5083 echo "TLS priority $tls_priority"
5084 echo "GNUTLS support $gnutls"
5085 echo "GNUTLS rnd $gnutls_rnd"
5086 if test "$gcrypt" = "yes"; then
5087 echo "encryption libgcrypt"
5088 echo "libgcrypt kdf $gcrypt_kdf"
5089 elif test "$nettle" = "yes"; then
5090 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5092 echo "encryption none"
5094 echo "nettle kdf $nettle_kdf"
5095 echo "libtasn1 $tasn1"
5096 echo "curses support $curses"
5097 echo "virgl support $virglrenderer"
5098 echo "curl support $curl"
5099 echo "mingw32 support $mingw32"
5100 echo "Audio drivers $audio_drv_list"
5101 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5102 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5103 echo "VirtFS support $virtfs"
5104 echo "VNC support $vnc"
5105 if test "$vnc" = "yes" ; then
5106 echo "VNC SASL support $vnc_sasl"
5107 echo "VNC JPEG support $vnc_jpeg"
5108 echo "VNC PNG support $vnc_png"
5110 if test -n "$sparc_cpu"; then
5111 echo "Target Sparc Arch $sparc_cpu"
5113 echo "xen support $xen"
5114 if test "$xen" = "yes" ; then
5115 echo "xen ctrl version $xen_ctrl_version"
5116 echo "pv dom build $xen_pv_domain_build"
5118 echo "brlapi support $brlapi"
5119 echo "bluez support $bluez"
5120 echo "Documentation $docs"
5123 echo "vde support $vde"
5124 echo "netmap support $netmap"
5125 echo "Linux AIO support $linux_aio"
5126 echo "(X)ATTR support $attr"
5127 echo "Install blobs $blobs"
5128 echo "KVM support $kvm"
5129 echo "COLO support $colo"
5130 echo "HAX support $hax"
5131 echo "RDMA support $rdma"
5132 echo "TCG interpreter $tcg_interpreter"
5133 echo "fdt support $fdt"
5134 echo "preadv support $preadv"
5135 echo "fdatasync $fdatasync"
5136 echo "madvise $madvise"
5137 echo "posix_madvise $posix_madvise"
5138 echo "libcap-ng support $cap_ng"
5139 echo "vhost-net support $vhost_net"
5140 echo "vhost-scsi support $vhost_scsi"
5141 echo "vhost-vsock support $vhost_vsock"
5142 echo "Trace backends $trace_backends"
5143 if have_backend
"simple"; then
5144 echo "Trace output file $trace_file-<pid>"
5146 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5147 echo "rbd support $rbd"
5148 echo "xfsctl support $xfs"
5149 echo "smartcard support $smartcard"
5150 echo "libusb $libusb"
5151 echo "usb net redir $usb_redir"
5152 echo "OpenGL support $opengl"
5153 echo "OpenGL dmabufs $opengl_dmabuf"
5154 echo "libiscsi support $libiscsi"
5155 echo "libnfs support $libnfs"
5156 echo "build guest agent $guest_agent"
5157 echo "QGA VSS support $guest_agent_with_vss"
5158 echo "QGA w32 disk info $guest_agent_ntddscsi"
5159 echo "QGA MSI support $guest_agent_msi"
5160 echo "seccomp support $seccomp"
5161 echo "coroutine backend $coroutine"
5162 echo "coroutine pool $coroutine_pool"
5163 echo "debug stack usage $debug_stack_usage"
5164 echo "GlusterFS support $glusterfs"
5165 echo "Archipelago support $archipelago"
5166 echo "gcov $gcov_tool"
5167 echo "gcov enabled $gcov"
5168 echo "TPM support $tpm"
5169 echo "libssh2 support $libssh2"
5170 echo "TPM passthrough $tpm_passthrough"
5171 echo "QOM debugging $qom_cast_debug"
5172 echo "lzo support $lzo"
5173 echo "snappy support $snappy"
5174 echo "bzip2 support $bzip2"
5175 echo "NUMA host support $numa"
5176 echo "tcmalloc support $tcmalloc"
5177 echo "jemalloc support $jemalloc"
5178 echo "avx2 optimization $avx2_opt"
5179 echo "replication support $replication"
5181 if test "$sdl_too_old" = "yes"; then
5182 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5185 config_host_mak
="config-host.mak"
5187 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5189 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5190 echo >> $config_host_mak
5192 echo all
: >> $config_host_mak
5193 echo "prefix=$prefix" >> $config_host_mak
5194 echo "bindir=$bindir" >> $config_host_mak
5195 echo "libdir=$libdir" >> $config_host_mak
5196 echo "libexecdir=$libexecdir" >> $config_host_mak
5197 echo "includedir=$includedir" >> $config_host_mak
5198 echo "mandir=$mandir" >> $config_host_mak
5199 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5200 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5201 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5202 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5203 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5204 if test "$mingw32" = "no" ; then
5205 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5207 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5208 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5209 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5210 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5211 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5213 echo "ARCH=$ARCH" >> $config_host_mak
5215 if test "$debug_tcg" = "yes" ; then
5216 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5218 if test "$strip_opt" = "yes" ; then
5219 echo "STRIP=${strip}" >> $config_host_mak
5221 if test "$bigendian" = "yes" ; then
5222 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5224 if test "$mingw32" = "yes" ; then
5225 echo "CONFIG_WIN32=y" >> $config_host_mak
5226 echo "CONFIG_INSTALLER=y" >> $config_host_mak
5227 rc_version
=$
(cat $source_path/VERSION
)
5228 version_major
=${rc_version%%.*}
5229 rc_version
=${rc_version#*.}
5230 version_minor
=${rc_version%%.*}
5231 rc_version
=${rc_version#*.}
5232 version_subminor
=${rc_version%%.*}
5234 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5235 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5236 if test "$guest_agent_with_vss" = "yes" ; then
5237 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5238 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5239 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5241 if test "$guest_agent_ntddscsi" = "yes" ; then
5242 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5244 if test "$guest_agent_msi" = "yes"; then
5245 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5246 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5247 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5248 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5249 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5250 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5251 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5254 echo "CONFIG_POSIX=y" >> $config_host_mak
5257 if test "$linux" = "yes" ; then
5258 echo "CONFIG_LINUX=y" >> $config_host_mak
5261 if test "$darwin" = "yes" ; then
5262 echo "CONFIG_DARWIN=y" >> $config_host_mak
5265 if test "$aix" = "yes" ; then
5266 echo "CONFIG_AIX=y" >> $config_host_mak
5269 if test "$solaris" = "yes" ; then
5270 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5271 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5272 if test "$needs_libsunmath" = "yes" ; then
5273 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5276 if test "$haiku" = "yes" ; then
5277 echo "CONFIG_HAIKU=y" >> $config_host_mak
5279 if test "$static" = "yes" ; then
5280 echo "CONFIG_STATIC=y" >> $config_host_mak
5282 if test "$profiler" = "yes" ; then
5283 echo "CONFIG_PROFILER=y" >> $config_host_mak
5285 if test "$slirp" = "yes" ; then
5286 echo "CONFIG_SLIRP=y" >> $config_host_mak
5287 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5289 if test "$vde" = "yes" ; then
5290 echo "CONFIG_VDE=y" >> $config_host_mak
5292 if test "$netmap" = "yes" ; then
5293 echo "CONFIG_NETMAP=y" >> $config_host_mak
5295 if test "$l2tpv3" = "yes" ; then
5296 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5298 if test "$cap_ng" = "yes" ; then
5299 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5301 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5302 for drv
in $audio_drv_list; do
5303 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5304 echo "$def=y" >> $config_host_mak
5306 if test "$audio_pt_int" = "yes" ; then
5307 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5309 if test "$audio_win_int" = "yes" ; then
5310 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5312 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5313 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5314 if test "$vnc" = "yes" ; then
5315 echo "CONFIG_VNC=y" >> $config_host_mak
5317 if test "$vnc_sasl" = "yes" ; then
5318 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5320 if test "$vnc_jpeg" = "yes" ; then
5321 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5323 if test "$vnc_png" = "yes" ; then
5324 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5326 if test "$fnmatch" = "yes" ; then
5327 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5329 if test "$xfs" = "yes" ; then
5330 echo "CONFIG_XFS=y" >> $config_host_mak
5332 qemu_version
=$
(head $source_path/VERSION
)
5333 echo "VERSION=$qemu_version" >>$config_host_mak
5334 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5335 echo "SRC_PATH=$source_path" >> $config_host_mak
5336 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5337 if [ "$docs" = "yes" ] ; then
5338 echo "BUILD_DOCS=yes" >> $config_host_mak
5340 if [ "$want_tools" = "yes" ] ; then
5341 echo "BUILD_TOOLS=yes" >> $config_host_mak
5343 if test "$modules" = "yes"; then
5344 # $shacmd can generate a hash started with digit, which the compiler doesn't
5345 # like as an symbol. So prefix it with an underscore
5346 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5347 echo "CONFIG_MODULES=y" >> $config_host_mak
5349 if test "$sdl" = "yes" ; then
5350 echo "CONFIG_SDL=y" >> $config_host_mak
5351 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5352 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5354 if test "$cocoa" = "yes" ; then
5355 echo "CONFIG_COCOA=y" >> $config_host_mak
5357 if test "$curses" = "yes" ; then
5358 echo "CONFIG_CURSES=y" >> $config_host_mak
5360 if test "$utimens" = "yes" ; then
5361 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
5363 if test "$pipe2" = "yes" ; then
5364 echo "CONFIG_PIPE2=y" >> $config_host_mak
5366 if test "$accept4" = "yes" ; then
5367 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5369 if test "$splice" = "yes" ; then
5370 echo "CONFIG_SPLICE=y" >> $config_host_mak
5372 if test "$eventfd" = "yes" ; then
5373 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5375 if test "$memfd" = "yes" ; then
5376 echo "CONFIG_MEMFD=y" >> $config_host_mak
5378 if test "$fallocate" = "yes" ; then
5379 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5381 if test "$fallocate_punch_hole" = "yes" ; then
5382 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5384 if test "$fallocate_zero_range" = "yes" ; then
5385 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5387 if test "$posix_fallocate" = "yes" ; then
5388 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5390 if test "$sync_file_range" = "yes" ; then
5391 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5393 if test "$fiemap" = "yes" ; then
5394 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5396 if test "$dup3" = "yes" ; then
5397 echo "CONFIG_DUP3=y" >> $config_host_mak
5399 if test "$ppoll" = "yes" ; then
5400 echo "CONFIG_PPOLL=y" >> $config_host_mak
5402 if test "$prctl_pr_set_timerslack" = "yes" ; then
5403 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5405 if test "$epoll" = "yes" ; then
5406 echo "CONFIG_EPOLL=y" >> $config_host_mak
5408 if test "$epoll_create1" = "yes" ; then
5409 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5411 if test "$sendfile" = "yes" ; then
5412 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5414 if test "$timerfd" = "yes" ; then
5415 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5417 if test "$setns" = "yes" ; then
5418 echo "CONFIG_SETNS=y" >> $config_host_mak
5420 if test "$clock_adjtime" = "yes" ; then
5421 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5423 if test "$syncfs" = "yes" ; then
5424 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5426 if test "$inotify" = "yes" ; then
5427 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5429 if test "$inotify1" = "yes" ; then
5430 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5432 if test "$byteswap_h" = "yes" ; then
5433 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5435 if test "$bswap_h" = "yes" ; then
5436 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5438 if test "$curl" = "yes" ; then
5439 echo "CONFIG_CURL=m" >> $config_host_mak
5440 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5441 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5443 if test "$brlapi" = "yes" ; then
5444 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5446 if test "$bluez" = "yes" ; then
5447 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5448 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5450 if test "$glib_subprocess" = "yes" ; then
5451 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5453 if test "$gtk" = "yes" ; then
5454 echo "CONFIG_GTK=y" >> $config_host_mak
5455 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5456 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5457 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5458 if test "$gtk_gl" = "yes" ; then
5459 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5462 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5463 if test "$gnutls" = "yes" ; then
5464 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5466 if test "$gnutls_rnd" = "yes" ; then
5467 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5469 if test "$gcrypt" = "yes" ; then
5470 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5471 if test "$gcrypt_hmac" = "yes" ; then
5472 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5474 if test "$gcrypt_kdf" = "yes" ; then
5475 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5478 if test "$nettle" = "yes" ; then
5479 echo "CONFIG_NETTLE=y" >> $config_host_mak
5480 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5481 if test "$nettle_kdf" = "yes" ; then
5482 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5485 if test "$tasn1" = "yes" ; then
5486 echo "CONFIG_TASN1=y" >> $config_host_mak
5488 if test "$have_ifaddrs_h" = "yes" ; then
5489 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5491 if test "$have_broken_size_max" = "yes" ; then
5492 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5495 # Work around a system header bug with some kernel/XFS header
5496 # versions where they both try to define 'struct fsxattr':
5497 # xfs headers will not try to redefine structs from linux headers
5498 # if this macro is set.
5499 if test "$have_fsxattr" = "yes" ; then
5500 echo "HAVE_FSXATTR=y" >> $config_host_mak
5502 if test "$vte" = "yes" ; then
5503 echo "CONFIG_VTE=y" >> $config_host_mak
5504 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5506 if test "$virglrenderer" = "yes" ; then
5507 echo "CONFIG_VIRGL=y" >> $config_host_mak
5508 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5509 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5511 if test "$xen" = "yes" ; then
5512 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5513 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5514 if test "$xen_pv_domain_build" = "yes" ; then
5515 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5518 if test "$linux_aio" = "yes" ; then
5519 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5521 if test "$attr" = "yes" ; then
5522 echo "CONFIG_ATTR=y" >> $config_host_mak
5524 if test "$libattr" = "yes" ; then
5525 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5527 if test "$virtfs" = "yes" ; then
5528 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5530 if test "$vhost_scsi" = "yes" ; then
5531 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5533 if test "$vhost_net" = "yes" ; then
5534 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5536 if test "$vhost_vsock" = "yes" ; then
5537 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5539 if test "$blobs" = "yes" ; then
5540 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5542 if test "$iovec" = "yes" ; then
5543 echo "CONFIG_IOVEC=y" >> $config_host_mak
5545 if test "$preadv" = "yes" ; then
5546 echo "CONFIG_PREADV=y" >> $config_host_mak
5548 if test "$fdt" = "yes" ; then
5549 echo "CONFIG_FDT=y" >> $config_host_mak
5551 if test "$signalfd" = "yes" ; then
5552 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5554 if test "$tcg_interpreter" = "yes" ; then
5555 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5557 if test "$fdatasync" = "yes" ; then
5558 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5560 if test "$madvise" = "yes" ; then
5561 echo "CONFIG_MADVISE=y" >> $config_host_mak
5563 if test "$posix_madvise" = "yes" ; then
5564 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5567 if test "$spice" = "yes" ; then
5568 echo "CONFIG_SPICE=y" >> $config_host_mak
5571 if test "$smartcard" = "yes" ; then
5572 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5575 if test "$libusb" = "yes" ; then
5576 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5579 if test "$usb_redir" = "yes" ; then
5580 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5583 if test "$opengl" = "yes" ; then
5584 echo "CONFIG_OPENGL=y" >> $config_host_mak
5585 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5586 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5587 if test "$opengl_dmabuf" = "yes" ; then
5588 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5592 if test "$avx2_opt" = "yes" ; then
5593 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5596 if test "$lzo" = "yes" ; then
5597 echo "CONFIG_LZO=y" >> $config_host_mak
5600 if test "$snappy" = "yes" ; then
5601 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5604 if test "$bzip2" = "yes" ; then
5605 echo "CONFIG_BZIP2=y" >> $config_host_mak
5606 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5609 if test "$libiscsi" = "yes" ; then
5610 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5611 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5612 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5615 if test "$libnfs" = "yes" ; then
5616 echo "CONFIG_LIBNFS=m" >> $config_host_mak
5617 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
5620 if test "$seccomp" = "yes"; then
5621 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5624 # XXX: suppress that
5625 if [ "$bsd" = "yes" ] ; then
5626 echo "CONFIG_BSD=y" >> $config_host_mak
5629 if test "$localtime_r" = "yes" ; then
5630 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5632 if test "$qom_cast_debug" = "yes" ; then
5633 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5635 if test "$rbd" = "yes" ; then
5636 echo "CONFIG_RBD=m" >> $config_host_mak
5637 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5638 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5641 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5642 if test "$coroutine_pool" = "yes" ; then
5643 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5645 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5648 if test "$debug_stack_usage" = "yes" ; then
5649 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
5652 if test "$open_by_handle_at" = "yes" ; then
5653 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5656 if test "$linux_magic_h" = "yes" ; then
5657 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5660 if test "$pragma_diagnostic_available" = "yes" ; then
5661 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5664 if test "$valgrind_h" = "yes" ; then
5665 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5668 if test "$has_environ" = "yes" ; then
5669 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5672 if test "$cpuid_h" = "yes" ; then
5673 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5676 if test "$int128" = "yes" ; then
5677 echo "CONFIG_INT128=y" >> $config_host_mak
5680 if test "$atomic128" = "yes" ; then
5681 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
5684 if test "$atomic64" = "yes" ; then
5685 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
5688 if test "$getauxval" = "yes" ; then
5689 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5692 if test "$glusterfs" = "yes" ; then
5693 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5694 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5695 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5698 if test "$glusterfs_xlator_opt" = "yes" ; then
5699 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5702 if test "$glusterfs_discard" = "yes" ; then
5703 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5706 if test "$glusterfs_zerofill" = "yes" ; then
5707 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5710 if test "$archipelago" = "yes" ; then
5711 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5712 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5715 if test "$libssh2" = "yes" ; then
5716 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5717 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5718 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5722 if test "$libusb" = "yes"; then
5723 echo "HOST_USB=libusb legacy" >> $config_host_mak
5725 echo "HOST_USB=stub" >> $config_host_mak
5728 # TPM passthrough support?
5729 if test "$tpm" = "yes"; then
5730 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5731 if test "$tpm_passthrough" = "yes"; then
5732 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5736 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5737 if have_backend
"nop"; then
5738 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5740 if have_backend
"simple"; then
5741 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5742 # Set the appropriate trace file.
5743 trace_file
="\"$trace_file-\" FMT_pid"
5745 if have_backend
"log"; then
5746 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
5748 if have_backend
"ust"; then
5749 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5751 if have_backend
"dtrace"; then
5752 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5753 if test "$trace_backend_stap" = "yes" ; then
5754 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5757 if have_backend
"ftrace"; then
5758 if test "$linux" = "yes" ; then
5759 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5761 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5764 if have_backend
"syslog"; then
5765 if test "$posix_syslog" = "yes" ; then
5766 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
5768 feature_not_found
"syslog(trace backend)" "syslog not available"
5771 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5773 if test "$colo" = "yes"; then
5774 echo "CONFIG_COLO=y" >> $config_host_mak
5777 if test "$rdma" = "yes" ; then
5778 echo "CONFIG_RDMA=y" >> $config_host_mak
5781 if test "$have_rtnetlink" = "yes" ; then
5782 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5785 if test "$replication" = "yes" ; then
5786 echo "CONFIG_REPLICATION=y" >> $config_host_mak
5789 if test "$have_af_vsock" = "yes" ; then
5790 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
5793 # Hold two types of flag:
5794 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5795 # a thread we have a handle to
5796 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5798 if test "$pthread_setname_np" = "yes" ; then
5799 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5800 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5803 if test "$tcg_interpreter" = "yes"; then
5804 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5805 elif test "$ARCH" = "sparc64" ; then
5806 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5807 elif test "$ARCH" = "s390x" ; then
5808 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5809 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5810 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5811 elif test "$ARCH" = "ppc64" ; then
5812 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5814 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5816 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5818 echo "TOOLS=$tools" >> $config_host_mak
5819 echo "ROMS=$roms" >> $config_host_mak
5820 echo "MAKE=$make" >> $config_host_mak
5821 echo "INSTALL=$install" >> $config_host_mak
5822 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5823 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5824 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5825 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5826 echo "PYTHON=$python" >> $config_host_mak
5827 echo "CC=$cc" >> $config_host_mak
5828 if $iasl -h > /dev
/null
2>&1; then
5829 echo "IASL=$iasl" >> $config_host_mak
5831 echo "CC_I386=$cc_i386" >> $config_host_mak
5832 echo "HOST_CC=$host_cc" >> $config_host_mak
5833 echo "CXX=$cxx" >> $config_host_mak
5834 echo "OBJCC=$objcc" >> $config_host_mak
5835 echo "AR=$ar" >> $config_host_mak
5836 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5837 echo "AS=$as" >> $config_host_mak
5838 echo "CCAS=$ccas" >> $config_host_mak
5839 echo "CPP=$cpp" >> $config_host_mak
5840 echo "OBJCOPY=$objcopy" >> $config_host_mak
5841 echo "LD=$ld" >> $config_host_mak
5842 echo "NM=$nm" >> $config_host_mak
5843 echo "WINDRES=$windres" >> $config_host_mak
5844 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5845 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5846 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5847 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5848 if test "$sparse" = "yes" ; then
5849 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5850 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5851 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5852 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5853 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5855 if test "$cross_prefix" != ""; then
5856 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5858 echo "AUTOCONF_HOST := " >> $config_host_mak
5860 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5861 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5862 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
5863 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
5864 echo "LIBS+=$LIBS" >> $config_host_mak
5865 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5866 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
5867 echo "EXESUF=$EXESUF" >> $config_host_mak
5868 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5869 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5870 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5871 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5872 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5873 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5874 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5875 if test "$gcov" = "yes" ; then
5876 echo "CONFIG_GCOV=y" >> $config_host_mak
5877 echo "GCOV=$gcov_tool" >> $config_host_mak
5880 # use included Linux headers
5881 if test "$linux" = "yes" ; then
5882 mkdir
-p linux-headers
5900 # For most CPUs the kernel architecture name and QEMU CPU name match.
5904 # For non-KVM architectures we will not have asm headers
5905 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5906 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5910 for target
in $target_list; do
5911 target_dir
="$target"
5912 config_target_mak
=$target_dir/config-target.mak
5913 target_name
=$
(echo $target | cut
-d '-' -f 1)
5914 target_bigendian
="no"
5916 case "$target_name" in
5917 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5918 target_bigendian
=yes
5922 target_user_only
="no"
5923 target_linux_user
="no"
5924 target_bsd_user
="no"
5926 ${target_name}-softmmu)
5927 target_softmmu
="yes"
5929 ${target_name}-linux-user)
5930 if test "$linux" != "yes" ; then
5931 error_exit
"Target '$target' is only available on a Linux host"
5933 target_user_only
="yes"
5934 target_linux_user
="yes"
5936 ${target_name}-bsd-user)
5937 if test "$bsd" != "yes" ; then
5938 error_exit
"Target '$target' is only available on a BSD host"
5940 target_user_only
="yes"
5941 target_bsd_user
="yes"
5944 error_exit
"Target '$target' not recognised"
5949 mkdir
-p $target_dir
5950 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5953 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
5956 TARGET_ARCH
="$target_name"
5960 case "$target_name" in
5964 TARGET_BASE_ARCH
=i386
5971 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5974 TARGET_BASE_ARCH
=arm
5976 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5984 gdb_xml_files
="cf-core.xml cf-fp.xml"
5986 microblaze|microblazeel
)
5987 TARGET_ARCH
=microblaze
5992 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5996 TARGET_BASE_ARCH
=mips
5997 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5998 echo "TARGET_ABI32=y" >> $config_target_mak
6002 TARGET_BASE_ARCH
=mips
6003 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6008 TARGET_ARCH
=openrisc
6009 TARGET_BASE_ARCH
=openrisc
6012 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6015 TARGET_BASE_ARCH
=ppc
6017 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6020 TARGET_BASE_ARCH
=ppc
6022 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6026 TARGET_BASE_ARCH
=ppc
6028 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6032 TARGET_BASE_ARCH
=ppc
6034 echo "TARGET_ABI32=y" >> $config_target_mak
6035 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6044 TARGET_BASE_ARCH
=sparc
6048 TARGET_BASE_ARCH
=sparc
6049 TARGET_ABI_DIR
=sparc
6050 echo "TARGET_ABI32=y" >> $config_target_mak
6053 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
6065 error_exit
"Unsupported target CPU"
6068 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6069 if [ "$TARGET_BASE_ARCH" = "" ]; then
6070 TARGET_BASE_ARCH
=$TARGET_ARCH
6073 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
6076 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
6079 target_arch_name
="$(upper $TARGET_ARCH)"
6080 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6081 echo "TARGET_NAME=$target_name" >> $config_target_mak
6082 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6083 if [ "$TARGET_ABI_DIR" = "" ]; then
6084 TARGET_ABI_DIR
=$TARGET_ARCH
6086 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6087 if [ "$HOST_VARIANT_DIR" != "" ]; then
6088 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6090 case "$target_name" in
6092 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
6093 echo "CONFIG_XEN=y" >> $config_target_mak
6094 if test "$xen_pci_passthrough" = yes; then
6095 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6101 case "$target_name" in
6102 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
6103 # Make sure the target and host cpus are compatible
6104 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
6105 \
( "$target_name" = "$cpu" -o \
6106 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
6107 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
6108 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
6109 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
6110 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
6111 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
6112 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
6113 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
6114 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
6115 echo "CONFIG_KVM=y" >> $config_target_mak
6116 if test "$vhost_net" = "yes" ; then
6117 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6118 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
6122 if test "$hax" = "yes" ; then
6123 if test "$target_softmmu" = "yes" ; then
6124 case "$target_name" in
6126 echo "CONFIG_HAX=y" >> $config_target_mak
6131 if test "$target_bigendian" = "yes" ; then
6132 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6134 if test "$target_softmmu" = "yes" ; then
6135 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6137 if test "$target_user_only" = "yes" ; then
6138 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6139 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6141 if test "$target_linux_user" = "yes" ; then
6142 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6145 if test ! -z "$gdb_xml_files" ; then
6146 for x
in $gdb_xml_files; do
6147 list
="$list $source_path/gdb-xml/$x"
6149 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6152 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6153 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6155 if test "$target_bsd_user" = "yes" ; then
6156 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6159 # generate QEMU_CFLAGS/LDFLAGS for targets
6165 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6166 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6169 for i
in $ARCH $TARGET_BASE_ARCH ; do
6172 disas_config
"ALPHA"
6175 if test -n "${cxx}"; then
6176 disas_config
"ARM_A64"
6181 if test -n "${cxx}"; then
6182 disas_config
"ARM_A64"
6201 disas_config
"MICROBLAZE"
6207 disas_config
"MOXIE"
6210 disas_config
"OPENRISC"
6222 disas_config
"SPARC"
6225 disas_config
"XTENSA"
6229 if test "$tcg_interpreter" = "yes" ; then
6235 # Ensure there's only a single GP
6236 cflags
="-msmall-data $cflags"
6240 if test "$gprof" = "yes" ; then
6241 echo "TARGET_GPROF=yes" >> $config_target_mak
6242 if test "$target_linux_user" = "yes" ; then
6244 ldflags
="-p $ldflags"
6246 if test "$target_softmmu" = "yes" ; then
6247 ldflags
="-p $ldflags"
6248 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6252 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6253 ldflags
="$ldflags $textseg_ldflags"
6256 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6257 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6259 done # for target in $targets
6261 if [ "$pixman" = "internal" ]; then
6262 echo "config-host.h: subdir-pixman" >> $config_host_mak
6265 if [ "$dtc_internal" = "yes" ]; then
6266 echo "config-host.h: subdir-dtc" >> $config_host_mak
6269 if test "$numa" = "yes"; then
6270 echo "CONFIG_NUMA=y" >> $config_host_mak
6273 if test "$ccache_cpp2" = "yes"; then
6274 echo "export CCACHE_CPP2=y" >> $config_host_mak
6277 # build tree in object directory in case the source is not in the current directory
6278 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6280 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6281 DIRS
="$DIRS roms/seabios roms/vgabios"
6282 DIRS
="$DIRS qapi-generated"
6283 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6284 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6285 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6286 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6287 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6288 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6289 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6290 FILES
="$FILES pc-bios/qemu-icon.bmp"
6292 $source_path/pc-bios
/*.bin \
6293 $source_path/pc-bios
/*.lid \
6294 $source_path/pc-bios
/*.aml \
6295 $source_path/pc-bios
/*.rom \
6296 $source_path/pc-bios
/*.dtb \
6297 $source_path/pc-bios
/*.img \
6298 $source_path/pc-bios
/openbios-
* \
6299 $source_path/pc-bios
/u-boot.
* \
6300 $source_path/pc-bios
/palcode-
*
6302 FILES
="$FILES pc-bios/$(basename $bios_file)"
6304 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6306 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6309 for f
in $FILES ; do
6310 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6311 symlink
"$source_path/$f" "$f"
6315 # temporary config to build submodules
6316 for rom
in seabios vgabios
; do
6317 config_mak
=roms
/$rom/config.mak
6318 echo "# Automatically generated by configure - do not modify" > $config_mak
6319 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6320 echo "AS=$as" >> $config_mak
6321 echo "CCAS=$ccas" >> $config_mak
6322 echo "CC=$cc" >> $config_mak
6323 echo "BCC=bcc" >> $config_mak
6324 echo "CPP=$cpp" >> $config_mak
6325 echo "OBJCOPY=objcopy" >> $config_mak
6326 echo "IASL=$iasl" >> $config_mak
6327 echo "LD=$ld" >> $config_mak
6330 # set up tests data directory
6331 if [ ! -e tests
/data
]; then
6332 symlink
"$source_path/tests/data" tests
/data
6335 # set up qemu-iotests in this build directory
6336 iotests_common_env
="tests/qemu-iotests/common.env"
6337 iotests_check
="tests/qemu-iotests/check"
6339 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6340 echo >> "$iotests_common_env"
6341 echo "export PYTHON='$python'" >> "$iotests_common_env"
6343 if [ ! -e "$iotests_check" ]; then
6344 symlink
"$source_path/$iotests_check" "$iotests_check"
6347 # Save the configure command line for later reuse.
6348 cat <<EOD >config.status
6350 # Generated by configure.
6351 # Run this file to recreate the current configuration.
6352 # Compiler output produced by configure, useful for debugging
6353 # configure, is in config.log if it exists.
6355 printf "exec" >>config.status
6356 printf " '%s'" "$0" "$@" >>config.status
6357 echo ' "$@"' >>config.status
6358 chmod +x config.status