3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE= GREP_OPTIONS=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC="${TMPDIR1}/${TMPB}.c"
29 TMPO="${TMPDIR1}/${TMPB}.o"
30 TMPCXX="${TMPDIR1}/${TMPB}.cxx"
31 TMPL="${TMPDIR1}/${TMPB}.lo"
32 TMPA="${TMPDIR1}/lib${TMPB}.la"
33 TMPE="${TMPDIR1}/${TMPB}.exe"
34 TMPMO="${TMPDIR1}/${TMPB}.mo"
38 # Print a helpful header at the top of config.log
39 echo "# QEMU configure log $(date)" >> config.log
40 printf "# Configured with:" >> config.log
41 printf " '%s'" "$0" "$@" >> config.log
43 echo "#" >> config.log
48 while test -n "$2"; do
57 # Run the compiler, capturing its output to the log. First argument
58 # is compiler binary to execute.
61 echo $compiler "$@" >> config.log
62 $compiler "$@" >> config.log 2>&1 || return $?
64 # Test passed. If this is an --enable-werror build, rerun
65 # the test with -Werror and bail out if it fails. This
66 # makes warning-generating-errors in configure test code
67 # obvious to developers.
68 if test "$werror" != "yes"; then
71 # Don't bother rerunning the compile if we were already using -Werror
77 echo $compiler -Werror "$@" >> config.log
78 # Modified - it produces confusable result with clang.
79 # We use -Werror for all platforms. So, simply, we just return result.
80 $compiler -Werror "$@" >> config.log 2>&1
82 # $compiler -Werror "$@" >> config.log 2>&1 && return $?
83 # error_exit "configure test passed without -Werror but failed with -Werror." \
84 # "This is probably a bug in the configure script. The failing command" \
85 # "will be at the bottom of config.log." \
86 # "You can run configure with --disable-werror to bypass this check."
90 do_compiler "$cc" "$@"
94 do_compiler "$cxx" "$@"
98 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
99 # options which some versions of GCC's C++ compiler complain about
100 # because they only make sense for C programs.
102 for arg in $QEMU_CFLAGS; do
104 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
105 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
108 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
116 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
122 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
125 # symbolically link $1 to $2. Portable version of "ln -sf".
128 mkdir -p "$(dirname "$2")"
132 # check whether a command is available to this shell (may be either an
133 # executable or a builtin)
135 type "$1" >/dev/null 2>&1
138 # search for an executable in PATH
144 # pathname has a dir component?
145 if [ "${local_command#*/}" != "$local_command" ]; then
146 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
147 echo "$local_command"
151 if [ -z "$local_command" ]; then
156 for local_dir in $PATH; do
157 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
158 echo "$local_dir/$local_command"
159 IFS="${local_ifs:-$(printf ' \t\n')}"
164 IFS="${local_ifs:-$(printf ' \t\n')}"
169 echo "$trace_backends" | grep "$1" >/dev/null
173 source_path=$(dirname "$0")
176 interp_prefix="/usr/gnemul/qemu-%M"
180 block_drv_rw_whitelist=""
181 block_drv_ro_whitelist=""
187 cc_i386=i386-pc-linux-gnu-gcc
192 # Don't accept a target_list environment variable.
195 # Default value for a variable defining feature "foo".
196 # * foo="no" feature will only be used if --enable-foo arg is given
197 # * foo="" feature will be searched for, and if found, will be used
198 # unless --disable-foo is given
199 # * foo="yes" this value will only be set by --enable-foo flag.
200 # feature will searched for,
201 # if not found, configure exits with error
203 # Always add --enable-foo and --disable-foo command line args.
204 # Distributions want to ensure that several features are compiled in, and it
205 # is impossible without a --enable-foo that exits if a feature is not found.
226 xen_pv_domain_build="no"
227 xen_pci_passthrough=""
253 LDFLAGS_SHARED="-shared"
256 mandir="\${prefix}/share/man"
257 datadir="\${prefix}/share"
258 qemu_docdir="\${prefix}/share/doc/qemu"
259 bindir="\${prefix}/bin"
260 libdir="\${prefix}/lib"
261 libexecdir="\${prefix}/libexec"
262 includedir="\${prefix}/include"
263 sysconfdir="\${prefix}/etc"
264 local_statedir="\${prefix}/var"
296 guest_agent_with_vss="no"
297 guest_agent_ntddscsi="no"
306 debug_stack_usage="no"
309 glusterfs_xlator_opt="no"
310 glusterfs_discard="no"
311 glusterfs_zerofill="no"
316 tls_priority="NORMAL"
350 # parse CC options first
352 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
354 --cross-prefix=*) cross_prefix="$optarg"
358 --cxx=*) CXX="$optarg"
360 --source-path=*) source_path="$optarg"
362 --cpu=*) cpu="$optarg"
364 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
365 EXTRA_CFLAGS="$optarg"
367 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
368 EXTRA_LDFLAGS="$optarg"
370 --enable-debug-info) debug_info="yes"
372 --disable-debug-info) debug_info="no"
377 # Using uname is really, really broken. Once we have the right set of checks
378 # we can eliminate its usage altogether.
380 # Preferred compiler:
382 # ${cross_prefix}gcc (if cross-prefix specified)
384 if test -z "${CC}${cross_prefix}"; then
387 cc="${CC-${cross_prefix}gcc}"
390 if test -z "${CXX}${cross_prefix}"; then
393 cxx="${CXX-${cross_prefix}g++}"
396 ar="${AR-${cross_prefix}ar}"
397 as="${AS-${cross_prefix}as}"
400 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
401 ld="${LD-${cross_prefix}ld}"
402 nm="${NM-${cross_prefix}nm}"
403 strip="${STRIP-${cross_prefix}strip}"
404 windres="${WINDRES-${cross_prefix}windres}"
405 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
407 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
409 pkg_config=query_pkg_config
410 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
411 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
413 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
414 ARFLAGS="${ARFLAGS-rv}"
416 # default flags for all hosts
417 # We use -fwrapv to tell the compiler that we require a C dialect where
418 # left shift of signed integers is well defined and has the expected
419 # 2s-complement style results. (Both clang and gcc agree that it
420 # provides these semantics.)
421 QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
422 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
423 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
424 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
425 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
426 if test "$debug_info" = "yes"; then
428 LDFLAGS="-g $LDFLAGS"
431 # make source path absolute
432 source_path=$(cd "$source_path"; pwd)
434 # running configure in the source tree?
435 # we know that's the case if configure is there.
436 if test -f "./configure"; then
437 pwd_is_source_path="y"
439 pwd_is_source_path="n"
445 #error $1 not defined
447 int main(void) { return 0; }
455 int main(void) { return 0; }
462 int main(void) { return 0; }
466 if check_define __linux__ ; then
468 elif check_define _WIN32 ; then
470 elif check_define __OpenBSD__ ; then
472 elif check_define __sun__ ; then
474 elif check_define __HAIKU__ ; then
480 # Some host OSes need non-standard checks for which CPU to use.
481 # Note that these checks are broken for cross-compilation: if you're
482 # cross-compiling to one of these OSes then you'll need to specify
483 # the correct CPU with the --cpu option.
486 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
487 # run 64-bit userspace code.
488 # If the user didn't specify a CPU explicitly and the kernel says this is
489 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
490 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
495 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
496 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
501 if test ! -z "$cpu" ; then
502 # command line argument
504 elif check_define __i386__ ; then
506 elif check_define __x86_64__ ; then
507 if check_define __ILP32__ ; then
512 elif check_define __sparc__ ; then
513 if check_define __arch64__ ; then
518 elif check_define _ARCH_PPC ; then
519 if check_define _ARCH_PPC64 ; then
524 elif check_define __mips__ ; then
526 elif check_define __ia64__ ; then
528 elif check_define __s390__ ; then
529 if check_define __s390x__ ; then
534 elif check_define __arm__ ; then
536 elif check_define __aarch64__ ; then
543 # Normalise host CPU name and set ARCH.
544 # Note that this case should only have supported host CPUs, not guests.
546 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
549 i386|i486|i586|i686|i86pc|BePC)
568 # This will result in either an error or falling back to TCI later
572 if test -z "$ARCH"; then
578 # host *BSD for user mode
584 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
585 audio_possible_drivers="sdl"
590 audio_possible_drivers="dsound sdl"
591 if check_include dsound.h; then
592 audio_drv_list="dsound"
597 libs_qga="-lole32 $libs_qga"
602 audio_possible_drivers="oss sdl pa"
608 audio_possible_drivers="oss sdl pa"
609 # needed for kinfo_getvmmap(3) in libutil.h
611 # needed for kinfo_getproc
612 libs_qga="-lutil $libs_qga"
613 netmap="" # enable netmap autodetect
614 HOST_VARIANT_DIR="freebsd"
620 audio_possible_drivers="oss sdl pa"
621 HOST_VARIANT_DIR="dragonfly"
627 audio_possible_drivers="oss sdl"
629 HOST_VARIANT_DIR="netbsd"
635 audio_possible_drivers="sdl"
636 HOST_VARIANT_DIR="openbsd"
641 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
642 if [ "$cpu" = "x86_64" ] ; then
643 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
644 LDFLAGS="-arch x86_64 $LDFLAGS"
647 audio_drv_list="coreaudio"
648 audio_possible_drivers="coreaudio sdl"
649 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
650 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
651 # Disable attempts to use ObjectiveC features in os/object.h since they
652 # won't work when we're compiling with gcc as a C compiler.
653 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
654 HOST_VARIANT_DIR="darwin"
659 install="${INSTALL-ginstall}"
661 smbd="${SMBD-/usr/sfw/sbin/smbd}"
662 needs_libsunmath="no"
663 solarisrev=$(uname -r | cut -f2 -d.)
664 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
665 if test "$solarisrev" -le 9 ; then
666 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
667 needs_libsunmath="yes"
668 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
669 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
670 LIBS="-lsunmath $LIBS"
672 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
673 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
674 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
675 "Studio 11 can be downloaded from www.sun.com."
679 if test -f /usr/include/sys/soundcard.h ; then
682 audio_possible_drivers="oss sdl"
683 # needed for CMSG_ macros in sys/socket.h
684 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
685 # needed for TIOCWIN* defines in termios.h
686 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
687 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
688 solarisnetlibs="-lsocket -lnsl -lresolv"
689 LIBS="$solarisnetlibs $LIBS"
690 libs_qga="$solarisnetlibs $libs_qga"
698 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
699 LIBS="-lposix_error_mapper -lnetwork $LIBS"
703 audio_possible_drivers="oss alsa sdl pa"
710 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
714 if [ "$bsd" = "yes" ] ; then
715 if [ "$darwin" != "yes" ] ; then
720 : ${make=${MAKE-make}}
721 : ${install=${INSTALL-install}}
722 : ${python=${PYTHON-python}}
723 : ${smbd=${SMBD-/usr/sbin/smbd}}
725 # Default objcc to clang if available, otherwise use CC
732 if test "$mingw32" = "yes" ; then
735 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN $QEMU_CFLAGS"
736 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
737 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
738 # MinGW needs -mthreads for TLS and macro _MT.
739 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
740 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
742 if compile_prog "" "-liberty" ; then
743 LIBS="-liberty $LIBS"
745 prefix="c:/Program Files/QEMU"
748 qemu_docdir="\${prefix}"
750 sysconfdir="\${prefix}"
753 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
759 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
761 --help|-h) show_help=yes
763 --version|-V) exec cat $source_path/VERSION
765 --prefix=*) prefix="$optarg"
767 --interp-prefix=*) interp_prefix="$optarg"
775 --host-cc=*) host_cc="$optarg"
779 --iasl=*) iasl="$optarg"
781 --objcc=*) objcc="$optarg"
783 --make=*) make="$optarg"
785 --install=*) install="$optarg"
787 --python=*) python="$optarg"
789 --gcov=*) gcov_tool="$optarg"
791 --smbd=*) smbd="$optarg"
799 --disable-debug-info)
809 --target-list=*) target_list="$optarg"
811 --enable-trace-backends=*) trace_backends="$optarg"
813 # XXX: backwards compatibility
814 --enable-trace-backend=*) trace_backends="$optarg"
816 --with-trace-file=*) trace_file="$optarg"
818 --enable-gprof) gprof="yes"
820 --enable-gcov) gcov="yes"
824 LDFLAGS="-static $LDFLAGS"
825 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
827 --mandir=*) mandir="$optarg"
829 --bindir=*) bindir="$optarg"
831 --libdir=*) libdir="$optarg"
833 --libexecdir=*) libexecdir="$optarg"
835 --includedir=*) includedir="$optarg"
837 --datadir=*) datadir="$optarg"
839 --with-confsuffix=*) confsuffix="$optarg"
841 --docdir=*) qemu_docdir="$optarg"
843 --sysconfdir=*) sysconfdir="$optarg"
845 --localstatedir=*) local_statedir="$optarg"
847 --sbindir=*|--sharedstatedir=*|\
848 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
849 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
850 # These switches are silently ignored, for compatibility with
851 # autoconf-generated configure scripts. This allows QEMU's
852 # configure to be used by RPM and similar macros that set
853 # lots of directory switches by default.
855 --with-system-pixman) pixman="system"
857 --without-system-pixman) pixman="internal"
859 --without-pixman) pixman="none"
861 --disable-sdl) sdl="no"
863 --enable-sdl) sdl="yes"
865 --with-sdlabi=*) sdlabi="$optarg"
867 --disable-qom-cast-debug) qom_cast_debug="no"
869 --enable-qom-cast-debug) qom_cast_debug="yes"
871 --disable-virtfs) virtfs="no"
873 --enable-virtfs) virtfs="yes"
875 --disable-vnc) vnc="no"
877 --enable-vnc) vnc="yes"
879 --oss-lib=*) oss_lib="$optarg"
881 --audio-drv-list=*) audio_drv_list="$optarg"
883 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
885 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
887 --enable-debug-tcg) debug_tcg="yes"
889 --disable-debug-tcg) debug_tcg="no"
892 # Enable debugging options that aren't excessively noisy
898 --enable-sparse) sparse="yes"
900 --disable-sparse) sparse="no"
902 --disable-strip) strip_opt="no"
904 --disable-vnc-sasl) vnc_sasl="no"
906 --enable-vnc-sasl) vnc_sasl="yes"
908 --disable-vnc-jpeg) vnc_jpeg="no"
910 --enable-vnc-jpeg) vnc_jpeg="yes"
912 --disable-vnc-png) vnc_png="no"
914 --enable-vnc-png) vnc_png="yes"
916 --disable-slirp) slirp="no"
918 --disable-vde) vde="no"
920 --enable-vde) vde="yes"
922 --disable-netmap) netmap="no"
924 --enable-netmap) netmap="yes"
926 --disable-xen) xen="no"
928 --enable-xen) xen="yes"
930 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
932 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
934 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
936 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
938 --disable-brlapi) brlapi="no"
940 --enable-brlapi) brlapi="yes"
942 --disable-bluez) bluez="no"
944 --enable-bluez) bluez="yes"
946 --disable-kvm) kvm="no"
948 --enable-kvm) kvm="yes"
950 --disable-hax) hax="no"
952 --enable-hax) hax="yes"
954 --disable-colo) colo="no"
956 --enable-colo) colo="yes"
958 --disable-tcg-interpreter) tcg_interpreter="no"
960 --enable-tcg-interpreter) tcg_interpreter="yes"
962 --disable-cap-ng) cap_ng="no"
964 --enable-cap-ng) cap_ng="yes"
966 --disable-spice) spice="no"
968 --enable-spice) spice="yes"
970 --disable-libiscsi) libiscsi="no"
972 --enable-libiscsi) libiscsi="yes"
974 --disable-libnfs) libnfs="no"
976 --enable-libnfs) libnfs="yes"
978 --enable-profiler) profiler="yes"
980 --disable-cocoa) cocoa="no"
984 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
986 --disable-system) softmmu="no"
988 --enable-system) softmmu="yes"
995 --disable-linux-user) linux_user="no"
997 --enable-linux-user) linux_user="yes"
999 --disable-bsd-user) bsd_user="no"
1001 --enable-bsd-user) bsd_user="yes"
1003 --enable-pie) pie="yes"
1005 --disable-pie) pie="no"
1009 force_werror="yes" ;
1011 --disable-werror) werror="no"
1013 --enable-stack-protector) stack_protector="yes"
1015 --disable-stack-protector) stack_protector="no"
1017 --disable-curses) curses="no"
1019 --enable-curses) curses="yes"
1021 --disable-curl) curl="no"
1023 --enable-curl) curl="yes"
1025 --disable-fdt) fdt="no"
1027 --enable-fdt) fdt="yes"
1029 --disable-linux-aio) linux_aio="no"
1031 --enable-linux-aio) linux_aio="yes"
1033 --disable-attr) attr="no"
1035 --enable-attr) attr="yes"
1037 --disable-blobs) blobs="no"
1039 --with-pkgversion=*) pkgversion=" ($optarg)"
1041 --with-coroutine=*) coroutine="$optarg"
1043 --disable-coroutine-pool) coroutine_pool="no"
1045 --enable-coroutine-pool) coroutine_pool="yes"
1047 --enable-debug-stack-usage) debug_stack_usage="yes"
1049 --disable-docs) docs="no"
1051 --enable-docs) docs="yes"
1053 --disable-vhost-net) vhost_net="no"
1055 --enable-vhost-net) vhost_net="yes"
1057 --enable-efence) efence="yes"
1059 --disable-efence) efence="no"
1061 --enable-yagl) yagl="yes"
1063 --disable-yagl) yagl="no"
1065 --enable-yagl-stats) yagl_stats="yes"
1067 --disable-yagl-stats) yagl_stats="no"
1069 --enable-vigs) vigs="yes"
1071 --disable-vigs) vigs="no"
1073 --disable-vhost-scsi) vhost_scsi="no"
1075 --enable-vhost-scsi) vhost_scsi="yes"
1077 --disable-vhost-vsock) vhost_vsock="no"
1079 --enable-vhost-vsock) vhost_vsock="yes"
1081 --disable-opengl) opengl="no"
1083 --enable-opengl) opengl="yes"
1085 --disable-rbd) rbd="no"
1087 --enable-rbd) rbd="yes"
1089 --disable-xfsctl) xfs="no"
1091 --enable-xfsctl) xfs="yes"
1093 --disable-smartcard) smartcard="no"
1095 --enable-smartcard) smartcard="yes"
1097 --disable-libusb) libusb="no"
1099 --enable-libusb) libusb="yes"
1101 --disable-libtizenusb) libtizenusb="no"
1103 --enable-libtizenusb) libtizenusb="yes"
1105 --disable-usb-redir) usb_redir="no"
1107 --enable-usb-redir) usb_redir="yes"
1109 --disable-zlib-test) zlib="no"
1111 --disable-lzo) lzo="no"
1113 --enable-lzo) lzo="yes"
1115 --disable-snappy) snappy="no"
1117 --enable-snappy) snappy="yes"
1119 --disable-bzip2) bzip2="no"
1121 --enable-bzip2) bzip2="yes"
1123 --enable-guest-agent) guest_agent="yes"
1125 --disable-guest-agent) guest_agent="no"
1127 --enable-guest-agent-msi) guest_agent_msi="yes"
1129 --disable-guest-agent-msi) guest_agent_msi="no"
1131 --with-vss-sdk) vss_win32_sdk=""
1133 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1135 --without-vss-sdk) vss_win32_sdk="no"
1137 --with-win-sdk) win_sdk=""
1139 --with-win-sdk=*) win_sdk="$optarg"
1141 --without-win-sdk) win_sdk="no"
1143 --enable-tools) want_tools="yes"
1145 --disable-tools) want_tools="no"
1147 --enable-seccomp) seccomp="yes"
1149 --disable-seccomp) seccomp="no"
1151 --disable-glusterfs) glusterfs="no"
1153 --enable-glusterfs) glusterfs="yes"
1155 --disable-archipelago) archipelago="no"
1157 --enable-archipelago) archipelago="yes"
1159 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1160 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1162 --enable-vhdx|--disable-vhdx)
1163 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1165 --enable-uuid|--disable-uuid)
1166 echo "$0: $opt is obsolete, UUID support is always built" >&2
1168 --disable-gtk) gtk="no"
1170 --enable-gtk) gtk="yes"
1172 --tls-priority=*) tls_priority="$optarg"
1174 --disable-gnutls) gnutls="no"
1176 --enable-gnutls) gnutls="yes"
1178 --disable-nettle) nettle="no"
1180 --enable-nettle) nettle="yes"
1182 --disable-gcrypt) gcrypt="no"
1184 --enable-gcrypt) gcrypt="yes"
1186 --enable-rdma) rdma="yes"
1188 --disable-rdma) rdma="no"
1190 --with-gtkabi=*) gtkabi="$optarg"
1192 --disable-vte) vte="no"
1194 --enable-vte) vte="yes"
1196 --disable-virglrenderer) virglrenderer="no"
1198 --enable-virglrenderer) virglrenderer="yes"
1200 --disable-tpm) tpm="no"
1202 --enable-tpm) tpm="yes"
1204 --disable-libssh2) libssh2="no"
1206 --enable-libssh2) libssh2="yes"
1208 --disable-numa) numa="no"
1210 --enable-numa) numa="yes"
1212 --disable-tcmalloc) tcmalloc="no"
1214 --enable-tcmalloc) tcmalloc="yes"
1216 --disable-jemalloc) jemalloc="no"
1218 --enable-jemalloc) jemalloc="yes"
1220 --disable-replication) replication="no"
1222 --enable-replication) replication="yes"
1225 --enable-maru) maru="yes"
1227 --winver=*) winver="$optarg"
1229 --enable-libav) libav="yes"
1231 --disable-libav) libav="no"
1233 --enable-libpng) libpng="yes"
1235 --enable-dxva2) dxva2="yes"
1237 --disable-dxva2) dxva2="no"
1239 --enable-vaapi) vaapi="yes"
1241 --disable-vaapi) vaapi="no"
1243 --disable-qt) qt="no"
1245 --enable-qt) qt="yes"
1247 --extension-path=*) extension_path="$optarg"
1251 echo "ERROR: unknown option $opt"
1252 echo "Try '$0 --help' for more information"
1258 if ! has $python; then
1259 error_exit "Python not found. Use --python=/path/to/python"
1262 # Note that if the Python conditional here evaluates True we will exit
1263 # with status 1 which is a shell 'false' value.
1264 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1265 error_exit "Cannot use '$python', Python 2.6 or later is required." \
1266 "Note that Python 3 or later is not yet supported." \
1267 "Use --python=/path/to/python to specify a supported Python."
1270 # Suppress writing compiled files
1276 LDFLAGS="-m32 $LDFLAGS"
1280 LDFLAGS="-m64 $LDFLAGS"
1283 LDFLAGS="-m32 $LDFLAGS"
1284 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1287 LDFLAGS="-m64 $LDFLAGS"
1288 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1292 LDFLAGS="-m31 $LDFLAGS"
1296 LDFLAGS="-m64 $LDFLAGS"
1300 LDFLAGS="-m32 $LDFLAGS"
1301 cc_i386='$(CC) -m32'
1304 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1305 # If we truly care, we should simply detect this case at
1306 # runtime and generate the fallback to serial emulation.
1307 CPU_CFLAGS="-m64 -mcx16"
1308 LDFLAGS="-m64 $LDFLAGS"
1309 cc_i386='$(CC) -m32'
1313 LDFLAGS="-mx32 $LDFLAGS"
1314 cc_i386='$(CC) -m32'
1316 # No special flags required for other host CPUs
1319 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1320 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1322 # For user-mode emulation the host arch has to be one we explicitly
1323 # support, even if we're using TCI.
1324 if [ "$ARCH" = "unknown" ]; then
1329 default_target_list=""
1333 if [ "$softmmu" = "yes" ]; then
1334 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1336 if [ "$linux_user" = "yes" ]; then
1337 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1339 if [ "$bsd_user" = "yes" ]; then
1340 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1343 for config in $mak_wilds; do
1344 default_target_list="${default_target_list} $(basename "$config" .mak)"
1347 if test x"$show_help" = x"yes" ; then
1350 Usage: configure [options]
1351 Options: [defaults in brackets after descriptions]
1354 --help print this message
1355 --prefix=PREFIX install in PREFIX [$prefix]
1356 --interp-prefix=PREFIX where to find shared libraries, etc.
1357 use %M for cpu name [$interp_prefix]
1358 --target-list=LIST set target list (default: build everything)
1359 $(echo Available targets: $default_target_list | \
1360 fold -s -w 53 | sed -e 's/^/ /')
1362 Advanced options (experts only):
1363 --source-path=PATH path of source code [$source_path]
1364 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1365 --cc=CC use C compiler CC [$cc]
1366 --iasl=IASL use ACPI compiler IASL [$iasl]
1367 --host-cc=CC use C compiler CC [$host_cc] for code run at
1369 --cxx=CXX use C++ compiler CXX [$cxx]
1370 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1371 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1372 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1373 --make=MAKE use specified make [$make]
1374 --install=INSTALL use specified install [$install]
1375 --python=PYTHON use specified python [$python]
1376 --smbd=SMBD use specified smbd [$smbd]
1377 --static enable static build [$static]
1378 --mandir=PATH install man pages in PATH
1379 --datadir=PATH install firmware in PATH$confsuffix
1380 --docdir=PATH install documentation in PATH$confsuffix
1381 --bindir=PATH install binaries in PATH
1382 --libdir=PATH install libraries in PATH
1383 --sysconfdir=PATH install config in PATH$confsuffix
1384 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1385 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1386 --enable-debug enable common debug build options
1387 --disable-strip disable stripping binaries
1388 --disable-werror disable compilation abort on warning
1389 --disable-stack-protector disable compiler-provided stack protection
1390 --audio-drv-list=LIST set audio drivers list:
1391 Available drivers: $audio_possible_drivers
1392 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1393 --block-drv-rw-whitelist=L
1394 set block driver read-write whitelist
1395 (affects only QEMU, not qemu-img)
1396 --block-drv-ro-whitelist=L
1397 set block driver read-only whitelist
1398 (affects only QEMU, not qemu-img)
1399 --enable-trace-backends=B Set trace backend
1400 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1401 --with-trace-file=NAME Full PATH,NAME of file to store traces
1403 --disable-slirp disable SLIRP userspace network connectivity
1404 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1405 --oss-lib path to OSS library
1406 --cpu=CPU Build for host CPU [$cpu]
1407 --with-coroutine=BACKEND coroutine backend. Supported options:
1408 gthread, ucontext, sigaltstack, windows
1409 --enable-gcov enable test coverage analysis with gcov
1410 --gcov=GCOV use specified gcov [$gcov_tool]
1411 --disable-blobs disable installing provided firmware blobs
1412 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1413 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1414 --tls-priority default TLS protocol/cipher priority string
1416 Optional features, enabled with --enable-FEATURE and
1417 disabled with --disable-FEATURE, default is enabled if available:
1419 system all system emulation targets
1420 user supported user emulation targets
1421 linux-user all linux usermode emulation targets
1422 bsd-user all BSD usermode emulation targets
1423 docs build documentation
1424 guest-agent build the QEMU Guest Agent
1425 guest-agent-msi build guest agent Windows MSI installation package
1426 pie Position Independent Executables
1427 modules modules support
1428 debug-tcg TCG debugging (default is disabled)
1429 debug-info debugging information
1430 sparse sparse checker
1432 gnutls GNUTLS cryptography support
1433 nettle nettle cryptography support
1434 gcrypt libgcrypt cryptography support
1436 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1438 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1439 vte vte support for the gtk UI
1442 vnc-sasl SASL encryption for VNC server
1443 vnc-jpeg JPEG lossy compression for VNC server
1444 vnc-png PNG compression for VNC server
1445 cocoa Cocoa UI (Mac OS X only)
1447 xen xen backend driver support
1449 brlapi BrlAPI (Braile)
1450 curl curl connectivity
1452 bluez bluez stack connectivity
1453 kvm KVM acceleration support
1454 colo COarse-grain LOck-stepping VM for Non-stop Service
1455 rdma RDMA-based migration support
1456 vde support for vde network
1457 netmap support for netmap network
1458 linux-aio Linux AIO support
1459 cap-ng libcap-ng support
1460 attr attr and xattr support
1461 vhost-net vhost-net acceleration support
1463 rbd rados block device (rbd)
1464 libiscsi iscsi support
1466 smartcard smartcard support (libcacard)
1467 libusb libusb (for usb passthrough)
1468 usb-redir usb network redirection support
1469 lzo support of lzo compression library
1470 snappy support of snappy compression library
1471 bzip2 support of bzip2 compression library
1472 (for reading bzip2-compressed dmg images)
1473 seccomp seccomp support
1474 coroutine-pool coroutine freelist (better performance)
1475 glusterfs GlusterFS backend
1476 archipelago Archipelago backend
1478 libssh2 ssh block device support
1479 numa libnuma support
1480 tcmalloc tcmalloc support
1481 jemalloc jemalloc support
1482 replication replication support
1485 hax HAX acceleration support
1487 yagl-stats YaGL stats
1491 --enable-maru enable maru board
1492 --winver=WINVER set WINVER
1493 --enable-libav enable libav library
1494 --disable-libav disable libav library
1495 --enable-libpng enable png library
1496 --enable-dxva2 enable dxva2 support
1497 --disable-dxva2 disable dxva2 support
1498 --ensable-vaapi enable vaapi support
1499 --disable-vaapi disable vaapi support
1500 --extension-path=PATH set extension path
1502 NOTE: The object files are built at the place where configure is launched
1507 # Now we have handled --enable-tcg-interpreter and know we're not just
1508 # printing the help message, bail out if the host CPU isn't supported.
1509 if test "$ARCH" = "unknown"; then
1510 if test "$tcg_interpreter" = "yes" ; then
1511 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1513 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1517 # Consult white-list to determine whether to enable werror
1518 # by default. Only enable by default for git builds
1519 if test -z "$werror" ; then
1520 if test -d "$source_path/.git" -a \
1521 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
1528 # check that the C compiler works.
1530 if compile_object ; then
1531 : C compiler works ok
1533 error_exit "\"$cc\" either does not exist or does not work"
1535 if ! compile_prog ; then
1536 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1539 # Check that the C++ compiler exists and works with the C compiler
1542 int c_function(void);
1543 int main(void) { return c_function(); }
1550 int c_function(void);
1552 int c_function(void) { return 42; }
1557 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1558 # C++ compiler $cxx works ok with C compiler $cc
1561 echo "C++ compiler $cxx does not work with C compiler $cc"
1562 echo "Disabling C++ specific optional code"
1566 echo "No C++ compiler available; disabling C++ specific optional code"
1570 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1571 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1572 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1573 gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1574 gcc_flags="-Wno-initializer-overrides $gcc_flags"
1575 gcc_flags="-Wno-string-plus-int $gcc_flags"
1576 # Note that we do not add -Werror to gcc_flags here, because that would
1577 # enable it for all configure tests. If a configure test failed due
1578 # to -Werror this would just silently disable some features,
1579 # so it's too error prone.
1581 cc_has_warning_flag() {
1584 # Use the positive sense of the flag when testing for -Wno-wombat
1585 # support (gcc will happily accept the -Wno- form of unknown
1587 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1588 compile_prog "-Werror $optflag" ""
1591 for flag in $gcc_flags; do
1592 if cc_has_warning_flag $flag ; then
1593 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1597 if test "$stack_protector" != "no"; then
1599 int main(int argc, char *argv[])
1601 char arr[64], *p = arr, *c = argv[0];
1608 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1610 for flag in $gcc_flags; do
1611 # We need to check both a compile and a link, since some compiler
1612 # setups fail only on a .c->.o compile and some only at link time
1613 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1614 compile_prog "-Werror $flag" ""; then
1615 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1620 if test "$stack_protector" = yes; then
1621 if test $sp_on = 0; then
1622 error_exit "Stack protector not supported"
1627 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1628 # large functions that use global variables. The bug is in all releases of
1629 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1630 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1632 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1633 int main(void) { return 0; }
1635 #error No bug in this compiler.
1638 if compile_prog "-Werror -fno-gcse" "" ; then
1639 TRANSLATE_OPT_CFLAGS=-fno-gcse
1642 if test "$static" = "yes" ; then
1643 if test "$modules" = "yes" ; then
1644 error_exit "static and modules are mutually incompatible"
1646 if test "$pie" = "yes" ; then
1647 error_exit "static and pie are mutually incompatible"
1653 # Unconditional check for compiler __thread support
1655 static __thread int tls_var;
1656 int main(void) { return tls_var; }
1659 if ! compile_prog "-Werror" "" ; then
1661 error_exit "Your compiler does not support the __thread specifier for " \
1662 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1665 if test "$pie" = ""; then
1666 case "$cpu-$targetos" in
1667 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1675 if test "$pie" != "no" ; then
1679 # define THREAD __thread
1684 static THREAD int tls_var;
1686 int main(void) { return tls_var; }
1689 if compile_prog "-fPIE -DPIE" "-pie"; then
1690 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1691 LDFLAGS="-pie $LDFLAGS"
1693 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1694 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1697 if test "$pie" = "yes"; then
1698 error_exit "PIE not available due to missing toolchain support"
1700 echo "Disabling PIE due to missing toolchain support"
1705 if compile_prog "-Werror -fno-pie" "-nopie"; then
1706 CFLAGS_NOPIE="-fno-pie"
1707 LDFLAGS_NOPIE="-nopie"
1711 ##########################################
1712 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1713 # use i686 as default anyway, but for those that don't, an explicit
1714 # specification is necessary
1716 if test "$cpu" = "i386"; then
1718 static int sfaa(int *ptr)
1720 return __sync_fetch_and_and(ptr, 0);
1726 val = __sync_val_compare_and_swap(&val, 0, 1);
1731 if ! compile_prog "" "" ; then
1732 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1736 #########################################
1737 # Solaris specific configure tool chain decisions
1739 if test "$solaris" = "yes" ; then
1740 if has $install; then
1743 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1744 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1745 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1747 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1748 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1749 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1750 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1755 if test -f /usr/ccs/bin/ar ; then
1756 error_exit "No path includes ar" \
1757 "Add /usr/ccs/bin to your path and rerun configure"
1759 error_exit "No path includes ar"
1763 if test -z "${target_list+xxx}" ; then
1764 target_list="$default_target_list"
1766 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
1769 # Check that we recognised the target name; this allows a more
1770 # friendly error message than if we let it fall through.
1771 for target in $target_list; do
1772 case " $default_target_list " in
1776 error_exit "Unknown target name '$target'"
1781 # see if system emulation was really requested
1782 case " $target_list " in
1783 *"-softmmu "*) softmmu=yes
1789 feature_not_found() {
1793 error_exit "User requested feature $feature" \
1794 "configure was not able to find it." \
1799 # big/little endian test
1801 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1802 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1803 extern int foo(short *, short *);
1804 int main(int argc, char *argv[]) {
1805 return foo(big_endian, little_endian);
1809 if compile_object ; then
1810 if grep -q BiGeNdIaN $TMPO ; then
1812 elif grep -q LiTtLeEnDiAn $TMPO ; then
1815 echo big/little test failed
1818 echo big/little test failed
1821 ##########################################
1822 # cocoa implies not SDL or GTK
1823 # (the cocoa UI code currently assumes it is always the active UI
1824 # and doesn't interact well with other UI frontend code)
1825 if test "$cocoa" = "yes"; then
1826 if test "$sdl" = "yes"; then
1827 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1829 if test "$gtk" = "yes"; then
1830 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1836 # Some versions of Mac OS X incorrectly define SIZE_MAX
1840 int main(int argc, char *argv[]) {
1841 return printf("%zu", SIZE_MAX);
1844 have_broken_size_max=no
1845 if ! compile_object -Werror ; then
1846 have_broken_size_max=yes
1849 ##########################################
1853 #include <sys/socket.h>
1854 #include <linux/ip.h>
1855 int main(void) { return sizeof(struct mmsghdr); }
1857 if compile_prog "" "" ; then
1863 ##########################################
1864 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1866 if test "$mingw32" = "yes"; then
1867 # Some versions of MinGW / Mingw-w64 lack localtime_r
1868 # and gmtime_r entirely.
1870 # Some versions of Mingw-w64 define a macro for
1871 # localtime_r/gmtime_r.
1873 # Some versions of Mingw-w64 will define functions
1874 # for localtime_r/gmtime_r, but only if you have
1875 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1876 # though, unistd.h and pthread.h both define
1879 # So this #undef localtime_r and #include <unistd.h>
1880 # are not in fact redundant.
1885 int main(void) { localtime_r(NULL, NULL); return 0; }
1887 if compile_prog "" "" ; then
1894 ##########################################
1897 if ! has "$pkg_config_exe"; then
1898 error_exit "pkg-config binary '$pkg_config_exe' not found"
1901 ##########################################
1904 if test "$linux_user" = "yes"; then
1907 #include <linux/futex.h>
1909 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1915 if ! compile_object ; then
1916 feature_not_found "nptl" "Install glibc and linux kernel headers."
1920 ##########################################
1921 # avx2 optimization requirement check
1924 #pragma GCC push_options
1925 #pragma GCC target("avx2")
1927 #include <immintrin.h>
1928 static int bar(void *a) {
1929 __m256i x = *(__m256i *)a;
1930 return _mm256_testz_si256(x, x);
1932 int main(int argc, char *argv[]) { return bar(argv[0]); }
1934 if compile_object "" ; then
1938 #########################################
1941 if test "$zlib" != "no" ; then
1944 int main(void) { zlibVersion(); return 0; }
1946 if compile_prog "" "-lz" ; then
1949 error_exit "zlib check failed" \
1950 "Make sure to have the zlib libs and headers installed."
1955 ##########################################
1958 if test "$lzo" != "no" ; then
1960 #include <lzo/lzo1x.h>
1961 int main(void) { lzo_version(); return 0; }
1963 if compile_prog "" "-llzo2" ; then
1964 libs_softmmu="$libs_softmmu -llzo2"
1967 if test "$lzo" = "yes"; then
1968 feature_not_found "liblzo2" "Install liblzo2 devel"
1974 ##########################################
1977 if test "$snappy" != "no" ; then
1979 #include <snappy-c.h>
1980 int main(void) { snappy_max_compressed_length(4096); return 0; }
1982 if compile_prog "" "-lsnappy" ; then
1983 libs_softmmu="$libs_softmmu -lsnappy"
1986 if test "$snappy" = "yes"; then
1987 feature_not_found "libsnappy" "Install libsnappy devel"
1993 ##########################################
1996 if test "$bzip2" != "no" ; then
1999 int main(void) { BZ2_bzlibVersion(); return 0; }
2001 if compile_prog "" "-lbz2" ; then
2004 if test "$bzip2" = "yes"; then
2005 feature_not_found "libbzip2" "Install libbzip2 devel"
2011 ##########################################
2014 if test "$seccomp" != "no" ; then
2017 libseccomp_minver="2.1.0"
2020 libseccomp_minver="2.2.0"
2023 libseccomp_minver="2.2.3"
2026 libseccomp_minver="2.3.0"
2029 libseccomp_minver=""
2033 if test "$libseccomp_minver" != "" &&
2034 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
2035 libs_softmmu="$libs_softmmu $($pkg_config --libs libseccomp)"
2036 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
2039 if test "$seccomp" = "yes" ; then
2040 if test "$libseccomp_minver" != "" ; then
2041 feature_not_found "libseccomp" \
2042 "Install libseccomp devel >= $libseccomp_minver"
2044 feature_not_found "libseccomp" \
2045 "libseccomp is not supported for host cpu $cpu"
2051 ##########################################
2054 if test "$xen" != "no" ; then
2055 xen_libs="-lxenstore -lxenctrl -lxenguest"
2056 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
2058 # First we test whether Xen headers and libraries are available.
2059 # If no, we are done and there is no Xen support.
2060 # If yes, more tests are run to detect the Xen version.
2064 #include <xenctrl.h>
2069 if ! compile_prog "" "$xen_libs" ; then
2071 if test "$xen" = "yes" ; then
2072 feature_not_found "xen" "Install xen devel"
2078 cat > $TMPC <<EOF &&
2080 * If we have stable libs the we don't want the libxc compat
2081 * layers, regardless of what CFLAGS we may have been given.
2083 * Also, check if xengnttab_grant_copy_segment_t is defined and
2084 * grant copy operation is implemented.
2086 #undef XC_WANT_COMPAT_EVTCHN_API
2087 #undef XC_WANT_COMPAT_GNTTAB_API
2088 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2089 #include <xenctrl.h>
2090 #include <xenstore.h>
2091 #include <xenevtchn.h>
2092 #include <xengnttab.h>
2093 #include <xenforeignmemory.h>
2095 #include <xen/hvm/hvm_info_table.h>
2096 #if !defined(HVM_MAX_VCPUS)
2097 # error HVM_MAX_VCPUS not defined
2100 xc_interface *xc = NULL;
2101 xenforeignmemory_handle *xfmem;
2102 xenevtchn_handle *xe;
2103 xengnttab_handle *xg;
2104 xen_domain_handle_t handle;
2105 xengnttab_grant_copy_segment_t* seg = NULL;
2109 xc = xc_interface_open(0, 0, 0);
2110 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2111 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2112 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2113 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2114 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2116 xfmem = xenforeignmemory_open(0, 0);
2117 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2119 xe = xenevtchn_open(0, 0);
2122 xg = xengnttab_open(0, 0);
2123 xengnttab_grant_copy(xg, 0, seg);
2128 compile_prog "" "$xen_libs $xen_stable_libs"
2130 xen_ctrl_version=480
2133 cat > $TMPC <<EOF &&
2135 * If we have stable libs the we don't want the libxc compat
2136 * layers, regardless of what CFLAGS we may have been given.
2138 #undef XC_WANT_COMPAT_EVTCHN_API
2139 #undef XC_WANT_COMPAT_GNTTAB_API
2140 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2141 #include <xenctrl.h>
2142 #include <xenstore.h>
2143 #include <xenevtchn.h>
2144 #include <xengnttab.h>
2145 #include <xenforeignmemory.h>
2147 #include <xen/hvm/hvm_info_table.h>
2148 #if !defined(HVM_MAX_VCPUS)
2149 # error HVM_MAX_VCPUS not defined
2152 xc_interface *xc = NULL;
2153 xenforeignmemory_handle *xfmem;
2154 xenevtchn_handle *xe;
2155 xengnttab_handle *xg;
2156 xen_domain_handle_t handle;
2160 xc = xc_interface_open(0, 0, 0);
2161 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2162 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2163 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2164 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2165 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2167 xfmem = xenforeignmemory_open(0, 0);
2168 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2170 xe = xenevtchn_open(0, 0);
2173 xg = xengnttab_open(0, 0);
2174 xengnttab_map_grant_ref(xg, 0, 0, 0);
2179 compile_prog "" "$xen_libs $xen_stable_libs"
2181 xen_ctrl_version=471
2184 cat > $TMPC <<EOF &&
2185 #include <xenctrl.h>
2188 xc_interface *xc = NULL;
2189 xen_domain_handle_t handle;
2190 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2194 compile_prog "" "$xen_libs"
2196 xen_ctrl_version=470
2201 cat > $TMPC <<EOF &&
2202 #include <xenctrl.h>
2203 #include <xenstore.h>
2205 #include <xen/hvm/hvm_info_table.h>
2206 #if !defined(HVM_MAX_VCPUS)
2207 # error HVM_MAX_VCPUS not defined
2212 xc = xc_interface_open(0, 0, 0);
2213 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2214 xc_gnttab_open(NULL, 0);
2215 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2216 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2217 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2218 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2222 compile_prog "" "$xen_libs"
2224 xen_ctrl_version=460
2229 cat > $TMPC <<EOF &&
2230 #include <xenctrl.h>
2231 #include <xenstore.h>
2233 #include <xen/hvm/hvm_info_table.h>
2234 #if !defined(HVM_MAX_VCPUS)
2235 # error HVM_MAX_VCPUS not defined
2240 xc = xc_interface_open(0, 0, 0);
2241 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2242 xc_gnttab_open(NULL, 0);
2243 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2244 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2245 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2249 compile_prog "" "$xen_libs"
2251 xen_ctrl_version=450
2255 cat > $TMPC <<EOF &&
2256 #include <xenctrl.h>
2257 #include <xenstore.h>
2259 #include <xen/hvm/hvm_info_table.h>
2260 #if !defined(HVM_MAX_VCPUS)
2261 # error HVM_MAX_VCPUS not defined
2266 xc = xc_interface_open(0, 0, 0);
2267 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2268 xc_gnttab_open(NULL, 0);
2269 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2270 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2274 compile_prog "" "$xen_libs"
2276 xen_ctrl_version=420
2280 if test "$xen" = "yes" ; then
2281 feature_not_found "xen (unsupported version)" \
2282 "Install a supported xen (xen 4.2 or newer)"
2287 if test "$xen" = yes; then
2288 if test $xen_ctrl_version -ge 471 ; then
2289 libs_softmmu="$xen_stable_libs $libs_softmmu"
2291 libs_softmmu="$xen_libs $libs_softmmu"
2295 if test "$xen_pci_passthrough" != "no"; then
2296 if test "$xen" = "yes" && test "$linux" = "yes"; then
2297 xen_pci_passthrough=yes
2299 if test "$xen_pci_passthrough" = "yes"; then
2300 error_exit "User requested feature Xen PCI Passthrough" \
2301 " but this feature requires /sys from Linux"
2303 xen_pci_passthrough=no
2307 if test "$xen_pv_domain_build" = "yes" &&
2308 test "$xen" != "yes"; then
2309 error_exit "User requested Xen PV domain builder support" \
2310 "which requires Xen support."
2313 ##########################################
2315 if test "$sparse" != "no" ; then
2319 if test "$sparse" = "yes" ; then
2320 feature_not_found "sparse" "Install sparse binary"
2326 ##########################################
2330 if $pkg_config --exists "x11"; then
2331 x11_cflags=$($pkg_config --cflags x11)
2332 x11_libs=$($pkg_config --libs x11)
2335 ##########################################
2338 if test "$gtkabi" = ""; then
2339 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2340 # Use 3.0 as a fallback if that is available.
2341 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2343 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2350 if test "$gtk" != "no"; then
2351 gtkpackage="gtk+-$gtkabi"
2352 gtkx11package="gtk+-x11-$gtkabi"
2353 if test "$gtkabi" = "3.0" ; then
2358 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2359 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2360 gtk_libs=$($pkg_config --libs $gtkpackage)
2361 gtk_version=$($pkg_config --modversion $gtkpackage)
2362 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2363 gtk_cflags="$gtk_cflags $x11_cflags"
2364 gtk_libs="$gtk_libs $x11_libs"
2366 libs_softmmu="$gtk_libs $libs_softmmu"
2368 elif test "$gtk" = "yes"; then
2369 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2376 ##########################################
2380 # Unfortunately some distros have bad pkg-config information for gnutls
2381 # such that it claims to exist but you get a compiler error if you try
2382 # to use the options returned by --libs. Specifically, Ubuntu for --static
2383 # builds doesn't work:
2384 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2386 # So sanity check the cflags/libs before assuming gnutls can be used.
2387 if ! $pkg_config --exists "gnutls"; then
2392 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2397 if test "$gnutls" != "no"; then
2398 if gnutls_works; then
2399 gnutls_cflags=$($pkg_config --cflags gnutls)
2400 gnutls_libs=$($pkg_config --libs gnutls)
2401 libs_softmmu="$gnutls_libs $libs_softmmu"
2402 libs_tools="$gnutls_libs $libs_tools"
2403 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2406 # gnutls_rnd requires >= 2.11.0
2407 if $pkg_config --exists "gnutls >= 2.11.0"; then
2413 if $pkg_config --exists 'gnutls >= 3.0'; then
2416 elif $pkg_config --exists 'gnutls >= 2.12'; then
2417 case $($pkg_config --libs --static gnutls) in
2435 elif test "$gnutls" = "yes"; then
2436 feature_not_found "gnutls" "Install gnutls devel"
2446 # If user didn't give a --disable/enable-gcrypt flag,
2447 # then mark as disabled if user requested nettle
2448 # explicitly, or if gnutls links to nettle
2449 if test -z "$gcrypt"
2451 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2457 # If user didn't give a --disable/enable-nettle flag,
2458 # then mark as disabled if user requested gcrypt
2459 # explicitly, or if gnutls links to gcrypt
2460 if test -z "$nettle"
2462 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2468 has_libgcrypt_config() {
2469 if ! has "libgcrypt-config"
2474 if test -n "$cross_prefix"
2476 host=$(libgcrypt-config --host)
2477 if test "$host-" != $cross_prefix
2486 if test "$gcrypt" != "no"; then
2487 if has_libgcrypt_config; then
2488 gcrypt_cflags=$(libgcrypt-config --cflags)
2489 gcrypt_libs=$(libgcrypt-config --libs)
2490 # Debian has remove -lgpg-error from libgcrypt-config
2491 # as it "spreads unnecessary dependencies" which in
2492 # turn breaks static builds...
2493 if test "$static" = "yes"
2495 gcrypt_libs="$gcrypt_libs -lgpg-error"
2497 libs_softmmu="$gcrypt_libs $libs_softmmu"
2498 libs_tools="$gcrypt_libs $libs_tools"
2499 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2501 if test -z "$nettle"; then
2508 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2510 NULL, 0, 0, 0, NULL);
2514 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2518 if test "$gcrypt" = "yes"; then
2519 feature_not_found "gcrypt" "Install gcrypt devel"
2527 if test "$nettle" != "no"; then
2528 if $pkg_config --exists "nettle"; then
2529 nettle_cflags=$($pkg_config --cflags nettle)
2530 nettle_libs=$($pkg_config --libs nettle)
2531 nettle_version=$($pkg_config --modversion nettle)
2532 libs_softmmu="$nettle_libs $libs_softmmu"
2533 libs_tools="$nettle_libs $libs_tools"
2534 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2539 #include <nettle/pbkdf2.h>
2541 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2545 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2549 if test "$nettle" = "yes"; then
2550 feature_not_found "nettle" "Install nettle devel"
2557 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2559 error_exit "Only one of gcrypt & nettle can be enabled"
2562 ##########################################
2563 # libtasn1 - only for the TLS creds/session test suite
2568 if $pkg_config --exists "libtasn1"; then
2569 tasn1_cflags=$($pkg_config --cflags libtasn1)
2570 tasn1_libs=$($pkg_config --libs libtasn1)
2576 ##########################################
2577 # getifaddrs (for tests/test-io-channel-socket )
2580 if ! check_include "ifaddrs.h" ; then
2584 ##########################################
2587 if test "$vte" != "no"; then
2588 if test "$gtkabi" = "3.0"; then
2589 vteminversion="0.32.0"
2590 if $pkg_config --exists "vte-2.91"; then
2591 vtepackage="vte-2.91"
2593 vtepackage="vte-2.90"
2597 vteminversion="0.24.0"
2599 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2600 vte_cflags=$($pkg_config --cflags $vtepackage)
2601 vte_libs=$($pkg_config --libs $vtepackage)
2602 vteversion=$($pkg_config --modversion $vtepackage)
2603 libs_softmmu="$vte_libs $libs_softmmu"
2605 elif test "$vte" = "yes"; then
2606 if test "$gtkabi" = "3.0"; then
2607 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
2609 feature_not_found "vte" "Install libvte devel"
2616 ##########################################
2620 if test "$qt" != "no"; then
2621 if test "$qtabi" = "5.0" ; then
2622 qtpackage="Qt5Widgets Qt5OpenGL Qt5Gui"
2625 if $pkg_config --exists "$qtpackage >= $qtversion"; then
2626 qt_cflags=`$pkg_config --cflags $qtpackage`
2627 qt_libs=`$pkg_config --libs $qtpackage`
2629 if test "$mingw32" = "yes" ; then
2630 libs_softmmu="$qt_libs -mwindows $libs_softmmu"
2631 elif test "$darwin" = "yes" ; then
2632 libs_softmmu="$qt_libs $libs_softmmu"
2634 libs_softmmu="$qt_libs $x11_libs $libs_softmmu"
2637 qt_cflags_private=`pkg-config --modversion Qt5Gui`
2638 if test "$darwin" = "yes" ; then
2639 qt_cflags_private=`pkg-config --cflags Qt5Gui | sed "s,QtGui.framework/Headers,&/$qt_cflags_private/QtGui,g"`
2641 qt_cflags_private=`pkg-config --cflags Qt5Gui | sed "s,QtGui,&/$qt_cflags_private/QtGui,g"`
2644 qt_cflags="$qt_cflags $qt_cflags_private"
2645 if test "$mingw32" = "no" ; then
2646 qt_cflags="$qt_cflags -fPIC"
2649 elif test "$qt" = "yes"; then
2650 feature_not_found "qt" "Install qt devel"
2659 ##########################################
2662 # Look for sdl configuration program (pkg-config or sdl-config). Try
2663 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2665 if test "$sdlabi" = ""; then
2666 if $pkg_config --exists "sdl"; then
2668 elif $pkg_config --exists "sdl2"; then
2675 if test $sdlabi = "2.0"; then
2676 sdl_config=$sdl2_config
2678 sdlconfigname=sdl2_config
2679 elif test $sdlabi = "1.2"; then
2681 sdlconfigname=sdl_config
2683 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2686 if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
2687 sdl_config=$sdlconfigname
2690 if $pkg_config $sdlname --exists; then
2691 sdlconfig="$pkg_config $sdlname"
2692 sdlversion=$($sdlconfig --modversion 2>/dev/null)
2693 elif has ${sdl_config}; then
2694 sdlconfig="$sdl_config"
2695 sdlversion=$($sdlconfig --version)
2697 if test "$sdl" = "yes" ; then
2698 feature_not_found "sdl" "Install SDL devel"
2702 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2703 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2707 if test "$sdl" != "no" ; then
2710 #undef main /* We don't want SDL to override our main() */
2711 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2713 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
2714 if test "$static" = "yes" ; then
2715 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2717 sdl_libs=$($sdlconfig --libs 2>/dev/null)
2719 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2720 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
2726 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2727 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2728 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2729 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2730 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2732 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2738 else # sdl not found
2739 if test "$sdl" = "yes" ; then
2740 feature_not_found "sdl" "Install SDL devel"
2743 fi # sdl compile test
2746 if test "$sdl" = "yes" ; then
2749 #if defined(SDL_VIDEO_DRIVER_X11)
2750 #include <X11/XKBlib.h>
2752 #error No x11 support
2754 int main(void) { return 0; }
2756 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2757 sdl_cflags="$sdl_cflags $x11_cflags"
2758 sdl_libs="$sdl_libs $x11_libs"
2760 libs_softmmu="$sdl_libs $libs_softmmu"
2763 ##########################################
2764 # RDMA needs OpenFabrics libraries
2765 if test "$rdma" != "no" ; then
2767 #include <rdma/rdma_cma.h>
2768 int main(void) { return 0; }
2770 rdma_libs="-lrdmacm -libverbs"
2771 if compile_prog "" "$rdma_libs" ; then
2773 libs_softmmu="$libs_softmmu $rdma_libs"
2775 if test "$rdma" = "yes" ; then
2777 " OpenFabrics librdmacm/libibverbs not present." \
2779 " (1) Fast: Install infiniband packages from your distro." \
2780 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2781 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2788 ##########################################
2789 # VNC SASL detection
2790 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2792 #include <sasl/sasl.h>
2794 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2796 # Assuming Cyrus-SASL installed in /usr prefix
2798 vnc_sasl_libs="-lsasl2"
2799 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2801 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2802 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2804 if test "$vnc_sasl" = "yes" ; then
2805 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2811 ##########################################
2812 # VNC JPEG detection
2813 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2816 #include <jpeglib.h>
2817 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2820 vnc_jpeg_libs="-ljpeg"
2821 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2823 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2824 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2826 if test "$vnc_jpeg" = "yes" ; then
2827 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2833 ##########################################
2835 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2837 //#include <stdio.h>
2841 png_structp png_ptr;
2842 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2843 return png_ptr != 0;
2846 if $pkg_config libpng --exists; then
2847 vnc_png_cflags=$($pkg_config libpng --cflags)
2848 vnc_png_libs=$($pkg_config libpng --libs)
2851 vnc_png_libs="-lpng"
2853 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2855 libs_softmmu="$vnc_png_libs $libs_softmmu"
2856 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2858 if test "$vnc_png" = "yes" ; then
2859 feature_not_found "vnc-png" "Install libpng devel"
2865 ##########################################
2866 # fnmatch() probe, used for ACL routines
2869 #include <fnmatch.h>
2872 fnmatch("foo", "foo", 0);
2876 if compile_prog "" "" ; then
2880 ##########################################
2881 # xfsctl() probe, used for raw-posix
2882 if test "$xfs" != "no" ; then
2884 #include <stddef.h> /* NULL */
2885 #include <xfs/xfs.h>
2888 xfsctl(NULL, 0, 0, NULL);
2892 if compile_prog "" "" ; then
2895 if test "$xfs" = "yes" ; then
2896 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2902 ##########################################
2903 # vde libraries probe
2904 if test "$vde" != "no" ; then
2905 vde_libs="-lvdeplug"
2907 #include <libvdeplug.h>
2910 struct vde_open_args a = {0, 0, 0};
2916 if compile_prog "" "$vde_libs" ; then
2918 libs_softmmu="$vde_libs $libs_softmmu"
2919 libs_tools="$vde_libs $libs_tools"
2921 if test "$vde" = "yes" ; then
2922 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2928 ##########################################
2929 # netmap support probe
2930 # Apart from looking for netmap headers, we make sure that the host API version
2931 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2932 # a minor/major version number. Minor new features will be marked with values up
2933 # to 15, and if something happens that requires a change to the backend we will
2934 # move above 15, submit the backend fixes and modify this two bounds.
2935 if test "$netmap" != "no" ; then
2937 #include <inttypes.h>
2939 #include <net/netmap.h>
2940 #include <net/netmap_user.h>
2941 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2944 int main(void) { return 0; }
2946 if compile_prog "" "" ; then
2949 if test "$netmap" = "yes" ; then
2950 feature_not_found "netmap"
2956 ##########################################
2957 # libcap-ng library probe
2958 if test "$cap_ng" != "no" ; then
2964 capng_capability_to_name(CAPNG_EFFECTIVE);
2968 if compile_prog "" "$cap_libs" ; then
2970 libs_tools="$cap_libs $libs_tools"
2972 if test "$cap_ng" = "yes" ; then
2973 feature_not_found "cap_ng" "Install libcap-ng devel"
2979 ##########################################
2980 # Sound support libraries probe
2991 int main(void) { $exp }
2993 if compile_prog "$cfl" "$lib" ; then
2996 error_exit "$drv check failed" \
2997 "Make sure to have the $drv libs and headers installed."
3001 audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
3002 for drv in $audio_drv_list; do
3005 audio_drv_probe $drv alsa/asoundlib.h -lasound \
3006 "return snd_pcm_close((snd_pcm_t *)0);"
3007 libs_softmmu="-lasound $libs_softmmu"
3011 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
3012 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3013 libs_softmmu="-lpulse $libs_softmmu"
3018 libs_softmmu="-framework CoreAudio $libs_softmmu"
3022 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
3027 libs_softmmu="$oss_lib $libs_softmmu"
3031 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
3035 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
3036 error_exit "Unknown driver '$drv' selected" \
3037 "Possible drivers are: $audio_possible_drivers"
3043 ##########################################
3046 if test "$brlapi" != "no" ; then
3047 brlapi_libs="-lbrlapi"
3051 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3053 if compile_prog "" "$brlapi_libs" ; then
3055 libs_softmmu="$brlapi_libs $libs_softmmu"
3057 if test "$brlapi" = "yes" ; then
3058 feature_not_found "brlapi" "Install brlapi devel"
3064 ##########################################
3066 if test "$curses" != "no" ; then
3067 if test "$mingw32" = "yes" ; then
3068 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3069 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3071 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3072 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3080 const char *s = curses_version();
3082 setlocale(LC_ALL, "");
3084 addwstr(L"wide chars\n");
3086 add_wch(WACS_DEGREE);
3091 for curses_inc in $curses_inc_list; do
3093 for curses_lib in $curses_lib_list; do
3095 if compile_prog "$curses_inc" "$curses_lib" ; then
3097 QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS"
3098 libs_softmmu="$curses_lib $libs_softmmu"
3102 if test "$curses_found" = yes ; then
3107 if test "$curses_found" = "yes" ; then
3110 if test "$curses" = "yes" ; then
3111 feature_not_found "curses" "Install ncurses devel"
3117 ##########################################
3119 if test "$curl" != "no" ; then
3120 if $pkg_config libcurl --exists; then
3121 curlconfig="$pkg_config libcurl"
3123 curlconfig=curl-config
3126 #include <curl/curl.h>
3127 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3129 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3130 curl_libs=$($curlconfig --libs 2>/dev/null)
3131 if compile_prog "$curl_cflags" "$curl_libs" ; then
3134 if test "$curl" = "yes" ; then
3135 feature_not_found "curl" "Install libcurl devel"
3141 ##########################################
3142 # bluez support probe
3143 if test "$bluez" != "no" ; then
3145 #include <bluetooth/bluetooth.h>
3146 int main(void) { return bt_error(0); }
3148 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3149 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
3150 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
3152 libs_softmmu="$bluez_libs $libs_softmmu"
3154 if test "$bluez" = "yes" ; then
3155 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
3161 ##########################################
3162 # glib support probe
3165 glib_modules=gthread-2.0
3166 if test "$modules" = yes; then
3167 glib_modules="$glib_modules gmodule-2.0"
3170 for i in $glib_modules; do
3171 if $pkg_config --atleast-version=$glib_req_ver $i; then
3172 glib_cflags=$($pkg_config --cflags $i)
3173 glib_libs=$($pkg_config --libs $i)
3174 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
3175 LIBS="$glib_libs $LIBS"
3176 libs_qga="$glib_libs $libs_qga"
3178 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3182 # Sanity check that the current size_t matches the
3183 # size that glib thinks it should be. This catches
3184 # problems on multi-arch where people try to build
3185 # 32-bit QEMU while pointing at 64-bit glib headers
3190 #define QEMU_BUILD_BUG_ON(x) \
3191 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3194 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3199 if ! compile_prog "$CFLAGS" "$LIBS" ; then
3200 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3201 "You probably need to set PKG_CONFIG_LIBDIR"\
3202 "to point to the right pkg-config files for your"\
3206 # g_test_trap_subprocess added in 2.38. Used by some tests.
3208 if test "$mingw32" = "yes" || ! $pkg_config --atleast-version=2.38 glib-2.0; then
3212 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3215 int main(void) { return 0; }
3217 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3218 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3219 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3220 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3224 ##########################################
3225 # SHA command probe for modules
3226 if test "$modules" = yes; then
3227 shacmd_probe="sha1sum sha1 shasum"
3228 for c in $shacmd_probe; do
3234 if test "$shacmd" = ""; then
3235 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3239 ##########################################
3240 # pixman support probe
3242 if test "$pixman" = ""; then
3243 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3245 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
3251 if test "$pixman" = "none"; then
3252 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3253 error_exit "pixman disabled but system emulation or tools build" \
3254 "enabled. You can turn off pixman only if you also" \
3255 "disable all system emulation targets and the tools" \
3256 "build with '--disable-tools --disable-system'."
3260 elif test "$pixman" = "system"; then
3261 # pixman version has been checked above
3262 pixman_cflags=$($pkg_config --cflags pixman-1)
3263 pixman_libs=$($pkg_config --libs pixman-1)
3265 if test ! -d ${source_path}/pixman/pixman; then
3266 error_exit "pixman >= 0.21.8 not present. Your options:" \
3267 " (1) Preferred: Install the pixman devel package (any recent" \
3268 " distro should have packages as Xorg needs pixman too)." \
3269 " (2) Fetch the pixman submodule, using:" \
3270 " git submodule update --init pixman"
3272 mkdir -p pixman/pixman
3273 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3274 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3277 ##########################################
3280 if test "$cap" != "no" ; then
3283 #include <sys/capability.h>
3284 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3286 if compile_prog "" "-lcap" ; then
3293 ##########################################
3295 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
3299 #include <pthread.h>
3300 static void *f(void *p) { return NULL; }
3303 pthread_create(&thread, 0, f, 0);
3307 if compile_prog "" "" ; then
3310 for pthread_lib in $PTHREADLIBS_LIST; do
3311 if compile_prog "" "$pthread_lib" ; then
3314 for lib_entry in $LIBS; do
3315 if test "$lib_entry" = "$pthread_lib"; then
3320 if test "$found" = "no"; then
3321 LIBS="$pthread_lib $LIBS"
3323 PTHREAD_LIB="$pthread_lib"
3329 if test "$mingw32" != yes -a "$pthread" = no; then
3330 error_exit "pthread check failed" \
3331 "Make sure to have the pthread libs and headers installed."
3334 # check for pthread_setname_np
3335 pthread_setname_np=no
3337 #include <pthread.h>
3339 static void *f(void *p) { return NULL; }
3343 pthread_create(&thread, 0, f, 0);
3344 pthread_setname_np(thread, "QEMU");
3348 if compile_prog "" "$pthread_lib" ; then
3349 pthread_setname_np=yes
3352 ##########################################
3354 if test "$rbd" != "no" ; then
3357 #include <rbd/librbd.h>
3360 rados_create(&cluster, NULL);
3364 rbd_libs="-lrbd -lrados"
3365 if compile_prog "" "$rbd_libs" ; then
3368 if test "$rbd" = "yes" ; then
3369 feature_not_found "rados block device" "Install librbd/ceph devel"
3375 ##########################################
3377 min_libssh2_version=1.2.8
3378 if test "$libssh2" != "no" ; then
3379 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
3380 libssh2_cflags=$($pkg_config libssh2 --cflags)
3381 libssh2_libs=$($pkg_config libssh2 --libs)
3384 if test "$libssh2" = "yes" ; then
3385 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
3391 ##########################################
3392 # libssh2_sftp_fsync probe
3394 if test "$libssh2" = "yes"; then
3397 #include <libssh2.h>
3398 #include <libssh2_sftp.h>
3400 LIBSSH2_SESSION *session;
3402 LIBSSH2_SFTP_HANDLE *sftp_handle;
3403 session = libssh2_session_init ();
3404 sftp = libssh2_sftp_init (session);
3405 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3406 libssh2_sftp_fsync (sftp_handle);
3410 # libssh2_cflags/libssh2_libs defined in previous test.
3411 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3412 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3416 ##########################################
3419 if test "$linux_aio" != "no" ; then
3422 #include <sys/eventfd.h>
3424 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3426 if compile_prog "" "-laio" ; then
3429 if test "$linux_aio" = "yes" ; then
3430 feature_not_found "linux AIO" "Install libaio devel"
3436 ##########################################
3437 # TPM passthrough is only on x86 Linux
3439 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3440 tpm_passthrough=$tpm
3445 ##########################################
3448 if test "$attr" != "no" ; then
3451 #include <sys/types.h>
3452 #ifdef CONFIG_LIBATTR
3453 #include <attr/xattr.h>
3455 #include <sys/xattr.h>
3457 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3459 if compile_prog "" "" ; then
3461 # Older distros have <attr/xattr.h>, and need -lattr:
3462 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3467 if test "$attr" = "yes" ; then
3468 feature_not_found "ATTR" "Install libc6 or libattr devel"
3474 ##########################################
3477 #include <sys/types.h>
3478 #include <sys/uio.h>
3480 int main(void) { return sizeof(struct iovec); }
3483 if compile_prog "" "" ; then
3487 ##########################################
3490 #include <sys/types.h>
3491 #include <sys/uio.h>
3493 int main(void) { return preadv(0, 0, 0, 0); }
3496 if compile_prog "" "" ; then
3500 ##########################################
3502 # fdt support is mandatory for at least some target architectures,
3503 # so insist on it if we're building those system emulators.
3505 for target in $target_list; do
3507 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3513 if test "$fdt_required" = "yes"; then
3514 if test "$fdt" = "no"; then
3515 error_exit "fdt disabled but some requested targets require it." \
3516 "You can turn off fdt only if you also disable all the system emulation" \
3517 "targets which need it (by specifying a cut down --target-list)."
3522 if test "$fdt" != "no" ; then
3524 # explicitly check for libfdt_env.h as it is missing in some stable installs
3525 # and test for required functions to make sure we are on a version >= 1.4.0
3528 #include <libfdt_env.h>
3529 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3531 if compile_prog "" "$fdt_libs" ; then
3532 # system DTC is good - use it
3534 elif test -d ${source_path}/dtc/libfdt ; then
3535 # have submodule DTC - use it
3539 if [ "$pwd_is_source_path" != "y" ] ; then
3540 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3541 symlink "$source_path/dtc/scripts" "dtc/scripts"
3543 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3544 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3545 elif test "$fdt" = "yes" ; then
3546 # have neither and want - prompt for system/submodule install
3547 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3548 " (1) Preferred: Install the DTC (libfdt) devel package" \
3549 " (2) Fetch the DTC submodule, using:" \
3550 " git submodule update --init dtc"
3552 # don't have and don't want
3558 libs_softmmu="$libs_softmmu $fdt_libs"
3560 ##########################################
3561 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3563 if test "$opengl" != "no" ; then
3564 opengl_pkgs="epoxy libdrm gbm"
3565 if $pkg_config $opengl_pkgs x11; then
3566 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3567 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3569 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3573 if test "$opengl" = "yes" ; then
3574 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3582 if test "$opengl" = "yes"; then
3584 #include <epoxy/egl.h>
3585 #ifndef EGL_MESA_image_dma_buf_export
3586 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3588 int main(void) { return 0; }
3590 if compile_prog "" "" ; then
3595 ##########################################
3597 if test "$archipelago" != "no" ; then
3600 #include <xseg/xseg.h>
3601 #include <xseg/protocol.h>
3607 archipelago_libs=-lxseg
3608 if compile_prog "" "$archipelago_libs"; then
3610 libs_tools="$archipelago_libs $libs_tools"
3611 libs_softmmu="$archipelago_libs $libs_softmmu"
3613 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3614 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3615 echo "license and therefore prevent redistribution."
3617 echo "To disable Archipelago, use --disable-archipelago"
3619 if test "$archipelago" = "yes" ; then
3620 feature_not_found "Archipelago backend support" "Install libxseg devel"
3627 ##########################################
3629 if test "$glusterfs" != "no" ; then
3630 if $pkg_config --atleast-version=3 glusterfs-api; then
3632 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3633 glusterfs_libs=$($pkg_config --libs glusterfs-api)
3634 if $pkg_config --atleast-version=4 glusterfs-api; then
3635 glusterfs_xlator_opt="yes"
3637 if $pkg_config --atleast-version=5 glusterfs-api; then
3638 glusterfs_discard="yes"
3640 if $pkg_config --atleast-version=6 glusterfs-api; then
3641 glusterfs_zerofill="yes"
3644 if test "$glusterfs" = "yes" ; then
3645 feature_not_found "GlusterFS backend support" \
3646 "Install glusterfs-api devel >= 3"
3652 # Check for inotify functions when we are building linux-user
3653 # emulator. This is done because older glibc versions don't
3654 # have syscall stubs for these implemented. In that case we
3655 # don't provide them even if kernel supports them.
3659 #include <sys/inotify.h>
3664 /* try to start inotify */
3665 return inotify_init();
3668 if compile_prog "" "" ; then
3674 #include <sys/inotify.h>
3679 /* try to start inotify */
3680 return inotify_init1(0);
3683 if compile_prog "" "" ; then
3687 # check if utimensat and futimens are supported
3690 #define _ATFILE_SOURCE
3693 #include <sys/stat.h>
3697 utimensat(AT_FDCWD, "foo", NULL, 0);
3702 if compile_prog "" "" ; then
3706 # check if pipe2 is there
3715 return pipe2(pipefd, O_CLOEXEC);
3718 if compile_prog "" "" ; then
3722 # check if accept4 is there
3725 #include <sys/socket.h>
3730 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3734 if compile_prog "" "" ; then
3738 # check if tee/splice is there. vmsplice was added same time.
3748 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3749 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3753 if compile_prog "" "" ; then
3757 ##########################################
3760 if test "$numa" != "no" ; then
3763 int main(void) { return numa_available(); }
3766 if compile_prog "" "-lnuma" ; then
3768 libs_softmmu="-lnuma $libs_softmmu"
3770 if test "$numa" = "yes" ; then
3771 feature_not_found "numa" "install numactl devel"
3777 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3778 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3782 ##########################################
3785 if test "$tcmalloc" = "yes" ; then
3788 int main(void) { malloc(1); return 0; }
3791 if compile_prog "" "-ltcmalloc" ; then
3792 LIBS="-ltcmalloc $LIBS"
3794 feature_not_found "tcmalloc" "install gperftools devel"
3798 ##########################################
3801 if test "$jemalloc" = "yes" ; then
3804 int main(void) { malloc(1); return 0; }
3807 if compile_prog "" "-ljemalloc" ; then
3808 LIBS="-ljemalloc $LIBS"
3810 feature_not_found "jemalloc" "install jemalloc devel"
3814 ##########################################
3819 #include <sys/syscall.h>
3821 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3824 if compile_prog "" "" ; then
3828 # check if eventfd is supported
3831 #include <sys/eventfd.h>
3835 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3838 if compile_prog "" "" ; then
3842 # check if memfd is supported
3845 #include <sys/memfd.h>
3849 return memfd_create("foo", MFD_ALLOW_SEALING);
3852 if compile_prog "" "" ; then
3858 # check for fallocate
3865 fallocate(0, 0, 0, 0);
3869 if compile_prog "" "" ; then
3873 # check for fallocate hole punching
3874 fallocate_punch_hole=no
3877 #include <linux/falloc.h>
3881 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3885 if compile_prog "" "" ; then
3886 fallocate_punch_hole=yes
3889 # check that fallocate supports range zeroing inside the file
3890 fallocate_zero_range=no
3893 #include <linux/falloc.h>
3897 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3901 if compile_prog "" "" ; then
3902 fallocate_zero_range=yes
3905 # check for posix_fallocate
3912 posix_fallocate(0, 0, 0);
3916 if compile_prog "" "" ; then
3920 # check for sync_file_range
3927 sync_file_range(0, 0, 0, 0);
3931 if compile_prog "" "" ; then
3935 # check for linux/fiemap.h and FS_IOC_FIEMAP
3938 #include <sys/ioctl.h>
3939 #include <linux/fs.h>
3940 #include <linux/fiemap.h>
3944 ioctl(0, FS_IOC_FIEMAP, 0);
3948 if compile_prog "" "" ; then
3963 if compile_prog "" "" ; then
3967 # check for ppoll support
3974 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3975 ppoll(&pfd, 1, 0, 0);
3979 if compile_prog "" "" ; then
3983 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3984 prctl_pr_set_timerslack=no
3986 #include <sys/prctl.h>
3990 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3994 if compile_prog "" "" ; then
3995 prctl_pr_set_timerslack=yes
3998 # check for epoll support
4001 #include <sys/epoll.h>
4009 if compile_prog "" "" ; then
4013 # epoll_create1 is a later addition
4014 # so we must check separately for its presence
4017 #include <sys/epoll.h>
4021 /* Note that we use epoll_create1 as a value, not as
4022 * a function being called. This is necessary so that on
4023 * old SPARC glibc versions where the function was present in
4024 * the library but not declared in the header file we will
4025 * fail the configure check. (Otherwise we will get a compiler
4026 * warning but not an error, and will proceed to fail the
4027 * qemu compile where we compile with -Werror.)
4029 return (int)(uintptr_t)&epoll_create1;
4032 if compile_prog "" "" ; then
4036 # check for sendfile support
4039 #include <sys/sendfile.h>
4043 return sendfile(0, 0, 0, 0);
4046 if compile_prog "" "" ; then
4050 # check for timerfd support (glibc 2.8 and newer)
4053 #include <sys/timerfd.h>
4057 return(timerfd_create(CLOCK_REALTIME, 0));
4060 if compile_prog "" "" ; then
4064 # check for setns and unshare support
4077 if compile_prog "" "" ; then
4081 # clock_adjtime probe
4088 return clock_adjtime(0, 0);
4092 if compile_prog "" "" ; then
4107 if compile_prog "" "" ; then
4111 # Check if tools are available to build documentation.
4112 if test "$docs" != "no" ; then
4113 if has makeinfo && has pod2man; then
4116 if test "$docs" = "yes" ; then
4117 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
4123 # Search for bswap_32 function
4126 #include <byteswap.h>
4127 int main(void) { return bswap_32(0); }
4129 if compile_prog "" "" ; then
4133 # Search for bswap32 function
4136 #include <sys/endian.h>
4137 #include <sys/types.h>
4138 #include <machine/bswap.h>
4139 int main(void) { return bswap32(0); }
4141 if compile_prog "" "" ; then
4145 ##########################################
4146 # Do we have libiscsi >= 1.9.0
4147 if test "$libiscsi" != "no" ; then
4148 if $pkg_config --atleast-version=1.9.0 libiscsi; then
4150 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4151 libiscsi_libs=$($pkg_config --libs libiscsi)
4153 if test "$libiscsi" = "yes" ; then
4154 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
4160 ##########################################
4164 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4166 if compile_prog "" "" ; then
4168 elif compile_prog "" "-lm" ; then
4170 libs_qga="-lm $libs_qga"
4172 error_exit "libm check failed"
4175 ##########################################
4177 # uClibc provides 2 versions of clock_gettime(), one with realtime
4178 # support and one without. This means that the clock_gettime() don't
4179 # need -lrt. We still need it for timer_create() so we check for this
4180 # function in addition.
4185 timer_create(CLOCK_REALTIME, NULL, NULL);
4186 return clock_gettime(CLOCK_REALTIME, NULL);
4190 if compile_prog "" "" ; then
4192 # we need pthread for static linking. use previous pthread test result
4193 elif compile_prog "" "$pthread_lib -lrt" ; then
4195 libs_qga="$libs_qga -lrt"
4198 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4199 "$aix" != "yes" -a "$haiku" != "yes" ; then
4200 libs_softmmu="-lutil $libs_softmmu"
4203 ##########################################
4205 if test "$spice" != "no" ; then
4208 int main(void) { spice_server_new(); return 0; }
4210 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4211 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
4212 if $pkg_config --atleast-version=0.12.0 spice-server && \
4213 $pkg_config --atleast-version=0.12.3 spice-protocol && \
4214 compile_prog "$spice_cflags" "$spice_libs" ; then
4216 libs_softmmu="$libs_softmmu $spice_libs"
4217 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
4218 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4219 spice_server_version=$($pkg_config --modversion spice-server)
4221 if test "$spice" = "yes" ; then
4222 feature_not_found "spice" \
4223 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4229 # check for smartcard support
4231 if test "$smartcard" != "no"; then
4232 if $pkg_config libcacard; then
4233 libcacard_cflags=$($pkg_config --cflags libcacard)
4234 libcacard_libs=$($pkg_config --libs libcacard)
4235 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
4236 libs_softmmu="$libs_softmmu $libcacard_libs"
4239 if test "$smartcard" = "yes"; then
4240 feature_not_found "smartcard" "Install libcacard devel"
4246 # check for libtizenusb
4247 if test "$libtizenusb" != "no" ; then
4251 echo $PKG_CONFIG_PATH
4252 if $pkg_config --modversion libtizenusb >/dev/null 2>&1 ; then
4253 libtizenusb_cflags=$($pkg_config --cflags libtizenusb 2>/dev/null)
4254 libtizenusb_libs=$($pkg_config --libs libtizenusb 2>/dev/null)
4256 echo "libtizenusb found"
4257 echo "cflags = $libtizenusb_cflags"
4258 echo "libs = $libtizenusb_libs"
4260 error_exit "libtizenusb not found (you might not be set PKG_CONFIG_PATH"
4262 QEMU_CFLAGS="$QEMU_CFLAGS $libtizenusb_cflags"
4263 libs_softmmu="$libs_softmmu $libtizenusb_libs"
4267 if test "$libusb" != "no" ; then
4268 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
4270 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4271 libusb_libs=$($pkg_config --libs libusb-1.0)
4272 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
4273 libs_softmmu="$libs_softmmu $libusb_libs"
4275 if test "$libusb" = "yes"; then
4276 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
4282 # check for usbredirparser for usb network redirection support
4283 if test "$usb_redir" != "no" ; then
4284 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
4286 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4287 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
4288 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
4289 libs_softmmu="$libs_softmmu $usb_redir_libs"
4291 if test "$usb_redir" = "yes"; then
4292 feature_not_found "usb-redir" "Install usbredir devel"
4298 ##########################################
4299 # check if we have VSS SDK headers for win
4301 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4302 case "$vss_win32_sdk" in
4303 "") vss_win32_include="-isystem $source_path" ;;
4304 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4305 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4306 vss_win32_include="-isystem $source_path/.sdk/vss"
4307 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4309 *) vss_win32_include="-isystem $vss_win32_sdk"
4312 #define __MIDL_user_allocate_free_DEFINED__
4313 #include <inc/win2003/vss.h>
4314 int main(void) { return VSS_CTX_BACKUP; }
4316 if compile_prog "$vss_win32_include" "" ; then
4317 guest_agent_with_vss="yes"
4318 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4319 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4320 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4322 if test "$vss_win32_sdk" != "" ; then
4323 echo "ERROR: Please download and install Microsoft VSS SDK:"
4324 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4325 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4326 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4327 echo "ERROR: The headers are extracted in the directory \`inc'."
4328 feature_not_found "VSS support"
4330 guest_agent_with_vss="no"
4334 ##########################################
4335 # lookup Windows platform SDK (if not specified)
4336 # The SDK is needed only to build .tlb (type library) file of guest agent
4337 # VSS provider from the source. It is usually unnecessary because the
4338 # pre-compiled .tlb file is included.
4340 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4341 if test -z "$win_sdk"; then
4342 programfiles="$PROGRAMFILES"
4343 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4344 if test -n "$programfiles"; then
4345 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4347 feature_not_found "Windows SDK"
4349 elif test "$win_sdk" = "no"; then
4354 ##########################################
4355 # check if mingw environment provides a recent ntddscsi.h
4356 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4358 #include <windows.h>
4359 #include <ntddscsi.h>
4361 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4362 #error Missing required ioctl definitions
4364 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4368 if compile_prog "" "" ; then
4369 guest_agent_ntddscsi=yes
4370 libs_qga="-lsetupapi $libs_qga"
4374 ##########################################
4375 # virgl renderer probe
4377 if test "$virglrenderer" != "no" ; then
4379 #include <virglrenderer.h>
4380 int main(void) { virgl_renderer_poll(); return 0; }
4382 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4383 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4384 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4385 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4388 if test "$virglrenderer" = "yes" ; then
4389 feature_not_found "virglrenderer"
4395 ##########################################
4396 # check if we have fdatasync
4402 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4403 return fdatasync(0);
4405 #error Not supported
4409 if compile_prog "" "" ; then
4413 ##########################################
4414 # check if we have madvise
4418 #include <sys/types.h>
4419 #include <sys/mman.h>
4421 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4423 if compile_prog "" "" ; then
4427 ##########################################
4428 # check if we have posix_madvise
4432 #include <sys/mman.h>
4434 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4436 if compile_prog "" "" ; then
4440 ##########################################
4441 # check if we have posix_syslog
4446 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4448 if compile_prog "" "" ; then
4452 ##########################################
4453 # check if trace backend exists
4455 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4456 if test "$?" -ne 0 ; then
4457 error_exit "invalid trace backends" \
4458 "Please choose supported trace backends."
4461 ##########################################
4462 # For 'ust' backend, test if ust headers are present
4463 if have_backend "ust"; then
4465 #include <lttng/tracepoint.h>
4466 int main(void) { return 0; }
4468 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
4469 if $pkg_config lttng-ust --exists; then
4470 lttng_ust_libs=$($pkg_config --libs lttng-ust)
4472 lttng_ust_libs="-llttng-ust -ldl"
4474 if $pkg_config liburcu-bp --exists; then
4475 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
4477 urcu_bp_libs="-lurcu-bp"
4480 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4481 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4483 error_exit "Trace backend 'ust' missing lttng-ust header files"
4487 ##########################################
4488 # For 'dtrace' backend, test if 'dtrace' command is present
4489 if have_backend "dtrace"; then
4490 if ! has 'dtrace' ; then
4491 error_exit "dtrace command is not found in PATH $PATH"
4493 trace_backend_stap="no"
4494 if has 'stap' ; then
4495 trace_backend_stap="yes"
4499 ##########################################
4500 # check and set a backend for coroutine
4502 # We prefer ucontext, but it's not always possible. The fallback
4503 # is sigcontext. gthread is not selectable except explicitly, because
4504 # it is not functional enough to run QEMU proper. (It is occasionally
4505 # useful for debugging purposes.) On Windows the only valid backend
4506 # is the Windows-specific one.
4509 if test "$darwin" != "yes"; then
4511 #include <ucontext.h>
4512 #ifdef __stub_makecontext
4513 #error Ignoring glibc stub makecontext which will always fail
4515 int main(void) { makecontext(0, 0, 0); return 0; }
4517 if compile_prog "" "" ; then
4522 if test "$coroutine" = ""; then
4523 if test "$mingw32" = "yes"; then
4525 elif test "$ucontext_works" = "yes"; then
4528 coroutine=sigaltstack
4533 if test "$mingw32" != "yes"; then
4534 error_exit "'windows' coroutine backend only valid for Windows"
4536 # Unfortunately the user visible backend name doesn't match the
4537 # coroutine-*.c filename for this case, so we have to adjust it here.
4541 if test "$ucontext_works" != "yes"; then
4542 feature_not_found "ucontext"
4545 gthread|sigaltstack)
4546 if test "$mingw32" = "yes"; then
4547 error_exit "only the 'windows' coroutine backend is valid for Windows"
4551 error_exit "unknown coroutine backend $coroutine"
4556 if test "$coroutine_pool" = ""; then
4557 if test "$coroutine" = "gthread"; then
4563 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4564 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4567 if test "$debug_stack_usage" = "yes"; then
4568 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4569 error_exit "stack usage debugging is not supported for $cpu"
4571 if test "$coroutine_pool" = "yes"; then
4572 echo "WARN: disabling coroutine pool for stack usage debugging"
4578 ##########################################
4579 # check if we have open_by_handle_at
4581 open_by_handle_at=no
4584 #if !defined(AT_EMPTY_PATH)
4585 # error missing definition
4587 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4590 if compile_prog "" "" ; then
4591 open_by_handle_at=yes
4594 ########################################
4595 # check if we have linux/magic.h
4599 #include <linux/magic.h>
4604 if compile_prog "" "" ; then
4608 ########################################
4609 # check whether we can disable warning option with a pragma (this is needed
4610 # to silence warnings in the headers of some versions of external libraries).
4611 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4614 # If we can't selectively disable warning in the code, disable -Werror so that
4615 # the build doesn't fail anyway.
4617 pragma_disable_unused_but_set=no
4619 #pragma GCC diagnostic push
4620 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4621 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4622 #pragma GCC diagnostic pop
4628 if compile_prog "-Werror" "" ; then
4629 pragma_diagnostic_available=yes
4631 if test "$force_werror" != "yes"; then
4636 ########################################
4637 # check if we have valgrind/valgrind.h
4641 #include <valgrind/valgrind.h>
4646 if compile_prog "" "" ; then
4650 ########################################
4651 # check if environ is declared
4661 if compile_prog "" "" ; then
4665 ########################################
4666 # check if cpuid.h is usable.
4672 unsigned a, b, c, d;
4673 int max = __get_cpuid_max(0, 0);
4676 __cpuid(1, a, b, c, d);
4680 __cpuid_count(7, 0, a, b, c, d);
4686 if compile_prog "" "" ; then
4690 ########################################
4691 # check if __[u]int128_t is usable.
4695 #if defined(__clang_major__) && defined(__clang_minor__)
4696 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4697 # error __int128_t does not work in CLANG before 3.2
4709 if compile_prog "" "" ; then
4713 #########################################
4714 # See if 128-bit atomic operations are supported.
4717 if test "$int128" = "yes"; then
4721 unsigned __int128 x = 0, y = 0;
4722 y = __atomic_load_16(&x, 0);
4723 __atomic_store_16(&x, y, 0);
4724 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4728 if compile_prog "" "" ; then
4733 #########################################
4734 # See if 64-bit atomic operations are supported.
4735 # Note that without __atomic builtins, we can only
4736 # assume atomic loads/stores max at pointer size.
4742 uint64_t x = 0, y = 0;
4743 #ifdef __ATOMIC_RELAXED
4744 y = __atomic_load_8(&x, 0);
4745 __atomic_store_8(&x, y, 0);
4746 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4747 __atomic_exchange_8(&x, y, 0);
4748 __atomic_fetch_add_8(&x, y, 0);
4750 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4751 __sync_lock_test_and_set(&x, y);
4752 __sync_val_compare_and_swap(&x, y, 0);
4753 __sync_fetch_and_add(&x, y);
4758 if compile_prog "" "" ; then
4762 ########################################
4763 # check if getauxval is available.
4767 #include <sys/auxv.h>
4769 return getauxval(AT_HWCAP) == 0;
4772 if compile_prog "" "" ; then
4776 ########################################
4777 # check if ccache is interfering with
4778 # semantic analysis of macros
4783 static const int Z = 1;
4784 #define fn() ({ Z; })
4785 #define TAUT(X) ((X) == Z)
4786 #define PAREN(X, Y) (X == Y)
4788 int main(int argc, char *argv[])
4794 if (PAREN(x, y)) return 0;
4795 if (TAUT(Z)) return 0;
4800 if ! compile_object "-Werror"; then
4804 #################################################
4805 # clang does not support glibc + FORTIFY_SOURCE.
4807 if test "$fortify_source" != "no"; then
4808 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4809 fortify_source="no";
4810 elif test -n "$cxx" &&
4811 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
4812 fortify_source="no";
4814 fortify_source="yes"
4818 ##########################################
4819 # check if struct fsxattr is available via linux/fs.h
4823 #include <linux/fs.h>
4829 if compile_prog "" "" ; then
4833 ##########################################
4834 # check if rtnetlink.h exists and is useful
4837 #include <linux/rtnetlink.h>
4839 return IFLA_PROTO_DOWN;
4842 if compile_prog "" "" ; then
4846 ##########################################
4847 # check for usable AF_VSOCK environment
4851 #include <sys/types.h>
4852 #include <sys/socket.h>
4853 #if !defined(AF_VSOCK)
4854 # error missing AF_VSOCK flag
4856 #include <linux/vm_sockets.h>
4859 struct sockaddr_vm svm;
4860 socklen_t len = sizeof(svm);
4861 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4862 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4863 if ((ret == -1) && (errno == ENOTCONN)) {
4869 if compile_prog "" "" ; then
4873 #################################################
4874 # Sparc implicitly links with --relax, which is
4875 # incompatible with -r, so --no-relax should be
4876 # given. It does no harm to give it on other
4879 # Note: the prototype is needed since QEMU_CFLAGS
4880 # contains -Wmissing-prototypes
4882 extern int foo(void);
4883 int foo(void) { return 0; }
4885 if ! compile_object ""; then
4886 error_exit "Failed to compile object file for LD_REL_FLAGS test"
4888 for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
4889 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
4894 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
4895 feature_not_found "modules" "Cannot find how to build relocatable objects"
4898 ##########################################
4900 # After here, no more $cc or $ld runs
4902 if test "$gcov" = "yes" ; then
4903 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4904 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4905 elif test "$fortify_source" = "yes" ; then
4906 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4907 elif test "$debug" = "no"; then
4908 CFLAGS="-O2 $CFLAGS"
4911 ##########################################
4913 if test "$libnfs" != "no" ; then
4914 if $pkg_config --atleast-version=1.9.3 libnfs; then
4916 libnfs_libs=$($pkg_config --libs libnfs)
4918 if test "$libnfs" = "yes" ; then
4919 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4925 ########################################
4926 # check if dxva2 is available.
4932 #include <dxva2api.h>
4934 #if !defined(IDirect3D9_CreateDevice) || \
4935 !defined(IDirect3DDeviceManager9_ResetDevice)
4936 #error No DXVA2 support
4941 if compile_prog "" "" ; then
4949 if test "$dxva2" = "yes" ; then
4950 if test "$mingw32" = "yes" ; then
4952 if test "$dxva2" != "yes" ; then
4953 feature_not_found "dxva2"
4956 error_exit "DXVA2 is supported only on Windows"
4959 if test "$dxva2" != "no" ; then
4964 ########################################
4965 # check if vaapi is available.
4969 if $pkg_config libva --exists; then
4970 libva_cflags=`$pkg_config --cflags libva`
4971 libva_libs=`$pkg_config --libs libva`
4977 if $pkg_config libva-x11 --exists; then
4978 libva_x11_cflags=`$pkg_config --cflags libva-x11`
4979 libva_x11_libs=`$pkg_config --libs libva-x11`
4980 libs_softmmu="$libva_libs $libva_x11_libs $libs_softmmu"
4988 if test "$vaapi" = "yes" ; then
4989 if test "$linux" = "yes" ; then
4991 if test "$vaapi" != "yes" ; then
4992 feature_not_found "vaapi"
4995 error_exit "VAAPI is supported only on Linux"
4998 if test "$vaapi" != "no" ; then
5003 ########################################
5006 if test "$mingw32" = "yes" ; then
5007 QEMU_CFLAGS="-DWINVER=$winver -D_WIN32_WINNT=$winver $QEMU_CFLAGS"
5010 ########################################
5011 # check extension path
5013 if [ ! -d "$source_path/tizen/src/$extension_path" ] ; then
5014 error_exit "Extension path is not valid $source_path/tizen/src/$extension_path"
5017 ##########################################
5020 libavcodec_package="libavcodec"
5021 libavcodec_version="54.35.0"
5022 libavutil_package="libavutil"
5023 libavutil_version="52.3.0"
5024 libavformat_package="libavformat"
5025 libavformat_version="54.20.3"
5026 libavresample_package="libavresample"
5027 libavresample_version="1.0.1"
5028 libx264_package="x264"
5029 libav_package="libav"
5035 if ! $pkg_config --exists "$libavcodec_package >= $libavcodec_version" ; then
5038 if ! $pkg_config --exists "$libavformat_package >= $libavformat_version" ; then
5041 if ! $pkg_config --exists "$libavutil_package >= $libavutil_version" ; then
5044 if ! $pkg_config --exists "$libavresample_package >= $libavresample_version" ; then
5049 if $pkg_config --exists "$libx264_package" ; then
5054 set_libav_config() {
5055 if [ "$libav" = "yes" ]; then
5056 if [ "$exists_libav" = "no" ]; then
5057 feature_not_found "$libav_package"
5058 elif [ "$exists_x264" = "no" ]; then
5059 feature_not_found "$libx264_package"
5063 if [ "$exists_libav" = "yes" ] && [ "$exists_x264" = "yes" ]; then
5065 libav_cflags=`$pkg_config --cflags $libavcodec_package` #Header files are in same place.
5066 libav_libs=`$pkg_config --libs $libavcodec_package $libavformat_package $libavutil_package $libavresample_package $libx264_package`
5072 if [ "$libav" != "no" ]; then
5077 ##########################################
5080 if test "$libpng" != "no"; then
5081 libpng_package="libpng"
5083 if $pkg_config --exists "$libpng_package" ; then
5084 libpng_cflags=`$pkg_config --cflags $libpng_package`
5085 libpng_libs=`$pkg_config --libs $libpng_package`
5086 libs_softmmu="$libpng_libs $libs_softmmu"
5089 if test "$libpng" = "yes" ; then
5090 feature_not_found "libpng"
5097 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5098 if test "$werror" = "yes"; then
5099 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
5102 if test "$solaris" = "no" ; then
5103 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
5104 LDFLAGS="-Wl,--warn-common $LDFLAGS"
5108 # test if pod2man has --utf8 option
5109 if pod2man --help | grep -q utf8; then
5110 POD2MAN="pod2man --utf8"
5115 # Use ASLR, no-SEH and DEP if available
5116 if test "$mingw32" = "yes" ; then
5117 for flag in --dynamicbase --no-seh --nxcompat; do
5118 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
5119 LDFLAGS="-Wl,$flag $LDFLAGS"
5124 qemu_confdir=$sysconfdir$confsuffix
5125 qemu_moddir=$libdir$confsuffix
5126 qemu_datadir=$datadir$confsuffix
5127 qemu_localedir="$datadir/locale"
5130 if test "$want_tools" = "yes" ; then
5131 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
5132 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5133 tools="qemu-nbd\$(EXESUF) $tools"
5134 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5137 if test "$softmmu" = yes ; then
5138 if test "$virtfs" != no ; then
5139 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
5141 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5142 elif test "$maru" = yes && test "$darwin" = yes ; then
5143 echo "Enable VirtFS on Darwin"
5145 elif test "$maru" = yes && test "$mingw32" = yes ; then
5146 echo "Enable VirtFS on Windows"
5149 if test "$virtfs" = yes; then
5150 error_exit "VirtFS is supported only on Linux and requires libcap devel and libattr devel"
5157 # Probe for guest agent support/options
5159 if [ "$guest_agent" != "no" ]; then
5160 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5161 tools="qemu-ga $tools"
5163 elif [ "$guest_agent" != yes ]; then
5166 error_exit "Guest agent is not supported on this platform"
5170 # Guest agent Window MSI package
5172 if test "$guest_agent" != yes; then
5173 if test "$guest_agent_msi" = yes; then
5174 error_exit "MSI guest agent package requires guest agent enabled"
5177 elif test "$mingw32" != "yes"; then
5178 if test "$guest_agent_msi" = "yes"; then
5179 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
5182 elif ! has wixl; then
5183 if test "$guest_agent_msi" = "yes"; then
5184 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5188 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5189 # disabled explicitly
5190 if test "$guest_agent_msi" != "no"; then
5195 if test "$guest_agent_msi" = "yes"; then
5196 if test "$guest_agent_with_vss" = "yes"; then
5197 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
5200 if test "$QEMU_GA_MANUFACTURER" = ""; then
5201 QEMU_GA_MANUFACTURER=QEMU
5204 if test "$QEMU_GA_DISTRO" = ""; then
5205 QEMU_GA_DISTRO=Linux
5208 if test "$QEMU_GA_VERSION" = ""; then
5209 QEMU_GA_VERSION=$(cat $source_path/VERSION)
5212 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5216 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
5219 QEMU_GA_MSI_ARCH="-D Arch=32"
5222 error_exit "CPU $cpu not supported for building installation package"
5227 # Mac OS X ships with a broken assembler
5229 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5230 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5231 "$softmmu" = yes ; then
5232 # Different host OS linkers have different ideas about the name of the ELF
5233 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
5234 # variant; and Windows uses i386pe.
5235 for emu in elf_i386 elf_i386_fbsd i386pe; do
5236 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5237 ld_i386_emulation="$emu"
5243 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5244 roms="$roms spapr-rtas"
5247 if test "$cpu" = "s390x" ; then
5248 roms="$roms s390-ccw"
5251 # Probe for the need for relocating the user-only binary.
5252 if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
5255 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5256 # ??? Rationale for choosing this address
5257 textseg_addr=0x60000000
5260 # A 256M aligned address, high in the address space, with enough
5261 # room for the code_gen_buffer above it before the stack.
5262 textseg_addr=0x60000000
5265 if [ -n "$textseg_addr" ]; then
5267 int main(void) { return 0; }
5269 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5270 if ! compile_prog "" "$textseg_ldflags"; then
5271 # In case ld does not support -Ttext-segment, edit the default linker
5272 # script via sed to set the .text start addr. This is needed on FreeBSD
5274 if ! $ld --verbose >/dev/null 2>&1; then
5276 "We need to link the QEMU user mode binaries at a" \
5277 "specific text address. Unfortunately your linker" \
5278 "doesn't support either the -Ttext-segment option or" \
5279 "printing the default linker script with --verbose." \
5280 "If you don't want the user mode binaries, pass the" \
5281 "--disable-user option to configure."
5284 $ld --verbose | sed \
5285 -e '1,/==================================================/d' \
5286 -e '/==================================================/,$d' \
5287 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5288 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5289 textseg_ldflags="-Wl,-T../config-host.ld"
5295 if test "$1" = "yes" ; then
5300 # prepend pixman and ftd flags after all config tests are done
5301 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5302 libs_softmmu="$pixman_libs $libs_softmmu"
5304 echo "Install prefix $prefix"
5305 echo "BIOS directory $(eval echo $qemu_datadir)"
5306 echo "binary directory $(eval echo $bindir)"
5307 echo "library directory $(eval echo $libdir)"
5308 echo "module directory $(eval echo $qemu_moddir)"
5309 echo "libexec directory $(eval echo $libexecdir)"
5310 echo "include directory $(eval echo $includedir)"
5311 echo "config directory $(eval echo $sysconfdir)"
5312 if test "$mingw32" = "no" ; then
5313 echo "local state directory $(eval echo $local_statedir)"
5314 echo "Manual directory $(eval echo $mandir)"
5315 echo "ELF interp prefix $interp_prefix"
5317 echo "local state directory queried at runtime"
5318 echo "Windows SDK $win_sdk"
5320 echo "Source path $source_path"
5321 echo "C compiler $cc"
5322 echo "Host C compiler $host_cc"
5323 echo "C++ compiler $cxx"
5324 echo "Objective-C compiler $objcc"
5325 echo "ARFLAGS $ARFLAGS"
5326 echo "CFLAGS $CFLAGS"
5327 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5328 echo "LDFLAGS $LDFLAGS"
5330 echo "install $install"
5331 echo "python $python"
5332 if test "$slirp" = "yes" ; then
5335 echo "module support $modules"
5336 echo "host CPU $cpu"
5337 echo "host big endian $bigendian"
5338 echo "target list $target_list"
5339 echo "tcg debug enabled $debug_tcg"
5340 echo "gprof enabled $gprof"
5341 echo "sparse enabled $sparse"
5342 echo "strip binaries $strip_opt"
5343 echo "profiler $profiler"
5344 echo "static build $static"
5345 if test "$darwin" = "yes" ; then
5346 echo "Cocoa support $cocoa"
5348 echo "pixman $pixman"
5349 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5350 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5351 echo "GTK GL support $gtk_gl"
5352 echo "VTE support $vte $(echo_version $vte $vteversion)"
5353 echo "TLS priority $tls_priority"
5354 echo "GNUTLS support $gnutls"
5355 echo "GNUTLS rnd $gnutls_rnd"
5356 echo "libgcrypt $gcrypt"
5357 echo "libgcrypt kdf $gcrypt_kdf"
5358 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5359 echo "nettle kdf $nettle_kdf"
5360 echo "libtasn1 $tasn1"
5361 echo "curses support $curses"
5362 echo "virgl support $virglrenderer"
5363 echo "curl support $curl"
5364 echo "mingw32 support $mingw32"
5365 echo "Audio drivers $audio_drv_list"
5366 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5367 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5368 echo "VirtFS support $virtfs"
5369 echo "VNC support $vnc"
5370 if test "$vnc" = "yes" ; then
5371 echo "VNC SASL support $vnc_sasl"
5372 echo "VNC JPEG support $vnc_jpeg"
5373 echo "VNC PNG support $vnc_png"
5375 if test -n "$sparc_cpu"; then
5376 echo "Target Sparc Arch $sparc_cpu"
5378 echo "xen support $xen"
5379 if test "$xen" = "yes" ; then
5380 echo "xen ctrl version $xen_ctrl_version"
5381 echo "pv dom build $xen_pv_domain_build"
5383 echo "brlapi support $brlapi"
5384 echo "bluez support $bluez"
5385 echo "Documentation $docs"
5387 echo "vde support $vde"
5388 echo "netmap support $netmap"
5389 echo "Linux AIO support $linux_aio"
5390 echo "ATTR/XATTR support $attr"
5391 echo "Install blobs $blobs"
5392 echo "KVM support $kvm"
5393 echo "COLO support $colo"
5394 echo "RDMA support $rdma"
5395 echo "TCG interpreter $tcg_interpreter"
5396 echo "fdt support $fdt"
5397 echo "preadv support $preadv"
5398 echo "fdatasync $fdatasync"
5399 echo "madvise $madvise"
5400 echo "posix_madvise $posix_madvise"
5401 echo "libcap-ng support $cap_ng"
5402 echo "vhost-net support $vhost_net"
5403 echo "vhost-scsi support $vhost_scsi"
5404 echo "vhost-vsock support $vhost_vsock"
5405 echo "Trace backends $trace_backends"
5406 if have_backend "simple"; then
5407 echo "Trace output file $trace_file-<pid>"
5409 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5410 echo "rbd support $rbd"
5411 echo "xfsctl support $xfs"
5412 echo "smartcard support $smartcard"
5413 echo "libusb $libusb"
5414 echo "usb net redir $usb_redir"
5415 echo "OpenGL support $opengl"
5416 echo "OpenGL dmabufs $opengl_dmabuf"
5417 echo "libiscsi support $libiscsi"
5418 echo "libnfs support $libnfs"
5419 echo "build guest agent $guest_agent"
5420 echo "QGA VSS support $guest_agent_with_vss"
5421 echo "QGA w32 disk info $guest_agent_ntddscsi"
5422 echo "QGA MSI support $guest_agent_msi"
5423 echo "seccomp support $seccomp"
5424 echo "coroutine backend $coroutine"
5425 echo "coroutine pool $coroutine_pool"
5426 echo "debug stack usage $debug_stack_usage"
5427 echo "GlusterFS support $glusterfs"
5428 echo "Archipelago support $archipelago"
5429 echo "gcov $gcov_tool"
5430 echo "gcov enabled $gcov"
5431 echo "TPM support $tpm"
5432 echo "libssh2 support $libssh2"
5433 echo "TPM passthrough $tpm_passthrough"
5434 echo "QOM debugging $qom_cast_debug"
5435 echo "lzo support $lzo"
5436 echo "snappy support $snappy"
5437 echo "bzip2 support $bzip2"
5438 echo "NUMA host support $numa"
5439 echo "tcmalloc support $tcmalloc"
5440 echo "jemalloc support $jemalloc"
5441 echo "avx2 optimization $avx2_opt"
5442 echo "replication support $replication"
5444 echo "Qt support $qt"
5445 echo "HAX support $hax"
5446 echo "YaGL support $yagl"
5447 echo "YaGL stats $yagl_stats"
5448 echo "VIGS support $vigs"
5451 if test "$maru" = "yes"; then
5452 echo "TIZEN-maru options:"
5453 echo "maru enabled $maru"
5454 if test "$mingw32" = "yes"; then
5455 echo "WINVER $winver"
5457 echo "libav support $libav"
5458 echo "libpng support $libpng"
5459 echo "DXVA2 support $dxva2"
5460 echo "vaapi support $vaapi"
5461 echo "libtizenusb support $libtizenusb"
5462 echo "extension path $extension_path"
5466 if test "$sdl_too_old" = "yes"; then
5467 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5470 config_host_mak="config-host.mak"
5472 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5474 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5475 echo >> $config_host_mak
5477 echo all: >> $config_host_mak
5478 echo "prefix=$prefix" >> $config_host_mak
5479 echo "bindir=$bindir" >> $config_host_mak
5480 echo "libdir=$libdir" >> $config_host_mak
5481 echo "libexecdir=$libexecdir" >> $config_host_mak
5482 echo "includedir=$includedir" >> $config_host_mak
5483 echo "mandir=$mandir" >> $config_host_mak
5484 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5485 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5486 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5487 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5488 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5489 if test "$mingw32" = "no" ; then
5490 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5492 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5493 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5494 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5495 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5496 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5498 echo "ARCH=$ARCH" >> $config_host_mak
5500 if test "$debug_tcg" = "yes" ; then
5501 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5503 if test "$strip_opt" = "yes" ; then
5504 echo "STRIP=${strip}" >> $config_host_mak
5506 if test "$bigendian" = "yes" ; then
5507 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5509 if test "$mingw32" = "yes" ; then
5510 echo "CONFIG_WIN32=y" >> $config_host_mak
5511 rc_version=$(cat $source_path/VERSION)
5512 version_major=${rc_version%%.*}
5513 rc_version=${rc_version#*.}
5514 version_minor=${rc_version%%.*}
5515 rc_version=${rc_version#*.}
5516 version_subminor=${rc_version%%.*}
5518 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5519 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5520 if test "$guest_agent_with_vss" = "yes" ; then
5521 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5522 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5523 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5525 if test "$guest_agent_ntddscsi" = "yes" ; then
5526 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5528 if test "$guest_agent_msi" = "yes"; then
5529 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5530 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5531 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5532 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5533 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5534 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5535 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5538 echo "CONFIG_POSIX=y" >> $config_host_mak
5541 if test "$linux" = "yes" ; then
5542 echo "CONFIG_LINUX=y" >> $config_host_mak
5545 if test "$darwin" = "yes" ; then
5546 echo "CONFIG_DARWIN=y" >> $config_host_mak
5549 if test "$aix" = "yes" ; then
5550 echo "CONFIG_AIX=y" >> $config_host_mak
5553 if test "$solaris" = "yes" ; then
5554 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5555 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5556 if test "$needs_libsunmath" = "yes" ; then
5557 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5560 if test "$haiku" = "yes" ; then
5561 echo "CONFIG_HAIKU=y" >> $config_host_mak
5563 if test "$static" = "yes" ; then
5564 echo "CONFIG_STATIC=y" >> $config_host_mak
5566 if test "$profiler" = "yes" ; then
5567 echo "CONFIG_PROFILER=y" >> $config_host_mak
5569 if test "$slirp" = "yes" ; then
5570 echo "CONFIG_SLIRP=y" >> $config_host_mak
5571 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5573 if test "$vde" = "yes" ; then
5574 echo "CONFIG_VDE=y" >> $config_host_mak
5576 if test "$netmap" = "yes" ; then
5577 echo "CONFIG_NETMAP=y" >> $config_host_mak
5579 if test "$l2tpv3" = "yes" ; then
5580 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5582 if test "$cap_ng" = "yes" ; then
5583 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5585 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5586 for drv in $audio_drv_list; do
5587 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
5588 echo "$def=y" >> $config_host_mak
5590 if test "$audio_pt_int" = "yes" ; then
5591 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5593 if test "$audio_win_int" = "yes" ; then
5594 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5596 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5597 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5598 if test "$vnc" = "yes" ; then
5599 echo "CONFIG_VNC=y" >> $config_host_mak
5601 if test "$vnc_sasl" = "yes" ; then
5602 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5604 if test "$vnc_jpeg" = "yes" ; then
5605 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5607 if test "$vnc_png" = "yes" ; then
5608 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5610 if test "$fnmatch" = "yes" ; then
5611 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5613 if test "$xfs" = "yes" ; then
5614 echo "CONFIG_XFS=y" >> $config_host_mak
5616 qemu_version=$(head $source_path/VERSION)
5617 echo "VERSION=$qemu_version" >>$config_host_mak
5618 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5619 echo "SRC_PATH=$source_path" >> $config_host_mak
5620 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5621 if [ "$docs" = "yes" ] ; then
5622 echo "BUILD_DOCS=yes" >> $config_host_mak
5624 if test "$modules" = "yes"; then
5625 # $shacmd can generate a hash started with digit, which the compiler doesn't
5626 # like as an symbol. So prefix it with an underscore
5627 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5628 echo "CONFIG_MODULES=y" >> $config_host_mak
5630 if test "$sdl" = "yes" ; then
5631 echo "CONFIG_SDL=y" >> $config_host_mak
5632 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5633 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5635 if test "$cocoa" = "yes" ; then
5636 echo "CONFIG_COCOA=y" >> $config_host_mak
5638 if test "$curses" = "yes" ; then
5639 echo "CONFIG_CURSES=y" >> $config_host_mak
5641 if test "$utimens" = "yes" ; then
5642 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
5644 if test "$pipe2" = "yes" ; then
5645 echo "CONFIG_PIPE2=y" >> $config_host_mak
5647 if test "$accept4" = "yes" ; then
5648 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5650 if test "$splice" = "yes" ; then
5651 echo "CONFIG_SPLICE=y" >> $config_host_mak
5653 if test "$eventfd" = "yes" ; then
5654 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5656 if test "$memfd" = "yes" ; then
5657 echo "CONFIG_MEMFD=y" >> $config_host_mak
5659 if test "$fallocate" = "yes" ; then
5660 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5662 if test "$fallocate_punch_hole" = "yes" ; then
5663 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5665 if test "$fallocate_zero_range" = "yes" ; then
5666 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5668 if test "$posix_fallocate" = "yes" ; then
5669 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5671 if test "$sync_file_range" = "yes" ; then
5672 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5674 if test "$fiemap" = "yes" ; then
5675 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5677 if test "$dup3" = "yes" ; then
5678 echo "CONFIG_DUP3=y" >> $config_host_mak
5680 if test "$ppoll" = "yes" ; then
5681 echo "CONFIG_PPOLL=y" >> $config_host_mak
5683 if test "$prctl_pr_set_timerslack" = "yes" ; then
5684 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5686 if test "$epoll" = "yes" ; then
5687 echo "CONFIG_EPOLL=y" >> $config_host_mak
5689 if test "$epoll_create1" = "yes" ; then
5690 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5692 if test "$sendfile" = "yes" ; then
5693 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5695 if test "$timerfd" = "yes" ; then
5696 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5698 if test "$setns" = "yes" ; then
5699 echo "CONFIG_SETNS=y" >> $config_host_mak
5701 if test "$clock_adjtime" = "yes" ; then
5702 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5704 if test "$syncfs" = "yes" ; then
5705 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5707 if test "$inotify" = "yes" ; then
5708 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5710 if test "$inotify1" = "yes" ; then
5711 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5713 if test "$byteswap_h" = "yes" ; then
5714 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5716 if test "$bswap_h" = "yes" ; then
5717 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5719 if test "$curl" = "yes" ; then
5720 echo "CONFIG_CURL=m" >> $config_host_mak
5721 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5722 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5724 if test "$brlapi" = "yes" ; then
5725 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5727 if test "$bluez" = "yes" ; then
5728 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5729 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5731 if test "$glib_subprocess" = "yes" ; then
5732 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5734 if test "$gtk" = "yes" ; then
5735 echo "CONFIG_GTK=y" >> $config_host_mak
5736 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5737 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5738 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5739 if test "$gtk_gl" = "yes" ; then
5740 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5743 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5744 if test "$gnutls" = "yes" ; then
5745 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5747 if test "$gnutls_rnd" = "yes" ; then
5748 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5750 if test "$gcrypt" = "yes" ; then
5751 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5752 if test "$gcrypt_kdf" = "yes" ; then
5753 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5756 if test "$nettle" = "yes" ; then
5757 echo "CONFIG_NETTLE=y" >> $config_host_mak
5758 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5759 if test "$nettle_kdf" = "yes" ; then
5760 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5763 if test "$tasn1" = "yes" ; then
5764 echo "CONFIG_TASN1=y" >> $config_host_mak
5766 if test "$have_ifaddrs_h" = "yes" ; then
5767 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5769 if test "$have_broken_size_max" = "yes" ; then
5770 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5773 # Work around a system header bug with some kernel/XFS header
5774 # versions where they both try to define 'struct fsxattr':
5775 # xfs headers will not try to redefine structs from linux headers
5776 # if this macro is set.
5777 if test "$have_fsxattr" = "yes" ; then
5778 echo "HAVE_FSXATTR=y" >> $config_host_mak
5780 if test "$vte" = "yes" ; then
5781 echo "CONFIG_VTE=y" >> $config_host_mak
5782 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5784 if test "$virglrenderer" = "yes" ; then
5785 echo "CONFIG_VIRGL=y" >> $config_host_mak
5786 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5787 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5789 if test "$qt" = "yes" ; then
5790 echo "CONFIG_QT=y" >> $config_host_mak
5791 echo "QT_CFLAGS=$qt_cflags" >> $config_host_mak
5793 if test "$xen" = "yes" ; then
5794 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5795 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5796 if test "$xen_pv_domain_build" = "yes" ; then
5797 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5800 if test "$linux_aio" = "yes" ; then
5801 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5803 if test "$attr" = "yes" ; then
5804 echo "CONFIG_ATTR=y" >> $config_host_mak
5806 if test "$libattr" = "yes" ; then
5807 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5809 if test "$virtfs" = "yes" ; then
5810 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5812 if test "$vhost_scsi" = "yes" ; then
5813 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5815 if test "$vhost_net" = "yes" ; then
5816 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5818 if test "$vhost_vsock" = "yes" ; then
5819 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5821 if test "$blobs" = "yes" ; then
5822 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5824 if test "$iovec" = "yes" ; then
5825 echo "CONFIG_IOVEC=y" >> $config_host_mak
5827 if test "$preadv" = "yes" ; then
5828 echo "CONFIG_PREADV=y" >> $config_host_mak
5830 if test "$fdt" = "yes" ; then
5831 echo "CONFIG_FDT=y" >> $config_host_mak
5833 if test "$signalfd" = "yes" ; then
5834 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5836 if test "$tcg_interpreter" = "yes" ; then
5837 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5839 if test "$fdatasync" = "yes" ; then
5840 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5842 if test "$madvise" = "yes" ; then
5843 echo "CONFIG_MADVISE=y" >> $config_host_mak
5845 if test "$posix_madvise" = "yes" ; then
5846 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5849 if test "$spice" = "yes" ; then
5850 echo "CONFIG_SPICE=y" >> $config_host_mak
5853 if test "$yagl" = "yes" ; then
5854 echo "CONFIG_YAGL=y" >> $config_host_mak
5855 if test "$linux" = "yes" ; then
5856 LIBS="-lGLU -ldl $LIBS"
5857 elif test "$mingw32" = "yes" ; then
5858 LIBS="-lopengl32 -lglu32 $LIBS"
5859 elif test "$darwin" = "yes" ; then
5860 LIBS="-framework OpenGL -framework AGL -framework GLUT $LIBS"
5862 echo "ERROR: YaGL is not available on $targetos"
5867 if test "$yagl_stats" = "yes" ; then
5868 echo "CONFIG_YAGL_STATS=y" >> $config_host_mak
5871 if test "$vigs" = "yes" ; then
5872 echo "CONFIG_VIGS=y" >> $config_host_mak
5875 if test "$smartcard" = "yes" ; then
5876 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5879 if test "$libusb" = "yes" ; then
5880 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5883 if test "$usb_redir" = "yes" ; then
5884 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5887 if test "$opengl" = "yes" ; then
5888 echo "CONFIG_OPENGL=y" >> $config_host_mak
5889 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5890 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5891 if test "$opengl_dmabuf" = "yes" ; then
5892 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5896 if test "$avx2_opt" = "yes" ; then
5897 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5900 if test "$lzo" = "yes" ; then
5901 echo "CONFIG_LZO=y" >> $config_host_mak
5904 if test "$snappy" = "yes" ; then
5905 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5908 if test "$bzip2" = "yes" ; then
5909 echo "CONFIG_BZIP2=y" >> $config_host_mak
5910 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5913 if test "$libiscsi" = "yes" ; then
5914 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5915 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5916 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5919 if test "$libnfs" = "yes" ; then
5920 echo "CONFIG_LIBNFS=m" >> $config_host_mak
5921 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
5924 if test "$seccomp" = "yes"; then
5925 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5928 # XXX: suppress that
5929 if [ "$bsd" = "yes" ] ; then
5930 echo "CONFIG_BSD=y" >> $config_host_mak
5933 if test "$localtime_r" = "yes" ; then
5934 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5936 if test "$qom_cast_debug" = "yes" ; then
5937 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5939 if test "$rbd" = "yes" ; then
5940 echo "CONFIG_RBD=m" >> $config_host_mak
5941 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5942 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5945 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5946 if test "$coroutine_pool" = "yes" ; then
5947 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5949 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5952 if test "$debug_stack_usage" = "yes" ; then
5953 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
5956 if test "$open_by_handle_at" = "yes" ; then
5957 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5960 if test "$linux_magic_h" = "yes" ; then
5961 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5964 if test "$pragma_diagnostic_available" = "yes" ; then
5965 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5968 if test "$valgrind_h" = "yes" ; then
5969 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5972 if test "$has_environ" = "yes" ; then
5973 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5976 if test "$cpuid_h" = "yes" ; then
5977 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5980 if test "$int128" = "yes" ; then
5981 echo "CONFIG_INT128=y" >> $config_host_mak
5984 if test "$atomic128" = "yes" ; then
5985 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
5988 if test "$atomic64" = "yes" ; then
5989 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
5992 if test "$getauxval" = "yes" ; then
5993 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5996 if test "$glusterfs" = "yes" ; then
5997 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5998 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5999 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6002 if test "$glusterfs_xlator_opt" = "yes" ; then
6003 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6006 if test "$glusterfs_discard" = "yes" ; then
6007 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6010 if test "$glusterfs_zerofill" = "yes" ; then
6011 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6014 if test "$archipelago" = "yes" ; then
6015 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
6016 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
6019 if test "$libssh2" = "yes" ; then
6020 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6021 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6022 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6026 if test "$libusb" = "yes"; then
6027 echo "HOST_USB=libusb legacy" >> $config_host_mak
6028 elif test "$libtizenusb" = "yes"; then
6029 echo "HOST_USB=tizenusb legacy" >> $config_host_mak
6031 echo "HOST_USB=stub" >> $config_host_mak
6034 # TPM passthrough support?
6035 if test "$tpm" = "yes"; then
6036 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6037 if test "$tpm_passthrough" = "yes"; then
6038 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6042 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6043 if have_backend "nop"; then
6044 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6046 if have_backend "simple"; then
6047 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6048 # Set the appropriate trace file.
6049 trace_file="\"$trace_file-\" FMT_pid"
6051 if have_backend "log"; then
6052 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6054 if have_backend "ust"; then
6055 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6057 if have_backend "dtrace"; then
6058 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6059 if test "$trace_backend_stap" = "yes" ; then
6060 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6063 if have_backend "ftrace"; then
6064 if test "$linux" = "yes" ; then
6065 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6067 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
6070 if have_backend "syslog"; then
6071 if test "$posix_syslog" = "yes" ; then
6072 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6074 feature_not_found "syslog(trace backend)" "syslog not available"
6077 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6079 if test "$colo" = "yes"; then
6080 echo "CONFIG_COLO=y" >> $config_host_mak
6083 if test "$rdma" = "yes" ; then
6084 echo "CONFIG_RDMA=y" >> $config_host_mak
6087 if test "$have_rtnetlink" = "yes" ; then
6088 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6091 if test "$replication" = "yes" ; then
6092 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6095 if test "$have_af_vsock" = "yes" ; then
6096 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6099 # Hold two types of flag:
6100 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6101 # a thread we have a handle to
6102 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6104 if test "$pthread_setname_np" = "yes" ; then
6105 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6106 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6109 if test "$tcg_interpreter" = "yes"; then
6110 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6111 elif test "$ARCH" = "sparc64" ; then
6112 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6113 elif test "$ARCH" = "s390x" ; then
6114 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6115 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6116 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6117 elif test "$ARCH" = "ppc64" ; then
6118 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6120 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6122 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6124 echo "TOOLS=$tools" >> $config_host_mak
6125 echo "ROMS=$roms" >> $config_host_mak
6126 echo "MAKE=$make" >> $config_host_mak
6127 echo "INSTALL=$install" >> $config_host_mak
6128 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6129 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6130 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6131 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6132 echo "PYTHON=$python" >> $config_host_mak
6133 echo "CC=$cc" >> $config_host_mak
6134 if $iasl -h > /dev/null 2>&1; then
6135 echo "IASL=$iasl" >> $config_host_mak
6137 echo "CC_I386=$cc_i386" >> $config_host_mak
6138 echo "HOST_CC=$host_cc" >> $config_host_mak
6139 echo "CXX=$cxx" >> $config_host_mak
6140 echo "OBJCC=$objcc" >> $config_host_mak
6141 echo "AR=$ar" >> $config_host_mak
6142 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6143 echo "AS=$as" >> $config_host_mak
6144 echo "CCAS=$ccas" >> $config_host_mak
6145 echo "CPP=$cpp" >> $config_host_mak
6146 echo "OBJCOPY=$objcopy" >> $config_host_mak
6147 echo "LD=$ld" >> $config_host_mak
6148 echo "NM=$nm" >> $config_host_mak
6149 echo "WINDRES=$windres" >> $config_host_mak
6150 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6151 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6152 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6153 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6154 if test "$sparse" = "yes" ; then
6155 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6156 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6157 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6158 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6159 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6161 if test "$cross_prefix" != ""; then
6162 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6164 echo "AUTOCONF_HOST := " >> $config_host_mak
6166 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6167 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6168 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6169 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6170 echo "LIBS+=$LIBS" >> $config_host_mak
6171 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6172 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6173 echo "EXESUF=$EXESUF" >> $config_host_mak
6174 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6175 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6176 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6177 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6178 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6179 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6180 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6181 if test "$gcov" = "yes" ; then
6182 echo "CONFIG_GCOV=y" >> $config_host_mak
6183 echo "GCOV=$gcov_tool" >> $config_host_mak
6186 # use included Linux headers
6187 if test "$linux" = "yes" ; then
6188 mkdir -p linux-headers
6206 # For most CPUs the kernel architecture name and QEMU CPU name match.
6210 # For non-KVM architectures we will not have asm headers
6211 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6212 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
6216 for target in $target_list; do
6217 target_dir="$target"
6218 config_target_mak=$target_dir/config-target.mak
6219 target_name=$(echo $target | cut -d '-' -f 1)
6220 target_bigendian="no"
6222 case "$target_name" in
6223 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
6224 target_bigendian=yes
6228 target_user_only="no"
6229 target_linux_user="no"
6230 target_bsd_user="no"
6232 ${target_name}-softmmu)
6233 target_softmmu="yes"
6235 ${target_name}-linux-user)
6236 if test "$linux" != "yes" ; then
6237 error_exit "Target '$target' is only available on a Linux host"
6239 target_user_only="yes"
6240 target_linux_user="yes"
6242 ${target_name}-bsd-user)
6243 if test "$bsd" != "yes" ; then
6244 error_exit "Target '$target' is only available on a BSD host"
6246 target_user_only="yes"
6247 target_bsd_user="yes"
6250 error_exit "Target '$target' not recognised"
6255 mkdir -p $target_dir
6256 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6259 interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
6262 TARGET_ARCH="$target_name"
6266 case "$target_name" in
6270 TARGET_BASE_ARCH=i386
6277 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6280 TARGET_BASE_ARCH=arm
6282 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6290 gdb_xml_files="cf-core.xml cf-fp.xml"
6292 microblaze|microblazeel)
6293 TARGET_ARCH=microblaze
6298 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6302 TARGET_BASE_ARCH=mips
6303 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6304 echo "TARGET_ABI32=y" >> $config_target_mak
6308 TARGET_BASE_ARCH=mips
6309 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6314 TARGET_ARCH=openrisc
6315 TARGET_BASE_ARCH=openrisc
6318 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6321 TARGET_BASE_ARCH=ppc
6323 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6326 TARGET_BASE_ARCH=ppc
6328 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6332 TARGET_BASE_ARCH=ppc
6334 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6338 TARGET_BASE_ARCH=ppc
6340 echo "TARGET_ABI32=y" >> $config_target_mak
6341 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6350 TARGET_BASE_ARCH=sparc
6354 TARGET_BASE_ARCH=sparc
6355 TARGET_ABI_DIR=sparc
6356 echo "TARGET_ABI32=y" >> $config_target_mak
6359 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
6371 error_exit "Unsupported target CPU"
6374 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6375 if [ "$TARGET_BASE_ARCH" = "" ]; then
6376 TARGET_BASE_ARCH=$TARGET_ARCH
6379 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
6382 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6385 target_arch_name="$(upper $TARGET_ARCH)"
6386 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6387 echo "TARGET_NAME=$target_name" >> $config_target_mak
6388 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6389 if [ "$TARGET_ABI_DIR" = "" ]; then
6390 TARGET_ABI_DIR=$TARGET_ARCH
6392 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6393 if [ "$HOST_VARIANT_DIR" != "" ]; then
6394 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6396 case "$target_name" in
6398 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
6399 echo "CONFIG_XEN=y" >> $config_target_mak
6400 if test "$xen_pci_passthrough" = yes; then
6401 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6407 case "$target_name" in
6408 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
6409 # Make sure the target and host cpus are compatible
6410 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
6411 \( "$target_name" = "$cpu" -o \
6412 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
6413 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
6414 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
6415 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
6416 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
6417 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
6418 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
6419 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
6420 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
6421 echo "CONFIG_KVM=y" >> $config_target_mak
6422 if test "$vhost_net" = "yes" ; then
6423 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6424 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
6428 case "$target_name" in
6430 echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
6432 if test "$hax" = "yes" ; then
6433 if test "$target_softmmu" = "yes" ; then
6434 case "$target_name" in
6436 echo "CONFIG_HAX=y" >> $config_target_mak
6439 echo "CONFIG_NO_HAX=y" >> $config_target_mak
6443 echo "CONFIG_NO_HAX=y" >> $config_target_mak
6446 if test "$target_bigendian" = "yes" ; then
6447 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6449 if test "$target_softmmu" = "yes" ; then
6450 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6452 if test "$target_user_only" = "yes" ; then
6453 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6454 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6456 if test "$target_linux_user" = "yes" ; then
6457 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6460 if test ! -z "$gdb_xml_files" ; then
6461 for x in $gdb_xml_files; do
6462 list="$list $source_path/gdb-xml/$x"
6464 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6467 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6468 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6470 if test "$target_bsd_user" = "yes" ; then
6471 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6474 if test "$yagl" = "yes" ; then
6475 echo "CONFIG_BUILD_YAGL=y" >> $config_target_mak
6478 if test "$vigs" = "yes" ; then
6479 echo "CONFIG_BUILD_VIGS=y" >> $config_target_mak
6482 # generate QEMU_CFLAGS/LDFLAGS for targets
6488 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6489 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6492 for i in $ARCH $TARGET_BASE_ARCH ; do
6495 disas_config "ALPHA"
6498 if test -n "${cxx}"; then
6499 disas_config "ARM_A64"
6504 if test -n "${cxx}"; then
6505 disas_config "ARM_A64"
6524 disas_config "MICROBLAZE"
6530 disas_config "MOXIE"
6533 disas_config "OPENRISC"
6545 disas_config "SPARC"
6548 disas_config "XTENSA"
6552 if test "$tcg_interpreter" = "yes" ; then
6558 # Ensure there's only a single GP
6559 cflags="-msmall-data $cflags"
6563 if test "$target_softmmu" = "yes" ; then
6564 case "$TARGET_BASE_ARCH" in
6566 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
6569 cflags="-DHAS_AUDIO $cflags"
6572 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
6577 if test "$gprof" = "yes" ; then
6578 echo "TARGET_GPROF=yes" >> $config_target_mak
6579 if test "$target_linux_user" = "yes" ; then
6581 ldflags="-p $ldflags"
6583 if test "$target_softmmu" = "yes" ; then
6584 ldflags="-p $ldflags"
6585 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6589 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6590 ldflags="$ldflags $textseg_ldflags"
6593 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6594 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6596 done # for target in $targets
6598 if [ "$pixman" = "internal" ]; then
6599 echo "config-host.h: subdir-pixman" >> $config_host_mak
6602 if [ "$dtc_internal" = "yes" ]; then
6603 echo "config-host.h: subdir-dtc" >> $config_host_mak
6606 if test "$numa" = "yes"; then
6607 echo "CONFIG_NUMA=y" >> $config_host_mak
6610 if test "$ccache_cpp2" = "yes"; then
6611 echo "export CCACHE_CPP2=y" >> $config_host_mak
6615 if test "$maru" = "yes" ; then
6616 echo "CONFIG_MARU=y" >> $config_host_mak
6618 if test "$libav" = "yes" ; then
6619 echo "CONFIG_LIBAV=y" >> $config_host_mak
6620 echo "LIBAV_CFLAGS=$libav_cflags" >> $config_host_mak
6621 echo "LIBAV_LIBS=$libav_libs" >> $config_host_mak
6623 if test "$libpng" = "yes" ; then
6624 echo "CONFIG_PNG=y" >> $config_host_mak
6625 echo "LIBPNG_CFLAGS=$libpng_cflags" >> $config_host_mak
6627 if test "$dxva2" = "yes" ; then
6628 echo "CONFIG_DXVA2=y" >> $config_host_mak
6630 if test "$vaapi" = "yes" ; then
6631 echo "CONFIG_VAAPI=y" >> $config_host_mak
6632 echo "LIBVA_CFLAGS=$libva_cflags $libva_x11_cflags" >> $config_host_mak
6634 if test "$libtizenusb" = "yes" ; then
6635 echo "CONFIG_TIZENUSB=y" >> $config_host_mak
6637 if [ ! -z "$extension_path" ] ; then
6638 echo "CONFIG_EXTENSION_PATH=$extension_path" >> $config_host_mak
6642 # build tree in object directory in case the source is not in the current directory
6643 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6645 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6646 DIRS="$DIRS roms/seabios roms/vgabios"
6647 DIRS="$DIRS qapi-generated"
6648 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6649 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6650 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6651 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6652 FILES="$FILES pc-bios/spapr-rtas/Makefile"
6653 FILES="$FILES pc-bios/s390-ccw/Makefile"
6654 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6655 FILES="$FILES pc-bios/qemu-icon.bmp"
6657 $source_path/pc-bios/*.bin \
6658 $source_path/pc-bios/*.lid \
6659 $source_path/pc-bios/*.aml \
6660 $source_path/pc-bios/*.rom \
6661 $source_path/pc-bios/*.dtb \
6662 $source_path/pc-bios/*.img \
6663 $source_path/pc-bios/openbios-* \
6664 $source_path/pc-bios/u-boot.* \
6665 $source_path/pc-bios/palcode-*
6667 FILES="$FILES pc-bios/$(basename $bios_file)"
6669 for test_file in $(find $source_path/tests/acpi-test-data -type f)
6671 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6674 for f in $FILES ; do
6675 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6676 symlink "$source_path/$f" "$f"
6680 # temporary config to build submodules
6681 for rom in seabios vgabios ; do
6682 config_mak=roms/$rom/config.mak
6683 echo "# Automatically generated by configure - do not modify" > $config_mak
6684 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6685 echo "AS=$as" >> $config_mak
6686 echo "CCAS=$ccas" >> $config_mak
6687 echo "CC=$cc" >> $config_mak
6688 echo "BCC=bcc" >> $config_mak
6689 echo "CPP=$cpp" >> $config_mak
6690 echo "OBJCOPY=objcopy" >> $config_mak
6691 echo "IASL=$iasl" >> $config_mak
6692 echo "LD=$ld" >> $config_mak
6695 # set up tests data directory
6696 if [ ! -e tests/data ]; then
6697 symlink "$source_path/tests/data" tests/data
6700 # set up qemu-iotests in this build directory
6701 iotests_common_env="tests/qemu-iotests/common.env"
6702 iotests_check="tests/qemu-iotests/check"
6704 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6705 echo >> "$iotests_common_env"
6706 echo "export PYTHON='$python'" >> "$iotests_common_env"
6708 if [ ! -e "$iotests_check" ]; then
6709 symlink "$source_path/$iotests_check" "$iotests_check"
6712 # Save the configure command line for later reuse.
6713 cat <<EOD >config.status
6715 # Generated by configure.
6716 # Run this file to recreate the current configuration.
6717 # Compiler output produced by configure, useful for debugging
6718 # configure, is in config.log if it exists.
6720 printf "exec" >>config.status
6721 printf " '%s'" "$0" "$@" >>config.status
6722 echo ' "$@"' >>config.status
6723 chmod +x config.status