3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE= GREP_OPTIONS=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC="${TMPDIR1}/${TMPB}.c"
29 TMPO="${TMPDIR1}/${TMPB}.o"
30 TMPCXX="${TMPDIR1}/${TMPB}.cxx"
31 TMPE="${TMPDIR1}/${TMPB}.exe"
32 TMPMO="${TMPDIR1}/${TMPB}.mo"
36 # Print a helpful header at the top of config.log
37 echo "# QEMU configure log $(date)" >> config.log
38 printf "# Configured with:" >> config.log
39 printf " '%s'" "$0" "$@" >> config.log
41 echo "#" >> config.log
46 while test -n "$2"; do
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
63 echo $compiler "$@" >> config.log
64 $compiler "$@" >> config.log 2>&1 || return $?
65 # Test passed. If this is an --enable-werror build, rerun
66 # the test with -Werror and bail out if it fails. This
67 # makes warning-generating-errors in configure test code
68 # obvious to developers.
69 if test "$werror" != "yes"; then
72 # Don't bother rerunning the compile if we were already using -Werror
78 echo $compiler -Werror "$@" >> config.log
79 $compiler -Werror "$@" >> config.log 2>&1 && return $?
80 error_exit "configure test passed without -Werror but failed with -Werror." \
81 "This is probably a bug in the configure script. The failing command" \
82 "will be at the bottom of config.log." \
83 "You can run configure with --disable-werror to bypass this check."
87 do_compiler "$cc" "$@"
91 do_compiler "$cxx" "$@"
95 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
96 # options which some versions of GCC's C++ compiler complain about
97 # because they only make sense for C programs.
98 QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
100 for arg in $QEMU_CFLAGS; do
102 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
103 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
106 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
114 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
120 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
123 # symbolically link $1 to $2. Portable version of "ln -sf".
126 mkdir -p "$(dirname "$2")"
130 # check whether a command is available to this shell (may be either an
131 # executable or a builtin)
133 type "$1" >/dev/null 2>&1
136 # search for an executable in PATH
142 # pathname has a dir component?
143 if [ "${local_command#*/}" != "$local_command" ]; then
144 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
145 echo "$local_command"
149 if [ -z "$local_command" ]; then
154 for local_dir in $PATH; do
155 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
156 echo "$local_dir/$local_command"
157 IFS="${local_ifs:-$(printf ' \t\n')}"
162 IFS="${local_ifs:-$(printf ' \t\n')}"
167 echo "$trace_backends" | grep "$1" >/dev/null
171 eval test -z '"${1#'"$2"'}"'
174 supported_hax_target() {
175 test "$hax" = "yes" || return 1
176 glob "$1" "*-softmmu" || return 1
177 case "${1%-softmmu}" in
185 supported_kvm_target() {
186 test "$kvm" = "yes" || return 1
187 glob "$1" "*-softmmu" || return 1
188 case "${1%-softmmu}:$cpu" in
189 arm:arm | aarch64:aarch64 | \
190 i386:i386 | i386:x86_64 | i386:x32 | \
191 x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \
192 mips:mips | mipsel:mips | \
193 ppc:ppc | ppcemb:ppc | ppc64:ppc | \
194 ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \
202 supported_xen_target() {
203 test "$xen" = "yes" || return 1
204 glob "$1" "*-softmmu" || return 1
205 # Only i386 and x86_64 provide the xenpv machine.
206 case "${1%-softmmu}" in
219 if test "$linux" != "yes"; then
220 print_error "Target '$target' is only available on a Linux host"
225 if test "$bsd" != "yes"; then
226 print_error "Target '$target' is only available on a BSD host"
231 print_error "Invalid target name '$target'"
235 test "$tcg" = "yes" && return 0
236 supported_kvm_target "$1" && return 0
237 supported_xen_target "$1" && return 0
238 supported_hax_target "$1" && return 0
239 print_error "TCG disabled, but hardware accelerator not available for '$target'"
245 $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
249 source_path=$(dirname "$0")
252 interp_prefix="/usr/gnemul/qemu-%M"
256 block_drv_rw_whitelist=""
257 block_drv_ro_whitelist=""
263 cc_i386=i386-pc-linux-gnu-gcc
268 if test -e "$source_path/.git"
270 git_submodules="ui/keycodemapdb"
276 # Don't accept a target_list environment variable.
279 # Default value for a variable defining feature "foo".
280 # * foo="no" feature will only be used if --enable-foo arg is given
281 # * foo="" feature will be searched for, and if found, will be used
282 # unless --disable-foo is given
283 # * foo="yes" this value will only be set by --enable-foo flag.
284 # feature will searched for,
285 # if not found, configure exits with error
287 # Always add --enable-foo and --disable-foo command line args.
288 # Distributions want to ensure that several features are compiled in, and it
289 # is impossible without a --enable-foo that exits if a feature is not found.
311 xen_pv_domain_build="no"
312 xen_pci_passthrough=""
339 LDFLAGS_SHARED="-shared"
342 mandir="\${prefix}/share/man"
343 datadir="\${prefix}/share"
344 firmwarepath="\${prefix}/share/qemu-firmware"
345 qemu_docdir="\${prefix}/share/doc/qemu"
346 bindir="\${prefix}/bin"
347 libdir="\${prefix}/lib"
348 libexecdir="\${prefix}/libexec"
349 includedir="\${prefix}/include"
350 sysconfdir="\${prefix}/etc"
351 local_statedir="\${prefix}/var"
384 guest_agent_with_vss="no"
385 guest_agent_ntddscsi="no"
394 debug_stack_usage="no"
398 glusterfs_xlator_opt="no"
399 glusterfs_discard="no"
400 glusterfs_fallocate="no"
401 glusterfs_zerofill="no"
405 tls_priority="NORMAL"
417 live_block_migration="yes"
428 # parse CC options first
430 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
432 --cross-prefix=*) cross_prefix="$optarg"
436 --cxx=*) CXX="$optarg"
438 --source-path=*) source_path="$optarg"
440 --cpu=*) cpu="$optarg"
442 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
443 EXTRA_CFLAGS="$optarg"
445 --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
446 EXTRA_CXXFLAGS="$optarg"
448 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
449 EXTRA_LDFLAGS="$optarg"
451 --enable-debug-info) debug_info="yes"
453 --disable-debug-info) debug_info="no"
458 # Using uname is really, really broken. Once we have the right set of checks
459 # we can eliminate its usage altogether.
461 # Preferred compiler:
463 # ${cross_prefix}gcc (if cross-prefix specified)
465 if test -z "${CC}${cross_prefix}"; then
468 cc="${CC-${cross_prefix}gcc}"
471 if test -z "${CXX}${cross_prefix}"; then
474 cxx="${CXX-${cross_prefix}g++}"
477 ar="${AR-${cross_prefix}ar}"
478 as="${AS-${cross_prefix}as}"
481 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
482 ld="${LD-${cross_prefix}ld}"
483 nm="${NM-${cross_prefix}nm}"
484 strip="${STRIP-${cross_prefix}strip}"
485 windres="${WINDRES-${cross_prefix}windres}"
486 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
488 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
490 pkg_config=query_pkg_config
491 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
492 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
494 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
495 ARFLAGS="${ARFLAGS-rv}"
497 # default flags for all hosts
498 # We use -fwrapv to tell the compiler that we require a C dialect where
499 # left shift of signed integers is well defined and has the expected
500 # 2s-complement style results. (Both clang and gcc agree that it
501 # provides these semantics.)
502 QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
503 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
504 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
505 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
506 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include"
507 if test "$debug_info" = "yes"; then
509 LDFLAGS="-g $LDFLAGS"
512 # make source path absolute
513 source_path=$(cd "$source_path"; pwd)
515 # running configure in the source tree?
516 # we know that's the case if configure is there.
517 if test -f "./configure"; then
518 pwd_is_source_path="y"
520 pwd_is_source_path="n"
526 #error $1 not defined
528 int main(void) { return 0; }
536 int main(void) { return 0; }
543 int main(void) { return 0; }
547 if check_define __linux__ ; then
549 elif check_define _WIN32 ; then
551 elif check_define __OpenBSD__ ; then
553 elif check_define __sun__ ; then
555 elif check_define __HAIKU__ ; then
557 elif check_define __FreeBSD__ ; then
559 elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
560 targetos='GNU/kFreeBSD'
561 elif check_define __DragonFly__ ; then
563 elif check_define __NetBSD__; then
565 elif check_define __APPLE__; then
568 # This is a fatal error, but don't report it yet, because we
569 # might be going to just print the --help text, or it might
570 # be the result of a missing compiler.
575 # Some host OSes need non-standard checks for which CPU to use.
576 # Note that these checks are broken for cross-compilation: if you're
577 # cross-compiling to one of these OSes then you'll need to specify
578 # the correct CPU with the --cpu option.
581 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
582 # run 64-bit userspace code.
583 # If the user didn't specify a CPU explicitly and the kernel says this is
584 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
585 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
590 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
591 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
596 if test ! -z "$cpu" ; then
597 # command line argument
599 elif check_define __i386__ ; then
601 elif check_define __x86_64__ ; then
602 if check_define __ILP32__ ; then
607 elif check_define __sparc__ ; then
608 if check_define __arch64__ ; then
613 elif check_define _ARCH_PPC ; then
614 if check_define _ARCH_PPC64 ; then
619 elif check_define __mips__ ; then
621 elif check_define __ia64__ ; then
623 elif check_define __s390__ ; then
624 if check_define __s390x__ ; then
629 elif check_define __arm__ ; then
631 elif check_define __aarch64__ ; then
638 # Normalise host CPU name and set ARCH.
639 # Note that this case should only have supported host CPUs, not guests.
641 ppc|ppc64|s390|s390x|sparc64|x32)
645 i386|i486|i586|i686|i86pc|BePC)
670 # This will result in either an error or falling back to TCI later
674 if test -z "$ARCH"; then
680 # host *BSD for user mode
687 audio_possible_drivers="dsound sdl"
688 if check_include dsound.h; then
689 audio_drv_list="dsound"
698 audio_possible_drivers="oss sdl pa"
704 audio_possible_drivers="oss sdl pa"
705 # needed for kinfo_getvmmap(3) in libutil.h
707 # needed for kinfo_getproc
708 libs_qga="-lutil $libs_qga"
709 netmap="" # enable netmap autodetect
710 HOST_VARIANT_DIR="freebsd"
717 audio_possible_drivers="oss sdl pa"
718 HOST_VARIANT_DIR="dragonfly"
724 audio_possible_drivers="oss sdl"
726 HOST_VARIANT_DIR="netbsd"
733 audio_possible_drivers="sdl"
734 HOST_VARIANT_DIR="openbsd"
740 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
741 if [ "$cpu" = "x86_64" ] ; then
742 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
743 LDFLAGS="-arch x86_64 $LDFLAGS"
746 audio_drv_list="coreaudio"
747 audio_possible_drivers="coreaudio sdl"
748 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
749 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
750 # Disable attempts to use ObjectiveC features in os/object.h since they
751 # won't work when we're compiling with gcc as a C compiler.
752 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
753 HOST_VARIANT_DIR="darwin"
759 install="${INSTALL-ginstall}"
760 smbd="${SMBD-/usr/sfw/sbin/smbd}"
761 if test -f /usr/include/sys/soundcard.h ; then
764 audio_possible_drivers="oss sdl"
765 # needed for CMSG_ macros in sys/socket.h
766 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
767 # needed for TIOCWIN* defines in termios.h
768 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
769 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
770 solarisnetlibs="-lsocket -lnsl -lresolv"
771 LIBS="$solarisnetlibs $LIBS"
772 libs_qga="$solarisnetlibs $libs_qga"
776 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
777 LIBS="-lposix_error_mapper -lnetwork $LIBS"
781 audio_possible_drivers="oss alsa sdl pa"
788 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
793 if [ "$bsd" = "yes" ] ; then
794 if [ "$darwin" != "yes" ] ; then
799 : ${make=${MAKE-make}}
800 : ${install=${INSTALL-install}}
801 : ${python=${PYTHON-python}}
802 : ${smbd=${SMBD-/usr/sbin/smbd}}
804 # Default objcc to clang if available, otherwise use CC
811 if test "$mingw32" = "yes" ; then
814 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
815 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
816 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
817 # MinGW needs -mthreads for TLS and macro _MT.
818 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
819 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
821 if compile_prog "" "-liberty" ; then
822 LIBS="-liberty $LIBS"
824 prefix="c:/Program Files/QEMU"
827 qemu_docdir="\${prefix}"
829 sysconfdir="\${prefix}"
832 libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
838 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
840 --help|-h) show_help=yes
842 --version|-V) exec cat $source_path/VERSION
844 --prefix=*) prefix="$optarg"
846 --interp-prefix=*) interp_prefix="$optarg"
854 --host-cc=*) host_cc="$optarg"
858 --iasl=*) iasl="$optarg"
860 --objcc=*) objcc="$optarg"
862 --make=*) make="$optarg"
864 --install=*) install="$optarg"
866 --python=*) python="$optarg"
868 --gcov=*) gcov_tool="$optarg"
870 --smbd=*) smbd="$optarg"
880 --disable-debug-info)
890 --target-list=*) target_list="$optarg"
892 --enable-trace-backends=*) trace_backends="$optarg"
894 # XXX: backwards compatibility
895 --enable-trace-backend=*) trace_backends="$optarg"
897 --with-trace-file=*) trace_file="$optarg"
899 --enable-gprof) gprof="yes"
901 --enable-gcov) gcov="yes"
905 LDFLAGS="-static $LDFLAGS"
906 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
908 --mandir=*) mandir="$optarg"
910 --bindir=*) bindir="$optarg"
912 --libdir=*) libdir="$optarg"
914 --libexecdir=*) libexecdir="$optarg"
916 --includedir=*) includedir="$optarg"
918 --datadir=*) datadir="$optarg"
920 --with-confsuffix=*) confsuffix="$optarg"
922 --docdir=*) qemu_docdir="$optarg"
924 --sysconfdir=*) sysconfdir="$optarg"
926 --localstatedir=*) local_statedir="$optarg"
928 --firmwarepath=*) firmwarepath="$optarg"
930 --sbindir=*|--sharedstatedir=*|\
931 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
932 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
933 # These switches are silently ignored, for compatibility with
934 # autoconf-generated configure scripts. This allows QEMU's
935 # configure to be used by RPM and similar macros that set
936 # lots of directory switches by default.
938 --disable-sdl) sdl="no"
940 --enable-sdl) sdl="yes"
942 --with-sdlabi=*) sdlabi="$optarg"
944 --disable-qom-cast-debug) qom_cast_debug="no"
946 --enable-qom-cast-debug) qom_cast_debug="yes"
948 --disable-virtfs) virtfs="no"
950 --enable-virtfs) virtfs="yes"
952 --disable-mpath) mpath="no"
954 --enable-mpath) mpath="yes"
956 --disable-vnc) vnc="no"
958 --enable-vnc) vnc="yes"
960 --oss-lib=*) oss_lib="$optarg"
962 --audio-drv-list=*) audio_drv_list="$optarg"
964 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
966 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
968 --enable-debug-tcg) debug_tcg="yes"
970 --disable-debug-tcg) debug_tcg="no"
973 # Enable debugging options that aren't excessively noisy
979 --enable-sparse) sparse="yes"
981 --disable-sparse) sparse="no"
983 --disable-strip) strip_opt="no"
985 --disable-vnc-sasl) vnc_sasl="no"
987 --enable-vnc-sasl) vnc_sasl="yes"
989 --disable-vnc-jpeg) vnc_jpeg="no"
991 --enable-vnc-jpeg) vnc_jpeg="yes"
993 --disable-vnc-png) vnc_png="no"
995 --enable-vnc-png) vnc_png="yes"
997 --disable-slirp) slirp="no"
999 --disable-vde) vde="no"
1001 --enable-vde) vde="yes"
1003 --disable-netmap) netmap="no"
1005 --enable-netmap) netmap="yes"
1007 --disable-xen) xen="no"
1009 --enable-xen) xen="yes"
1011 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
1013 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
1015 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
1017 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
1019 --disable-brlapi) brlapi="no"
1021 --enable-brlapi) brlapi="yes"
1023 --disable-bluez) bluez="no"
1025 --enable-bluez) bluez="yes"
1027 --disable-kvm) kvm="no"
1029 --enable-kvm) kvm="yes"
1031 --disable-hax) hax="no"
1033 --enable-hax) hax="yes"
1035 --disable-tcg-interpreter) tcg_interpreter="no"
1037 --enable-tcg-interpreter) tcg_interpreter="yes"
1039 --disable-cap-ng) cap_ng="no"
1041 --enable-cap-ng) cap_ng="yes"
1043 --disable-tcg) tcg="no"
1045 --enable-tcg) tcg="yes"
1047 --disable-spice) spice="no"
1049 --enable-spice) spice="yes"
1051 --disable-libiscsi) libiscsi="no"
1053 --enable-libiscsi) libiscsi="yes"
1055 --disable-libnfs) libnfs="no"
1057 --enable-libnfs) libnfs="yes"
1059 --enable-profiler) profiler="yes"
1061 --disable-cocoa) cocoa="no"
1065 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1067 --disable-system) softmmu="no"
1069 --enable-system) softmmu="yes"
1076 --disable-linux-user) linux_user="no"
1078 --enable-linux-user) linux_user="yes"
1080 --disable-bsd-user) bsd_user="no"
1082 --enable-bsd-user) bsd_user="yes"
1084 --enable-pie) pie="yes"
1086 --disable-pie) pie="no"
1088 --enable-werror) werror="yes"
1090 --disable-werror) werror="no"
1092 --enable-stack-protector) stack_protector="yes"
1094 --disable-stack-protector) stack_protector="no"
1096 --disable-curses) curses="no"
1098 --enable-curses) curses="yes"
1100 --disable-curl) curl="no"
1102 --enable-curl) curl="yes"
1104 --disable-fdt) fdt="no"
1106 --enable-fdt) fdt="yes"
1108 --disable-linux-aio) linux_aio="no"
1110 --enable-linux-aio) linux_aio="yes"
1112 --disable-attr) attr="no"
1114 --enable-attr) attr="yes"
1116 --disable-blobs) blobs="no"
1118 --with-pkgversion=*) pkgversion=" ($optarg)"
1120 --with-coroutine=*) coroutine="$optarg"
1122 --disable-coroutine-pool) coroutine_pool="no"
1124 --enable-coroutine-pool) coroutine_pool="yes"
1126 --enable-debug-stack-usage) debug_stack_usage="yes"
1128 --enable-crypto-afalg) crypto_afalg="yes"
1130 --disable-crypto-afalg) crypto_afalg="no"
1132 --disable-docs) docs="no"
1134 --enable-docs) docs="yes"
1136 --disable-vhost-net) vhost_net="no"
1138 --enable-vhost-net) vhost_net="yes"
1140 --disable-vhost-scsi) vhost_scsi="no"
1142 --enable-vhost-scsi) vhost_scsi="yes"
1144 --disable-vhost-vsock) vhost_vsock="no"
1146 --enable-vhost-vsock) vhost_vsock="yes"
1148 --disable-opengl) opengl="no"
1150 --enable-opengl) opengl="yes"
1152 --disable-rbd) rbd="no"
1154 --enable-rbd) rbd="yes"
1156 --disable-xfsctl) xfs="no"
1158 --enable-xfsctl) xfs="yes"
1160 --disable-smartcard) smartcard="no"
1162 --enable-smartcard) smartcard="yes"
1164 --disable-libusb) libusb="no"
1166 --enable-libusb) libusb="yes"
1168 --disable-usb-redir) usb_redir="no"
1170 --enable-usb-redir) usb_redir="yes"
1172 --disable-zlib-test) zlib="no"
1174 --disable-lzo) lzo="no"
1176 --enable-lzo) lzo="yes"
1178 --disable-snappy) snappy="no"
1180 --enable-snappy) snappy="yes"
1182 --disable-bzip2) bzip2="no"
1184 --enable-bzip2) bzip2="yes"
1186 --enable-guest-agent) guest_agent="yes"
1188 --disable-guest-agent) guest_agent="no"
1190 --enable-guest-agent-msi) guest_agent_msi="yes"
1192 --disable-guest-agent-msi) guest_agent_msi="no"
1194 --with-vss-sdk) vss_win32_sdk=""
1196 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1198 --without-vss-sdk) vss_win32_sdk="no"
1200 --with-win-sdk) win_sdk=""
1202 --with-win-sdk=*) win_sdk="$optarg"
1204 --without-win-sdk) win_sdk="no"
1206 --enable-tools) want_tools="yes"
1208 --disable-tools) want_tools="no"
1210 --enable-seccomp) seccomp="yes"
1212 --disable-seccomp) seccomp="no"
1214 --disable-glusterfs) glusterfs="no"
1216 --enable-glusterfs) glusterfs="yes"
1218 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1219 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1221 --enable-vhdx|--disable-vhdx)
1222 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1224 --enable-uuid|--disable-uuid)
1225 echo "$0: $opt is obsolete, UUID support is always built" >&2
1227 --disable-gtk) gtk="no"
1229 --enable-gtk) gtk="yes"
1231 --tls-priority=*) tls_priority="$optarg"
1233 --disable-gnutls) gnutls="no"
1235 --enable-gnutls) gnutls="yes"
1237 --disable-nettle) nettle="no"
1239 --enable-nettle) nettle="yes"
1241 --disable-gcrypt) gcrypt="no"
1243 --enable-gcrypt) gcrypt="yes"
1245 --enable-rdma) rdma="yes"
1247 --disable-rdma) rdma="no"
1249 --with-gtkabi=*) gtkabi="$optarg"
1251 --disable-vte) vte="no"
1253 --enable-vte) vte="yes"
1255 --disable-virglrenderer) virglrenderer="no"
1257 --enable-virglrenderer) virglrenderer="yes"
1259 --disable-tpm) tpm="no"
1261 --enable-tpm) tpm="yes"
1263 --disable-libssh2) libssh2="no"
1265 --enable-libssh2) libssh2="yes"
1267 --disable-live-block-migration) live_block_migration="no"
1269 --enable-live-block-migration) live_block_migration="yes"
1271 --disable-numa) numa="no"
1273 --enable-numa) numa="yes"
1275 --disable-tcmalloc) tcmalloc="no"
1277 --enable-tcmalloc) tcmalloc="yes"
1279 --disable-jemalloc) jemalloc="no"
1281 --enable-jemalloc) jemalloc="yes"
1283 --disable-replication) replication="no"
1285 --enable-replication) replication="yes"
1287 --disable-vxhs) vxhs="no"
1289 --enable-vxhs) vxhs="yes"
1291 --disable-vhost-user) vhost_user="no"
1293 --enable-vhost-user)
1295 if test "$mingw32" = "yes"; then
1296 error_exit "vhost-user isn't available on win32"
1299 --disable-capstone) capstone="no"
1301 --enable-capstone) capstone="yes"
1303 --enable-capstone=git) capstone="git"
1305 --enable-capstone=system) capstone="system"
1307 --with-git=*) git="$optarg"
1310 echo "ERROR: unknown option $opt"
1311 echo "Try '$0 --help' for more information"
1317 if test "$vhost_user" = ""; then
1318 if test "$mingw32" = "yes"; then
1328 LDFLAGS="-m32 $LDFLAGS"
1332 LDFLAGS="-m64 $LDFLAGS"
1335 CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc"
1336 LDFLAGS="-m32 -mv8plus $LDFLAGS"
1339 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1340 LDFLAGS="-m64 $LDFLAGS"
1344 LDFLAGS="-m31 $LDFLAGS"
1348 LDFLAGS="-m64 $LDFLAGS"
1352 LDFLAGS="-m32 $LDFLAGS"
1353 cc_i386='$(CC) -m32'
1356 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1357 # If we truly care, we should simply detect this case at
1358 # runtime and generate the fallback to serial emulation.
1359 CPU_CFLAGS="-m64 -mcx16"
1360 LDFLAGS="-m64 $LDFLAGS"
1361 cc_i386='$(CC) -m32'
1365 LDFLAGS="-mx32 $LDFLAGS"
1366 cc_i386='$(CC) -m32'
1368 # No special flags required for other host CPUs
1371 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1372 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1374 # For user-mode emulation the host arch has to be one we explicitly
1375 # support, even if we're using TCI.
1376 if [ "$ARCH" = "unknown" ]; then
1381 default_target_list=""
1385 if [ "$softmmu" = "yes" ]; then
1386 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1388 if [ "$linux_user" = "yes" ]; then
1389 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1391 if [ "$bsd_user" = "yes" ]; then
1392 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1395 for config in $mak_wilds; do
1396 default_target_list="${default_target_list} $(basename "$config" .mak)"
1399 # Enumerate public trace backends for --help output
1400 trace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1402 if test x"$show_help" = x"yes" ; then
1405 Usage: configure [options]
1406 Options: [defaults in brackets after descriptions]
1409 --help print this message
1410 --prefix=PREFIX install in PREFIX [$prefix]
1411 --interp-prefix=PREFIX where to find shared libraries, etc.
1412 use %M for cpu name [$interp_prefix]
1413 --target-list=LIST set target list (default: build everything)
1414 $(echo Available targets: $default_target_list | \
1415 fold -s -w 53 | sed -e 's/^/ /')
1417 Advanced options (experts only):
1418 --source-path=PATH path of source code [$source_path]
1419 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1420 --cc=CC use C compiler CC [$cc]
1421 --iasl=IASL use ACPI compiler IASL [$iasl]
1422 --host-cc=CC use C compiler CC [$host_cc] for code run at
1424 --cxx=CXX use C++ compiler CXX [$cxx]
1425 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1426 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1427 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1428 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1429 --make=MAKE use specified make [$make]
1430 --install=INSTALL use specified install [$install]
1431 --python=PYTHON use specified python [$python]
1432 --smbd=SMBD use specified smbd [$smbd]
1433 --static enable static build [$static]
1434 --mandir=PATH install man pages in PATH
1435 --datadir=PATH install firmware in PATH$confsuffix
1436 --docdir=PATH install documentation in PATH$confsuffix
1437 --bindir=PATH install binaries in PATH
1438 --libdir=PATH install libraries in PATH
1439 --sysconfdir=PATH install config in PATH$confsuffix
1440 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1441 --firmwarepath=PATH search PATH for firmware files
1442 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1443 --enable-debug enable common debug build options
1444 --disable-strip disable stripping binaries
1445 --disable-werror disable compilation abort on warning
1446 --disable-stack-protector disable compiler-provided stack protection
1447 --audio-drv-list=LIST set audio drivers list:
1448 Available drivers: $audio_possible_drivers
1449 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1450 --block-drv-rw-whitelist=L
1451 set block driver read-write whitelist
1452 (affects only QEMU, not qemu-img)
1453 --block-drv-ro-whitelist=L
1454 set block driver read-only whitelist
1455 (affects only QEMU, not qemu-img)
1456 --enable-trace-backends=B Set trace backend
1457 Available backends: $trace_backend_list
1458 --with-trace-file=NAME Full PATH,NAME of file to store traces
1460 --disable-slirp disable SLIRP userspace network connectivity
1461 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1462 --oss-lib path to OSS library
1463 --cpu=CPU Build for host CPU [$cpu]
1464 --with-coroutine=BACKEND coroutine backend. Supported options:
1465 ucontext, sigaltstack, windows
1466 --enable-gcov enable test coverage analysis with gcov
1467 --gcov=GCOV use specified gcov [$gcov_tool]
1468 --disable-blobs disable installing provided firmware blobs
1469 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1470 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1471 --tls-priority default TLS protocol/cipher priority string
1472 --enable-gprof QEMU profiling with gprof
1473 --enable-profiler profiler support
1474 --enable-xen-pv-domain-build
1475 xen pv domain builder
1476 --enable-debug-stack-usage
1477 track the maximum stack usage of stacks created by qemu_alloc_stack
1479 Optional features, enabled with --enable-FEATURE and
1480 disabled with --disable-FEATURE, default is enabled if available:
1482 system all system emulation targets
1483 user supported user emulation targets
1484 linux-user all linux usermode emulation targets
1485 bsd-user all BSD usermode emulation targets
1486 docs build documentation
1487 guest-agent build the QEMU Guest Agent
1488 guest-agent-msi build guest agent Windows MSI installation package
1489 pie Position Independent Executables
1490 modules modules support
1491 debug-tcg TCG debugging (default is disabled)
1492 debug-info debugging information
1493 sparse sparse checker
1495 gnutls GNUTLS cryptography support
1496 nettle nettle cryptography support
1497 gcrypt libgcrypt cryptography support
1499 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1501 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1502 vte vte support for the gtk UI
1505 vnc-sasl SASL encryption for VNC server
1506 vnc-jpeg JPEG lossy compression for VNC server
1507 vnc-png PNG compression for VNC server
1508 cocoa Cocoa UI (Mac OS X only)
1510 mpath Multipath persistent reservation passthrough
1511 xen xen backend driver support
1513 brlapi BrlAPI (Braile)
1514 curl curl connectivity
1516 bluez bluez stack connectivity
1517 kvm KVM acceleration support
1518 hax HAX acceleration support
1519 rdma RDMA-based migration support
1520 vde support for vde network
1521 netmap support for netmap network
1522 linux-aio Linux AIO support
1523 cap-ng libcap-ng support
1524 attr attr and xattr support
1525 vhost-net vhost-net acceleration support
1527 rbd rados block device (rbd)
1528 libiscsi iscsi support
1530 smartcard smartcard support (libcacard)
1531 libusb libusb (for usb passthrough)
1532 live-block-migration Block migration in the main migration stream
1533 usb-redir usb network redirection support
1534 lzo support of lzo compression library
1535 snappy support of snappy compression library
1536 bzip2 support of bzip2 compression library
1537 (for reading bzip2-compressed dmg images)
1538 seccomp seccomp support
1539 coroutine-pool coroutine freelist (better performance)
1540 glusterfs GlusterFS backend
1542 libssh2 ssh block device support
1543 numa libnuma support
1544 tcmalloc tcmalloc support
1545 jemalloc jemalloc support
1546 replication replication support
1547 vhost-vsock virtio sockets device support
1548 opengl opengl support
1549 virglrenderer virgl rendering support
1550 xfsctl xfsctl support
1551 qom-cast-debug cast debugging support
1552 tools build qemu-io, qemu-nbd and qemu-image tools
1553 vxhs Veritas HyperScale vDisk backend support
1554 crypto-afalg Linux AF_ALG crypto backend driver
1555 vhost-user vhost-user support
1556 capstone capstone disassembler support
1558 NOTE: The object files are built at the place where configure is launched
1563 if ! has $python; then
1564 error_exit "Python not found. Use --python=/path/to/python"
1567 # Note that if the Python conditional here evaluates True we will exit
1568 # with status 1 which is a shell 'false' value.
1569 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1570 error_exit "Cannot use '$python', Python 2.6 or later is required." \
1571 "Note that Python 3 or later is not yet supported." \
1572 "Use --python=/path/to/python to specify a supported Python."
1575 # Suppress writing compiled files
1578 # Now we have handled --enable-tcg-interpreter and know we're not just
1579 # printing the help message, bail out if the host CPU isn't supported.
1580 if test "$ARCH" = "unknown"; then
1581 if test "$tcg_interpreter" = "yes" ; then
1582 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1584 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1588 # Consult white-list to determine whether to enable werror
1589 # by default. Only enable by default for git builds
1590 if test -z "$werror" ; then
1591 if test -d "$source_path/.git" -a \
1592 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
1599 # check that the C compiler works.
1601 if compile_object ; then
1602 : C compiler works ok
1604 error_exit "\"$cc\" either does not exist or does not work"
1606 if ! compile_prog ; then
1607 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1610 if test "$bogus_os" = "yes"; then
1611 # Now that we know that we're not printing the help and that
1612 # the compiler works (so the results of the check_defines we used
1613 # to identify the OS are reliable), if we didn't recognize the
1614 # host OS we should stop now.
1615 error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
1618 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1619 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1620 gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1621 gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1622 gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1623 gcc_flags="-Wno-string-plus-int $gcc_flags"
1624 # Note that we do not add -Werror to gcc_flags here, because that would
1625 # enable it for all configure tests. If a configure test failed due
1626 # to -Werror this would just silently disable some features,
1627 # so it's too error prone.
1629 cc_has_warning_flag() {
1632 # Use the positive sense of the flag when testing for -Wno-wombat
1633 # support (gcc will happily accept the -Wno- form of unknown
1635 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1636 compile_prog "-Werror $optflag" ""
1639 for flag in $gcc_flags; do
1640 if cc_has_warning_flag $flag ; then
1641 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1645 if test "$stack_protector" != "no"; then
1647 int main(int argc, char *argv[])
1649 char arr[64], *p = arr, *c = argv[0];
1656 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1658 for flag in $gcc_flags; do
1659 # We need to check both a compile and a link, since some compiler
1660 # setups fail only on a .c->.o compile and some only at link time
1661 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1662 compile_prog "-Werror $flag" ""; then
1663 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1668 if test "$stack_protector" = yes; then
1669 if test $sp_on = 0; then
1670 error_exit "Stack protector not supported"
1675 # Disable -Wmissing-braces on older compilers that warn even for
1676 # the "universal" C zero initializer {0}.
1682 if compile_object "-Werror" "" ; then
1685 QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces"
1688 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1689 # large functions that use global variables. The bug is in all releases of
1690 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1691 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1693 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1694 int main(void) { return 0; }
1696 #error No bug in this compiler.
1699 if compile_prog "-Werror -fno-gcse" "" ; then
1700 TRANSLATE_OPT_CFLAGS=-fno-gcse
1703 if test "$static" = "yes" ; then
1704 if test "$modules" = "yes" ; then
1705 error_exit "static and modules are mutually incompatible"
1707 if test "$pie" = "yes" ; then
1708 error_exit "static and pie are mutually incompatible"
1714 # Unconditional check for compiler __thread support
1716 static __thread int tls_var;
1717 int main(void) { return tls_var; }
1720 if ! compile_prog "-Werror" "" ; then
1721 error_exit "Your compiler does not support the __thread specifier for " \
1722 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1725 if test "$pie" = ""; then
1726 case "$cpu-$targetos" in
1727 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1735 if test "$pie" != "no" ; then
1739 # define THREAD __thread
1744 static THREAD int tls_var;
1746 int main(void) { return tls_var; }
1749 if compile_prog "-fPIE -DPIE" "-pie"; then
1750 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1751 LDFLAGS="-pie $LDFLAGS"
1753 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1754 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1757 if test "$pie" = "yes"; then
1758 error_exit "PIE not available due to missing toolchain support"
1760 echo "Disabling PIE due to missing toolchain support"
1765 if compile_prog "-Werror -fno-pie" "-nopie"; then
1766 CFLAGS_NOPIE="-fno-pie"
1767 LDFLAGS_NOPIE="-nopie"
1771 ##########################################
1772 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1773 # use i686 as default anyway, but for those that don't, an explicit
1774 # specification is necessary
1776 if test "$cpu" = "i386"; then
1778 static int sfaa(int *ptr)
1780 return __sync_fetch_and_and(ptr, 0);
1786 val = __sync_val_compare_and_swap(&val, 0, 1);
1791 if ! compile_prog "" "" ; then
1792 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1796 #########################################
1797 # Solaris specific configure tool chain decisions
1799 if test "$solaris" = "yes" ; then
1800 if has $install; then
1803 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1804 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1805 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1807 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1808 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1809 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1810 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1815 if test -f /usr/ccs/bin/ar ; then
1816 error_exit "No path includes ar" \
1817 "Add /usr/ccs/bin to your path and rerun configure"
1819 error_exit "No path includes ar"
1823 if test -z "${target_list+xxx}" ; then
1824 for target in $default_target_list; do
1825 supported_target $target 2>/dev/null && \
1826 target_list="$target_list $target"
1828 target_list="${target_list# }"
1830 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
1831 for target in $target_list; do
1832 # Check that we recognised the target name; this allows a more
1833 # friendly error message than if we let it fall through.
1834 case " $default_target_list " in
1838 error_exit "Unknown target name '$target'"
1841 supported_target $target || exit 1
1845 # see if system emulation was really requested
1846 case " $target_list " in
1847 *"-softmmu "*) softmmu=yes
1853 feature_not_found() {
1857 error_exit "User requested feature $feature" \
1858 "configure was not able to find it." \
1863 # big/little endian test
1865 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1866 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1867 extern int foo(short *, short *);
1868 int main(int argc, char *argv[]) {
1869 return foo(big_endian, little_endian);
1873 if compile_object ; then
1874 if grep -q BiGeNdIaN $TMPO ; then
1876 elif grep -q LiTtLeEnDiAn $TMPO ; then
1879 echo big/little test failed
1882 echo big/little test failed
1885 ##########################################
1886 # cocoa implies not SDL or GTK
1887 # (the cocoa UI code currently assumes it is always the active UI
1888 # and doesn't interact well with other UI frontend code)
1889 if test "$cocoa" = "yes"; then
1890 if test "$sdl" = "yes"; then
1891 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1893 if test "$gtk" = "yes"; then
1894 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1900 # Some versions of Mac OS X incorrectly define SIZE_MAX
1904 int main(int argc, char *argv[]) {
1905 return printf("%zu", SIZE_MAX);
1908 have_broken_size_max=no
1909 if ! compile_object -Werror ; then
1910 have_broken_size_max=yes
1913 ##########################################
1917 #include <sys/socket.h>
1918 #include <linux/ip.h>
1919 int main(void) { return sizeof(struct mmsghdr); }
1921 if compile_prog "" "" ; then
1927 ##########################################
1928 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1930 if test "$mingw32" = "yes"; then
1931 # Some versions of MinGW / Mingw-w64 lack localtime_r
1932 # and gmtime_r entirely.
1934 # Some versions of Mingw-w64 define a macro for
1935 # localtime_r/gmtime_r.
1937 # Some versions of Mingw-w64 will define functions
1938 # for localtime_r/gmtime_r, but only if you have
1939 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1940 # though, unistd.h and pthread.h both define
1943 # So this #undef localtime_r and #include <unistd.h>
1944 # are not in fact redundant.
1949 int main(void) { localtime_r(NULL, NULL); return 0; }
1951 if compile_prog "" "" ; then
1958 ##########################################
1961 if ! has "$pkg_config_exe"; then
1962 error_exit "pkg-config binary '$pkg_config_exe' not found"
1965 ##########################################
1968 if test "$linux_user" = "yes"; then
1971 #include <linux/futex.h>
1973 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1979 if ! compile_object ; then
1980 feature_not_found "nptl" "Install glibc and linux kernel headers."
1984 #########################################
1987 if test "$zlib" != "no" ; then
1990 int main(void) { zlibVersion(); return 0; }
1992 if compile_prog "" "-lz" ; then
1995 error_exit "zlib check failed" \
1996 "Make sure to have the zlib libs and headers installed."
2001 ##########################################
2004 if test "$lzo" != "no" ; then
2006 #include <lzo/lzo1x.h>
2007 int main(void) { lzo_version(); return 0; }
2009 if compile_prog "" "-llzo2" ; then
2010 libs_softmmu="$libs_softmmu -llzo2"
2013 if test "$lzo" = "yes"; then
2014 feature_not_found "liblzo2" "Install liblzo2 devel"
2020 ##########################################
2023 if test "$snappy" != "no" ; then
2025 #include <snappy-c.h>
2026 int main(void) { snappy_max_compressed_length(4096); return 0; }
2028 if compile_prog "" "-lsnappy" ; then
2029 libs_softmmu="$libs_softmmu -lsnappy"
2032 if test "$snappy" = "yes"; then
2033 feature_not_found "libsnappy" "Install libsnappy devel"
2039 ##########################################
2042 if test "$bzip2" != "no" ; then
2045 int main(void) { BZ2_bzlibVersion(); return 0; }
2047 if compile_prog "" "-lbz2" ; then
2050 if test "$bzip2" = "yes"; then
2051 feature_not_found "libbzip2" "Install libbzip2 devel"
2057 ##########################################
2060 if test "$seccomp" != "no" ; then
2063 libseccomp_minver="2.1.0"
2066 libseccomp_minver="2.2.0"
2069 libseccomp_minver="2.2.3"
2072 libseccomp_minver="2.3.0"
2075 libseccomp_minver=""
2079 if test "$libseccomp_minver" != "" &&
2080 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
2081 seccomp_cflags="$($pkg_config --cflags libseccomp)"
2082 seccomp_libs="$($pkg_config --libs libseccomp)"
2085 if test "$seccomp" = "yes" ; then
2086 if test "$libseccomp_minver" != "" ; then
2087 feature_not_found "libseccomp" \
2088 "Install libseccomp devel >= $libseccomp_minver"
2090 feature_not_found "libseccomp" \
2091 "libseccomp is not supported for host cpu $cpu"
2097 ##########################################
2100 if test "$xen" != "no" ; then
2101 # Check whether Xen library path is specified via --extra-ldflags to avoid
2102 # overriding this setting with pkg-config output. If not, try pkg-config
2103 # to obtain all needed flags.
2105 if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
2106 $pkg_config --exists xencontrol ; then
2107 xen_ctrl_version="$(printf '%d%02d%02d' \
2108 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2110 xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2111 xen_pc="$xen_pc xenevtchn xendevicemodel"
2112 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2113 libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
2114 LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
2117 xen_libs="-lxenstore -lxenctrl -lxenguest"
2118 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
2120 # First we test whether Xen headers and libraries are available.
2121 # If no, we are done and there is no Xen support.
2122 # If yes, more tests are run to detect the Xen version.
2126 #include <xenctrl.h>
2131 if ! compile_prog "" "$xen_libs" ; then
2133 if test "$xen" = "yes" ; then
2134 feature_not_found "xen" "Install xen devel"
2140 cat > $TMPC <<EOF &&
2141 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2142 #include <xenforeignmemory.h>
2144 xenforeignmemory_handle *xfmem;
2146 xfmem = xenforeignmemory_open(0, 0);
2147 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2152 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2154 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2155 xen_ctrl_version=41000
2158 cat > $TMPC <<EOF &&
2159 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2160 #define __XEN_TOOLS__
2161 #include <xendevicemodel.h>
2163 xendevicemodel_handle *xd;
2165 xd = xendevicemodel_open(0, 0);
2166 xendevicemodel_close(xd);
2171 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2173 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2174 xen_ctrl_version=40900
2177 cat > $TMPC <<EOF &&
2179 * If we have stable libs the we don't want the libxc compat
2180 * layers, regardless of what CFLAGS we may have been given.
2182 * Also, check if xengnttab_grant_copy_segment_t is defined and
2183 * grant copy operation is implemented.
2185 #undef XC_WANT_COMPAT_EVTCHN_API
2186 #undef XC_WANT_COMPAT_GNTTAB_API
2187 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2188 #include <xenctrl.h>
2189 #include <xenstore.h>
2190 #include <xenevtchn.h>
2191 #include <xengnttab.h>
2192 #include <xenforeignmemory.h>
2194 #include <xen/hvm/hvm_info_table.h>
2195 #if !defined(HVM_MAX_VCPUS)
2196 # error HVM_MAX_VCPUS not defined
2199 xc_interface *xc = NULL;
2200 xenforeignmemory_handle *xfmem;
2201 xenevtchn_handle *xe;
2202 xengnttab_handle *xg;
2203 xen_domain_handle_t handle;
2204 xengnttab_grant_copy_segment_t* seg = NULL;
2208 xc = xc_interface_open(0, 0, 0);
2209 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2210 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2211 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2212 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2213 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2215 xfmem = xenforeignmemory_open(0, 0);
2216 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2218 xe = xenevtchn_open(0, 0);
2221 xg = xengnttab_open(0, 0);
2222 xengnttab_grant_copy(xg, 0, seg);
2227 compile_prog "" "$xen_libs $xen_stable_libs"
2229 xen_ctrl_version=40800
2232 cat > $TMPC <<EOF &&
2234 * If we have stable libs the we don't want the libxc compat
2235 * layers, regardless of what CFLAGS we may have been given.
2237 #undef XC_WANT_COMPAT_EVTCHN_API
2238 #undef XC_WANT_COMPAT_GNTTAB_API
2239 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2240 #include <xenctrl.h>
2241 #include <xenstore.h>
2242 #include <xenevtchn.h>
2243 #include <xengnttab.h>
2244 #include <xenforeignmemory.h>
2246 #include <xen/hvm/hvm_info_table.h>
2247 #if !defined(HVM_MAX_VCPUS)
2248 # error HVM_MAX_VCPUS not defined
2251 xc_interface *xc = NULL;
2252 xenforeignmemory_handle *xfmem;
2253 xenevtchn_handle *xe;
2254 xengnttab_handle *xg;
2255 xen_domain_handle_t handle;
2259 xc = xc_interface_open(0, 0, 0);
2260 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2261 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2262 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2263 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2264 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2266 xfmem = xenforeignmemory_open(0, 0);
2267 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2269 xe = xenevtchn_open(0, 0);
2272 xg = xengnttab_open(0, 0);
2273 xengnttab_map_grant_ref(xg, 0, 0, 0);
2278 compile_prog "" "$xen_libs $xen_stable_libs"
2280 xen_ctrl_version=40701
2283 cat > $TMPC <<EOF &&
2284 #include <xenctrl.h>
2287 xc_interface *xc = NULL;
2288 xen_domain_handle_t handle;
2289 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2293 compile_prog "" "$xen_libs"
2295 xen_ctrl_version=40700
2300 cat > $TMPC <<EOF &&
2301 #include <xenctrl.h>
2302 #include <xenstore.h>
2304 #include <xen/hvm/hvm_info_table.h>
2305 #if !defined(HVM_MAX_VCPUS)
2306 # error HVM_MAX_VCPUS not defined
2311 xc = xc_interface_open(0, 0, 0);
2312 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2313 xc_gnttab_open(NULL, 0);
2314 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2315 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2316 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2317 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2321 compile_prog "" "$xen_libs"
2323 xen_ctrl_version=40600
2328 cat > $TMPC <<EOF &&
2329 #include <xenctrl.h>
2330 #include <xenstore.h>
2332 #include <xen/hvm/hvm_info_table.h>
2333 #if !defined(HVM_MAX_VCPUS)
2334 # error HVM_MAX_VCPUS not defined
2339 xc = xc_interface_open(0, 0, 0);
2340 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2341 xc_gnttab_open(NULL, 0);
2342 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2343 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2344 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2348 compile_prog "" "$xen_libs"
2350 xen_ctrl_version=40500
2354 cat > $TMPC <<EOF &&
2355 #include <xenctrl.h>
2356 #include <xenstore.h>
2358 #include <xen/hvm/hvm_info_table.h>
2359 #if !defined(HVM_MAX_VCPUS)
2360 # error HVM_MAX_VCPUS not defined
2365 xc = xc_interface_open(0, 0, 0);
2366 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2367 xc_gnttab_open(NULL, 0);
2368 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2369 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2373 compile_prog "" "$xen_libs"
2375 xen_ctrl_version=40200
2379 if test "$xen" = "yes" ; then
2380 feature_not_found "xen (unsupported version)" \
2381 "Install a supported xen (xen 4.2 or newer)"
2386 if test "$xen" = yes; then
2387 if test $xen_ctrl_version -ge 40701 ; then
2388 libs_softmmu="$xen_stable_libs $libs_softmmu"
2390 libs_softmmu="$xen_libs $libs_softmmu"
2395 if test "$xen_pci_passthrough" != "no"; then
2396 if test "$xen" = "yes" && test "$linux" = "yes"; then
2397 xen_pci_passthrough=yes
2399 if test "$xen_pci_passthrough" = "yes"; then
2400 error_exit "User requested feature Xen PCI Passthrough" \
2401 " but this feature requires /sys from Linux"
2403 xen_pci_passthrough=no
2407 if test "$xen_pv_domain_build" = "yes" &&
2408 test "$xen" != "yes"; then
2409 error_exit "User requested Xen PV domain builder support" \
2410 "which requires Xen support."
2413 ##########################################
2415 if test "$sparse" != "no" ; then
2419 if test "$sparse" = "yes" ; then
2420 feature_not_found "sparse" "Install sparse binary"
2426 ##########################################
2430 if $pkg_config --exists "x11"; then
2431 x11_cflags=$($pkg_config --cflags x11)
2432 x11_libs=$($pkg_config --libs x11)
2435 ##########################################
2438 if test "$gtkabi" = ""; then
2439 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2440 # Use 2.0 as a fallback if that is available.
2441 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2443 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2450 if test "$gtk" != "no"; then
2451 gtkpackage="gtk+-$gtkabi"
2452 gtkx11package="gtk+-x11-$gtkabi"
2453 if test "$gtkabi" = "3.0" ; then
2458 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2459 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2460 gtk_libs=$($pkg_config --libs $gtkpackage)
2461 gtk_version=$($pkg_config --modversion $gtkpackage)
2462 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2463 gtk_cflags="$gtk_cflags $x11_cflags"
2464 gtk_libs="$gtk_libs $x11_libs"
2466 libs_softmmu="$gtk_libs $libs_softmmu"
2468 elif test "$gtk" = "yes"; then
2469 feature_not_found "gtk" "Install gtk3-devel"
2476 ##########################################
2480 # Unfortunately some distros have bad pkg-config information for gnutls
2481 # such that it claims to exist but you get a compiler error if you try
2482 # to use the options returned by --libs. Specifically, Ubuntu for --static
2483 # builds doesn't work:
2484 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2486 # So sanity check the cflags/libs before assuming gnutls can be used.
2487 if ! $pkg_config --exists "gnutls"; then
2492 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2497 if test "$gnutls" != "no"; then
2498 if gnutls_works; then
2499 gnutls_cflags=$($pkg_config --cflags gnutls)
2500 gnutls_libs=$($pkg_config --libs gnutls)
2501 libs_softmmu="$gnutls_libs $libs_softmmu"
2502 libs_tools="$gnutls_libs $libs_tools"
2503 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2506 # gnutls_rnd requires >= 2.11.0
2507 if $pkg_config --exists "gnutls >= 2.11.0"; then
2513 if $pkg_config --exists 'gnutls >= 3.0'; then
2516 elif $pkg_config --exists 'gnutls >= 2.12'; then
2517 case $($pkg_config --libs --static gnutls) in
2535 elif test "$gnutls" = "yes"; then
2536 feature_not_found "gnutls" "Install gnutls devel"
2546 # If user didn't give a --disable/enable-gcrypt flag,
2547 # then mark as disabled if user requested nettle
2548 # explicitly, or if gnutls links to nettle
2549 if test -z "$gcrypt"
2551 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2557 # If user didn't give a --disable/enable-nettle flag,
2558 # then mark as disabled if user requested gcrypt
2559 # explicitly, or if gnutls links to gcrypt
2560 if test -z "$nettle"
2562 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2568 has_libgcrypt_config() {
2569 if ! has "libgcrypt-config"
2574 if test -n "$cross_prefix"
2576 host=$(libgcrypt-config --host)
2577 if test "$host-" != $cross_prefix
2586 if test "$gcrypt" != "no"; then
2587 if has_libgcrypt_config; then
2588 gcrypt_cflags=$(libgcrypt-config --cflags)
2589 gcrypt_libs=$(libgcrypt-config --libs)
2590 # Debian has remove -lgpg-error from libgcrypt-config
2591 # as it "spreads unnecessary dependencies" which in
2592 # turn breaks static builds...
2593 if test "$static" = "yes"
2595 gcrypt_libs="$gcrypt_libs -lgpg-error"
2597 libs_softmmu="$gcrypt_libs $libs_softmmu"
2598 libs_tools="$gcrypt_libs $libs_tools"
2599 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2601 if test -z "$nettle"; then
2608 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2610 NULL, 0, 0, 0, NULL);
2614 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2621 gcry_mac_hd_t handle;
2622 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2623 GCRY_MAC_FLAG_SECURE, NULL);
2627 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2631 if test "$gcrypt" = "yes"; then
2632 feature_not_found "gcrypt" "Install gcrypt devel"
2640 if test "$nettle" != "no"; then
2641 if $pkg_config --exists "nettle"; then
2642 nettle_cflags=$($pkg_config --cflags nettle)
2643 nettle_libs=$($pkg_config --libs nettle)
2644 nettle_version=$($pkg_config --modversion nettle)
2645 libs_softmmu="$nettle_libs $libs_softmmu"
2646 libs_tools="$nettle_libs $libs_tools"
2647 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2652 #include <nettle/pbkdf2.h>
2654 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2658 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2662 if test "$nettle" = "yes"; then
2663 feature_not_found "nettle" "Install nettle devel"
2670 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2672 error_exit "Only one of gcrypt & nettle can be enabled"
2675 ##########################################
2676 # libtasn1 - only for the TLS creds/session test suite
2681 if $pkg_config --exists "libtasn1"; then
2682 tasn1_cflags=$($pkg_config --cflags libtasn1)
2683 tasn1_libs=$($pkg_config --libs libtasn1)
2689 ##########################################
2690 # getifaddrs (for tests/test-io-channel-socket )
2693 if ! check_include "ifaddrs.h" ; then
2697 ##########################################
2700 if test "$vte" != "no"; then
2701 if test "$gtkabi" = "3.0"; then
2702 vteminversion="0.32.0"
2703 if $pkg_config --exists "vte-2.91"; then
2704 vtepackage="vte-2.91"
2706 vtepackage="vte-2.90"
2710 vteminversion="0.24.0"
2712 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2713 vte_cflags=$($pkg_config --cflags $vtepackage)
2714 vte_libs=$($pkg_config --libs $vtepackage)
2715 vteversion=$($pkg_config --modversion $vtepackage)
2716 libs_softmmu="$vte_libs $libs_softmmu"
2718 elif test "$vte" = "yes"; then
2719 if test "$gtkabi" = "3.0"; then
2720 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
2722 feature_not_found "vte" "Install libvte devel"
2729 ##########################################
2732 # Look for sdl configuration program (pkg-config or sdl-config). Try
2733 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2735 if test "$sdlabi" = ""; then
2736 if $pkg_config --exists "sdl2"; then
2738 elif $pkg_config --exists "sdl"; then
2745 if test $sdlabi = "2.0"; then
2746 sdl_config=$sdl2_config
2748 sdlconfigname=sdl2_config
2749 elif test $sdlabi = "1.2"; then
2751 sdlconfigname=sdl_config
2753 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2756 if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
2757 sdl_config=$sdlconfigname
2760 if $pkg_config $sdlname --exists; then
2761 sdlconfig="$pkg_config $sdlname"
2762 sdlversion=$($sdlconfig --modversion 2>/dev/null)
2763 elif has ${sdl_config}; then
2764 sdlconfig="$sdl_config"
2765 sdlversion=$($sdlconfig --version)
2767 if test "$sdl" = "yes" ; then
2768 feature_not_found "sdl" "Install SDL2-devel"
2772 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2773 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2777 if test "$sdl" != "no" ; then
2780 #undef main /* We don't want SDL to override our main() */
2781 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2783 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
2784 if test "$static" = "yes" ; then
2785 if $pkg_config $sdlname --exists; then
2786 sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null)
2788 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2791 sdl_libs=$($sdlconfig --libs 2>/dev/null)
2793 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2794 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
2800 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2801 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2802 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2803 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2804 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2806 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2812 else # sdl not found
2813 if test "$sdl" = "yes" ; then
2814 feature_not_found "sdl" "Install SDL devel"
2817 fi # sdl compile test
2820 if test "$sdl" = "yes" ; then
2823 #if defined(SDL_VIDEO_DRIVER_X11)
2824 #include <X11/XKBlib.h>
2826 #error No x11 support
2828 int main(void) { return 0; }
2830 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2831 sdl_cflags="$sdl_cflags $x11_cflags"
2832 sdl_libs="$sdl_libs $x11_libs"
2836 ##########################################
2837 # RDMA needs OpenFabrics libraries
2838 if test "$rdma" != "no" ; then
2840 #include <rdma/rdma_cma.h>
2841 int main(void) { return 0; }
2843 rdma_libs="-lrdmacm -libverbs"
2844 if compile_prog "" "$rdma_libs" ; then
2847 if test "$rdma" = "yes" ; then
2849 " OpenFabrics librdmacm/libibverbs not present." \
2851 " (1) Fast: Install infiniband packages from your distro." \
2852 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2853 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2860 ##########################################
2861 # VNC SASL detection
2862 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2864 #include <sasl/sasl.h>
2866 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2868 # Assuming Cyrus-SASL installed in /usr prefix
2870 vnc_sasl_libs="-lsasl2"
2871 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2873 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2874 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2876 if test "$vnc_sasl" = "yes" ; then
2877 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2883 ##########################################
2884 # VNC JPEG detection
2885 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2888 #include <jpeglib.h>
2889 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2892 vnc_jpeg_libs="-ljpeg"
2893 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2895 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2896 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2898 if test "$vnc_jpeg" = "yes" ; then
2899 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2905 ##########################################
2907 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2909 //#include <stdio.h>
2913 png_structp png_ptr;
2914 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2915 return png_ptr != 0;
2918 if $pkg_config libpng --exists; then
2919 vnc_png_cflags=$($pkg_config libpng --cflags)
2920 vnc_png_libs=$($pkg_config libpng --libs)
2923 vnc_png_libs="-lpng"
2925 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2927 libs_softmmu="$vnc_png_libs $libs_softmmu"
2928 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2930 if test "$vnc_png" = "yes" ; then
2931 feature_not_found "vnc-png" "Install libpng devel"
2937 ##########################################
2939 if test "$xkbcommon" != "no" ; then
2940 if $pkg_config xkbcommon --exists; then
2941 xkbcommon_cflags=$($pkg_config xkbcommon --cflags)
2942 xkbcommon_libs=$($pkg_config xkbcommon --libs)
2945 if test "$xkbcommon" = "yes" ; then
2946 feature_not_found "xkbcommon" "Install libxkbcommon-devel"
2952 ##########################################
2953 # fnmatch() probe, used for ACL routines
2956 #include <fnmatch.h>
2959 fnmatch("foo", "foo", 0);
2963 if compile_prog "" "" ; then
2967 ##########################################
2968 # xfsctl() probe, used for file-posix.c
2969 if test "$xfs" != "no" ; then
2971 #include <stddef.h> /* NULL */
2972 #include <xfs/xfs.h>
2975 xfsctl(NULL, 0, 0, NULL);
2979 if compile_prog "" "" ; then
2982 if test "$xfs" = "yes" ; then
2983 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2989 ##########################################
2990 # vde libraries probe
2991 if test "$vde" != "no" ; then
2992 vde_libs="-lvdeplug"
2994 #include <libvdeplug.h>
2997 struct vde_open_args a = {0, 0, 0};
3003 if compile_prog "" "$vde_libs" ; then
3006 if test "$vde" = "yes" ; then
3007 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
3013 ##########################################
3014 # netmap support probe
3015 # Apart from looking for netmap headers, we make sure that the host API version
3016 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3017 # a minor/major version number. Minor new features will be marked with values up
3018 # to 15, and if something happens that requires a change to the backend we will
3019 # move above 15, submit the backend fixes and modify this two bounds.
3020 if test "$netmap" != "no" ; then
3022 #include <inttypes.h>
3024 #include <net/netmap.h>
3025 #include <net/netmap_user.h>
3026 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3029 int main(void) { return 0; }
3031 if compile_prog "" "" ; then
3034 if test "$netmap" = "yes" ; then
3035 feature_not_found "netmap"
3041 ##########################################
3042 # libcap-ng library probe
3043 if test "$cap_ng" != "no" ; then
3049 capng_capability_to_name(CAPNG_EFFECTIVE);
3053 if compile_prog "" "$cap_libs" ; then
3055 libs_tools="$cap_libs $libs_tools"
3057 if test "$cap_ng" = "yes" ; then
3058 feature_not_found "cap_ng" "Install libcap-ng devel"
3064 ##########################################
3065 # Sound support libraries probe
3076 int main(void) { $exp }
3078 if compile_prog "$cfl" "$lib" ; then
3081 error_exit "$drv check failed" \
3082 "Make sure to have the $drv libs and headers installed."
3086 audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
3087 for drv in $audio_drv_list; do
3090 audio_drv_probe $drv alsa/asoundlib.h -lasound \
3091 "return snd_pcm_close((snd_pcm_t *)0);"
3092 alsa_libs="-lasound"
3096 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
3097 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3098 pulse_libs="-lpulse"
3103 if test "$sdl" = "no"; then
3104 error_exit "sdl not found or disabled, can not use sdl audio driver"
3109 coreaudio_libs="-framework CoreAudio"
3113 dsound_libs="-lole32 -ldxguid"
3122 # XXX: Probes for CoreAudio, DirectSound
3126 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
3127 error_exit "Unknown driver '$drv' selected" \
3128 "Possible drivers are: $audio_possible_drivers"
3134 ##########################################
3137 if test "$brlapi" != "no" ; then
3138 brlapi_libs="-lbrlapi"
3142 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3144 if compile_prog "" "$brlapi_libs" ; then
3147 if test "$brlapi" = "yes" ; then
3148 feature_not_found "brlapi" "Install brlapi devel"
3154 ##########################################
3156 if test "$curses" != "no" ; then
3157 if test "$mingw32" = "yes" ; then
3158 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3159 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3161 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3162 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3171 setlocale(LC_ALL, "");
3173 addwstr(L"wide chars\n");
3175 add_wch(WACS_DEGREE);
3180 for curses_inc in $curses_inc_list; do
3181 # Make sure we get the wide character prototypes
3182 curses_inc="-DNCURSES_WIDECHAR $curses_inc"
3184 for curses_lib in $curses_lib_list; do
3186 if compile_prog "$curses_inc" "$curses_lib" ; then
3188 QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS"
3189 libs_softmmu="$curses_lib $libs_softmmu"
3193 if test "$curses_found" = yes ; then
3198 if test "$curses_found" = "yes" ; then
3201 if test "$curses" = "yes" ; then
3202 feature_not_found "curses" "Install ncurses devel"
3208 ##########################################
3210 if test "$curl" != "no" ; then
3211 if $pkg_config libcurl --exists; then
3212 curlconfig="$pkg_config libcurl"
3214 curlconfig=curl-config
3217 #include <curl/curl.h>
3218 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3220 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3221 curl_libs=$($curlconfig --libs 2>/dev/null)
3222 if compile_prog "$curl_cflags" "$curl_libs" ; then
3225 if test "$curl" = "yes" ; then
3226 feature_not_found "curl" "Install libcurl devel"
3232 ##########################################
3233 # bluez support probe
3234 if test "$bluez" != "no" ; then
3236 #include <bluetooth/bluetooth.h>
3237 int main(void) { return bt_error(0); }
3239 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3240 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
3241 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
3243 libs_softmmu="$bluez_libs $libs_softmmu"
3245 if test "$bluez" = "yes" ; then
3246 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
3252 ##########################################
3253 # glib support probe
3255 if test "$mingw32" = yes; then
3260 glib_modules=gthread-2.0
3261 if test "$modules" = yes; then
3262 glib_modules="$glib_modules gmodule-2.0"
3265 # This workaround is required due to a bug in pkg-config file for glib as it
3266 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3268 if test "$static" = yes -a "$mingw32" = yes; then
3269 QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3272 for i in $glib_modules; do
3273 if $pkg_config --atleast-version=$glib_req_ver $i; then
3274 glib_cflags=$($pkg_config --cflags $i)
3275 glib_libs=$($pkg_config --libs $i)
3276 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
3277 LIBS="$glib_libs $LIBS"
3278 libs_qga="$glib_libs $libs_qga"
3280 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3284 # Sanity check that the current size_t matches the
3285 # size that glib thinks it should be. This catches
3286 # problems on multi-arch where people try to build
3287 # 32-bit QEMU while pointing at 64-bit glib headers
3292 #define QEMU_BUILD_BUG_ON(x) \
3293 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3296 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3301 if ! compile_prog "$CFLAGS" "$LIBS" ; then
3302 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3303 "You probably need to set PKG_CONFIG_LIBDIR"\
3304 "to point to the right pkg-config files for your"\
3308 # g_test_trap_subprocess added in 2.38. Used by some tests.
3310 if ! $pkg_config --atleast-version=2.38 glib-2.0; then
3314 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3317 int main(void) { return 0; }
3319 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3320 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3321 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3322 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3326 ##########################################
3327 # SHA command probe for modules
3328 if test "$modules" = yes; then
3329 shacmd_probe="sha1sum sha1 shasum"
3330 for c in $shacmd_probe; do
3336 if test "$shacmd" = ""; then
3337 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3341 ##########################################
3342 # pixman support probe
3344 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3347 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
3348 pixman_cflags=$($pkg_config --cflags pixman-1)
3349 pixman_libs=$($pkg_config --libs pixman-1)
3351 error_exit "pixman >= 0.21.8 not present." \
3352 "Please install the pixman devel package."
3355 ##########################################
3356 # libmpathpersist probe
3358 if test "$mpath" != "no" ; then
3360 #include <libudev.h>
3361 #include <mpath_persist.h>
3362 unsigned mpath_mx_alloc_len = 1024;
3364 static struct config *multipath_conf;
3365 extern struct udev *udev;
3366 extern struct config *get_multipath_config(void);
3367 extern void put_multipath_config(struct config *conf);
3369 struct config *get_multipath_config(void) { return multipath_conf; }
3370 void put_multipath_config(struct config *conf) { }
3374 multipath_conf = mpath_lib_init();
3378 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3387 ##########################################
3390 if test "$cap" != "no" ; then
3393 #include <sys/capability.h>
3394 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3396 if compile_prog "" "-lcap" ; then
3403 ##########################################
3405 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
3409 #include <pthread.h>
3410 static void *f(void *p) { return NULL; }
3413 pthread_create(&thread, 0, f, 0);
3417 if compile_prog "" "" ; then
3420 for pthread_lib in $PTHREADLIBS_LIST; do
3421 if compile_prog "" "$pthread_lib" ; then
3424 for lib_entry in $LIBS; do
3425 if test "$lib_entry" = "$pthread_lib"; then
3430 if test "$found" = "no"; then
3431 LIBS="$pthread_lib $LIBS"
3433 PTHREAD_LIB="$pthread_lib"
3439 if test "$mingw32" != yes -a "$pthread" = no; then
3440 error_exit "pthread check failed" \
3441 "Make sure to have the pthread libs and headers installed."
3444 # check for pthread_setname_np
3445 pthread_setname_np=no
3447 #include <pthread.h>
3449 static void *f(void *p) { return NULL; }
3453 pthread_create(&thread, 0, f, 0);
3454 pthread_setname_np(thread, "QEMU");
3458 if compile_prog "" "$pthread_lib" ; then
3459 pthread_setname_np=yes
3462 ##########################################
3464 if test "$rbd" != "no" ; then
3467 #include <rbd/librbd.h>
3470 rados_create(&cluster, NULL);
3474 rbd_libs="-lrbd -lrados"
3475 if compile_prog "" "$rbd_libs" ; then
3478 if test "$rbd" = "yes" ; then
3479 feature_not_found "rados block device" "Install librbd/ceph devel"
3485 ##########################################
3487 min_libssh2_version=1.2.8
3488 if test "$libssh2" != "no" ; then
3489 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
3490 libssh2_cflags=$($pkg_config libssh2 --cflags)
3491 libssh2_libs=$($pkg_config libssh2 --libs)
3494 if test "$libssh2" = "yes" ; then
3495 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
3501 ##########################################
3502 # libssh2_sftp_fsync probe
3504 if test "$libssh2" = "yes"; then
3507 #include <libssh2.h>
3508 #include <libssh2_sftp.h>
3510 LIBSSH2_SESSION *session;
3512 LIBSSH2_SFTP_HANDLE *sftp_handle;
3513 session = libssh2_session_init ();
3514 sftp = libssh2_sftp_init (session);
3515 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3516 libssh2_sftp_fsync (sftp_handle);
3520 # libssh2_cflags/libssh2_libs defined in previous test.
3521 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3522 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3526 ##########################################
3529 if test "$linux_aio" != "no" ; then
3532 #include <sys/eventfd.h>
3534 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3536 if compile_prog "" "-laio" ; then
3539 if test "$linux_aio" = "yes" ; then
3540 feature_not_found "linux AIO" "Install libaio devel"
3546 ##########################################
3547 # TPM passthrough is only on x86 Linux
3549 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3550 tpm_passthrough=$tpm
3555 # TPM emulator is for all posix systems
3556 if test "$mingw32" != "yes"; then
3561 ##########################################
3564 if test "$attr" != "no" ; then
3567 #include <sys/types.h>
3568 #ifdef CONFIG_LIBATTR
3569 #include <attr/xattr.h>
3571 #include <sys/xattr.h>
3573 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3575 if compile_prog "" "" ; then
3577 # Older distros have <attr/xattr.h>, and need -lattr:
3578 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3583 if test "$attr" = "yes" ; then
3584 feature_not_found "ATTR" "Install libc6 or libattr devel"
3590 ##########################################
3593 #include <sys/types.h>
3594 #include <sys/uio.h>
3596 int main(void) { return sizeof(struct iovec); }
3599 if compile_prog "" "" ; then
3603 ##########################################
3606 #include <sys/types.h>
3607 #include <sys/uio.h>
3609 int main(void) { return preadv(0, 0, 0, 0); }
3612 if compile_prog "" "" ; then
3616 ##########################################
3618 # fdt support is mandatory for at least some target architectures,
3619 # so insist on it if we're building those system emulators.
3621 for target in $target_list; do
3623 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu)
3629 if test "$fdt_required" = "yes"; then
3630 if test "$fdt" = "no"; then
3631 error_exit "fdt disabled but some requested targets require it." \
3632 "You can turn off fdt only if you also disable all the system emulation" \
3633 "targets which need it (by specifying a cut down --target-list)."
3638 if test "$fdt" != "no" ; then
3640 # explicitly check for libfdt_env.h as it is missing in some stable installs
3641 # and test for required functions to make sure we are on a version >= 1.4.2
3644 #include <libfdt_env.h>
3645 int main(void) { fdt_first_subnode(0, 0); return 0; }
3647 if compile_prog "" "$fdt_libs" ; then
3648 # system DTC is good - use it
3651 # have GIT checkout, so activate dtc submodule
3652 if test -e "${source_path}/.git" ; then
3653 git_submodules="${git_submodules} dtc"
3655 if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
3659 if [ "$pwd_is_source_path" != "y" ] ; then
3660 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3661 symlink "$source_path/dtc/scripts" "dtc/scripts"
3663 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3664 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3665 elif test "$fdt" = "yes" ; then
3666 # Not a git build & no libfdt found, prompt for system install
3667 error_exit "DTC (libfdt) version >= 1.4.2 not present." \
3668 "Please install the DTC (libfdt) devel package"
3670 # don't have and don't want
3677 libs_softmmu="$libs_softmmu $fdt_libs"
3679 ##########################################
3680 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3682 if test "$opengl" != "no" ; then
3683 opengl_pkgs="epoxy libdrm gbm"
3684 if $pkg_config $opengl_pkgs x11; then
3685 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3686 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3688 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3691 QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
3693 if test "$opengl" = "yes" ; then
3694 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3702 if test "$opengl" = "yes"; then
3704 #include <epoxy/egl.h>
3705 #ifndef EGL_MESA_image_dma_buf_export
3706 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3708 int main(void) { return 0; }
3710 if compile_prog "" "" ; then
3716 ##########################################
3718 if test "$glusterfs" != "no" ; then
3719 if $pkg_config --atleast-version=3 glusterfs-api; then
3721 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3722 glusterfs_libs=$($pkg_config --libs glusterfs-api)
3723 if $pkg_config --atleast-version=4 glusterfs-api; then
3724 glusterfs_xlator_opt="yes"
3726 if $pkg_config --atleast-version=5 glusterfs-api; then
3727 glusterfs_discard="yes"
3729 if $pkg_config --atleast-version=6 glusterfs-api; then
3730 glusterfs_fallocate="yes"
3731 glusterfs_zerofill="yes"
3734 if test "$glusterfs" = "yes" ; then
3735 feature_not_found "GlusterFS backend support" \
3736 "Install glusterfs-api devel >= 3"
3742 # Check for inotify functions when we are building linux-user
3743 # emulator. This is done because older glibc versions don't
3744 # have syscall stubs for these implemented. In that case we
3745 # don't provide them even if kernel supports them.
3749 #include <sys/inotify.h>
3754 /* try to start inotify */
3755 return inotify_init();
3758 if compile_prog "" "" ; then
3764 #include <sys/inotify.h>
3769 /* try to start inotify */
3770 return inotify_init1(0);
3773 if compile_prog "" "" ; then
3777 # check if pipe2 is there
3786 return pipe2(pipefd, O_CLOEXEC);
3789 if compile_prog "" "" ; then
3793 # check if accept4 is there
3796 #include <sys/socket.h>
3801 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3805 if compile_prog "" "" ; then
3809 # check if tee/splice is there. vmsplice was added same time.
3819 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3820 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3824 if compile_prog "" "" ; then
3828 ##########################################
3831 if test "$numa" != "no" ; then
3834 int main(void) { return numa_available(); }
3837 if compile_prog "" "-lnuma" ; then
3839 libs_softmmu="-lnuma $libs_softmmu"
3841 if test "$numa" = "yes" ; then
3842 feature_not_found "numa" "install numactl devel"
3848 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3849 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3853 ##########################################
3856 if test "$tcmalloc" = "yes" ; then
3859 int main(void) { malloc(1); return 0; }
3862 if compile_prog "" "-ltcmalloc" ; then
3863 LIBS="-ltcmalloc $LIBS"
3865 feature_not_found "tcmalloc" "install gperftools devel"
3869 ##########################################
3872 if test "$jemalloc" = "yes" ; then
3875 int main(void) { malloc(1); return 0; }
3878 if compile_prog "" "-ljemalloc" ; then
3879 LIBS="-ljemalloc $LIBS"
3881 feature_not_found "jemalloc" "install jemalloc devel"
3885 ##########################################
3890 #include <sys/syscall.h>
3892 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3895 if compile_prog "" "" ; then
3899 # check if eventfd is supported
3902 #include <sys/eventfd.h>
3906 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3909 if compile_prog "" "" ; then
3913 # check if memfd is supported
3916 #include <sys/memfd.h>
3920 return memfd_create("foo", MFD_ALLOW_SEALING);
3923 if compile_prog "" "" ; then
3929 # check for fallocate
3936 fallocate(0, 0, 0, 0);
3940 if compile_prog "" "" ; then
3944 # check for fallocate hole punching
3945 fallocate_punch_hole=no
3948 #include <linux/falloc.h>
3952 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3956 if compile_prog "" "" ; then
3957 fallocate_punch_hole=yes
3960 # check that fallocate supports range zeroing inside the file
3961 fallocate_zero_range=no
3964 #include <linux/falloc.h>
3968 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3972 if compile_prog "" "" ; then
3973 fallocate_zero_range=yes
3976 # check for posix_fallocate
3983 posix_fallocate(0, 0, 0);
3987 if compile_prog "" "" ; then
3991 # check for sync_file_range
3998 sync_file_range(0, 0, 0, 0);
4002 if compile_prog "" "" ; then
4006 # check for linux/fiemap.h and FS_IOC_FIEMAP
4009 #include <sys/ioctl.h>
4010 #include <linux/fs.h>
4011 #include <linux/fiemap.h>
4015 ioctl(0, FS_IOC_FIEMAP, 0);
4019 if compile_prog "" "" ; then
4034 if compile_prog "" "" ; then
4038 # check for ppoll support
4045 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4046 ppoll(&pfd, 1, 0, 0);
4050 if compile_prog "" "" ; then
4054 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4055 prctl_pr_set_timerslack=no
4057 #include <sys/prctl.h>
4061 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4065 if compile_prog "" "" ; then
4066 prctl_pr_set_timerslack=yes
4069 # check for epoll support
4072 #include <sys/epoll.h>
4080 if compile_prog "" "" ; then
4084 # epoll_create1 is a later addition
4085 # so we must check separately for its presence
4088 #include <sys/epoll.h>
4092 /* Note that we use epoll_create1 as a value, not as
4093 * a function being called. This is necessary so that on
4094 * old SPARC glibc versions where the function was present in
4095 * the library but not declared in the header file we will
4096 * fail the configure check. (Otherwise we will get a compiler
4097 * warning but not an error, and will proceed to fail the
4098 * qemu compile where we compile with -Werror.)
4100 return (int)(uintptr_t)&epoll_create1;
4103 if compile_prog "" "" ; then
4107 # check for sendfile support
4110 #include <sys/sendfile.h>
4114 return sendfile(0, 0, 0, 0);
4117 if compile_prog "" "" ; then
4121 # check for timerfd support (glibc 2.8 and newer)
4124 #include <sys/timerfd.h>
4128 return(timerfd_create(CLOCK_REALTIME, 0));
4131 if compile_prog "" "" ; then
4135 # check for setns and unshare support
4148 if compile_prog "" "" ; then
4152 # clock_adjtime probe
4159 return clock_adjtime(0, 0);
4163 if compile_prog "" "" ; then
4178 if compile_prog "" "" ; then
4182 # Check if tools are available to build documentation.
4183 if test "$docs" != "no" ; then
4184 if has makeinfo && has pod2man; then
4187 if test "$docs" = "yes" ; then
4188 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
4194 # Search for bswap_32 function
4197 #include <byteswap.h>
4198 int main(void) { return bswap_32(0); }
4200 if compile_prog "" "" ; then
4204 # Search for bswap32 function
4207 #include <sys/endian.h>
4208 #include <sys/types.h>
4209 #include <machine/bswap.h>
4210 int main(void) { return bswap32(0); }
4212 if compile_prog "" "" ; then
4216 ##########################################
4217 # Do we have libiscsi >= 1.9.0
4218 if test "$libiscsi" != "no" ; then
4219 if $pkg_config --atleast-version=1.9.0 libiscsi; then
4221 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4222 libiscsi_libs=$($pkg_config --libs libiscsi)
4224 if test "$libiscsi" = "yes" ; then
4225 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
4231 ##########################################
4235 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4237 if compile_prog "" "" ; then
4239 elif compile_prog "" "-lm" ; then
4241 libs_qga="-lm $libs_qga"
4243 error_exit "libm check failed"
4246 ##########################################
4248 # uClibc provides 2 versions of clock_gettime(), one with realtime
4249 # support and one without. This means that the clock_gettime() don't
4250 # need -lrt. We still need it for timer_create() so we check for this
4251 # function in addition.
4256 timer_create(CLOCK_REALTIME, NULL, NULL);
4257 return clock_gettime(CLOCK_REALTIME, NULL);
4261 if compile_prog "" "" ; then
4263 # we need pthread for static linking. use previous pthread test result
4264 elif compile_prog "" "$pthread_lib -lrt" ; then
4266 libs_qga="$libs_qga -lrt"
4269 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4270 "$haiku" != "yes" ; then
4271 libs_softmmu="-lutil $libs_softmmu"
4274 ##########################################
4276 if test "$spice" != "no" ; then
4279 int main(void) { spice_server_new(); return 0; }
4281 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4282 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
4283 if $pkg_config --atleast-version=0.12.0 spice-server && \
4284 $pkg_config --atleast-version=0.12.3 spice-protocol && \
4285 compile_prog "$spice_cflags" "$spice_libs" ; then
4287 libs_softmmu="$libs_softmmu $spice_libs"
4288 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
4289 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4290 spice_server_version=$($pkg_config --modversion spice-server)
4292 if test "$spice" = "yes" ; then
4293 feature_not_found "spice" \
4294 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4300 # check for smartcard support
4301 if test "$smartcard" != "no"; then
4302 if $pkg_config libcacard; then
4303 libcacard_cflags=$($pkg_config --cflags libcacard)
4304 libcacard_libs=$($pkg_config --libs libcacard)
4307 if test "$smartcard" = "yes"; then
4308 feature_not_found "smartcard" "Install libcacard devel"
4315 if test "$libusb" != "no" ; then
4316 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
4318 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4319 libusb_libs=$($pkg_config --libs libusb-1.0)
4321 if test "$libusb" = "yes"; then
4322 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
4328 # check for usbredirparser for usb network redirection support
4329 if test "$usb_redir" != "no" ; then
4330 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
4332 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4333 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
4335 if test "$usb_redir" = "yes"; then
4336 feature_not_found "usb-redir" "Install usbredir devel"
4342 ##########################################
4343 # check if we have VSS SDK headers for win
4345 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4346 case "$vss_win32_sdk" in
4347 "") vss_win32_include="-isystem $source_path" ;;
4348 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4349 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4350 vss_win32_include="-isystem $source_path/.sdk/vss"
4351 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4353 *) vss_win32_include="-isystem $vss_win32_sdk"
4356 #define __MIDL_user_allocate_free_DEFINED__
4357 #include <inc/win2003/vss.h>
4358 int main(void) { return VSS_CTX_BACKUP; }
4360 if compile_prog "$vss_win32_include" "" ; then
4361 guest_agent_with_vss="yes"
4362 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4363 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4364 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4366 if test "$vss_win32_sdk" != "" ; then
4367 echo "ERROR: Please download and install Microsoft VSS SDK:"
4368 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4369 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4370 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4371 echo "ERROR: The headers are extracted in the directory \`inc'."
4372 feature_not_found "VSS support"
4374 guest_agent_with_vss="no"
4378 ##########################################
4379 # lookup Windows platform SDK (if not specified)
4380 # The SDK is needed only to build .tlb (type library) file of guest agent
4381 # VSS provider from the source. It is usually unnecessary because the
4382 # pre-compiled .tlb file is included.
4384 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4385 if test -z "$win_sdk"; then
4386 programfiles="$PROGRAMFILES"
4387 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4388 if test -n "$programfiles"; then
4389 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4391 feature_not_found "Windows SDK"
4393 elif test "$win_sdk" = "no"; then
4398 ##########################################
4399 # check if mingw environment provides a recent ntddscsi.h
4400 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4402 #include <windows.h>
4403 #include <ntddscsi.h>
4405 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4406 #error Missing required ioctl definitions
4408 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4412 if compile_prog "" "" ; then
4413 guest_agent_ntddscsi=yes
4414 libs_qga="-lsetupapi $libs_qga"
4418 ##########################################
4419 # virgl renderer probe
4421 if test "$virglrenderer" != "no" ; then
4423 #include <virglrenderer.h>
4424 int main(void) { virgl_renderer_poll(); return 0; }
4426 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4427 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4428 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4429 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4432 if test "$virglrenderer" = "yes" ; then
4433 feature_not_found "virglrenderer"
4439 ##########################################
4444 if $pkg_config capstone; then
4446 elif test -e "${source_path}/.git" ; then
4448 elif test -e "${source_path}/capstone/Makefile" ; then
4450 elif test -z "$capstone" ; then
4453 feature_not_found "capstone" "Install capstone devel or git submodule"
4458 if ! $pkg_config capstone; then
4459 feature_not_found "capstone" "Install capstone devel"
4466 if test "$capstone" = git; then
4467 git_submodules="${git_submodules} capstone"
4470 QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4471 if test "$mingw32" = "yes"; then
4472 LIBCAPSTONE=capstone.lib
4474 LIBCAPSTONE=libcapstone.a
4476 LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4480 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4481 LIBS="$($pkg_config --libs capstone) $LIBS"
4487 error_exit "Unknown state for capstone: $capstone"
4491 ##########################################
4492 # check if we have fdatasync
4498 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4499 return fdatasync(0);
4501 #error Not supported
4505 if compile_prog "" "" ; then
4509 ##########################################
4510 # check if we have madvise
4514 #include <sys/types.h>
4515 #include <sys/mman.h>
4517 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4519 if compile_prog "" "" ; then
4523 ##########################################
4524 # check if we have posix_madvise
4528 #include <sys/mman.h>
4530 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4532 if compile_prog "" "" ; then
4536 ##########################################
4537 # check if we have posix_syslog
4542 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4544 if compile_prog "" "" ; then
4548 ##########################################
4549 # check if we have sem_timedwait
4553 #include <semaphore.h>
4554 int main(void) { return sem_timedwait(0, 0); }
4556 if compile_prog "" "" ; then
4560 ##########################################
4561 # check if trace backend exists
4563 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4564 if test "$?" -ne 0 ; then
4565 error_exit "invalid trace backends" \
4566 "Please choose supported trace backends."
4569 ##########################################
4570 # For 'ust' backend, test if ust headers are present
4571 if have_backend "ust"; then
4573 #include <lttng/tracepoint.h>
4574 int main(void) { return 0; }
4576 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
4577 if $pkg_config lttng-ust --exists; then
4578 lttng_ust_libs=$($pkg_config --libs lttng-ust)
4580 lttng_ust_libs="-llttng-ust -ldl"
4582 if $pkg_config liburcu-bp --exists; then
4583 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
4585 urcu_bp_libs="-lurcu-bp"
4588 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4589 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4591 error_exit "Trace backend 'ust' missing lttng-ust header files"
4595 ##########################################
4596 # For 'dtrace' backend, test if 'dtrace' command is present
4597 if have_backend "dtrace"; then
4598 if ! has 'dtrace' ; then
4599 error_exit "dtrace command is not found in PATH $PATH"
4601 trace_backend_stap="no"
4602 if has 'stap' ; then
4603 trace_backend_stap="yes"
4607 ##########################################
4608 # check and set a backend for coroutine
4610 # We prefer ucontext, but it's not always possible. The fallback
4611 # is sigcontext. On Windows the only valid backend is the Windows
4615 if test "$darwin" != "yes"; then
4617 #include <ucontext.h>
4618 #ifdef __stub_makecontext
4619 #error Ignoring glibc stub makecontext which will always fail
4621 int main(void) { makecontext(0, 0, 0); return 0; }
4623 if compile_prog "" "" ; then
4628 if test "$coroutine" = ""; then
4629 if test "$mingw32" = "yes"; then
4631 elif test "$ucontext_works" = "yes"; then
4634 coroutine=sigaltstack
4639 if test "$mingw32" != "yes"; then
4640 error_exit "'windows' coroutine backend only valid for Windows"
4642 # Unfortunately the user visible backend name doesn't match the
4643 # coroutine-*.c filename for this case, so we have to adjust it here.
4647 if test "$ucontext_works" != "yes"; then
4648 feature_not_found "ucontext"
4652 if test "$mingw32" = "yes"; then
4653 error_exit "only the 'windows' coroutine backend is valid for Windows"
4657 error_exit "unknown coroutine backend $coroutine"
4662 if test "$coroutine_pool" = ""; then
4666 if test "$debug_stack_usage" = "yes"; then
4667 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4668 error_exit "stack usage debugging is not supported for $cpu"
4670 if test "$coroutine_pool" = "yes"; then
4671 echo "WARN: disabling coroutine pool for stack usage debugging"
4677 ##########################################
4678 # check if we have open_by_handle_at
4680 open_by_handle_at=no
4683 #if !defined(AT_EMPTY_PATH)
4684 # error missing definition
4686 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4689 if compile_prog "" "" ; then
4690 open_by_handle_at=yes
4693 ########################################
4694 # check if we have linux/magic.h
4698 #include <linux/magic.h>
4703 if compile_prog "" "" ; then
4707 ########################################
4708 # check whether we can disable warning option with a pragma (this is needed
4709 # to silence warnings in the headers of some versions of external libraries).
4710 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4713 # If we can't selectively disable warning in the code, disable -Werror so that
4714 # the build doesn't fail anyway.
4716 pragma_disable_unused_but_set=no
4718 #pragma GCC diagnostic push
4719 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4720 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4721 #pragma GCC diagnostic pop
4727 if compile_prog "-Werror" "" ; then
4728 pragma_diagnostic_available=yes
4733 ########################################
4734 # check if we have valgrind/valgrind.h
4738 #include <valgrind/valgrind.h>
4743 if compile_prog "" "" ; then
4747 ########################################
4748 # check if environ is declared
4758 if compile_prog "" "" ; then
4762 ########################################
4763 # check if cpuid.h is usable.
4768 unsigned a, b, c, d;
4769 int max = __get_cpuid_max(0, 0);
4772 __cpuid(1, a, b, c, d);
4776 __cpuid_count(7, 0, a, b, c, d);
4782 if compile_prog "" "" ; then
4786 ##########################################
4787 # avx2 optimization requirement check
4789 # There is no point enabling this if cpuid.h is not usable,
4790 # since we won't be able to select the new routines.
4792 if test $cpuid_h = yes; then
4794 #pragma GCC push_options
4795 #pragma GCC target("avx2")
4797 #include <immintrin.h>
4798 static int bar(void *a) {
4799 __m256i x = *(__m256i *)a;
4800 return _mm256_testz_si256(x, x);
4802 int main(int argc, char *argv[]) { return bar(argv[0]); }
4804 if compile_object "" ; then
4809 ########################################
4810 # check if __[u]int128_t is usable.
4814 #if defined(__clang_major__) && defined(__clang_minor__)
4815 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4816 # error __int128_t does not work in CLANG before 3.2
4828 if compile_prog "" "" ; then
4832 #########################################
4833 # See if 128-bit atomic operations are supported.
4836 if test "$int128" = "yes"; then
4840 unsigned __int128 x = 0, y = 0;
4841 y = __atomic_load_16(&x, 0);
4842 __atomic_store_16(&x, y, 0);
4843 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4847 if compile_prog "" "" ; then
4852 #########################################
4853 # See if 64-bit atomic operations are supported.
4854 # Note that without __atomic builtins, we can only
4855 # assume atomic loads/stores max at pointer size.
4861 uint64_t x = 0, y = 0;
4862 #ifdef __ATOMIC_RELAXED
4863 y = __atomic_load_8(&x, 0);
4864 __atomic_store_8(&x, y, 0);
4865 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4866 __atomic_exchange_8(&x, y, 0);
4867 __atomic_fetch_add_8(&x, y, 0);
4869 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4870 __sync_lock_test_and_set(&x, y);
4871 __sync_val_compare_and_swap(&x, y, 0);
4872 __sync_fetch_and_add(&x, y);
4877 if compile_prog "" "" ; then
4881 ########################################
4882 # check if getauxval is available.
4886 #include <sys/auxv.h>
4888 return getauxval(AT_HWCAP) == 0;
4891 if compile_prog "" "" ; then
4895 ########################################
4896 # check if ccache is interfering with
4897 # semantic analysis of macros
4902 static const int Z = 1;
4903 #define fn() ({ Z; })
4904 #define TAUT(X) ((X) == Z)
4905 #define PAREN(X, Y) (X == Y)
4907 int main(int argc, char *argv[])
4913 if (PAREN(x, y)) return 0;
4914 if (TAUT(Z)) return 0;
4919 if ! compile_object "-Werror"; then
4923 #################################################
4924 # clang does not support glibc + FORTIFY_SOURCE.
4926 if test "$fortify_source" != "no"; then
4927 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4928 fortify_source="no";
4929 elif test -n "$cxx" && has $cxx &&
4930 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
4931 fortify_source="no";
4933 fortify_source="yes"
4937 ##########################################
4938 # check if struct fsxattr is available via linux/fs.h
4942 #include <linux/fs.h>
4948 if compile_prog "" "" ; then
4952 ##########################################
4953 # check if rtnetlink.h exists and is useful
4956 #include <linux/rtnetlink.h>
4958 return IFLA_PROTO_DOWN;
4961 if compile_prog "" "" ; then
4965 ##########################################
4966 # check for usable AF_VSOCK environment
4970 #include <sys/types.h>
4971 #include <sys/socket.h>
4972 #if !defined(AF_VSOCK)
4973 # error missing AF_VSOCK flag
4975 #include <linux/vm_sockets.h>
4978 struct sockaddr_vm svm;
4979 socklen_t len = sizeof(svm);
4980 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4981 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4982 if ((ret == -1) && (errno == ENOTCONN)) {
4988 if compile_prog "" "" ; then
4992 ##########################################
4993 # check for usable AF_ALG environment
4997 #include <sys/types.h>
4998 #include <sys/socket.h>
4999 #include <linux/if_alg.h>
5002 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5006 if compile_prog "" "" ; then
5009 if test "$crypto_afalg" = "yes"
5011 if test "$have_afalg" != "yes"
5013 error_exit "AF_ALG requested but could not be detected"
5018 #################################################
5019 # Sparc implicitly links with --relax, which is
5020 # incompatible with -r, so --no-relax should be
5021 # given. It does no harm to give it on other
5024 # Note: the prototype is needed since QEMU_CFLAGS
5025 # contains -Wmissing-prototypes
5027 extern int foo(void);
5028 int foo(void) { return 0; }
5030 if ! compile_object ""; then
5031 error_exit "Failed to compile object file for LD_REL_FLAGS test"
5033 for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5034 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
5039 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5040 feature_not_found "modules" "Cannot find how to build relocatable objects"
5043 ##########################################
5044 # check for sysmacros.h
5048 #include <sys/sysmacros.h>
5050 return makedev(0, 0);
5053 if compile_prog "" "" ; then
5057 ##########################################
5058 # Veritas HyperScale block driver VxHS
5059 # Check if libvxhs is installed
5061 if test "$vxhs" != "no" ; then
5064 #include <qnio/qnio_api.h>
5066 void *vxhs_callback;
5069 iio_init(QNIO_VERSION, vxhs_callback);
5073 vxhs_libs="-lvxhs -lssl"
5074 if compile_prog "" "$vxhs_libs" ; then
5077 if test "$vxhs" = "yes" ; then
5078 feature_not_found "vxhs block device" "Install libvxhs See github"
5084 ##########################################
5085 # check for _Static_assert()
5087 have_static_assert=no
5089 _Static_assert(1, "success");
5094 if compile_prog "" "" ; then
5095 have_static_assert=yes
5098 ##########################################
5099 # check for utmpx.h, it is missing e.g. on OpenBSD
5104 struct utmpx user_info;
5109 if compile_prog "" "" ; then
5113 ##########################################
5115 # After here, no more $cc or $ld runs
5117 if test "$gcov" = "yes" ; then
5118 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5119 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
5120 elif test "$fortify_source" = "yes" ; then
5121 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5122 elif test "$debug" = "no"; then
5123 CFLAGS="-O2 $CFLAGS"
5126 ##########################################
5128 if test "$libnfs" != "no" ; then
5129 if $pkg_config --atleast-version=1.9.3 libnfs; then
5131 libnfs_libs=$($pkg_config --libs libnfs)
5133 if test "$libnfs" = "yes" ; then
5134 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
5140 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5141 if test "$werror" = "yes"; then
5142 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
5145 if test "$solaris" = "no" ; then
5146 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
5147 LDFLAGS="-Wl,--warn-common $LDFLAGS"
5151 # test if pod2man has --utf8 option
5152 if pod2man --help | grep -q utf8; then
5153 POD2MAN="pod2man --utf8"
5158 # Use ASLR, no-SEH and DEP if available
5159 if test "$mingw32" = "yes" ; then
5160 for flag in --dynamicbase --no-seh --nxcompat; do
5161 if ld_has $flag ; then
5162 LDFLAGS="-Wl,$flag $LDFLAGS"
5167 qemu_confdir=$sysconfdir$confsuffix
5168 qemu_moddir=$libdir$confsuffix
5169 qemu_datadir=$datadir$confsuffix
5170 qemu_localedir="$datadir/locale"
5172 # We can only support ivshmem if we have eventfd
5173 if [ "$eventfd" = "yes" ]; then
5178 if test "$want_tools" = "yes" ; then
5179 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
5180 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5181 tools="qemu-nbd\$(EXESUF) $tools"
5183 if [ "$ivshmem" = "yes" ]; then
5184 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5187 if test "$softmmu" = yes ; then
5188 if test "$linux" = yes; then
5189 if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then
5191 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5193 if test "$virtfs" = yes; then
5194 error_exit "VirtFS requires libcap devel and libattr devel"
5198 if test "$mpath" != no && test "$mpathpersist" = yes ; then
5201 if test "$mpath" = yes; then
5202 error_exit "Multipath requires libmpathpersist devel"
5206 tools="$tools scsi/qemu-pr-helper\$(EXESUF)"
5208 if test "$virtfs" = yes; then
5209 error_exit "VirtFS is supported only on Linux"
5212 if test "$mpath" = yes; then
5213 error_exit "Multipath is supported only on Linux"
5217 if test "$xkbcommon" = "yes"; then
5218 tools="qemu-keymap\$(EXESUF) $tools"
5222 # Probe for guest agent support/options
5224 if [ "$guest_agent" != "no" ]; then
5225 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5226 tools="qemu-ga $tools"
5228 elif [ "$guest_agent" != yes ]; then
5231 error_exit "Guest agent is not supported on this platform"
5235 # Guest agent Window MSI package
5237 if test "$guest_agent" != yes; then
5238 if test "$guest_agent_msi" = yes; then
5239 error_exit "MSI guest agent package requires guest agent enabled"
5242 elif test "$mingw32" != "yes"; then
5243 if test "$guest_agent_msi" = "yes"; then
5244 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
5247 elif ! has wixl; then
5248 if test "$guest_agent_msi" = "yes"; then
5249 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5253 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5254 # disabled explicitly
5255 if test "$guest_agent_msi" != "no"; then
5260 if test "$guest_agent_msi" = "yes"; then
5261 if test "$guest_agent_with_vss" = "yes"; then
5262 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
5265 if test "$QEMU_GA_MANUFACTURER" = ""; then
5266 QEMU_GA_MANUFACTURER=QEMU
5269 if test "$QEMU_GA_DISTRO" = ""; then
5270 QEMU_GA_DISTRO=Linux
5273 if test "$QEMU_GA_VERSION" = ""; then
5274 QEMU_GA_VERSION=$(cat $source_path/VERSION)
5277 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5281 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
5284 QEMU_GA_MSI_ARCH="-D Arch=32"
5287 error_exit "CPU $cpu not supported for building installation package"
5292 # Mac OS X ships with a broken assembler
5294 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5295 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5296 "$softmmu" = yes ; then
5297 # Different host OS linkers have different ideas about the name of the ELF
5298 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
5299 # variant; and Windows uses i386pe.
5300 for emu in elf_i386 elf_i386_fbsd i386pe; do
5301 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5302 ld_i386_emulation="$emu"
5308 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5309 roms="$roms spapr-rtas"
5312 if test "$cpu" = "s390x" ; then
5313 roms="$roms s390-ccw"
5316 # Probe for the need for relocating the user-only binary.
5317 if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
5320 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5321 # ??? Rationale for choosing this address
5322 textseg_addr=0x60000000
5325 # A 256M aligned address, high in the address space, with enough
5326 # room for the code_gen_buffer above it before the stack.
5327 textseg_addr=0x60000000
5330 if [ -n "$textseg_addr" ]; then
5332 int main(void) { return 0; }
5334 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5335 if ! compile_prog "" "$textseg_ldflags"; then
5336 # In case ld does not support -Ttext-segment, edit the default linker
5337 # script via sed to set the .text start addr. This is needed on FreeBSD
5339 if ! $ld --verbose >/dev/null 2>&1; then
5341 "We need to link the QEMU user mode binaries at a" \
5342 "specific text address. Unfortunately your linker" \
5343 "doesn't support either the -Ttext-segment option or" \
5344 "printing the default linker script with --verbose." \
5345 "If you don't want the user mode binaries, pass the" \
5346 "--disable-user option to configure."
5349 $ld --verbose | sed \
5350 -e '1,/==================================================/d' \
5351 -e '/==================================================/,$d' \
5352 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5353 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5354 textseg_ldflags="-Wl,-T../config-host.ld"
5359 # Check that the C++ compiler exists and works with the C compiler.
5360 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5363 int c_function(void);
5364 int main(void) { return c_function(); }
5371 int c_function(void);
5373 int c_function(void) { return 42; }
5378 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5379 # C++ compiler $cxx works ok with C compiler $cc
5382 echo "C++ compiler $cxx does not work with C compiler $cc"
5383 echo "Disabling C++ specific optional code"
5387 echo "No C++ compiler available; disabling C++ specific optional code"
5392 if test "$1" = "yes" ; then
5397 # prepend pixman and ftd flags after all config tests are done
5398 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5399 libs_softmmu="$pixman_libs $libs_softmmu"
5401 echo "Install prefix $prefix"
5402 echo "BIOS directory $(eval echo $qemu_datadir)"
5403 echo "firmware path $(eval echo $firmwarepath)"
5404 echo "binary directory $(eval echo $bindir)"
5405 echo "library directory $(eval echo $libdir)"
5406 echo "module directory $(eval echo $qemu_moddir)"
5407 echo "libexec directory $(eval echo $libexecdir)"
5408 echo "include directory $(eval echo $includedir)"
5409 echo "config directory $(eval echo $sysconfdir)"
5410 if test "$mingw32" = "no" ; then
5411 echo "local state directory $(eval echo $local_statedir)"
5412 echo "Manual directory $(eval echo $mandir)"
5413 echo "ELF interp prefix $interp_prefix"
5415 echo "local state directory queried at runtime"
5416 echo "Windows SDK $win_sdk"
5418 echo "Source path $source_path"
5419 echo "GIT binary $git"
5420 echo "GIT submodules $git_submodules"
5421 echo "C compiler $cc"
5422 echo "Host C compiler $host_cc"
5423 echo "C++ compiler $cxx"
5424 echo "Objective-C compiler $objcc"
5425 echo "ARFLAGS $ARFLAGS"
5426 echo "CFLAGS $CFLAGS"
5427 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5428 echo "LDFLAGS $LDFLAGS"
5430 echo "install $install"
5431 echo "python $python"
5432 if test "$slirp" = "yes" ; then
5435 echo "module support $modules"
5436 echo "host CPU $cpu"
5437 echo "host big endian $bigendian"
5438 echo "target list $target_list"
5439 echo "gprof enabled $gprof"
5440 echo "sparse enabled $sparse"
5441 echo "strip binaries $strip_opt"
5442 echo "profiler $profiler"
5443 echo "static build $static"
5444 if test "$darwin" = "yes" ; then
5445 echo "Cocoa support $cocoa"
5447 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5448 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5449 echo "GTK GL support $gtk_gl"
5450 echo "VTE support $vte $(echo_version $vte $vteversion)"
5451 echo "TLS priority $tls_priority"
5452 echo "GNUTLS support $gnutls"
5453 echo "GNUTLS rnd $gnutls_rnd"
5454 echo "libgcrypt $gcrypt"
5455 echo "libgcrypt kdf $gcrypt_kdf"
5456 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5457 echo "nettle kdf $nettle_kdf"
5458 echo "libtasn1 $tasn1"
5459 echo "curses support $curses"
5460 echo "virgl support $virglrenderer"
5461 echo "curl support $curl"
5462 echo "mingw32 support $mingw32"
5463 echo "Audio drivers $audio_drv_list"
5464 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5465 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5466 echo "VirtFS support $virtfs"
5467 echo "Multipath support $mpath"
5468 echo "VNC support $vnc"
5469 if test "$vnc" = "yes" ; then
5470 echo "VNC SASL support $vnc_sasl"
5471 echo "VNC JPEG support $vnc_jpeg"
5472 echo "VNC PNG support $vnc_png"
5474 if test -n "$sparc_cpu"; then
5475 echo "Target Sparc Arch $sparc_cpu"
5477 echo "xen support $xen"
5478 if test "$xen" = "yes" ; then
5479 echo "xen ctrl version $xen_ctrl_version"
5480 echo "pv dom build $xen_pv_domain_build"
5482 echo "brlapi support $brlapi"
5483 echo "bluez support $bluez"
5484 echo "Documentation $docs"
5486 echo "vde support $vde"
5487 echo "netmap support $netmap"
5488 echo "Linux AIO support $linux_aio"
5489 echo "ATTR/XATTR support $attr"
5490 echo "Install blobs $blobs"
5491 echo "KVM support $kvm"
5492 echo "HAX support $hax"
5493 echo "TCG support $tcg"
5494 if test "$tcg" = "yes" ; then
5495 echo "TCG debug enabled $debug_tcg"
5496 echo "TCG interpreter $tcg_interpreter"
5498 echo "RDMA support $rdma"
5499 echo "fdt support $fdt"
5500 echo "preadv support $preadv"
5501 echo "fdatasync $fdatasync"
5502 echo "madvise $madvise"
5503 echo "posix_madvise $posix_madvise"
5504 echo "libcap-ng support $cap_ng"
5505 echo "vhost-net support $vhost_net"
5506 echo "vhost-scsi support $vhost_scsi"
5507 echo "vhost-vsock support $vhost_vsock"
5508 echo "vhost-user support $vhost_user"
5509 echo "Trace backends $trace_backends"
5510 if have_backend "simple"; then
5511 echo "Trace output file $trace_file-<pid>"
5513 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5514 echo "rbd support $rbd"
5515 echo "xfsctl support $xfs"
5516 echo "smartcard support $smartcard"
5517 echo "libusb $libusb"
5518 echo "usb net redir $usb_redir"
5519 echo "OpenGL support $opengl"
5520 echo "OpenGL dmabufs $opengl_dmabuf"
5521 echo "libiscsi support $libiscsi"
5522 echo "libnfs support $libnfs"
5523 echo "build guest agent $guest_agent"
5524 echo "QGA VSS support $guest_agent_with_vss"
5525 echo "QGA w32 disk info $guest_agent_ntddscsi"
5526 echo "QGA MSI support $guest_agent_msi"
5527 echo "seccomp support $seccomp"
5528 echo "coroutine backend $coroutine"
5529 echo "coroutine pool $coroutine_pool"
5530 echo "debug stack usage $debug_stack_usage"
5531 echo "crypto afalg $crypto_afalg"
5532 echo "GlusterFS support $glusterfs"
5533 echo "gcov $gcov_tool"
5534 echo "gcov enabled $gcov"
5535 echo "TPM support $tpm"
5536 echo "libssh2 support $libssh2"
5537 echo "TPM passthrough $tpm_passthrough"
5538 echo "TPM emulator $tpm_emulator"
5539 echo "QOM debugging $qom_cast_debug"
5540 echo "Live block migration $live_block_migration"
5541 echo "lzo support $lzo"
5542 echo "snappy support $snappy"
5543 echo "bzip2 support $bzip2"
5544 echo "NUMA host support $numa"
5545 echo "tcmalloc support $tcmalloc"
5546 echo "jemalloc support $jemalloc"
5547 echo "avx2 optimization $avx2_opt"
5548 echo "replication support $replication"
5549 echo "VxHS block device $vxhs"
5550 echo "capstone $capstone"
5552 if test "$sdl_too_old" = "yes"; then
5553 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5556 if test "$supported_cpu" = "no"; then
5558 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5560 echo "CPU host architecture $cpu support is not currently maintained."
5561 echo "The QEMU project intends to remove support for this host CPU in"
5562 echo "a future release if nobody volunteers to maintain it and to"
5563 echo "provide a build host for our continuous integration setup."
5564 echo "configure has succeeded and you can continue to build, but"
5565 echo "if you care about QEMU on this platform you should contact"
5569 if test "$supported_os" = "no"; then
5571 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5573 echo "Host OS $targetos support is not currently maintained."
5574 echo "The QEMU project intends to remove support for this host OS in"
5575 echo "a future release if nobody volunteers to maintain it and to"
5576 echo "provide a build host for our continuous integration setup."
5577 echo "configure has succeeded and you can continue to build, but"
5578 echo "if you care about QEMU on this platform you should contact"
5582 config_host_mak="config-host.mak"
5584 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5586 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5587 echo >> $config_host_mak
5589 echo all: >> $config_host_mak
5590 echo "prefix=$prefix" >> $config_host_mak
5591 echo "bindir=$bindir" >> $config_host_mak
5592 echo "libdir=$libdir" >> $config_host_mak
5593 echo "libexecdir=$libexecdir" >> $config_host_mak
5594 echo "includedir=$includedir" >> $config_host_mak
5595 echo "mandir=$mandir" >> $config_host_mak
5596 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5597 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5598 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5599 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
5600 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5601 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5602 if test "$mingw32" = "no" ; then
5603 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5605 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5606 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5607 echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
5608 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5609 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5610 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5611 echo "GIT=$git" >> $config_host_mak
5612 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
5614 echo "ARCH=$ARCH" >> $config_host_mak
5616 if test "$debug_tcg" = "yes" ; then
5617 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5619 if test "$strip_opt" = "yes" ; then
5620 echo "STRIP=${strip}" >> $config_host_mak
5622 if test "$bigendian" = "yes" ; then
5623 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5625 if test "$mingw32" = "yes" ; then
5626 echo "CONFIG_WIN32=y" >> $config_host_mak
5627 rc_version=$(cat $source_path/VERSION)
5628 version_major=${rc_version%%.*}
5629 rc_version=${rc_version#*.}
5630 version_minor=${rc_version%%.*}
5631 rc_version=${rc_version#*.}
5632 version_subminor=${rc_version%%.*}
5634 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5635 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5636 if test "$guest_agent_with_vss" = "yes" ; then
5637 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5638 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5639 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5641 if test "$guest_agent_ntddscsi" = "yes" ; then
5642 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5644 if test "$guest_agent_msi" = "yes"; then
5645 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5646 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5647 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5648 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5649 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5650 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5651 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5654 echo "CONFIG_POSIX=y" >> $config_host_mak
5657 if test "$linux" = "yes" ; then
5658 echo "CONFIG_LINUX=y" >> $config_host_mak
5661 if test "$darwin" = "yes" ; then
5662 echo "CONFIG_DARWIN=y" >> $config_host_mak
5665 if test "$solaris" = "yes" ; then
5666 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5668 if test "$haiku" = "yes" ; then
5669 echo "CONFIG_HAIKU=y" >> $config_host_mak
5671 if test "$static" = "yes" ; then
5672 echo "CONFIG_STATIC=y" >> $config_host_mak
5674 if test "$profiler" = "yes" ; then
5675 echo "CONFIG_PROFILER=y" >> $config_host_mak
5677 if test "$slirp" = "yes" ; then
5678 echo "CONFIG_SLIRP=y" >> $config_host_mak
5679 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5681 if test "$vde" = "yes" ; then
5682 echo "CONFIG_VDE=y" >> $config_host_mak
5683 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
5685 if test "$netmap" = "yes" ; then
5686 echo "CONFIG_NETMAP=y" >> $config_host_mak
5688 if test "$l2tpv3" = "yes" ; then
5689 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5691 if test "$cap_ng" = "yes" ; then
5692 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5694 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5695 for drv in $audio_drv_list; do
5696 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
5697 echo "$def=y" >> $config_host_mak
5699 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
5700 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
5701 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
5702 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
5703 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
5704 if test "$audio_pt_int" = "yes" ; then
5705 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5707 if test "$audio_win_int" = "yes" ; then
5708 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5710 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5711 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5712 if test "$vnc" = "yes" ; then
5713 echo "CONFIG_VNC=y" >> $config_host_mak
5715 if test "$vnc_sasl" = "yes" ; then
5716 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5718 if test "$vnc_jpeg" = "yes" ; then
5719 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5721 if test "$vnc_png" = "yes" ; then
5722 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5724 if test "$xkbcommon" = "yes" ; then
5725 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
5726 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
5728 if test "$fnmatch" = "yes" ; then
5729 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5731 if test "$xfs" = "yes" ; then
5732 echo "CONFIG_XFS=y" >> $config_host_mak
5734 qemu_version=$(head $source_path/VERSION)
5735 echo "VERSION=$qemu_version" >>$config_host_mak
5736 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5737 echo "SRC_PATH=$source_path" >> $config_host_mak
5738 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5739 if [ "$docs" = "yes" ] ; then
5740 echo "BUILD_DOCS=yes" >> $config_host_mak
5742 if test "$modules" = "yes"; then
5743 # $shacmd can generate a hash started with digit, which the compiler doesn't
5744 # like as an symbol. So prefix it with an underscore
5745 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5746 echo "CONFIG_MODULES=y" >> $config_host_mak
5748 if test "$sdl" = "yes" ; then
5749 echo "CONFIG_SDL=y" >> $config_host_mak
5750 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5751 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5752 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
5754 if test "$cocoa" = "yes" ; then
5755 echo "CONFIG_COCOA=y" >> $config_host_mak
5757 if test "$curses" = "yes" ; then
5758 echo "CONFIG_CURSES=y" >> $config_host_mak
5760 if test "$pipe2" = "yes" ; then
5761 echo "CONFIG_PIPE2=y" >> $config_host_mak
5763 if test "$accept4" = "yes" ; then
5764 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5766 if test "$splice" = "yes" ; then
5767 echo "CONFIG_SPLICE=y" >> $config_host_mak
5769 if test "$eventfd" = "yes" ; then
5770 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5772 if test "$memfd" = "yes" ; then
5773 echo "CONFIG_MEMFD=y" >> $config_host_mak
5775 if test "$fallocate" = "yes" ; then
5776 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5778 if test "$fallocate_punch_hole" = "yes" ; then
5779 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5781 if test "$fallocate_zero_range" = "yes" ; then
5782 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5784 if test "$posix_fallocate" = "yes" ; then
5785 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5787 if test "$sync_file_range" = "yes" ; then
5788 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5790 if test "$fiemap" = "yes" ; then
5791 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5793 if test "$dup3" = "yes" ; then
5794 echo "CONFIG_DUP3=y" >> $config_host_mak
5796 if test "$ppoll" = "yes" ; then
5797 echo "CONFIG_PPOLL=y" >> $config_host_mak
5799 if test "$prctl_pr_set_timerslack" = "yes" ; then
5800 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5802 if test "$epoll" = "yes" ; then
5803 echo "CONFIG_EPOLL=y" >> $config_host_mak
5805 if test "$epoll_create1" = "yes" ; then
5806 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5808 if test "$sendfile" = "yes" ; then
5809 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5811 if test "$timerfd" = "yes" ; then
5812 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5814 if test "$setns" = "yes" ; then
5815 echo "CONFIG_SETNS=y" >> $config_host_mak
5817 if test "$clock_adjtime" = "yes" ; then
5818 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5820 if test "$syncfs" = "yes" ; then
5821 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5823 if test "$inotify" = "yes" ; then
5824 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5826 if test "$inotify1" = "yes" ; then
5827 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5829 if test "$sem_timedwait" = "yes" ; then
5830 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
5832 if test "$byteswap_h" = "yes" ; then
5833 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5835 if test "$bswap_h" = "yes" ; then
5836 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5838 if test "$curl" = "yes" ; then
5839 echo "CONFIG_CURL=m" >> $config_host_mak
5840 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5841 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5843 if test "$brlapi" = "yes" ; then
5844 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5845 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
5847 if test "$bluez" = "yes" ; then
5848 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5849 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5851 if test "$glib_subprocess" = "yes" ; then
5852 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5854 if test "$gtk" = "yes" ; then
5855 echo "CONFIG_GTK=y" >> $config_host_mak
5856 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5857 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5858 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5859 if test "$gtk_gl" = "yes" ; then
5860 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5863 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5864 if test "$gnutls" = "yes" ; then
5865 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5867 if test "$gnutls_rnd" = "yes" ; then
5868 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5870 if test "$gcrypt" = "yes" ; then
5871 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5872 if test "$gcrypt_hmac" = "yes" ; then
5873 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5875 if test "$gcrypt_kdf" = "yes" ; then
5876 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5879 if test "$nettle" = "yes" ; then
5880 echo "CONFIG_NETTLE=y" >> $config_host_mak
5881 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5882 if test "$nettle_kdf" = "yes" ; then
5883 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5886 if test "$tasn1" = "yes" ; then
5887 echo "CONFIG_TASN1=y" >> $config_host_mak
5889 if test "$have_ifaddrs_h" = "yes" ; then
5890 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5892 if test "$have_broken_size_max" = "yes" ; then
5893 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5896 # Work around a system header bug with some kernel/XFS header
5897 # versions where they both try to define 'struct fsxattr':
5898 # xfs headers will not try to redefine structs from linux headers
5899 # if this macro is set.
5900 if test "$have_fsxattr" = "yes" ; then
5901 echo "HAVE_FSXATTR=y" >> $config_host_mak
5903 if test "$vte" = "yes" ; then
5904 echo "CONFIG_VTE=y" >> $config_host_mak
5905 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5907 if test "$virglrenderer" = "yes" ; then
5908 echo "CONFIG_VIRGL=y" >> $config_host_mak
5909 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5910 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5912 if test "$xen" = "yes" ; then
5913 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5914 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5915 if test "$xen_pv_domain_build" = "yes" ; then
5916 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5919 if test "$linux_aio" = "yes" ; then
5920 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5922 if test "$attr" = "yes" ; then
5923 echo "CONFIG_ATTR=y" >> $config_host_mak
5925 if test "$libattr" = "yes" ; then
5926 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5928 if test "$virtfs" = "yes" ; then
5929 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5931 if test "$mpath" = "yes" ; then
5932 echo "CONFIG_MPATH=y" >> $config_host_mak
5934 if test "$vhost_scsi" = "yes" ; then
5935 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5937 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
5938 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5940 if test "$vhost_vsock" = "yes" ; then
5941 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5943 if test "$vhost_user" = "yes" ; then
5944 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
5946 if test "$blobs" = "yes" ; then
5947 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5949 if test "$iovec" = "yes" ; then
5950 echo "CONFIG_IOVEC=y" >> $config_host_mak
5952 if test "$preadv" = "yes" ; then
5953 echo "CONFIG_PREADV=y" >> $config_host_mak
5955 if test "$fdt" = "yes" ; then
5956 echo "CONFIG_FDT=y" >> $config_host_mak
5958 if test "$signalfd" = "yes" ; then
5959 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5961 if test "$tcg" = "yes"; then
5962 echo "CONFIG_TCG=y" >> $config_host_mak
5963 if test "$tcg_interpreter" = "yes" ; then
5964 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5967 if test "$fdatasync" = "yes" ; then
5968 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5970 if test "$madvise" = "yes" ; then
5971 echo "CONFIG_MADVISE=y" >> $config_host_mak
5973 if test "$posix_madvise" = "yes" ; then
5974 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5977 if test "$spice" = "yes" ; then
5978 echo "CONFIG_SPICE=y" >> $config_host_mak
5981 if test "$smartcard" = "yes" ; then
5982 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5983 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
5984 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
5987 if test "$libusb" = "yes" ; then
5988 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5989 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
5990 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
5993 if test "$usb_redir" = "yes" ; then
5994 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5995 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
5996 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
5999 if test "$opengl" = "yes" ; then
6000 echo "CONFIG_OPENGL=y" >> $config_host_mak
6001 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6002 if test "$opengl_dmabuf" = "yes" ; then
6003 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6007 if test "$avx2_opt" = "yes" ; then
6008 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6011 if test "$lzo" = "yes" ; then
6012 echo "CONFIG_LZO=y" >> $config_host_mak
6015 if test "$snappy" = "yes" ; then
6016 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6019 if test "$bzip2" = "yes" ; then
6020 echo "CONFIG_BZIP2=y" >> $config_host_mak
6021 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6024 if test "$libiscsi" = "yes" ; then
6025 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6026 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6027 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6030 if test "$libnfs" = "yes" ; then
6031 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6032 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6035 if test "$seccomp" = "yes"; then
6036 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6037 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6038 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6041 # XXX: suppress that
6042 if [ "$bsd" = "yes" ] ; then
6043 echo "CONFIG_BSD=y" >> $config_host_mak
6046 if test "$localtime_r" = "yes" ; then
6047 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6049 if test "$qom_cast_debug" = "yes" ; then
6050 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6052 if test "$rbd" = "yes" ; then
6053 echo "CONFIG_RBD=m" >> $config_host_mak
6054 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6055 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6058 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6059 if test "$coroutine_pool" = "yes" ; then
6060 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6062 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6065 if test "$debug_stack_usage" = "yes" ; then
6066 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6069 if test "$crypto_afalg" = "yes" ; then
6070 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6073 if test "$open_by_handle_at" = "yes" ; then
6074 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6077 if test "$linux_magic_h" = "yes" ; then
6078 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6081 if test "$pragma_diagnostic_available" = "yes" ; then
6082 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6085 if test "$valgrind_h" = "yes" ; then
6086 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6089 if test "$has_environ" = "yes" ; then
6090 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6093 if test "$cpuid_h" = "yes" ; then
6094 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6097 if test "$int128" = "yes" ; then
6098 echo "CONFIG_INT128=y" >> $config_host_mak
6101 if test "$atomic128" = "yes" ; then
6102 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6105 if test "$atomic64" = "yes" ; then
6106 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6109 if test "$getauxval" = "yes" ; then
6110 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6113 if test "$glusterfs" = "yes" ; then
6114 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6115 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6116 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6119 if test "$glusterfs_xlator_opt" = "yes" ; then
6120 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6123 if test "$glusterfs_discard" = "yes" ; then
6124 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6127 if test "$glusterfs_fallocate" = "yes" ; then
6128 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6131 if test "$glusterfs_zerofill" = "yes" ; then
6132 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6135 if test "$libssh2" = "yes" ; then
6136 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6137 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6138 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6141 if test "$live_block_migration" = "yes" ; then
6142 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6145 if test "$tpm" = "yes"; then
6146 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6147 # TPM passthrough support?
6148 if test "$tpm_passthrough" = "yes"; then
6149 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6151 # TPM emulator support?
6152 if test "$tpm_emulator" = "yes"; then
6153 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6157 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6158 if have_backend "nop"; then
6159 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6161 if have_backend "simple"; then
6162 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6163 # Set the appropriate trace file.
6164 trace_file="\"$trace_file-\" FMT_pid"
6166 if have_backend "log"; then
6167 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6169 if have_backend "ust"; then
6170 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6172 if have_backend "dtrace"; then
6173 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6174 if test "$trace_backend_stap" = "yes" ; then
6175 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6178 if have_backend "ftrace"; then
6179 if test "$linux" = "yes" ; then
6180 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6182 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
6185 if have_backend "syslog"; then
6186 if test "$posix_syslog" = "yes" ; then
6187 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6189 feature_not_found "syslog(trace backend)" "syslog not available"
6192 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6194 if test "$rdma" = "yes" ; then
6195 echo "CONFIG_RDMA=y" >> $config_host_mak
6196 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6199 if test "$have_rtnetlink" = "yes" ; then
6200 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6203 if test "$replication" = "yes" ; then
6204 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6207 if test "$have_af_vsock" = "yes" ; then
6208 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6211 if test "$have_sysmacros" = "yes" ; then
6212 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6215 if test "$have_static_assert" = "yes" ; then
6216 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6219 if test "$have_utmpx" = "yes" ; then
6220 echo "HAVE_UTMPX=y" >> $config_host_mak
6223 if test "$ivshmem" = "yes" ; then
6224 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6226 if test "$capstone" != "no" ; then
6227 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6230 # Hold two types of flag:
6231 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6232 # a thread we have a handle to
6233 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6235 if test "$pthread_setname_np" = "yes" ; then
6236 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6237 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6240 if test "$vxhs" = "yes" ; then
6241 echo "CONFIG_VXHS=y" >> $config_host_mak
6242 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6245 if test "$tcg_interpreter" = "yes"; then
6246 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6247 elif test "$ARCH" = "sparc64" ; then
6248 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6249 elif test "$ARCH" = "s390x" ; then
6250 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6251 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6252 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6253 elif test "$ARCH" = "ppc64" ; then
6254 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6256 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6258 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6260 echo "TOOLS=$tools" >> $config_host_mak
6261 echo "ROMS=$roms" >> $config_host_mak
6262 echo "MAKE=$make" >> $config_host_mak
6263 echo "INSTALL=$install" >> $config_host_mak
6264 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6265 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6266 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6267 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6268 echo "PYTHON=$python" >> $config_host_mak
6269 echo "CC=$cc" >> $config_host_mak
6270 if $iasl -h > /dev/null 2>&1; then
6271 echo "IASL=$iasl" >> $config_host_mak
6273 echo "CC_I386=$cc_i386" >> $config_host_mak
6274 echo "HOST_CC=$host_cc" >> $config_host_mak
6275 echo "CXX=$cxx" >> $config_host_mak
6276 echo "OBJCC=$objcc" >> $config_host_mak
6277 echo "AR=$ar" >> $config_host_mak
6278 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6279 echo "AS=$as" >> $config_host_mak
6280 echo "CCAS=$ccas" >> $config_host_mak
6281 echo "CPP=$cpp" >> $config_host_mak
6282 echo "OBJCOPY=$objcopy" >> $config_host_mak
6283 echo "LD=$ld" >> $config_host_mak
6284 echo "NM=$nm" >> $config_host_mak
6285 echo "WINDRES=$windres" >> $config_host_mak
6286 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6287 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6288 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6289 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6290 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6291 if test "$sparse" = "yes" ; then
6292 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6293 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6294 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6295 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6296 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6298 if test "$cross_prefix" != ""; then
6299 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6301 echo "AUTOCONF_HOST := " >> $config_host_mak
6303 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6304 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6305 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6306 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6307 echo "LIBS+=$LIBS" >> $config_host_mak
6308 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6309 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6310 echo "EXESUF=$EXESUF" >> $config_host_mak
6311 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6312 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6313 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6314 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6315 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6316 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6317 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6318 if test "$gcov" = "yes" ; then
6319 echo "CONFIG_GCOV=y" >> $config_host_mak
6320 echo "GCOV=$gcov_tool" >> $config_host_mak
6323 # use included Linux headers
6324 if test "$linux" = "yes" ; then
6325 mkdir -p linux-headers
6343 # For most CPUs the kernel architecture name and QEMU CPU name match.
6347 # For non-KVM architectures we will not have asm headers
6348 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6349 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
6353 for target in $target_list; do
6354 target_dir="$target"
6355 config_target_mak=$target_dir/config-target.mak
6356 target_name=$(echo $target | cut -d '-' -f 1)
6357 target_bigendian="no"
6359 case "$target_name" in
6360 armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
6361 target_bigendian=yes
6365 target_user_only="no"
6366 target_linux_user="no"
6367 target_bsd_user="no"
6369 ${target_name}-softmmu)
6370 target_softmmu="yes"
6372 ${target_name}-linux-user)
6373 target_user_only="yes"
6374 target_linux_user="yes"
6376 ${target_name}-bsd-user)
6377 target_user_only="yes"
6378 target_bsd_user="yes"
6381 error_exit "Target '$target' not recognised"
6386 mkdir -p $target_dir
6387 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6391 interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
6394 TARGET_ARCH="$target_name"
6398 case "$target_name" in
6400 gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
6403 TARGET_BASE_ARCH=i386
6404 gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
6413 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6416 TARGET_BASE_ARCH=arm
6419 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6429 gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml"
6431 microblaze|microblazeel)
6432 TARGET_ARCH=microblaze
6437 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6441 TARGET_BASE_ARCH=mips
6442 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6443 echo "TARGET_ABI32=y" >> $config_target_mak
6447 TARGET_BASE_ARCH=mips
6448 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6455 TARGET_ARCH=openrisc
6456 TARGET_BASE_ARCH=openrisc
6459 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6462 TARGET_BASE_ARCH=ppc
6464 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6467 TARGET_BASE_ARCH=ppc
6470 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6474 TARGET_BASE_ARCH=ppc
6477 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6481 TARGET_BASE_ARCH=ppc
6483 echo "TARGET_ABI32=y" >> $config_target_mak
6484 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6493 TARGET_BASE_ARCH=sparc
6497 TARGET_BASE_ARCH=sparc
6498 TARGET_ABI_DIR=sparc
6499 echo "TARGET_ABI32=y" >> $config_target_mak
6502 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
6514 error_exit "Unsupported target CPU"
6517 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6518 if [ "$TARGET_BASE_ARCH" = "" ]; then
6519 TARGET_BASE_ARCH=$TARGET_ARCH
6522 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
6525 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6528 target_arch_name="$(upper $TARGET_ARCH)"
6529 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6530 echo "TARGET_NAME=$target_name" >> $config_target_mak
6531 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6532 if [ "$TARGET_ABI_DIR" = "" ]; then
6533 TARGET_ABI_DIR=$TARGET_ARCH
6535 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6536 if [ "$HOST_VARIANT_DIR" != "" ]; then
6537 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6540 if supported_xen_target $target; then
6541 echo "CONFIG_XEN=y" >> $config_target_mak
6542 if test "$xen_pci_passthrough" = yes; then
6543 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6546 if supported_kvm_target $target; then
6547 echo "CONFIG_KVM=y" >> $config_target_mak
6548 if test "$vhost_net" = "yes" ; then
6549 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6550 if test "$vhost_user" = "yes" ; then
6551 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6555 if supported_hax_target $target; then
6556 echo "CONFIG_HAX=y" >> $config_target_mak
6558 if test "$target_bigendian" = "yes" ; then
6559 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6561 if test "$target_softmmu" = "yes" ; then
6562 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6563 if test "$mttcg" = "yes" ; then
6564 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6567 if test "$target_user_only" = "yes" ; then
6568 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6569 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6571 if test "$target_linux_user" = "yes" ; then
6572 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6575 if test ! -z "$gdb_xml_files" ; then
6576 for x in $gdb_xml_files; do
6577 list="$list $source_path/gdb-xml/$x"
6579 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6582 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6583 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6585 if test "$target_bsd_user" = "yes" ; then
6586 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6589 # generate QEMU_CFLAGS/LDFLAGS for targets
6595 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6596 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6599 for i in $ARCH $TARGET_BASE_ARCH ; do
6602 disas_config "ALPHA"
6605 if test -n "${cxx}"; then
6606 disas_config "ARM_A64"
6611 if test -n "${cxx}"; then
6612 disas_config "ARM_A64"
6631 disas_config "MICROBLAZE"
6637 disas_config "MOXIE"
6640 disas_config "NIOS2"
6643 disas_config "OPENRISC"
6655 disas_config "SPARC"
6658 disas_config "XTENSA"
6662 if test "$tcg_interpreter" = "yes" ; then
6668 # Ensure there's only a single GP
6669 cflags="-msmall-data $cflags"
6673 if test "$gprof" = "yes" ; then
6674 echo "TARGET_GPROF=yes" >> $config_target_mak
6675 if test "$target_linux_user" = "yes" ; then
6677 ldflags="-p $ldflags"
6679 if test "$target_softmmu" = "yes" ; then
6680 ldflags="-p $ldflags"
6681 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6685 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6686 ldflags="$ldflags $textseg_ldflags"
6689 # Newer kernels on s390 check for an S390_PGSTE program header and
6690 # enable the pgste page table extensions in that case. This makes
6691 # the vm.allocate_pgste sysctl unnecessary. We enable this program
6693 # - we build on s390x
6694 # - we build the system emulation for s390x (qemu-system-s390x)
6696 # - the linker supports --s390-pgste
6697 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
6698 if ld_has --s390-pgste ; then
6699 ldflags="-Wl,--s390-pgste $ldflags"
6703 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6704 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6706 done # for target in $targets
6708 if [ "$dtc_internal" = "yes" ]; then
6709 echo "config-host.h: subdir-dtc" >> $config_host_mak
6711 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
6712 echo "config-host.h: subdir-capstone" >> $config_host_mak
6714 if test -n "$LIBCAPSTONE"; then
6715 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
6718 if test "$numa" = "yes"; then
6719 echo "CONFIG_NUMA=y" >> $config_host_mak
6722 if test "$ccache_cpp2" = "yes"; then
6723 echo "export CCACHE_CPP2=y" >> $config_host_mak
6726 # build tree in object directory in case the source is not in the current directory
6727 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
6728 DIRS="$DIRS docs docs/interop fsdev scsi"
6729 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6730 DIRS="$DIRS roms/seabios roms/vgabios"
6731 DIRS="$DIRS qapi-generated"
6732 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6733 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6734 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6735 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6736 FILES="$FILES pc-bios/spapr-rtas/Makefile"
6737 FILES="$FILES pc-bios/s390-ccw/Makefile"
6738 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6739 FILES="$FILES pc-bios/qemu-icon.bmp"
6740 FILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
6742 $source_path/pc-bios/*.bin \
6743 $source_path/pc-bios/*.lid \
6744 $source_path/pc-bios/*.aml \
6745 $source_path/pc-bios/*.rom \
6746 $source_path/pc-bios/*.dtb \
6747 $source_path/pc-bios/*.img \
6748 $source_path/pc-bios/openbios-* \
6749 $source_path/pc-bios/u-boot.* \
6750 $source_path/pc-bios/palcode-*
6752 FILES="$FILES pc-bios/$(basename $bios_file)"
6754 for test_file in $(find $source_path/tests/acpi-test-data -type f)
6756 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6759 for f in $FILES ; do
6760 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6761 symlink "$source_path/$f" "$f"
6765 # temporary config to build submodules
6766 for rom in seabios vgabios ; do
6767 config_mak=roms/$rom/config.mak
6768 echo "# Automatically generated by configure - do not modify" > $config_mak
6769 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6770 echo "AS=$as" >> $config_mak
6771 echo "CCAS=$ccas" >> $config_mak
6772 echo "CC=$cc" >> $config_mak
6773 echo "BCC=bcc" >> $config_mak
6774 echo "CPP=$cpp" >> $config_mak
6775 echo "OBJCOPY=objcopy" >> $config_mak
6776 echo "IASL=$iasl" >> $config_mak
6777 echo "LD=$ld" >> $config_mak
6780 # set up tests data directory
6781 if [ ! -e tests/data ]; then
6782 symlink "$source_path/tests/data" tests/data
6785 # set up qemu-iotests in this build directory
6786 iotests_common_env="tests/qemu-iotests/common.env"
6787 iotests_check="tests/qemu-iotests/check"
6789 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6790 echo >> "$iotests_common_env"
6791 echo "export PYTHON='$python'" >> "$iotests_common_env"
6793 if [ ! -e "$iotests_check" ]; then
6794 symlink "$source_path/$iotests_check" "$iotests_check"
6797 # Save the configure command line for later reuse.
6798 cat <<EOD >config.status
6800 # Generated by configure.
6801 # Run this file to recreate the current configuration.
6802 # Compiler output produced by configure, useful for debugging
6803 # configure, is in config.log if it exists.
6805 printf "exec" >>config.status
6806 printf " '%s'" "$0" "$@" >>config.status
6807 echo ' "$@"' >>config.status
6808 chmod +x config.status