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"
37 # Print a helpful header at the top of config.log
38 echo "# QEMU configure log $(date)" >> config.log
39 printf "# Configured with:" >> config.log
40 printf " '%s'" "$0" "$@" >> config.log
42 echo "#" >> config.log
47 while test -n "$2"; do
56 # Run the compiler, capturing its output to the log. First argument
57 # is compiler binary to execute.
60 echo $compiler "$@" >> config.log
61 $compiler "$@" >> config.log 2>&1 || return $?
62 # Test passed. If this is an --enable-werror build, rerun
63 # the test with -Werror and bail out if it fails. This
64 # makes warning-generating-errors in configure test code
65 # obvious to developers.
66 if test "$werror" != "yes"; then
69 # Don't bother rerunning the compile if we were already using -Werror
75 echo $compiler -Werror "$@" >> config.log
76 $compiler -Werror "$@" >> config.log 2>&1 && return $?
77 error_exit "configure test passed without -Werror but failed with -Werror." \
78 "This is probably a bug in the configure script. The failing command" \
79 "will be at the bottom of config.log." \
80 "You can run configure with --disable-werror to bypass this check."
84 do_compiler "$cc" "$@"
88 do_compiler "$cxx" "$@"
92 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
93 # options which some versions of GCC's C++ compiler complain about
94 # because they only make sense for C programs.
96 for arg in $QEMU_CFLAGS; do
98 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
99 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
102 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
110 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
116 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
122 # Run the compiler, capturing its output to the log.
123 echo $libtool $mode --tag=CC $cc "$@" >> config.log
124 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
125 # Test passed. If this is an --enable-werror build, rerun
126 # the test with -Werror and bail out if it fails. This
127 # makes warning-generating-errors in configure test code
128 # obvious to developers.
129 if test "$werror" != "yes"; then
132 # Don't bother rerunning the compile if we were already using -Werror
138 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
139 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
140 error_exit "configure test passed without -Werror but failed with -Werror." \
141 "This is probably a bug in the configure script. The failing command" \
142 "will be at the bottom of config.log." \
143 "You can run configure with --disable-werror to bypass this check."
147 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
148 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
151 # symbolically link $1 to $2. Portable version of "ln -sf".
154 mkdir -p "$(dirname "$2")"
158 # check whether a command is available to this shell (may be either an
159 # executable or a builtin)
161 type "$1" >/dev/null 2>&1
164 # search for an executable in PATH
170 # pathname has a dir component?
171 if [ "${local_command#*/}" != "$local_command" ]; then
172 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
173 echo "$local_command"
177 if [ -z "$local_command" ]; then
182 for local_dir in $PATH; do
183 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
184 echo "$local_dir/$local_command"
185 IFS="${local_ifs:-$(printf ' \t\n')}"
190 IFS="${local_ifs:-$(printf ' \t\n')}"
195 echo "$trace_backends" | grep "$1" >/dev/null
199 source_path=`dirname "$0"`
202 interp_prefix="/usr/gnemul/qemu-%M"
206 block_drv_rw_whitelist=""
207 block_drv_ro_whitelist=""
213 cc_i386=i386-pc-linux-gnu-gcc
218 # Don't accept a target_list environment variable.
221 # Default value for a variable defining feature "foo".
222 # * foo="no" feature will only be used if --enable-foo arg is given
223 # * foo="" feature will be searched for, and if found, will be used
224 # unless --disable-foo is given
225 # * foo="yes" this value will only be set by --enable-foo flag.
226 # feature will searched for,
227 # if not found, configure exits with error
229 # Always add --enable-foo and --disable-foo command line args.
230 # Distributions want to ensure that several features are compiled in, and it
231 # is impossible without a --enable-foo that exits if a feature is not found.
253 xen_pci_passthrough=""
277 LDFLAGS_SHARED="-shared"
280 mandir="\${prefix}/share/man"
281 datadir="\${prefix}/share"
282 qemu_docdir="\${prefix}/share/doc/qemu"
283 bindir="\${prefix}/bin"
284 libdir="\${prefix}/lib"
285 libexecdir="\${prefix}/libexec"
286 includedir="\${prefix}/include"
287 sysconfdir="\${prefix}/etc"
288 local_statedir="\${prefix}/var"
319 guest_agent_with_vss="no"
320 guest_agent_ntddscsi="no"
331 glusterfs_discard="no"
332 glusterfs_zerofill="no"
370 # parse CC options first
372 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
374 --cross-prefix=*) cross_prefix="$optarg"
378 --cxx=*) CXX="$optarg"
380 --source-path=*) source_path="$optarg"
382 --cpu=*) cpu="$optarg"
384 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
385 EXTRA_CFLAGS="$optarg"
387 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
388 EXTRA_LDFLAGS="$optarg"
390 --enable-debug-info) debug_info="yes"
392 --disable-debug-info) debug_info="no"
397 # Using uname is really, really broken. Once we have the right set of checks
398 # we can eliminate its usage altogether.
400 # Preferred compiler:
402 # ${cross_prefix}gcc (if cross-prefix specified)
404 if test -z "${CC}${cross_prefix}"; then
407 cc="${CC-${cross_prefix}gcc}"
410 if test -z "${CXX}${cross_prefix}"; then
413 cxx="${CXX-${cross_prefix}g++}"
416 ar="${AR-${cross_prefix}ar}"
417 as="${AS-${cross_prefix}as}"
419 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
420 ld="${LD-${cross_prefix}ld}"
421 libtool="${LIBTOOL-${cross_prefix}libtool}"
422 nm="${NM-${cross_prefix}nm}"
423 strip="${STRIP-${cross_prefix}strip}"
424 windres="${WINDRES-${cross_prefix}windres}"
425 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
427 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
429 pkg_config=query_pkg_config
430 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
431 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
433 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
434 ARFLAGS="${ARFLAGS-rv}"
436 # default flags for all hosts
437 QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
438 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
439 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
440 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
441 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
442 if test "$debug_info" = "yes"; then
444 LDFLAGS="-g $LDFLAGS"
447 # make source path absolute
448 source_path=`cd "$source_path"; pwd`
450 # running configure in the source tree?
451 # we know that's the case if configure is there.
452 if test -f "./configure"; then
453 pwd_is_source_path="y"
455 pwd_is_source_path="n"
461 #error $1 not defined
463 int main(void) { return 0; }
471 int main(void) { return 0; }
478 int main(void) { return 0; }
482 if check_define __linux__ ; then
484 elif check_define _WIN32 ; then
486 elif check_define __OpenBSD__ ; then
488 elif check_define __sun__ ; then
490 elif check_define __HAIKU__ ; then
496 # Some host OSes need non-standard checks for which CPU to use.
497 # Note that these checks are broken for cross-compilation: if you're
498 # cross-compiling to one of these OSes then you'll need to specify
499 # the correct CPU with the --cpu option.
502 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
503 # run 64-bit userspace code.
504 # If the user didn't specify a CPU explicitly and the kernel says this is
505 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
506 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
511 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
512 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
517 if test ! -z "$cpu" ; then
518 # command line argument
520 elif check_define __i386__ ; then
522 elif check_define __x86_64__ ; then
523 if check_define __ILP32__ ; then
528 elif check_define __sparc__ ; then
529 if check_define __arch64__ ; then
534 elif check_define _ARCH_PPC ; then
535 if check_define _ARCH_PPC64 ; then
540 elif check_define __mips__ ; then
542 elif check_define __ia64__ ; then
544 elif check_define __s390__ ; then
545 if check_define __s390x__ ; then
550 elif check_define __arm__ ; then
552 elif check_define __aarch64__ ; then
554 elif check_define __hppa__ ; then
561 # Normalise host CPU name and set ARCH.
562 # Note that this case should only have supported host CPUs, not guests.
564 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
567 i386|i486|i586|i686|i86pc|BePC)
586 # This will result in either an error or falling back to TCI later
590 if test -z "$ARCH"; then
596 # host *BSD for user mode
602 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
603 audio_possible_drivers="sdl"
608 audio_possible_drivers="dsound sdl"
609 if check_include dsound.h; then
610 audio_drv_list="dsound"
615 libs_qga="-lole32 $libs_qga"
620 audio_possible_drivers="oss sdl pa"
626 audio_possible_drivers="oss sdl pa"
627 # needed for kinfo_getvmmap(3) in libutil.h
629 netmap="" # enable netmap autodetect
630 HOST_VARIANT_DIR="freebsd"
636 audio_possible_drivers="oss sdl pa"
637 HOST_VARIANT_DIR="dragonfly"
643 audio_possible_drivers="oss sdl"
645 HOST_VARIANT_DIR="netbsd"
651 audio_possible_drivers="sdl"
652 HOST_VARIANT_DIR="openbsd"
657 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
658 if [ "$cpu" = "x86_64" ] ; then
659 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
660 LDFLAGS="-arch x86_64 $LDFLAGS"
663 audio_drv_list="coreaudio"
664 audio_possible_drivers="coreaudio sdl"
665 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
666 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
667 # Disable attempts to use ObjectiveC features in os/object.h since they
668 # won't work when we're compiling with gcc as a C compiler.
669 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
670 HOST_VARIANT_DIR="darwin"
675 install="${INSTALL-ginstall}"
677 smbd="${SMBD-/usr/sfw/sbin/smbd}"
678 needs_libsunmath="no"
679 solarisrev=`uname -r | cut -f2 -d.`
680 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
681 if test "$solarisrev" -le 9 ; then
682 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
683 needs_libsunmath="yes"
684 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
685 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
686 LIBS="-lsunmath $LIBS"
688 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
689 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
690 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
691 "Studio 11 can be downloaded from www.sun.com."
695 if test -f /usr/include/sys/soundcard.h ; then
698 audio_possible_drivers="oss sdl"
699 # needed for CMSG_ macros in sys/socket.h
700 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
701 # needed for TIOCWIN* defines in termios.h
702 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
703 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
704 solarisnetlibs="-lsocket -lnsl -lresolv"
705 LIBS="$solarisnetlibs $LIBS"
706 libs_qga="$solarisnetlibs $libs_qga"
714 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
715 LIBS="-lposix_error_mapper -lnetwork $LIBS"
719 audio_possible_drivers="oss alsa sdl pa"
725 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
729 if [ "$bsd" = "yes" ] ; then
730 if [ "$darwin" != "yes" ] ; then
735 : ${make=${MAKE-make}}
736 : ${install=${INSTALL-install}}
737 : ${python=${PYTHON-python}}
738 : ${smbd=${SMBD-/usr/sbin/smbd}}
740 # Default objcc to clang if available, otherwise use CC
747 if test "$mingw32" = "yes" ; then
750 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN $QEMU_CFLAGS"
751 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
752 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
753 # MinGW needs -mthreads for TLS and macro _MT.
754 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
755 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
757 if compile_prog "" "-liberty" ; then
758 LIBS="-liberty $LIBS"
760 prefix="c:/Program Files/QEMU"
763 qemu_docdir="\${prefix}"
765 sysconfdir="\${prefix}"
768 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
774 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
776 --help|-h) show_help=yes
778 --version|-V) exec cat $source_path/VERSION
780 --prefix=*) prefix="$optarg"
782 --interp-prefix=*) interp_prefix="$optarg"
790 --host-cc=*) host_cc="$optarg"
794 --iasl=*) iasl="$optarg"
796 --objcc=*) objcc="$optarg"
798 --make=*) make="$optarg"
800 --install=*) install="$optarg"
802 --python=*) python="$optarg"
804 --gcov=*) gcov_tool="$optarg"
806 --smbd=*) smbd="$optarg"
814 --disable-debug-info)
824 --target-list=*) target_list="$optarg"
826 --enable-trace-backends=*) trace_backends="$optarg"
828 # XXX: backwards compatibility
829 --enable-trace-backend=*) trace_backends="$optarg"
831 --with-trace-file=*) trace_file="$optarg"
833 --enable-gprof) gprof="yes"
835 --enable-gcov) gcov="yes"
839 LDFLAGS="-static $LDFLAGS"
840 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
842 --mandir=*) mandir="$optarg"
844 --bindir=*) bindir="$optarg"
846 --libdir=*) libdir="$optarg"
848 --libexecdir=*) libexecdir="$optarg"
850 --includedir=*) includedir="$optarg"
852 --datadir=*) datadir="$optarg"
854 --with-confsuffix=*) confsuffix="$optarg"
856 --docdir=*) qemu_docdir="$optarg"
858 --sysconfdir=*) sysconfdir="$optarg"
860 --localstatedir=*) local_statedir="$optarg"
862 --sbindir=*|--sharedstatedir=*|\
863 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
864 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
865 # These switches are silently ignored, for compatibility with
866 # autoconf-generated configure scripts. This allows QEMU's
867 # configure to be used by RPM and similar macros that set
868 # lots of directory switches by default.
870 --with-system-pixman) pixman="system"
872 --without-system-pixman) pixman="internal"
874 --without-pixman) pixman="none"
876 --disable-sdl) sdl="no"
878 --enable-sdl) sdl="yes"
880 --with-sdlabi=*) sdlabi="$optarg"
882 --disable-qom-cast-debug) qom_cast_debug="no"
884 --enable-qom-cast-debug) qom_cast_debug="yes"
886 --disable-virtfs) virtfs="no"
888 --enable-virtfs) virtfs="yes"
890 --disable-vnc) vnc="no"
892 --enable-vnc) vnc="yes"
894 --oss-lib=*) oss_lib="$optarg"
896 --audio-drv-list=*) audio_drv_list="$optarg"
898 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
900 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
902 --enable-debug-tcg) debug_tcg="yes"
904 --disable-debug-tcg) debug_tcg="no"
907 # Enable debugging options that aren't excessively noisy
913 --enable-sparse) sparse="yes"
915 --disable-sparse) sparse="no"
917 --disable-strip) strip_opt="no"
919 --disable-vnc-sasl) vnc_sasl="no"
921 --enable-vnc-sasl) vnc_sasl="yes"
923 --disable-vnc-jpeg) vnc_jpeg="no"
925 --enable-vnc-jpeg) vnc_jpeg="yes"
927 --disable-vnc-png) vnc_png="no"
929 --enable-vnc-png) vnc_png="yes"
931 --disable-slirp) slirp="no"
933 --disable-uuid) uuid="no"
935 --enable-uuid) uuid="yes"
937 --disable-vde) vde="no"
939 --enable-vde) vde="yes"
941 --disable-netmap) netmap="no"
943 --enable-netmap) netmap="yes"
945 --disable-xen) xen="no"
947 --enable-xen) xen="yes"
949 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
951 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
953 --disable-brlapi) brlapi="no"
955 --enable-brlapi) brlapi="yes"
957 --disable-bluez) bluez="no"
959 --enable-bluez) bluez="yes"
961 --disable-kvm) kvm="no"
963 --enable-kvm) kvm="yes"
965 --disable-hax) hax="no"
967 --enable-hax) hax="yes"
969 --disable-tcg-interpreter) tcg_interpreter="no"
971 --enable-tcg-interpreter) tcg_interpreter="yes"
973 --disable-cap-ng) cap_ng="no"
975 --enable-cap-ng) cap_ng="yes"
977 --disable-spice) spice="no"
979 --enable-spice) spice="yes"
981 --disable-libiscsi) libiscsi="no"
983 --enable-libiscsi) libiscsi="yes"
985 --disable-libnfs) libnfs="no"
987 --enable-libnfs) libnfs="yes"
989 --enable-profiler) profiler="yes"
991 --disable-cocoa) cocoa="no"
995 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
997 --disable-system) softmmu="no"
999 --enable-system) softmmu="yes"
1006 --disable-linux-user) linux_user="no"
1008 --enable-linux-user) linux_user="yes"
1010 --disable-bsd-user) bsd_user="no"
1012 --enable-bsd-user) bsd_user="yes"
1014 --enable-pie) pie="yes"
1016 --disable-pie) pie="no"
1020 force_werror="yes" ;
1022 --disable-werror) werror="no"
1024 --enable-stack-protector) stack_protector="yes"
1026 --disable-stack-protector) stack_protector="no"
1028 --disable-curses) curses="no"
1030 --enable-curses) curses="yes"
1032 --disable-curl) curl="no"
1034 --enable-curl) curl="yes"
1036 --disable-fdt) fdt="no"
1038 --enable-fdt) fdt="yes"
1040 --disable-linux-aio) linux_aio="no"
1042 --enable-linux-aio) linux_aio="yes"
1044 --disable-attr) attr="no"
1046 --enable-attr) attr="yes"
1048 --disable-blobs) blobs="no"
1050 --with-pkgversion=*) pkgversion=" ($optarg)"
1052 --with-coroutine=*) coroutine="$optarg"
1054 --disable-coroutine-pool) coroutine_pool="no"
1056 --enable-coroutine-pool) coroutine_pool="yes"
1058 --disable-docs) docs="no"
1060 --enable-docs) docs="yes"
1062 --disable-vhost-net) vhost_net="no"
1064 --enable-vhost-net) vhost_net="yes"
1066 --enable-efence) efence="yes"
1068 --disable-efence) efence="no"
1070 --enable-yagl) yagl="yes"
1072 --disable-yagl) yagl="no"
1074 --enable-yagl-stats) yagl_stats="yes"
1076 --disable-yagl-stats) yagl_stats="no"
1078 --enable-vigs) vigs="yes"
1080 --disable-vigs) vigs="no"
1082 --disable-vhost-scsi) vhost_scsi="no"
1084 --enable-vhost-scsi) vhost_scsi="yes"
1086 --disable-opengl) opengl="no"
1088 --enable-opengl) opengl="yes"
1090 --disable-rbd) rbd="no"
1092 --enable-rbd) rbd="yes"
1094 --disable-xfsctl) xfs="no"
1096 --enable-xfsctl) xfs="yes"
1098 --disable-smartcard) smartcard="no"
1100 --enable-smartcard) smartcard="yes"
1102 --disable-libusb) libusb="no"
1104 --enable-libusb) libusb="yes"
1106 --disable-libtizenusb) libtizenusb="no"
1108 --enable-libtizenusb) libtizenusb="yes"
1110 --disable-usb-redir) usb_redir="no"
1112 --enable-usb-redir) usb_redir="yes"
1114 --disable-zlib-test) zlib="no"
1116 --disable-lzo) lzo="no"
1118 --enable-lzo) lzo="yes"
1120 --disable-snappy) snappy="no"
1122 --enable-snappy) snappy="yes"
1124 --disable-bzip2) bzip2="no"
1126 --enable-bzip2) bzip2="yes"
1128 --enable-guest-agent) guest_agent="yes"
1130 --disable-guest-agent) guest_agent="no"
1132 --enable-guest-agent-msi) guest_agent_msi="yes"
1134 --disable-guest-agent-msi) guest_agent_msi="no"
1136 --with-vss-sdk) vss_win32_sdk=""
1138 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1140 --without-vss-sdk) vss_win32_sdk="no"
1142 --with-win-sdk) win_sdk=""
1144 --with-win-sdk=*) win_sdk="$optarg"
1146 --without-win-sdk) win_sdk="no"
1148 --enable-tools) want_tools="yes"
1150 --disable-tools) want_tools="no"
1152 --enable-seccomp) seccomp="yes"
1154 --disable-seccomp) seccomp="no"
1156 --disable-glusterfs) glusterfs="no"
1158 --enable-glusterfs) glusterfs="yes"
1160 --disable-archipelago) archipelago="no"
1162 --enable-archipelago) archipelago="yes"
1164 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1165 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1167 --disable-gtk) gtk="no"
1169 --enable-gtk) gtk="yes"
1171 --disable-gnutls) gnutls="no"
1173 --enable-gnutls) gnutls="yes"
1175 --disable-nettle) nettle="no"
1177 --enable-nettle) nettle="yes"
1179 --disable-gcrypt) gcrypt="no"
1181 --enable-gcrypt) gcrypt="yes"
1183 --enable-rdma) rdma="yes"
1185 --disable-rdma) rdma="no"
1187 --with-gtkabi=*) gtkabi="$optarg"
1189 --disable-vte) vte="no"
1191 --enable-vte) vte="yes"
1193 --disable-virglrenderer) virglrenderer="no"
1195 --enable-virglrenderer) virglrenderer="yes"
1197 --disable-tpm) tpm="no"
1199 --enable-tpm) tpm="yes"
1201 --disable-libssh2) libssh2="no"
1203 --enable-libssh2) libssh2="yes"
1205 --enable-vhdx) vhdx="yes"
1207 --disable-vhdx) vhdx="no"
1209 --disable-numa) numa="no"
1211 --enable-numa) numa="yes"
1213 --disable-tcmalloc) tcmalloc="no"
1215 --enable-tcmalloc) tcmalloc="yes"
1217 --disable-jemalloc) jemalloc="no"
1219 --enable-jemalloc) jemalloc="yes"
1222 --enable-maru) maru="yes"
1224 --winver=*) winver="$optarg"
1226 --enable-java-ui) java_ui="yes"
1228 --enable-shm) shm="yes"
1230 --enable-libav) libav="yes"
1232 --disable-libav) libav="no"
1234 --enable-libpng) libpng="yes"
1236 --enable-dxva2) dxva2="yes"
1238 --disable-dxva2) dxva2="no"
1240 --enable-vaapi) vaapi="yes"
1242 --disable-vaapi) vaapi="no"
1244 --disable-qt) qt="no"
1246 --enable-qt) qt="yes"
1248 --extension-path=*) extension_path="$optarg"
1252 echo "ERROR: unknown option $opt"
1253 echo "Try '$0 --help' for more information"
1259 if ! has $python; then
1260 error_exit "Python not found. Use --python=/path/to/python"
1263 # Note that if the Python conditional here evaluates True we will exit
1264 # with status 1 which is a shell 'false' value.
1265 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1266 error_exit "Cannot use '$python', Python 2.6 or later is required." \
1267 "Note that Python 3 or later is not yet supported." \
1268 "Use --python=/path/to/python to specify a supported Python."
1271 # Suppress writing compiled files
1277 LDFLAGS="-m32 $LDFLAGS"
1281 LDFLAGS="-m64 $LDFLAGS"
1284 LDFLAGS="-m32 $LDFLAGS"
1285 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1288 LDFLAGS="-m64 $LDFLAGS"
1289 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1293 LDFLAGS="-m31 $LDFLAGS"
1297 LDFLAGS="-m64 $LDFLAGS"
1301 LDFLAGS="-m32 $LDFLAGS"
1302 cc_i386='$(CC) -m32'
1306 LDFLAGS="-m64 $LDFLAGS"
1307 cc_i386='$(CC) -m32'
1311 LDFLAGS="-mx32 $LDFLAGS"
1312 cc_i386='$(CC) -m32'
1314 # No special flags required for other host CPUs
1317 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1318 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1320 default_target_list=""
1324 if [ "$softmmu" = "yes" ]; then
1325 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1327 if [ "$linux_user" = "yes" ]; then
1328 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1330 if [ "$bsd_user" = "yes" ]; then
1331 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1334 for config in $mak_wilds; do
1335 default_target_list="${default_target_list} $(basename "$config" .mak)"
1338 if test x"$show_help" = x"yes" ; then
1341 Usage: configure [options]
1342 Options: [defaults in brackets after descriptions]
1345 --help print this message
1346 --prefix=PREFIX install in PREFIX [$prefix]
1347 --interp-prefix=PREFIX where to find shared libraries, etc.
1348 use %M for cpu name [$interp_prefix]
1349 --target-list=LIST set target list (default: build everything)
1350 $(echo Available targets: $default_target_list | \
1351 fold -s -w 53 | sed -e 's/^/ /')
1353 Advanced options (experts only):
1354 --source-path=PATH path of source code [$source_path]
1355 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1356 --cc=CC use C compiler CC [$cc]
1357 --iasl=IASL use ACPI compiler IASL [$iasl]
1358 --host-cc=CC use C compiler CC [$host_cc] for code run at
1360 --cxx=CXX use C++ compiler CXX [$cxx]
1361 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1362 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1363 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1364 --make=MAKE use specified make [$make]
1365 --install=INSTALL use specified install [$install]
1366 --python=PYTHON use specified python [$python]
1367 --smbd=SMBD use specified smbd [$smbd]
1368 --static enable static build [$static]
1369 --mandir=PATH install man pages in PATH
1370 --datadir=PATH install firmware in PATH$confsuffix
1371 --docdir=PATH install documentation in PATH$confsuffix
1372 --bindir=PATH install binaries in PATH
1373 --libdir=PATH install libraries in PATH
1374 --sysconfdir=PATH install config in PATH$confsuffix
1375 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1376 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1377 --enable-debug enable common debug build options
1378 --disable-strip disable stripping binaries
1379 --disable-werror disable compilation abort on warning
1380 --disable-stack-protector disable compiler-provided stack protection
1381 --audio-drv-list=LIST set audio drivers list:
1382 Available drivers: $audio_possible_drivers
1383 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1384 --block-drv-rw-whitelist=L
1385 set block driver read-write whitelist
1386 (affects only QEMU, not qemu-img)
1387 --block-drv-ro-whitelist=L
1388 set block driver read-only whitelist
1389 (affects only QEMU, not qemu-img)
1390 --enable-trace-backends=B Set trace backend
1391 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1392 --with-trace-file=NAME Full PATH,NAME of file to store traces
1394 --disable-slirp disable SLIRP userspace network connectivity
1395 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1396 --oss-lib path to OSS library
1397 --cpu=CPU Build for host CPU [$cpu]
1398 --with-coroutine=BACKEND coroutine backend. Supported options:
1399 gthread, ucontext, sigaltstack, windows
1400 --enable-gcov enable test coverage analysis with gcov
1401 --gcov=GCOV use specified gcov [$gcov_tool]
1402 --disable-blobs disable installing provided firmware blobs
1403 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1404 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1406 Optional features, enabled with --enable-FEATURE and
1407 disabled with --disable-FEATURE, default is enabled if available:
1409 system all system emulation targets
1410 user supported user emulation targets
1411 linux-user all linux usermode emulation targets
1412 bsd-user all BSD usermode emulation targets
1413 docs build documentation
1414 guest-agent build the QEMU Guest Agent
1415 guest-agent-msi build guest agent Windows MSI installation package
1416 pie Position Independent Executables
1417 modules modules support
1418 debug-tcg TCG debugging (default is disabled)
1419 debug-info debugging information
1420 sparse sparse checker
1422 gnutls GNUTLS cryptography support
1423 nettle nettle cryptography support
1424 gcrypt libgcrypt cryptography support
1426 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1428 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1429 vte vte support for the gtk UI
1432 vnc-sasl SASL encryption for VNC server
1433 vnc-jpeg JPEG lossy compression for VNC server
1434 vnc-png PNG compression for VNC server
1435 cocoa Cocoa UI (Mac OS X only)
1437 xen xen backend driver support
1439 brlapi BrlAPI (Braile)
1440 curl curl connectivity
1442 bluez bluez stack connectivity
1443 kvm KVM acceleration support
1444 rdma RDMA-based migration support
1446 vde support for vde network
1447 netmap support for netmap network
1448 linux-aio Linux AIO support
1449 cap-ng libcap-ng support
1450 attr attr and xattr support
1451 vhost-net vhost-net acceleration support
1453 rbd rados block device (rbd)
1454 libiscsi iscsi support
1456 smartcard smartcard support (libcacard)
1457 libusb libusb (for usb passthrough)
1458 usb-redir usb network redirection support
1459 lzo support of lzo compression library
1460 snappy support of snappy compression library
1461 bzip2 support of bzip2 compression library
1462 (for reading bzip2-compressed dmg images)
1463 seccomp seccomp support
1464 coroutine-pool coroutine freelist (better performance)
1465 glusterfs GlusterFS backend
1466 archipelago Archipelago backend
1468 libssh2 ssh block device support
1469 vhdx support for the Microsoft VHDX image format
1470 numa libnuma support
1471 tcmalloc tcmalloc support
1472 jemalloc jemalloc support
1474 hax HAX acceleration support
1476 yagl-stats YaGL stats
1480 --enable-maru enable maru board
1481 --winver=WINVER set WINVER
1482 --enable-java-ui enable java UI
1483 --enable-shm enable shared memory for framebuffer
1484 --enable-libav enable libav library
1485 --disable-libav disable libav library
1486 --enable-libpng enable png library
1487 --enable-dxva2 enable dxva2 support
1488 --disable-dxva2 disable dxva2 support
1489 --ensable-vaapi enable vaapi support
1490 --disable-vaapi disable vaapi support
1491 --extension-path=PATH set extension path
1493 NOTE: The object files are built at the place where configure is launched
1498 # Now we have handled --enable-tcg-interpreter and know we're not just
1499 # printing the help message, bail out if the host CPU isn't supported.
1500 if test "$ARCH" = "unknown"; then
1501 if test "$tcg_interpreter" = "yes" ; then
1502 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1505 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1509 # Consult white-list to determine whether to enable werror
1510 # by default. Only enable by default for git builds
1511 z_version=`cut -f3 -d. $source_path/VERSION`
1513 if test -z "$werror" ; then
1514 if test -d "$source_path/.git" -a \
1515 "$linux" = "yes" ; then
1522 # check that the C compiler works.
1524 if compile_object ; then
1525 : C compiler works ok
1527 error_exit "\"$cc\" either does not exist or does not work"
1529 if ! compile_prog ; then
1530 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1533 # Check that the C++ compiler exists and works with the C compiler
1536 int c_function(void);
1537 int main(void) { return c_function(); }
1544 int c_function(void);
1546 int c_function(void) { return 42; }
1551 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1552 # C++ compiler $cxx works ok with C compiler $cc
1555 echo "C++ compiler $cxx does not work with C compiler $cc"
1556 echo "Disabling C++ specific optional code"
1560 echo "No C++ compiler available; disabling C++ specific optional code"
1564 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1565 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1566 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1567 gcc_flags="-Wendif-labels $gcc_flags"
1568 gcc_flags="-Wno-initializer-overrides $gcc_flags"
1569 gcc_flags="-Wno-string-plus-int $gcc_flags"
1570 # Note that we do not add -Werror to gcc_flags here, because that would
1571 # enable it for all configure tests. If a configure test failed due
1572 # to -Werror this would just silently disable some features,
1573 # so it's too error prone.
1575 cc_has_warning_flag() {
1578 # Use the positive sense of the flag when testing for -Wno-wombat
1579 # support (gcc will happily accept the -Wno- form of unknown
1581 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1582 compile_prog "-Werror $optflag" ""
1585 for flag in $gcc_flags; do
1586 if cc_has_warning_flag $flag ; then
1587 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1591 if test "$stack_protector" != "no"; then
1593 int main(int argc, char *argv[])
1595 char arr[64], *p = arr, *c = argv[0];
1602 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1604 for flag in $gcc_flags; do
1605 # We need to check both a compile and a link, since some compiler
1606 # setups fail only on a .c->.o compile and some only at link time
1607 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1608 compile_prog "-Werror $flag" ""; then
1609 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1610 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
1615 if test "$stack_protector" = yes; then
1616 if test $sp_on = 0; then
1617 error_exit "Stack protector not supported"
1622 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1623 # large functions that use global variables. The bug is in all releases of
1624 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1625 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1627 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1628 int main(void) { return 0; }
1630 #error No bug in this compiler.
1633 if compile_prog "-Werror -fno-gcse" "" ; then
1634 TRANSLATE_OPT_CFLAGS=-fno-gcse
1637 if test "$static" = "yes" ; then
1638 if test "$modules" = "yes" ; then
1639 error_exit "static and modules are mutually incompatible"
1641 if test "$pie" = "yes" ; then
1642 error_exit "static and pie are mutually incompatible"
1648 # Unconditional check for compiler __thread support
1650 static __thread int tls_var;
1651 int main(void) { return tls_var; }
1654 if ! compile_prog "-Werror" "" ; then
1656 error_exit "Your compiler does not support the __thread specifier for " \
1657 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1660 if test "$pie" = ""; then
1661 case "$cpu-$targetos" in
1662 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1670 if test "$pie" != "no" ; then
1674 # define THREAD __thread
1679 static THREAD int tls_var;
1681 int main(void) { return tls_var; }
1684 if compile_prog "-fPIE -DPIE" "-pie"; then
1685 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1686 LDFLAGS="-pie $LDFLAGS"
1688 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1689 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1692 if test "$pie" = "yes"; then
1693 error_exit "PIE not available due to missing toolchain support"
1695 echo "Disabling PIE due to missing toolchain support"
1700 if compile_prog "-Werror -fno-pie" "-nopie"; then
1701 CFLAGS_NOPIE="-fno-pie"
1702 LDFLAGS_NOPIE="-nopie"
1706 # check for broken gcc and libtool in RHEL5
1707 if test -n "$libtool" -a "$pie" != "no" ; then
1710 void *f(unsigned char *buf, int len);
1711 void *g(unsigned char *buf, int len);
1714 f(unsigned char *buf, int len)
1720 g(unsigned char *buf, int len)
1726 if ! libtool_prog; then
1727 echo "Disabling libtool due to broken toolchain support"
1732 ##########################################
1733 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1734 # use i686 as default anyway, but for those that don't, an explicit
1735 # specification is necessary
1737 if test "$cpu" = "i386"; then
1739 static int sfaa(int *ptr)
1741 return __sync_fetch_and_and(ptr, 0);
1747 val = __sync_val_compare_and_swap(&val, 0, 1);
1752 if ! compile_prog "" "" ; then
1753 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1757 #########################################
1758 # Solaris specific configure tool chain decisions
1760 if test "$solaris" = "yes" ; then
1761 if has $install; then
1764 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1765 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1766 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1768 if test "`path_of $install`" = "/usr/sbin/install" ; then
1769 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1770 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1771 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1776 if test -f /usr/ccs/bin/ar ; then
1777 error_exit "No path includes ar" \
1778 "Add /usr/ccs/bin to your path and rerun configure"
1780 error_exit "No path includes ar"
1784 if test -z "${target_list+xxx}" ; then
1785 target_list="$default_target_list"
1787 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1790 # Check that we recognised the target name; this allows a more
1791 # friendly error message than if we let it fall through.
1792 for target in $target_list; do
1793 case " $default_target_list " in
1797 error_exit "Unknown target name '$target'"
1802 # see if system emulation was really requested
1803 case " $target_list " in
1804 *"-softmmu "*) softmmu=yes
1810 feature_not_found() {
1814 error_exit "User requested feature $feature" \
1815 "configure was not able to find it." \
1820 # big/little endian test
1822 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1823 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1824 extern int foo(short *, short *);
1825 int main(int argc, char *argv[]) {
1826 return foo(big_endian, little_endian);
1830 if compile_object ; then
1831 if grep -q BiGeNdIaN $TMPO ; then
1833 elif grep -q LiTtLeEnDiAn $TMPO ; then
1836 echo big/little test failed
1839 echo big/little test failed
1842 ##########################################
1843 # cocoa implies not SDL or GTK
1844 # (the cocoa UI code currently assumes it is always the active UI
1845 # and doesn't interact well with other UI frontend code)
1846 if test "$cocoa" = "yes"; then
1847 if test "$sdl" = "yes"; then
1848 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1850 if test "$gtk" = "yes"; then
1851 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1857 ##########################################
1861 #include <sys/socket.h>
1862 #include <linux/ip.h>
1863 int main(void) { return sizeof(struct mmsghdr); }
1865 if compile_prog "" "" ; then
1871 ##########################################
1872 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1874 if test "$mingw32" = "yes"; then
1875 # Some versions of MinGW / Mingw-w64 lack localtime_r
1876 # and gmtime_r entirely.
1878 # Some versions of Mingw-w64 define a macro for
1879 # localtime_r/gmtime_r.
1881 # Some versions of Mingw-w64 will define functions
1882 # for localtime_r/gmtime_r, but only if you have
1883 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1884 # though, unistd.h and pthread.h both define
1887 # So this #undef localtime_r and #include <unistd.h>
1888 # are not in fact redundant.
1893 int main(void) { localtime_r(NULL, NULL); return 0; }
1895 if compile_prog "" "" ; then
1902 ##########################################
1905 if ! has "$pkg_config_exe"; then
1906 error_exit "pkg-config binary '$pkg_config_exe' not found"
1909 ##########################################
1912 if test "$linux_user" = "yes"; then
1915 #include <linux/futex.h>
1917 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1923 if ! compile_object ; then
1924 feature_not_found "nptl" "Install glibc and linux kernel headers."
1928 ##########################################
1931 if test "$zlib" != "no" ; then
1934 int main(void) { zlibVersion(); return 0; }
1936 if compile_prog "" "-lz" ; then
1939 error_exit "zlib check failed" \
1940 "Make sure to have the zlib libs and headers installed."
1945 ##########################################
1948 if test "$lzo" != "no" ; then
1950 #include <lzo/lzo1x.h>
1951 int main(void) { lzo_version(); return 0; }
1953 if compile_prog "" "-llzo2" ; then
1954 libs_softmmu="$libs_softmmu -llzo2"
1957 if test "$lzo" = "yes"; then
1958 feature_not_found "liblzo2" "Install liblzo2 devel"
1964 ##########################################
1967 if test "$snappy" != "no" ; then
1969 #include <snappy-c.h>
1970 int main(void) { snappy_max_compressed_length(4096); return 0; }
1972 if compile_prog "" "-lsnappy" ; then
1973 libs_softmmu="$libs_softmmu -lsnappy"
1976 if test "$snappy" = "yes"; then
1977 feature_not_found "libsnappy" "Install libsnappy devel"
1983 ##########################################
1986 if test "$bzip2" != "no" ; then
1989 int main(void) { BZ2_bzlibVersion(); return 0; }
1991 if compile_prog "" "-lbz2" ; then
1994 if test "$bzip2" = "yes"; then
1995 feature_not_found "libbzip2" "Install libbzip2 devel"
2001 ##########################################
2004 if test "$seccomp" != "no" ; then
2007 libseccomp_minver="2.1.0"
2010 libseccomp_minver="2.2.3"
2013 libseccomp_minver=""
2017 if test "$libseccomp_minver" != "" &&
2018 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
2019 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
2020 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
2023 if test "$seccomp" = "yes" ; then
2024 if test "$libseccomp_minver" != "" ; then
2025 feature_not_found "libseccomp" \
2026 "Install libseccomp devel >= $libseccomp_minver"
2028 feature_not_found "libseccomp" \
2029 "libseccomp is not supported for host cpu $cpu"
2035 ##########################################
2038 if test "$xen" != "no" ; then
2039 xen_libs="-lxenstore -lxenctrl -lxenguest"
2041 # First we test whether Xen headers and libraries are available.
2042 # If no, we are done and there is no Xen support.
2043 # If yes, more tests are run to detect the Xen version.
2047 #include <xenctrl.h>
2052 if ! compile_prog "" "$xen_libs" ; then
2054 if test "$xen" = "yes" ; then
2055 feature_not_found "xen" "Install xen devel"
2061 cat > $TMPC <<EOF &&
2062 #include <xenctrl.h>
2065 xc_interface *xc = NULL;
2066 xen_domain_handle_t handle;
2067 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2071 compile_prog "" "$xen_libs"
2073 xen_ctrl_version=470
2078 cat > $TMPC <<EOF &&
2079 #include <xenctrl.h>
2080 #include <xenstore.h>
2082 #include <xen/hvm/hvm_info_table.h>
2083 #if !defined(HVM_MAX_VCPUS)
2084 # error HVM_MAX_VCPUS not defined
2089 xc = xc_interface_open(0, 0, 0);
2090 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2091 xc_gnttab_open(NULL, 0);
2092 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2093 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2094 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2095 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2099 compile_prog "" "$xen_libs"
2101 xen_ctrl_version=460
2106 cat > $TMPC <<EOF &&
2107 #include <xenctrl.h>
2108 #include <xenstore.h>
2110 #include <xen/hvm/hvm_info_table.h>
2111 #if !defined(HVM_MAX_VCPUS)
2112 # error HVM_MAX_VCPUS not defined
2117 xc = xc_interface_open(0, 0, 0);
2118 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2119 xc_gnttab_open(NULL, 0);
2120 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2121 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2122 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2126 compile_prog "" "$xen_libs"
2128 xen_ctrl_version=450
2132 cat > $TMPC <<EOF &&
2133 #include <xenctrl.h>
2134 #include <xenstore.h>
2136 #include <xen/hvm/hvm_info_table.h>
2137 #if !defined(HVM_MAX_VCPUS)
2138 # error HVM_MAX_VCPUS not defined
2143 xc = xc_interface_open(0, 0, 0);
2144 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2145 xc_gnttab_open(NULL, 0);
2146 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2147 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2151 compile_prog "" "$xen_libs"
2153 xen_ctrl_version=420
2157 cat > $TMPC <<EOF &&
2158 #include <xenctrl.h>
2161 #include <xen/hvm/hvm_info_table.h>
2162 #if !defined(HVM_MAX_VCPUS)
2163 # error HVM_MAX_VCPUS not defined
2167 xc_interface_open(0, 0, 0);
2168 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2169 xc_gnttab_open(NULL, 0);
2170 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2174 compile_prog "" "$xen_libs"
2176 xen_ctrl_version=410
2181 cat > $TMPC <<EOF &&
2182 #include <xenctrl.h>
2185 #include <xen/hvm/hvm_info_table.h>
2186 #if !defined(HVM_MAX_VCPUS)
2187 # error HVM_MAX_VCPUS not defined
2190 struct xen_add_to_physmap xatp = {
2191 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2194 xc_interface_open();
2196 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2197 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2201 compile_prog "" "$xen_libs"
2203 xen_ctrl_version=400
2208 cat > $TMPC <<EOF &&
2209 #include <xenctrl.h>
2212 struct xen_add_to_physmap xatp = {
2213 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2216 xc_interface_open();
2218 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2219 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2223 compile_prog "" "$xen_libs"
2225 xen_ctrl_version=340
2230 cat > $TMPC <<EOF &&
2231 #include <xenctrl.h>
2235 xc_interface_open();
2237 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2241 compile_prog "" "$xen_libs"
2243 xen_ctrl_version=330
2246 # Xen version unsupported
2248 if test "$xen" = "yes" ; then
2249 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2254 if test "$xen" = yes; then
2255 libs_softmmu="$xen_libs $libs_softmmu"
2259 if test "$xen_pci_passthrough" != "no"; then
2260 if test "$xen" = "yes" && test "$linux" = "yes" &&
2261 test "$xen_ctrl_version" -ge 340; then
2262 xen_pci_passthrough=yes
2264 if test "$xen_pci_passthrough" = "yes"; then
2265 if test "$xen_ctrl_version" -lt 340; then
2266 error_exit "User requested feature Xen PCI Passthrough" \
2267 "This feature does not work with Xen 3.3"
2269 error_exit "User requested feature Xen PCI Passthrough" \
2270 " but this feature requires /sys from Linux"
2272 xen_pci_passthrough=no
2276 ##########################################
2279 if ! has $libtool; then
2283 # MacOSX ships with a libtool which isn't the GNU one; weed this
2284 # out by checking whether libtool supports the --version switch
2285 if test -n "$libtool"; then
2286 if ! "$libtool" --version >/dev/null 2>&1; then
2291 ##########################################
2293 if test "$sparse" != "no" ; then
2297 if test "$sparse" = "yes" ; then
2298 feature_not_found "sparse" "Install sparse binary"
2304 ##########################################
2308 if $pkg_config --exists "x11"; then
2309 x11_cflags=`$pkg_config --cflags x11`
2310 x11_libs=`$pkg_config --libs x11`
2313 ##########################################
2316 if test "$gtkabi" = ""; then
2317 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2318 # Use 3.0 as a fallback if that is available.
2319 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2321 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2328 if test "$gtk" != "no"; then
2329 gtkpackage="gtk+-$gtkabi"
2330 gtkx11package="gtk+-x11-$gtkabi"
2331 if test "$gtkabi" = "3.0" ; then
2336 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2337 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2338 gtk_libs=`$pkg_config --libs $gtkpackage`
2339 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2340 gtk_cflags="$gtk_cflags $x11_cflags"
2341 gtk_libs="$gtk_libs $x11_libs"
2343 libs_softmmu="$gtk_libs $libs_softmmu"
2345 elif test "$gtk" = "yes"; then
2346 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2353 ##########################################
2357 # Unfortunately some distros have bad pkg-config information for gnutls
2358 # such that it claims to exist but you get a compiler error if you try
2359 # to use the options returned by --libs. Specifically, Ubuntu for --static
2360 # builds doesn't work:
2361 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2363 # So sanity check the cflags/libs before assuming gnutls can be used.
2364 if ! $pkg_config --exists "gnutls"; then
2369 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2374 if test "$gnutls" != "no"; then
2375 if gnutls_works; then
2376 gnutls_cflags=`$pkg_config --cflags gnutls`
2377 gnutls_libs=`$pkg_config --libs gnutls`
2378 libs_softmmu="$gnutls_libs $libs_softmmu"
2379 libs_tools="$gnutls_libs $libs_tools"
2380 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2383 # gnutls_hash_init requires >= 2.9.10
2384 if $pkg_config --exists "gnutls >= 2.9.10"; then
2390 if $pkg_config --exists 'gnutls >= 3.0'; then
2393 elif $pkg_config --exists 'gnutls >= 2.12'; then
2394 case `$pkg_config --libs --static gnutls` in
2412 elif test "$gnutls" = "yes"; then
2413 feature_not_found "gnutls" "Install gnutls devel"
2423 # If user didn't give a --disable/enable-gcrypt flag,
2424 # then mark as disabled if user requested nettle
2425 # explicitly, or if gnutls links to nettle
2426 if test -z "$gcrypt"
2428 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2434 # If user didn't give a --disable/enable-nettle flag,
2435 # then mark as disabled if user requested gcrypt
2436 # explicitly, or if gnutls links to gcrypt
2437 if test -z "$nettle"
2439 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2445 has_libgcrypt_config() {
2446 if ! has "libgcrypt-config"
2451 if test -n "$cross_prefix"
2453 host=`libgcrypt-config --host`
2454 if test "$host-" != $cross_prefix
2463 if test "$gcrypt" != "no"; then
2464 if has_libgcrypt_config; then
2465 gcrypt_cflags=`libgcrypt-config --cflags`
2466 gcrypt_libs=`libgcrypt-config --libs`
2467 # Debian has remove -lgpg-error from libgcrypt-config
2468 # as it "spreads unnecessary dependencies" which in
2469 # turn breaks static builds...
2470 if test "$static" = "yes"
2472 gcrypt_libs="$gcrypt_libs -lgpg-error"
2474 libs_softmmu="$gcrypt_libs $libs_softmmu"
2475 libs_tools="$gcrypt_libs $libs_tools"
2476 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2478 if test -z "$nettle"; then
2482 if test "$gcrypt" = "yes"; then
2483 feature_not_found "gcrypt" "Install gcrypt devel"
2491 if test "$nettle" != "no"; then
2492 if $pkg_config --exists "nettle"; then
2493 nettle_cflags=`$pkg_config --cflags nettle`
2494 nettle_libs=`$pkg_config --libs nettle`
2495 nettle_version=`$pkg_config --modversion nettle`
2496 libs_softmmu="$nettle_libs $libs_softmmu"
2497 libs_tools="$nettle_libs $libs_tools"
2498 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2501 if test "$nettle" = "yes"; then
2502 feature_not_found "nettle" "Install nettle devel"
2509 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2511 error_exit "Only one of gcrypt & nettle can be enabled"
2514 ##########################################
2515 # libtasn1 - only for the TLS creds/session test suite
2520 if $pkg_config --exists "libtasn1"; then
2521 tasn1_cflags=`$pkg_config --cflags libtasn1`
2522 tasn1_libs=`$pkg_config --libs libtasn1`
2528 ##########################################
2531 if test "$vte" != "no"; then
2532 if test "$gtkabi" = "3.0"; then
2533 vtepackage="vte-2.90"
2539 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2540 vte_cflags=`$pkg_config --cflags $vtepackage`
2541 vte_libs=`$pkg_config --libs $vtepackage`
2542 libs_softmmu="$vte_libs $libs_softmmu"
2544 elif test "$vte" = "yes"; then
2545 if test "$gtkabi" = "3.0"; then
2546 feature_not_found "vte" "Install libvte-2.90 devel"
2548 feature_not_found "vte" "Install libvte devel"
2555 ##########################################
2559 if test "$qt" != "no"; then
2560 if test "$qtabi" = "5.0" ; then
2561 qtpackage="Qt5Widgets Qt5OpenGL Qt5Gui"
2564 if $pkg_config --exists "$qtpackage >= $qtversion"; then
2565 qt_cflags=`$pkg_config --cflags $qtpackage`
2566 qt_libs=`$pkg_config --libs $qtpackage`
2568 if test "$mingw32" = "yes" ; then
2569 libs_softmmu="$qt_libs -mwindows $libs_softmmu"
2570 elif test "$darwin" = "yes" ; then
2571 libs_softmmu="$qt_libs $libs_softmmu"
2573 libs_softmmu="$qt_libs $x11_libs $libs_softmmu"
2576 qt_cflags_private=`pkg-config --modversion Qt5Gui`
2577 if test "$darwin" = "yes" ; then
2578 qt_cflags_private=`pkg-config --cflags Qt5Gui | sed "s,QtGui.framework/Headers,&/$qt_cflags_private/QtGui,g"`
2580 qt_cflags_private=`pkg-config --cflags Qt5Gui | sed "s,QtGui,&/$qt_cflags_private/QtGui,g"`
2583 qt_cflags="$qt_cflags $qt_cflags_private"
2584 if test "$mingw32" = "no" ; then
2585 qt_cflags="$qt_cflags -fPIC"
2588 elif test "$qt" = "yes"; then
2589 feature_not_found "qt" "Install qt devel"
2598 ##########################################
2601 # Look for sdl configuration program (pkg-config or sdl-config). Try
2602 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2604 if test $sdlabi = "2.0"; then
2605 sdl_config=$sdl2_config
2607 sdlconfigname=sdl2_config
2610 sdlconfigname=sdl_config
2613 if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2614 sdl_config=$sdlconfigname
2617 if $pkg_config $sdlname --exists; then
2618 sdlconfig="$pkg_config $sdlname"
2619 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2620 elif has ${sdl_config}; then
2621 sdlconfig="$sdl_config"
2622 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2624 if test "$sdl" = "yes" ; then
2625 feature_not_found "sdl" "Install SDL devel"
2629 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2630 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2634 if test "$sdl" != "no" ; then
2637 #undef main /* We don't want SDL to override our main() */
2638 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2640 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2641 if test "$static" = "yes" ; then
2642 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2644 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2646 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2647 if test "$_sdlversion" -lt 121 ; then
2653 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2654 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2655 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2656 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2657 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2659 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2665 else # sdl not found
2666 if test "$sdl" = "yes" ; then
2667 feature_not_found "sdl" "Install SDL devel"
2670 fi # sdl compile test
2673 if test "$sdl" = "yes" ; then
2676 #if defined(SDL_VIDEO_DRIVER_X11)
2677 #include <X11/XKBlib.h>
2679 #error No x11 support
2681 int main(void) { return 0; }
2683 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2684 sdl_cflags="$sdl_cflags $x11_cflags"
2685 sdl_libs="$sdl_libs $x11_libs"
2687 libs_softmmu="$sdl_libs $libs_softmmu"
2690 ##########################################
2691 # RDMA needs OpenFabrics libraries
2692 if test "$rdma" != "no" ; then
2694 #include <rdma/rdma_cma.h>
2695 int main(void) { return 0; }
2697 rdma_libs="-lrdmacm -libverbs"
2698 if compile_prog "" "$rdma_libs" ; then
2700 libs_softmmu="$libs_softmmu $rdma_libs"
2702 if test "$rdma" = "yes" ; then
2704 " OpenFabrics librdmacm/libibverbs not present." \
2706 " (1) Fast: Install infiniband packages from your distro." \
2707 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2708 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2715 ##########################################
2716 # VNC SASL detection
2717 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2719 #include <sasl/sasl.h>
2721 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2723 # Assuming Cyrus-SASL installed in /usr prefix
2725 vnc_sasl_libs="-lsasl2"
2726 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2728 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2729 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2731 if test "$vnc_sasl" = "yes" ; then
2732 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2738 ##########################################
2739 # VNC JPEG detection
2740 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2743 #include <jpeglib.h>
2744 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2747 vnc_jpeg_libs="-ljpeg"
2748 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2750 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2751 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2753 if test "$vnc_jpeg" = "yes" ; then
2754 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2760 ##########################################
2762 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2764 //#include <stdio.h>
2768 png_structp png_ptr;
2769 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2770 return png_ptr != 0;
2773 if $pkg_config libpng --exists; then
2774 vnc_png_cflags=`$pkg_config libpng --cflags`
2775 vnc_png_libs=`$pkg_config libpng --libs`
2778 vnc_png_libs="-lpng"
2780 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2782 libs_softmmu="$vnc_png_libs $libs_softmmu"
2783 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2785 if test "$vnc_png" = "yes" ; then
2786 feature_not_found "vnc-png" "Install libpng devel"
2792 ##########################################
2793 # fnmatch() probe, used for ACL routines
2796 #include <fnmatch.h>
2799 fnmatch("foo", "foo", 0);
2803 if compile_prog "" "" ; then
2807 ##########################################
2808 # uuid_generate() probe, used for vdi block driver
2809 # Note that on some systems (notably MacOSX) no extra library
2810 # need be linked to get the uuid functions.
2811 if test "$uuid" != "no" ; then
2814 #include <uuid/uuid.h>
2818 uuid_generate(my_uuid);
2822 if compile_prog "" "" ; then
2824 elif compile_prog "" "$uuid_libs" ; then
2826 libs_softmmu="$uuid_libs $libs_softmmu"
2827 libs_tools="$uuid_libs $libs_tools"
2829 if test "$uuid" = "yes" ; then
2830 feature_not_found "uuid" "Install libuuid devel"
2836 if test "$vhdx" = "yes" ; then
2837 if test "$uuid" = "no" ; then
2838 error_exit "uuid required for VHDX support"
2840 elif test "$vhdx" != "no" ; then
2841 if test "$uuid" = "yes" ; then
2848 ##########################################
2849 # xfsctl() probe, used for raw-posix
2850 if test "$xfs" != "no" ; then
2852 #include <stddef.h> /* NULL */
2853 #include <xfs/xfs.h>
2856 xfsctl(NULL, 0, 0, NULL);
2860 if compile_prog "" "" ; then
2863 if test "$xfs" = "yes" ; then
2864 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2870 ##########################################
2871 # vde libraries probe
2872 if test "$vde" != "no" ; then
2873 vde_libs="-lvdeplug"
2875 #include <libvdeplug.h>
2878 struct vde_open_args a = {0, 0, 0};
2884 if compile_prog "" "$vde_libs" ; then
2886 libs_softmmu="$vde_libs $libs_softmmu"
2887 libs_tools="$vde_libs $libs_tools"
2889 if test "$vde" = "yes" ; then
2890 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2896 ##########################################
2897 # netmap support probe
2898 # Apart from looking for netmap headers, we make sure that the host API version
2899 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2900 # a minor/major version number. Minor new features will be marked with values up
2901 # to 15, and if something happens that requires a change to the backend we will
2902 # move above 15, submit the backend fixes and modify this two bounds.
2903 if test "$netmap" != "no" ; then
2905 #include <inttypes.h>
2907 #include <net/netmap.h>
2908 #include <net/netmap_user.h>
2909 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2912 int main(void) { return 0; }
2914 if compile_prog "" "" ; then
2917 if test "$netmap" = "yes" ; then
2918 feature_not_found "netmap"
2924 ##########################################
2925 # libcap-ng library probe
2926 if test "$cap_ng" != "no" ; then
2932 capng_capability_to_name(CAPNG_EFFECTIVE);
2936 if compile_prog "" "$cap_libs" ; then
2938 libs_tools="$cap_libs $libs_tools"
2940 if test "$cap_ng" = "yes" ; then
2941 feature_not_found "cap_ng" "Install libcap-ng devel"
2947 ##########################################
2948 # Sound support libraries probe
2959 int main(void) { $exp }
2961 if compile_prog "$cfl" "$lib" ; then
2964 error_exit "$drv check failed" \
2965 "Make sure to have the $drv libs and headers installed."
2969 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2970 for drv in $audio_drv_list; do
2973 audio_drv_probe $drv alsa/asoundlib.h -lasound \
2974 "return snd_pcm_close((snd_pcm_t *)0);"
2975 libs_softmmu="-lasound $libs_softmmu"
2979 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2980 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2981 libs_softmmu="-lpulse $libs_softmmu"
2986 libs_softmmu="-framework CoreAudio $libs_softmmu"
2990 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2995 libs_softmmu="$oss_lib $libs_softmmu"
2999 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
3003 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
3004 error_exit "Unknown driver '$drv' selected" \
3005 "Possible drivers are: $audio_possible_drivers"
3011 ##########################################
3014 if test "$brlapi" != "no" ; then
3015 brlapi_libs="-lbrlapi"
3019 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3021 if compile_prog "" "$brlapi_libs" ; then
3023 libs_softmmu="$brlapi_libs $libs_softmmu"
3025 if test "$brlapi" = "yes" ; then
3026 feature_not_found "brlapi" "Install brlapi devel"
3032 ##########################################
3034 if test "$curses" != "no" ; then
3035 if test "$mingw32" = "yes" ; then
3036 curses_list="-lpdcurses"
3038 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
3044 const char *s = curses_version();
3050 for curses_lib in $curses_list; do
3052 if compile_prog "" "$curses_lib" ; then
3054 libs_softmmu="$curses_lib $libs_softmmu"
3059 if test "$curses_found" = "yes" ; then
3062 if test "$curses" = "yes" ; then
3063 feature_not_found "curses" "Install ncurses devel"
3069 ##########################################
3071 if test "$curl" != "no" ; then
3072 if $pkg_config libcurl --exists; then
3073 curlconfig="$pkg_config libcurl"
3075 curlconfig=curl-config
3078 #include <curl/curl.h>
3079 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3081 curl_cflags=`$curlconfig --cflags 2>/dev/null`
3082 curl_libs=`$curlconfig --libs 2>/dev/null`
3083 if compile_prog "$curl_cflags" "$curl_libs" ; then
3086 if test "$curl" = "yes" ; then
3087 feature_not_found "curl" "Install libcurl devel"
3093 ##########################################
3094 # bluez support probe
3095 if test "$bluez" != "no" ; then
3097 #include <bluetooth/bluetooth.h>
3098 int main(void) { return bt_error(0); }
3100 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
3101 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
3102 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
3104 libs_softmmu="$bluez_libs $libs_softmmu"
3106 if test "$bluez" = "yes" ; then
3107 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
3113 ##########################################
3114 # glib support probe
3117 glib_modules=gthread-2.0
3118 if test "$modules" = yes; then
3119 glib_modules="$glib_modules gmodule-2.0"
3122 for i in $glib_modules; do
3123 if $pkg_config --atleast-version=$glib_req_ver $i; then
3124 glib_cflags=`$pkg_config --cflags $i`
3125 glib_libs=`$pkg_config --libs $i`
3126 CFLAGS="$glib_cflags $CFLAGS"
3127 LIBS="$glib_libs $LIBS"
3128 libs_qga="$glib_libs $libs_qga"
3130 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3134 # g_test_trap_subprocess added in 2.38. Used by some tests.
3136 if ! $pkg_config --atleast-version=2.38 glib-2.0; then
3140 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3143 int main(void) { return 0; }
3145 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3146 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3147 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3148 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3152 ##########################################
3153 # SHA command probe for modules
3154 if test "$modules" = yes; then
3155 shacmd_probe="sha1sum sha1 shasum"
3156 for c in $shacmd_probe; do
3162 if test "$shacmd" = ""; then
3163 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3167 ##########################################
3168 # pixman support probe
3170 if test "$pixman" = ""; then
3171 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3173 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
3179 if test "$pixman" = "none"; then
3180 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3181 error_exit "pixman disabled but system emulation or tools build" \
3182 "enabled. You can turn off pixman only if you also" \
3183 "disable all system emulation targets and the tools" \
3184 "build with '--disable-tools --disable-system'."
3188 elif test "$pixman" = "system"; then
3189 # pixman version has been checked above
3190 pixman_cflags=`$pkg_config --cflags pixman-1`
3191 pixman_libs=`$pkg_config --libs pixman-1`
3193 if test ! -d ${source_path}/pixman/pixman; then
3194 error_exit "pixman >= 0.21.8 not present. Your options:" \
3195 " (1) Preferred: Install the pixman devel package (any recent" \
3196 " distro should have packages as Xorg needs pixman too)." \
3197 " (2) Fetch the pixman submodule, using:" \
3198 " git submodule update --init pixman"
3200 mkdir -p pixman/pixman
3201 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3202 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3205 ##########################################
3208 if test "$cap" != "no" ; then
3211 #include <sys/capability.h>
3212 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3214 if compile_prog "" "-lcap" ; then
3221 ##########################################
3223 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
3227 #include <pthread.h>
3228 static void *f(void *p) { return NULL; }
3231 pthread_create(&thread, 0, f, 0);
3235 if compile_prog "" "" ; then
3238 for pthread_lib in $PTHREADLIBS_LIST; do
3239 if compile_prog "" "$pthread_lib" ; then
3242 for lib_entry in $LIBS; do
3243 if test "$lib_entry" = "$pthread_lib"; then
3248 if test "$found" = "no"; then
3249 LIBS="$pthread_lib $LIBS"
3256 if test "$mingw32" != yes -a "$pthread" = no; then
3257 error_exit "pthread check failed" \
3258 "Make sure to have the pthread libs and headers installed."
3261 # check for pthread_setname_np
3262 pthread_setname_np=no
3264 #include <pthread.h>
3266 static void *f(void *p) { return NULL; }
3270 pthread_create(&thread, 0, f, 0);
3271 pthread_setname_np(thread, "QEMU");
3275 if compile_prog "" "$pthread_lib" ; then
3276 pthread_setname_np=yes
3279 ##########################################
3281 if test "$rbd" != "no" ; then
3284 #include <rbd/librbd.h>
3287 rados_create(&cluster, NULL);
3291 rbd_libs="-lrbd -lrados"
3292 if compile_prog "" "$rbd_libs" ; then
3295 if test "$rbd" = "yes" ; then
3296 feature_not_found "rados block device" "Install librbd/ceph devel"
3302 ##########################################
3304 min_libssh2_version=1.2.8
3305 if test "$libssh2" != "no" ; then
3306 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
3307 libssh2_cflags=`$pkg_config libssh2 --cflags`
3308 libssh2_libs=`$pkg_config libssh2 --libs`
3311 if test "$libssh2" = "yes" ; then
3312 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
3318 ##########################################
3319 # libssh2_sftp_fsync probe
3321 if test "$libssh2" = "yes"; then
3324 #include <libssh2.h>
3325 #include <libssh2_sftp.h>
3327 LIBSSH2_SESSION *session;
3329 LIBSSH2_SFTP_HANDLE *sftp_handle;
3330 session = libssh2_session_init ();
3331 sftp = libssh2_sftp_init (session);
3332 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3333 libssh2_sftp_fsync (sftp_handle);
3337 # libssh2_cflags/libssh2_libs defined in previous test.
3338 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3339 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3343 ##########################################
3346 if test "$linux_aio" != "no" ; then
3349 #include <sys/eventfd.h>
3351 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3353 if compile_prog "" "-laio" ; then
3356 if test "$linux_aio" = "yes" ; then
3357 feature_not_found "linux AIO" "Install libaio devel"
3363 ##########################################
3364 # TPM passthrough is only on x86 Linux
3366 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3367 tpm_passthrough=$tpm
3372 ##########################################
3375 if test "$attr" != "no" ; then
3378 #include <sys/types.h>
3379 #ifdef CONFIG_LIBATTR
3380 #include <attr/xattr.h>
3382 #include <sys/xattr.h>
3384 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3386 if compile_prog "" "" ; then
3388 # Older distros have <attr/xattr.h>, and need -lattr:
3389 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3394 if test "$attr" = "yes" ; then
3395 feature_not_found "ATTR" "Install libc6 or libattr devel"
3401 ##########################################
3404 #include <sys/types.h>
3405 #include <sys/uio.h>
3407 int main(void) { return sizeof(struct iovec); }
3410 if compile_prog "" "" ; then
3414 ##########################################
3417 #include <sys/types.h>
3418 #include <sys/uio.h>
3420 int main(void) { return preadv(0, 0, 0, 0); }
3423 if compile_prog "" "" ; then
3427 ##########################################
3429 # fdt support is mandatory for at least some target architectures,
3430 # so insist on it if we're building those system emulators.
3432 for target in $target_list; do
3434 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3440 if test "$fdt_required" = "yes"; then
3441 if test "$fdt" = "no"; then
3442 error_exit "fdt disabled but some requested targets require it." \
3443 "You can turn off fdt only if you also disable all the system emulation" \
3444 "targets which need it (by specifying a cut down --target-list)."
3449 if test "$fdt" != "no" ; then
3451 # explicitly check for libfdt_env.h as it is missing in some stable installs
3452 # and test for required functions to make sure we are on a version >= 1.4.0
3455 #include <libfdt_env.h>
3456 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3458 if compile_prog "" "$fdt_libs" ; then
3459 # system DTC is good - use it
3461 elif test -d ${source_path}/dtc/libfdt ; then
3462 # have submodule DTC - use it
3466 if [ "$pwd_is_source_path" != "y" ] ; then
3467 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3468 symlink "$source_path/dtc/scripts" "dtc/scripts"
3470 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3471 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3472 elif test "$fdt" = "yes" ; then
3473 # have neither and want - prompt for system/submodule install
3474 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3475 " (1) Preferred: Install the DTC (libfdt) devel package" \
3476 " (2) Fetch the DTC submodule, using:" \
3477 " git submodule update --init dtc"
3479 # don't have and don't want
3485 libs_softmmu="$libs_softmmu $fdt_libs"
3487 ##########################################
3488 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3490 if test "$opengl" != "no" ; then
3492 if $pkg_config $opengl_pkgs x11; then
3493 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3494 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3496 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3500 if test "$opengl" = "yes" ; then
3501 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3510 ##########################################
3512 if test "$archipelago" != "no" ; then
3515 #include <xseg/xseg.h>
3516 #include <xseg/protocol.h>
3522 archipelago_libs=-lxseg
3523 if compile_prog "" "$archipelago_libs"; then
3525 libs_tools="$archipelago_libs $libs_tools"
3526 libs_softmmu="$archipelago_libs $libs_softmmu"
3528 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3529 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3530 echo "license and therefore prevent redistribution."
3532 echo "To disable Archipelago, use --disable-archipelago"
3534 if test "$archipelago" = "yes" ; then
3535 feature_not_found "Archipelago backend support" "Install libxseg devel"
3542 ##########################################
3544 if test "$glusterfs" != "no" ; then
3545 if $pkg_config --atleast-version=3 glusterfs-api; then
3547 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3548 glusterfs_libs=`$pkg_config --libs glusterfs-api`
3549 if $pkg_config --atleast-version=5 glusterfs-api; then
3550 glusterfs_discard="yes"
3552 if $pkg_config --atleast-version=6 glusterfs-api; then
3553 glusterfs_zerofill="yes"
3556 if test "$glusterfs" = "yes" ; then
3557 feature_not_found "GlusterFS backend support" \
3558 "Install glusterfs-api devel >= 3"
3564 # Check for inotify functions when we are building linux-user
3565 # emulator. This is done because older glibc versions don't
3566 # have syscall stubs for these implemented. In that case we
3567 # don't provide them even if kernel supports them.
3571 #include <sys/inotify.h>
3576 /* try to start inotify */
3577 return inotify_init();
3580 if compile_prog "" "" ; then
3586 #include <sys/inotify.h>
3591 /* try to start inotify */
3592 return inotify_init1(0);
3595 if compile_prog "" "" ; then
3599 # check if utimensat and futimens are supported
3602 #define _ATFILE_SOURCE
3605 #include <sys/stat.h>
3609 utimensat(AT_FDCWD, "foo", NULL, 0);
3614 if compile_prog "" "" ; then
3618 # check if pipe2 is there
3627 return pipe2(pipefd, O_CLOEXEC);
3630 if compile_prog "" "" ; then
3634 # check if accept4 is there
3637 #include <sys/socket.h>
3642 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3646 if compile_prog "" "" ; then
3650 # check if tee/splice is there. vmsplice was added same time.
3660 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3661 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3665 if compile_prog "" "" ; then
3669 ##########################################
3672 if test "$numa" != "no" ; then
3675 int main(void) { return numa_available(); }
3678 if compile_prog "" "-lnuma" ; then
3680 libs_softmmu="-lnuma $libs_softmmu"
3682 if test "$numa" = "yes" ; then
3683 feature_not_found "numa" "install numactl devel"
3689 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3690 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3694 ##########################################
3697 if test "$tcmalloc" = "yes" ; then
3700 int main(void) { malloc(1); return 0; }
3703 if compile_prog "" "-ltcmalloc" ; then
3704 LIBS="-ltcmalloc $LIBS"
3706 feature_not_found "tcmalloc" "install gperftools devel"
3710 ##########################################
3713 if test "$jemalloc" = "yes" ; then
3716 int main(void) { malloc(1); return 0; }
3719 if compile_prog "" "-ljemalloc" ; then
3720 LIBS="-ljemalloc $LIBS"
3722 feature_not_found "jemalloc" "install jemalloc devel"
3726 ##########################################
3731 #include <sys/syscall.h>
3733 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3736 if compile_prog "" "" ; then
3740 # check if eventfd is supported
3743 #include <sys/eventfd.h>
3747 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3750 if compile_prog "" "" ; then
3754 # check if memfd is supported
3757 #include <sys/memfd.h>
3761 return memfd_create("foo", MFD_ALLOW_SEALING);
3764 if compile_prog "" "" ; then
3770 # check for fallocate
3777 fallocate(0, 0, 0, 0);
3781 if compile_prog "" "" ; then
3785 # check for fallocate hole punching
3786 fallocate_punch_hole=no
3789 #include <linux/falloc.h>
3793 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3797 if compile_prog "" "" ; then
3798 fallocate_punch_hole=yes
3801 # check that fallocate supports range zeroing inside the file
3802 fallocate_zero_range=no
3805 #include <linux/falloc.h>
3809 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3813 if compile_prog "" "" ; then
3814 fallocate_zero_range=yes
3817 # check for posix_fallocate
3824 posix_fallocate(0, 0, 0);
3828 if compile_prog "" "" ; then
3832 # check for sync_file_range
3839 sync_file_range(0, 0, 0, 0);
3843 if compile_prog "" "" ; then
3847 # check for linux/fiemap.h and FS_IOC_FIEMAP
3850 #include <sys/ioctl.h>
3851 #include <linux/fs.h>
3852 #include <linux/fiemap.h>
3856 ioctl(0, FS_IOC_FIEMAP, 0);
3860 if compile_prog "" "" ; then
3875 if compile_prog "" "" ; then
3879 # check for ppoll support
3886 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3887 ppoll(&pfd, 1, 0, 0);
3891 if compile_prog "" "" ; then
3895 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3896 prctl_pr_set_timerslack=no
3898 #include <sys/prctl.h>
3902 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3906 if compile_prog "" "" ; then
3907 prctl_pr_set_timerslack=yes
3910 # check for epoll support
3913 #include <sys/epoll.h>
3921 if compile_prog "" "" ; then
3925 # epoll_create1 and epoll_pwait are later additions
3926 # so we must check separately for their presence
3929 #include <sys/epoll.h>
3933 /* Note that we use epoll_create1 as a value, not as
3934 * a function being called. This is necessary so that on
3935 * old SPARC glibc versions where the function was present in
3936 * the library but not declared in the header file we will
3937 * fail the configure check. (Otherwise we will get a compiler
3938 * warning but not an error, and will proceed to fail the
3939 * qemu compile where we compile with -Werror.)
3941 return (int)(uintptr_t)&epoll_create1;
3944 if compile_prog "" "" ; then
3950 #include <sys/epoll.h>
3954 epoll_pwait(0, 0, 0, 0, 0);
3958 if compile_prog "" "" ; then
3962 # check for sendfile support
3965 #include <sys/sendfile.h>
3969 return sendfile(0, 0, 0, 0);
3972 if compile_prog "" "" ; then
3976 # check for timerfd support (glibc 2.8 and newer)
3979 #include <sys/timerfd.h>
3983 return(timerfd_create(CLOCK_REALTIME, 0));
3986 if compile_prog "" "" ; then
3990 # check for setns and unshare support
4003 if compile_prog "" "" ; then
4007 # Check if tools are available to build documentation.
4008 if test "$docs" != "no" ; then
4009 if has makeinfo && has pod2man; then
4012 if test "$docs" = "yes" ; then
4013 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
4019 # Search for bswap_32 function
4022 #include <byteswap.h>
4023 int main(void) { return bswap_32(0); }
4025 if compile_prog "" "" ; then
4029 # Search for bswap32 function
4032 #include <sys/endian.h>
4033 #include <sys/types.h>
4034 #include <machine/bswap.h>
4035 int main(void) { return bswap32(0); }
4037 if compile_prog "" "" ; then
4041 ##########################################
4042 # Do we have libiscsi >= 1.9.0
4043 if test "$libiscsi" != "no" ; then
4044 if $pkg_config --atleast-version=1.9.0 libiscsi; then
4046 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4047 libiscsi_libs=$($pkg_config --libs libiscsi)
4049 if test "$libiscsi" = "yes" ; then
4050 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
4056 ##########################################
4060 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4062 if compile_prog "" "" ; then
4064 elif compile_prog "" "-lm" ; then
4066 libs_qga="-lm $libs_qga"
4068 error_exit "libm check failed"
4071 ##########################################
4073 # uClibc provides 2 versions of clock_gettime(), one with realtime
4074 # support and one without. This means that the clock_gettime() don't
4075 # need -lrt. We still need it for timer_create() so we check for this
4076 # function in addition.
4081 timer_create(CLOCK_REALTIME, NULL, NULL);
4082 return clock_gettime(CLOCK_REALTIME, NULL);
4086 if compile_prog "" "" ; then
4088 # we need pthread for static linking. use previous pthread test result
4089 elif compile_prog "" "$pthread_lib -lrt" ; then
4091 libs_qga="$libs_qga -lrt"
4094 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4095 "$aix" != "yes" -a "$haiku" != "yes" ; then
4096 libs_softmmu="-lutil $libs_softmmu"
4099 ##########################################
4101 if test "$spice" != "no" ; then
4104 int main(void) { spice_server_new(); return 0; }
4106 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4107 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
4108 if $pkg_config --atleast-version=0.12.0 spice-server && \
4109 $pkg_config --atleast-version=0.12.3 spice-protocol && \
4110 compile_prog "$spice_cflags" "$spice_libs" ; then
4112 libs_softmmu="$libs_softmmu $spice_libs"
4113 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
4114 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4115 spice_server_version=$($pkg_config --modversion spice-server)
4117 if test "$spice" = "yes" ; then
4118 feature_not_found "spice" \
4119 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4125 # check for smartcard support
4127 if test "$smartcard" != "no"; then
4128 if $pkg_config libcacard; then
4129 libcacard_cflags=$($pkg_config --cflags libcacard)
4130 libcacard_libs=$($pkg_config --libs libcacard)
4131 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
4132 libs_softmmu="$libs_softmmu $libcacard_libs"
4135 if test "$smartcard" = "yes"; then
4136 feature_not_found "smartcard" "Install libcacard devel"
4142 # check for libtizenusb
4143 if test "$libtizenusb" != "no" ; then
4147 echo $PKG_CONFIG_PATH
4148 if $pkg_config --modversion libtizenusb >/dev/null 2>&1 ; then
4149 libtizenusb_cflags=$($pkg_config --cflags libtizenusb 2>/dev/null)
4150 libtizenusb_libs=$($pkg_config --libs libtizenusb 2>/dev/null)
4152 echo "libtizenusb found"
4153 echo "cflags = $libtizenusb_cflags"
4154 echo "libs = $libtizenusb_libs"
4156 error_exit "libtizenusb not found (you might not be set PKG_CONFIG_PATH"
4158 QEMU_CFLAGS="$QEMU_CFLAGS $libtizenusb_cflags"
4159 libs_softmmu="$libs_softmmu $libtizenusb_libs"
4163 if test "$libusb" != "no" ; then
4164 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
4166 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4167 libusb_libs=$($pkg_config --libs libusb-1.0)
4168 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
4169 libs_softmmu="$libs_softmmu $libusb_libs"
4171 if test "$libusb" = "yes"; then
4172 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
4178 # check for usbredirparser for usb network redirection support
4179 if test "$usb_redir" != "no" ; then
4180 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
4182 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4183 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
4184 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
4185 libs_softmmu="$libs_softmmu $usb_redir_libs"
4187 if test "$usb_redir" = "yes"; then
4188 feature_not_found "usb-redir" "Install usbredir devel"
4194 ##########################################
4195 # check if we have VSS SDK headers for win
4197 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4198 case "$vss_win32_sdk" in
4199 "") vss_win32_include="-I$source_path" ;;
4200 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4201 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4202 vss_win32_include="-I$source_path/.sdk/vss"
4203 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4205 *) vss_win32_include="-I$vss_win32_sdk"
4208 #define __MIDL_user_allocate_free_DEFINED__
4209 #include <inc/win2003/vss.h>
4210 int main(void) { return VSS_CTX_BACKUP; }
4212 if compile_prog "$vss_win32_include" "" ; then
4213 guest_agent_with_vss="yes"
4214 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4215 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4216 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4218 if test "$vss_win32_sdk" != "" ; then
4219 echo "ERROR: Please download and install Microsoft VSS SDK:"
4220 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4221 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4222 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4223 echo "ERROR: The headers are extracted in the directory \`inc'."
4224 feature_not_found "VSS support"
4226 guest_agent_with_vss="no"
4230 ##########################################
4231 # lookup Windows platform SDK (if not specified)
4232 # The SDK is needed only to build .tlb (type library) file of guest agent
4233 # VSS provider from the source. It is usually unnecessary because the
4234 # pre-compiled .tlb file is included.
4236 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4237 if test -z "$win_sdk"; then
4238 programfiles="$PROGRAMFILES"
4239 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4240 if test -n "$programfiles"; then
4241 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4243 feature_not_found "Windows SDK"
4245 elif test "$win_sdk" = "no"; then
4250 ##########################################
4251 # check if mingw environment provides a recent ntddscsi.h
4252 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4254 #include <windows.h>
4255 #include <ntddscsi.h>
4257 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4258 #error Missing required ioctl definitions
4260 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4264 if compile_prog "" "" ; then
4265 guest_agent_ntddscsi=yes
4266 libs_qga="-lsetupapi $libs_qga"
4270 ##########################################
4271 # virgl renderer probe
4273 if test "$virglrenderer" != "no" ; then
4275 #include <virglrenderer.h>
4276 int main(void) { virgl_renderer_poll(); return 0; }
4278 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4279 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4280 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4281 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4284 if test "$virglrenderer" = "yes" ; then
4285 feature_not_found "virglrenderer"
4291 ##########################################
4292 # check if we have fdatasync
4298 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4299 return fdatasync(0);
4301 #error Not supported
4305 if compile_prog "" "" ; then
4309 ##########################################
4310 # check if we have madvise
4314 #include <sys/types.h>
4315 #include <sys/mman.h>
4317 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4319 if compile_prog "" "" ; then
4323 ##########################################
4324 # check if we have posix_madvise
4328 #include <sys/mman.h>
4330 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4332 if compile_prog "" "" ; then
4336 ##########################################
4337 # check if we have usable SIGEV_THREAD_ID
4344 ev.sigev_notify = SIGEV_THREAD_ID;
4345 ev._sigev_un._tid = 0;
4346 asm volatile("" : : "g"(&ev));
4350 if compile_prog "" "" ; then
4354 ##########################################
4355 # check if trace backend exists
4357 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4358 if test "$?" -ne 0 ; then
4359 error_exit "invalid trace backends" \
4360 "Please choose supported trace backends."
4363 ##########################################
4364 # For 'ust' backend, test if ust headers are present
4365 if have_backend "ust"; then
4367 #include <lttng/tracepoint.h>
4368 int main(void) { return 0; }
4370 if compile_prog "" "" ; then
4371 if $pkg_config lttng-ust --exists; then
4372 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4374 lttng_ust_libs="-llttng-ust"
4376 if $pkg_config liburcu-bp --exists; then
4377 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4379 urcu_bp_libs="-lurcu-bp"
4382 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4383 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4385 error_exit "Trace backend 'ust' missing lttng-ust header files"
4389 ##########################################
4390 # For 'dtrace' backend, test if 'dtrace' command is present
4391 if have_backend "dtrace"; then
4392 if ! has 'dtrace' ; then
4393 error_exit "dtrace command is not found in PATH $PATH"
4395 trace_backend_stap="no"
4396 if has 'stap' ; then
4397 trace_backend_stap="yes"
4401 ##########################################
4402 # check and set a backend for coroutine
4404 # We prefer ucontext, but it's not always possible. The fallback
4405 # is sigcontext. gthread is not selectable except explicitly, because
4406 # it is not functional enough to run QEMU proper. (It is occasionally
4407 # useful for debugging purposes.) On Windows the only valid backend
4408 # is the Windows-specific one.
4411 if test "$darwin" != "yes"; then
4413 #include <ucontext.h>
4414 #ifdef __stub_makecontext
4415 #error Ignoring glibc stub makecontext which will always fail
4417 int main(void) { makecontext(0, 0, 0); return 0; }
4419 if compile_prog "" "" ; then
4424 if test "$coroutine" = ""; then
4425 if test "$mingw32" = "yes"; then
4427 elif test "$ucontext_works" = "yes"; then
4430 coroutine=sigaltstack
4435 if test "$mingw32" != "yes"; then
4436 error_exit "'windows' coroutine backend only valid for Windows"
4438 # Unfortunately the user visible backend name doesn't match the
4439 # coroutine-*.c filename for this case, so we have to adjust it here.
4443 if test "$ucontext_works" != "yes"; then
4444 feature_not_found "ucontext"
4447 gthread|sigaltstack)
4448 if test "$mingw32" = "yes"; then
4449 error_exit "only the 'windows' coroutine backend is valid for Windows"
4453 error_exit "unknown coroutine backend $coroutine"
4458 if test "$coroutine_pool" = ""; then
4459 if test "$coroutine" = "gthread"; then
4465 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4466 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4469 ##########################################
4470 # check if we have open_by_handle_at
4472 open_by_handle_at=no
4475 #if !defined(AT_EMPTY_PATH)
4476 # error missing definition
4478 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4481 if compile_prog "" "" ; then
4482 open_by_handle_at=yes
4485 ########################################
4486 # check if we have linux/magic.h
4490 #include <linux/magic.h>
4495 if compile_prog "" "" ; then
4499 ########################################
4500 # check whether we can disable warning option with a pragma (this is needed
4501 # to silence warnings in the headers of some versions of external libraries).
4502 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4505 # If we can't selectively disable warning in the code, disable -Werror so that
4506 # the build doesn't fail anyway.
4508 pragma_disable_unused_but_set=no
4510 #pragma GCC diagnostic push
4511 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4512 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4513 #pragma GCC diagnostic pop
4519 if compile_prog "-Werror" "" ; then
4520 pragma_diagnostic_available=yes
4522 if test "$force_werror" != "yes"; then
4527 ########################################
4528 # check if we have valgrind/valgrind.h
4532 #include <valgrind/valgrind.h>
4537 if compile_prog "" "" ; then
4541 ########################################
4542 # check if environ is declared
4552 if compile_prog "" "" ; then
4556 ########################################
4557 # check if cpuid.h is usable.
4563 unsigned a, b, c, d;
4564 int max = __get_cpuid_max(0, 0);
4567 __cpuid(1, a, b, c, d);
4571 __cpuid_count(7, 0, a, b, c, d);
4577 if compile_prog "" "" ; then
4581 ########################################
4582 # check if __[u]int128_t is usable.
4586 #if defined(__clang_major__) && defined(__clang_minor__)
4587 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4588 # error __int128_t does not work in CLANG before 3.2
4600 if compile_prog "" "" ; then
4604 ########################################
4605 # check if getauxval is available.
4609 #include <sys/auxv.h>
4611 return getauxval(AT_HWCAP) == 0;
4614 if compile_prog "" "" ; then
4618 ########################################
4619 # check if ccache is interfering with
4620 # semantic analysis of macros
4625 static const int Z = 1;
4626 #define fn() ({ Z; })
4627 #define TAUT(X) ((X) == Z)
4628 #define PAREN(X, Y) (X == Y)
4630 int main(int argc, char *argv[])
4636 if (PAREN(x, y)) return 0;
4637 if (TAUT(Z)) return 0;
4642 if ! compile_object "-Werror"; then
4646 #################################################
4647 # clang does not support glibc + FORTIFY_SOURCE.
4649 if test "$fortify_source" != "no"; then
4650 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4651 fortify_source="no";
4652 elif test -n "$cxx" &&
4653 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
4654 fortify_source="no";
4656 fortify_source="yes"
4660 ##########################################
4662 # After here, no more $cc or $ld runs
4664 if test "$gcov" = "yes" ; then
4665 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4666 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4667 elif test "$fortify_source" = "yes" ; then
4668 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4669 elif test "$debug" = "no"; then
4670 CFLAGS="-O2 $CFLAGS"
4673 ##########################################
4675 if test "$libnfs" != "no" ; then
4676 if $pkg_config --atleast-version=1.9.3 libnfs; then
4678 libnfs_libs=$($pkg_config --libs libnfs)
4679 LIBS="$LIBS $libnfs_libs"
4681 if test "$libnfs" = "yes" ; then
4682 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4688 ########################################
4689 # check if dxva2 is available.
4695 #include <dxva2api.h>
4697 #if !defined(IDirect3D9_CreateDevice) || \
4698 !defined(IDirect3DDeviceManager9_ResetDevice)
4699 #error No DXVA2 support
4704 if compile_prog "" "" ; then
4712 if test "$dxva2" = "yes" ; then
4713 if test "$mingw32" = "yes" ; then
4715 if test "$dxva2" != "yes" ; then
4716 feature_not_found "dxva2"
4719 error_exit "DXVA2 is supported only on Windows"
4722 if test "$dxva2" != "no" ; then
4727 ########################################
4728 # check if vaapi is available.
4732 if $pkg_config libva --exists; then
4733 libva_cflags=`$pkg_config --cflags libva`
4734 libva_libs=`$pkg_config --libs libva`
4740 if $pkg_config libva-x11 --exists; then
4741 libva_x11_cflags=`$pkg_config --cflags libva-x11`
4742 libva_x11_libs=`$pkg_config --libs libva-x11`
4743 libs_softmmu="$libva_libs $libva_x11_libs $libs_softmmu"
4751 if test "$vaapi" = "yes" ; then
4752 if test "$linux" = "yes" ; then
4754 if test "$vaapi" != "yes" ; then
4755 feature_not_found "vaapi"
4758 error_exit "VAAPI is supported only on Linux"
4761 if test "$vaapi" != "no" ; then
4766 ########################################
4769 if test "$mingw32" = "yes" ; then
4770 QEMU_CFLAGS="-DWINVER=$winver -D_WIN32_WINNT=$winver $QEMU_CFLAGS"
4773 ########################################
4774 # check extension path
4776 if [ ! -d "$source_path/tizen/src/$extension_path" ] ; then
4777 error_exit "Extension path is not valid $source_path/tizen/src/$extension_path"
4780 ##########################################
4783 libavcodec_package="libavcodec"
4784 libavcodec_version="54.35.0"
4785 libavutil_package="libavutil"
4786 libavutil_version="52.3.0"
4787 libavformat_package="libavformat"
4788 libavformat_version="54.20.3"
4789 libavresample_package="libavresample"
4790 libavresample_version="1.0.1"
4791 libx264_package="x264"
4792 libav_package="libav"
4798 if ! $pkg_config --exists "$libavcodec_package >= $libavcodec_version" ; then
4801 if ! $pkg_config --exists "$libavformat_package >= $libavformat_version" ; then
4804 if ! $pkg_config --exists "$libavutil_package >= $libavutil_version" ; then
4807 if ! $pkg_config --exists "$libavresample_package >= $libavresample_version" ; then
4812 if $pkg_config --exists "$libx264_package" ; then
4817 set_libav_config() {
4818 if [ "$libav" = "yes" ]; then
4819 if [ "$exists_libav" = "no" ]; then
4820 feature_not_found "$libav_package"
4821 elif [ "$exists_x264" = "no" ]; then
4822 feature_not_found "$libx264_package"
4826 if [ "$exists_libav" = "yes" ] && [ "$exists_x264" = "yes" ]; then
4828 libav_cflags=`$pkg_config --cflags $libavcodec_package` #Header files are in same place.
4829 libav_libs=`$pkg_config --libs $libavcodec_package $libavformat_package $libavutil_package $libavresample_package $libx264_package`
4835 if [ "$libav" != "no" ]; then
4840 ##########################################
4843 if test "$libpng" != "no"; then
4844 libpng_package="libpng"
4846 if $pkg_config --exists "$libpng_package" ; then
4847 libpng_cflags=`$pkg_config --cflags $libpng_package`
4848 libpng_libs=`$pkg_config --libs $libpng_package`
4849 libs_softmmu="$libpng_libs $libs_softmmu"
4852 if test "$libpng" = "yes" ; then
4853 feature_not_found "libpng"
4860 # Disable zero malloc errors for official releases unless explicitly told to
4862 if test -z "$zero_malloc" ; then
4863 if test "$z_version" = "50" ; then
4870 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4871 if test "$werror" = "yes"; then
4872 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4875 if test "$solaris" = "no" ; then
4876 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
4877 LDFLAGS="-Wl,--warn-common $LDFLAGS"
4881 # test if pod2man has --utf8 option
4882 if pod2man --help | grep -q utf8; then
4883 POD2MAN="pod2man --utf8"
4888 # Use ASLR, no-SEH and DEP if available
4889 if test "$mingw32" = "yes" ; then
4890 for flag in --dynamicbase --no-seh --nxcompat; do
4891 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4892 LDFLAGS="-Wl,$flag $LDFLAGS"
4897 qemu_confdir=$sysconfdir$confsuffix
4898 qemu_moddir=$libdir$confsuffix
4899 qemu_datadir=$datadir$confsuffix
4900 qemu_localedir="$datadir/locale"
4903 if test "$want_tools" = "yes" ; then
4904 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4905 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4906 tools="qemu-nbd\$(EXESUF) $tools"
4907 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4910 if test "$softmmu" = yes ; then
4911 if test "$virtfs" != no ; then
4912 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4914 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4915 elif test "$darwin" = yes ; then
4916 echo "Enable VirtFS on Darwin"
4918 elif test "$mingw32" = yes ; then
4919 echo "Enable VirtFS on Windows"
4922 if test "$virtfs" = yes; then
4923 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4930 # Probe for guest agent support/options
4932 if [ "$guest_agent" != "no" ]; then
4933 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4934 tools="qemu-ga $tools"
4936 elif [ "$guest_agent" != yes ]; then
4939 error_exit "Guest agent is not supported on this platform"
4943 # Guest agent Window MSI package
4945 if test "$guest_agent" != yes; then
4946 if test "$guest_agent_msi" = yes; then
4947 error_exit "MSI guest agent package requires guest agent enabled"
4950 elif test "$mingw32" != "yes"; then
4951 if test "$guest_agent_msi" = "yes"; then
4952 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4955 elif ! has wixl; then
4956 if test "$guest_agent_msi" = "yes"; then
4957 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4961 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4962 # disabled explicitly
4963 if test "$guest_agent_msi" != "no"; then
4968 if test "$guest_agent_msi" = "yes"; then
4969 if test "$guest_agent_with_vss" = "yes"; then
4970 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4973 if test "$QEMU_GA_MANUFACTURER" = ""; then
4974 QEMU_GA_MANUFACTURER=QEMU
4977 if test "$QEMU_GA_DISTRO" = ""; then
4978 QEMU_GA_DISTRO=Linux
4981 if test "$QEMU_GA_VERSION" = ""; then
4982 QEMU_GA_VERSION=`cat $source_path/VERSION`
4985 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4989 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4992 QEMU_GA_MSI_ARCH="-D Arch=32"
4995 error_exit "CPU $cpu not supported for building installation package"
5000 # Mac OS X ships with a broken assembler
5002 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5003 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5004 "$softmmu" = yes ; then
5007 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5008 roms="$roms spapr-rtas"
5011 if test "$cpu" = "s390x" ; then
5012 roms="$roms s390-ccw"
5015 # Probe for the need for relocating the user-only binary.
5016 if test "$pie" = "no" ; then
5019 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5020 # ??? Rationale for choosing this address
5021 textseg_addr=0x60000000
5024 # A 256M aligned address, high in the address space, with enough
5025 # room for the code_gen_buffer above it before the stack.
5026 textseg_addr=0x60000000
5029 if [ -n "$textseg_addr" ]; then
5031 int main(void) { return 0; }
5033 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5034 if ! compile_prog "" "$textseg_ldflags"; then
5035 # In case ld does not support -Ttext-segment, edit the default linker
5036 # script via sed to set the .text start addr. This is needed on FreeBSD
5038 $ld --verbose | sed \
5039 -e '1,/==================================================/d' \
5040 -e '/==================================================/,$d' \
5041 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5042 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5043 textseg_ldflags="-Wl,-T../config-host.ld"
5048 # prepend pixman and ftd flags after all config tests are done
5049 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5050 libs_softmmu="$pixman_libs $libs_softmmu"
5052 echo "Install prefix $prefix"
5053 echo "BIOS directory `eval echo $qemu_datadir`"
5054 echo "binary directory `eval echo $bindir`"
5055 echo "library directory `eval echo $libdir`"
5056 echo "module directory `eval echo $qemu_moddir`"
5057 echo "libexec directory `eval echo $libexecdir`"
5058 echo "include directory `eval echo $includedir`"
5059 echo "config directory `eval echo $sysconfdir`"
5060 if test "$mingw32" = "no" ; then
5061 echo "local state directory `eval echo $local_statedir`"
5062 echo "Manual directory `eval echo $mandir`"
5063 echo "ELF interp prefix $interp_prefix"
5065 echo "local state directory queried at runtime"
5066 echo "Windows SDK $win_sdk"
5068 echo "Source path $source_path"
5069 echo "C compiler $cc"
5070 echo "Host C compiler $host_cc"
5071 echo "C++ compiler $cxx"
5072 echo "Objective-C compiler $objcc"
5073 echo "ARFLAGS $ARFLAGS"
5074 echo "CFLAGS $CFLAGS"
5075 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5076 echo "LDFLAGS $LDFLAGS"
5078 echo "install $install"
5079 echo "python $python"
5080 if test "$slirp" = "yes" ; then
5083 echo "module support $modules"
5084 echo "host CPU $cpu"
5085 echo "host big endian $bigendian"
5086 echo "target list $target_list"
5087 echo "tcg debug enabled $debug_tcg"
5088 echo "gprof enabled $gprof"
5089 echo "sparse enabled $sparse"
5090 echo "strip binaries $strip_opt"
5091 echo "profiler $profiler"
5092 echo "static build $static"
5093 if test "$darwin" = "yes" ; then
5094 echo "Cocoa support $cocoa"
5096 echo "pixman $pixman"
5097 echo "SDL support $sdl"
5098 echo "GTK support $gtk"
5099 echo "GTK GL support $gtk_gl"
5100 echo "GNUTLS support $gnutls"
5101 echo "GNUTLS hash $gnutls_hash"
5102 echo "libgcrypt $gcrypt"
5103 echo "nettle $nettle ${nettle+($nettle_version)}"
5104 echo "libtasn1 $tasn1"
5105 echo "VTE support $vte"
5106 echo "curses support $curses"
5107 echo "virgl support $virglrenderer"
5108 echo "curl support $curl"
5109 echo "mingw32 support $mingw32"
5110 echo "Audio drivers $audio_drv_list"
5111 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5112 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5113 echo "VirtFS support $virtfs"
5114 echo "VNC support $vnc"
5115 if test "$vnc" = "yes" ; then
5116 echo "VNC SASL support $vnc_sasl"
5117 echo "VNC JPEG support $vnc_jpeg"
5118 echo "VNC PNG support $vnc_png"
5120 if test -n "$sparc_cpu"; then
5121 echo "Target Sparc Arch $sparc_cpu"
5123 echo "xen support $xen"
5124 if test "$xen" = "yes" ; then
5125 echo "xen ctrl version $xen_ctrl_version"
5127 echo "brlapi support $brlapi"
5128 echo "bluez support $bluez"
5129 echo "Documentation $docs"
5131 echo "vde support $vde"
5132 echo "netmap support $netmap"
5133 echo "Linux AIO support $linux_aio"
5134 echo "ATTR/XATTR support $attr"
5135 echo "Install blobs $blobs"
5136 echo "KVM support $kvm"
5137 echo "RDMA support $rdma"
5138 echo "TCG interpreter $tcg_interpreter"
5139 echo "fdt support $fdt"
5140 echo "preadv support $preadv"
5141 echo "fdatasync $fdatasync"
5142 echo "madvise $madvise"
5143 echo "posix_madvise $posix_madvise"
5144 echo "sigev_thread_id $sigev_thread_id"
5145 echo "uuid support $uuid"
5146 echo "libcap-ng support $cap_ng"
5147 echo "vhost-net support $vhost_net"
5148 echo "vhost-scsi support $vhost_scsi"
5149 echo "Trace backends $trace_backends"
5150 if test "$trace_backend" = "simple"; then
5151 echo "Trace output file $trace_file-<pid>"
5153 if test "$spice" = "yes"; then
5154 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
5156 echo "spice support $spice"
5158 echo "rbd support $rbd"
5159 echo "xfsctl support $xfs"
5160 echo "smartcard support $smartcard"
5161 echo "libusb $libusb"
5162 echo "usb net redir $usb_redir"
5163 echo "OpenGL support $opengl"
5164 echo "libiscsi support $libiscsi"
5165 echo "libnfs support $libnfs"
5166 echo "build guest agent $guest_agent"
5167 echo "QGA VSS support $guest_agent_with_vss"
5168 echo "QGA w32 disk info $guest_agent_ntddscsi"
5169 echo "QGA MSI support $guest_agent_msi"
5170 echo "seccomp support $seccomp"
5171 echo "coroutine backend $coroutine"
5172 echo "coroutine pool $coroutine_pool"
5173 echo "GlusterFS support $glusterfs"
5174 echo "Archipelago support $archipelago"
5175 echo "gcov $gcov_tool"
5176 echo "gcov enabled $gcov"
5177 echo "TPM support $tpm"
5178 echo "libssh2 support $libssh2"
5179 echo "TPM passthrough $tpm_passthrough"
5180 echo "QOM debugging $qom_cast_debug"
5182 echo "lzo support $lzo"
5183 echo "snappy support $snappy"
5184 echo "bzip2 support $bzip2"
5185 echo "NUMA host support $numa"
5186 echo "tcmalloc support $tcmalloc"
5187 echo "jemalloc support $jemalloc"
5189 echo "Qt support $qt"
5190 echo "HAX support $hax"
5191 echo "YaGL support $yagl"
5192 echo "YaGL stats $yagl_stats"
5193 echo "VIGS support $vigs"
5196 if test "$maru" = "yes"; then
5197 echo "TIZEN-maru options:"
5198 echo "maru enabled $maru"
5199 if test "$mingw32" = "yes"; then
5200 echo "WINVER $winver"
5202 echo "Java UI enabled $java_ui"
5203 echo "shared framebuffer enabled $shm"
5204 echo "libav support $libav"
5205 echo "libpng support $libpng"
5206 echo "DXVA2 support $dxva2"
5207 echo "vaapi support $vaapi"
5208 echo "libtizenusb support $libtizenusb"
5209 echo "extension path $extension_path"
5213 if test "$sdl_too_old" = "yes"; then
5214 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5217 config_host_mak="config-host.mak"
5219 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5221 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5222 echo >> $config_host_mak
5224 echo all: >> $config_host_mak
5225 echo "prefix=$prefix" >> $config_host_mak
5226 echo "bindir=$bindir" >> $config_host_mak
5227 echo "libdir=$libdir" >> $config_host_mak
5228 echo "libexecdir=$libexecdir" >> $config_host_mak
5229 echo "includedir=$includedir" >> $config_host_mak
5230 echo "mandir=$mandir" >> $config_host_mak
5231 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5232 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5233 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5234 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5235 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5236 if test "$mingw32" = "no" ; then
5237 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5239 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5240 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5241 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5242 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5243 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5245 echo "ARCH=$ARCH" >> $config_host_mak
5247 if test "$debug_tcg" = "yes" ; then
5248 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5250 if test "$strip_opt" = "yes" ; then
5251 echo "STRIP=${strip}" >> $config_host_mak
5253 if test "$bigendian" = "yes" ; then
5254 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5256 if test "$mingw32" = "yes" ; then
5257 echo "CONFIG_WIN32=y" >> $config_host_mak
5258 rc_version=`cat $source_path/VERSION`
5259 version_major=${rc_version%%.*}
5260 rc_version=${rc_version#*.}
5261 version_minor=${rc_version%%.*}
5262 rc_version=${rc_version#*.}
5263 version_subminor=${rc_version%%.*}
5265 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5266 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5267 if test "$guest_agent_with_vss" = "yes" ; then
5268 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5269 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5270 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5272 if test "$guest_agent_ntddscsi" = "yes" ; then
5273 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5275 if test "$guest_agent_msi" = "yes"; then
5276 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5277 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5278 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5279 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5280 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5281 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5282 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5285 echo "CONFIG_POSIX=y" >> $config_host_mak
5288 if test "$linux" = "yes" ; then
5289 echo "CONFIG_LINUX=y" >> $config_host_mak
5292 if test "$darwin" = "yes" ; then
5293 echo "CONFIG_DARWIN=y" >> $config_host_mak
5296 if test "$aix" = "yes" ; then
5297 echo "CONFIG_AIX=y" >> $config_host_mak
5300 if test "$solaris" = "yes" ; then
5301 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5302 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5303 if test "$needs_libsunmath" = "yes" ; then
5304 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5307 if test "$haiku" = "yes" ; then
5308 echo "CONFIG_HAIKU=y" >> $config_host_mak
5310 if test "$static" = "yes" ; then
5311 echo "CONFIG_STATIC=y" >> $config_host_mak
5313 if test "$profiler" = "yes" ; then
5314 echo "CONFIG_PROFILER=y" >> $config_host_mak
5316 if test "$slirp" = "yes" ; then
5317 echo "CONFIG_SLIRP=y" >> $config_host_mak
5318 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5320 if test "$vde" = "yes" ; then
5321 echo "CONFIG_VDE=y" >> $config_host_mak
5323 if test "$netmap" = "yes" ; then
5324 echo "CONFIG_NETMAP=y" >> $config_host_mak
5326 if test "$l2tpv3" = "yes" ; then
5327 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5329 if test "$cap_ng" = "yes" ; then
5330 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5332 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5333 for drv in $audio_drv_list; do
5334 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
5335 echo "$def=y" >> $config_host_mak
5337 if test "$audio_pt_int" = "yes" ; then
5338 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5340 if test "$audio_win_int" = "yes" ; then
5341 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5343 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5344 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5345 if test "$vnc" = "yes" ; then
5346 echo "CONFIG_VNC=y" >> $config_host_mak
5348 if test "$vnc_sasl" = "yes" ; then
5349 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5351 if test "$vnc_jpeg" = "yes" ; then
5352 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5354 if test "$vnc_png" = "yes" ; then
5355 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5357 if test "$fnmatch" = "yes" ; then
5358 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5360 if test "$uuid" = "yes" ; then
5361 echo "CONFIG_UUID=y" >> $config_host_mak
5363 if test "$xfs" = "yes" ; then
5364 echo "CONFIG_XFS=y" >> $config_host_mak
5366 qemu_version=`head $source_path/VERSION`
5367 echo "VERSION=$qemu_version" >>$config_host_mak
5368 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5369 echo "SRC_PATH=$source_path" >> $config_host_mak
5370 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5371 if [ "$docs" = "yes" ] ; then
5372 echo "BUILD_DOCS=yes" >> $config_host_mak
5374 if test "$modules" = "yes"; then
5375 # $shacmd can generate a hash started with digit, which the compiler doesn't
5376 # like as an symbol. So prefix it with an underscore
5377 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
5378 echo "CONFIG_MODULES=y" >> $config_host_mak
5380 if test "$sdl" = "yes" ; then
5381 echo "CONFIG_SDL=y" >> $config_host_mak
5382 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5383 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5385 if test "$cocoa" = "yes" ; then
5386 echo "CONFIG_COCOA=y" >> $config_host_mak
5388 if test "$curses" = "yes" ; then
5389 echo "CONFIG_CURSES=y" >> $config_host_mak
5391 if test "$utimens" = "yes" ; then
5392 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
5394 if test "$pipe2" = "yes" ; then
5395 echo "CONFIG_PIPE2=y" >> $config_host_mak
5397 if test "$accept4" = "yes" ; then
5398 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5400 if test "$splice" = "yes" ; then
5401 echo "CONFIG_SPLICE=y" >> $config_host_mak
5403 if test "$eventfd" = "yes" ; then
5404 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5406 if test "$memfd" = "yes" ; then
5407 echo "CONFIG_MEMFD=y" >> $config_host_mak
5409 if test "$fallocate" = "yes" ; then
5410 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5412 if test "$fallocate_punch_hole" = "yes" ; then
5413 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5415 if test "$fallocate_zero_range" = "yes" ; then
5416 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5418 if test "$posix_fallocate" = "yes" ; then
5419 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5421 if test "$sync_file_range" = "yes" ; then
5422 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5424 if test "$fiemap" = "yes" ; then
5425 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5427 if test "$dup3" = "yes" ; then
5428 echo "CONFIG_DUP3=y" >> $config_host_mak
5430 if test "$ppoll" = "yes" ; then
5431 echo "CONFIG_PPOLL=y" >> $config_host_mak
5433 if test "$prctl_pr_set_timerslack" = "yes" ; then
5434 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5436 if test "$epoll" = "yes" ; then
5437 echo "CONFIG_EPOLL=y" >> $config_host_mak
5439 if test "$epoll_create1" = "yes" ; then
5440 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5442 if test "$epoll_pwait" = "yes" ; then
5443 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5445 if test "$sendfile" = "yes" ; then
5446 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5448 if test "$timerfd" = "yes" ; then
5449 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5451 if test "$setns" = "yes" ; then
5452 echo "CONFIG_SETNS=y" >> $config_host_mak
5454 if test "$inotify" = "yes" ; then
5455 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5457 if test "$inotify1" = "yes" ; then
5458 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5460 if test "$byteswap_h" = "yes" ; then
5461 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5463 if test "$bswap_h" = "yes" ; then
5464 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5466 if test "$curl" = "yes" ; then
5467 echo "CONFIG_CURL=m" >> $config_host_mak
5468 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5469 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5471 if test "$brlapi" = "yes" ; then
5472 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5474 if test "$bluez" = "yes" ; then
5475 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5476 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5478 if test "$glib_subprocess" = "yes" ; then
5479 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5481 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
5482 if test "$gtk" = "yes" ; then
5483 echo "CONFIG_GTK=y" >> $config_host_mak
5484 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5485 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5486 if test "$gtk_gl" = "yes" ; then
5487 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5490 if test "$gnutls" = "yes" ; then
5491 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5493 if test "$gnutls_hash" = "yes" ; then
5494 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5496 if test "$gcrypt" = "yes" ; then
5497 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5499 if test "$nettle" = "yes" ; then
5500 echo "CONFIG_NETTLE=y" >> $config_host_mak
5501 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5503 if test "$tasn1" = "yes" ; then
5504 echo "CONFIG_TASN1=y" >> $config_host_mak
5506 if test "$vte" = "yes" ; then
5507 echo "CONFIG_VTE=y" >> $config_host_mak
5508 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5510 if test "$virglrenderer" = "yes" ; then
5511 echo "CONFIG_VIRGL=y" >> $config_host_mak
5512 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5513 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5515 if test "$qt" = "yes" ; then
5516 echo "CONFIG_QT=y" >> $config_host_mak
5517 echo "QT_CFLAGS=$qt_cflags" >> $config_host_mak
5519 if test "$xen" = "yes" ; then
5520 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5521 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5523 if test "$linux_aio" = "yes" ; then
5524 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5526 if test "$attr" = "yes" ; then
5527 echo "CONFIG_ATTR=y" >> $config_host_mak
5529 if test "$libattr" = "yes" ; then
5530 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5532 if test "$virtfs" = "yes" ; then
5533 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5535 if test "$vhost_scsi" = "yes" ; then
5536 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5538 if test "$vhost_net" = "yes" ; then
5539 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5541 if test "$blobs" = "yes" ; then
5542 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5544 if test "$iovec" = "yes" ; then
5545 echo "CONFIG_IOVEC=y" >> $config_host_mak
5547 if test "$preadv" = "yes" ; then
5548 echo "CONFIG_PREADV=y" >> $config_host_mak
5550 if test "$fdt" = "yes" ; then
5551 echo "CONFIG_FDT=y" >> $config_host_mak
5553 if test "$signalfd" = "yes" ; then
5554 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5556 if test "$tcg_interpreter" = "yes" ; then
5557 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5559 if test "$fdatasync" = "yes" ; then
5560 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5562 if test "$madvise" = "yes" ; then
5563 echo "CONFIG_MADVISE=y" >> $config_host_mak
5565 if test "$posix_madvise" = "yes" ; then
5566 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5568 if test "$sigev_thread_id" = "yes" ; then
5569 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5572 if test "$spice" = "yes" ; then
5573 echo "CONFIG_SPICE=y" >> $config_host_mak
5576 if test "$yagl" = "yes" ; then
5577 echo "CONFIG_YAGL=y" >> $config_host_mak
5578 if test "$linux" = "yes" ; then
5579 LIBS="-lGLU -ldl $LIBS"
5580 elif test "$mingw32" = "yes" ; then
5581 LIBS="-lopengl32 -lglu32 $LIBS"
5582 elif test "$darwin" = "yes" ; then
5583 LIBS="-framework OpenGL -framework AGL -framework GLUT $LIBS"
5585 echo "ERROR: YaGL is not available on $targetos"
5590 if test "$yagl_stats" = "yes" ; then
5591 echo "CONFIG_YAGL_STATS=y" >> $config_host_mak
5594 if test "$vigs" = "yes" ; then
5595 echo "CONFIG_VIGS=y" >> $config_host_mak
5598 if test "$smartcard" = "yes" ; then
5599 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5602 if test "$libusb" = "yes" ; then
5603 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5606 if test "$usb_redir" = "yes" ; then
5607 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5610 if test "$opengl" = "yes" ; then
5611 echo "CONFIG_OPENGL=y" >> $config_host_mak
5612 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5613 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5616 if test "$lzo" = "yes" ; then
5617 echo "CONFIG_LZO=y" >> $config_host_mak
5620 if test "$snappy" = "yes" ; then
5621 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5624 if test "$bzip2" = "yes" ; then
5625 echo "CONFIG_BZIP2=y" >> $config_host_mak
5626 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5629 if test "$libiscsi" = "yes" ; then
5630 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5631 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5632 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5635 if test "$libnfs" = "yes" ; then
5636 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5639 if test "$seccomp" = "yes"; then
5640 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5643 # XXX: suppress that
5644 if [ "$bsd" = "yes" ] ; then
5645 echo "CONFIG_BSD=y" >> $config_host_mak
5648 if test "$zero_malloc" = "yes" ; then
5649 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5651 if test "$localtime_r" = "yes" ; then
5652 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5654 if test "$qom_cast_debug" = "yes" ; then
5655 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5657 if test "$rbd" = "yes" ; then
5658 echo "CONFIG_RBD=m" >> $config_host_mak
5659 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5660 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5663 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5664 if test "$coroutine_pool" = "yes" ; then
5665 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5667 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5670 if test "$open_by_handle_at" = "yes" ; then
5671 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5674 if test "$linux_magic_h" = "yes" ; then
5675 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5678 if test "$pragma_diagnostic_available" = "yes" ; then
5679 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5682 if test "$valgrind_h" = "yes" ; then
5683 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5686 if test "$has_environ" = "yes" ; then
5687 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5690 if test "$cpuid_h" = "yes" ; then
5691 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5694 if test "$int128" = "yes" ; then
5695 echo "CONFIG_INT128=y" >> $config_host_mak
5698 if test "$getauxval" = "yes" ; then
5699 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5702 if test "$glusterfs" = "yes" ; then
5703 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5704 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5705 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5708 if test "$glusterfs_discard" = "yes" ; then
5709 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5712 if test "$glusterfs_zerofill" = "yes" ; then
5713 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5716 if test "$archipelago" = "yes" ; then
5717 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5718 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5721 if test "$libssh2" = "yes" ; then
5722 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5723 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5724 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5727 if test "$vhdx" = "yes" ; then
5728 echo "CONFIG_VHDX=y" >> $config_host_mak
5732 if test "$libusb" = "yes"; then
5733 echo "HOST_USB=libusb legacy" >> $config_host_mak
5734 elif test "$libtizenusb" = "yes"; then
5735 echo "HOST_USB=tizenusb legacy" >> $config_host_mak
5737 echo "HOST_USB=stub" >> $config_host_mak
5740 # TPM passthrough support?
5741 if test "$tpm" = "yes"; then
5742 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5743 if test "$tpm_passthrough" = "yes"; then
5744 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5748 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5749 if have_backend "nop"; then
5750 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5752 if have_backend "simple"; then
5753 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5754 # Set the appropriate trace file.
5755 trace_file="\"$trace_file-\" FMT_pid"
5757 if have_backend "stderr"; then
5758 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5760 if have_backend "ust"; then
5761 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5763 if have_backend "dtrace"; then
5764 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5765 if test "$trace_backend_stap" = "yes" ; then
5766 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5769 if have_backend "ftrace"; then
5770 if test "$linux" = "yes" ; then
5771 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5773 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5776 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5778 if test "$rdma" = "yes" ; then
5779 echo "CONFIG_RDMA=y" >> $config_host_mak
5782 # Hold two types of flag:
5783 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5784 # a thread we have a handle to
5785 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5787 if test "$pthread_setname_np" = "yes" ; then
5788 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5789 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5792 if test "$tcg_interpreter" = "yes"; then
5793 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5794 elif test "$ARCH" = "sparc64" ; then
5795 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5796 elif test "$ARCH" = "s390x" ; then
5797 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5798 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5799 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5800 elif test "$ARCH" = "ppc64" ; then
5801 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5803 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5805 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5807 echo "TOOLS=$tools" >> $config_host_mak
5808 echo "ROMS=$roms" >> $config_host_mak
5809 echo "MAKE=$make" >> $config_host_mak
5810 echo "INSTALL=$install" >> $config_host_mak
5811 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5812 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5813 if test -n "$libtool"; then
5814 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5815 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5817 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5818 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5820 echo "PYTHON=$python" >> $config_host_mak
5821 echo "CC=$cc" >> $config_host_mak
5822 if $iasl -h > /dev/null 2>&1; then
5823 echo "IASL=$iasl" >> $config_host_mak
5825 echo "CC_I386=$cc_i386" >> $config_host_mak
5826 echo "HOST_CC=$host_cc" >> $config_host_mak
5827 echo "CXX=$cxx" >> $config_host_mak
5828 echo "OBJCC=$objcc" >> $config_host_mak
5829 echo "AR=$ar" >> $config_host_mak
5830 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5831 echo "AS=$as" >> $config_host_mak
5832 echo "CPP=$cpp" >> $config_host_mak
5833 echo "OBJCOPY=$objcopy" >> $config_host_mak
5834 echo "LD=$ld" >> $config_host_mak
5835 echo "NM=$nm" >> $config_host_mak
5836 echo "WINDRES=$windres" >> $config_host_mak
5837 echo "LIBTOOL=$libtool" >> $config_host_mak
5838 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5839 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5840 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5841 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5842 if test "$sparse" = "yes" ; then
5843 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5844 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5845 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5846 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5847 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5849 if test "$cross_prefix" != ""; then
5850 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5852 echo "AUTOCONF_HOST := " >> $config_host_mak
5854 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5855 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5856 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5857 echo "LIBS+=$LIBS" >> $config_host_mak
5858 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5859 echo "EXESUF=$EXESUF" >> $config_host_mak
5860 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5861 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5862 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5863 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5864 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5865 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5866 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5867 if test "$gcov" = "yes" ; then
5868 echo "CONFIG_GCOV=y" >> $config_host_mak
5869 echo "GCOV=$gcov_tool" >> $config_host_mak
5872 # use included Linux headers
5873 if test "$linux" = "yes" ; then
5874 mkdir -p linux-headers
5892 # For most CPUs the kernel architecture name and QEMU CPU name match.
5896 # For non-KVM architectures we will not have asm headers
5897 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5898 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5902 for target in $target_list; do
5903 target_dir="$target"
5904 config_target_mak=$target_dir/config-target.mak
5905 target_name=`echo $target | cut -d '-' -f 1`
5906 target_bigendian="no"
5908 case "$target_name" in
5909 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5910 target_bigendian=yes
5914 target_user_only="no"
5915 target_linux_user="no"
5916 target_bsd_user="no"
5918 ${target_name}-softmmu)
5919 target_softmmu="yes"
5921 ${target_name}-linux-user)
5922 if test "$linux" != "yes" ; then
5923 error_exit "Target '$target' is only available on a Linux host"
5925 target_user_only="yes"
5926 target_linux_user="yes"
5928 ${target_name}-bsd-user)
5929 if test "$bsd" != "yes" ; then
5930 error_exit "Target '$target' is only available on a BSD host"
5932 target_user_only="yes"
5933 target_bsd_user="yes"
5936 error_exit "Target '$target' not recognised"
5941 mkdir -p $target_dir
5942 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5945 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5948 TARGET_ARCH="$target_name"
5952 case "$target_name" in
5956 TARGET_BASE_ARCH=i386
5963 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5966 TARGET_BASE_ARCH=arm
5968 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5976 gdb_xml_files="cf-core.xml cf-fp.xml"
5978 microblaze|microblazeel)
5979 TARGET_ARCH=microblaze
5984 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5988 TARGET_BASE_ARCH=mips
5989 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5990 echo "TARGET_ABI32=y" >> $config_target_mak
5994 TARGET_BASE_ARCH=mips
5995 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6000 TARGET_ARCH=openrisc
6001 TARGET_BASE_ARCH=openrisc
6004 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6007 TARGET_BASE_ARCH=ppc
6009 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6012 TARGET_BASE_ARCH=ppc
6014 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6018 TARGET_BASE_ARCH=ppc
6020 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6024 TARGET_BASE_ARCH=ppc
6026 echo "TARGET_ABI32=y" >> $config_target_mak
6027 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6036 TARGET_BASE_ARCH=sparc
6040 TARGET_BASE_ARCH=sparc
6041 TARGET_ABI_DIR=sparc
6042 echo "TARGET_ABI32=y" >> $config_target_mak
6045 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
6057 error_exit "Unsupported target CPU"
6060 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6061 if [ "$TARGET_BASE_ARCH" = "" ]; then
6062 TARGET_BASE_ARCH=$TARGET_ARCH
6065 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
6068 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6071 target_arch_name="`upper $TARGET_ARCH`"
6072 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6073 echo "TARGET_NAME=$target_name" >> $config_target_mak
6074 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6075 if [ "$TARGET_ABI_DIR" = "" ]; then
6076 TARGET_ABI_DIR=$TARGET_ARCH
6078 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6079 if [ "$HOST_VARIANT_DIR" != "" ]; then
6080 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6082 case "$target_name" in
6084 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
6085 echo "CONFIG_XEN=y" >> $config_target_mak
6086 if test "$xen_pci_passthrough" = yes; then
6087 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6093 case "$target_name" in
6094 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
6095 # Make sure the target and host cpus are compatible
6096 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
6097 \( "$target_name" = "$cpu" -o \
6098 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
6099 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
6100 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
6101 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
6102 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
6103 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
6104 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
6105 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
6106 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
6107 echo "CONFIG_KVM=y" >> $config_target_mak
6108 if test "$vhost_net" = "yes" ; then
6109 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6110 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
6114 case "$target_name" in
6116 echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak
6118 if test "$hax" = "yes" ; then
6119 if test "$target_softmmu" = "yes" ; then
6120 case "$target_name" in
6122 echo "CONFIG_HAX=y" >> $config_target_mak
6125 echo "CONFIG_NO_HAX=y" >> $config_target_mak
6129 echo "CONFIG_NO_HAX=y" >> $config_target_mak
6132 if test "$target_bigendian" = "yes" ; then
6133 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6135 if test "$target_softmmu" = "yes" ; then
6136 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6138 if test "$target_user_only" = "yes" ; then
6139 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6140 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6142 if test "$target_linux_user" = "yes" ; then
6143 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6146 if test ! -z "$gdb_xml_files" ; then
6147 for x in $gdb_xml_files; do
6148 list="$list $source_path/gdb-xml/$x"
6150 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6153 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6154 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6156 if test "$target_bsd_user" = "yes" ; then
6157 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6160 if test "$yagl" = "yes" ; then
6161 echo "CONFIG_BUILD_YAGL=y" >> $config_target_mak
6164 if test "$vigs" = "yes" ; then
6165 echo "CONFIG_BUILD_VIGS=y" >> $config_target_mak
6168 # generate QEMU_CFLAGS/LDFLAGS for targets
6174 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6175 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6178 for i in $ARCH $TARGET_BASE_ARCH ; do
6181 disas_config "ALPHA"
6184 if test -n "${cxx}"; then
6185 disas_config "ARM_A64"
6190 if test -n "${cxx}"; then
6191 disas_config "ARM_A64"
6213 disas_config "MICROBLAZE"
6219 disas_config "MOXIE"
6222 disas_config "OPENRISC"
6234 disas_config "SPARC"
6237 disas_config "XTENSA"
6241 if test "$tcg_interpreter" = "yes" ; then
6247 # Ensure there's only a single GP
6248 cflags="-msmall-data $cflags"
6252 if test "$target_softmmu" = "yes" ; then
6253 case "$TARGET_BASE_ARCH" in
6255 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
6258 cflags="-DHAS_AUDIO $cflags"
6261 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
6266 if test "$gprof" = "yes" ; then
6267 echo "TARGET_GPROF=yes" >> $config_target_mak
6268 if test "$target_linux_user" = "yes" ; then
6270 ldflags="-p $ldflags"
6272 if test "$target_softmmu" = "yes" ; then
6273 ldflags="-p $ldflags"
6274 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6278 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6279 ldflags="$ldflags $textseg_ldflags"
6282 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6283 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6285 done # for target in $targets
6287 if [ "$pixman" = "internal" ]; then
6288 echo "config-host.h: subdir-pixman" >> $config_host_mak
6291 if [ "$dtc_internal" = "yes" ]; then
6292 echo "config-host.h: subdir-dtc" >> $config_host_mak
6295 if test "$numa" = "yes"; then
6296 echo "CONFIG_NUMA=y" >> $config_host_mak
6299 if test "$ccache_cpp2" = "yes"; then
6300 echo "export CCACHE_CPP2=y" >> $config_host_mak
6304 if test "$maru" = "yes" ; then
6305 echo "CONFIG_MARU=y" >> $config_host_mak
6307 # java ui is deprecated
6308 if test "$java_ui" = "yes" ; then
6309 if test "$shm" = "yes" || test "$sdl" = "yes" ; then
6310 echo "CONFIG_JAVA_UI=y" >> $config_host_mak
6312 error_exit "Java UI is only available with SDL or SHM"
6315 if test "$shm" = "yes" ; then
6316 if test "$java_ui" = "yes" ; then
6317 echo "CONFIG_USE_SHM=y" >> $config_host_mak
6319 error_exit "SHM is only available with Java UI"
6322 if test "$libav" = "yes" ; then
6323 echo "CONFIG_LIBAV=y" >> $config_host_mak
6324 echo "LIBAV_CFLAGS=$libav_cflags" >> $config_host_mak
6325 echo "LIBAV_LIBS=$libav_libs" >> $config_host_mak
6327 if test "$libpng" = "yes" ; then
6328 echo "CONFIG_PNG=y" >> $config_host_mak
6329 echo "LIBPNG_CFLAGS=$libpng_cflags" >> $config_host_mak
6331 if test "$dxva2" = "yes" ; then
6332 echo "CONFIG_DXVA2=y" >> $config_host_mak
6334 if test "$vaapi" = "yes" ; then
6335 echo "CONFIG_VAAPI=y" >> $config_host_mak
6336 echo "LIBVA_CFLAGS=$libva_cflags $libva_x11_cflags" >> $config_host_mak
6338 if test "$libtizenusb" = "yes" ; then
6339 echo "CONFIG_TIZENUSB=y" >> $config_host_mak
6341 if [ ! -z "$extension_path" ] ; then
6342 echo "CONFIG_EXTENSION_PATH=$extension_path" >> $config_host_mak
6346 # build tree in object directory in case the source is not in the current directory
6347 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6349 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6350 DIRS="$DIRS roms/seabios roms/vgabios"
6351 DIRS="$DIRS qapi-generated"
6352 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6353 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6354 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6355 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6356 FILES="$FILES pc-bios/spapr-rtas/Makefile"
6357 FILES="$FILES pc-bios/s390-ccw/Makefile"
6358 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6359 FILES="$FILES pc-bios/qemu-icon.bmp"
6361 $source_path/pc-bios/*.bin \
6362 $source_path/pc-bios/*.aml \
6363 $source_path/pc-bios/*.rom \
6364 $source_path/pc-bios/*.dtb \
6365 $source_path/pc-bios/*.img \
6366 $source_path/pc-bios/openbios-* \
6367 $source_path/pc-bios/u-boot.* \
6368 $source_path/pc-bios/palcode-*
6370 FILES="$FILES pc-bios/`basename $bios_file`"
6372 for test_file in `find $source_path/tests/acpi-test-data -type f`
6374 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
6377 for f in $FILES ; do
6378 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6379 symlink "$source_path/$f" "$f"
6383 # temporary config to build submodules
6384 for rom in seabios vgabios ; do
6385 config_mak=roms/$rom/config.mak
6386 echo "# Automatically generated by configure - do not modify" > $config_mak
6387 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6388 echo "AS=$as" >> $config_mak
6389 echo "CC=$cc" >> $config_mak
6390 echo "BCC=bcc" >> $config_mak
6391 echo "CPP=$cpp" >> $config_mak
6392 echo "OBJCOPY=objcopy" >> $config_mak
6393 echo "IASL=$iasl" >> $config_mak
6394 echo "LD=$ld" >> $config_mak
6397 # set up qemu-iotests in this build directory
6398 iotests_common_env="tests/qemu-iotests/common.env"
6399 iotests_check="tests/qemu-iotests/check"
6401 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6402 echo >> "$iotests_common_env"
6403 echo "export PYTHON='$python'" >> "$iotests_common_env"
6405 if [ ! -e "$iotests_check" ]; then
6406 symlink "$source_path/$iotests_check" "$iotests_check"
6409 # Save the configure command line for later reuse.
6410 cat <<EOD >config.status
6412 # Generated by configure.
6413 # Run this file to recreate the current configuration.
6414 # Compiler output produced by configure, useful for debugging
6415 # configure, is in config.log if it exists.
6417 printf "exec" >>config.status
6418 printf " '%s'" "$0" "$@" >>config.status
6419 echo >>config.status
6420 chmod +x config.status