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
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
63 echo $compiler "$@" >> config.log
64 $compiler "$@" >> config.log
2>&1 ||
return $?
65 # Test passed. If this is an --enable-werror build, rerun
66 # the test with -Werror and bail out if it fails. This
67 # makes warning-generating-errors in configure test code
68 # obvious to developers.
69 if test "$werror" != "yes"; then
72 # Don't bother rerunning the compile if we were already using -Werror
78 echo $compiler -Werror "$@" >> config.log
79 $compiler -Werror "$@" >> config.log
2>&1 && return $?
80 error_exit
"configure test passed without -Werror but failed with -Werror." \
81 "This is probably a bug in the configure script. The failing command" \
82 "will be at the bottom of config.log." \
83 "You can run configure with --disable-werror to bypass this check."
87 do_compiler
"$cc" "$@"
91 do_compiler
"$cxx" "$@"
95 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
96 # options which some versions of GCC's C++ compiler complain about
97 # because they only make sense for C programs.
98 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
100 for arg
in $QEMU_CFLAGS; do
102 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
103 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
106 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
114 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
120 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
123 # symbolically link $1 to $2. Portable version of "ln -sf".
126 mkdir
-p "$(dirname "$2")"
130 # check whether a command is available to this shell (may be either an
131 # executable or a builtin)
133 type "$1" >/dev
/null
2>&1
136 # search for an executable in PATH
142 # pathname has a dir component?
143 if [ "${local_command#*/}" != "$local_command" ]; then
144 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
145 echo "$local_command"
149 if [ -z "$local_command" ]; then
154 for local_dir
in $PATH; do
155 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
156 echo "$local_dir/$local_command"
157 IFS
="${local_ifs:-$(printf ' \t\n')}"
162 IFS
="${local_ifs:-$(printf ' \t\n')}"
167 echo "$trace_backends" |
grep "$1" >/dev
/null
171 eval test -z '"${1#'"$2"'}"'
174 supported_hax_target
() {
175 test "$hax" = "yes" ||
return 1
176 glob
"$1" "*-softmmu" ||
return 1
177 case "${1%-softmmu}" in
185 supported_kvm_target
() {
186 test "$kvm" = "yes" ||
return 1
187 glob
"$1" "*-softmmu" ||
return 1
188 case "${1%-softmmu}:$cpu" in
189 arm
:arm | aarch64
:aarch64 | \
190 i386
:i386 | i386
:x86_64 | i386
:x32 | \
191 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
192 mips
:mips | mipsel
:mips | \
193 ppc
:ppc | ppcemb
:ppc | ppc64
:ppc | \
194 ppc
:ppc64 | ppcemb
:ppc64 | ppc64
:ppc64 | \
202 supported_xen_target
() {
203 test "$xen" = "yes" ||
return 1
204 glob
"$1" "*-softmmu" ||
return 1
205 # Only i386 and x86_64 provide the xenpv machine.
206 case "${1%-softmmu}" in
219 if test "$linux" != "yes"; then
220 print_error
"Target '$target' is only available on a Linux host"
225 if test "$bsd" != "yes"; then
226 print_error
"Target '$target' is only available on a BSD host"
231 print_error
"Invalid target name '$target'"
235 test "$tcg" = "yes" && return 0
236 supported_kvm_target
"$1" && return 0
237 supported_xen_target
"$1" && return 0
238 supported_hax_target
"$1" && return 0
239 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
245 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
249 source_path
=$
(dirname "$0")
252 interp_prefix
="/usr/gnemul/qemu-%M"
256 block_drv_rw_whitelist
=""
257 block_drv_ro_whitelist
=""
263 cc_i386
=i386-pc-linux-gnu-gcc
268 if test -e "$source_path/.git"
270 git_submodules
="ui/keycodemapdb"
275 # Don't accept a target_list environment variable.
278 # Default value for a variable defining feature "foo".
279 # * foo="no" feature will only be used if --enable-foo arg is given
280 # * foo="" feature will be searched for, and if found, will be used
281 # unless --disable-foo is given
282 # * foo="yes" this value will only be set by --enable-foo flag.
283 # feature will searched for,
284 # if not found, configure exits with error
286 # Always add --enable-foo and --disable-foo command line args.
287 # Distributions want to ensure that several features are compiled in, and it
288 # is impossible without a --enable-foo that exits if a feature is not found.
310 xen_pv_domain_build
="no"
311 xen_pci_passthrough
=""
338 LDFLAGS_SHARED
="-shared"
341 mandir
="\${prefix}/share/man"
342 datadir
="\${prefix}/share"
343 firmwarepath
="\${prefix}/share/qemu-firmware"
344 qemu_docdir
="\${prefix}/share/doc/qemu"
345 bindir
="\${prefix}/bin"
346 libdir
="\${prefix}/lib"
347 libexecdir
="\${prefix}/libexec"
348 includedir
="\${prefix}/include"
349 sysconfdir
="\${prefix}/etc"
350 local_statedir
="\${prefix}/var"
383 guest_agent_with_vss
="no"
384 guest_agent_ntddscsi
="no"
393 debug_stack_usage
="no"
397 glusterfs_xlator_opt
="no"
398 glusterfs_discard
="no"
399 glusterfs_fallocate
="no"
400 glusterfs_zerofill
="no"
404 tls_priority
="NORMAL"
416 live_block_migration
="yes"
427 # parse CC options first
429 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
431 --cross-prefix=*) cross_prefix
="$optarg"
435 --cxx=*) CXX
="$optarg"
437 --source-path=*) source_path
="$optarg"
439 --cpu=*) cpu
="$optarg"
441 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
442 EXTRA_CFLAGS
="$optarg"
444 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
445 EXTRA_CXXFLAGS
="$optarg"
447 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
448 EXTRA_LDFLAGS
="$optarg"
450 --enable-debug-info) debug_info
="yes"
452 --disable-debug-info) debug_info
="no"
457 # Using uname is really, really broken. Once we have the right set of checks
458 # we can eliminate its usage altogether.
460 # Preferred compiler:
462 # ${cross_prefix}gcc (if cross-prefix specified)
464 if test -z "${CC}${cross_prefix}"; then
467 cc
="${CC-${cross_prefix}gcc}"
470 if test -z "${CXX}${cross_prefix}"; then
473 cxx
="${CXX-${cross_prefix}g++}"
476 ar="${AR-${cross_prefix}ar}"
477 as
="${AS-${cross_prefix}as}"
480 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
481 ld
="${LD-${cross_prefix}ld}"
482 nm
="${NM-${cross_prefix}nm}"
483 strip
="${STRIP-${cross_prefix}strip}"
484 windres
="${WINDRES-${cross_prefix}windres}"
485 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
487 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
489 pkg_config
=query_pkg_config
490 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
491 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
493 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
494 ARFLAGS
="${ARFLAGS-rv}"
496 # default flags for all hosts
497 # We use -fwrapv to tell the compiler that we require a C dialect where
498 # left shift of signed integers is well defined and has the expected
499 # 2s-complement style results. (Both clang and gcc agree that it
500 # provides these semantics.)
501 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
502 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
503 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
504 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
505 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include"
506 if test "$debug_info" = "yes"; then
508 LDFLAGS
="-g $LDFLAGS"
511 # make source path absolute
512 source_path
=$
(cd "$source_path"; pwd)
514 # running configure in the source tree?
515 # we know that's the case if configure is there.
516 if test -f "./configure"; then
517 pwd_is_source_path
="y"
519 pwd_is_source_path
="n"
525 #error $1 not defined
527 int main(void) { return 0; }
535 int main(void) { return 0; }
542 int main(void) { return 0; }
546 if check_define __linux__
; then
548 elif check_define _WIN32
; then
550 elif check_define __OpenBSD__
; then
552 elif check_define __sun__
; then
554 elif check_define __HAIKU__
; then
556 elif check_define __FreeBSD__
; then
558 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
559 targetos
='GNU/kFreeBSD'
560 elif check_define __DragonFly__
; then
562 elif check_define __NetBSD__
; then
564 elif check_define __APPLE__
; then
567 # This is a fatal error, but don't report it yet, because we
568 # might be going to just print the --help text, or it might
569 # be the result of a missing compiler.
574 # Some host OSes need non-standard checks for which CPU to use.
575 # Note that these checks are broken for cross-compilation: if you're
576 # cross-compiling to one of these OSes then you'll need to specify
577 # the correct CPU with the --cpu option.
580 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
581 # run 64-bit userspace code.
582 # If the user didn't specify a CPU explicitly and the kernel says this is
583 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
584 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
589 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
590 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
595 if test ! -z "$cpu" ; then
596 # command line argument
598 elif check_define __i386__
; then
600 elif check_define __x86_64__
; then
601 if check_define __ILP32__
; then
606 elif check_define __sparc__
; then
607 if check_define __arch64__
; then
612 elif check_define _ARCH_PPC
; then
613 if check_define _ARCH_PPC64
; then
618 elif check_define __mips__
; then
620 elif check_define __ia64__
; then
622 elif check_define __s390__
; then
623 if check_define __s390x__
; then
628 elif check_define __arm__
; then
630 elif check_define __aarch64__
; then
637 # Normalise host CPU name and set ARCH.
638 # Note that this case should only have supported host CPUs, not guests.
640 ppc|ppc64|s390|s390x|sparc64|x32
)
644 i386|i486|i586|i686|i86pc|BePC
)
669 # This will result in either an error or falling back to TCI later
673 if test -z "$ARCH"; then
679 # host *BSD for user mode
686 audio_possible_drivers
="dsound sdl"
687 if check_include dsound.h
; then
688 audio_drv_list
="dsound"
697 audio_possible_drivers
="oss sdl pa"
703 audio_possible_drivers
="oss sdl pa"
704 # needed for kinfo_getvmmap(3) in libutil.h
706 # needed for kinfo_getproc
707 libs_qga
="-lutil $libs_qga"
708 netmap
="" # enable netmap autodetect
709 HOST_VARIANT_DIR
="freebsd"
716 audio_possible_drivers
="oss sdl pa"
717 HOST_VARIANT_DIR
="dragonfly"
723 audio_possible_drivers
="oss sdl"
725 HOST_VARIANT_DIR
="netbsd"
732 audio_possible_drivers
="sdl"
733 HOST_VARIANT_DIR
="openbsd"
739 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
740 if [ "$cpu" = "x86_64" ] ; then
741 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
742 LDFLAGS
="-arch x86_64 $LDFLAGS"
745 audio_drv_list
="coreaudio"
746 audio_possible_drivers
="coreaudio sdl"
747 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
748 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
749 # Disable attempts to use ObjectiveC features in os/object.h since they
750 # won't work when we're compiling with gcc as a C compiler.
751 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
752 HOST_VARIANT_DIR
="darwin"
758 install="${INSTALL-ginstall}"
759 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
760 if test -f /usr
/include
/sys
/soundcard.h
; then
763 audio_possible_drivers
="oss sdl"
764 # needed for CMSG_ macros in sys/socket.h
765 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
766 # needed for TIOCWIN* defines in termios.h
767 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
768 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
769 solarisnetlibs
="-lsocket -lnsl -lresolv"
770 LIBS
="$solarisnetlibs $LIBS"
771 libs_qga
="$solarisnetlibs $libs_qga"
775 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
776 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
780 audio_possible_drivers
="oss alsa sdl pa"
787 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
792 if [ "$bsd" = "yes" ] ; then
793 if [ "$darwin" != "yes" ] ; then
798 : ${make=${MAKE-make}}
799 : ${install=${INSTALL-install}}
800 : ${python=${PYTHON-python}}
801 : ${smbd=${SMBD-/usr/sbin/smbd}}
803 # Default objcc to clang if available, otherwise use CC
810 if test "$mingw32" = "yes" ; then
813 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
814 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
815 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
816 # MinGW needs -mthreads for TLS and macro _MT.
817 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
818 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
820 if compile_prog
"" "-liberty" ; then
821 LIBS
="-liberty $LIBS"
823 prefix
="c:/Program Files/QEMU"
826 qemu_docdir
="\${prefix}"
828 sysconfdir
="\${prefix}"
831 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
837 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
839 --help|
-h) show_help
=yes
841 --version|
-V) exec cat $source_path/VERSION
843 --prefix=*) prefix
="$optarg"
845 --interp-prefix=*) interp_prefix
="$optarg"
853 --host-cc=*) host_cc
="$optarg"
857 --iasl=*) iasl
="$optarg"
859 --objcc=*) objcc
="$optarg"
861 --make=*) make="$optarg"
863 --install=*) install="$optarg"
865 --python=*) python
="$optarg"
867 --gcov=*) gcov_tool
="$optarg"
869 --smbd=*) smbd
="$optarg"
879 --disable-debug-info)
889 --target-list=*) target_list
="$optarg"
891 --enable-trace-backends=*) trace_backends
="$optarg"
893 # XXX: backwards compatibility
894 --enable-trace-backend=*) trace_backends
="$optarg"
896 --with-trace-file=*) trace_file
="$optarg"
898 --enable-gprof) gprof
="yes"
900 --enable-gcov) gcov
="yes"
904 LDFLAGS
="-static $LDFLAGS"
905 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
907 --mandir=*) mandir
="$optarg"
909 --bindir=*) bindir
="$optarg"
911 --libdir=*) libdir
="$optarg"
913 --libexecdir=*) libexecdir
="$optarg"
915 --includedir=*) includedir
="$optarg"
917 --datadir=*) datadir
="$optarg"
919 --with-confsuffix=*) confsuffix
="$optarg"
921 --docdir=*) qemu_docdir
="$optarg"
923 --sysconfdir=*) sysconfdir
="$optarg"
925 --localstatedir=*) local_statedir
="$optarg"
927 --firmwarepath=*) firmwarepath
="$optarg"
929 --sbindir=*|
--sharedstatedir=*|\
930 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
931 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
932 # These switches are silently ignored, for compatibility with
933 # autoconf-generated configure scripts. This allows QEMU's
934 # configure to be used by RPM and similar macros that set
935 # lots of directory switches by default.
937 --disable-sdl) sdl
="no"
939 --enable-sdl) sdl
="yes"
941 --with-sdlabi=*) sdlabi
="$optarg"
943 --disable-qom-cast-debug) qom_cast_debug
="no"
945 --enable-qom-cast-debug) qom_cast_debug
="yes"
947 --disable-virtfs) virtfs
="no"
949 --enable-virtfs) virtfs
="yes"
951 --disable-mpath) mpath
="no"
953 --enable-mpath) mpath
="yes"
955 --disable-vnc) vnc
="no"
957 --enable-vnc) vnc
="yes"
959 --oss-lib=*) oss_lib
="$optarg"
961 --audio-drv-list=*) audio_drv_list
="$optarg"
963 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
965 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
967 --enable-debug-tcg) debug_tcg
="yes"
969 --disable-debug-tcg) debug_tcg
="no"
972 # Enable debugging options that aren't excessively noisy
978 --enable-sparse) sparse
="yes"
980 --disable-sparse) sparse
="no"
982 --disable-strip) strip_opt
="no"
984 --disable-vnc-sasl) vnc_sasl
="no"
986 --enable-vnc-sasl) vnc_sasl
="yes"
988 --disable-vnc-jpeg) vnc_jpeg
="no"
990 --enable-vnc-jpeg) vnc_jpeg
="yes"
992 --disable-vnc-png) vnc_png
="no"
994 --enable-vnc-png) vnc_png
="yes"
996 --disable-slirp) slirp
="no"
998 --disable-vde) vde
="no"
1000 --enable-vde) vde
="yes"
1002 --disable-netmap) netmap
="no"
1004 --enable-netmap) netmap
="yes"
1006 --disable-xen) xen
="no"
1008 --enable-xen) xen
="yes"
1010 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1012 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1014 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
1016 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
1018 --disable-brlapi) brlapi
="no"
1020 --enable-brlapi) brlapi
="yes"
1022 --disable-bluez) bluez
="no"
1024 --enable-bluez) bluez
="yes"
1026 --disable-kvm) kvm
="no"
1028 --enable-kvm) kvm
="yes"
1030 --disable-hax) hax
="no"
1032 --enable-hax) hax
="yes"
1034 --disable-tcg-interpreter) tcg_interpreter
="no"
1036 --enable-tcg-interpreter) tcg_interpreter
="yes"
1038 --disable-cap-ng) cap_ng
="no"
1040 --enable-cap-ng) cap_ng
="yes"
1042 --disable-tcg) tcg
="no"
1044 --enable-tcg) tcg
="yes"
1046 --disable-spice) spice
="no"
1048 --enable-spice) spice
="yes"
1050 --disable-libiscsi) libiscsi
="no"
1052 --enable-libiscsi) libiscsi
="yes"
1054 --disable-libnfs) libnfs
="no"
1056 --enable-libnfs) libnfs
="yes"
1058 --enable-profiler) profiler
="yes"
1060 --disable-cocoa) cocoa
="no"
1064 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1066 --disable-system) softmmu
="no"
1068 --enable-system) softmmu
="yes"
1075 --disable-linux-user) linux_user
="no"
1077 --enable-linux-user) linux_user
="yes"
1079 --disable-bsd-user) bsd_user
="no"
1081 --enable-bsd-user) bsd_user
="yes"
1083 --enable-pie) pie
="yes"
1085 --disable-pie) pie
="no"
1087 --enable-werror) werror
="yes"
1089 --disable-werror) werror
="no"
1091 --enable-stack-protector) stack_protector
="yes"
1093 --disable-stack-protector) stack_protector
="no"
1095 --disable-curses) curses
="no"
1097 --enable-curses) curses
="yes"
1099 --disable-curl) curl
="no"
1101 --enable-curl) curl
="yes"
1103 --disable-fdt) fdt
="no"
1105 --enable-fdt) fdt
="yes"
1107 --disable-linux-aio) linux_aio
="no"
1109 --enable-linux-aio) linux_aio
="yes"
1111 --disable-attr) attr
="no"
1113 --enable-attr) attr
="yes"
1115 --disable-blobs) blobs
="no"
1117 --with-pkgversion=*) pkgversion
=" ($optarg)"
1119 --with-coroutine=*) coroutine
="$optarg"
1121 --disable-coroutine-pool) coroutine_pool
="no"
1123 --enable-coroutine-pool) coroutine_pool
="yes"
1125 --enable-debug-stack-usage) debug_stack_usage
="yes"
1127 --enable-crypto-afalg) crypto_afalg
="yes"
1129 --disable-crypto-afalg) crypto_afalg
="no"
1131 --disable-docs) docs
="no"
1133 --enable-docs) docs
="yes"
1135 --disable-vhost-net) vhost_net
="no"
1137 --enable-vhost-net) vhost_net
="yes"
1139 --disable-vhost-scsi) vhost_scsi
="no"
1141 --enable-vhost-scsi) vhost_scsi
="yes"
1143 --disable-vhost-vsock) vhost_vsock
="no"
1145 --enable-vhost-vsock) vhost_vsock
="yes"
1147 --disable-opengl) opengl
="no"
1149 --enable-opengl) opengl
="yes"
1151 --disable-rbd) rbd
="no"
1153 --enable-rbd) rbd
="yes"
1155 --disable-xfsctl) xfs
="no"
1157 --enable-xfsctl) xfs
="yes"
1159 --disable-smartcard) smartcard
="no"
1161 --enable-smartcard) smartcard
="yes"
1163 --disable-libusb) libusb
="no"
1165 --enable-libusb) libusb
="yes"
1167 --disable-usb-redir) usb_redir
="no"
1169 --enable-usb-redir) usb_redir
="yes"
1171 --disable-zlib-test) zlib
="no"
1173 --disable-lzo) lzo
="no"
1175 --enable-lzo) lzo
="yes"
1177 --disable-snappy) snappy
="no"
1179 --enable-snappy) snappy
="yes"
1181 --disable-bzip2) bzip2="no"
1183 --enable-bzip2) bzip2="yes"
1185 --enable-guest-agent) guest_agent
="yes"
1187 --disable-guest-agent) guest_agent
="no"
1189 --enable-guest-agent-msi) guest_agent_msi
="yes"
1191 --disable-guest-agent-msi) guest_agent_msi
="no"
1193 --with-vss-sdk) vss_win32_sdk
=""
1195 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1197 --without-vss-sdk) vss_win32_sdk
="no"
1199 --with-win-sdk) win_sdk
=""
1201 --with-win-sdk=*) win_sdk
="$optarg"
1203 --without-win-sdk) win_sdk
="no"
1205 --enable-tools) want_tools
="yes"
1207 --disable-tools) want_tools
="no"
1209 --enable-seccomp) seccomp
="yes"
1211 --disable-seccomp) seccomp
="no"
1213 --disable-glusterfs) glusterfs
="no"
1215 --enable-glusterfs) glusterfs
="yes"
1217 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1218 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1220 --enable-vhdx|
--disable-vhdx)
1221 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1223 --enable-uuid|
--disable-uuid)
1224 echo "$0: $opt is obsolete, UUID support is always built" >&2
1226 --disable-gtk) gtk
="no"
1228 --enable-gtk) gtk
="yes"
1230 --tls-priority=*) tls_priority
="$optarg"
1232 --disable-gnutls) gnutls
="no"
1234 --enable-gnutls) gnutls
="yes"
1236 --disable-nettle) nettle
="no"
1238 --enable-nettle) nettle
="yes"
1240 --disable-gcrypt) gcrypt
="no"
1242 --enable-gcrypt) gcrypt
="yes"
1244 --enable-rdma) rdma
="yes"
1246 --disable-rdma) rdma
="no"
1248 --with-gtkabi=*) gtkabi
="$optarg"
1250 --disable-vte) vte
="no"
1252 --enable-vte) vte
="yes"
1254 --disable-virglrenderer) virglrenderer
="no"
1256 --enable-virglrenderer) virglrenderer
="yes"
1258 --disable-tpm) tpm
="no"
1260 --enable-tpm) tpm
="yes"
1262 --disable-libssh2) libssh2
="no"
1264 --enable-libssh2) libssh2
="yes"
1266 --disable-live-block-migration) live_block_migration
="no"
1268 --enable-live-block-migration) live_block_migration
="yes"
1270 --disable-numa) numa
="no"
1272 --enable-numa) numa
="yes"
1274 --disable-tcmalloc) tcmalloc
="no"
1276 --enable-tcmalloc) tcmalloc
="yes"
1278 --disable-jemalloc) jemalloc
="no"
1280 --enable-jemalloc) jemalloc
="yes"
1282 --disable-replication) replication
="no"
1284 --enable-replication) replication
="yes"
1286 --disable-vxhs) vxhs
="no"
1288 --enable-vxhs) vxhs
="yes"
1290 --disable-vhost-user) vhost_user
="no"
1292 --enable-vhost-user)
1294 if test "$mingw32" = "yes"; then
1295 error_exit
"vhost-user isn't available on win32"
1298 --disable-capstone) capstone
="no"
1300 --enable-capstone) capstone
="yes"
1302 --enable-capstone=git
) capstone
="git"
1304 --enable-capstone=system
) capstone
="system"
1307 echo "ERROR: unknown option $opt"
1308 echo "Try '$0 --help' for more information"
1314 if test "$vhost_user" = ""; then
1315 if test "$mingw32" = "yes"; then
1325 LDFLAGS
="-m32 $LDFLAGS"
1329 LDFLAGS
="-m64 $LDFLAGS"
1332 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1333 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1336 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1337 LDFLAGS
="-m64 $LDFLAGS"
1341 LDFLAGS
="-m31 $LDFLAGS"
1345 LDFLAGS
="-m64 $LDFLAGS"
1349 LDFLAGS
="-m32 $LDFLAGS"
1350 cc_i386
='$(CC) -m32'
1353 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1354 # If we truly care, we should simply detect this case at
1355 # runtime and generate the fallback to serial emulation.
1356 CPU_CFLAGS
="-m64 -mcx16"
1357 LDFLAGS
="-m64 $LDFLAGS"
1358 cc_i386
='$(CC) -m32'
1362 LDFLAGS
="-mx32 $LDFLAGS"
1363 cc_i386
='$(CC) -m32'
1365 # No special flags required for other host CPUs
1368 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1369 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1371 # For user-mode emulation the host arch has to be one we explicitly
1372 # support, even if we're using TCI.
1373 if [ "$ARCH" = "unknown" ]; then
1378 default_target_list
=""
1382 if [ "$softmmu" = "yes" ]; then
1383 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1385 if [ "$linux_user" = "yes" ]; then
1386 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1388 if [ "$bsd_user" = "yes" ]; then
1389 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1392 for config
in $mak_wilds; do
1393 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1396 # Enumerate public trace backends for --help output
1397 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1399 if test x
"$show_help" = x
"yes" ; then
1402 Usage: configure [options]
1403 Options: [defaults in brackets after descriptions]
1406 --help print this message
1407 --prefix=PREFIX install in PREFIX [$prefix]
1408 --interp-prefix=PREFIX where to find shared libraries, etc.
1409 use %M for cpu name [$interp_prefix]
1410 --target-list=LIST set target list (default: build everything)
1411 $(echo Available targets: $default_target_list | \
1412 fold -s -w 53 | sed -e 's/^/ /')
1414 Advanced options (experts only):
1415 --source-path=PATH path of source code [$source_path]
1416 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1417 --cc=CC use C compiler CC [$cc]
1418 --iasl=IASL use ACPI compiler IASL [$iasl]
1419 --host-cc=CC use C compiler CC [$host_cc] for code run at
1421 --cxx=CXX use C++ compiler CXX [$cxx]
1422 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1423 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1424 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1425 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1426 --make=MAKE use specified make [$make]
1427 --install=INSTALL use specified install [$install]
1428 --python=PYTHON use specified python [$python]
1429 --smbd=SMBD use specified smbd [$smbd]
1430 --static enable static build [$static]
1431 --mandir=PATH install man pages in PATH
1432 --datadir=PATH install firmware in PATH$confsuffix
1433 --docdir=PATH install documentation in PATH$confsuffix
1434 --bindir=PATH install binaries in PATH
1435 --libdir=PATH install libraries in PATH
1436 --sysconfdir=PATH install config in PATH$confsuffix
1437 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1438 --firmwarepath=PATH search PATH for firmware files
1439 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1440 --enable-debug enable common debug build options
1441 --disable-strip disable stripping binaries
1442 --disable-werror disable compilation abort on warning
1443 --disable-stack-protector disable compiler-provided stack protection
1444 --audio-drv-list=LIST set audio drivers list:
1445 Available drivers: $audio_possible_drivers
1446 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1447 --block-drv-rw-whitelist=L
1448 set block driver read-write whitelist
1449 (affects only QEMU, not qemu-img)
1450 --block-drv-ro-whitelist=L
1451 set block driver read-only whitelist
1452 (affects only QEMU, not qemu-img)
1453 --enable-trace-backends=B Set trace backend
1454 Available backends: $trace_backend_list
1455 --with-trace-file=NAME Full PATH,NAME of file to store traces
1457 --disable-slirp disable SLIRP userspace network connectivity
1458 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1459 --oss-lib path to OSS library
1460 --cpu=CPU Build for host CPU [$cpu]
1461 --with-coroutine=BACKEND coroutine backend. Supported options:
1462 ucontext, sigaltstack, windows
1463 --enable-gcov enable test coverage analysis with gcov
1464 --gcov=GCOV use specified gcov [$gcov_tool]
1465 --disable-blobs disable installing provided firmware blobs
1466 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1467 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1468 --tls-priority default TLS protocol/cipher priority string
1469 --enable-gprof QEMU profiling with gprof
1470 --enable-profiler profiler support
1471 --enable-xen-pv-domain-build
1472 xen pv domain builder
1473 --enable-debug-stack-usage
1474 track the maximum stack usage of stacks created by qemu_alloc_stack
1476 Optional features, enabled with --enable-FEATURE and
1477 disabled with --disable-FEATURE, default is enabled if available:
1479 system all system emulation targets
1480 user supported user emulation targets
1481 linux-user all linux usermode emulation targets
1482 bsd-user all BSD usermode emulation targets
1483 docs build documentation
1484 guest-agent build the QEMU Guest Agent
1485 guest-agent-msi build guest agent Windows MSI installation package
1486 pie Position Independent Executables
1487 modules modules support
1488 debug-tcg TCG debugging (default is disabled)
1489 debug-info debugging information
1490 sparse sparse checker
1492 gnutls GNUTLS cryptography support
1493 nettle nettle cryptography support
1494 gcrypt libgcrypt cryptography support
1496 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1498 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1499 vte vte support for the gtk UI
1502 vnc-sasl SASL encryption for VNC server
1503 vnc-jpeg JPEG lossy compression for VNC server
1504 vnc-png PNG compression for VNC server
1505 cocoa Cocoa UI (Mac OS X only)
1507 mpath Multipath persistent reservation passthrough
1508 xen xen backend driver support
1510 brlapi BrlAPI (Braile)
1511 curl curl connectivity
1513 bluez bluez stack connectivity
1514 kvm KVM acceleration support
1515 hax HAX acceleration support
1516 rdma RDMA-based migration support
1517 vde support for vde network
1518 netmap support for netmap network
1519 linux-aio Linux AIO support
1520 cap-ng libcap-ng support
1521 attr attr and xattr support
1522 vhost-net vhost-net acceleration support
1524 rbd rados block device (rbd)
1525 libiscsi iscsi support
1527 smartcard smartcard support (libcacard)
1528 libusb libusb (for usb passthrough)
1529 live-block-migration Block migration in the main migration stream
1530 usb-redir usb network redirection support
1531 lzo support of lzo compression library
1532 snappy support of snappy compression library
1533 bzip2 support of bzip2 compression library
1534 (for reading bzip2-compressed dmg images)
1535 seccomp seccomp support
1536 coroutine-pool coroutine freelist (better performance)
1537 glusterfs GlusterFS backend
1539 libssh2 ssh block device support
1540 numa libnuma support
1541 tcmalloc tcmalloc support
1542 jemalloc jemalloc support
1543 replication replication support
1544 vhost-vsock virtio sockets device support
1545 opengl opengl support
1546 virglrenderer virgl rendering support
1547 xfsctl xfsctl support
1548 qom-cast-debug cast debugging support
1549 tools build qemu-io, qemu-nbd and qemu-image tools
1550 vxhs Veritas HyperScale vDisk backend support
1551 crypto-afalg Linux AF_ALG crypto backend driver
1552 vhost-user vhost-user support
1553 capstone capstone disassembler support
1555 NOTE: The object files are built at the place where configure is launched
1560 if ! has
$python; then
1561 error_exit
"Python not found. Use --python=/path/to/python"
1564 # Note that if the Python conditional here evaluates True we will exit
1565 # with status 1 which is a shell 'false' value.
1566 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1567 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1568 "Note that Python 3 or later is not yet supported." \
1569 "Use --python=/path/to/python to specify a supported Python."
1572 # Suppress writing compiled files
1575 # Now we have handled --enable-tcg-interpreter and know we're not just
1576 # printing the help message, bail out if the host CPU isn't supported.
1577 if test "$ARCH" = "unknown"; then
1578 if test "$tcg_interpreter" = "yes" ; then
1579 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1581 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1585 # Consult white-list to determine whether to enable werror
1586 # by default. Only enable by default for git builds
1587 if test -z "$werror" ; then
1588 if test -d "$source_path/.git" -a \
1589 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1596 # check that the C compiler works.
1598 if compile_object
; then
1599 : C compiler works ok
1601 error_exit
"\"$cc\" either does not exist or does not work"
1603 if ! compile_prog
; then
1604 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1607 if test "$bogus_os" = "yes"; then
1608 # Now that we know that we're not printing the help and that
1609 # the compiler works (so the results of the check_defines we used
1610 # to identify the OS are reliable), if we didn't recognize the
1611 # host OS we should stop now.
1612 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1615 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1616 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1617 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1618 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1619 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1620 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1621 # Note that we do not add -Werror to gcc_flags here, because that would
1622 # enable it for all configure tests. If a configure test failed due
1623 # to -Werror this would just silently disable some features,
1624 # so it's too error prone.
1626 cc_has_warning_flag
() {
1629 # Use the positive sense of the flag when testing for -Wno-wombat
1630 # support (gcc will happily accept the -Wno- form of unknown
1632 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1633 compile_prog
"-Werror $optflag" ""
1636 for flag
in $gcc_flags; do
1637 if cc_has_warning_flag
$flag ; then
1638 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1642 if test "$stack_protector" != "no"; then
1644 int main(int argc, char *argv[])
1646 char arr[64], *p = arr, *c = argv[0];
1653 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1655 for flag
in $gcc_flags; do
1656 # We need to check both a compile and a link, since some compiler
1657 # setups fail only on a .c->.o compile and some only at link time
1658 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1659 compile_prog
"-Werror $flag" ""; then
1660 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1665 if test "$stack_protector" = yes; then
1666 if test $sp_on = 0; then
1667 error_exit
"Stack protector not supported"
1672 # Disable -Wmissing-braces on older compilers that warn even for
1673 # the "universal" C zero initializer {0}.
1679 if compile_object
"-Werror" "" ; then
1682 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1685 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1686 # large functions that use global variables. The bug is in all releases of
1687 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1688 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1690 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1691 int main(void) { return 0; }
1693 #error No bug in this compiler.
1696 if compile_prog
"-Werror -fno-gcse" "" ; then
1697 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1700 if test "$static" = "yes" ; then
1701 if test "$modules" = "yes" ; then
1702 error_exit
"static and modules are mutually incompatible"
1704 if test "$pie" = "yes" ; then
1705 error_exit
"static and pie are mutually incompatible"
1711 # Unconditional check for compiler __thread support
1713 static __thread int tls_var;
1714 int main(void) { return tls_var; }
1717 if ! compile_prog
"-Werror" "" ; then
1718 error_exit
"Your compiler does not support the __thread specifier for " \
1719 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1722 if test "$pie" = ""; then
1723 case "$cpu-$targetos" in
1724 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1732 if test "$pie" != "no" ; then
1736 # define THREAD __thread
1741 static THREAD int tls_var;
1743 int main(void) { return tls_var; }
1746 if compile_prog
"-fPIE -DPIE" "-pie"; then
1747 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1748 LDFLAGS
="-pie $LDFLAGS"
1750 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1751 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1754 if test "$pie" = "yes"; then
1755 error_exit
"PIE not available due to missing toolchain support"
1757 echo "Disabling PIE due to missing toolchain support"
1762 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1763 CFLAGS_NOPIE
="-fno-pie"
1764 LDFLAGS_NOPIE
="-nopie"
1768 ##########################################
1769 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1770 # use i686 as default anyway, but for those that don't, an explicit
1771 # specification is necessary
1773 if test "$cpu" = "i386"; then
1775 static int sfaa(int *ptr)
1777 return __sync_fetch_and_and(ptr, 0);
1783 val = __sync_val_compare_and_swap(&val, 0, 1);
1788 if ! compile_prog
"" "" ; then
1789 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1793 #########################################
1794 # Solaris specific configure tool chain decisions
1796 if test "$solaris" = "yes" ; then
1797 if has
$install; then
1800 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1801 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1802 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1804 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1805 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1806 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1807 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1812 if test -f /usr
/ccs
/bin
/ar ; then
1813 error_exit
"No path includes ar" \
1814 "Add /usr/ccs/bin to your path and rerun configure"
1816 error_exit
"No path includes ar"
1820 if test -z "${target_list+xxx}" ; then
1821 for target
in $default_target_list; do
1822 supported_target
$target 2>/dev
/null
&& \
1823 target_list
="$target_list $target"
1825 target_list
="${target_list# }"
1827 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1828 for target
in $target_list; do
1829 # Check that we recognised the target name; this allows a more
1830 # friendly error message than if we let it fall through.
1831 case " $default_target_list " in
1835 error_exit
"Unknown target name '$target'"
1838 supported_target
$target ||
exit 1
1842 # see if system emulation was really requested
1843 case " $target_list " in
1844 *"-softmmu "*) softmmu
=yes
1850 feature_not_found
() {
1854 error_exit
"User requested feature $feature" \
1855 "configure was not able to find it." \
1860 # big/little endian test
1862 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1863 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1864 extern int foo(short *, short *);
1865 int main(int argc, char *argv[]) {
1866 return foo(big_endian, little_endian);
1870 if compile_object
; then
1871 if grep -q BiGeNdIaN
$TMPO ; then
1873 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1876 echo big
/little
test failed
1879 echo big
/little
test failed
1882 ##########################################
1883 # cocoa implies not SDL or GTK
1884 # (the cocoa UI code currently assumes it is always the active UI
1885 # and doesn't interact well with other UI frontend code)
1886 if test "$cocoa" = "yes"; then
1887 if test "$sdl" = "yes"; then
1888 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1890 if test "$gtk" = "yes"; then
1891 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1897 # Some versions of Mac OS X incorrectly define SIZE_MAX
1901 int main(int argc, char *argv[]) {
1902 return printf("%zu", SIZE_MAX);
1905 have_broken_size_max
=no
1906 if ! compile_object
-Werror ; then
1907 have_broken_size_max
=yes
1910 ##########################################
1914 #include <sys/socket.h>
1915 #include <linux/ip.h>
1916 int main(void) { return sizeof(struct mmsghdr); }
1918 if compile_prog
"" "" ; then
1924 ##########################################
1925 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1927 if test "$mingw32" = "yes"; then
1928 # Some versions of MinGW / Mingw-w64 lack localtime_r
1929 # and gmtime_r entirely.
1931 # Some versions of Mingw-w64 define a macro for
1932 # localtime_r/gmtime_r.
1934 # Some versions of Mingw-w64 will define functions
1935 # for localtime_r/gmtime_r, but only if you have
1936 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1937 # though, unistd.h and pthread.h both define
1940 # So this #undef localtime_r and #include <unistd.h>
1941 # are not in fact redundant.
1946 int main(void) { localtime_r(NULL, NULL); return 0; }
1948 if compile_prog
"" "" ; then
1955 ##########################################
1958 if ! has
"$pkg_config_exe"; then
1959 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1962 ##########################################
1965 if test "$linux_user" = "yes"; then
1968 #include <linux/futex.h>
1970 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1976 if ! compile_object
; then
1977 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1981 #########################################
1984 if test "$zlib" != "no" ; then
1987 int main(void) { zlibVersion(); return 0; }
1989 if compile_prog
"" "-lz" ; then
1992 error_exit
"zlib check failed" \
1993 "Make sure to have the zlib libs and headers installed."
1998 ##########################################
2001 if test "$lzo" != "no" ; then
2003 #include <lzo/lzo1x.h>
2004 int main(void) { lzo_version(); return 0; }
2006 if compile_prog
"" "-llzo2" ; then
2007 libs_softmmu
="$libs_softmmu -llzo2"
2010 if test "$lzo" = "yes"; then
2011 feature_not_found
"liblzo2" "Install liblzo2 devel"
2017 ##########################################
2020 if test "$snappy" != "no" ; then
2022 #include <snappy-c.h>
2023 int main(void) { snappy_max_compressed_length(4096); return 0; }
2025 if compile_prog
"" "-lsnappy" ; then
2026 libs_softmmu
="$libs_softmmu -lsnappy"
2029 if test "$snappy" = "yes"; then
2030 feature_not_found
"libsnappy" "Install libsnappy devel"
2036 ##########################################
2039 if test "$bzip2" != "no" ; then
2042 int main(void) { BZ2_bzlibVersion(); return 0; }
2044 if compile_prog
"" "-lbz2" ; then
2047 if test "$bzip2" = "yes"; then
2048 feature_not_found
"libbzip2" "Install libbzip2 devel"
2054 ##########################################
2057 if test "$seccomp" != "no" ; then
2060 libseccomp_minver
="2.1.0"
2063 libseccomp_minver
="2.2.0"
2066 libseccomp_minver
="2.2.3"
2069 libseccomp_minver
="2.3.0"
2072 libseccomp_minver
=""
2076 if test "$libseccomp_minver" != "" &&
2077 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2078 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2079 seccomp_libs
="$($pkg_config --libs libseccomp)"
2082 if test "$seccomp" = "yes" ; then
2083 if test "$libseccomp_minver" != "" ; then
2084 feature_not_found
"libseccomp" \
2085 "Install libseccomp devel >= $libseccomp_minver"
2087 feature_not_found
"libseccomp" \
2088 "libseccomp is not supported for host cpu $cpu"
2094 ##########################################
2097 if test "$xen" != "no" ; then
2098 # Check whether Xen library path is specified via --extra-ldflags to avoid
2099 # overriding this setting with pkg-config output. If not, try pkg-config
2100 # to obtain all needed flags.
2102 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2103 $pkg_config --exists xencontrol
; then
2104 xen_ctrl_version
="$(printf '%d%02d%02d' \
2105 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2107 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2108 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2109 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2110 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2111 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2114 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2115 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2117 # First we test whether Xen headers and libraries are available.
2118 # If no, we are done and there is no Xen support.
2119 # If yes, more tests are run to detect the Xen version.
2123 #include <xenctrl.h>
2128 if ! compile_prog
"" "$xen_libs" ; then
2130 if test "$xen" = "yes" ; then
2131 feature_not_found
"xen" "Install xen devel"
2137 cat > $TMPC <<EOF &&
2138 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2139 #include <xenforeignmemory.h>
2141 xenforeignmemory_handle *xfmem;
2143 xfmem = xenforeignmemory_open(0, 0);
2144 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2149 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2151 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2152 xen_ctrl_version
=41000
2155 cat > $TMPC <<EOF &&
2156 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2157 #define __XEN_TOOLS__
2158 #include <xendevicemodel.h>
2160 xendevicemodel_handle *xd;
2162 xd = xendevicemodel_open(0, 0);
2163 xendevicemodel_close(xd);
2168 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2170 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2171 xen_ctrl_version
=40900
2174 cat > $TMPC <<EOF &&
2176 * If we have stable libs the we don't want the libxc compat
2177 * layers, regardless of what CFLAGS we may have been given.
2179 * Also, check if xengnttab_grant_copy_segment_t is defined and
2180 * grant copy operation is implemented.
2182 #undef XC_WANT_COMPAT_EVTCHN_API
2183 #undef XC_WANT_COMPAT_GNTTAB_API
2184 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2185 #include <xenctrl.h>
2186 #include <xenstore.h>
2187 #include <xenevtchn.h>
2188 #include <xengnttab.h>
2189 #include <xenforeignmemory.h>
2191 #include <xen/hvm/hvm_info_table.h>
2192 #if !defined(HVM_MAX_VCPUS)
2193 # error HVM_MAX_VCPUS not defined
2196 xc_interface *xc = NULL;
2197 xenforeignmemory_handle *xfmem;
2198 xenevtchn_handle *xe;
2199 xengnttab_handle *xg;
2200 xen_domain_handle_t handle;
2201 xengnttab_grant_copy_segment_t* seg = NULL;
2205 xc = xc_interface_open(0, 0, 0);
2206 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2207 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2208 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2209 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2210 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2212 xfmem = xenforeignmemory_open(0, 0);
2213 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2215 xe = xenevtchn_open(0, 0);
2218 xg = xengnttab_open(0, 0);
2219 xengnttab_grant_copy(xg, 0, seg);
2224 compile_prog
"" "$xen_libs $xen_stable_libs"
2226 xen_ctrl_version
=40800
2229 cat > $TMPC <<EOF &&
2231 * If we have stable libs the we don't want the libxc compat
2232 * layers, regardless of what CFLAGS we may have been given.
2234 #undef XC_WANT_COMPAT_EVTCHN_API
2235 #undef XC_WANT_COMPAT_GNTTAB_API
2236 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2237 #include <xenctrl.h>
2238 #include <xenstore.h>
2239 #include <xenevtchn.h>
2240 #include <xengnttab.h>
2241 #include <xenforeignmemory.h>
2243 #include <xen/hvm/hvm_info_table.h>
2244 #if !defined(HVM_MAX_VCPUS)
2245 # error HVM_MAX_VCPUS not defined
2248 xc_interface *xc = NULL;
2249 xenforeignmemory_handle *xfmem;
2250 xenevtchn_handle *xe;
2251 xengnttab_handle *xg;
2252 xen_domain_handle_t handle;
2256 xc = xc_interface_open(0, 0, 0);
2257 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2258 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2259 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2260 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2261 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2263 xfmem = xenforeignmemory_open(0, 0);
2264 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2266 xe = xenevtchn_open(0, 0);
2269 xg = xengnttab_open(0, 0);
2270 xengnttab_map_grant_ref(xg, 0, 0, 0);
2275 compile_prog
"" "$xen_libs $xen_stable_libs"
2277 xen_ctrl_version
=40701
2280 cat > $TMPC <<EOF &&
2281 #include <xenctrl.h>
2284 xc_interface *xc = NULL;
2285 xen_domain_handle_t handle;
2286 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2290 compile_prog
"" "$xen_libs"
2292 xen_ctrl_version
=40700
2297 cat > $TMPC <<EOF &&
2298 #include <xenctrl.h>
2299 #include <xenstore.h>
2301 #include <xen/hvm/hvm_info_table.h>
2302 #if !defined(HVM_MAX_VCPUS)
2303 # error HVM_MAX_VCPUS not defined
2308 xc = xc_interface_open(0, 0, 0);
2309 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2310 xc_gnttab_open(NULL, 0);
2311 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2312 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2313 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2314 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2318 compile_prog
"" "$xen_libs"
2320 xen_ctrl_version
=40600
2325 cat > $TMPC <<EOF &&
2326 #include <xenctrl.h>
2327 #include <xenstore.h>
2329 #include <xen/hvm/hvm_info_table.h>
2330 #if !defined(HVM_MAX_VCPUS)
2331 # error HVM_MAX_VCPUS not defined
2336 xc = xc_interface_open(0, 0, 0);
2337 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2338 xc_gnttab_open(NULL, 0);
2339 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2340 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2341 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2345 compile_prog
"" "$xen_libs"
2347 xen_ctrl_version
=40500
2351 cat > $TMPC <<EOF &&
2352 #include <xenctrl.h>
2353 #include <xenstore.h>
2355 #include <xen/hvm/hvm_info_table.h>
2356 #if !defined(HVM_MAX_VCPUS)
2357 # error HVM_MAX_VCPUS not defined
2362 xc = xc_interface_open(0, 0, 0);
2363 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2364 xc_gnttab_open(NULL, 0);
2365 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2366 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2370 compile_prog
"" "$xen_libs"
2372 xen_ctrl_version
=40200
2376 if test "$xen" = "yes" ; then
2377 feature_not_found
"xen (unsupported version)" \
2378 "Install a supported xen (xen 4.2 or newer)"
2383 if test "$xen" = yes; then
2384 if test $xen_ctrl_version -ge 40701 ; then
2385 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2387 libs_softmmu
="$xen_libs $libs_softmmu"
2392 if test "$xen_pci_passthrough" != "no"; then
2393 if test "$xen" = "yes" && test "$linux" = "yes"; then
2394 xen_pci_passthrough
=yes
2396 if test "$xen_pci_passthrough" = "yes"; then
2397 error_exit
"User requested feature Xen PCI Passthrough" \
2398 " but this feature requires /sys from Linux"
2400 xen_pci_passthrough
=no
2404 if test "$xen_pv_domain_build" = "yes" &&
2405 test "$xen" != "yes"; then
2406 error_exit
"User requested Xen PV domain builder support" \
2407 "which requires Xen support."
2410 ##########################################
2412 if test "$sparse" != "no" ; then
2416 if test "$sparse" = "yes" ; then
2417 feature_not_found
"sparse" "Install sparse binary"
2423 ##########################################
2427 if $pkg_config --exists "x11"; then
2428 x11_cflags
=$
($pkg_config --cflags x11
)
2429 x11_libs
=$
($pkg_config --libs x11
)
2432 ##########################################
2435 if test "$gtkabi" = ""; then
2436 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2437 # Use 2.0 as a fallback if that is available.
2438 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2440 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2447 if test "$gtk" != "no"; then
2448 gtkpackage
="gtk+-$gtkabi"
2449 gtkx11package
="gtk+-x11-$gtkabi"
2450 if test "$gtkabi" = "3.0" ; then
2455 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2456 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2457 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2458 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2459 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2460 gtk_cflags
="$gtk_cflags $x11_cflags"
2461 gtk_libs
="$gtk_libs $x11_libs"
2463 libs_softmmu
="$gtk_libs $libs_softmmu"
2465 elif test "$gtk" = "yes"; then
2466 feature_not_found
"gtk" "Install gtk3-devel"
2473 ##########################################
2477 # Unfortunately some distros have bad pkg-config information for gnutls
2478 # such that it claims to exist but you get a compiler error if you try
2479 # to use the options returned by --libs. Specifically, Ubuntu for --static
2480 # builds doesn't work:
2481 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2483 # So sanity check the cflags/libs before assuming gnutls can be used.
2484 if ! $pkg_config --exists "gnutls"; then
2489 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2494 if test "$gnutls" != "no"; then
2495 if gnutls_works
; then
2496 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2497 gnutls_libs
=$
($pkg_config --libs gnutls
)
2498 libs_softmmu
="$gnutls_libs $libs_softmmu"
2499 libs_tools
="$gnutls_libs $libs_tools"
2500 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2503 # gnutls_rnd requires >= 2.11.0
2504 if $pkg_config --exists "gnutls >= 2.11.0"; then
2510 if $pkg_config --exists 'gnutls >= 3.0'; then
2513 elif $pkg_config --exists 'gnutls >= 2.12'; then
2514 case $
($pkg_config --libs --static gnutls
) in
2532 elif test "$gnutls" = "yes"; then
2533 feature_not_found
"gnutls" "Install gnutls devel"
2543 # If user didn't give a --disable/enable-gcrypt flag,
2544 # then mark as disabled if user requested nettle
2545 # explicitly, or if gnutls links to nettle
2546 if test -z "$gcrypt"
2548 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2554 # If user didn't give a --disable/enable-nettle flag,
2555 # then mark as disabled if user requested gcrypt
2556 # explicitly, or if gnutls links to gcrypt
2557 if test -z "$nettle"
2559 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2565 has_libgcrypt_config
() {
2566 if ! has
"libgcrypt-config"
2571 if test -n "$cross_prefix"
2573 host=$
(libgcrypt-config
--host)
2574 if test "$host-" != $cross_prefix
2583 if test "$gcrypt" != "no"; then
2584 if has_libgcrypt_config
; then
2585 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2586 gcrypt_libs
=$
(libgcrypt-config
--libs)
2587 # Debian has remove -lgpg-error from libgcrypt-config
2588 # as it "spreads unnecessary dependencies" which in
2589 # turn breaks static builds...
2590 if test "$static" = "yes"
2592 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2594 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2595 libs_tools
="$gcrypt_libs $libs_tools"
2596 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2598 if test -z "$nettle"; then
2605 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2607 NULL, 0, 0, 0, NULL);
2611 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2618 gcry_mac_hd_t handle;
2619 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2620 GCRY_MAC_FLAG_SECURE, NULL);
2624 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2628 if test "$gcrypt" = "yes"; then
2629 feature_not_found
"gcrypt" "Install gcrypt devel"
2637 if test "$nettle" != "no"; then
2638 if $pkg_config --exists "nettle"; then
2639 nettle_cflags
=$
($pkg_config --cflags nettle
)
2640 nettle_libs
=$
($pkg_config --libs nettle
)
2641 nettle_version
=$
($pkg_config --modversion nettle
)
2642 libs_softmmu
="$nettle_libs $libs_softmmu"
2643 libs_tools
="$nettle_libs $libs_tools"
2644 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2649 #include <nettle/pbkdf2.h>
2651 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2655 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2659 if test "$nettle" = "yes"; then
2660 feature_not_found
"nettle" "Install nettle devel"
2667 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2669 error_exit
"Only one of gcrypt & nettle can be enabled"
2672 ##########################################
2673 # libtasn1 - only for the TLS creds/session test suite
2678 if $pkg_config --exists "libtasn1"; then
2679 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2680 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2686 ##########################################
2687 # getifaddrs (for tests/test-io-channel-socket )
2690 if ! check_include
"ifaddrs.h" ; then
2694 ##########################################
2697 if test "$vte" != "no"; then
2698 if test "$gtkabi" = "3.0"; then
2699 vteminversion
="0.32.0"
2700 if $pkg_config --exists "vte-2.91"; then
2701 vtepackage
="vte-2.91"
2703 vtepackage
="vte-2.90"
2707 vteminversion
="0.24.0"
2709 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2710 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2711 vte_libs
=$
($pkg_config --libs $vtepackage)
2712 vteversion
=$
($pkg_config --modversion $vtepackage)
2713 libs_softmmu
="$vte_libs $libs_softmmu"
2715 elif test "$vte" = "yes"; then
2716 if test "$gtkabi" = "3.0"; then
2717 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2719 feature_not_found
"vte" "Install libvte devel"
2726 ##########################################
2729 # Look for sdl configuration program (pkg-config or sdl-config). Try
2730 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2732 if test "$sdlabi" = ""; then
2733 if $pkg_config --exists "sdl2"; then
2735 elif $pkg_config --exists "sdl"; then
2742 if test $sdlabi = "2.0"; then
2743 sdl_config
=$sdl2_config
2745 sdlconfigname
=sdl2_config
2746 elif test $sdlabi = "1.2"; then
2748 sdlconfigname
=sdl_config
2750 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2753 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2754 sdl_config
=$sdlconfigname
2757 if $pkg_config $sdlname --exists; then
2758 sdlconfig
="$pkg_config $sdlname"
2759 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2760 elif has
${sdl_config}; then
2761 sdlconfig
="$sdl_config"
2762 sdlversion
=$
($sdlconfig --version)
2764 if test "$sdl" = "yes" ; then
2765 feature_not_found
"sdl" "Install SDL2-devel"
2769 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2770 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2774 if test "$sdl" != "no" ; then
2777 #undef main /* We don't want SDL to override our main() */
2778 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2780 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2781 if test "$static" = "yes" ; then
2782 if $pkg_config $sdlname --exists; then
2783 sdl_libs
=$
($pkg_config $sdlname --static --libs 2>/dev
/null
)
2785 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2788 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2790 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2791 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2797 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2798 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2799 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2800 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2801 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2803 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2809 else # sdl not found
2810 if test "$sdl" = "yes" ; then
2811 feature_not_found
"sdl" "Install SDL devel"
2814 fi # sdl compile test
2817 if test "$sdl" = "yes" ; then
2820 #if defined(SDL_VIDEO_DRIVER_X11)
2821 #include <X11/XKBlib.h>
2823 #error No x11 support
2825 int main(void) { return 0; }
2827 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2828 sdl_cflags
="$sdl_cflags $x11_cflags"
2829 sdl_libs
="$sdl_libs $x11_libs"
2833 ##########################################
2834 # RDMA needs OpenFabrics libraries
2835 if test "$rdma" != "no" ; then
2837 #include <rdma/rdma_cma.h>
2838 int main(void) { return 0; }
2840 rdma_libs
="-lrdmacm -libverbs"
2841 if compile_prog
"" "$rdma_libs" ; then
2844 if test "$rdma" = "yes" ; then
2846 " OpenFabrics librdmacm/libibverbs not present." \
2848 " (1) Fast: Install infiniband packages from your distro." \
2849 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2850 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2857 ##########################################
2858 # VNC SASL detection
2859 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2861 #include <sasl/sasl.h>
2863 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2865 # Assuming Cyrus-SASL installed in /usr prefix
2867 vnc_sasl_libs
="-lsasl2"
2868 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2870 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2871 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2873 if test "$vnc_sasl" = "yes" ; then
2874 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2880 ##########################################
2881 # VNC JPEG detection
2882 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2885 #include <jpeglib.h>
2886 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2889 vnc_jpeg_libs
="-ljpeg"
2890 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2892 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2893 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2895 if test "$vnc_jpeg" = "yes" ; then
2896 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2902 ##########################################
2904 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2906 //#include <stdio.h>
2910 png_structp png_ptr;
2911 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2912 return png_ptr != 0;
2915 if $pkg_config libpng
--exists; then
2916 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2917 vnc_png_libs
=$
($pkg_config libpng
--libs)
2920 vnc_png_libs
="-lpng"
2922 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2924 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2925 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2927 if test "$vnc_png" = "yes" ; then
2928 feature_not_found
"vnc-png" "Install libpng devel"
2934 ##########################################
2936 if test "$xkbcommon" != "no" ; then
2937 if $pkg_config xkbcommon
--exists; then
2938 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
2939 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
2942 if test "$xkbcommon" = "yes" ; then
2943 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
2949 ##########################################
2950 # fnmatch() probe, used for ACL routines
2953 #include <fnmatch.h>
2956 fnmatch("foo", "foo", 0);
2960 if compile_prog
"" "" ; then
2964 ##########################################
2965 # xfsctl() probe, used for file-posix.c
2966 if test "$xfs" != "no" ; then
2968 #include <stddef.h> /* NULL */
2969 #include <xfs/xfs.h>
2972 xfsctl(NULL, 0, 0, NULL);
2976 if compile_prog
"" "" ; then
2979 if test "$xfs" = "yes" ; then
2980 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2986 ##########################################
2987 # vde libraries probe
2988 if test "$vde" != "no" ; then
2989 vde_libs
="-lvdeplug"
2991 #include <libvdeplug.h>
2994 struct vde_open_args a = {0, 0, 0};
3000 if compile_prog
"" "$vde_libs" ; then
3003 if test "$vde" = "yes" ; then
3004 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3010 ##########################################
3011 # netmap support probe
3012 # Apart from looking for netmap headers, we make sure that the host API version
3013 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3014 # a minor/major version number. Minor new features will be marked with values up
3015 # to 15, and if something happens that requires a change to the backend we will
3016 # move above 15, submit the backend fixes and modify this two bounds.
3017 if test "$netmap" != "no" ; then
3019 #include <inttypes.h>
3021 #include <net/netmap.h>
3022 #include <net/netmap_user.h>
3023 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3026 int main(void) { return 0; }
3028 if compile_prog
"" "" ; then
3031 if test "$netmap" = "yes" ; then
3032 feature_not_found
"netmap"
3038 ##########################################
3039 # libcap-ng library probe
3040 if test "$cap_ng" != "no" ; then
3046 capng_capability_to_name(CAPNG_EFFECTIVE);
3050 if compile_prog
"" "$cap_libs" ; then
3052 libs_tools
="$cap_libs $libs_tools"
3054 if test "$cap_ng" = "yes" ; then
3055 feature_not_found
"cap_ng" "Install libcap-ng devel"
3061 ##########################################
3062 # Sound support libraries probe
3073 int main(void) { $exp }
3075 if compile_prog
"$cfl" "$lib" ; then
3078 error_exit
"$drv check failed" \
3079 "Make sure to have the $drv libs and headers installed."
3083 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3084 for drv
in $audio_drv_list; do
3087 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
3088 "return snd_pcm_close((snd_pcm_t *)0);"
3089 alsa_libs
="-lasound"
3093 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
3094 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3095 pulse_libs
="-lpulse"
3100 if test "$sdl" = "no"; then
3101 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3106 coreaudio_libs
="-framework CoreAudio"
3110 dsound_libs
="-lole32 -ldxguid"
3119 # XXX: Probes for CoreAudio, DirectSound
3123 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3124 error_exit
"Unknown driver '$drv' selected" \
3125 "Possible drivers are: $audio_possible_drivers"
3131 ##########################################
3134 if test "$brlapi" != "no" ; then
3135 brlapi_libs
="-lbrlapi"
3139 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3141 if compile_prog
"" "$brlapi_libs" ; then
3144 if test "$brlapi" = "yes" ; then
3145 feature_not_found
"brlapi" "Install brlapi devel"
3151 ##########################################
3153 if test "$curses" != "no" ; then
3154 if test "$mingw32" = "yes" ; then
3155 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3156 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3158 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3159 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3168 setlocale(LC_ALL, "");
3170 addwstr(L"wide chars\n");
3172 add_wch(WACS_DEGREE);
3177 for curses_inc
in $curses_inc_list; do
3178 # Make sure we get the wide character prototypes
3179 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3181 for curses_lib
in $curses_lib_list; do
3183 if compile_prog
"$curses_inc" "$curses_lib" ; then
3185 QEMU_CFLAGS
="$curses_inc $QEMU_CFLAGS"
3186 libs_softmmu
="$curses_lib $libs_softmmu"
3190 if test "$curses_found" = yes ; then
3195 if test "$curses_found" = "yes" ; then
3198 if test "$curses" = "yes" ; then
3199 feature_not_found
"curses" "Install ncurses devel"
3205 ##########################################
3207 if test "$curl" != "no" ; then
3208 if $pkg_config libcurl
--exists; then
3209 curlconfig
="$pkg_config libcurl"
3211 curlconfig
=curl-config
3214 #include <curl/curl.h>
3215 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3217 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3218 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3219 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3222 if test "$curl" = "yes" ; then
3223 feature_not_found
"curl" "Install libcurl devel"
3229 ##########################################
3230 # bluez support probe
3231 if test "$bluez" != "no" ; then
3233 #include <bluetooth/bluetooth.h>
3234 int main(void) { return bt_error(0); }
3236 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3237 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3238 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3240 libs_softmmu
="$bluez_libs $libs_softmmu"
3242 if test "$bluez" = "yes" ; then
3243 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3249 ##########################################
3250 # glib support probe
3252 if test "$mingw32" = yes; then
3257 glib_modules
=gthread-2.0
3258 if test "$modules" = yes; then
3259 glib_modules
="$glib_modules gmodule-2.0"
3262 # This workaround is required due to a bug in pkg-config file for glib as it
3263 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3265 if test "$static" = yes -a "$mingw32" = yes; then
3266 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3269 for i
in $glib_modules; do
3270 if $pkg_config --atleast-version=$glib_req_ver $i; then
3271 glib_cflags
=$
($pkg_config --cflags $i)
3272 glib_libs
=$
($pkg_config --libs $i)
3273 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3274 LIBS
="$glib_libs $LIBS"
3275 libs_qga
="$glib_libs $libs_qga"
3277 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3281 # Sanity check that the current size_t matches the
3282 # size that glib thinks it should be. This catches
3283 # problems on multi-arch where people try to build
3284 # 32-bit QEMU while pointing at 64-bit glib headers
3289 #define QEMU_BUILD_BUG_ON(x) \
3290 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3293 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3298 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3299 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3300 "You probably need to set PKG_CONFIG_LIBDIR"\
3301 "to point to the right pkg-config files for your"\
3305 # g_test_trap_subprocess added in 2.38. Used by some tests.
3307 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
3311 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3314 int main(void) { return 0; }
3316 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3317 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3318 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3319 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3323 ##########################################
3324 # SHA command probe for modules
3325 if test "$modules" = yes; then
3326 shacmd_probe
="sha1sum sha1 shasum"
3327 for c
in $shacmd_probe; do
3333 if test "$shacmd" = ""; then
3334 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3338 ##########################################
3339 # pixman support probe
3341 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3344 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3345 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3346 pixman_libs
=$
($pkg_config --libs pixman-1
)
3348 error_exit
"pixman >= 0.21.8 not present." \
3349 "Please install the pixman devel package."
3352 ##########################################
3353 # libmpathpersist probe
3355 if test "$mpath" != "no" ; then
3357 #include <libudev.h>
3358 #include <mpath_persist.h>
3359 unsigned mpath_mx_alloc_len = 1024;
3361 static struct config *multipath_conf;
3362 extern struct udev *udev;
3363 extern struct config *get_multipath_config(void);
3364 extern void put_multipath_config(struct config *conf);
3366 struct config *get_multipath_config(void) { return multipath_conf; }
3367 void put_multipath_config(struct config *conf) { }
3371 multipath_conf = mpath_lib_init();
3375 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3384 ##########################################
3387 if test "$cap" != "no" ; then
3390 #include <sys/capability.h>
3391 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3393 if compile_prog
"" "-lcap" ; then
3400 ##########################################
3402 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3406 #include <pthread.h>
3407 static void *f(void *p) { return NULL; }
3410 pthread_create(&thread, 0, f, 0);
3414 if compile_prog
"" "" ; then
3417 for pthread_lib
in $PTHREADLIBS_LIST; do
3418 if compile_prog
"" "$pthread_lib" ; then
3421 for lib_entry
in $LIBS; do
3422 if test "$lib_entry" = "$pthread_lib"; then
3427 if test "$found" = "no"; then
3428 LIBS
="$pthread_lib $LIBS"
3430 PTHREAD_LIB
="$pthread_lib"
3436 if test "$mingw32" != yes -a "$pthread" = no
; then
3437 error_exit
"pthread check failed" \
3438 "Make sure to have the pthread libs and headers installed."
3441 # check for pthread_setname_np
3442 pthread_setname_np
=no
3444 #include <pthread.h>
3446 static void *f(void *p) { return NULL; }
3450 pthread_create(&thread, 0, f, 0);
3451 pthread_setname_np(thread, "QEMU");
3455 if compile_prog
"" "$pthread_lib" ; then
3456 pthread_setname_np
=yes
3459 ##########################################
3461 if test "$rbd" != "no" ; then
3464 #include <rbd/librbd.h>
3467 rados_create(&cluster, NULL);
3471 rbd_libs
="-lrbd -lrados"
3472 if compile_prog
"" "$rbd_libs" ; then
3475 if test "$rbd" = "yes" ; then
3476 feature_not_found
"rados block device" "Install librbd/ceph devel"
3482 ##########################################
3484 min_libssh2_version
=1.2.8
3485 if test "$libssh2" != "no" ; then
3486 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3487 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3488 libssh2_libs
=$
($pkg_config libssh2
--libs)
3491 if test "$libssh2" = "yes" ; then
3492 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3498 ##########################################
3499 # libssh2_sftp_fsync probe
3501 if test "$libssh2" = "yes"; then
3504 #include <libssh2.h>
3505 #include <libssh2_sftp.h>
3507 LIBSSH2_SESSION *session;
3509 LIBSSH2_SFTP_HANDLE *sftp_handle;
3510 session = libssh2_session_init ();
3511 sftp = libssh2_sftp_init (session);
3512 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3513 libssh2_sftp_fsync (sftp_handle);
3517 # libssh2_cflags/libssh2_libs defined in previous test.
3518 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3519 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3523 ##########################################
3526 if test "$linux_aio" != "no" ; then
3529 #include <sys/eventfd.h>
3531 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3533 if compile_prog
"" "-laio" ; then
3536 if test "$linux_aio" = "yes" ; then
3537 feature_not_found
"linux AIO" "Install libaio devel"
3543 ##########################################
3544 # TPM passthrough is only on x86 Linux
3546 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3547 tpm_passthrough
=$tpm
3552 # TPM emulator is for all posix systems
3553 if test "$mingw32" != "yes"; then
3558 ##########################################
3561 if test "$attr" != "no" ; then
3564 #include <sys/types.h>
3565 #ifdef CONFIG_LIBATTR
3566 #include <attr/xattr.h>
3568 #include <sys/xattr.h>
3570 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3572 if compile_prog
"" "" ; then
3574 # Older distros have <attr/xattr.h>, and need -lattr:
3575 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3580 if test "$attr" = "yes" ; then
3581 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3587 ##########################################
3590 #include <sys/types.h>
3591 #include <sys/uio.h>
3593 int main(void) { return sizeof(struct iovec); }
3596 if compile_prog
"" "" ; then
3600 ##########################################
3603 #include <sys/types.h>
3604 #include <sys/uio.h>
3606 int main(void) { return preadv(0, 0, 0, 0); }
3609 if compile_prog
"" "" ; then
3613 ##########################################
3615 # fdt support is mandatory for at least some target architectures,
3616 # so insist on it if we're building those system emulators.
3618 for target
in $target_list; do
3620 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu
)
3626 if test "$fdt_required" = "yes"; then
3627 if test "$fdt" = "no"; then
3628 error_exit
"fdt disabled but some requested targets require it." \
3629 "You can turn off fdt only if you also disable all the system emulation" \
3630 "targets which need it (by specifying a cut down --target-list)."
3635 if test "$fdt" != "no" ; then
3637 # explicitly check for libfdt_env.h as it is missing in some stable installs
3638 # and test for required functions to make sure we are on a version >= 1.4.2
3641 #include <libfdt_env.h>
3642 int main(void) { fdt_first_subnode(0, 0); return 0; }
3644 if compile_prog
"" "$fdt_libs" ; then
3645 # system DTC is good - use it
3648 # have GIT checkout, so activate dtc submodule
3649 if test -e "${source_path}/.git" ; then
3650 git_submodules
="${git_submodules} dtc"
3652 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
3656 if [ "$pwd_is_source_path" != "y" ] ; then
3657 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3658 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3660 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3661 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3662 elif test "$fdt" = "yes" ; then
3663 # Not a git build & no libfdt found, prompt for system install
3664 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
3665 "Please install the DTC (libfdt) devel package"
3667 # don't have and don't want
3674 libs_softmmu
="$libs_softmmu $fdt_libs"
3676 ##########################################
3677 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3679 if test "$opengl" != "no" ; then
3680 opengl_pkgs
="epoxy libdrm gbm"
3681 if $pkg_config $opengl_pkgs x11
; then
3682 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3683 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3685 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3688 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3690 if test "$opengl" = "yes" ; then
3691 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3699 if test "$opengl" = "yes"; then
3701 #include <epoxy/egl.h>
3702 #ifndef EGL_MESA_image_dma_buf_export
3703 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3705 int main(void) { return 0; }
3707 if compile_prog
"" "" ; then
3713 ##########################################
3715 if test "$glusterfs" != "no" ; then
3716 if $pkg_config --atleast-version=3 glusterfs-api
; then
3718 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3719 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3720 if $pkg_config --atleast-version=4 glusterfs-api
; then
3721 glusterfs_xlator_opt
="yes"
3723 if $pkg_config --atleast-version=5 glusterfs-api
; then
3724 glusterfs_discard
="yes"
3726 if $pkg_config --atleast-version=6 glusterfs-api
; then
3727 glusterfs_fallocate
="yes"
3728 glusterfs_zerofill
="yes"
3731 if test "$glusterfs" = "yes" ; then
3732 feature_not_found
"GlusterFS backend support" \
3733 "Install glusterfs-api devel >= 3"
3739 # Check for inotify functions when we are building linux-user
3740 # emulator. This is done because older glibc versions don't
3741 # have syscall stubs for these implemented. In that case we
3742 # don't provide them even if kernel supports them.
3746 #include <sys/inotify.h>
3751 /* try to start inotify */
3752 return inotify_init();
3755 if compile_prog
"" "" ; then
3761 #include <sys/inotify.h>
3766 /* try to start inotify */
3767 return inotify_init1(0);
3770 if compile_prog
"" "" ; then
3774 # check if pipe2 is there
3783 return pipe2(pipefd, O_CLOEXEC);
3786 if compile_prog
"" "" ; then
3790 # check if accept4 is there
3793 #include <sys/socket.h>
3798 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3802 if compile_prog
"" "" ; then
3806 # check if tee/splice is there. vmsplice was added same time.
3816 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3817 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3821 if compile_prog
"" "" ; then
3825 ##########################################
3828 if test "$numa" != "no" ; then
3831 int main(void) { return numa_available(); }
3834 if compile_prog
"" "-lnuma" ; then
3836 libs_softmmu
="-lnuma $libs_softmmu"
3838 if test "$numa" = "yes" ; then
3839 feature_not_found
"numa" "install numactl devel"
3845 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3846 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3850 ##########################################
3853 if test "$tcmalloc" = "yes" ; then
3856 int main(void) { malloc(1); return 0; }
3859 if compile_prog
"" "-ltcmalloc" ; then
3860 LIBS
="-ltcmalloc $LIBS"
3862 feature_not_found
"tcmalloc" "install gperftools devel"
3866 ##########################################
3869 if test "$jemalloc" = "yes" ; then
3872 int main(void) { malloc(1); return 0; }
3875 if compile_prog
"" "-ljemalloc" ; then
3876 LIBS
="-ljemalloc $LIBS"
3878 feature_not_found
"jemalloc" "install jemalloc devel"
3882 ##########################################
3887 #include <sys/syscall.h>
3889 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3892 if compile_prog
"" "" ; then
3896 # check if eventfd is supported
3899 #include <sys/eventfd.h>
3903 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3906 if compile_prog
"" "" ; then
3910 # check if memfd is supported
3913 #include <sys/memfd.h>
3917 return memfd_create("foo", MFD_ALLOW_SEALING);
3920 if compile_prog
"" "" ; then
3926 # check for fallocate
3933 fallocate(0, 0, 0, 0);
3937 if compile_prog
"" "" ; then
3941 # check for fallocate hole punching
3942 fallocate_punch_hole
=no
3945 #include <linux/falloc.h>
3949 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3953 if compile_prog
"" "" ; then
3954 fallocate_punch_hole
=yes
3957 # check that fallocate supports range zeroing inside the file
3958 fallocate_zero_range
=no
3961 #include <linux/falloc.h>
3965 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3969 if compile_prog
"" "" ; then
3970 fallocate_zero_range
=yes
3973 # check for posix_fallocate
3980 posix_fallocate(0, 0, 0);
3984 if compile_prog
"" "" ; then
3988 # check for sync_file_range
3995 sync_file_range(0, 0, 0, 0);
3999 if compile_prog
"" "" ; then
4003 # check for linux/fiemap.h and FS_IOC_FIEMAP
4006 #include <sys/ioctl.h>
4007 #include <linux/fs.h>
4008 #include <linux/fiemap.h>
4012 ioctl(0, FS_IOC_FIEMAP, 0);
4016 if compile_prog
"" "" ; then
4031 if compile_prog
"" "" ; then
4035 # check for ppoll support
4042 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4043 ppoll(&pfd, 1, 0, 0);
4047 if compile_prog
"" "" ; then
4051 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4052 prctl_pr_set_timerslack
=no
4054 #include <sys/prctl.h>
4058 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4062 if compile_prog
"" "" ; then
4063 prctl_pr_set_timerslack
=yes
4066 # check for epoll support
4069 #include <sys/epoll.h>
4077 if compile_prog
"" "" ; then
4081 # epoll_create1 is a later addition
4082 # so we must check separately for its presence
4085 #include <sys/epoll.h>
4089 /* Note that we use epoll_create1 as a value, not as
4090 * a function being called. This is necessary so that on
4091 * old SPARC glibc versions where the function was present in
4092 * the library but not declared in the header file we will
4093 * fail the configure check. (Otherwise we will get a compiler
4094 * warning but not an error, and will proceed to fail the
4095 * qemu compile where we compile with -Werror.)
4097 return (int)(uintptr_t)&epoll_create1;
4100 if compile_prog
"" "" ; then
4104 # check for sendfile support
4107 #include <sys/sendfile.h>
4111 return sendfile(0, 0, 0, 0);
4114 if compile_prog
"" "" ; then
4118 # check for timerfd support (glibc 2.8 and newer)
4121 #include <sys/timerfd.h>
4125 return(timerfd_create(CLOCK_REALTIME, 0));
4128 if compile_prog
"" "" ; then
4132 # check for setns and unshare support
4145 if compile_prog
"" "" ; then
4149 # clock_adjtime probe
4156 return clock_adjtime(0, 0);
4160 if compile_prog
"" "" ; then
4175 if compile_prog
"" "" ; then
4179 # Check if tools are available to build documentation.
4180 if test "$docs" != "no" ; then
4181 if has makeinfo
&& has pod2man
; then
4184 if test "$docs" = "yes" ; then
4185 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4191 # Search for bswap_32 function
4194 #include <byteswap.h>
4195 int main(void) { return bswap_32(0); }
4197 if compile_prog
"" "" ; then
4201 # Search for bswap32 function
4204 #include <sys/endian.h>
4205 #include <sys/types.h>
4206 #include <machine/bswap.h>
4207 int main(void) { return bswap32(0); }
4209 if compile_prog
"" "" ; then
4213 ##########################################
4214 # Do we have libiscsi >= 1.9.0
4215 if test "$libiscsi" != "no" ; then
4216 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4218 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4219 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4221 if test "$libiscsi" = "yes" ; then
4222 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4228 ##########################################
4232 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4234 if compile_prog
"" "" ; then
4236 elif compile_prog
"" "-lm" ; then
4238 libs_qga
="-lm $libs_qga"
4240 error_exit
"libm check failed"
4243 ##########################################
4245 # uClibc provides 2 versions of clock_gettime(), one with realtime
4246 # support and one without. This means that the clock_gettime() don't
4247 # need -lrt. We still need it for timer_create() so we check for this
4248 # function in addition.
4253 timer_create(CLOCK_REALTIME, NULL, NULL);
4254 return clock_gettime(CLOCK_REALTIME, NULL);
4258 if compile_prog
"" "" ; then
4260 # we need pthread for static linking. use previous pthread test result
4261 elif compile_prog
"" "$pthread_lib -lrt" ; then
4263 libs_qga
="$libs_qga -lrt"
4266 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4267 "$haiku" != "yes" ; then
4268 libs_softmmu
="-lutil $libs_softmmu"
4271 ##########################################
4273 if test "$spice" != "no" ; then
4276 int main(void) { spice_server_new(); return 0; }
4278 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4279 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4280 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4281 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4282 compile_prog
"$spice_cflags" "$spice_libs" ; then
4284 libs_softmmu
="$libs_softmmu $spice_libs"
4285 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4286 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4287 spice_server_version
=$
($pkg_config --modversion spice-server
)
4289 if test "$spice" = "yes" ; then
4290 feature_not_found
"spice" \
4291 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4297 # check for smartcard support
4298 if test "$smartcard" != "no"; then
4299 if $pkg_config libcacard
; then
4300 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4301 libcacard_libs
=$
($pkg_config --libs libcacard
)
4304 if test "$smartcard" = "yes"; then
4305 feature_not_found
"smartcard" "Install libcacard devel"
4312 if test "$libusb" != "no" ; then
4313 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4315 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4316 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4318 if test "$libusb" = "yes"; then
4319 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4325 # check for usbredirparser for usb network redirection support
4326 if test "$usb_redir" != "no" ; then
4327 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4329 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4330 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4332 if test "$usb_redir" = "yes"; then
4333 feature_not_found
"usb-redir" "Install usbredir devel"
4339 ##########################################
4340 # check if we have VSS SDK headers for win
4342 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4343 case "$vss_win32_sdk" in
4344 "") vss_win32_include
="-isystem $source_path" ;;
4345 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4346 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4347 vss_win32_include
="-isystem $source_path/.sdk/vss"
4348 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4350 *) vss_win32_include
="-isystem $vss_win32_sdk"
4353 #define __MIDL_user_allocate_free_DEFINED__
4354 #include <inc/win2003/vss.h>
4355 int main(void) { return VSS_CTX_BACKUP; }
4357 if compile_prog
"$vss_win32_include" "" ; then
4358 guest_agent_with_vss
="yes"
4359 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4360 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4361 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4363 if test "$vss_win32_sdk" != "" ; then
4364 echo "ERROR: Please download and install Microsoft VSS SDK:"
4365 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4366 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4367 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4368 echo "ERROR: The headers are extracted in the directory \`inc'."
4369 feature_not_found
"VSS support"
4371 guest_agent_with_vss
="no"
4375 ##########################################
4376 # lookup Windows platform SDK (if not specified)
4377 # The SDK is needed only to build .tlb (type library) file of guest agent
4378 # VSS provider from the source. It is usually unnecessary because the
4379 # pre-compiled .tlb file is included.
4381 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4382 if test -z "$win_sdk"; then
4383 programfiles
="$PROGRAMFILES"
4384 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4385 if test -n "$programfiles"; then
4386 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4388 feature_not_found
"Windows SDK"
4390 elif test "$win_sdk" = "no"; then
4395 ##########################################
4396 # check if mingw environment provides a recent ntddscsi.h
4397 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4399 #include <windows.h>
4400 #include <ntddscsi.h>
4402 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4403 #error Missing required ioctl definitions
4405 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4409 if compile_prog
"" "" ; then
4410 guest_agent_ntddscsi
=yes
4411 libs_qga
="-lsetupapi $libs_qga"
4415 ##########################################
4416 # virgl renderer probe
4418 if test "$virglrenderer" != "no" ; then
4420 #include <virglrenderer.h>
4421 int main(void) { virgl_renderer_poll(); return 0; }
4423 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4424 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4425 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4426 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4429 if test "$virglrenderer" = "yes" ; then
4430 feature_not_found
"virglrenderer"
4436 ##########################################
4441 if $pkg_config capstone
; then
4443 elif test -e "${source_path}/.git" ; then
4445 elif test -e "${source_path}/capstone/Makefile" ; then
4447 elif test -z "$capstone" ; then
4450 feature_not_found
"capstone" "Install capstone devel or git submodule"
4455 if ! $pkg_config capstone
; then
4456 feature_not_found
"capstone" "Install capstone devel"
4463 if test "$capstone" = git
; then
4464 git_submodules
="${git_submodules} capstone"
4467 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4468 if test "$mingw32" = "yes"; then
4469 LIBCAPSTONE
=capstone.lib
4471 LIBCAPSTONE
=libcapstone.a
4473 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4477 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4478 LIBS
="$($pkg_config --libs capstone) $LIBS"
4484 error_exit
"Unknown state for capstone: $capstone"
4488 ##########################################
4489 # check if we have fdatasync
4495 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4496 return fdatasync(0);
4498 #error Not supported
4502 if compile_prog
"" "" ; then
4506 ##########################################
4507 # check if we have madvise
4511 #include <sys/types.h>
4512 #include <sys/mman.h>
4514 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4516 if compile_prog
"" "" ; then
4520 ##########################################
4521 # check if we have posix_madvise
4525 #include <sys/mman.h>
4527 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4529 if compile_prog
"" "" ; then
4533 ##########################################
4534 # check if we have posix_syslog
4539 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4541 if compile_prog
"" "" ; then
4545 ##########################################
4546 # check if we have sem_timedwait
4550 #include <semaphore.h>
4551 int main(void) { return sem_timedwait(0, 0); }
4553 if compile_prog
"" "" ; then
4557 ##########################################
4558 # check if trace backend exists
4560 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4561 if test "$?" -ne 0 ; then
4562 error_exit
"invalid trace backends" \
4563 "Please choose supported trace backends."
4566 ##########################################
4567 # For 'ust' backend, test if ust headers are present
4568 if have_backend
"ust"; then
4570 #include <lttng/tracepoint.h>
4571 int main(void) { return 0; }
4573 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4574 if $pkg_config lttng-ust
--exists; then
4575 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4577 lttng_ust_libs
="-llttng-ust -ldl"
4579 if $pkg_config liburcu-bp
--exists; then
4580 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4582 urcu_bp_libs
="-lurcu-bp"
4585 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4586 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4588 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4592 ##########################################
4593 # For 'dtrace' backend, test if 'dtrace' command is present
4594 if have_backend
"dtrace"; then
4595 if ! has
'dtrace' ; then
4596 error_exit
"dtrace command is not found in PATH $PATH"
4598 trace_backend_stap
="no"
4599 if has
'stap' ; then
4600 trace_backend_stap
="yes"
4604 ##########################################
4605 # check and set a backend for coroutine
4607 # We prefer ucontext, but it's not always possible. The fallback
4608 # is sigcontext. On Windows the only valid backend is the Windows
4612 if test "$darwin" != "yes"; then
4614 #include <ucontext.h>
4615 #ifdef __stub_makecontext
4616 #error Ignoring glibc stub makecontext which will always fail
4618 int main(void) { makecontext(0, 0, 0); return 0; }
4620 if compile_prog
"" "" ; then
4625 if test "$coroutine" = ""; then
4626 if test "$mingw32" = "yes"; then
4628 elif test "$ucontext_works" = "yes"; then
4631 coroutine
=sigaltstack
4636 if test "$mingw32" != "yes"; then
4637 error_exit
"'windows' coroutine backend only valid for Windows"
4639 # Unfortunately the user visible backend name doesn't match the
4640 # coroutine-*.c filename for this case, so we have to adjust it here.
4644 if test "$ucontext_works" != "yes"; then
4645 feature_not_found
"ucontext"
4649 if test "$mingw32" = "yes"; then
4650 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4654 error_exit
"unknown coroutine backend $coroutine"
4659 if test "$coroutine_pool" = ""; then
4663 if test "$debug_stack_usage" = "yes"; then
4664 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4665 error_exit
"stack usage debugging is not supported for $cpu"
4667 if test "$coroutine_pool" = "yes"; then
4668 echo "WARN: disabling coroutine pool for stack usage debugging"
4674 ##########################################
4675 # check if we have open_by_handle_at
4677 open_by_handle_at
=no
4680 #if !defined(AT_EMPTY_PATH)
4681 # error missing definition
4683 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4686 if compile_prog
"" "" ; then
4687 open_by_handle_at
=yes
4690 ########################################
4691 # check if we have linux/magic.h
4695 #include <linux/magic.h>
4700 if compile_prog
"" "" ; then
4704 ########################################
4705 # check whether we can disable warning option with a pragma (this is needed
4706 # to silence warnings in the headers of some versions of external libraries).
4707 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4710 # If we can't selectively disable warning in the code, disable -Werror so that
4711 # the build doesn't fail anyway.
4713 pragma_disable_unused_but_set
=no
4715 #pragma GCC diagnostic push
4716 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4717 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4718 #pragma GCC diagnostic pop
4724 if compile_prog
"-Werror" "" ; then
4725 pragma_diagnostic_available
=yes
4730 ########################################
4731 # check if we have valgrind/valgrind.h
4735 #include <valgrind/valgrind.h>
4740 if compile_prog
"" "" ; then
4744 ########################################
4745 # check if environ is declared
4755 if compile_prog
"" "" ; then
4759 ########################################
4760 # check if cpuid.h is usable.
4765 unsigned a, b, c, d;
4766 int max = __get_cpuid_max(0, 0);
4769 __cpuid(1, a, b, c, d);
4773 __cpuid_count(7, 0, a, b, c, d);
4779 if compile_prog
"" "" ; then
4783 ##########################################
4784 # avx2 optimization requirement check
4786 # There is no point enabling this if cpuid.h is not usable,
4787 # since we won't be able to select the new routines.
4789 if test $cpuid_h = yes; then
4791 #pragma GCC push_options
4792 #pragma GCC target("avx2")
4794 #include <immintrin.h>
4795 static int bar(void *a) {
4796 __m256i x = *(__m256i *)a;
4797 return _mm256_testz_si256(x, x);
4799 int main(int argc, char *argv[]) { return bar(argv[0]); }
4801 if compile_object
"" ; then
4806 ########################################
4807 # check if __[u]int128_t is usable.
4811 #if defined(__clang_major__) && defined(__clang_minor__)
4812 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4813 # error __int128_t does not work in CLANG before 3.2
4825 if compile_prog
"" "" ; then
4829 #########################################
4830 # See if 128-bit atomic operations are supported.
4833 if test "$int128" = "yes"; then
4837 unsigned __int128 x = 0, y = 0;
4838 y = __atomic_load_16(&x, 0);
4839 __atomic_store_16(&x, y, 0);
4840 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4844 if compile_prog
"" "" ; then
4849 #########################################
4850 # See if 64-bit atomic operations are supported.
4851 # Note that without __atomic builtins, we can only
4852 # assume atomic loads/stores max at pointer size.
4858 uint64_t x = 0, y = 0;
4859 #ifdef __ATOMIC_RELAXED
4860 y = __atomic_load_8(&x, 0);
4861 __atomic_store_8(&x, y, 0);
4862 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4863 __atomic_exchange_8(&x, y, 0);
4864 __atomic_fetch_add_8(&x, y, 0);
4866 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4867 __sync_lock_test_and_set(&x, y);
4868 __sync_val_compare_and_swap(&x, y, 0);
4869 __sync_fetch_and_add(&x, y);
4874 if compile_prog
"" "" ; then
4878 ########################################
4879 # check if getauxval is available.
4883 #include <sys/auxv.h>
4885 return getauxval(AT_HWCAP) == 0;
4888 if compile_prog
"" "" ; then
4892 ########################################
4893 # check if ccache is interfering with
4894 # semantic analysis of macros
4899 static const int Z = 1;
4900 #define fn() ({ Z; })
4901 #define TAUT(X) ((X) == Z)
4902 #define PAREN(X, Y) (X == Y)
4904 int main(int argc, char *argv[])
4910 if (PAREN(x, y)) return 0;
4911 if (TAUT(Z)) return 0;
4916 if ! compile_object
"-Werror"; then
4920 #################################################
4921 # clang does not support glibc + FORTIFY_SOURCE.
4923 if test "$fortify_source" != "no"; then
4924 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4925 fortify_source
="no";
4926 elif test -n "$cxx" && has
$cxx &&
4927 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4928 fortify_source
="no";
4930 fortify_source
="yes"
4934 ##########################################
4935 # check if struct fsxattr is available via linux/fs.h
4939 #include <linux/fs.h>
4945 if compile_prog
"" "" ; then
4949 ##########################################
4950 # check if rtnetlink.h exists and is useful
4953 #include <linux/rtnetlink.h>
4955 return IFLA_PROTO_DOWN;
4958 if compile_prog
"" "" ; then
4962 ##########################################
4963 # check for usable AF_VSOCK environment
4967 #include <sys/types.h>
4968 #include <sys/socket.h>
4969 #if !defined(AF_VSOCK)
4970 # error missing AF_VSOCK flag
4972 #include <linux/vm_sockets.h>
4975 struct sockaddr_vm svm;
4976 socklen_t len = sizeof(svm);
4977 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4978 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4979 if ((ret == -1) && (errno == ENOTCONN)) {
4985 if compile_prog
"" "" ; then
4989 ##########################################
4990 # check for usable AF_ALG environment
4994 #include <sys/types.h>
4995 #include <sys/socket.h>
4996 #include <linux/if_alg.h>
4999 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5003 if compile_prog
"" "" ; then
5006 if test "$crypto_afalg" = "yes"
5008 if test "$have_afalg" != "yes"
5010 error_exit
"AF_ALG requested but could not be detected"
5015 #################################################
5016 # Sparc implicitly links with --relax, which is
5017 # incompatible with -r, so --no-relax should be
5018 # given. It does no harm to give it on other
5021 # Note: the prototype is needed since QEMU_CFLAGS
5022 # contains -Wmissing-prototypes
5024 extern int foo(void);
5025 int foo(void) { return 0; }
5027 if ! compile_object
""; then
5028 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5030 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5031 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5036 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5037 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5040 ##########################################
5041 # check for sysmacros.h
5045 #include <sys/sysmacros.h>
5047 return makedev(0, 0);
5050 if compile_prog
"" "" ; then
5054 ##########################################
5055 # Veritas HyperScale block driver VxHS
5056 # Check if libvxhs is installed
5058 if test "$vxhs" != "no" ; then
5061 #include <qnio/qnio_api.h>
5063 void *vxhs_callback;
5066 iio_init(QNIO_VERSION, vxhs_callback);
5070 vxhs_libs
="-lvxhs -lssl"
5071 if compile_prog
"" "$vxhs_libs" ; then
5074 if test "$vxhs" = "yes" ; then
5075 feature_not_found
"vxhs block device" "Install libvxhs See github"
5081 ##########################################
5082 # check for _Static_assert()
5084 have_static_assert
=no
5086 _Static_assert(1, "success");
5091 if compile_prog
"" "" ; then
5092 have_static_assert
=yes
5095 ##########################################
5096 # check for utmpx.h, it is missing e.g. on OpenBSD
5101 struct utmpx user_info;
5106 if compile_prog
"" "" ; then
5110 ##########################################
5112 # After here, no more $cc or $ld runs
5114 if test "$gcov" = "yes" ; then
5115 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5116 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5117 elif test "$fortify_source" = "yes" ; then
5118 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5119 elif test "$debug" = "no"; then
5120 CFLAGS
="-O2 $CFLAGS"
5123 ##########################################
5125 if test "$libnfs" != "no" ; then
5126 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5128 libnfs_libs
=$
($pkg_config --libs libnfs
)
5130 if test "$libnfs" = "yes" ; then
5131 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5137 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5138 if test "$werror" = "yes"; then
5139 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5142 if test "$solaris" = "no" ; then
5143 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5144 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5148 # test if pod2man has --utf8 option
5149 if pod2man
--help |
grep -q utf8
; then
5150 POD2MAN
="pod2man --utf8"
5155 # Use ASLR, no-SEH and DEP if available
5156 if test "$mingw32" = "yes" ; then
5157 for flag
in --dynamicbase --no-seh --nxcompat; do
5158 if ld_has
$flag ; then
5159 LDFLAGS
="-Wl,$flag $LDFLAGS"
5164 qemu_confdir
=$sysconfdir$confsuffix
5165 qemu_moddir
=$libdir$confsuffix
5166 qemu_datadir
=$datadir$confsuffix
5167 qemu_localedir
="$datadir/locale"
5169 # We can only support ivshmem if we have eventfd
5170 if [ "$eventfd" = "yes" ]; then
5175 if test "$want_tools" = "yes" ; then
5176 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
5177 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5178 tools
="qemu-nbd\$(EXESUF) $tools"
5180 if [ "$ivshmem" = "yes" ]; then
5181 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5184 if test "$softmmu" = yes ; then
5185 if test "$linux" = yes; then
5186 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5188 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5190 if test "$virtfs" = yes; then
5191 error_exit
"VirtFS requires libcap devel and libattr devel"
5195 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
5198 if test "$mpath" = yes; then
5199 error_exit
"Multipath requires libmpathpersist devel"
5203 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
5205 if test "$virtfs" = yes; then
5206 error_exit
"VirtFS is supported only on Linux"
5209 if test "$mpath" = yes; then
5210 error_exit
"Multipath is supported only on Linux"
5214 if test "$xkbcommon" = "yes"; then
5215 tools
="qemu-keymap\$(EXESUF) $tools"
5219 # Probe for guest agent support/options
5221 if [ "$guest_agent" != "no" ]; then
5222 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5223 tools
="qemu-ga $tools"
5225 elif [ "$guest_agent" != yes ]; then
5228 error_exit
"Guest agent is not supported on this platform"
5232 # Guest agent Window MSI package
5234 if test "$guest_agent" != yes; then
5235 if test "$guest_agent_msi" = yes; then
5236 error_exit
"MSI guest agent package requires guest agent enabled"
5239 elif test "$mingw32" != "yes"; then
5240 if test "$guest_agent_msi" = "yes"; then
5241 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5244 elif ! has wixl
; then
5245 if test "$guest_agent_msi" = "yes"; then
5246 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5250 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5251 # disabled explicitly
5252 if test "$guest_agent_msi" != "no"; then
5257 if test "$guest_agent_msi" = "yes"; then
5258 if test "$guest_agent_with_vss" = "yes"; then
5259 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5262 if test "$QEMU_GA_MANUFACTURER" = ""; then
5263 QEMU_GA_MANUFACTURER
=QEMU
5266 if test "$QEMU_GA_DISTRO" = ""; then
5267 QEMU_GA_DISTRO
=Linux
5270 if test "$QEMU_GA_VERSION" = ""; then
5271 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5274 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5278 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5281 QEMU_GA_MSI_ARCH
="-D Arch=32"
5284 error_exit
"CPU $cpu not supported for building installation package"
5289 # Mac OS X ships with a broken assembler
5291 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5292 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5293 "$softmmu" = yes ; then
5294 # Different host OS linkers have different ideas about the name of the ELF
5295 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
5296 # variant; and Windows uses i386pe.
5297 for emu
in elf_i386 elf_i386_fbsd i386pe
; do
5298 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5299 ld_i386_emulation
="$emu"
5305 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5306 roms
="$roms spapr-rtas"
5309 if test "$cpu" = "s390x" ; then
5310 roms
="$roms s390-ccw"
5313 # Probe for the need for relocating the user-only binary.
5314 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5317 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5318 # ??? Rationale for choosing this address
5319 textseg_addr
=0x60000000
5322 # A 256M aligned address, high in the address space, with enough
5323 # room for the code_gen_buffer above it before the stack.
5324 textseg_addr
=0x60000000
5327 if [ -n "$textseg_addr" ]; then
5329 int main(void) { return 0; }
5331 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5332 if ! compile_prog
"" "$textseg_ldflags"; then
5333 # In case ld does not support -Ttext-segment, edit the default linker
5334 # script via sed to set the .text start addr. This is needed on FreeBSD
5336 if ! $ld --verbose >/dev
/null
2>&1; then
5338 "We need to link the QEMU user mode binaries at a" \
5339 "specific text address. Unfortunately your linker" \
5340 "doesn't support either the -Ttext-segment option or" \
5341 "printing the default linker script with --verbose." \
5342 "If you don't want the user mode binaries, pass the" \
5343 "--disable-user option to configure."
5346 $ld --verbose |
sed \
5347 -e '1,/==================================================/d' \
5348 -e '/==================================================/,$d' \
5349 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5350 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5351 textseg_ldflags
="-Wl,-T../config-host.ld"
5356 # Check that the C++ compiler exists and works with the C compiler.
5357 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5360 int c_function(void);
5361 int main(void) { return c_function(); }
5368 int c_function(void);
5370 int c_function(void) { return 42; }
5375 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5376 # C++ compiler $cxx works ok with C compiler $cc
5379 echo "C++ compiler $cxx does not work with C compiler $cc"
5380 echo "Disabling C++ specific optional code"
5384 echo "No C++ compiler available; disabling C++ specific optional code"
5389 if test "$1" = "yes" ; then
5394 # prepend pixman and ftd flags after all config tests are done
5395 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5396 libs_softmmu
="$pixman_libs $libs_softmmu"
5398 echo "Install prefix $prefix"
5399 echo "BIOS directory $(eval echo $qemu_datadir)"
5400 echo "firmware path $(eval echo $firmwarepath)"
5401 echo "binary directory $(eval echo $bindir)"
5402 echo "library directory $(eval echo $libdir)"
5403 echo "module directory $(eval echo $qemu_moddir)"
5404 echo "libexec directory $(eval echo $libexecdir)"
5405 echo "include directory $(eval echo $includedir)"
5406 echo "config directory $(eval echo $sysconfdir)"
5407 if test "$mingw32" = "no" ; then
5408 echo "local state directory $(eval echo $local_statedir)"
5409 echo "Manual directory $(eval echo $mandir)"
5410 echo "ELF interp prefix $interp_prefix"
5412 echo "local state directory queried at runtime"
5413 echo "Windows SDK $win_sdk"
5415 echo "Source path $source_path"
5416 echo "GIT submodules $git_submodules"
5417 echo "C compiler $cc"
5418 echo "Host C compiler $host_cc"
5419 echo "C++ compiler $cxx"
5420 echo "Objective-C compiler $objcc"
5421 echo "ARFLAGS $ARFLAGS"
5422 echo "CFLAGS $CFLAGS"
5423 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5424 echo "LDFLAGS $LDFLAGS"
5426 echo "install $install"
5427 echo "python $python"
5428 if test "$slirp" = "yes" ; then
5431 echo "module support $modules"
5432 echo "host CPU $cpu"
5433 echo "host big endian $bigendian"
5434 echo "target list $target_list"
5435 echo "gprof enabled $gprof"
5436 echo "sparse enabled $sparse"
5437 echo "strip binaries $strip_opt"
5438 echo "profiler $profiler"
5439 echo "static build $static"
5440 if test "$darwin" = "yes" ; then
5441 echo "Cocoa support $cocoa"
5443 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5444 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5445 echo "GTK GL support $gtk_gl"
5446 echo "VTE support $vte $(echo_version $vte $vteversion)"
5447 echo "TLS priority $tls_priority"
5448 echo "GNUTLS support $gnutls"
5449 echo "GNUTLS rnd $gnutls_rnd"
5450 echo "libgcrypt $gcrypt"
5451 echo "libgcrypt kdf $gcrypt_kdf"
5452 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5453 echo "nettle kdf $nettle_kdf"
5454 echo "libtasn1 $tasn1"
5455 echo "curses support $curses"
5456 echo "virgl support $virglrenderer"
5457 echo "curl support $curl"
5458 echo "mingw32 support $mingw32"
5459 echo "Audio drivers $audio_drv_list"
5460 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5461 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5462 echo "VirtFS support $virtfs"
5463 echo "Multipath support $mpath"
5464 echo "VNC support $vnc"
5465 if test "$vnc" = "yes" ; then
5466 echo "VNC SASL support $vnc_sasl"
5467 echo "VNC JPEG support $vnc_jpeg"
5468 echo "VNC PNG support $vnc_png"
5470 if test -n "$sparc_cpu"; then
5471 echo "Target Sparc Arch $sparc_cpu"
5473 echo "xen support $xen"
5474 if test "$xen" = "yes" ; then
5475 echo "xen ctrl version $xen_ctrl_version"
5476 echo "pv dom build $xen_pv_domain_build"
5478 echo "brlapi support $brlapi"
5479 echo "bluez support $bluez"
5480 echo "Documentation $docs"
5482 echo "vde support $vde"
5483 echo "netmap support $netmap"
5484 echo "Linux AIO support $linux_aio"
5485 echo "ATTR/XATTR support $attr"
5486 echo "Install blobs $blobs"
5487 echo "KVM support $kvm"
5488 echo "HAX support $hax"
5489 echo "TCG support $tcg"
5490 if test "$tcg" = "yes" ; then
5491 echo "TCG debug enabled $debug_tcg"
5492 echo "TCG interpreter $tcg_interpreter"
5494 echo "RDMA support $rdma"
5495 echo "fdt support $fdt"
5496 echo "preadv support $preadv"
5497 echo "fdatasync $fdatasync"
5498 echo "madvise $madvise"
5499 echo "posix_madvise $posix_madvise"
5500 echo "libcap-ng support $cap_ng"
5501 echo "vhost-net support $vhost_net"
5502 echo "vhost-scsi support $vhost_scsi"
5503 echo "vhost-vsock support $vhost_vsock"
5504 echo "vhost-user support $vhost_user"
5505 echo "Trace backends $trace_backends"
5506 if have_backend
"simple"; then
5507 echo "Trace output file $trace_file-<pid>"
5509 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5510 echo "rbd support $rbd"
5511 echo "xfsctl support $xfs"
5512 echo "smartcard support $smartcard"
5513 echo "libusb $libusb"
5514 echo "usb net redir $usb_redir"
5515 echo "OpenGL support $opengl"
5516 echo "OpenGL dmabufs $opengl_dmabuf"
5517 echo "libiscsi support $libiscsi"
5518 echo "libnfs support $libnfs"
5519 echo "build guest agent $guest_agent"
5520 echo "QGA VSS support $guest_agent_with_vss"
5521 echo "QGA w32 disk info $guest_agent_ntddscsi"
5522 echo "QGA MSI support $guest_agent_msi"
5523 echo "seccomp support $seccomp"
5524 echo "coroutine backend $coroutine"
5525 echo "coroutine pool $coroutine_pool"
5526 echo "debug stack usage $debug_stack_usage"
5527 echo "crypto afalg $crypto_afalg"
5528 echo "GlusterFS support $glusterfs"
5529 echo "gcov $gcov_tool"
5530 echo "gcov enabled $gcov"
5531 echo "TPM support $tpm"
5532 echo "libssh2 support $libssh2"
5533 echo "TPM passthrough $tpm_passthrough"
5534 echo "TPM emulator $tpm_emulator"
5535 echo "QOM debugging $qom_cast_debug"
5536 echo "Live block migration $live_block_migration"
5537 echo "lzo support $lzo"
5538 echo "snappy support $snappy"
5539 echo "bzip2 support $bzip2"
5540 echo "NUMA host support $numa"
5541 echo "tcmalloc support $tcmalloc"
5542 echo "jemalloc support $jemalloc"
5543 echo "avx2 optimization $avx2_opt"
5544 echo "replication support $replication"
5545 echo "VxHS block device $vxhs"
5546 echo "capstone $capstone"
5548 if test "$sdl_too_old" = "yes"; then
5549 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5552 if test "$supported_cpu" = "no"; then
5554 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5556 echo "CPU host architecture $cpu support is not currently maintained."
5557 echo "The QEMU project intends to remove support for this host CPU in"
5558 echo "a future release if nobody volunteers to maintain it and to"
5559 echo "provide a build host for our continuous integration setup."
5560 echo "configure has succeeded and you can continue to build, but"
5561 echo "if you care about QEMU on this platform you should contact"
5562 echo "us upstream at qemu-devel@nongnu.org."
5565 if test "$supported_os" = "no"; then
5567 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5569 echo "Host OS $targetos support is not currently maintained."
5570 echo "The QEMU project intends to remove support for this host OS in"
5571 echo "a future release if nobody volunteers to maintain it and to"
5572 echo "provide a build host for our continuous integration setup."
5573 echo "configure has succeeded and you can continue to build, but"
5574 echo "if you care about QEMU on this platform you should contact"
5575 echo "us upstream at qemu-devel@nongnu.org."
5578 config_host_mak
="config-host.mak"
5580 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5582 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5583 echo >> $config_host_mak
5585 echo all
: >> $config_host_mak
5586 echo "prefix=$prefix" >> $config_host_mak
5587 echo "bindir=$bindir" >> $config_host_mak
5588 echo "libdir=$libdir" >> $config_host_mak
5589 echo "libexecdir=$libexecdir" >> $config_host_mak
5590 echo "includedir=$includedir" >> $config_host_mak
5591 echo "mandir=$mandir" >> $config_host_mak
5592 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5593 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5594 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5595 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
5596 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5597 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5598 if test "$mingw32" = "no" ; then
5599 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5601 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5602 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5603 echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
5604 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5605 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5606 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5607 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
5609 echo "ARCH=$ARCH" >> $config_host_mak
5611 if test "$debug_tcg" = "yes" ; then
5612 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5614 if test "$strip_opt" = "yes" ; then
5615 echo "STRIP=${strip}" >> $config_host_mak
5617 if test "$bigendian" = "yes" ; then
5618 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5620 if test "$mingw32" = "yes" ; then
5621 echo "CONFIG_WIN32=y" >> $config_host_mak
5622 rc_version
=$
(cat $source_path/VERSION
)
5623 version_major
=${rc_version%%.*}
5624 rc_version
=${rc_version#*.}
5625 version_minor
=${rc_version%%.*}
5626 rc_version
=${rc_version#*.}
5627 version_subminor
=${rc_version%%.*}
5629 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5630 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5631 if test "$guest_agent_with_vss" = "yes" ; then
5632 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5633 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5634 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5636 if test "$guest_agent_ntddscsi" = "yes" ; then
5637 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5639 if test "$guest_agent_msi" = "yes"; then
5640 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5641 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5642 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5643 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5644 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5645 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5646 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5649 echo "CONFIG_POSIX=y" >> $config_host_mak
5652 if test "$linux" = "yes" ; then
5653 echo "CONFIG_LINUX=y" >> $config_host_mak
5656 if test "$darwin" = "yes" ; then
5657 echo "CONFIG_DARWIN=y" >> $config_host_mak
5660 if test "$solaris" = "yes" ; then
5661 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5663 if test "$haiku" = "yes" ; then
5664 echo "CONFIG_HAIKU=y" >> $config_host_mak
5666 if test "$static" = "yes" ; then
5667 echo "CONFIG_STATIC=y" >> $config_host_mak
5669 if test "$profiler" = "yes" ; then
5670 echo "CONFIG_PROFILER=y" >> $config_host_mak
5672 if test "$slirp" = "yes" ; then
5673 echo "CONFIG_SLIRP=y" >> $config_host_mak
5674 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5676 if test "$vde" = "yes" ; then
5677 echo "CONFIG_VDE=y" >> $config_host_mak
5678 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
5680 if test "$netmap" = "yes" ; then
5681 echo "CONFIG_NETMAP=y" >> $config_host_mak
5683 if test "$l2tpv3" = "yes" ; then
5684 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5686 if test "$cap_ng" = "yes" ; then
5687 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5689 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5690 for drv
in $audio_drv_list; do
5691 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5692 echo "$def=y" >> $config_host_mak
5694 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
5695 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
5696 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
5697 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
5698 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
5699 if test "$audio_pt_int" = "yes" ; then
5700 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5702 if test "$audio_win_int" = "yes" ; then
5703 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5705 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5706 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5707 if test "$vnc" = "yes" ; then
5708 echo "CONFIG_VNC=y" >> $config_host_mak
5710 if test "$vnc_sasl" = "yes" ; then
5711 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5713 if test "$vnc_jpeg" = "yes" ; then
5714 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5716 if test "$vnc_png" = "yes" ; then
5717 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5719 if test "$xkbcommon" = "yes" ; then
5720 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
5721 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
5723 if test "$fnmatch" = "yes" ; then
5724 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5726 if test "$xfs" = "yes" ; then
5727 echo "CONFIG_XFS=y" >> $config_host_mak
5729 qemu_version
=$
(head $source_path/VERSION
)
5730 echo "VERSION=$qemu_version" >>$config_host_mak
5731 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5732 echo "SRC_PATH=$source_path" >> $config_host_mak
5733 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5734 if [ "$docs" = "yes" ] ; then
5735 echo "BUILD_DOCS=yes" >> $config_host_mak
5737 if test "$modules" = "yes"; then
5738 # $shacmd can generate a hash started with digit, which the compiler doesn't
5739 # like as an symbol. So prefix it with an underscore
5740 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5741 echo "CONFIG_MODULES=y" >> $config_host_mak
5743 if test "$sdl" = "yes" ; then
5744 echo "CONFIG_SDL=y" >> $config_host_mak
5745 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5746 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5747 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
5749 if test "$cocoa" = "yes" ; then
5750 echo "CONFIG_COCOA=y" >> $config_host_mak
5752 if test "$curses" = "yes" ; then
5753 echo "CONFIG_CURSES=y" >> $config_host_mak
5755 if test "$pipe2" = "yes" ; then
5756 echo "CONFIG_PIPE2=y" >> $config_host_mak
5758 if test "$accept4" = "yes" ; then
5759 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5761 if test "$splice" = "yes" ; then
5762 echo "CONFIG_SPLICE=y" >> $config_host_mak
5764 if test "$eventfd" = "yes" ; then
5765 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5767 if test "$memfd" = "yes" ; then
5768 echo "CONFIG_MEMFD=y" >> $config_host_mak
5770 if test "$fallocate" = "yes" ; then
5771 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5773 if test "$fallocate_punch_hole" = "yes" ; then
5774 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5776 if test "$fallocate_zero_range" = "yes" ; then
5777 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5779 if test "$posix_fallocate" = "yes" ; then
5780 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5782 if test "$sync_file_range" = "yes" ; then
5783 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5785 if test "$fiemap" = "yes" ; then
5786 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5788 if test "$dup3" = "yes" ; then
5789 echo "CONFIG_DUP3=y" >> $config_host_mak
5791 if test "$ppoll" = "yes" ; then
5792 echo "CONFIG_PPOLL=y" >> $config_host_mak
5794 if test "$prctl_pr_set_timerslack" = "yes" ; then
5795 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5797 if test "$epoll" = "yes" ; then
5798 echo "CONFIG_EPOLL=y" >> $config_host_mak
5800 if test "$epoll_create1" = "yes" ; then
5801 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5803 if test "$sendfile" = "yes" ; then
5804 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5806 if test "$timerfd" = "yes" ; then
5807 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5809 if test "$setns" = "yes" ; then
5810 echo "CONFIG_SETNS=y" >> $config_host_mak
5812 if test "$clock_adjtime" = "yes" ; then
5813 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5815 if test "$syncfs" = "yes" ; then
5816 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5818 if test "$inotify" = "yes" ; then
5819 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5821 if test "$inotify1" = "yes" ; then
5822 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5824 if test "$sem_timedwait" = "yes" ; then
5825 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
5827 if test "$byteswap_h" = "yes" ; then
5828 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5830 if test "$bswap_h" = "yes" ; then
5831 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5833 if test "$curl" = "yes" ; then
5834 echo "CONFIG_CURL=m" >> $config_host_mak
5835 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5836 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5838 if test "$brlapi" = "yes" ; then
5839 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5840 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
5842 if test "$bluez" = "yes" ; then
5843 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5844 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5846 if test "$glib_subprocess" = "yes" ; then
5847 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5849 if test "$gtk" = "yes" ; then
5850 echo "CONFIG_GTK=y" >> $config_host_mak
5851 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5852 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5853 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5854 if test "$gtk_gl" = "yes" ; then
5855 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5858 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5859 if test "$gnutls" = "yes" ; then
5860 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5862 if test "$gnutls_rnd" = "yes" ; then
5863 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5865 if test "$gcrypt" = "yes" ; then
5866 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5867 if test "$gcrypt_hmac" = "yes" ; then
5868 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5870 if test "$gcrypt_kdf" = "yes" ; then
5871 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5874 if test "$nettle" = "yes" ; then
5875 echo "CONFIG_NETTLE=y" >> $config_host_mak
5876 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5877 if test "$nettle_kdf" = "yes" ; then
5878 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5881 if test "$tasn1" = "yes" ; then
5882 echo "CONFIG_TASN1=y" >> $config_host_mak
5884 if test "$have_ifaddrs_h" = "yes" ; then
5885 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5887 if test "$have_broken_size_max" = "yes" ; then
5888 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5891 # Work around a system header bug with some kernel/XFS header
5892 # versions where they both try to define 'struct fsxattr':
5893 # xfs headers will not try to redefine structs from linux headers
5894 # if this macro is set.
5895 if test "$have_fsxattr" = "yes" ; then
5896 echo "HAVE_FSXATTR=y" >> $config_host_mak
5898 if test "$vte" = "yes" ; then
5899 echo "CONFIG_VTE=y" >> $config_host_mak
5900 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5902 if test "$virglrenderer" = "yes" ; then
5903 echo "CONFIG_VIRGL=y" >> $config_host_mak
5904 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5905 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5907 if test "$xen" = "yes" ; then
5908 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5909 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5910 if test "$xen_pv_domain_build" = "yes" ; then
5911 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5914 if test "$linux_aio" = "yes" ; then
5915 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5917 if test "$attr" = "yes" ; then
5918 echo "CONFIG_ATTR=y" >> $config_host_mak
5920 if test "$libattr" = "yes" ; then
5921 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5923 if test "$virtfs" = "yes" ; then
5924 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5926 if test "$mpath" = "yes" ; then
5927 echo "CONFIG_MPATH=y" >> $config_host_mak
5929 if test "$vhost_scsi" = "yes" ; then
5930 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5932 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
5933 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5935 if test "$vhost_vsock" = "yes" ; then
5936 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5938 if test "$vhost_user" = "yes" ; then
5939 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
5941 if test "$blobs" = "yes" ; then
5942 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5944 if test "$iovec" = "yes" ; then
5945 echo "CONFIG_IOVEC=y" >> $config_host_mak
5947 if test "$preadv" = "yes" ; then
5948 echo "CONFIG_PREADV=y" >> $config_host_mak
5950 if test "$fdt" = "yes" ; then
5951 echo "CONFIG_FDT=y" >> $config_host_mak
5953 if test "$signalfd" = "yes" ; then
5954 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5956 if test "$tcg" = "yes"; then
5957 echo "CONFIG_TCG=y" >> $config_host_mak
5958 if test "$tcg_interpreter" = "yes" ; then
5959 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5962 if test "$fdatasync" = "yes" ; then
5963 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5965 if test "$madvise" = "yes" ; then
5966 echo "CONFIG_MADVISE=y" >> $config_host_mak
5968 if test "$posix_madvise" = "yes" ; then
5969 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5972 if test "$spice" = "yes" ; then
5973 echo "CONFIG_SPICE=y" >> $config_host_mak
5976 if test "$smartcard" = "yes" ; then
5977 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5978 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
5979 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
5982 if test "$libusb" = "yes" ; then
5983 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5984 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
5985 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
5988 if test "$usb_redir" = "yes" ; then
5989 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5990 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
5991 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
5994 if test "$opengl" = "yes" ; then
5995 echo "CONFIG_OPENGL=y" >> $config_host_mak
5996 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5997 if test "$opengl_dmabuf" = "yes" ; then
5998 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6002 if test "$avx2_opt" = "yes" ; then
6003 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6006 if test "$lzo" = "yes" ; then
6007 echo "CONFIG_LZO=y" >> $config_host_mak
6010 if test "$snappy" = "yes" ; then
6011 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6014 if test "$bzip2" = "yes" ; then
6015 echo "CONFIG_BZIP2=y" >> $config_host_mak
6016 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6019 if test "$libiscsi" = "yes" ; then
6020 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6021 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6022 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6025 if test "$libnfs" = "yes" ; then
6026 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6027 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6030 if test "$seccomp" = "yes"; then
6031 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6032 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6033 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6036 # XXX: suppress that
6037 if [ "$bsd" = "yes" ] ; then
6038 echo "CONFIG_BSD=y" >> $config_host_mak
6041 if test "$localtime_r" = "yes" ; then
6042 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6044 if test "$qom_cast_debug" = "yes" ; then
6045 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6047 if test "$rbd" = "yes" ; then
6048 echo "CONFIG_RBD=m" >> $config_host_mak
6049 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6050 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6053 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6054 if test "$coroutine_pool" = "yes" ; then
6055 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6057 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6060 if test "$debug_stack_usage" = "yes" ; then
6061 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6064 if test "$crypto_afalg" = "yes" ; then
6065 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6068 if test "$open_by_handle_at" = "yes" ; then
6069 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6072 if test "$linux_magic_h" = "yes" ; then
6073 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6076 if test "$pragma_diagnostic_available" = "yes" ; then
6077 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6080 if test "$valgrind_h" = "yes" ; then
6081 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6084 if test "$has_environ" = "yes" ; then
6085 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6088 if test "$cpuid_h" = "yes" ; then
6089 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6092 if test "$int128" = "yes" ; then
6093 echo "CONFIG_INT128=y" >> $config_host_mak
6096 if test "$atomic128" = "yes" ; then
6097 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6100 if test "$atomic64" = "yes" ; then
6101 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6104 if test "$getauxval" = "yes" ; then
6105 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6108 if test "$glusterfs" = "yes" ; then
6109 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6110 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6111 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6114 if test "$glusterfs_xlator_opt" = "yes" ; then
6115 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6118 if test "$glusterfs_discard" = "yes" ; then
6119 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6122 if test "$glusterfs_fallocate" = "yes" ; then
6123 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6126 if test "$glusterfs_zerofill" = "yes" ; then
6127 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6130 if test "$libssh2" = "yes" ; then
6131 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6132 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6133 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6136 if test "$live_block_migration" = "yes" ; then
6137 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6140 if test "$tpm" = "yes"; then
6141 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6142 # TPM passthrough support?
6143 if test "$tpm_passthrough" = "yes"; then
6144 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6146 # TPM emulator support?
6147 if test "$tpm_emulator" = "yes"; then
6148 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6152 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6153 if have_backend
"nop"; then
6154 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6156 if have_backend
"simple"; then
6157 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6158 # Set the appropriate trace file.
6159 trace_file
="\"$trace_file-\" FMT_pid"
6161 if have_backend
"log"; then
6162 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6164 if have_backend
"ust"; then
6165 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6167 if have_backend
"dtrace"; then
6168 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6169 if test "$trace_backend_stap" = "yes" ; then
6170 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6173 if have_backend
"ftrace"; then
6174 if test "$linux" = "yes" ; then
6175 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6177 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6180 if have_backend
"syslog"; then
6181 if test "$posix_syslog" = "yes" ; then
6182 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6184 feature_not_found
"syslog(trace backend)" "syslog not available"
6187 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6189 if test "$rdma" = "yes" ; then
6190 echo "CONFIG_RDMA=y" >> $config_host_mak
6191 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6194 if test "$have_rtnetlink" = "yes" ; then
6195 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6198 if test "$replication" = "yes" ; then
6199 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6202 if test "$have_af_vsock" = "yes" ; then
6203 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6206 if test "$have_sysmacros" = "yes" ; then
6207 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6210 if test "$have_static_assert" = "yes" ; then
6211 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6214 if test "$have_utmpx" = "yes" ; then
6215 echo "HAVE_UTMPX=y" >> $config_host_mak
6218 if test "$ivshmem" = "yes" ; then
6219 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6221 if test "$capstone" != "no" ; then
6222 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6225 # Hold two types of flag:
6226 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6227 # a thread we have a handle to
6228 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6230 if test "$pthread_setname_np" = "yes" ; then
6231 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6232 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6235 if test "$vxhs" = "yes" ; then
6236 echo "CONFIG_VXHS=y" >> $config_host_mak
6237 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6240 if test "$tcg_interpreter" = "yes"; then
6241 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6242 elif test "$ARCH" = "sparc64" ; then
6243 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6244 elif test "$ARCH" = "s390x" ; then
6245 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6246 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6247 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6248 elif test "$ARCH" = "ppc64" ; then
6249 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6251 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6253 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6255 echo "TOOLS=$tools" >> $config_host_mak
6256 echo "ROMS=$roms" >> $config_host_mak
6257 echo "MAKE=$make" >> $config_host_mak
6258 echo "INSTALL=$install" >> $config_host_mak
6259 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6260 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6261 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6262 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6263 echo "PYTHON=$python" >> $config_host_mak
6264 echo "CC=$cc" >> $config_host_mak
6265 if $iasl -h > /dev
/null
2>&1; then
6266 echo "IASL=$iasl" >> $config_host_mak
6268 echo "CC_I386=$cc_i386" >> $config_host_mak
6269 echo "HOST_CC=$host_cc" >> $config_host_mak
6270 echo "CXX=$cxx" >> $config_host_mak
6271 echo "OBJCC=$objcc" >> $config_host_mak
6272 echo "AR=$ar" >> $config_host_mak
6273 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6274 echo "AS=$as" >> $config_host_mak
6275 echo "CCAS=$ccas" >> $config_host_mak
6276 echo "CPP=$cpp" >> $config_host_mak
6277 echo "OBJCOPY=$objcopy" >> $config_host_mak
6278 echo "LD=$ld" >> $config_host_mak
6279 echo "NM=$nm" >> $config_host_mak
6280 echo "WINDRES=$windres" >> $config_host_mak
6281 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6282 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6283 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6284 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6285 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6286 if test "$sparse" = "yes" ; then
6287 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6288 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6289 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6290 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6291 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6293 if test "$cross_prefix" != ""; then
6294 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6296 echo "AUTOCONF_HOST := " >> $config_host_mak
6298 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6299 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6300 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6301 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6302 echo "LIBS+=$LIBS" >> $config_host_mak
6303 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6304 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6305 echo "EXESUF=$EXESUF" >> $config_host_mak
6306 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6307 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6308 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6309 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6310 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6311 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6312 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6313 if test "$gcov" = "yes" ; then
6314 echo "CONFIG_GCOV=y" >> $config_host_mak
6315 echo "GCOV=$gcov_tool" >> $config_host_mak
6318 # use included Linux headers
6319 if test "$linux" = "yes" ; then
6320 mkdir
-p linux-headers
6338 # For most CPUs the kernel architecture name and QEMU CPU name match.
6342 # For non-KVM architectures we will not have asm headers
6343 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6344 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
6348 for target
in $target_list; do
6349 target_dir
="$target"
6350 config_target_mak
=$target_dir/config-target.mak
6351 target_name
=$
(echo $target | cut
-d '-' -f 1)
6352 target_bigendian
="no"
6354 case "$target_name" in
6355 armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
6356 target_bigendian
=yes
6360 target_user_only
="no"
6361 target_linux_user
="no"
6362 target_bsd_user
="no"
6364 ${target_name}-softmmu)
6365 target_softmmu
="yes"
6367 ${target_name}-linux-user)
6368 target_user_only
="yes"
6369 target_linux_user
="yes"
6371 ${target_name}-bsd-user)
6372 target_user_only
="yes"
6373 target_bsd_user
="yes"
6376 error_exit
"Target '$target' not recognised"
6381 mkdir
-p $target_dir
6382 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6386 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
6389 TARGET_ARCH
="$target_name"
6393 case "$target_name" in
6395 gdb_xml_files
="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
6398 TARGET_BASE_ARCH
=i386
6399 gdb_xml_files
="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
6408 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6411 TARGET_BASE_ARCH
=arm
6414 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6424 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
6426 microblaze|microblazeel
)
6427 TARGET_ARCH
=microblaze
6432 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6436 TARGET_BASE_ARCH
=mips
6437 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6438 echo "TARGET_ABI32=y" >> $config_target_mak
6442 TARGET_BASE_ARCH
=mips
6443 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6450 TARGET_ARCH
=openrisc
6451 TARGET_BASE_ARCH
=openrisc
6454 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6457 TARGET_BASE_ARCH
=ppc
6459 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6462 TARGET_BASE_ARCH
=ppc
6465 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6469 TARGET_BASE_ARCH
=ppc
6472 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6476 TARGET_BASE_ARCH
=ppc
6478 echo "TARGET_ABI32=y" >> $config_target_mak
6479 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6488 TARGET_BASE_ARCH
=sparc
6492 TARGET_BASE_ARCH
=sparc
6493 TARGET_ABI_DIR
=sparc
6494 echo "TARGET_ABI32=y" >> $config_target_mak
6497 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
6509 error_exit
"Unsupported target CPU"
6512 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6513 if [ "$TARGET_BASE_ARCH" = "" ]; then
6514 TARGET_BASE_ARCH
=$TARGET_ARCH
6517 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
6520 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
6523 target_arch_name
="$(upper $TARGET_ARCH)"
6524 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6525 echo "TARGET_NAME=$target_name" >> $config_target_mak
6526 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6527 if [ "$TARGET_ABI_DIR" = "" ]; then
6528 TARGET_ABI_DIR
=$TARGET_ARCH
6530 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6531 if [ "$HOST_VARIANT_DIR" != "" ]; then
6532 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6535 if supported_xen_target
$target; then
6536 echo "CONFIG_XEN=y" >> $config_target_mak
6537 if test "$xen_pci_passthrough" = yes; then
6538 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6541 if supported_kvm_target
$target; then
6542 echo "CONFIG_KVM=y" >> $config_target_mak
6543 if test "$vhost_net" = "yes" ; then
6544 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6545 if test "$vhost_user" = "yes" ; then
6546 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6550 if supported_hax_target
$target; then
6551 echo "CONFIG_HAX=y" >> $config_target_mak
6553 if test "$target_bigendian" = "yes" ; then
6554 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6556 if test "$target_softmmu" = "yes" ; then
6557 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6558 if test "$mttcg" = "yes" ; then
6559 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6562 if test "$target_user_only" = "yes" ; then
6563 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6564 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6566 if test "$target_linux_user" = "yes" ; then
6567 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6570 if test ! -z "$gdb_xml_files" ; then
6571 for x
in $gdb_xml_files; do
6572 list
="$list $source_path/gdb-xml/$x"
6574 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6577 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6578 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6580 if test "$target_bsd_user" = "yes" ; then
6581 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6584 # generate QEMU_CFLAGS/LDFLAGS for targets
6590 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6591 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6594 for i
in $ARCH $TARGET_BASE_ARCH ; do
6597 disas_config
"ALPHA"
6600 if test -n "${cxx}"; then
6601 disas_config
"ARM_A64"
6606 if test -n "${cxx}"; then
6607 disas_config
"ARM_A64"
6626 disas_config
"MICROBLAZE"
6632 disas_config
"MOXIE"
6635 disas_config
"NIOS2"
6638 disas_config
"OPENRISC"
6650 disas_config
"SPARC"
6653 disas_config
"XTENSA"
6657 if test "$tcg_interpreter" = "yes" ; then
6663 # Ensure there's only a single GP
6664 cflags
="-msmall-data $cflags"
6668 if test "$gprof" = "yes" ; then
6669 echo "TARGET_GPROF=yes" >> $config_target_mak
6670 if test "$target_linux_user" = "yes" ; then
6672 ldflags
="-p $ldflags"
6674 if test "$target_softmmu" = "yes" ; then
6675 ldflags
="-p $ldflags"
6676 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6680 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6681 ldflags
="$ldflags $textseg_ldflags"
6684 # Newer kernels on s390 check for an S390_PGSTE program header and
6685 # enable the pgste page table extensions in that case. This makes
6686 # the vm.allocate_pgste sysctl unnecessary. We enable this program
6688 # - we build on s390x
6689 # - we build the system emulation for s390x (qemu-system-s390x)
6691 # - the linker supports --s390-pgste
6692 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
6693 if ld_has
--s390-pgste ; then
6694 ldflags
="-Wl,--s390-pgste $ldflags"
6698 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6699 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6701 done # for target in $targets
6703 if [ "$dtc_internal" = "yes" ]; then
6704 echo "config-host.h: subdir-dtc" >> $config_host_mak
6706 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
6707 echo "config-host.h: subdir-capstone" >> $config_host_mak
6709 if test -n "$LIBCAPSTONE"; then
6710 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
6713 if test "$numa" = "yes"; then
6714 echo "CONFIG_NUMA=y" >> $config_host_mak
6717 if test "$ccache_cpp2" = "yes"; then
6718 echo "export CCACHE_CPP2=y" >> $config_host_mak
6721 # build tree in object directory in case the source is not in the current directory
6722 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
6723 DIRS
="$DIRS docs docs/interop fsdev scsi"
6724 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6725 DIRS
="$DIRS roms/seabios roms/vgabios"
6726 DIRS
="$DIRS qapi-generated"
6727 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6728 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6729 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6730 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6731 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6732 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6733 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6734 FILES
="$FILES pc-bios/qemu-icon.bmp"
6735 FILES
="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
6737 $source_path/pc-bios
/*.bin \
6738 $source_path/pc-bios
/*.lid \
6739 $source_path/pc-bios
/*.aml \
6740 $source_path/pc-bios
/*.rom \
6741 $source_path/pc-bios
/*.dtb \
6742 $source_path/pc-bios
/*.img \
6743 $source_path/pc-bios
/openbios-
* \
6744 $source_path/pc-bios
/u-boot.
* \
6745 $source_path/pc-bios
/palcode-
*
6747 FILES
="$FILES pc-bios/$(basename $bios_file)"
6749 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6751 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6754 for f
in $FILES ; do
6755 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6756 symlink
"$source_path/$f" "$f"
6760 # temporary config to build submodules
6761 for rom
in seabios vgabios
; do
6762 config_mak
=roms
/$rom/config.mak
6763 echo "# Automatically generated by configure - do not modify" > $config_mak
6764 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6765 echo "AS=$as" >> $config_mak
6766 echo "CCAS=$ccas" >> $config_mak
6767 echo "CC=$cc" >> $config_mak
6768 echo "BCC=bcc" >> $config_mak
6769 echo "CPP=$cpp" >> $config_mak
6770 echo "OBJCOPY=objcopy" >> $config_mak
6771 echo "IASL=$iasl" >> $config_mak
6772 echo "LD=$ld" >> $config_mak
6775 # set up tests data directory
6776 if [ ! -e tests
/data
]; then
6777 symlink
"$source_path/tests/data" tests
/data
6780 # set up qemu-iotests in this build directory
6781 iotests_common_env
="tests/qemu-iotests/common.env"
6782 iotests_check
="tests/qemu-iotests/check"
6784 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6785 echo >> "$iotests_common_env"
6786 echo "export PYTHON='$python'" >> "$iotests_common_env"
6788 if [ ! -e "$iotests_check" ]; then
6789 symlink
"$source_path/$iotests_check" "$iotests_check"
6792 # Save the configure command line for later reuse.
6793 cat <<EOD >config.status
6795 # Generated by configure.
6796 # Run this file to recreate the current configuration.
6797 # Compiler output produced by configure, useful for debugging
6798 # configure, is in config.log if it exists.
6800 printf "exec" >>config.status
6801 printf " '%s'" "$0" "$@" >>config.status
6802 echo ' "$@"' >>config.status
6803 chmod +x config.status