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"
271 git_submodules
="ui/keycodemapdb"
278 # Don't accept a target_list environment variable.
281 # Default value for a variable defining feature "foo".
282 # * foo="no" feature will only be used if --enable-foo arg is given
283 # * foo="" feature will be searched for, and if found, will be used
284 # unless --disable-foo is given
285 # * foo="yes" this value will only be set by --enable-foo flag.
286 # feature will searched for,
287 # if not found, configure exits with error
289 # Always add --enable-foo and --disable-foo command line args.
290 # Distributions want to ensure that several features are compiled in, and it
291 # is impossible without a --enable-foo that exits if a feature is not found.
313 xen_pv_domain_build
="no"
314 xen_pci_passthrough
=""
341 LDFLAGS_SHARED
="-shared"
344 mandir
="\${prefix}/share/man"
345 datadir
="\${prefix}/share"
346 firmwarepath
="\${prefix}/share/qemu-firmware"
347 qemu_docdir
="\${prefix}/share/doc/qemu"
348 bindir
="\${prefix}/bin"
349 libdir
="\${prefix}/lib"
350 libexecdir
="\${prefix}/libexec"
351 includedir
="\${prefix}/include"
352 sysconfdir
="\${prefix}/etc"
353 local_statedir
="\${prefix}/var"
386 guest_agent_with_vss
="no"
387 guest_agent_ntddscsi
="no"
396 debug_stack_usage
="no"
400 glusterfs_xlator_opt
="no"
401 glusterfs_discard
="no"
402 glusterfs_fallocate
="no"
403 glusterfs_zerofill
="no"
407 tls_priority
="NORMAL"
419 live_block_migration
="yes"
430 # parse CC options first
432 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
434 --cross-prefix=*) cross_prefix
="$optarg"
438 --cxx=*) CXX
="$optarg"
440 --source-path=*) source_path
="$optarg"
442 --cpu=*) cpu
="$optarg"
444 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
445 EXTRA_CFLAGS
="$optarg"
447 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
448 EXTRA_CXXFLAGS
="$optarg"
450 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
451 EXTRA_LDFLAGS
="$optarg"
453 --enable-debug-info) debug_info
="yes"
455 --disable-debug-info) debug_info
="no"
460 # Using uname is really, really broken. Once we have the right set of checks
461 # we can eliminate its usage altogether.
463 # Preferred compiler:
465 # ${cross_prefix}gcc (if cross-prefix specified)
467 if test -z "${CC}${cross_prefix}"; then
470 cc
="${CC-${cross_prefix}gcc}"
473 if test -z "${CXX}${cross_prefix}"; then
476 cxx
="${CXX-${cross_prefix}g++}"
479 ar="${AR-${cross_prefix}ar}"
480 as
="${AS-${cross_prefix}as}"
483 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
484 ld
="${LD-${cross_prefix}ld}"
485 ranlib
="${RANLIB-${cross_prefix}ranlib}"
486 nm
="${NM-${cross_prefix}nm}"
487 strip
="${STRIP-${cross_prefix}strip}"
488 windres
="${WINDRES-${cross_prefix}windres}"
489 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
491 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
493 pkg_config
=query_pkg_config
494 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
495 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
497 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
498 ARFLAGS
="${ARFLAGS-rv}"
500 # default flags for all hosts
501 # We use -fwrapv to tell the compiler that we require a C dialect where
502 # left shift of signed integers is well defined and has the expected
503 # 2s-complement style results. (Both clang and gcc agree that it
504 # provides these semantics.)
505 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
506 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
507 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
508 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
509 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include"
510 if test "$debug_info" = "yes"; then
512 LDFLAGS
="-g $LDFLAGS"
515 # make source path absolute
516 source_path
=$
(cd "$source_path"; pwd)
518 # running configure in the source tree?
519 # we know that's the case if configure is there.
520 if test -f "./configure"; then
521 pwd_is_source_path
="y"
523 pwd_is_source_path
="n"
529 #error $1 not defined
531 int main(void) { return 0; }
539 int main(void) { return 0; }
546 int main(void) { return 0; }
550 if check_define __linux__
; then
552 elif check_define _WIN32
; then
554 elif check_define __OpenBSD__
; then
556 elif check_define __sun__
; then
558 elif check_define __HAIKU__
; then
560 elif check_define __FreeBSD__
; then
562 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
563 targetos
='GNU/kFreeBSD'
564 elif check_define __DragonFly__
; then
566 elif check_define __NetBSD__
; then
568 elif check_define __APPLE__
; then
571 # This is a fatal error, but don't report it yet, because we
572 # might be going to just print the --help text, or it might
573 # be the result of a missing compiler.
578 # Some host OSes need non-standard checks for which CPU to use.
579 # Note that these checks are broken for cross-compilation: if you're
580 # cross-compiling to one of these OSes then you'll need to specify
581 # the correct CPU with the --cpu option.
584 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
585 # run 64-bit userspace code.
586 # If the user didn't specify a CPU explicitly and the kernel says this is
587 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
588 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
593 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
594 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
599 if test ! -z "$cpu" ; then
600 # command line argument
602 elif check_define __i386__
; then
604 elif check_define __x86_64__
; then
605 if check_define __ILP32__
; then
610 elif check_define __sparc__
; then
611 if check_define __arch64__
; then
616 elif check_define _ARCH_PPC
; then
617 if check_define _ARCH_PPC64
; then
622 elif check_define __mips__
; then
624 elif check_define __ia64__
; then
626 elif check_define __s390__
; then
627 if check_define __s390x__
; then
632 elif check_define __arm__
; then
634 elif check_define __aarch64__
; then
641 # Normalise host CPU name and set ARCH.
642 # Note that this case should only have supported host CPUs, not guests.
644 ppc|ppc64|s390|s390x|sparc64|x32
)
648 i386|i486|i586|i686|i86pc|BePC
)
673 # This will result in either an error or falling back to TCI later
677 if test -z "$ARCH"; then
683 # host *BSD for user mode
690 audio_possible_drivers
="dsound sdl"
691 if check_include dsound.h
; then
692 audio_drv_list
="dsound"
701 audio_possible_drivers
="oss sdl pa"
707 audio_possible_drivers
="oss sdl pa"
708 # needed for kinfo_getvmmap(3) in libutil.h
710 # needed for kinfo_getproc
711 libs_qga
="-lutil $libs_qga"
712 netmap
="" # enable netmap autodetect
713 HOST_VARIANT_DIR
="freebsd"
720 audio_possible_drivers
="oss sdl pa"
721 HOST_VARIANT_DIR
="dragonfly"
727 audio_possible_drivers
="oss sdl"
729 HOST_VARIANT_DIR
="netbsd"
736 audio_possible_drivers
="sdl"
737 HOST_VARIANT_DIR
="openbsd"
743 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
744 if [ "$cpu" = "x86_64" ] ; then
745 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
746 LDFLAGS
="-arch x86_64 $LDFLAGS"
749 audio_drv_list
="coreaudio"
750 audio_possible_drivers
="coreaudio sdl"
751 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
752 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
753 # Disable attempts to use ObjectiveC features in os/object.h since they
754 # won't work when we're compiling with gcc as a C compiler.
755 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
756 HOST_VARIANT_DIR
="darwin"
762 install="${INSTALL-ginstall}"
763 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
764 if test -f /usr
/include
/sys
/soundcard.h
; then
767 audio_possible_drivers
="oss sdl"
768 # needed for CMSG_ macros in sys/socket.h
769 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
770 # needed for TIOCWIN* defines in termios.h
771 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
772 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
773 solarisnetlibs
="-lsocket -lnsl -lresolv"
774 LIBS
="$solarisnetlibs $LIBS"
775 libs_qga
="$solarisnetlibs $libs_qga"
779 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
780 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
784 audio_possible_drivers
="oss alsa sdl pa"
791 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
796 if [ "$bsd" = "yes" ] ; then
797 if [ "$darwin" != "yes" ] ; then
802 : ${make=${MAKE-make}}
803 : ${install=${INSTALL-install}}
804 : ${python=${PYTHON-python}}
805 : ${smbd=${SMBD-/usr/sbin/smbd}}
807 # Default objcc to clang if available, otherwise use CC
814 if test "$mingw32" = "yes" ; then
817 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
818 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
819 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
820 # MinGW needs -mthreads for TLS and macro _MT.
821 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
822 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
824 if compile_prog
"" "-liberty" ; then
825 LIBS
="-liberty $LIBS"
827 prefix
="c:/Program Files/QEMU"
830 qemu_docdir
="\${prefix}"
832 sysconfdir
="\${prefix}"
835 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
841 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
843 --help|
-h) show_help
=yes
845 --version|
-V) exec cat $source_path/VERSION
847 --prefix=*) prefix
="$optarg"
849 --interp-prefix=*) interp_prefix
="$optarg"
857 --host-cc=*) host_cc
="$optarg"
861 --iasl=*) iasl
="$optarg"
863 --objcc=*) objcc
="$optarg"
865 --make=*) make="$optarg"
867 --install=*) install="$optarg"
869 --python=*) python
="$optarg"
871 --gcov=*) gcov_tool
="$optarg"
873 --smbd=*) smbd
="$optarg"
883 --disable-debug-info)
893 --target-list=*) target_list
="$optarg"
895 --enable-trace-backends=*) trace_backends
="$optarg"
897 # XXX: backwards compatibility
898 --enable-trace-backend=*) trace_backends
="$optarg"
900 --with-trace-file=*) trace_file
="$optarg"
902 --enable-gprof) gprof
="yes"
904 --enable-gcov) gcov
="yes"
908 LDFLAGS
="-static $LDFLAGS"
909 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
911 --mandir=*) mandir
="$optarg"
913 --bindir=*) bindir
="$optarg"
915 --libdir=*) libdir
="$optarg"
917 --libexecdir=*) libexecdir
="$optarg"
919 --includedir=*) includedir
="$optarg"
921 --datadir=*) datadir
="$optarg"
923 --with-confsuffix=*) confsuffix
="$optarg"
925 --docdir=*) qemu_docdir
="$optarg"
927 --sysconfdir=*) sysconfdir
="$optarg"
929 --localstatedir=*) local_statedir
="$optarg"
931 --firmwarepath=*) firmwarepath
="$optarg"
933 --sbindir=*|
--sharedstatedir=*|\
934 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
935 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
936 # These switches are silently ignored, for compatibility with
937 # autoconf-generated configure scripts. This allows QEMU's
938 # configure to be used by RPM and similar macros that set
939 # lots of directory switches by default.
941 --disable-sdl) sdl
="no"
943 --enable-sdl) sdl
="yes"
945 --with-sdlabi=*) sdlabi
="$optarg"
947 --disable-qom-cast-debug) qom_cast_debug
="no"
949 --enable-qom-cast-debug) qom_cast_debug
="yes"
951 --disable-virtfs) virtfs
="no"
953 --enable-virtfs) virtfs
="yes"
955 --disable-mpath) mpath
="no"
957 --enable-mpath) mpath
="yes"
959 --disable-vnc) vnc
="no"
961 --enable-vnc) vnc
="yes"
963 --oss-lib=*) oss_lib
="$optarg"
965 --audio-drv-list=*) audio_drv_list
="$optarg"
967 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
969 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
971 --enable-debug-tcg) debug_tcg
="yes"
973 --disable-debug-tcg) debug_tcg
="no"
976 # Enable debugging options that aren't excessively noisy
982 --enable-sparse) sparse
="yes"
984 --disable-sparse) sparse
="no"
986 --disable-strip) strip_opt
="no"
988 --disable-vnc-sasl) vnc_sasl
="no"
990 --enable-vnc-sasl) vnc_sasl
="yes"
992 --disable-vnc-jpeg) vnc_jpeg
="no"
994 --enable-vnc-jpeg) vnc_jpeg
="yes"
996 --disable-vnc-png) vnc_png
="no"
998 --enable-vnc-png) vnc_png
="yes"
1000 --disable-slirp) slirp
="no"
1002 --disable-vde) vde
="no"
1004 --enable-vde) vde
="yes"
1006 --disable-netmap) netmap
="no"
1008 --enable-netmap) netmap
="yes"
1010 --disable-xen) xen
="no"
1012 --enable-xen) xen
="yes"
1014 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1016 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1018 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
1020 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
1022 --disable-brlapi) brlapi
="no"
1024 --enable-brlapi) brlapi
="yes"
1026 --disable-bluez) bluez
="no"
1028 --enable-bluez) bluez
="yes"
1030 --disable-kvm) kvm
="no"
1032 --enable-kvm) kvm
="yes"
1034 --disable-hax) hax
="no"
1036 --enable-hax) hax
="yes"
1038 --disable-tcg-interpreter) tcg_interpreter
="no"
1040 --enable-tcg-interpreter) tcg_interpreter
="yes"
1042 --disable-cap-ng) cap_ng
="no"
1044 --enable-cap-ng) cap_ng
="yes"
1046 --disable-tcg) tcg
="no"
1048 --enable-tcg) tcg
="yes"
1050 --disable-spice) spice
="no"
1052 --enable-spice) spice
="yes"
1054 --disable-libiscsi) libiscsi
="no"
1056 --enable-libiscsi) libiscsi
="yes"
1058 --disable-libnfs) libnfs
="no"
1060 --enable-libnfs) libnfs
="yes"
1062 --enable-profiler) profiler
="yes"
1064 --disable-cocoa) cocoa
="no"
1068 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1070 --disable-system) softmmu
="no"
1072 --enable-system) softmmu
="yes"
1079 --disable-linux-user) linux_user
="no"
1081 --enable-linux-user) linux_user
="yes"
1083 --disable-bsd-user) bsd_user
="no"
1085 --enable-bsd-user) bsd_user
="yes"
1087 --enable-pie) pie
="yes"
1089 --disable-pie) pie
="no"
1091 --enable-werror) werror
="yes"
1093 --disable-werror) werror
="no"
1095 --enable-stack-protector) stack_protector
="yes"
1097 --disable-stack-protector) stack_protector
="no"
1099 --disable-curses) curses
="no"
1101 --enable-curses) curses
="yes"
1103 --disable-curl) curl
="no"
1105 --enable-curl) curl
="yes"
1107 --disable-fdt) fdt
="no"
1109 --enable-fdt) fdt
="yes"
1111 --disable-linux-aio) linux_aio
="no"
1113 --enable-linux-aio) linux_aio
="yes"
1115 --disable-attr) attr
="no"
1117 --enable-attr) attr
="yes"
1119 --disable-blobs) blobs
="no"
1121 --with-pkgversion=*) pkgversion
=" ($optarg)"
1123 --with-coroutine=*) coroutine
="$optarg"
1125 --disable-coroutine-pool) coroutine_pool
="no"
1127 --enable-coroutine-pool) coroutine_pool
="yes"
1129 --enable-debug-stack-usage) debug_stack_usage
="yes"
1131 --enable-crypto-afalg) crypto_afalg
="yes"
1133 --disable-crypto-afalg) crypto_afalg
="no"
1135 --disable-docs) docs
="no"
1137 --enable-docs) docs
="yes"
1139 --disable-vhost-net) vhost_net
="no"
1141 --enable-vhost-net) vhost_net
="yes"
1143 --disable-vhost-scsi) vhost_scsi
="no"
1145 --enable-vhost-scsi) vhost_scsi
="yes"
1147 --disable-vhost-vsock) vhost_vsock
="no"
1149 --enable-vhost-vsock) vhost_vsock
="yes"
1151 --disable-opengl) opengl
="no"
1153 --enable-opengl) opengl
="yes"
1155 --disable-rbd) rbd
="no"
1157 --enable-rbd) rbd
="yes"
1159 --disable-xfsctl) xfs
="no"
1161 --enable-xfsctl) xfs
="yes"
1163 --disable-smartcard) smartcard
="no"
1165 --enable-smartcard) smartcard
="yes"
1167 --disable-libusb) libusb
="no"
1169 --enable-libusb) libusb
="yes"
1171 --disable-usb-redir) usb_redir
="no"
1173 --enable-usb-redir) usb_redir
="yes"
1175 --disable-zlib-test) zlib
="no"
1177 --disable-lzo) lzo
="no"
1179 --enable-lzo) lzo
="yes"
1181 --disable-snappy) snappy
="no"
1183 --enable-snappy) snappy
="yes"
1185 --disable-bzip2) bzip2="no"
1187 --enable-bzip2) bzip2="yes"
1189 --enable-guest-agent) guest_agent
="yes"
1191 --disable-guest-agent) guest_agent
="no"
1193 --enable-guest-agent-msi) guest_agent_msi
="yes"
1195 --disable-guest-agent-msi) guest_agent_msi
="no"
1197 --with-vss-sdk) vss_win32_sdk
=""
1199 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1201 --without-vss-sdk) vss_win32_sdk
="no"
1203 --with-win-sdk) win_sdk
=""
1205 --with-win-sdk=*) win_sdk
="$optarg"
1207 --without-win-sdk) win_sdk
="no"
1209 --enable-tools) want_tools
="yes"
1211 --disable-tools) want_tools
="no"
1213 --enable-seccomp) seccomp
="yes"
1215 --disable-seccomp) seccomp
="no"
1217 --disable-glusterfs) glusterfs
="no"
1219 --enable-glusterfs) glusterfs
="yes"
1221 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1222 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1224 --enable-vhdx|
--disable-vhdx)
1225 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1227 --enable-uuid|
--disable-uuid)
1228 echo "$0: $opt is obsolete, UUID support is always built" >&2
1230 --disable-gtk) gtk
="no"
1232 --enable-gtk) gtk
="yes"
1234 --tls-priority=*) tls_priority
="$optarg"
1236 --disable-gnutls) gnutls
="no"
1238 --enable-gnutls) gnutls
="yes"
1240 --disable-nettle) nettle
="no"
1242 --enable-nettle) nettle
="yes"
1244 --disable-gcrypt) gcrypt
="no"
1246 --enable-gcrypt) gcrypt
="yes"
1248 --enable-rdma) rdma
="yes"
1250 --disable-rdma) rdma
="no"
1252 --with-gtkabi=*) gtkabi
="$optarg"
1254 --disable-vte) vte
="no"
1256 --enable-vte) vte
="yes"
1258 --disable-virglrenderer) virglrenderer
="no"
1260 --enable-virglrenderer) virglrenderer
="yes"
1262 --disable-tpm) tpm
="no"
1264 --enable-tpm) tpm
="yes"
1266 --disable-libssh2) libssh2
="no"
1268 --enable-libssh2) libssh2
="yes"
1270 --disable-live-block-migration) live_block_migration
="no"
1272 --enable-live-block-migration) live_block_migration
="yes"
1274 --disable-numa) numa
="no"
1276 --enable-numa) numa
="yes"
1278 --disable-tcmalloc) tcmalloc
="no"
1280 --enable-tcmalloc) tcmalloc
="yes"
1282 --disable-jemalloc) jemalloc
="no"
1284 --enable-jemalloc) jemalloc
="yes"
1286 --disable-replication) replication
="no"
1288 --enable-replication) replication
="yes"
1290 --disable-vxhs) vxhs
="no"
1292 --enable-vxhs) vxhs
="yes"
1294 --disable-vhost-user) vhost_user
="no"
1296 --enable-vhost-user)
1298 if test "$mingw32" = "yes"; then
1299 error_exit
"vhost-user isn't available on win32"
1302 --disable-capstone) capstone
="no"
1304 --enable-capstone) capstone
="yes"
1306 --enable-capstone=git
) capstone
="git"
1308 --enable-capstone=system
) capstone
="system"
1310 --with-git=*) git
="$optarg"
1312 --enable-git-update) git_update
=yes
1314 --disable-git-update) git_update
=no
1317 echo "ERROR: unknown option $opt"
1318 echo "Try '$0 --help' for more information"
1324 if test "$vhost_user" = ""; then
1325 if test "$mingw32" = "yes"; then
1335 LDFLAGS
="-m32 $LDFLAGS"
1339 LDFLAGS
="-m64 $LDFLAGS"
1342 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1343 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1346 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1347 LDFLAGS
="-m64 $LDFLAGS"
1351 LDFLAGS
="-m31 $LDFLAGS"
1355 LDFLAGS
="-m64 $LDFLAGS"
1359 LDFLAGS
="-m32 $LDFLAGS"
1360 cc_i386
='$(CC) -m32'
1363 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1364 # If we truly care, we should simply detect this case at
1365 # runtime and generate the fallback to serial emulation.
1366 CPU_CFLAGS
="-m64 -mcx16"
1367 LDFLAGS
="-m64 $LDFLAGS"
1368 cc_i386
='$(CC) -m32'
1372 LDFLAGS
="-mx32 $LDFLAGS"
1373 cc_i386
='$(CC) -m32'
1375 # No special flags required for other host CPUs
1378 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1379 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1381 # For user-mode emulation the host arch has to be one we explicitly
1382 # support, even if we're using TCI.
1383 if [ "$ARCH" = "unknown" ]; then
1388 default_target_list
=""
1392 if [ "$softmmu" = "yes" ]; then
1393 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1395 if [ "$linux_user" = "yes" ]; then
1396 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1398 if [ "$bsd_user" = "yes" ]; then
1399 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1402 for config
in $mak_wilds; do
1403 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1406 # Enumerate public trace backends for --help output
1407 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1409 if test x
"$show_help" = x
"yes" ; then
1412 Usage: configure [options]
1413 Options: [defaults in brackets after descriptions]
1416 --help print this message
1417 --prefix=PREFIX install in PREFIX [$prefix]
1418 --interp-prefix=PREFIX where to find shared libraries, etc.
1419 use %M for cpu name [$interp_prefix]
1420 --target-list=LIST set target list (default: build everything)
1421 $(echo Available targets: $default_target_list | \
1422 fold -s -w 53 | sed -e 's/^/ /')
1424 Advanced options (experts only):
1425 --source-path=PATH path of source code [$source_path]
1426 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1427 --cc=CC use C compiler CC [$cc]
1428 --iasl=IASL use ACPI compiler IASL [$iasl]
1429 --host-cc=CC use C compiler CC [$host_cc] for code run at
1431 --cxx=CXX use C++ compiler CXX [$cxx]
1432 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1433 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1434 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1435 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1436 --make=MAKE use specified make [$make]
1437 --install=INSTALL use specified install [$install]
1438 --python=PYTHON use specified python [$python]
1439 --smbd=SMBD use specified smbd [$smbd]
1440 --static enable static build [$static]
1441 --mandir=PATH install man pages in PATH
1442 --datadir=PATH install firmware in PATH$confsuffix
1443 --docdir=PATH install documentation in PATH$confsuffix
1444 --bindir=PATH install binaries in PATH
1445 --libdir=PATH install libraries in PATH
1446 --sysconfdir=PATH install config in PATH$confsuffix
1447 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1448 --firmwarepath=PATH search PATH for firmware files
1449 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1450 --enable-debug enable common debug build options
1451 --disable-strip disable stripping binaries
1452 --disable-werror disable compilation abort on warning
1453 --disable-stack-protector disable compiler-provided stack protection
1454 --audio-drv-list=LIST set audio drivers list:
1455 Available drivers: $audio_possible_drivers
1456 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1457 --block-drv-rw-whitelist=L
1458 set block driver read-write whitelist
1459 (affects only QEMU, not qemu-img)
1460 --block-drv-ro-whitelist=L
1461 set block driver read-only whitelist
1462 (affects only QEMU, not qemu-img)
1463 --enable-trace-backends=B Set trace backend
1464 Available backends: $trace_backend_list
1465 --with-trace-file=NAME Full PATH,NAME of file to store traces
1467 --disable-slirp disable SLIRP userspace network connectivity
1468 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1469 --oss-lib path to OSS library
1470 --cpu=CPU Build for host CPU [$cpu]
1471 --with-coroutine=BACKEND coroutine backend. Supported options:
1472 ucontext, sigaltstack, windows
1473 --enable-gcov enable test coverage analysis with gcov
1474 --gcov=GCOV use specified gcov [$gcov_tool]
1475 --disable-blobs disable installing provided firmware blobs
1476 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1477 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1478 --tls-priority default TLS protocol/cipher priority string
1479 --enable-gprof QEMU profiling with gprof
1480 --enable-profiler profiler support
1481 --enable-xen-pv-domain-build
1482 xen pv domain builder
1483 --enable-debug-stack-usage
1484 track the maximum stack usage of stacks created by qemu_alloc_stack
1486 Optional features, enabled with --enable-FEATURE and
1487 disabled with --disable-FEATURE, default is enabled if available:
1489 system all system emulation targets
1490 user supported user emulation targets
1491 linux-user all linux usermode emulation targets
1492 bsd-user all BSD usermode emulation targets
1493 docs build documentation
1494 guest-agent build the QEMU Guest Agent
1495 guest-agent-msi build guest agent Windows MSI installation package
1496 pie Position Independent Executables
1497 modules modules support
1498 debug-tcg TCG debugging (default is disabled)
1499 debug-info debugging information
1500 sparse sparse checker
1502 gnutls GNUTLS cryptography support
1503 nettle nettle cryptography support
1504 gcrypt libgcrypt cryptography support
1506 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1508 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1509 vte vte support for the gtk UI
1512 vnc-sasl SASL encryption for VNC server
1513 vnc-jpeg JPEG lossy compression for VNC server
1514 vnc-png PNG compression for VNC server
1515 cocoa Cocoa UI (Mac OS X only)
1517 mpath Multipath persistent reservation passthrough
1518 xen xen backend driver support
1520 brlapi BrlAPI (Braile)
1521 curl curl connectivity
1523 bluez bluez stack connectivity
1524 kvm KVM acceleration support
1525 hax HAX acceleration support
1526 rdma RDMA-based migration support
1527 vde support for vde network
1528 netmap support for netmap network
1529 linux-aio Linux AIO support
1530 cap-ng libcap-ng support
1531 attr attr and xattr support
1532 vhost-net vhost-net acceleration support
1534 rbd rados block device (rbd)
1535 libiscsi iscsi support
1537 smartcard smartcard support (libcacard)
1538 libusb libusb (for usb passthrough)
1539 live-block-migration Block migration in the main migration stream
1540 usb-redir usb network redirection support
1541 lzo support of lzo compression library
1542 snappy support of snappy compression library
1543 bzip2 support of bzip2 compression library
1544 (for reading bzip2-compressed dmg images)
1545 seccomp seccomp support
1546 coroutine-pool coroutine freelist (better performance)
1547 glusterfs GlusterFS backend
1549 libssh2 ssh block device support
1550 numa libnuma support
1551 tcmalloc tcmalloc support
1552 jemalloc jemalloc support
1553 replication replication support
1554 vhost-vsock virtio sockets device support
1555 opengl opengl support
1556 virglrenderer virgl rendering support
1557 xfsctl xfsctl support
1558 qom-cast-debug cast debugging support
1559 tools build qemu-io, qemu-nbd and qemu-image tools
1560 vxhs Veritas HyperScale vDisk backend support
1561 crypto-afalg Linux AF_ALG crypto backend driver
1562 vhost-user vhost-user support
1563 capstone capstone disassembler support
1565 NOTE: The object files are built at the place where configure is launched
1570 if ! has
$python; then
1571 error_exit
"Python not found. Use --python=/path/to/python"
1574 # Note that if the Python conditional here evaluates True we will exit
1575 # with status 1 which is a shell 'false' value.
1576 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1577 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1578 "Note that Python 3 or later is not yet supported." \
1579 "Use --python=/path/to/python to specify a supported Python."
1582 # Suppress writing compiled files
1585 # Now we have handled --enable-tcg-interpreter and know we're not just
1586 # printing the help message, bail out if the host CPU isn't supported.
1587 if test "$ARCH" = "unknown"; then
1588 if test "$tcg_interpreter" = "yes" ; then
1589 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1591 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1595 # Consult white-list to determine whether to enable werror
1596 # by default. Only enable by default for git builds
1597 if test -z "$werror" ; then
1598 if test -d "$source_path/.git" -a \
1599 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1606 # check that the C compiler works.
1608 if compile_object
; then
1609 : C compiler works ok
1611 error_exit
"\"$cc\" either does not exist or does not work"
1613 if ! compile_prog
; then
1614 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1617 if test "$bogus_os" = "yes"; then
1618 # Now that we know that we're not printing the help and that
1619 # the compiler works (so the results of the check_defines we used
1620 # to identify the OS are reliable), if we didn't recognize the
1621 # host OS we should stop now.
1622 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1625 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1626 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1627 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1628 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1629 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1630 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1631 # Note that we do not add -Werror to gcc_flags here, because that would
1632 # enable it for all configure tests. If a configure test failed due
1633 # to -Werror this would just silently disable some features,
1634 # so it's too error prone.
1636 cc_has_warning_flag
() {
1639 # Use the positive sense of the flag when testing for -Wno-wombat
1640 # support (gcc will happily accept the -Wno- form of unknown
1642 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1643 compile_prog
"-Werror $optflag" ""
1646 for flag
in $gcc_flags; do
1647 if cc_has_warning_flag
$flag ; then
1648 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1652 if test "$stack_protector" != "no"; then
1654 int main(int argc, char *argv[])
1656 char arr[64], *p = arr, *c = argv[0];
1663 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1665 for flag
in $gcc_flags; do
1666 # We need to check both a compile and a link, since some compiler
1667 # setups fail only on a .c->.o compile and some only at link time
1668 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1669 compile_prog
"-Werror $flag" ""; then
1670 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1675 if test "$stack_protector" = yes; then
1676 if test $sp_on = 0; then
1677 error_exit
"Stack protector not supported"
1682 # Disable -Wmissing-braces on older compilers that warn even for
1683 # the "universal" C zero initializer {0}.
1689 if compile_object
"-Werror" "" ; then
1692 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1695 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1696 # large functions that use global variables. The bug is in all releases of
1697 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1698 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1700 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1701 int main(void) { return 0; }
1703 #error No bug in this compiler.
1706 if compile_prog
"-Werror -fno-gcse" "" ; then
1707 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1710 if test "$static" = "yes" ; then
1711 if test "$modules" = "yes" ; then
1712 error_exit
"static and modules are mutually incompatible"
1714 if test "$pie" = "yes" ; then
1715 error_exit
"static and pie are mutually incompatible"
1721 # Unconditional check for compiler __thread support
1723 static __thread int tls_var;
1724 int main(void) { return tls_var; }
1727 if ! compile_prog
"-Werror" "" ; then
1728 error_exit
"Your compiler does not support the __thread specifier for " \
1729 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1732 if test "$pie" = ""; then
1733 case "$cpu-$targetos" in
1734 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1742 if test "$pie" != "no" ; then
1746 # define THREAD __thread
1751 static THREAD int tls_var;
1753 int main(void) { return tls_var; }
1756 if compile_prog
"-fPIE -DPIE" "-pie"; then
1757 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1758 LDFLAGS
="-pie $LDFLAGS"
1760 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1761 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1764 if test "$pie" = "yes"; then
1765 error_exit
"PIE not available due to missing toolchain support"
1767 echo "Disabling PIE due to missing toolchain support"
1772 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1773 CFLAGS_NOPIE
="-fno-pie"
1774 LDFLAGS_NOPIE
="-nopie"
1778 ##########################################
1779 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1780 # use i686 as default anyway, but for those that don't, an explicit
1781 # specification is necessary
1783 if test "$cpu" = "i386"; then
1785 static int sfaa(int *ptr)
1787 return __sync_fetch_and_and(ptr, 0);
1793 val = __sync_val_compare_and_swap(&val, 0, 1);
1798 if ! compile_prog
"" "" ; then
1799 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1803 #########################################
1804 # Solaris specific configure tool chain decisions
1806 if test "$solaris" = "yes" ; then
1807 if has
$install; then
1810 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1811 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1812 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1814 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1815 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1816 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1817 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1822 if test -f /usr
/ccs
/bin
/ar ; then
1823 error_exit
"No path includes ar" \
1824 "Add /usr/ccs/bin to your path and rerun configure"
1826 error_exit
"No path includes ar"
1830 if test -z "${target_list+xxx}" ; then
1831 for target
in $default_target_list; do
1832 supported_target
$target 2>/dev
/null
&& \
1833 target_list
="$target_list $target"
1835 target_list
="${target_list# }"
1837 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1838 for target
in $target_list; do
1839 # Check that we recognised the target name; this allows a more
1840 # friendly error message than if we let it fall through.
1841 case " $default_target_list " in
1845 error_exit
"Unknown target name '$target'"
1848 supported_target
$target ||
exit 1
1852 # see if system emulation was really requested
1853 case " $target_list " in
1854 *"-softmmu "*) softmmu
=yes
1860 feature_not_found
() {
1864 error_exit
"User requested feature $feature" \
1865 "configure was not able to find it." \
1870 # big/little endian test
1872 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1873 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1874 extern int foo(short *, short *);
1875 int main(int argc, char *argv[]) {
1876 return foo(big_endian, little_endian);
1880 if compile_object
; then
1881 if grep -q BiGeNdIaN
$TMPO ; then
1883 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1886 echo big
/little
test failed
1889 echo big
/little
test failed
1892 ##########################################
1893 # cocoa implies not SDL or GTK
1894 # (the cocoa UI code currently assumes it is always the active UI
1895 # and doesn't interact well with other UI frontend code)
1896 if test "$cocoa" = "yes"; then
1897 if test "$sdl" = "yes"; then
1898 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1900 if test "$gtk" = "yes"; then
1901 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1907 # Some versions of Mac OS X incorrectly define SIZE_MAX
1911 int main(int argc, char *argv[]) {
1912 return printf("%zu", SIZE_MAX);
1915 have_broken_size_max
=no
1916 if ! compile_object
-Werror ; then
1917 have_broken_size_max
=yes
1920 ##########################################
1924 #include <sys/socket.h>
1925 #include <linux/ip.h>
1926 int main(void) { return sizeof(struct mmsghdr); }
1928 if compile_prog
"" "" ; then
1934 ##########################################
1935 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1937 if test "$mingw32" = "yes"; then
1938 # Some versions of MinGW / Mingw-w64 lack localtime_r
1939 # and gmtime_r entirely.
1941 # Some versions of Mingw-w64 define a macro for
1942 # localtime_r/gmtime_r.
1944 # Some versions of Mingw-w64 will define functions
1945 # for localtime_r/gmtime_r, but only if you have
1946 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1947 # though, unistd.h and pthread.h both define
1950 # So this #undef localtime_r and #include <unistd.h>
1951 # are not in fact redundant.
1956 int main(void) { localtime_r(NULL, NULL); return 0; }
1958 if compile_prog
"" "" ; then
1965 ##########################################
1968 if ! has
"$pkg_config_exe"; then
1969 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1972 ##########################################
1975 if test "$linux_user" = "yes"; then
1978 #include <linux/futex.h>
1980 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1986 if ! compile_object
; then
1987 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1991 #########################################
1994 if test "$zlib" != "no" ; then
1997 int main(void) { zlibVersion(); return 0; }
1999 if compile_prog
"" "-lz" ; then
2002 error_exit
"zlib check failed" \
2003 "Make sure to have the zlib libs and headers installed."
2008 ##########################################
2011 if test "$lzo" != "no" ; then
2013 #include <lzo/lzo1x.h>
2014 int main(void) { lzo_version(); return 0; }
2016 if compile_prog
"" "-llzo2" ; then
2017 libs_softmmu
="$libs_softmmu -llzo2"
2020 if test "$lzo" = "yes"; then
2021 feature_not_found
"liblzo2" "Install liblzo2 devel"
2027 ##########################################
2030 if test "$snappy" != "no" ; then
2032 #include <snappy-c.h>
2033 int main(void) { snappy_max_compressed_length(4096); return 0; }
2035 if compile_prog
"" "-lsnappy" ; then
2036 libs_softmmu
="$libs_softmmu -lsnappy"
2039 if test "$snappy" = "yes"; then
2040 feature_not_found
"libsnappy" "Install libsnappy devel"
2046 ##########################################
2049 if test "$bzip2" != "no" ; then
2052 int main(void) { BZ2_bzlibVersion(); return 0; }
2054 if compile_prog
"" "-lbz2" ; then
2057 if test "$bzip2" = "yes"; then
2058 feature_not_found
"libbzip2" "Install libbzip2 devel"
2064 ##########################################
2067 if test "$seccomp" != "no" ; then
2070 libseccomp_minver
="2.1.0"
2073 libseccomp_minver
="2.2.0"
2076 libseccomp_minver
="2.2.3"
2079 libseccomp_minver
="2.3.0"
2082 libseccomp_minver
=""
2086 if test "$libseccomp_minver" != "" &&
2087 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2088 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2089 seccomp_libs
="$($pkg_config --libs libseccomp)"
2092 if test "$seccomp" = "yes" ; then
2093 if test "$libseccomp_minver" != "" ; then
2094 feature_not_found
"libseccomp" \
2095 "Install libseccomp devel >= $libseccomp_minver"
2097 feature_not_found
"libseccomp" \
2098 "libseccomp is not supported for host cpu $cpu"
2104 ##########################################
2107 if test "$xen" != "no" ; then
2108 # Check whether Xen library path is specified via --extra-ldflags to avoid
2109 # overriding this setting with pkg-config output. If not, try pkg-config
2110 # to obtain all needed flags.
2112 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2113 $pkg_config --exists xencontrol
; then
2114 xen_ctrl_version
="$(printf '%d%02d%02d' \
2115 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2117 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2118 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2119 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2120 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2121 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2124 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2125 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2127 # First we test whether Xen headers and libraries are available.
2128 # If no, we are done and there is no Xen support.
2129 # If yes, more tests are run to detect the Xen version.
2133 #include <xenctrl.h>
2138 if ! compile_prog
"" "$xen_libs" ; then
2140 if test "$xen" = "yes" ; then
2141 feature_not_found
"xen" "Install xen devel"
2147 cat > $TMPC <<EOF &&
2148 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2149 #include <xenforeignmemory.h>
2151 xenforeignmemory_handle *xfmem;
2153 xfmem = xenforeignmemory_open(0, 0);
2154 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2159 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2161 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2162 xen_ctrl_version
=41000
2165 cat > $TMPC <<EOF &&
2166 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2167 #define __XEN_TOOLS__
2168 #include <xendevicemodel.h>
2170 xendevicemodel_handle *xd;
2172 xd = xendevicemodel_open(0, 0);
2173 xendevicemodel_close(xd);
2178 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2180 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2181 xen_ctrl_version
=40900
2184 cat > $TMPC <<EOF &&
2186 * If we have stable libs the we don't want the libxc compat
2187 * layers, regardless of what CFLAGS we may have been given.
2189 * Also, check if xengnttab_grant_copy_segment_t is defined and
2190 * grant copy operation is implemented.
2192 #undef XC_WANT_COMPAT_EVTCHN_API
2193 #undef XC_WANT_COMPAT_GNTTAB_API
2194 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2195 #include <xenctrl.h>
2196 #include <xenstore.h>
2197 #include <xenevtchn.h>
2198 #include <xengnttab.h>
2199 #include <xenforeignmemory.h>
2201 #include <xen/hvm/hvm_info_table.h>
2202 #if !defined(HVM_MAX_VCPUS)
2203 # error HVM_MAX_VCPUS not defined
2206 xc_interface *xc = NULL;
2207 xenforeignmemory_handle *xfmem;
2208 xenevtchn_handle *xe;
2209 xengnttab_handle *xg;
2210 xen_domain_handle_t handle;
2211 xengnttab_grant_copy_segment_t* seg = NULL;
2215 xc = xc_interface_open(0, 0, 0);
2216 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2217 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2218 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2219 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2220 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2222 xfmem = xenforeignmemory_open(0, 0);
2223 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2225 xe = xenevtchn_open(0, 0);
2228 xg = xengnttab_open(0, 0);
2229 xengnttab_grant_copy(xg, 0, seg);
2234 compile_prog
"" "$xen_libs $xen_stable_libs"
2236 xen_ctrl_version
=40800
2239 cat > $TMPC <<EOF &&
2241 * If we have stable libs the we don't want the libxc compat
2242 * layers, regardless of what CFLAGS we may have been given.
2244 #undef XC_WANT_COMPAT_EVTCHN_API
2245 #undef XC_WANT_COMPAT_GNTTAB_API
2246 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2247 #include <xenctrl.h>
2248 #include <xenstore.h>
2249 #include <xenevtchn.h>
2250 #include <xengnttab.h>
2251 #include <xenforeignmemory.h>
2253 #include <xen/hvm/hvm_info_table.h>
2254 #if !defined(HVM_MAX_VCPUS)
2255 # error HVM_MAX_VCPUS not defined
2258 xc_interface *xc = NULL;
2259 xenforeignmemory_handle *xfmem;
2260 xenevtchn_handle *xe;
2261 xengnttab_handle *xg;
2262 xen_domain_handle_t handle;
2266 xc = xc_interface_open(0, 0, 0);
2267 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2268 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2269 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2270 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2271 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2273 xfmem = xenforeignmemory_open(0, 0);
2274 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2276 xe = xenevtchn_open(0, 0);
2279 xg = xengnttab_open(0, 0);
2280 xengnttab_map_grant_ref(xg, 0, 0, 0);
2285 compile_prog
"" "$xen_libs $xen_stable_libs"
2287 xen_ctrl_version
=40701
2290 cat > $TMPC <<EOF &&
2291 #include <xenctrl.h>
2294 xc_interface *xc = NULL;
2295 xen_domain_handle_t handle;
2296 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2300 compile_prog
"" "$xen_libs"
2302 xen_ctrl_version
=40700
2307 cat > $TMPC <<EOF &&
2308 #include <xenctrl.h>
2309 #include <xenstore.h>
2311 #include <xen/hvm/hvm_info_table.h>
2312 #if !defined(HVM_MAX_VCPUS)
2313 # error HVM_MAX_VCPUS not defined
2318 xc = xc_interface_open(0, 0, 0);
2319 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2320 xc_gnttab_open(NULL, 0);
2321 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2322 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2323 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2324 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2328 compile_prog
"" "$xen_libs"
2330 xen_ctrl_version
=40600
2335 cat > $TMPC <<EOF &&
2336 #include <xenctrl.h>
2337 #include <xenstore.h>
2339 #include <xen/hvm/hvm_info_table.h>
2340 #if !defined(HVM_MAX_VCPUS)
2341 # error HVM_MAX_VCPUS not defined
2346 xc = xc_interface_open(0, 0, 0);
2347 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2348 xc_gnttab_open(NULL, 0);
2349 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2350 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2351 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2355 compile_prog
"" "$xen_libs"
2357 xen_ctrl_version
=40500
2361 cat > $TMPC <<EOF &&
2362 #include <xenctrl.h>
2363 #include <xenstore.h>
2365 #include <xen/hvm/hvm_info_table.h>
2366 #if !defined(HVM_MAX_VCPUS)
2367 # error HVM_MAX_VCPUS not defined
2372 xc = xc_interface_open(0, 0, 0);
2373 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2374 xc_gnttab_open(NULL, 0);
2375 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2376 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2380 compile_prog
"" "$xen_libs"
2382 xen_ctrl_version
=40200
2386 if test "$xen" = "yes" ; then
2387 feature_not_found
"xen (unsupported version)" \
2388 "Install a supported xen (xen 4.2 or newer)"
2393 if test "$xen" = yes; then
2394 if test $xen_ctrl_version -ge 40701 ; then
2395 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2397 libs_softmmu
="$xen_libs $libs_softmmu"
2402 if test "$xen_pci_passthrough" != "no"; then
2403 if test "$xen" = "yes" && test "$linux" = "yes"; then
2404 xen_pci_passthrough
=yes
2406 if test "$xen_pci_passthrough" = "yes"; then
2407 error_exit
"User requested feature Xen PCI Passthrough" \
2408 " but this feature requires /sys from Linux"
2410 xen_pci_passthrough
=no
2414 if test "$xen_pv_domain_build" = "yes" &&
2415 test "$xen" != "yes"; then
2416 error_exit
"User requested Xen PV domain builder support" \
2417 "which requires Xen support."
2420 ##########################################
2422 if test "$sparse" != "no" ; then
2426 if test "$sparse" = "yes" ; then
2427 feature_not_found
"sparse" "Install sparse binary"
2433 ##########################################
2437 if $pkg_config --exists "x11"; then
2438 x11_cflags
=$
($pkg_config --cflags x11
)
2439 x11_libs
=$
($pkg_config --libs x11
)
2442 ##########################################
2445 if test "$gtkabi" = ""; then
2446 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2447 # Use 2.0 as a fallback if that is available.
2448 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2450 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2457 if test "$gtk" != "no"; then
2458 gtkpackage
="gtk+-$gtkabi"
2459 gtkx11package
="gtk+-x11-$gtkabi"
2460 if test "$gtkabi" = "3.0" ; then
2465 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2466 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2467 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2468 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2469 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2470 gtk_cflags
="$gtk_cflags $x11_cflags"
2471 gtk_libs
="$gtk_libs $x11_libs"
2473 libs_softmmu
="$gtk_libs $libs_softmmu"
2475 elif test "$gtk" = "yes"; then
2476 feature_not_found
"gtk" "Install gtk3-devel"
2483 ##########################################
2487 # Unfortunately some distros have bad pkg-config information for gnutls
2488 # such that it claims to exist but you get a compiler error if you try
2489 # to use the options returned by --libs. Specifically, Ubuntu for --static
2490 # builds doesn't work:
2491 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2493 # So sanity check the cflags/libs before assuming gnutls can be used.
2494 if ! $pkg_config --exists "gnutls"; then
2499 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2504 if test "$gnutls" != "no"; then
2505 if gnutls_works
; then
2506 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2507 gnutls_libs
=$
($pkg_config --libs gnutls
)
2508 libs_softmmu
="$gnutls_libs $libs_softmmu"
2509 libs_tools
="$gnutls_libs $libs_tools"
2510 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2513 # gnutls_rnd requires >= 2.11.0
2514 if $pkg_config --exists "gnutls >= 2.11.0"; then
2520 if $pkg_config --exists 'gnutls >= 3.0'; then
2523 elif $pkg_config --exists 'gnutls >= 2.12'; then
2524 case $
($pkg_config --libs --static gnutls
) in
2542 elif test "$gnutls" = "yes"; then
2543 feature_not_found
"gnutls" "Install gnutls devel"
2553 # If user didn't give a --disable/enable-gcrypt flag,
2554 # then mark as disabled if user requested nettle
2555 # explicitly, or if gnutls links to nettle
2556 if test -z "$gcrypt"
2558 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2564 # If user didn't give a --disable/enable-nettle flag,
2565 # then mark as disabled if user requested gcrypt
2566 # explicitly, or if gnutls links to gcrypt
2567 if test -z "$nettle"
2569 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2575 has_libgcrypt_config
() {
2576 if ! has
"libgcrypt-config"
2581 if test -n "$cross_prefix"
2583 host=$
(libgcrypt-config
--host)
2584 if test "$host-" != $cross_prefix
2593 if test "$gcrypt" != "no"; then
2594 if has_libgcrypt_config
; then
2595 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2596 gcrypt_libs
=$
(libgcrypt-config
--libs)
2597 # Debian has remove -lgpg-error from libgcrypt-config
2598 # as it "spreads unnecessary dependencies" which in
2599 # turn breaks static builds...
2600 if test "$static" = "yes"
2602 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2604 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2605 libs_tools
="$gcrypt_libs $libs_tools"
2606 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2608 if test -z "$nettle"; then
2615 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2617 NULL, 0, 0, 0, NULL);
2621 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2628 gcry_mac_hd_t handle;
2629 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2630 GCRY_MAC_FLAG_SECURE, NULL);
2634 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2638 if test "$gcrypt" = "yes"; then
2639 feature_not_found
"gcrypt" "Install gcrypt devel"
2647 if test "$nettle" != "no"; then
2648 if $pkg_config --exists "nettle"; then
2649 nettle_cflags
=$
($pkg_config --cflags nettle
)
2650 nettle_libs
=$
($pkg_config --libs nettle
)
2651 nettle_version
=$
($pkg_config --modversion nettle
)
2652 libs_softmmu
="$nettle_libs $libs_softmmu"
2653 libs_tools
="$nettle_libs $libs_tools"
2654 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2659 #include <nettle/pbkdf2.h>
2661 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2665 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2669 if test "$nettle" = "yes"; then
2670 feature_not_found
"nettle" "Install nettle devel"
2677 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2679 error_exit
"Only one of gcrypt & nettle can be enabled"
2682 ##########################################
2683 # libtasn1 - only for the TLS creds/session test suite
2688 if $pkg_config --exists "libtasn1"; then
2689 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2690 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2696 ##########################################
2697 # getifaddrs (for tests/test-io-channel-socket )
2700 if ! check_include
"ifaddrs.h" ; then
2704 ##########################################
2707 if test "$vte" != "no"; then
2708 if test "$gtkabi" = "3.0"; then
2709 vteminversion
="0.32.0"
2710 if $pkg_config --exists "vte-2.91"; then
2711 vtepackage
="vte-2.91"
2713 vtepackage
="vte-2.90"
2717 vteminversion
="0.24.0"
2719 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2720 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2721 vte_libs
=$
($pkg_config --libs $vtepackage)
2722 vteversion
=$
($pkg_config --modversion $vtepackage)
2723 libs_softmmu
="$vte_libs $libs_softmmu"
2725 elif test "$vte" = "yes"; then
2726 if test "$gtkabi" = "3.0"; then
2727 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2729 feature_not_found
"vte" "Install libvte devel"
2736 ##########################################
2739 # Look for sdl configuration program (pkg-config or sdl-config). Try
2740 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2742 if test "$sdlabi" = ""; then
2743 if $pkg_config --exists "sdl2"; then
2745 elif $pkg_config --exists "sdl"; then
2752 if test $sdlabi = "2.0"; then
2753 sdl_config
=$sdl2_config
2755 sdlconfigname
=sdl2_config
2756 elif test $sdlabi = "1.2"; then
2758 sdlconfigname
=sdl_config
2760 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2763 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2764 sdl_config
=$sdlconfigname
2767 if $pkg_config $sdlname --exists; then
2768 sdlconfig
="$pkg_config $sdlname"
2769 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2770 elif has
${sdl_config}; then
2771 sdlconfig
="$sdl_config"
2772 sdlversion
=$
($sdlconfig --version)
2774 if test "$sdl" = "yes" ; then
2775 feature_not_found
"sdl" "Install SDL2-devel"
2779 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2780 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2784 if test "$sdl" != "no" ; then
2787 #undef main /* We don't want SDL to override our main() */
2788 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2790 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2791 if test "$static" = "yes" ; then
2792 if $pkg_config $sdlname --exists; then
2793 sdl_libs
=$
($pkg_config $sdlname --static --libs 2>/dev
/null
)
2795 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2798 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2800 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2801 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2807 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2808 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2809 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2810 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2811 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2813 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2819 else # sdl not found
2820 if test "$sdl" = "yes" ; then
2821 feature_not_found
"sdl" "Install SDL devel"
2824 fi # sdl compile test
2827 if test "$sdl" = "yes" ; then
2830 #if defined(SDL_VIDEO_DRIVER_X11)
2831 #include <X11/XKBlib.h>
2833 #error No x11 support
2835 int main(void) { return 0; }
2837 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2838 sdl_cflags
="$sdl_cflags $x11_cflags"
2839 sdl_libs
="$sdl_libs $x11_libs"
2843 ##########################################
2844 # RDMA needs OpenFabrics libraries
2845 if test "$rdma" != "no" ; then
2847 #include <rdma/rdma_cma.h>
2848 int main(void) { return 0; }
2850 rdma_libs
="-lrdmacm -libverbs"
2851 if compile_prog
"" "$rdma_libs" ; then
2854 if test "$rdma" = "yes" ; then
2856 " OpenFabrics librdmacm/libibverbs not present." \
2858 " (1) Fast: Install infiniband packages from your distro." \
2859 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2860 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2867 ##########################################
2868 # VNC SASL detection
2869 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2871 #include <sasl/sasl.h>
2873 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2875 # Assuming Cyrus-SASL installed in /usr prefix
2877 vnc_sasl_libs
="-lsasl2"
2878 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2880 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2881 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2883 if test "$vnc_sasl" = "yes" ; then
2884 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2890 ##########################################
2891 # VNC JPEG detection
2892 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2895 #include <jpeglib.h>
2896 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2899 vnc_jpeg_libs
="-ljpeg"
2900 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2902 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2903 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2905 if test "$vnc_jpeg" = "yes" ; then
2906 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2912 ##########################################
2914 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2916 //#include <stdio.h>
2920 png_structp png_ptr;
2921 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2922 return png_ptr != 0;
2925 if $pkg_config libpng
--exists; then
2926 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2927 vnc_png_libs
=$
($pkg_config libpng
--libs)
2930 vnc_png_libs
="-lpng"
2932 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2934 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2935 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2937 if test "$vnc_png" = "yes" ; then
2938 feature_not_found
"vnc-png" "Install libpng devel"
2944 ##########################################
2946 if test "$xkbcommon" != "no" ; then
2947 if $pkg_config xkbcommon
--exists; then
2948 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
2949 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
2952 if test "$xkbcommon" = "yes" ; then
2953 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
2959 ##########################################
2960 # fnmatch() probe, used for ACL routines
2963 #include <fnmatch.h>
2966 fnmatch("foo", "foo", 0);
2970 if compile_prog
"" "" ; then
2974 ##########################################
2975 # xfsctl() probe, used for file-posix.c
2976 if test "$xfs" != "no" ; then
2978 #include <stddef.h> /* NULL */
2979 #include <xfs/xfs.h>
2982 xfsctl(NULL, 0, 0, NULL);
2986 if compile_prog
"" "" ; then
2989 if test "$xfs" = "yes" ; then
2990 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2996 ##########################################
2997 # vde libraries probe
2998 if test "$vde" != "no" ; then
2999 vde_libs
="-lvdeplug"
3001 #include <libvdeplug.h>
3004 struct vde_open_args a = {0, 0, 0};
3010 if compile_prog
"" "$vde_libs" ; then
3013 if test "$vde" = "yes" ; then
3014 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3020 ##########################################
3021 # netmap support probe
3022 # Apart from looking for netmap headers, we make sure that the host API version
3023 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3024 # a minor/major version number. Minor new features will be marked with values up
3025 # to 15, and if something happens that requires a change to the backend we will
3026 # move above 15, submit the backend fixes and modify this two bounds.
3027 if test "$netmap" != "no" ; then
3029 #include <inttypes.h>
3031 #include <net/netmap.h>
3032 #include <net/netmap_user.h>
3033 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3036 int main(void) { return 0; }
3038 if compile_prog
"" "" ; then
3041 if test "$netmap" = "yes" ; then
3042 feature_not_found
"netmap"
3048 ##########################################
3049 # libcap-ng library probe
3050 if test "$cap_ng" != "no" ; then
3056 capng_capability_to_name(CAPNG_EFFECTIVE);
3060 if compile_prog
"" "$cap_libs" ; then
3062 libs_tools
="$cap_libs $libs_tools"
3064 if test "$cap_ng" = "yes" ; then
3065 feature_not_found
"cap_ng" "Install libcap-ng devel"
3071 ##########################################
3072 # Sound support libraries probe
3083 int main(void) { $exp }
3085 if compile_prog
"$cfl" "$lib" ; then
3088 error_exit
"$drv check failed" \
3089 "Make sure to have the $drv libs and headers installed."
3093 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3094 for drv
in $audio_drv_list; do
3097 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
3098 "return snd_pcm_close((snd_pcm_t *)0);"
3099 alsa_libs
="-lasound"
3103 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
3104 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3105 pulse_libs
="-lpulse"
3110 if test "$sdl" = "no"; then
3111 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3116 coreaudio_libs
="-framework CoreAudio"
3120 dsound_libs
="-lole32 -ldxguid"
3129 # XXX: Probes for CoreAudio, DirectSound
3133 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3134 error_exit
"Unknown driver '$drv' selected" \
3135 "Possible drivers are: $audio_possible_drivers"
3141 ##########################################
3144 if test "$brlapi" != "no" ; then
3145 brlapi_libs
="-lbrlapi"
3149 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3151 if compile_prog
"" "$brlapi_libs" ; then
3154 if test "$brlapi" = "yes" ; then
3155 feature_not_found
"brlapi" "Install brlapi devel"
3161 ##########################################
3163 if test "$curses" != "no" ; then
3164 if test "$mingw32" = "yes" ; then
3165 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3166 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3168 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3169 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3178 setlocale(LC_ALL, "");
3180 addwstr(L"wide chars\n");
3182 add_wch(WACS_DEGREE);
3187 for curses_inc
in $curses_inc_list; do
3188 # Make sure we get the wide character prototypes
3189 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3191 for curses_lib
in $curses_lib_list; do
3193 if compile_prog
"$curses_inc" "$curses_lib" ; then
3195 QEMU_CFLAGS
="$curses_inc $QEMU_CFLAGS"
3196 libs_softmmu
="$curses_lib $libs_softmmu"
3200 if test "$curses_found" = yes ; then
3205 if test "$curses_found" = "yes" ; then
3208 if test "$curses" = "yes" ; then
3209 feature_not_found
"curses" "Install ncurses devel"
3215 ##########################################
3217 if test "$curl" != "no" ; then
3218 if $pkg_config libcurl
--exists; then
3219 curlconfig
="$pkg_config libcurl"
3221 curlconfig
=curl-config
3224 #include <curl/curl.h>
3225 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3227 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3228 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3229 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3232 if test "$curl" = "yes" ; then
3233 feature_not_found
"curl" "Install libcurl devel"
3239 ##########################################
3240 # bluez support probe
3241 if test "$bluez" != "no" ; then
3243 #include <bluetooth/bluetooth.h>
3244 int main(void) { return bt_error(0); }
3246 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3247 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3248 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3250 libs_softmmu
="$bluez_libs $libs_softmmu"
3252 if test "$bluez" = "yes" ; then
3253 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3259 ##########################################
3260 # glib support probe
3262 if test "$mingw32" = yes; then
3267 glib_modules
=gthread-2.0
3268 if test "$modules" = yes; then
3269 glib_modules
="$glib_modules gmodule-2.0"
3272 # This workaround is required due to a bug in pkg-config file for glib as it
3273 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3275 if test "$static" = yes -a "$mingw32" = yes; then
3276 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3279 for i
in $glib_modules; do
3280 if $pkg_config --atleast-version=$glib_req_ver $i; then
3281 glib_cflags
=$
($pkg_config --cflags $i)
3282 glib_libs
=$
($pkg_config --libs $i)
3283 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3284 LIBS
="$glib_libs $LIBS"
3285 libs_qga
="$glib_libs $libs_qga"
3287 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3291 # Sanity check that the current size_t matches the
3292 # size that glib thinks it should be. This catches
3293 # problems on multi-arch where people try to build
3294 # 32-bit QEMU while pointing at 64-bit glib headers
3299 #define QEMU_BUILD_BUG_ON(x) \
3300 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3303 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3308 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3309 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3310 "You probably need to set PKG_CONFIG_LIBDIR"\
3311 "to point to the right pkg-config files for your"\
3315 # g_test_trap_subprocess added in 2.38. Used by some tests.
3317 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
3321 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3324 int main(void) { return 0; }
3326 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3327 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3328 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3329 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3333 ##########################################
3334 # SHA command probe for modules
3335 if test "$modules" = yes; then
3336 shacmd_probe
="sha1sum sha1 shasum"
3337 for c
in $shacmd_probe; do
3343 if test "$shacmd" = ""; then
3344 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3348 ##########################################
3349 # pixman support probe
3351 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3354 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3355 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3356 pixman_libs
=$
($pkg_config --libs pixman-1
)
3358 error_exit
"pixman >= 0.21.8 not present." \
3359 "Please install the pixman devel package."
3362 ##########################################
3363 # libmpathpersist probe
3365 if test "$mpath" != "no" ; then
3367 #include <libudev.h>
3368 #include <mpath_persist.h>
3369 unsigned mpath_mx_alloc_len = 1024;
3371 static struct config *multipath_conf;
3372 extern struct udev *udev;
3373 extern struct config *get_multipath_config(void);
3374 extern void put_multipath_config(struct config *conf);
3376 struct config *get_multipath_config(void) { return multipath_conf; }
3377 void put_multipath_config(struct config *conf) { }
3381 multipath_conf = mpath_lib_init();
3385 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3394 ##########################################
3397 if test "$cap" != "no" ; then
3400 #include <sys/capability.h>
3401 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3403 if compile_prog
"" "-lcap" ; then
3410 ##########################################
3412 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3416 #include <pthread.h>
3417 static void *f(void *p) { return NULL; }
3420 pthread_create(&thread, 0, f, 0);
3424 if compile_prog
"" "" ; then
3427 for pthread_lib
in $PTHREADLIBS_LIST; do
3428 if compile_prog
"" "$pthread_lib" ; then
3431 for lib_entry
in $LIBS; do
3432 if test "$lib_entry" = "$pthread_lib"; then
3437 if test "$found" = "no"; then
3438 LIBS
="$pthread_lib $LIBS"
3440 PTHREAD_LIB
="$pthread_lib"
3446 if test "$mingw32" != yes -a "$pthread" = no
; then
3447 error_exit
"pthread check failed" \
3448 "Make sure to have the pthread libs and headers installed."
3451 # check for pthread_setname_np
3452 pthread_setname_np
=no
3454 #include <pthread.h>
3456 static void *f(void *p) { return NULL; }
3460 pthread_create(&thread, 0, f, 0);
3461 pthread_setname_np(thread, "QEMU");
3465 if compile_prog
"" "$pthread_lib" ; then
3466 pthread_setname_np
=yes
3469 ##########################################
3471 if test "$rbd" != "no" ; then
3474 #include <rbd/librbd.h>
3477 rados_create(&cluster, NULL);
3481 rbd_libs
="-lrbd -lrados"
3482 if compile_prog
"" "$rbd_libs" ; then
3485 if test "$rbd" = "yes" ; then
3486 feature_not_found
"rados block device" "Install librbd/ceph devel"
3492 ##########################################
3494 min_libssh2_version
=1.2.8
3495 if test "$libssh2" != "no" ; then
3496 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3497 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3498 libssh2_libs
=$
($pkg_config libssh2
--libs)
3501 if test "$libssh2" = "yes" ; then
3502 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3508 ##########################################
3509 # libssh2_sftp_fsync probe
3511 if test "$libssh2" = "yes"; then
3514 #include <libssh2.h>
3515 #include <libssh2_sftp.h>
3517 LIBSSH2_SESSION *session;
3519 LIBSSH2_SFTP_HANDLE *sftp_handle;
3520 session = libssh2_session_init ();
3521 sftp = libssh2_sftp_init (session);
3522 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3523 libssh2_sftp_fsync (sftp_handle);
3527 # libssh2_cflags/libssh2_libs defined in previous test.
3528 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3529 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3533 ##########################################
3536 if test "$linux_aio" != "no" ; then
3539 #include <sys/eventfd.h>
3541 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3543 if compile_prog
"" "-laio" ; then
3546 if test "$linux_aio" = "yes" ; then
3547 feature_not_found
"linux AIO" "Install libaio devel"
3553 ##########################################
3554 # TPM passthrough is only on x86 Linux
3556 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3557 tpm_passthrough
=$tpm
3562 # TPM emulator is for all posix systems
3563 if test "$mingw32" != "yes"; then
3568 ##########################################
3571 if test "$attr" != "no" ; then
3574 #include <sys/types.h>
3575 #ifdef CONFIG_LIBATTR
3576 #include <attr/xattr.h>
3578 #include <sys/xattr.h>
3580 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3582 if compile_prog
"" "" ; then
3584 # Older distros have <attr/xattr.h>, and need -lattr:
3585 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3590 if test "$attr" = "yes" ; then
3591 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3597 ##########################################
3600 #include <sys/types.h>
3601 #include <sys/uio.h>
3603 int main(void) { return sizeof(struct iovec); }
3606 if compile_prog
"" "" ; then
3610 ##########################################
3613 #include <sys/types.h>
3614 #include <sys/uio.h>
3616 int main(void) { return preadv(0, 0, 0, 0); }
3619 if compile_prog
"" "" ; then
3623 ##########################################
3625 # fdt support is mandatory for at least some target architectures,
3626 # so insist on it if we're building those system emulators.
3628 for target
in $target_list; do
3630 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu
)
3636 if test "$fdt_required" = "yes"; then
3637 if test "$fdt" = "no"; then
3638 error_exit
"fdt disabled but some requested targets require it." \
3639 "You can turn off fdt only if you also disable all the system emulation" \
3640 "targets which need it (by specifying a cut down --target-list)."
3645 if test "$fdt" != "no" ; then
3647 # explicitly check for libfdt_env.h as it is missing in some stable installs
3648 # and test for required functions to make sure we are on a version >= 1.4.2
3651 #include <libfdt_env.h>
3652 int main(void) { fdt_first_subnode(0, 0); return 0; }
3654 if compile_prog
"" "$fdt_libs" ; then
3655 # system DTC is good - use it
3658 # have GIT checkout, so activate dtc submodule
3659 if test -e "${source_path}/.git" ; then
3660 git_submodules
="${git_submodules} dtc"
3662 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
3666 if [ "$pwd_is_source_path" != "y" ] ; then
3667 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3668 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3670 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3671 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3672 elif test "$fdt" = "yes" ; then
3673 # Not a git build & no libfdt found, prompt for system install
3674 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
3675 "Please install the DTC (libfdt) devel package"
3677 # don't have and don't want
3684 libs_softmmu
="$libs_softmmu $fdt_libs"
3686 ##########################################
3687 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3689 if test "$opengl" != "no" ; then
3690 opengl_pkgs
="epoxy libdrm gbm"
3691 if $pkg_config $opengl_pkgs x11
; then
3692 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3693 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3695 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3698 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3700 if test "$opengl" = "yes" ; then
3701 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3709 if test "$opengl" = "yes"; then
3711 #include <epoxy/egl.h>
3712 #ifndef EGL_MESA_image_dma_buf_export
3713 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3715 int main(void) { return 0; }
3717 if compile_prog
"" "" ; then
3723 ##########################################
3725 if test "$glusterfs" != "no" ; then
3726 if $pkg_config --atleast-version=3 glusterfs-api
; then
3728 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3729 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3730 if $pkg_config --atleast-version=4 glusterfs-api
; then
3731 glusterfs_xlator_opt
="yes"
3733 if $pkg_config --atleast-version=5 glusterfs-api
; then
3734 glusterfs_discard
="yes"
3736 if $pkg_config --atleast-version=6 glusterfs-api
; then
3737 glusterfs_fallocate
="yes"
3738 glusterfs_zerofill
="yes"
3741 if test "$glusterfs" = "yes" ; then
3742 feature_not_found
"GlusterFS backend support" \
3743 "Install glusterfs-api devel >= 3"
3749 # Check for inotify functions when we are building linux-user
3750 # emulator. This is done because older glibc versions don't
3751 # have syscall stubs for these implemented. In that case we
3752 # don't provide them even if kernel supports them.
3756 #include <sys/inotify.h>
3761 /* try to start inotify */
3762 return inotify_init();
3765 if compile_prog
"" "" ; then
3771 #include <sys/inotify.h>
3776 /* try to start inotify */
3777 return inotify_init1(0);
3780 if compile_prog
"" "" ; then
3784 # check if pipe2 is there
3793 return pipe2(pipefd, O_CLOEXEC);
3796 if compile_prog
"" "" ; then
3800 # check if accept4 is there
3803 #include <sys/socket.h>
3808 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3812 if compile_prog
"" "" ; then
3816 # check if tee/splice is there. vmsplice was added same time.
3826 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3827 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3831 if compile_prog
"" "" ; then
3835 ##########################################
3838 if test "$numa" != "no" ; then
3841 int main(void) { return numa_available(); }
3844 if compile_prog
"" "-lnuma" ; then
3846 libs_softmmu
="-lnuma $libs_softmmu"
3848 if test "$numa" = "yes" ; then
3849 feature_not_found
"numa" "install numactl devel"
3855 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3856 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3860 ##########################################
3863 if test "$tcmalloc" = "yes" ; then
3866 int main(void) { malloc(1); return 0; }
3869 if compile_prog
"" "-ltcmalloc" ; then
3870 LIBS
="-ltcmalloc $LIBS"
3872 feature_not_found
"tcmalloc" "install gperftools devel"
3876 ##########################################
3879 if test "$jemalloc" = "yes" ; then
3882 int main(void) { malloc(1); return 0; }
3885 if compile_prog
"" "-ljemalloc" ; then
3886 LIBS
="-ljemalloc $LIBS"
3888 feature_not_found
"jemalloc" "install jemalloc devel"
3892 ##########################################
3897 #include <sys/syscall.h>
3899 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3902 if compile_prog
"" "" ; then
3906 # check if eventfd is supported
3909 #include <sys/eventfd.h>
3913 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3916 if compile_prog
"" "" ; then
3920 # check if memfd is supported
3923 #include <sys/memfd.h>
3927 return memfd_create("foo", MFD_ALLOW_SEALING);
3930 if compile_prog
"" "" ; then
3936 # check for fallocate
3943 fallocate(0, 0, 0, 0);
3947 if compile_prog
"" "" ; then
3951 # check for fallocate hole punching
3952 fallocate_punch_hole
=no
3955 #include <linux/falloc.h>
3959 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3963 if compile_prog
"" "" ; then
3964 fallocate_punch_hole
=yes
3967 # check that fallocate supports range zeroing inside the file
3968 fallocate_zero_range
=no
3971 #include <linux/falloc.h>
3975 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3979 if compile_prog
"" "" ; then
3980 fallocate_zero_range
=yes
3983 # check for posix_fallocate
3990 posix_fallocate(0, 0, 0);
3994 if compile_prog
"" "" ; then
3998 # check for sync_file_range
4005 sync_file_range(0, 0, 0, 0);
4009 if compile_prog
"" "" ; then
4013 # check for linux/fiemap.h and FS_IOC_FIEMAP
4016 #include <sys/ioctl.h>
4017 #include <linux/fs.h>
4018 #include <linux/fiemap.h>
4022 ioctl(0, FS_IOC_FIEMAP, 0);
4026 if compile_prog
"" "" ; then
4041 if compile_prog
"" "" ; then
4045 # check for ppoll support
4052 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4053 ppoll(&pfd, 1, 0, 0);
4057 if compile_prog
"" "" ; then
4061 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4062 prctl_pr_set_timerslack
=no
4064 #include <sys/prctl.h>
4068 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4072 if compile_prog
"" "" ; then
4073 prctl_pr_set_timerslack
=yes
4076 # check for epoll support
4079 #include <sys/epoll.h>
4087 if compile_prog
"" "" ; then
4091 # epoll_create1 is a later addition
4092 # so we must check separately for its presence
4095 #include <sys/epoll.h>
4099 /* Note that we use epoll_create1 as a value, not as
4100 * a function being called. This is necessary so that on
4101 * old SPARC glibc versions where the function was present in
4102 * the library but not declared in the header file we will
4103 * fail the configure check. (Otherwise we will get a compiler
4104 * warning but not an error, and will proceed to fail the
4105 * qemu compile where we compile with -Werror.)
4107 return (int)(uintptr_t)&epoll_create1;
4110 if compile_prog
"" "" ; then
4114 # check for sendfile support
4117 #include <sys/sendfile.h>
4121 return sendfile(0, 0, 0, 0);
4124 if compile_prog
"" "" ; then
4128 # check for timerfd support (glibc 2.8 and newer)
4131 #include <sys/timerfd.h>
4135 return(timerfd_create(CLOCK_REALTIME, 0));
4138 if compile_prog
"" "" ; then
4142 # check for setns and unshare support
4155 if compile_prog
"" "" ; then
4159 # clock_adjtime probe
4166 return clock_adjtime(0, 0);
4170 if compile_prog
"" "" ; then
4185 if compile_prog
"" "" ; then
4189 # Check if tools are available to build documentation.
4190 if test "$docs" != "no" ; then
4191 if has makeinfo
&& has pod2man
; then
4194 if test "$docs" = "yes" ; then
4195 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4201 # Search for bswap_32 function
4204 #include <byteswap.h>
4205 int main(void) { return bswap_32(0); }
4207 if compile_prog
"" "" ; then
4211 # Search for bswap32 function
4214 #include <sys/endian.h>
4215 #include <sys/types.h>
4216 #include <machine/bswap.h>
4217 int main(void) { return bswap32(0); }
4219 if compile_prog
"" "" ; then
4223 ##########################################
4224 # Do we have libiscsi >= 1.9.0
4225 if test "$libiscsi" != "no" ; then
4226 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4228 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4229 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4231 if test "$libiscsi" = "yes" ; then
4232 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4238 ##########################################
4242 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4244 if compile_prog
"" "" ; then
4246 elif compile_prog
"" "-lm" ; then
4248 libs_qga
="-lm $libs_qga"
4250 error_exit
"libm check failed"
4253 ##########################################
4255 # uClibc provides 2 versions of clock_gettime(), one with realtime
4256 # support and one without. This means that the clock_gettime() don't
4257 # need -lrt. We still need it for timer_create() so we check for this
4258 # function in addition.
4263 timer_create(CLOCK_REALTIME, NULL, NULL);
4264 return clock_gettime(CLOCK_REALTIME, NULL);
4268 if compile_prog
"" "" ; then
4270 # we need pthread for static linking. use previous pthread test result
4271 elif compile_prog
"" "$pthread_lib -lrt" ; then
4273 libs_qga
="$libs_qga -lrt"
4276 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4277 "$haiku" != "yes" ; then
4278 libs_softmmu
="-lutil $libs_softmmu"
4281 ##########################################
4283 if test "$spice" != "no" ; then
4286 int main(void) { spice_server_new(); return 0; }
4288 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4289 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4290 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4291 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4292 compile_prog
"$spice_cflags" "$spice_libs" ; then
4294 libs_softmmu
="$libs_softmmu $spice_libs"
4295 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4296 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4297 spice_server_version
=$
($pkg_config --modversion spice-server
)
4299 if test "$spice" = "yes" ; then
4300 feature_not_found
"spice" \
4301 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4307 # check for smartcard support
4308 if test "$smartcard" != "no"; then
4309 if $pkg_config libcacard
; then
4310 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4311 libcacard_libs
=$
($pkg_config --libs libcacard
)
4314 if test "$smartcard" = "yes"; then
4315 feature_not_found
"smartcard" "Install libcacard devel"
4322 if test "$libusb" != "no" ; then
4323 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4325 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4326 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4328 if test "$libusb" = "yes"; then
4329 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4335 # check for usbredirparser for usb network redirection support
4336 if test "$usb_redir" != "no" ; then
4337 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4339 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4340 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4342 if test "$usb_redir" = "yes"; then
4343 feature_not_found
"usb-redir" "Install usbredir devel"
4349 ##########################################
4350 # check if we have VSS SDK headers for win
4352 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4353 case "$vss_win32_sdk" in
4354 "") vss_win32_include
="-isystem $source_path" ;;
4355 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4356 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4357 vss_win32_include
="-isystem $source_path/.sdk/vss"
4358 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4360 *) vss_win32_include
="-isystem $vss_win32_sdk"
4363 #define __MIDL_user_allocate_free_DEFINED__
4364 #include <inc/win2003/vss.h>
4365 int main(void) { return VSS_CTX_BACKUP; }
4367 if compile_prog
"$vss_win32_include" "" ; then
4368 guest_agent_with_vss
="yes"
4369 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4370 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4371 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4373 if test "$vss_win32_sdk" != "" ; then
4374 echo "ERROR: Please download and install Microsoft VSS SDK:"
4375 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4376 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4377 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4378 echo "ERROR: The headers are extracted in the directory \`inc'."
4379 feature_not_found
"VSS support"
4381 guest_agent_with_vss
="no"
4385 ##########################################
4386 # lookup Windows platform SDK (if not specified)
4387 # The SDK is needed only to build .tlb (type library) file of guest agent
4388 # VSS provider from the source. It is usually unnecessary because the
4389 # pre-compiled .tlb file is included.
4391 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4392 if test -z "$win_sdk"; then
4393 programfiles
="$PROGRAMFILES"
4394 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4395 if test -n "$programfiles"; then
4396 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4398 feature_not_found
"Windows SDK"
4400 elif test "$win_sdk" = "no"; then
4405 ##########################################
4406 # check if mingw environment provides a recent ntddscsi.h
4407 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4409 #include <windows.h>
4410 #include <ntddscsi.h>
4412 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4413 #error Missing required ioctl definitions
4415 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4419 if compile_prog
"" "" ; then
4420 guest_agent_ntddscsi
=yes
4421 libs_qga
="-lsetupapi $libs_qga"
4425 ##########################################
4426 # virgl renderer probe
4428 if test "$virglrenderer" != "no" ; then
4430 #include <virglrenderer.h>
4431 int main(void) { virgl_renderer_poll(); return 0; }
4433 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4434 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4435 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4436 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4439 if test "$virglrenderer" = "yes" ; then
4440 feature_not_found
"virglrenderer"
4446 ##########################################
4451 if $pkg_config capstone
; then
4453 elif test -e "${source_path}/.git" ; then
4455 elif test -e "${source_path}/capstone/Makefile" ; then
4457 elif test -z "$capstone" ; then
4460 feature_not_found
"capstone" "Install capstone devel or git submodule"
4465 if ! $pkg_config capstone
; then
4466 feature_not_found
"capstone" "Install capstone devel"
4473 if test "$capstone" = git
; then
4474 git_submodules
="${git_submodules} capstone"
4477 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4478 if test "$mingw32" = "yes"; then
4479 LIBCAPSTONE
=capstone.lib
4481 LIBCAPSTONE
=libcapstone.a
4483 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4487 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4488 LIBS
="$($pkg_config --libs capstone) $LIBS"
4494 error_exit
"Unknown state for capstone: $capstone"
4498 ##########################################
4499 # check if we have fdatasync
4505 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4506 return fdatasync(0);
4508 #error Not supported
4512 if compile_prog
"" "" ; then
4516 ##########################################
4517 # check if we have madvise
4521 #include <sys/types.h>
4522 #include <sys/mman.h>
4524 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4526 if compile_prog
"" "" ; then
4530 ##########################################
4531 # check if we have posix_madvise
4535 #include <sys/mman.h>
4537 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4539 if compile_prog
"" "" ; then
4543 ##########################################
4544 # check if we have posix_syslog
4549 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4551 if compile_prog
"" "" ; then
4555 ##########################################
4556 # check if we have sem_timedwait
4560 #include <semaphore.h>
4561 int main(void) { return sem_timedwait(0, 0); }
4563 if compile_prog
"" "" ; then
4567 ##########################################
4568 # check if trace backend exists
4570 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4571 if test "$?" -ne 0 ; then
4572 error_exit
"invalid trace backends" \
4573 "Please choose supported trace backends."
4576 ##########################################
4577 # For 'ust' backend, test if ust headers are present
4578 if have_backend
"ust"; then
4580 #include <lttng/tracepoint.h>
4581 int main(void) { return 0; }
4583 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4584 if $pkg_config lttng-ust
--exists; then
4585 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4587 lttng_ust_libs
="-llttng-ust -ldl"
4589 if $pkg_config liburcu-bp
--exists; then
4590 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4592 urcu_bp_libs
="-lurcu-bp"
4595 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4596 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4598 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4602 ##########################################
4603 # For 'dtrace' backend, test if 'dtrace' command is present
4604 if have_backend
"dtrace"; then
4605 if ! has
'dtrace' ; then
4606 error_exit
"dtrace command is not found in PATH $PATH"
4608 trace_backend_stap
="no"
4609 if has
'stap' ; then
4610 trace_backend_stap
="yes"
4614 ##########################################
4615 # check and set a backend for coroutine
4617 # We prefer ucontext, but it's not always possible. The fallback
4618 # is sigcontext. On Windows the only valid backend is the Windows
4622 if test "$darwin" != "yes"; then
4624 #include <ucontext.h>
4625 #ifdef __stub_makecontext
4626 #error Ignoring glibc stub makecontext which will always fail
4628 int main(void) { makecontext(0, 0, 0); return 0; }
4630 if compile_prog
"" "" ; then
4635 if test "$coroutine" = ""; then
4636 if test "$mingw32" = "yes"; then
4638 elif test "$ucontext_works" = "yes"; then
4641 coroutine
=sigaltstack
4646 if test "$mingw32" != "yes"; then
4647 error_exit
"'windows' coroutine backend only valid for Windows"
4649 # Unfortunately the user visible backend name doesn't match the
4650 # coroutine-*.c filename for this case, so we have to adjust it here.
4654 if test "$ucontext_works" != "yes"; then
4655 feature_not_found
"ucontext"
4659 if test "$mingw32" = "yes"; then
4660 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4664 error_exit
"unknown coroutine backend $coroutine"
4669 if test "$coroutine_pool" = ""; then
4673 if test "$debug_stack_usage" = "yes"; then
4674 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4675 error_exit
"stack usage debugging is not supported for $cpu"
4677 if test "$coroutine_pool" = "yes"; then
4678 echo "WARN: disabling coroutine pool for stack usage debugging"
4684 ##########################################
4685 # check if we have open_by_handle_at
4687 open_by_handle_at
=no
4690 #if !defined(AT_EMPTY_PATH)
4691 # error missing definition
4693 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4696 if compile_prog
"" "" ; then
4697 open_by_handle_at
=yes
4700 ########################################
4701 # check if we have linux/magic.h
4705 #include <linux/magic.h>
4710 if compile_prog
"" "" ; then
4714 ########################################
4715 # check whether we can disable warning option with a pragma (this is needed
4716 # to silence warnings in the headers of some versions of external libraries).
4717 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4720 # If we can't selectively disable warning in the code, disable -Werror so that
4721 # the build doesn't fail anyway.
4723 pragma_disable_unused_but_set
=no
4725 #pragma GCC diagnostic push
4726 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4727 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4728 #pragma GCC diagnostic pop
4734 if compile_prog
"-Werror" "" ; then
4735 pragma_diagnostic_available
=yes
4740 ########################################
4741 # check if we have valgrind/valgrind.h
4745 #include <valgrind/valgrind.h>
4750 if compile_prog
"" "" ; then
4754 ########################################
4755 # check if environ is declared
4765 if compile_prog
"" "" ; then
4769 ########################################
4770 # check if cpuid.h is usable.
4775 unsigned a, b, c, d;
4776 int max = __get_cpuid_max(0, 0);
4779 __cpuid(1, a, b, c, d);
4783 __cpuid_count(7, 0, a, b, c, d);
4789 if compile_prog
"" "" ; then
4793 ##########################################
4794 # avx2 optimization requirement check
4796 # There is no point enabling this if cpuid.h is not usable,
4797 # since we won't be able to select the new routines.
4799 if test $cpuid_h = yes; then
4801 #pragma GCC push_options
4802 #pragma GCC target("avx2")
4804 #include <immintrin.h>
4805 static int bar(void *a) {
4806 __m256i x = *(__m256i *)a;
4807 return _mm256_testz_si256(x, x);
4809 int main(int argc, char *argv[]) { return bar(argv[0]); }
4811 if compile_object
"" ; then
4816 ########################################
4817 # check if __[u]int128_t is usable.
4821 #if defined(__clang_major__) && defined(__clang_minor__)
4822 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4823 # error __int128_t does not work in CLANG before 3.2
4835 if compile_prog
"" "" ; then
4839 #########################################
4840 # See if 128-bit atomic operations are supported.
4843 if test "$int128" = "yes"; then
4847 unsigned __int128 x = 0, y = 0;
4848 y = __atomic_load_16(&x, 0);
4849 __atomic_store_16(&x, y, 0);
4850 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4854 if compile_prog
"" "" ; then
4859 #########################################
4860 # See if 64-bit atomic operations are supported.
4861 # Note that without __atomic builtins, we can only
4862 # assume atomic loads/stores max at pointer size.
4868 uint64_t x = 0, y = 0;
4869 #ifdef __ATOMIC_RELAXED
4870 y = __atomic_load_8(&x, 0);
4871 __atomic_store_8(&x, y, 0);
4872 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4873 __atomic_exchange_8(&x, y, 0);
4874 __atomic_fetch_add_8(&x, y, 0);
4876 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4877 __sync_lock_test_and_set(&x, y);
4878 __sync_val_compare_and_swap(&x, y, 0);
4879 __sync_fetch_and_add(&x, y);
4884 if compile_prog
"" "" ; then
4888 ########################################
4889 # check if getauxval is available.
4893 #include <sys/auxv.h>
4895 return getauxval(AT_HWCAP) == 0;
4898 if compile_prog
"" "" ; then
4902 ########################################
4903 # check if ccache is interfering with
4904 # semantic analysis of macros
4909 static const int Z = 1;
4910 #define fn() ({ Z; })
4911 #define TAUT(X) ((X) == Z)
4912 #define PAREN(X, Y) (X == Y)
4914 int main(int argc, char *argv[])
4920 if (PAREN(x, y)) return 0;
4921 if (TAUT(Z)) return 0;
4926 if ! compile_object
"-Werror"; then
4930 #################################################
4931 # clang does not support glibc + FORTIFY_SOURCE.
4933 if test "$fortify_source" != "no"; then
4934 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4935 fortify_source
="no";
4936 elif test -n "$cxx" && has
$cxx &&
4937 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4938 fortify_source
="no";
4940 fortify_source
="yes"
4944 ##########################################
4945 # check if struct fsxattr is available via linux/fs.h
4949 #include <linux/fs.h>
4955 if compile_prog
"" "" ; then
4959 ##########################################
4960 # check if rtnetlink.h exists and is useful
4963 #include <linux/rtnetlink.h>
4965 return IFLA_PROTO_DOWN;
4968 if compile_prog
"" "" ; then
4972 ##########################################
4973 # check for usable AF_VSOCK environment
4977 #include <sys/types.h>
4978 #include <sys/socket.h>
4979 #if !defined(AF_VSOCK)
4980 # error missing AF_VSOCK flag
4982 #include <linux/vm_sockets.h>
4985 struct sockaddr_vm svm;
4986 socklen_t len = sizeof(svm);
4987 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4988 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4989 if ((ret == -1) && (errno == ENOTCONN)) {
4995 if compile_prog
"" "" ; then
4999 ##########################################
5000 # check for usable AF_ALG environment
5004 #include <sys/types.h>
5005 #include <sys/socket.h>
5006 #include <linux/if_alg.h>
5009 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5013 if compile_prog
"" "" ; then
5016 if test "$crypto_afalg" = "yes"
5018 if test "$have_afalg" != "yes"
5020 error_exit
"AF_ALG requested but could not be detected"
5025 #################################################
5026 # Sparc implicitly links with --relax, which is
5027 # incompatible with -r, so --no-relax should be
5028 # given. It does no harm to give it on other
5031 # Note: the prototype is needed since QEMU_CFLAGS
5032 # contains -Wmissing-prototypes
5034 extern int foo(void);
5035 int foo(void) { return 0; }
5037 if ! compile_object
""; then
5038 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5040 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5041 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5046 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5047 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5050 ##########################################
5051 # check for sysmacros.h
5055 #include <sys/sysmacros.h>
5057 return makedev(0, 0);
5060 if compile_prog
"" "" ; then
5064 ##########################################
5065 # Veritas HyperScale block driver VxHS
5066 # Check if libvxhs is installed
5068 if test "$vxhs" != "no" ; then
5071 #include <qnio/qnio_api.h>
5073 void *vxhs_callback;
5076 iio_init(QNIO_VERSION, vxhs_callback);
5080 vxhs_libs
="-lvxhs -lssl"
5081 if compile_prog
"" "$vxhs_libs" ; then
5084 if test "$vxhs" = "yes" ; then
5085 feature_not_found
"vxhs block device" "Install libvxhs See github"
5091 ##########################################
5092 # check for _Static_assert()
5094 have_static_assert
=no
5096 _Static_assert(1, "success");
5101 if compile_prog
"" "" ; then
5102 have_static_assert
=yes
5105 ##########################################
5106 # check for utmpx.h, it is missing e.g. on OpenBSD
5111 struct utmpx user_info;
5116 if compile_prog
"" "" ; then
5120 ##########################################
5122 # After here, no more $cc or $ld runs
5124 if test "$gcov" = "yes" ; then
5125 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5126 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5127 elif test "$fortify_source" = "yes" ; then
5128 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5129 elif test "$debug" = "no"; then
5130 CFLAGS
="-O2 $CFLAGS"
5133 ##########################################
5135 if test "$libnfs" != "no" ; then
5136 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5138 libnfs_libs
=$
($pkg_config --libs libnfs
)
5140 if test "$libnfs" = "yes" ; then
5141 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5147 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5148 if test "$werror" = "yes"; then
5149 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5152 if test "$solaris" = "no" ; then
5153 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5154 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5158 # test if pod2man has --utf8 option
5159 if pod2man
--help |
grep -q utf8
; then
5160 POD2MAN
="pod2man --utf8"
5165 # Use ASLR, no-SEH and DEP if available
5166 if test "$mingw32" = "yes" ; then
5167 for flag
in --dynamicbase --no-seh --nxcompat; do
5168 if ld_has
$flag ; then
5169 LDFLAGS
="-Wl,$flag $LDFLAGS"
5174 qemu_confdir
=$sysconfdir$confsuffix
5175 qemu_moddir
=$libdir$confsuffix
5176 qemu_datadir
=$datadir$confsuffix
5177 qemu_localedir
="$datadir/locale"
5179 # We can only support ivshmem if we have eventfd
5180 if [ "$eventfd" = "yes" ]; then
5185 if test "$want_tools" = "yes" ; then
5186 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
5187 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5188 tools
="qemu-nbd\$(EXESUF) $tools"
5190 if [ "$ivshmem" = "yes" ]; then
5191 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5194 if test "$softmmu" = yes ; then
5195 if test "$linux" = yes; then
5196 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5198 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5200 if test "$virtfs" = yes; then
5201 error_exit
"VirtFS requires libcap devel and libattr devel"
5205 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
5208 if test "$mpath" = yes; then
5209 error_exit
"Multipath requires libmpathpersist devel"
5213 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
5215 if test "$virtfs" = yes; then
5216 error_exit
"VirtFS is supported only on Linux"
5219 if test "$mpath" = yes; then
5220 error_exit
"Multipath is supported only on Linux"
5224 if test "$xkbcommon" = "yes"; then
5225 tools
="qemu-keymap\$(EXESUF) $tools"
5229 # Probe for guest agent support/options
5231 if [ "$guest_agent" != "no" ]; then
5232 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5233 tools
="qemu-ga $tools"
5235 elif [ "$guest_agent" != yes ]; then
5238 error_exit
"Guest agent is not supported on this platform"
5242 # Guest agent Window MSI package
5244 if test "$guest_agent" != yes; then
5245 if test "$guest_agent_msi" = yes; then
5246 error_exit
"MSI guest agent package requires guest agent enabled"
5249 elif test "$mingw32" != "yes"; then
5250 if test "$guest_agent_msi" = "yes"; then
5251 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5254 elif ! has wixl
; then
5255 if test "$guest_agent_msi" = "yes"; then
5256 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5260 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5261 # disabled explicitly
5262 if test "$guest_agent_msi" != "no"; then
5267 if test "$guest_agent_msi" = "yes"; then
5268 if test "$guest_agent_with_vss" = "yes"; then
5269 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5272 if test "$QEMU_GA_MANUFACTURER" = ""; then
5273 QEMU_GA_MANUFACTURER
=QEMU
5276 if test "$QEMU_GA_DISTRO" = ""; then
5277 QEMU_GA_DISTRO
=Linux
5280 if test "$QEMU_GA_VERSION" = ""; then
5281 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5284 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5288 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5291 QEMU_GA_MSI_ARCH
="-D Arch=32"
5294 error_exit
"CPU $cpu not supported for building installation package"
5299 # Mac OS X ships with a broken assembler
5301 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5302 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5303 "$softmmu" = yes ; then
5304 # Different host OS linkers have different ideas about the name of the ELF
5305 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5306 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5307 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
5308 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5309 ld_i386_emulation
="$emu"
5315 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5316 roms
="$roms spapr-rtas"
5319 if test "$cpu" = "s390x" ; then
5320 roms
="$roms s390-ccw"
5323 # Probe for the need for relocating the user-only binary.
5324 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5327 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5328 # ??? Rationale for choosing this address
5329 textseg_addr
=0x60000000
5332 # A 256M aligned address, high in the address space, with enough
5333 # room for the code_gen_buffer above it before the stack.
5334 textseg_addr
=0x60000000
5337 if [ -n "$textseg_addr" ]; then
5339 int main(void) { return 0; }
5341 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5342 if ! compile_prog
"" "$textseg_ldflags"; then
5343 # In case ld does not support -Ttext-segment, edit the default linker
5344 # script via sed to set the .text start addr. This is needed on FreeBSD
5346 if ! $ld --verbose >/dev
/null
2>&1; then
5348 "We need to link the QEMU user mode binaries at a" \
5349 "specific text address. Unfortunately your linker" \
5350 "doesn't support either the -Ttext-segment option or" \
5351 "printing the default linker script with --verbose." \
5352 "If you don't want the user mode binaries, pass the" \
5353 "--disable-user option to configure."
5356 $ld --verbose |
sed \
5357 -e '1,/==================================================/d' \
5358 -e '/==================================================/,$d' \
5359 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5360 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5361 textseg_ldflags
="-Wl,-T../config-host.ld"
5366 # Check that the C++ compiler exists and works with the C compiler.
5367 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5370 int c_function(void);
5371 int main(void) { return c_function(); }
5378 int c_function(void);
5380 int c_function(void) { return 42; }
5385 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5386 # C++ compiler $cxx works ok with C compiler $cc
5389 echo "C++ compiler $cxx does not work with C compiler $cc"
5390 echo "Disabling C++ specific optional code"
5394 echo "No C++ compiler available; disabling C++ specific optional code"
5399 if test "$1" = "yes" ; then
5404 # prepend pixman and ftd flags after all config tests are done
5405 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5406 libs_softmmu
="$pixman_libs $libs_softmmu"
5408 echo "Install prefix $prefix"
5409 echo "BIOS directory $(eval echo $qemu_datadir)"
5410 echo "firmware path $(eval echo $firmwarepath)"
5411 echo "binary directory $(eval echo $bindir)"
5412 echo "library directory $(eval echo $libdir)"
5413 echo "module directory $(eval echo $qemu_moddir)"
5414 echo "libexec directory $(eval echo $libexecdir)"
5415 echo "include directory $(eval echo $includedir)"
5416 echo "config directory $(eval echo $sysconfdir)"
5417 if test "$mingw32" = "no" ; then
5418 echo "local state directory $(eval echo $local_statedir)"
5419 echo "Manual directory $(eval echo $mandir)"
5420 echo "ELF interp prefix $interp_prefix"
5422 echo "local state directory queried at runtime"
5423 echo "Windows SDK $win_sdk"
5425 echo "Source path $source_path"
5426 echo "GIT binary $git"
5427 echo "GIT submodules $git_submodules"
5428 echo "C compiler $cc"
5429 echo "Host C compiler $host_cc"
5430 echo "C++ compiler $cxx"
5431 echo "Objective-C compiler $objcc"
5432 echo "ARFLAGS $ARFLAGS"
5433 echo "CFLAGS $CFLAGS"
5434 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5435 echo "LDFLAGS $LDFLAGS"
5437 echo "install $install"
5438 echo "python $python"
5439 if test "$slirp" = "yes" ; then
5442 echo "module support $modules"
5443 echo "host CPU $cpu"
5444 echo "host big endian $bigendian"
5445 echo "target list $target_list"
5446 echo "gprof enabled $gprof"
5447 echo "sparse enabled $sparse"
5448 echo "strip binaries $strip_opt"
5449 echo "profiler $profiler"
5450 echo "static build $static"
5451 if test "$darwin" = "yes" ; then
5452 echo "Cocoa support $cocoa"
5454 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5455 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5456 echo "GTK GL support $gtk_gl"
5457 echo "VTE support $vte $(echo_version $vte $vteversion)"
5458 echo "TLS priority $tls_priority"
5459 echo "GNUTLS support $gnutls"
5460 echo "GNUTLS rnd $gnutls_rnd"
5461 echo "libgcrypt $gcrypt"
5462 echo "libgcrypt kdf $gcrypt_kdf"
5463 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5464 echo "nettle kdf $nettle_kdf"
5465 echo "libtasn1 $tasn1"
5466 echo "curses support $curses"
5467 echo "virgl support $virglrenderer"
5468 echo "curl support $curl"
5469 echo "mingw32 support $mingw32"
5470 echo "Audio drivers $audio_drv_list"
5471 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5472 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5473 echo "VirtFS support $virtfs"
5474 echo "Multipath support $mpath"
5475 echo "VNC support $vnc"
5476 if test "$vnc" = "yes" ; then
5477 echo "VNC SASL support $vnc_sasl"
5478 echo "VNC JPEG support $vnc_jpeg"
5479 echo "VNC PNG support $vnc_png"
5481 if test -n "$sparc_cpu"; then
5482 echo "Target Sparc Arch $sparc_cpu"
5484 echo "xen support $xen"
5485 if test "$xen" = "yes" ; then
5486 echo "xen ctrl version $xen_ctrl_version"
5487 echo "pv dom build $xen_pv_domain_build"
5489 echo "brlapi support $brlapi"
5490 echo "bluez support $bluez"
5491 echo "Documentation $docs"
5493 echo "vde support $vde"
5494 echo "netmap support $netmap"
5495 echo "Linux AIO support $linux_aio"
5496 echo "ATTR/XATTR support $attr"
5497 echo "Install blobs $blobs"
5498 echo "KVM support $kvm"
5499 echo "HAX support $hax"
5500 echo "TCG support $tcg"
5501 if test "$tcg" = "yes" ; then
5502 echo "TCG debug enabled $debug_tcg"
5503 echo "TCG interpreter $tcg_interpreter"
5505 echo "RDMA support $rdma"
5506 echo "fdt support $fdt"
5507 echo "preadv support $preadv"
5508 echo "fdatasync $fdatasync"
5509 echo "madvise $madvise"
5510 echo "posix_madvise $posix_madvise"
5511 echo "libcap-ng support $cap_ng"
5512 echo "vhost-net support $vhost_net"
5513 echo "vhost-scsi support $vhost_scsi"
5514 echo "vhost-vsock support $vhost_vsock"
5515 echo "vhost-user support $vhost_user"
5516 echo "Trace backends $trace_backends"
5517 if have_backend
"simple"; then
5518 echo "Trace output file $trace_file-<pid>"
5520 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5521 echo "rbd support $rbd"
5522 echo "xfsctl support $xfs"
5523 echo "smartcard support $smartcard"
5524 echo "libusb $libusb"
5525 echo "usb net redir $usb_redir"
5526 echo "OpenGL support $opengl"
5527 echo "OpenGL dmabufs $opengl_dmabuf"
5528 echo "libiscsi support $libiscsi"
5529 echo "libnfs support $libnfs"
5530 echo "build guest agent $guest_agent"
5531 echo "QGA VSS support $guest_agent_with_vss"
5532 echo "QGA w32 disk info $guest_agent_ntddscsi"
5533 echo "QGA MSI support $guest_agent_msi"
5534 echo "seccomp support $seccomp"
5535 echo "coroutine backend $coroutine"
5536 echo "coroutine pool $coroutine_pool"
5537 echo "debug stack usage $debug_stack_usage"
5538 echo "crypto afalg $crypto_afalg"
5539 echo "GlusterFS support $glusterfs"
5540 echo "gcov $gcov_tool"
5541 echo "gcov enabled $gcov"
5542 echo "TPM support $tpm"
5543 echo "libssh2 support $libssh2"
5544 echo "TPM passthrough $tpm_passthrough"
5545 echo "TPM emulator $tpm_emulator"
5546 echo "QOM debugging $qom_cast_debug"
5547 echo "Live block migration $live_block_migration"
5548 echo "lzo support $lzo"
5549 echo "snappy support $snappy"
5550 echo "bzip2 support $bzip2"
5551 echo "NUMA host support $numa"
5552 echo "tcmalloc support $tcmalloc"
5553 echo "jemalloc support $jemalloc"
5554 echo "avx2 optimization $avx2_opt"
5555 echo "replication support $replication"
5556 echo "VxHS block device $vxhs"
5557 echo "capstone $capstone"
5559 if test "$sdl_too_old" = "yes"; then
5560 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5563 if test "$supported_cpu" = "no"; then
5565 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5567 echo "CPU host architecture $cpu support is not currently maintained."
5568 echo "The QEMU project intends to remove support for this host CPU in"
5569 echo "a future release if nobody volunteers to maintain it and to"
5570 echo "provide a build host for our continuous integration setup."
5571 echo "configure has succeeded and you can continue to build, but"
5572 echo "if you care about QEMU on this platform you should contact"
5573 echo "us upstream at qemu-devel@nongnu.org."
5576 if test "$supported_os" = "no"; then
5578 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5580 echo "Host OS $targetos support is not currently maintained."
5581 echo "The QEMU project intends to remove support for this host OS in"
5582 echo "a future release if nobody volunteers to maintain it and to"
5583 echo "provide a build host for our continuous integration setup."
5584 echo "configure has succeeded and you can continue to build, but"
5585 echo "if you care about QEMU on this platform you should contact"
5586 echo "us upstream at qemu-devel@nongnu.org."
5589 config_host_mak
="config-host.mak"
5591 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5593 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5594 echo >> $config_host_mak
5596 echo all
: >> $config_host_mak
5597 echo "prefix=$prefix" >> $config_host_mak
5598 echo "bindir=$bindir" >> $config_host_mak
5599 echo "libdir=$libdir" >> $config_host_mak
5600 echo "libexecdir=$libexecdir" >> $config_host_mak
5601 echo "includedir=$includedir" >> $config_host_mak
5602 echo "mandir=$mandir" >> $config_host_mak
5603 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5604 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5605 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5606 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
5607 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5608 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5609 if test "$mingw32" = "no" ; then
5610 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5612 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5613 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5614 echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
5615 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5616 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5617 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5618 echo "GIT=$git" >> $config_host_mak
5619 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
5620 echo "GIT_UPDATE=$git_update" >> $config_host_mak
5622 echo "ARCH=$ARCH" >> $config_host_mak
5624 if test "$debug_tcg" = "yes" ; then
5625 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5627 if test "$strip_opt" = "yes" ; then
5628 echo "STRIP=${strip}" >> $config_host_mak
5630 if test "$bigendian" = "yes" ; then
5631 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5633 if test "$mingw32" = "yes" ; then
5634 echo "CONFIG_WIN32=y" >> $config_host_mak
5635 rc_version
=$
(cat $source_path/VERSION
)
5636 version_major
=${rc_version%%.*}
5637 rc_version
=${rc_version#*.}
5638 version_minor
=${rc_version%%.*}
5639 rc_version
=${rc_version#*.}
5640 version_subminor
=${rc_version%%.*}
5642 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5643 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5644 if test "$guest_agent_with_vss" = "yes" ; then
5645 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5646 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5647 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5649 if test "$guest_agent_ntddscsi" = "yes" ; then
5650 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5652 if test "$guest_agent_msi" = "yes"; then
5653 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5654 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5655 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5656 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5657 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5658 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5659 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5662 echo "CONFIG_POSIX=y" >> $config_host_mak
5665 if test "$linux" = "yes" ; then
5666 echo "CONFIG_LINUX=y" >> $config_host_mak
5669 if test "$darwin" = "yes" ; then
5670 echo "CONFIG_DARWIN=y" >> $config_host_mak
5673 if test "$solaris" = "yes" ; then
5674 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5676 if test "$haiku" = "yes" ; then
5677 echo "CONFIG_HAIKU=y" >> $config_host_mak
5679 if test "$static" = "yes" ; then
5680 echo "CONFIG_STATIC=y" >> $config_host_mak
5682 if test "$profiler" = "yes" ; then
5683 echo "CONFIG_PROFILER=y" >> $config_host_mak
5685 if test "$slirp" = "yes" ; then
5686 echo "CONFIG_SLIRP=y" >> $config_host_mak
5687 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5689 if test "$vde" = "yes" ; then
5690 echo "CONFIG_VDE=y" >> $config_host_mak
5691 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
5693 if test "$netmap" = "yes" ; then
5694 echo "CONFIG_NETMAP=y" >> $config_host_mak
5696 if test "$l2tpv3" = "yes" ; then
5697 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5699 if test "$cap_ng" = "yes" ; then
5700 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5702 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5703 for drv
in $audio_drv_list; do
5704 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5705 echo "$def=y" >> $config_host_mak
5707 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
5708 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
5709 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
5710 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
5711 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
5712 if test "$audio_pt_int" = "yes" ; then
5713 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5715 if test "$audio_win_int" = "yes" ; then
5716 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5718 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5719 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5720 if test "$vnc" = "yes" ; then
5721 echo "CONFIG_VNC=y" >> $config_host_mak
5723 if test "$vnc_sasl" = "yes" ; then
5724 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5726 if test "$vnc_jpeg" = "yes" ; then
5727 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5729 if test "$vnc_png" = "yes" ; then
5730 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5732 if test "$xkbcommon" = "yes" ; then
5733 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
5734 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
5736 if test "$fnmatch" = "yes" ; then
5737 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5739 if test "$xfs" = "yes" ; then
5740 echo "CONFIG_XFS=y" >> $config_host_mak
5742 qemu_version
=$
(head $source_path/VERSION
)
5743 echo "VERSION=$qemu_version" >>$config_host_mak
5744 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5745 echo "SRC_PATH=$source_path" >> $config_host_mak
5746 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5747 if [ "$docs" = "yes" ] ; then
5748 echo "BUILD_DOCS=yes" >> $config_host_mak
5750 if test "$modules" = "yes"; then
5751 # $shacmd can generate a hash started with digit, which the compiler doesn't
5752 # like as an symbol. So prefix it with an underscore
5753 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5754 echo "CONFIG_MODULES=y" >> $config_host_mak
5756 if test "$sdl" = "yes" ; then
5757 echo "CONFIG_SDL=y" >> $config_host_mak
5758 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5759 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5760 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
5762 if test "$cocoa" = "yes" ; then
5763 echo "CONFIG_COCOA=y" >> $config_host_mak
5765 if test "$curses" = "yes" ; then
5766 echo "CONFIG_CURSES=y" >> $config_host_mak
5768 if test "$pipe2" = "yes" ; then
5769 echo "CONFIG_PIPE2=y" >> $config_host_mak
5771 if test "$accept4" = "yes" ; then
5772 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5774 if test "$splice" = "yes" ; then
5775 echo "CONFIG_SPLICE=y" >> $config_host_mak
5777 if test "$eventfd" = "yes" ; then
5778 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5780 if test "$memfd" = "yes" ; then
5781 echo "CONFIG_MEMFD=y" >> $config_host_mak
5783 if test "$fallocate" = "yes" ; then
5784 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5786 if test "$fallocate_punch_hole" = "yes" ; then
5787 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5789 if test "$fallocate_zero_range" = "yes" ; then
5790 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5792 if test "$posix_fallocate" = "yes" ; then
5793 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5795 if test "$sync_file_range" = "yes" ; then
5796 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5798 if test "$fiemap" = "yes" ; then
5799 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5801 if test "$dup3" = "yes" ; then
5802 echo "CONFIG_DUP3=y" >> $config_host_mak
5804 if test "$ppoll" = "yes" ; then
5805 echo "CONFIG_PPOLL=y" >> $config_host_mak
5807 if test "$prctl_pr_set_timerslack" = "yes" ; then
5808 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5810 if test "$epoll" = "yes" ; then
5811 echo "CONFIG_EPOLL=y" >> $config_host_mak
5813 if test "$epoll_create1" = "yes" ; then
5814 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5816 if test "$sendfile" = "yes" ; then
5817 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5819 if test "$timerfd" = "yes" ; then
5820 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5822 if test "$setns" = "yes" ; then
5823 echo "CONFIG_SETNS=y" >> $config_host_mak
5825 if test "$clock_adjtime" = "yes" ; then
5826 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5828 if test "$syncfs" = "yes" ; then
5829 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5831 if test "$inotify" = "yes" ; then
5832 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5834 if test "$inotify1" = "yes" ; then
5835 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5837 if test "$sem_timedwait" = "yes" ; then
5838 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
5840 if test "$byteswap_h" = "yes" ; then
5841 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5843 if test "$bswap_h" = "yes" ; then
5844 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5846 if test "$curl" = "yes" ; then
5847 echo "CONFIG_CURL=m" >> $config_host_mak
5848 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5849 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5851 if test "$brlapi" = "yes" ; then
5852 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5853 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
5855 if test "$bluez" = "yes" ; then
5856 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5857 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5859 if test "$glib_subprocess" = "yes" ; then
5860 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5862 if test "$gtk" = "yes" ; then
5863 echo "CONFIG_GTK=y" >> $config_host_mak
5864 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5865 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5866 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5867 if test "$gtk_gl" = "yes" ; then
5868 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5871 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5872 if test "$gnutls" = "yes" ; then
5873 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5875 if test "$gnutls_rnd" = "yes" ; then
5876 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5878 if test "$gcrypt" = "yes" ; then
5879 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5880 if test "$gcrypt_hmac" = "yes" ; then
5881 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5883 if test "$gcrypt_kdf" = "yes" ; then
5884 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5887 if test "$nettle" = "yes" ; then
5888 echo "CONFIG_NETTLE=y" >> $config_host_mak
5889 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5890 if test "$nettle_kdf" = "yes" ; then
5891 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5894 if test "$tasn1" = "yes" ; then
5895 echo "CONFIG_TASN1=y" >> $config_host_mak
5897 if test "$have_ifaddrs_h" = "yes" ; then
5898 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5900 if test "$have_broken_size_max" = "yes" ; then
5901 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5904 # Work around a system header bug with some kernel/XFS header
5905 # versions where they both try to define 'struct fsxattr':
5906 # xfs headers will not try to redefine structs from linux headers
5907 # if this macro is set.
5908 if test "$have_fsxattr" = "yes" ; then
5909 echo "HAVE_FSXATTR=y" >> $config_host_mak
5911 if test "$vte" = "yes" ; then
5912 echo "CONFIG_VTE=y" >> $config_host_mak
5913 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5915 if test "$virglrenderer" = "yes" ; then
5916 echo "CONFIG_VIRGL=y" >> $config_host_mak
5917 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5918 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5920 if test "$xen" = "yes" ; then
5921 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5922 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5923 if test "$xen_pv_domain_build" = "yes" ; then
5924 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5927 if test "$linux_aio" = "yes" ; then
5928 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5930 if test "$attr" = "yes" ; then
5931 echo "CONFIG_ATTR=y" >> $config_host_mak
5933 if test "$libattr" = "yes" ; then
5934 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5936 if test "$virtfs" = "yes" ; then
5937 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5939 if test "$mpath" = "yes" ; then
5940 echo "CONFIG_MPATH=y" >> $config_host_mak
5942 if test "$vhost_scsi" = "yes" ; then
5943 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5945 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
5946 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5948 if test "$vhost_vsock" = "yes" ; then
5949 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5951 if test "$vhost_user" = "yes" ; then
5952 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
5954 if test "$blobs" = "yes" ; then
5955 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5957 if test "$iovec" = "yes" ; then
5958 echo "CONFIG_IOVEC=y" >> $config_host_mak
5960 if test "$preadv" = "yes" ; then
5961 echo "CONFIG_PREADV=y" >> $config_host_mak
5963 if test "$fdt" = "yes" ; then
5964 echo "CONFIG_FDT=y" >> $config_host_mak
5966 if test "$signalfd" = "yes" ; then
5967 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5969 if test "$tcg" = "yes"; then
5970 echo "CONFIG_TCG=y" >> $config_host_mak
5971 if test "$tcg_interpreter" = "yes" ; then
5972 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5975 if test "$fdatasync" = "yes" ; then
5976 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5978 if test "$madvise" = "yes" ; then
5979 echo "CONFIG_MADVISE=y" >> $config_host_mak
5981 if test "$posix_madvise" = "yes" ; then
5982 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5985 if test "$spice" = "yes" ; then
5986 echo "CONFIG_SPICE=y" >> $config_host_mak
5989 if test "$smartcard" = "yes" ; then
5990 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5991 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
5992 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
5995 if test "$libusb" = "yes" ; then
5996 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5997 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
5998 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6001 if test "$usb_redir" = "yes" ; then
6002 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6003 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6004 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6007 if test "$opengl" = "yes" ; then
6008 echo "CONFIG_OPENGL=y" >> $config_host_mak
6009 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6010 if test "$opengl_dmabuf" = "yes" ; then
6011 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6015 if test "$avx2_opt" = "yes" ; then
6016 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6019 if test "$lzo" = "yes" ; then
6020 echo "CONFIG_LZO=y" >> $config_host_mak
6023 if test "$snappy" = "yes" ; then
6024 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6027 if test "$bzip2" = "yes" ; then
6028 echo "CONFIG_BZIP2=y" >> $config_host_mak
6029 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6032 if test "$libiscsi" = "yes" ; then
6033 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6034 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6035 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6038 if test "$libnfs" = "yes" ; then
6039 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6040 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6043 if test "$seccomp" = "yes"; then
6044 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6045 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6046 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6049 # XXX: suppress that
6050 if [ "$bsd" = "yes" ] ; then
6051 echo "CONFIG_BSD=y" >> $config_host_mak
6054 if test "$localtime_r" = "yes" ; then
6055 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6057 if test "$qom_cast_debug" = "yes" ; then
6058 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6060 if test "$rbd" = "yes" ; then
6061 echo "CONFIG_RBD=m" >> $config_host_mak
6062 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6063 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6066 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6067 if test "$coroutine_pool" = "yes" ; then
6068 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6070 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6073 if test "$debug_stack_usage" = "yes" ; then
6074 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6077 if test "$crypto_afalg" = "yes" ; then
6078 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6081 if test "$open_by_handle_at" = "yes" ; then
6082 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6085 if test "$linux_magic_h" = "yes" ; then
6086 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6089 if test "$pragma_diagnostic_available" = "yes" ; then
6090 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6093 if test "$valgrind_h" = "yes" ; then
6094 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6097 if test "$has_environ" = "yes" ; then
6098 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6101 if test "$cpuid_h" = "yes" ; then
6102 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6105 if test "$int128" = "yes" ; then
6106 echo "CONFIG_INT128=y" >> $config_host_mak
6109 if test "$atomic128" = "yes" ; then
6110 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6113 if test "$atomic64" = "yes" ; then
6114 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6117 if test "$getauxval" = "yes" ; then
6118 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6121 if test "$glusterfs" = "yes" ; then
6122 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6123 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6124 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6127 if test "$glusterfs_xlator_opt" = "yes" ; then
6128 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6131 if test "$glusterfs_discard" = "yes" ; then
6132 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6135 if test "$glusterfs_fallocate" = "yes" ; then
6136 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6139 if test "$glusterfs_zerofill" = "yes" ; then
6140 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6143 if test "$libssh2" = "yes" ; then
6144 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6145 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6146 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6149 if test "$live_block_migration" = "yes" ; then
6150 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6153 if test "$tpm" = "yes"; then
6154 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6155 # TPM passthrough support?
6156 if test "$tpm_passthrough" = "yes"; then
6157 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6159 # TPM emulator support?
6160 if test "$tpm_emulator" = "yes"; then
6161 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6165 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6166 if have_backend
"nop"; then
6167 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6169 if have_backend
"simple"; then
6170 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6171 # Set the appropriate trace file.
6172 trace_file
="\"$trace_file-\" FMT_pid"
6174 if have_backend
"log"; then
6175 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6177 if have_backend
"ust"; then
6178 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6180 if have_backend
"dtrace"; then
6181 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6182 if test "$trace_backend_stap" = "yes" ; then
6183 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6186 if have_backend
"ftrace"; then
6187 if test "$linux" = "yes" ; then
6188 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6190 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6193 if have_backend
"syslog"; then
6194 if test "$posix_syslog" = "yes" ; then
6195 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6197 feature_not_found
"syslog(trace backend)" "syslog not available"
6200 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6202 if test "$rdma" = "yes" ; then
6203 echo "CONFIG_RDMA=y" >> $config_host_mak
6204 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6207 if test "$have_rtnetlink" = "yes" ; then
6208 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6211 if test "$replication" = "yes" ; then
6212 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6215 if test "$have_af_vsock" = "yes" ; then
6216 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6219 if test "$have_sysmacros" = "yes" ; then
6220 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6223 if test "$have_static_assert" = "yes" ; then
6224 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6227 if test "$have_utmpx" = "yes" ; then
6228 echo "HAVE_UTMPX=y" >> $config_host_mak
6231 if test "$ivshmem" = "yes" ; then
6232 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6234 if test "$capstone" != "no" ; then
6235 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6238 # Hold two types of flag:
6239 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6240 # a thread we have a handle to
6241 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6243 if test "$pthread_setname_np" = "yes" ; then
6244 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6245 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6248 if test "$vxhs" = "yes" ; then
6249 echo "CONFIG_VXHS=y" >> $config_host_mak
6250 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6253 if test "$tcg_interpreter" = "yes"; then
6254 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6255 elif test "$ARCH" = "sparc64" ; then
6256 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6257 elif test "$ARCH" = "s390x" ; then
6258 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6259 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6260 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6261 elif test "$ARCH" = "ppc64" ; then
6262 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6264 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6266 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6268 echo "TOOLS=$tools" >> $config_host_mak
6269 echo "ROMS=$roms" >> $config_host_mak
6270 echo "MAKE=$make" >> $config_host_mak
6271 echo "INSTALL=$install" >> $config_host_mak
6272 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6273 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6274 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6275 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6276 echo "PYTHON=$python" >> $config_host_mak
6277 echo "CC=$cc" >> $config_host_mak
6278 if $iasl -h > /dev
/null
2>&1; then
6279 echo "IASL=$iasl" >> $config_host_mak
6281 echo "CC_I386=$cc_i386" >> $config_host_mak
6282 echo "HOST_CC=$host_cc" >> $config_host_mak
6283 echo "CXX=$cxx" >> $config_host_mak
6284 echo "OBJCC=$objcc" >> $config_host_mak
6285 echo "AR=$ar" >> $config_host_mak
6286 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6287 echo "AS=$as" >> $config_host_mak
6288 echo "CCAS=$ccas" >> $config_host_mak
6289 echo "CPP=$cpp" >> $config_host_mak
6290 echo "OBJCOPY=$objcopy" >> $config_host_mak
6291 echo "LD=$ld" >> $config_host_mak
6292 echo "RANLIB=$ranlib" >> $config_host_mak
6293 echo "NM=$nm" >> $config_host_mak
6294 echo "WINDRES=$windres" >> $config_host_mak
6295 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6296 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6297 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6298 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6299 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6300 if test "$sparse" = "yes" ; then
6301 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6302 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6303 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6304 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6305 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6307 if test "$cross_prefix" != ""; then
6308 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6310 echo "AUTOCONF_HOST := " >> $config_host_mak
6312 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6313 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6314 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6315 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6316 echo "LIBS+=$LIBS" >> $config_host_mak
6317 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6318 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6319 echo "EXESUF=$EXESUF" >> $config_host_mak
6320 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6321 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6322 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6323 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6324 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6325 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6326 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6327 if test "$gcov" = "yes" ; then
6328 echo "CONFIG_GCOV=y" >> $config_host_mak
6329 echo "GCOV=$gcov_tool" >> $config_host_mak
6332 # use included Linux headers
6333 if test "$linux" = "yes" ; then
6334 mkdir
-p linux-headers
6352 # For most CPUs the kernel architecture name and QEMU CPU name match.
6356 # For non-KVM architectures we will not have asm headers
6357 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6358 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
6362 for target
in $target_list; do
6363 target_dir
="$target"
6364 config_target_mak
=$target_dir/config-target.mak
6365 target_name
=$
(echo $target | cut
-d '-' -f 1)
6366 target_bigendian
="no"
6368 case "$target_name" in
6369 armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
6370 target_bigendian
=yes
6374 target_user_only
="no"
6375 target_linux_user
="no"
6376 target_bsd_user
="no"
6378 ${target_name}-softmmu)
6379 target_softmmu
="yes"
6381 ${target_name}-linux-user)
6382 target_user_only
="yes"
6383 target_linux_user
="yes"
6385 ${target_name}-bsd-user)
6386 target_user_only
="yes"
6387 target_bsd_user
="yes"
6390 error_exit
"Target '$target' not recognised"
6395 mkdir
-p $target_dir
6396 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6400 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
6403 TARGET_ARCH
="$target_name"
6407 case "$target_name" in
6409 gdb_xml_files
="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
6412 TARGET_BASE_ARCH
=i386
6413 gdb_xml_files
="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
6422 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6425 TARGET_BASE_ARCH
=arm
6428 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6438 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
6440 microblaze|microblazeel
)
6441 TARGET_ARCH
=microblaze
6446 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6450 TARGET_BASE_ARCH
=mips
6451 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6452 echo "TARGET_ABI32=y" >> $config_target_mak
6456 TARGET_BASE_ARCH
=mips
6457 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6464 TARGET_ARCH
=openrisc
6465 TARGET_BASE_ARCH
=openrisc
6468 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6471 TARGET_BASE_ARCH
=ppc
6473 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6476 TARGET_BASE_ARCH
=ppc
6479 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6483 TARGET_BASE_ARCH
=ppc
6486 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6490 TARGET_BASE_ARCH
=ppc
6492 echo "TARGET_ABI32=y" >> $config_target_mak
6493 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6502 TARGET_BASE_ARCH
=sparc
6506 TARGET_BASE_ARCH
=sparc
6507 TARGET_ABI_DIR
=sparc
6508 echo "TARGET_ABI32=y" >> $config_target_mak
6511 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
6523 error_exit
"Unsupported target CPU"
6526 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6527 if [ "$TARGET_BASE_ARCH" = "" ]; then
6528 TARGET_BASE_ARCH
=$TARGET_ARCH
6531 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
6534 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
6537 target_arch_name
="$(upper $TARGET_ARCH)"
6538 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6539 echo "TARGET_NAME=$target_name" >> $config_target_mak
6540 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6541 if [ "$TARGET_ABI_DIR" = "" ]; then
6542 TARGET_ABI_DIR
=$TARGET_ARCH
6544 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6545 if [ "$HOST_VARIANT_DIR" != "" ]; then
6546 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6549 if supported_xen_target
$target; then
6550 echo "CONFIG_XEN=y" >> $config_target_mak
6551 if test "$xen_pci_passthrough" = yes; then
6552 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6555 if supported_kvm_target
$target; then
6556 echo "CONFIG_KVM=y" >> $config_target_mak
6557 if test "$vhost_net" = "yes" ; then
6558 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6559 if test "$vhost_user" = "yes" ; then
6560 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6564 if supported_hax_target
$target; then
6565 echo "CONFIG_HAX=y" >> $config_target_mak
6567 if test "$target_bigendian" = "yes" ; then
6568 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6570 if test "$target_softmmu" = "yes" ; then
6571 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6572 if test "$mttcg" = "yes" ; then
6573 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6576 if test "$target_user_only" = "yes" ; then
6577 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6578 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6580 if test "$target_linux_user" = "yes" ; then
6581 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6584 if test ! -z "$gdb_xml_files" ; then
6585 for x
in $gdb_xml_files; do
6586 list
="$list $source_path/gdb-xml/$x"
6588 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6591 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6592 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6594 if test "$target_bsd_user" = "yes" ; then
6595 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6598 # generate QEMU_CFLAGS/LDFLAGS for targets
6604 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6605 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6608 for i
in $ARCH $TARGET_BASE_ARCH ; do
6611 disas_config
"ALPHA"
6614 if test -n "${cxx}"; then
6615 disas_config
"ARM_A64"
6620 if test -n "${cxx}"; then
6621 disas_config
"ARM_A64"
6640 disas_config
"MICROBLAZE"
6646 disas_config
"MOXIE"
6649 disas_config
"NIOS2"
6652 disas_config
"OPENRISC"
6664 disas_config
"SPARC"
6667 disas_config
"XTENSA"
6671 if test "$tcg_interpreter" = "yes" ; then
6677 # Ensure there's only a single GP
6678 cflags
="-msmall-data $cflags"
6682 if test "$gprof" = "yes" ; then
6683 echo "TARGET_GPROF=yes" >> $config_target_mak
6684 if test "$target_linux_user" = "yes" ; then
6686 ldflags
="-p $ldflags"
6688 if test "$target_softmmu" = "yes" ; then
6689 ldflags
="-p $ldflags"
6690 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6694 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6695 ldflags
="$ldflags $textseg_ldflags"
6698 # Newer kernels on s390 check for an S390_PGSTE program header and
6699 # enable the pgste page table extensions in that case. This makes
6700 # the vm.allocate_pgste sysctl unnecessary. We enable this program
6702 # - we build on s390x
6703 # - we build the system emulation for s390x (qemu-system-s390x)
6705 # - the linker supports --s390-pgste
6706 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
6707 if ld_has
--s390-pgste ; then
6708 ldflags
="-Wl,--s390-pgste $ldflags"
6712 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6713 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6715 done # for target in $targets
6717 if [ "$dtc_internal" = "yes" ]; then
6718 echo "config-host.h: subdir-dtc" >> $config_host_mak
6720 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
6721 echo "config-host.h: subdir-capstone" >> $config_host_mak
6723 if test -n "$LIBCAPSTONE"; then
6724 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
6727 if test "$numa" = "yes"; then
6728 echo "CONFIG_NUMA=y" >> $config_host_mak
6731 if test "$ccache_cpp2" = "yes"; then
6732 echo "export CCACHE_CPP2=y" >> $config_host_mak
6735 # build tree in object directory in case the source is not in the current directory
6736 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
6737 DIRS
="$DIRS docs docs/interop fsdev scsi"
6738 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6739 DIRS
="$DIRS roms/seabios roms/vgabios"
6740 DIRS
="$DIRS qapi-generated"
6741 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6742 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6743 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6744 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6745 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6746 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6747 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6748 FILES
="$FILES pc-bios/qemu-icon.bmp"
6749 FILES
="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
6751 $source_path/pc-bios
/*.bin \
6752 $source_path/pc-bios
/*.lid \
6753 $source_path/pc-bios
/*.aml \
6754 $source_path/pc-bios
/*.rom \
6755 $source_path/pc-bios
/*.dtb \
6756 $source_path/pc-bios
/*.img \
6757 $source_path/pc-bios
/openbios-
* \
6758 $source_path/pc-bios
/u-boot.
* \
6759 $source_path/pc-bios
/palcode-
*
6761 FILES
="$FILES pc-bios/$(basename $bios_file)"
6763 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6765 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6768 for f
in $FILES ; do
6769 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6770 symlink
"$source_path/$f" "$f"
6774 # temporary config to build submodules
6775 for rom
in seabios vgabios
; do
6776 config_mak
=roms
/$rom/config.mak
6777 echo "# Automatically generated by configure - do not modify" > $config_mak
6778 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6779 echo "AS=$as" >> $config_mak
6780 echo "CCAS=$ccas" >> $config_mak
6781 echo "CC=$cc" >> $config_mak
6782 echo "BCC=bcc" >> $config_mak
6783 echo "CPP=$cpp" >> $config_mak
6784 echo "OBJCOPY=objcopy" >> $config_mak
6785 echo "IASL=$iasl" >> $config_mak
6786 echo "LD=$ld" >> $config_mak
6787 echo "RANLIB=$ranlib" >> $config_mak
6790 # set up tests data directory
6791 if [ ! -e tests
/data
]; then
6792 symlink
"$source_path/tests/data" tests
/data
6795 # set up qemu-iotests in this build directory
6796 iotests_common_env
="tests/qemu-iotests/common.env"
6797 iotests_check
="tests/qemu-iotests/check"
6799 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6800 echo >> "$iotests_common_env"
6801 echo "export PYTHON='$python'" >> "$iotests_common_env"
6803 if [ ! -e "$iotests_check" ]; then
6804 symlink
"$source_path/$iotests_check" "$iotests_check"
6807 # Save the configure command line for later reuse.
6808 cat <<EOD >config.status
6810 # Generated by configure.
6811 # Run this file to recreate the current configuration.
6812 # Compiler output produced by configure, useful for debugging
6813 # configure, is in config.log if it exists.
6815 printf "exec" >>config.status
6816 printf " '%s'" "$0" "$@" >>config.status
6817 echo ' "$@"' >>config.status
6818 chmod +x config.status