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 # Temporary directory used for files created while
12 # configure runs. Since it is in the build directory
13 # we can safely blow away any previous version of it
14 # (and we need not jump through hoops to try to delete
15 # it when configure exits.)
20 echo "ERROR: failed to create temporary directory"
25 TMPC
="${TMPDIR1}/${TMPB}.c"
26 TMPO
="${TMPDIR1}/${TMPB}.o"
27 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
28 TMPL
="${TMPDIR1}/${TMPB}.lo"
29 TMPA
="${TMPDIR1}/lib${TMPB}.la"
30 TMPE
="${TMPDIR1}/${TMPB}.exe"
34 # Print a helpful header at the top of config.log
35 echo "# QEMU configure log $(date)" >> config.log
36 printf "# Configured with:" >> config.log
37 printf " '%s'" "$0" "$@" >> config.log
39 echo "#" >> config.log
44 while test -n "$2"; do
53 # Run the compiler, capturing its output to the log. First argument
54 # is compiler binary to execute.
57 echo $compiler "$@" >> config.log
58 $compiler "$@" >> config.log
2>&1 ||
return $?
59 # Test passed. If this is an --enable-werror build, rerun
60 # the test with -Werror and bail out if it fails. This
61 # makes warning-generating-errors in configure test code
62 # obvious to developers.
63 if test "$werror" != "yes"; then
66 # Don't bother rerunning the compile if we were already using -Werror
72 echo $compiler -Werror "$@" >> config.log
73 $compiler -Werror "$@" >> config.log
2>&1 && return $?
74 error_exit
"configure test passed without -Werror but failed with -Werror." \
75 "This is probably a bug in the configure script. The failing command" \
76 "will be at the bottom of config.log." \
77 "You can run configure with --disable-werror to bypass this check."
81 do_compiler
"$cc" "$@"
85 do_compiler
"$cxx" "$@"
89 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
90 # options which some versions of GCC's C++ compiler complain about
91 # because they only make sense for C programs.
93 for arg
in $QEMU_CFLAGS; do
95 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
96 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
99 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
107 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
113 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
119 # Run the compiler, capturing its output to the log.
120 echo $libtool $mode --tag=CC
$cc "$@" >> config.log
121 $libtool $mode --tag=CC
$cc "$@" >> config.log
2>&1 ||
return $?
122 # Test passed. If this is an --enable-werror build, rerun
123 # the test with -Werror and bail out if it fails. This
124 # makes warning-generating-errors in configure test code
125 # obvious to developers.
126 if test "$werror" != "yes"; then
129 # Don't bother rerunning the compile if we were already using -Werror
135 echo $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
136 $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
2>&1 && return $?
137 error_exit
"configure test passed without -Werror but failed with -Werror." \
138 "This is probably a bug in the configure script. The failing command" \
139 "will be at the bottom of config.log." \
140 "You can run configure with --disable-werror to bypass this check."
144 do_libtool
--mode=compile
$QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC ||
return $?
145 do_libtool
--mode=link
$LDFLAGS -o $TMPA $TMPL -rpath /usr
/local
/lib
148 # symbolically link $1 to $2. Portable version of "ln -sf".
151 mkdir
-p "$(dirname "$2")"
155 # check whether a command is available to this shell (may be either an
156 # executable or a builtin)
158 type "$1" >/dev
/null
2>&1
161 # search for an executable in PATH
167 # pathname has a dir component?
168 if [ "${local_command#*/}" != "$local_command" ]; then
169 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
170 echo "$local_command"
174 if [ -z "$local_command" ]; then
179 for local_dir
in $PATH; do
180 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
181 echo "$local_dir/$local_command"
182 IFS
="${local_ifs:-$(printf ' \t\n')}"
187 IFS
="${local_ifs:-$(printf ' \t\n')}"
192 echo "$trace_backends" |
grep "$1" >/dev
/null
196 source_path
=`dirname "$0"`
199 interp_prefix
="/usr/gnemul/qemu-%M"
203 block_drv_rw_whitelist
=""
204 block_drv_ro_whitelist
=""
210 cc_i386
=i386-pc-linux-gnu-gcc
215 # Don't accept a target_list environment variable.
218 # Default value for a variable defining feature "foo".
219 # * foo="no" feature will only be used if --enable-foo arg is given
220 # * foo="" feature will be searched for, and if found, will be used
221 # unless --disable-foo is given
222 # * foo="yes" this value will only be set by --enable-foo flag.
223 # feature will searched for,
224 # if not found, configure exits with error
226 # Always add --enable-foo and --disable-foo command line args.
227 # Distributions want to ensure that several features are compiled in, and it
228 # is impossible without a --enable-foo that exits if a feature is not found.
252 xen_pci_passthrough
=""
274 LDFLAGS_SHARED
="-shared"
277 mandir
="\${prefix}/share/man"
278 datadir
="\${prefix}/share"
279 qemu_docdir
="\${prefix}/share/doc/qemu"
280 bindir
="\${prefix}/bin"
281 libdir
="\${prefix}/lib"
282 libexecdir
="\${prefix}/libexec"
283 includedir
="\${prefix}/include"
284 sysconfdir
="\${prefix}/etc"
285 local_statedir
="\${prefix}/var"
317 guest_agent_with_vss
="no"
318 guest_agent_ntddscsi
="no"
329 glusterfs_discard
="no"
330 glusterfs_zerofill
="no"
342 # parse CC options first
344 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
346 --cross-prefix=*) cross_prefix
="$optarg"
350 --cxx=*) CXX
="$optarg"
352 --source-path=*) source_path
="$optarg"
354 --cpu=*) cpu
="$optarg"
356 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
357 EXTRA_CFLAGS
="$optarg"
359 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
360 EXTRA_LDFLAGS
="$optarg"
362 --enable-debug-info) debug_info
="yes"
364 --disable-debug-info) debug_info
="no"
369 # Using uname is really, really broken. Once we have the right set of checks
370 # we can eliminate its usage altogether.
372 # Preferred compiler:
374 # ${cross_prefix}gcc (if cross-prefix specified)
376 if test -z "${CC}${cross_prefix}"; then
379 cc
="${CC-${cross_prefix}gcc}"
382 if test -z "${CXX}${cross_prefix}"; then
385 cxx
="${CXX-${cross_prefix}g++}"
388 ar="${AR-${cross_prefix}ar}"
389 as
="${AS-${cross_prefix}as}"
391 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
392 ld
="${LD-${cross_prefix}ld}"
393 libtool
="${LIBTOOL-${cross_prefix}libtool}"
394 nm
="${NM-${cross_prefix}nm}"
395 strip
="${STRIP-${cross_prefix}strip}"
396 windres
="${WINDRES-${cross_prefix}windres}"
397 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
399 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
401 pkg_config
=query_pkg_config
402 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
403 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
405 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
406 ARFLAGS
="${ARFLAGS-rv}"
408 # default flags for all hosts
409 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
410 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
411 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
412 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
413 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
414 if test "$debug_info" = "yes"; then
416 LDFLAGS
="-g $LDFLAGS"
419 # make source path absolute
420 source_path
=`cd "$source_path"; pwd`
422 # running configure in the source tree?
423 # we know that's the case if configure is there.
424 if test -f "./configure"; then
425 pwd_is_source_path
="y"
427 pwd_is_source_path
="n"
433 #error $1 not defined
435 int main(void) { return 0; }
443 int main(void) { return 0; }
450 int main(void) { return 0; }
454 if check_define __linux__
; then
456 elif check_define _WIN32
; then
458 elif check_define __OpenBSD__
; then
460 elif check_define __sun__
; then
462 elif check_define __HAIKU__
; then
468 # Some host OSes need non-standard checks for which CPU to use.
469 # Note that these checks are broken for cross-compilation: if you're
470 # cross-compiling to one of these OSes then you'll need to specify
471 # the correct CPU with the --cpu option.
474 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
475 # run 64-bit userspace code.
476 # If the user didn't specify a CPU explicitly and the kernel says this is
477 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
478 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
483 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
484 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
489 if test ! -z "$cpu" ; then
490 # command line argument
492 elif check_define __i386__
; then
494 elif check_define __x86_64__
; then
495 if check_define __ILP32__
; then
500 elif check_define __sparc__
; then
501 if check_define __arch64__
; then
506 elif check_define _ARCH_PPC
; then
507 if check_define _ARCH_PPC64
; then
512 elif check_define __mips__
; then
514 elif check_define __ia64__
; then
516 elif check_define __s390__
; then
517 if check_define __s390x__
; then
522 elif check_define __arm__
; then
524 elif check_define __aarch64__
; then
526 elif check_define __hppa__
; then
533 # Normalise host CPU name and set ARCH.
534 # Note that this case should only have supported host CPUs, not guests.
536 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
539 i386|i486|i586|i686|i86pc|BePC
)
558 # This will result in either an error or falling back to TCI later
562 if test -z "$ARCH"; then
568 # host *BSD for user mode
574 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
575 audio_possible_drivers
="sdl"
580 audio_possible_drivers
="dsound sdl"
581 if check_include dsound.h
; then
582 audio_drv_list
="dsound"
590 audio_possible_drivers
="oss sdl pa"
596 audio_possible_drivers
="oss sdl pa"
597 # needed for kinfo_getvmmap(3) in libutil.h
599 netmap
="" # enable netmap autodetect
600 HOST_VARIANT_DIR
="freebsd"
606 audio_possible_drivers
="oss sdl pa"
607 HOST_VARIANT_DIR
="dragonfly"
613 audio_possible_drivers
="oss sdl"
615 HOST_VARIANT_DIR
="netbsd"
621 audio_possible_drivers
="sdl"
622 HOST_VARIANT_DIR
="openbsd"
627 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
628 if [ "$cpu" = "x86_64" ] ; then
629 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
630 LDFLAGS
="-arch x86_64 $LDFLAGS"
633 audio_drv_list
="coreaudio"
634 audio_possible_drivers
="coreaudio sdl"
635 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
636 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
637 # Disable attempts to use ObjectiveC features in os/object.h since they
638 # won't work when we're compiling with gcc as a C compiler.
639 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
640 HOST_VARIANT_DIR
="darwin"
645 install="${INSTALL-ginstall}"
647 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
648 needs_libsunmath
="no"
649 solarisrev
=`uname -r | cut -f2 -d.`
650 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
651 if test "$solarisrev" -le 9 ; then
652 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
653 needs_libsunmath
="yes"
654 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
655 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
656 LIBS
="-lsunmath $LIBS"
658 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
659 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
660 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
661 "Studio 11 can be downloaded from www.sun.com."
665 if test -f /usr
/include
/sys
/soundcard.h
; then
668 audio_possible_drivers
="oss sdl"
669 # needed for CMSG_ macros in sys/socket.h
670 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
671 # needed for TIOCWIN* defines in termios.h
672 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
673 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
674 solarisnetlibs
="-lsocket -lnsl -lresolv"
675 LIBS
="$solarisnetlibs $LIBS"
676 libs_qga
="$solarisnetlibs $libs_qga"
684 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
685 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
689 audio_possible_drivers
="oss alsa sdl pa"
695 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
699 if [ "$bsd" = "yes" ] ; then
700 if [ "$darwin" != "yes" ] ; then
705 : ${make=${MAKE-make}}
706 : ${install=${INSTALL-install}}
707 : ${python=${PYTHON-python}}
708 : ${smbd=${SMBD-/usr/sbin/smbd}}
710 # Default objcc to clang if available, otherwise use CC
717 if test "$mingw32" = "yes" ; then
720 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
721 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
722 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
723 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
725 if compile_prog
"" "-liberty" ; then
726 LIBS
="-liberty $LIBS"
728 prefix
="c:/Program Files/QEMU"
731 qemu_docdir
="\${prefix}"
733 sysconfdir
="\${prefix}"
736 libs_qga
="-lws2_32 -lwinmm -lpowrprof -liphlpapi $libs_qga"
742 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
744 --help|
-h) show_help
=yes
746 --version|
-V) exec cat $source_path/VERSION
748 --prefix=*) prefix
="$optarg"
750 --interp-prefix=*) interp_prefix
="$optarg"
758 --host-cc=*) host_cc
="$optarg"
762 --iasl=*) iasl
="$optarg"
764 --objcc=*) objcc
="$optarg"
766 --make=*) make="$optarg"
768 --install=*) install="$optarg"
770 --python=*) python
="$optarg"
772 --gcov=*) gcov_tool
="$optarg"
774 --smbd=*) smbd
="$optarg"
782 --disable-debug-info)
789 --target-list=*) target_list
="$optarg"
791 --enable-trace-backends=*) trace_backends
="$optarg"
793 # XXX: backwards compatibility
794 --enable-trace-backend=*) trace_backends
="$optarg"
796 --with-trace-file=*) trace_file
="$optarg"
798 --enable-gprof) gprof
="yes"
800 --enable-gcov) gcov
="yes"
804 LDFLAGS
="-static $LDFLAGS"
805 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
807 --mandir=*) mandir
="$optarg"
809 --bindir=*) bindir
="$optarg"
811 --libdir=*) libdir
="$optarg"
813 --libexecdir=*) libexecdir
="$optarg"
815 --includedir=*) includedir
="$optarg"
817 --datadir=*) datadir
="$optarg"
819 --with-confsuffix=*) confsuffix
="$optarg"
821 --docdir=*) qemu_docdir
="$optarg"
823 --sysconfdir=*) sysconfdir
="$optarg"
825 --localstatedir=*) local_statedir
="$optarg"
827 --sbindir=*|
--sharedstatedir=*|\
828 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
829 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
830 # These switches are silently ignored, for compatibility with
831 # autoconf-generated configure scripts. This allows QEMU's
832 # configure to be used by RPM and similar macros that set
833 # lots of directory switches by default.
835 --with-system-pixman) pixman
="system"
837 --without-system-pixman) pixman
="internal"
839 --without-pixman) pixman
="none"
841 --disable-sdl) sdl
="no"
843 --enable-sdl) sdl
="yes"
845 --with-sdlabi=*) sdlabi
="$optarg"
847 --disable-qom-cast-debug) qom_cast_debug
="no"
849 --enable-qom-cast-debug) qom_cast_debug
="yes"
851 --disable-virtfs) virtfs
="no"
853 --enable-virtfs) virtfs
="yes"
855 --disable-vnc) vnc
="no"
857 --enable-vnc) vnc
="yes"
859 --oss-lib=*) oss_lib
="$optarg"
861 --audio-drv-list=*) audio_drv_list
="$optarg"
863 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
865 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
867 --enable-debug-tcg) debug_tcg
="yes"
869 --disable-debug-tcg) debug_tcg
="no"
872 # Enable debugging options that aren't excessively noisy
877 --enable-sparse) sparse
="yes"
879 --disable-sparse) sparse
="no"
881 --disable-strip) strip_opt
="no"
883 --disable-vnc-tls) vnc_tls
="no"
885 --enable-vnc-tls) vnc_tls
="yes"
887 --disable-vnc-sasl) vnc_sasl
="no"
889 --enable-vnc-sasl) vnc_sasl
="yes"
891 --disable-vnc-jpeg) vnc_jpeg
="no"
893 --enable-vnc-jpeg) vnc_jpeg
="yes"
895 --disable-vnc-png) vnc_png
="no"
897 --enable-vnc-png) vnc_png
="yes"
899 --disable-vnc-ws) vnc_ws
="no"
901 --enable-vnc-ws) vnc_ws
="yes"
903 --disable-slirp) slirp
="no"
905 --disable-uuid) uuid
="no"
907 --enable-uuid) uuid
="yes"
909 --disable-vde) vde
="no"
911 --enable-vde) vde
="yes"
913 --disable-netmap) netmap
="no"
915 --enable-netmap) netmap
="yes"
917 --disable-xen) xen
="no"
919 --enable-xen) xen
="yes"
921 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
923 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
925 --disable-brlapi) brlapi
="no"
927 --enable-brlapi) brlapi
="yes"
929 --disable-bluez) bluez
="no"
931 --enable-bluez) bluez
="yes"
933 --disable-kvm) kvm
="no"
935 --enable-kvm) kvm
="yes"
937 --disable-tcg-interpreter) tcg_interpreter
="no"
939 --enable-tcg-interpreter) tcg_interpreter
="yes"
941 --disable-cap-ng) cap_ng
="no"
943 --enable-cap-ng) cap_ng
="yes"
945 --disable-spice) spice
="no"
947 --enable-spice) spice
="yes"
949 --disable-libiscsi) libiscsi
="no"
951 --enable-libiscsi) libiscsi
="yes"
953 --disable-libnfs) libnfs
="no"
955 --enable-libnfs) libnfs
="yes"
957 --enable-profiler) profiler
="yes"
959 --disable-cocoa) cocoa
="no"
964 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
966 --disable-system) softmmu
="no"
968 --enable-system) softmmu
="yes"
975 --disable-linux-user) linux_user
="no"
977 --enable-linux-user) linux_user
="yes"
979 --disable-bsd-user) bsd_user
="no"
981 --enable-bsd-user) bsd_user
="yes"
983 --enable-guest-base) guest_base
="yes"
985 --disable-guest-base) guest_base
="no"
987 --enable-pie) pie
="yes"
989 --disable-pie) pie
="no"
991 --enable-werror) werror
="yes"
993 --disable-werror) werror
="no"
995 --enable-stack-protector) stack_protector
="yes"
997 --disable-stack-protector) stack_protector
="no"
999 --disable-curses) curses
="no"
1001 --enable-curses) curses
="yes"
1003 --disable-curl) curl
="no"
1005 --enable-curl) curl
="yes"
1007 --disable-fdt) fdt
="no"
1009 --enable-fdt) fdt
="yes"
1011 --disable-linux-aio) linux_aio
="no"
1013 --enable-linux-aio) linux_aio
="yes"
1015 --disable-attr) attr
="no"
1017 --enable-attr) attr
="yes"
1019 --disable-blobs) blobs
="no"
1021 --with-pkgversion=*) pkgversion
=" ($optarg)"
1023 --with-coroutine=*) coroutine
="$optarg"
1025 --disable-coroutine-pool) coroutine_pool
="no"
1027 --enable-coroutine-pool) coroutine_pool
="yes"
1029 --disable-docs) docs
="no"
1031 --enable-docs) docs
="yes"
1033 --disable-vhost-net) vhost_net
="no"
1035 --enable-vhost-net) vhost_net
="yes"
1037 --disable-vhost-scsi) vhost_scsi
="no"
1039 --enable-vhost-scsi) vhost_scsi
="yes"
1041 --disable-opengl) opengl
="no"
1043 --enable-opengl) opengl
="yes"
1045 --disable-rbd) rbd
="no"
1047 --enable-rbd) rbd
="yes"
1049 --disable-xfsctl) xfs
="no"
1051 --enable-xfsctl) xfs
="yes"
1053 --disable-smartcard-nss) smartcard_nss
="no"
1055 --enable-smartcard-nss) smartcard_nss
="yes"
1057 --disable-libusb) libusb
="no"
1059 --enable-libusb) libusb
="yes"
1061 --disable-usb-redir) usb_redir
="no"
1063 --enable-usb-redir) usb_redir
="yes"
1065 --disable-zlib-test) zlib
="no"
1067 --disable-lzo) lzo
="no"
1069 --enable-lzo) lzo
="yes"
1071 --disable-snappy) snappy
="no"
1073 --enable-snappy) snappy
="yes"
1075 --disable-bzip2) bzip2="no"
1077 --enable-bzip2) bzip2="yes"
1079 --enable-guest-agent) guest_agent
="yes"
1081 --disable-guest-agent) guest_agent
="no"
1083 --enable-guest-agent-msi) guest_agent_msi
="yes"
1085 --disable-guest-agent-msi) guest_agent_msi
="no"
1087 --with-vss-sdk) vss_win32_sdk
=""
1089 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1091 --without-vss-sdk) vss_win32_sdk
="no"
1093 --with-win-sdk) win_sdk
=""
1095 --with-win-sdk=*) win_sdk
="$optarg"
1097 --without-win-sdk) win_sdk
="no"
1099 --enable-tools) want_tools
="yes"
1101 --disable-tools) want_tools
="no"
1103 --enable-seccomp) seccomp
="yes"
1105 --disable-seccomp) seccomp
="no"
1107 --disable-glusterfs) glusterfs
="no"
1109 --enable-glusterfs) glusterfs
="yes"
1111 --disable-archipelago) archipelago
="no"
1113 --enable-archipelago) archipelago
="yes"
1115 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1116 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1118 --disable-gtk) gtk
="no"
1120 --enable-gtk) gtk
="yes"
1122 --enable-rdma) rdma
="yes"
1124 --disable-rdma) rdma
="no"
1126 --with-gtkabi=*) gtkabi
="$optarg"
1128 --disable-vte) vte
="no"
1130 --enable-vte) vte
="yes"
1132 --disable-tpm) tpm
="no"
1134 --enable-tpm) tpm
="yes"
1136 --disable-libssh2) libssh2
="no"
1138 --enable-libssh2) libssh2
="yes"
1140 --enable-vhdx) vhdx
="yes"
1142 --disable-vhdx) vhdx
="no"
1144 --disable-quorum) quorum
="no"
1146 --enable-quorum) quorum
="yes"
1148 --disable-numa) numa
="no"
1150 --enable-numa) numa
="yes"
1152 --disable-tcmalloc) tcmalloc
="no"
1154 --enable-tcmalloc) tcmalloc
="yes"
1157 echo "ERROR: unknown option $opt"
1158 echo "Try '$0 --help' for more information"
1164 if ! has
$python; then
1165 error_exit
"Python not found. Use --python=/path/to/python"
1168 # Note that if the Python conditional here evaluates True we will exit
1169 # with status 1 which is a shell 'false' value.
1170 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1171 error_exit
"Cannot use '$python', Python 2.4 or later is required." \
1172 "Note that Python 3 or later is not yet supported." \
1173 "Use --python=/path/to/python to specify a supported Python."
1176 # The -B switch was added in Python 2.6.
1177 # If it is supplied, compiled files are not written.
1178 # Use it for Python versions which support it.
1179 if $python -B -c 'import sys; sys.exit(0)' 2>/dev
/null
; then
1186 LDFLAGS
="-m32 $LDFLAGS"
1190 LDFLAGS
="-m64 $LDFLAGS"
1193 LDFLAGS
="-m32 $LDFLAGS"
1194 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1197 LDFLAGS
="-m64 $LDFLAGS"
1198 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1202 LDFLAGS
="-m31 $LDFLAGS"
1206 LDFLAGS
="-m64 $LDFLAGS"
1210 LDFLAGS
="-m32 $LDFLAGS"
1211 cc_i386
='$(CC) -m32'
1215 LDFLAGS
="-m64 $LDFLAGS"
1216 cc_i386
='$(CC) -m32'
1220 LDFLAGS
="-mx32 $LDFLAGS"
1221 cc_i386
='$(CC) -m32'
1223 # No special flags required for other host CPUs
1226 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1227 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1229 default_target_list
=""
1233 if [ "$softmmu" = "yes" ]; then
1234 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1236 if [ "$linux_user" = "yes" ]; then
1237 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1239 if [ "$bsd_user" = "yes" ]; then
1240 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1243 for config
in $mak_wilds; do
1244 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1247 if test x
"$show_help" = x
"yes" ; then
1250 Usage: configure [options]
1251 Options: [defaults in brackets after descriptions]
1254 --help print this message
1255 --prefix=PREFIX install in PREFIX [$prefix]
1256 --interp-prefix=PREFIX where to find shared libraries, etc.
1257 use %M for cpu name [$interp_prefix]
1258 --target-list=LIST set target list (default: build everything)
1259 $(echo Available targets: $default_target_list | \
1260 fold -s -w 53 | sed -e 's/^/ /')
1262 Advanced options (experts only):
1263 --source-path=PATH path of source code [$source_path]
1264 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1265 --cc=CC use C compiler CC [$cc]
1266 --iasl=IASL use ACPI compiler IASL [$iasl]
1267 --host-cc=CC use C compiler CC [$host_cc] for code run at
1269 --cxx=CXX use C++ compiler CXX [$cxx]
1270 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1271 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1272 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1273 --make=MAKE use specified make [$make]
1274 --install=INSTALL use specified install [$install]
1275 --python=PYTHON use specified python [$python]
1276 --smbd=SMBD use specified smbd [$smbd]
1277 --static enable static build [$static]
1278 --mandir=PATH install man pages in PATH
1279 --datadir=PATH install firmware in PATH$confsuffix
1280 --docdir=PATH install documentation in PATH$confsuffix
1281 --bindir=PATH install binaries in PATH
1282 --libdir=PATH install libraries in PATH
1283 --sysconfdir=PATH install config in PATH$confsuffix
1284 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1285 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1286 --enable-debug enable common debug build options
1287 --disable-strip disable stripping binaries
1288 --disable-werror disable compilation abort on warning
1289 --disable-stack-protector disable compiler-provided stack protection
1290 --audio-drv-list=LIST set audio drivers list:
1291 Available drivers: $audio_possible_drivers
1292 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1293 --block-drv-rw-whitelist=L
1294 set block driver read-write whitelist
1295 (affects only QEMU, not qemu-img)
1296 --block-drv-ro-whitelist=L
1297 set block driver read-only whitelist
1298 (affects only QEMU, not qemu-img)
1299 --enable-trace-backends=B Set trace backend
1300 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1301 --with-trace-file=NAME Full PATH,NAME of file to store traces
1303 --disable-slirp disable SLIRP userspace network connectivity
1304 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1305 --oss-lib path to OSS library
1306 --cpu=CPU Build for host CPU [$cpu]
1307 --with-coroutine=BACKEND coroutine backend. Supported options:
1308 gthread, ucontext, sigaltstack, windows
1309 --enable-gcov enable test coverage analysis with gcov
1310 --gcov=GCOV use specified gcov [$gcov_tool]
1311 --disable-blobs disable installing provided firmware blobs
1312 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1313 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1315 Optional features, enabled with --enable-FEATURE and
1316 disabled with --disable-FEATURE, default is enabled if available:
1318 system all system emulation targets
1319 user supported user emulation targets
1320 linux-user all linux usermode emulation targets
1321 bsd-user all BSD usermode emulation targets
1322 guest-base GUEST_BASE support for usermode emulation targets
1323 docs build documentation
1324 guest-agent build the QEMU Guest Agent
1325 guest-agent-msi build guest agent Windows MSI installation package
1326 pie Position Independent Executables
1327 modules modules support
1328 debug-tcg TCG debugging (default is disabled)
1329 debug-info debugging information
1330 sparse sparse checker
1333 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1335 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1336 vte vte support for the gtk UI
1339 vnc-tls TLS encryption for VNC server
1340 vnc-sasl SASL encryption for VNC server
1341 vnc-jpeg JPEG lossy compression for VNC server
1342 vnc-png PNG compression for VNC server
1343 vnc-ws Websockets support for VNC server
1344 cocoa Cocoa UI (Mac OS X only)
1346 xen xen backend driver support
1348 brlapi BrlAPI (Braile)
1349 curl curl connectivity
1351 bluez bluez stack connectivity
1352 kvm KVM acceleration support
1353 rdma RDMA-based migration support
1355 vde support for vde network
1356 netmap support for netmap network
1357 linux-aio Linux AIO support
1358 cap-ng libcap-ng support
1359 attr attr and xattr support
1360 vhost-net vhost-net acceleration support
1362 rbd rados block device (rbd)
1363 libiscsi iscsi support
1365 smartcard-nss smartcard nss support
1366 libusb libusb (for usb passthrough)
1367 usb-redir usb network redirection support
1368 lzo support of lzo compression library
1369 snappy support of snappy compression library
1370 bzip2 support of bzip2 compression library
1371 (for reading bzip2-compressed dmg images)
1372 seccomp seccomp support
1373 coroutine-pool coroutine freelist (better performance)
1374 glusterfs GlusterFS backend
1375 archipelago Archipelago backend
1377 libssh2 ssh block device support
1378 vhdx support for the Microsoft VHDX image format
1379 quorum quorum block filter support
1380 numa libnuma support
1381 tcmalloc tcmalloc support
1383 NOTE: The object files are built at the place where configure is launched
1388 # Now we have handled --enable-tcg-interpreter and know we're not just
1389 # printing the help message, bail out if the host CPU isn't supported.
1390 if test "$ARCH" = "unknown"; then
1391 if test "$tcg_interpreter" = "yes" ; then
1392 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1395 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1399 # Consult white-list to determine whether to enable werror
1400 # by default. Only enable by default for git builds
1401 z_version
=`cut -f3 -d. $source_path/VERSION`
1403 if test -z "$werror" ; then
1404 if test -d "$source_path/.git" -a \
1405 "$linux" = "yes" ; then
1412 # check that the C compiler works.
1414 if compile_object
; then
1415 : C compiler works ok
1417 error_exit
"\"$cc\" either does not exist or does not work"
1420 # Check that the C++ compiler exists and works with the C compiler
1423 int c_function(void);
1424 int main(void) { return c_function(); }
1431 int c_function(void);
1433 int c_function(void) { return 42; }
1438 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1439 # C++ compiler $cxx works ok with C compiler $cc
1442 echo "C++ compiler $cxx does not work with C compiler $cc"
1443 echo "Disabling C++ specific optional code"
1447 echo "No C++ compiler available; disabling C++ specific optional code"
1451 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1452 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1453 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1454 gcc_flags
="-Wendif-labels $gcc_flags"
1455 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1456 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1457 # Note that we do not add -Werror to gcc_flags here, because that would
1458 # enable it for all configure tests. If a configure test failed due
1459 # to -Werror this would just silently disable some features,
1460 # so it's too error prone.
1462 cc_has_warning_flag
() {
1465 # Use the positive sense of the flag when testing for -Wno-wombat
1466 # support (gcc will happily accept the -Wno- form of unknown
1468 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1469 compile_prog
"-Werror $optflag" ""
1472 for flag
in $gcc_flags; do
1473 if cc_has_warning_flag
$flag ; then
1474 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1478 if test "$stack_protector" != "no"; then
1479 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1481 for flag
in $gcc_flags; do
1482 # We need to check both a compile and a link, since some compiler
1483 # setups fail only on a .c->.o compile and some only at link time
1484 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1485 compile_prog
"-Werror $flag" ""; then
1486 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1487 LIBTOOLFLAGS
="$LIBTOOLFLAGS -Wc,$flag"
1492 if test "$stack_protector" = yes; then
1493 if test $sp_on = 0; then
1494 error_exit
"Stack protector not supported"
1499 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1500 # large functions that use global variables. The bug is in all releases of
1501 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1502 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1504 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1505 int main(void) { return 0; }
1507 #error No bug in this compiler.
1510 if compile_prog
"-Werror -fno-gcse" "" ; then
1511 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1514 if test "$static" = "yes" ; then
1515 if test "$modules" = "yes" ; then
1516 error_exit
"static and modules are mutually incompatible"
1518 if test "$pie" = "yes" ; then
1519 error_exit
"static and pie are mutually incompatible"
1525 # Unconditional check for compiler __thread support
1527 static __thread int tls_var;
1528 int main(void) { return tls_var; }
1531 if ! compile_prog
"-Werror" "" ; then
1532 error_exit
"Your compiler does not support the __thread specifier for " \
1533 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1536 if test "$pie" = ""; then
1537 case "$cpu-$targetos" in
1538 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1546 if test "$pie" != "no" ; then
1550 # define THREAD __thread
1555 static THREAD int tls_var;
1557 int main(void) { return tls_var; }
1560 if compile_prog
"-fPIE -DPIE" "-pie"; then
1561 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1562 LDFLAGS
="-pie $LDFLAGS"
1564 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1565 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1568 if test "$pie" = "yes"; then
1569 error_exit
"PIE not available due to missing toolchain support"
1571 echo "Disabling PIE due to missing toolchain support"
1576 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1577 CFLAGS_NOPIE
="-fno-pie"
1578 LDFLAGS_NOPIE
="-nopie"
1582 # check for broken gcc and libtool in RHEL5
1583 if test -n "$libtool" -a "$pie" != "no" ; then
1586 void *f(unsigned char *buf, int len);
1587 void *g(unsigned char *buf, int len);
1590 f(unsigned char *buf, int len)
1596 g(unsigned char *buf, int len)
1602 if ! libtool_prog
; then
1603 echo "Disabling libtool due to broken toolchain support"
1608 ##########################################
1609 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1610 # use i686 as default anyway, but for those that don't, an explicit
1611 # specification is necessary
1613 if test "$cpu" = "i386"; then
1615 static int sfaa(int *ptr)
1617 return __sync_fetch_and_and(ptr, 0);
1623 val = __sync_val_compare_and_swap(&val, 0, 1);
1628 if ! compile_prog
"" "" ; then
1629 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1633 #########################################
1634 # Solaris specific configure tool chain decisions
1636 if test "$solaris" = "yes" ; then
1637 if has
$install; then
1640 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1641 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1642 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1644 if test "`path_of $install`" = "/usr/sbin/install" ; then
1645 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1646 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1647 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1652 if test -f /usr
/ccs
/bin
/ar ; then
1653 error_exit
"No path includes ar" \
1654 "Add /usr/ccs/bin to your path and rerun configure"
1656 error_exit
"No path includes ar"
1660 if test -z "${target_list+xxx}" ; then
1661 target_list
="$default_target_list"
1663 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
1666 # Check that we recognised the target name; this allows a more
1667 # friendly error message than if we let it fall through.
1668 for target
in $target_list; do
1669 case " $default_target_list " in
1673 error_exit
"Unknown target name '$target'"
1678 # see if system emulation was really requested
1679 case " $target_list " in
1680 *"-softmmu "*) softmmu
=yes
1686 feature_not_found
() {
1690 error_exit
"User requested feature $feature" \
1691 "configure was not able to find it." \
1696 # big/little endian test
1698 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1699 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1700 extern int foo(short *, short *);
1701 int main(int argc, char *argv[]) {
1702 return foo(big_endian, little_endian);
1706 if compile_object
; then
1707 if grep -q BiGeNdIaN
$TMPO ; then
1709 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1712 echo big
/little
test failed
1715 echo big
/little
test failed
1718 ##########################################
1722 #include <sys/socket.h>
1723 #include <linux/ip.h>
1724 int main(void) { return sizeof(struct mmsghdr); }
1726 if compile_prog
"" "" ; then
1732 ##########################################
1735 if ! has
"$pkg_config_exe"; then
1736 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1739 ##########################################
1742 if test "$linux_user" = "yes"; then
1745 #include <linux/futex.h>
1747 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1753 if ! compile_object
; then
1754 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1758 ##########################################
1761 if test "$zlib" != "no" ; then
1764 int main(void) { zlibVersion(); return 0; }
1766 if compile_prog
"" "-lz" ; then
1769 error_exit
"zlib check failed" \
1770 "Make sure to have the zlib libs and headers installed."
1775 ##########################################
1778 if test "$lzo" != "no" ; then
1780 #include <lzo/lzo1x.h>
1781 int main(void) { lzo_version(); return 0; }
1783 if compile_prog
"" "-llzo2" ; then
1784 libs_softmmu
="$libs_softmmu -llzo2"
1787 if test "$lzo" = "yes"; then
1788 feature_not_found
"liblzo2" "Install liblzo2 devel"
1794 ##########################################
1797 if test "$snappy" != "no" ; then
1799 #include <snappy-c.h>
1800 int main(void) { snappy_max_compressed_length(4096); return 0; }
1802 if compile_prog
"" "-lsnappy" ; then
1803 libs_softmmu
="$libs_softmmu -lsnappy"
1806 if test "$snappy" = "yes"; then
1807 feature_not_found
"libsnappy" "Install libsnappy devel"
1813 ##########################################
1816 if test "$bzip2" != "no" ; then
1819 int main(void) { BZ2_bzlibVersion(); return 0; }
1821 if compile_prog
"" "-lbz2" ; then
1824 if test "$bzip2" = "yes"; then
1825 feature_not_found
"libbzip2" "Install libbzip2 devel"
1831 ##########################################
1834 if test "$seccomp" != "no" ; then
1835 if test "$cpu" = "i386" ||
test "$cpu" = "x86_64" &&
1836 $pkg_config --atleast-version=2.1.1 libseccomp
; then
1837 libs_softmmu
="$libs_softmmu `$pkg_config --libs libseccomp`"
1838 QEMU_CFLAGS
="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1841 if test "$seccomp" = "yes"; then
1842 feature_not_found
"libseccomp" "Install libseccomp devel >= 2.1.1"
1847 ##########################################
1850 if test "$xen" != "no" ; then
1851 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1853 # First we test whether Xen headers and libraries are available.
1854 # If no, we are done and there is no Xen support.
1855 # If yes, more tests are run to detect the Xen version.
1859 #include <xenctrl.h>
1864 if ! compile_prog
"" "$xen_libs" ; then
1866 if test "$xen" = "yes" ; then
1867 feature_not_found
"xen" "Install xen devel"
1873 cat > $TMPC <<EOF &&
1874 #include <xenctrl.h>
1875 #include <xenstore.h>
1877 #include <xen/hvm/hvm_info_table.h>
1878 #if !defined(HVM_MAX_VCPUS)
1879 # error HVM_MAX_VCPUS not defined
1884 xc = xc_interface_open(0, 0, 0);
1885 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1886 xc_gnttab_open(NULL, 0);
1887 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1888 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1889 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1893 compile_prog
"" "$xen_libs"
1895 xen_ctrl_version
=450
1899 cat > $TMPC <<EOF &&
1900 #include <xenctrl.h>
1901 #include <xenstore.h>
1903 #include <xen/hvm/hvm_info_table.h>
1904 #if !defined(HVM_MAX_VCPUS)
1905 # error HVM_MAX_VCPUS not defined
1910 xc = xc_interface_open(0, 0, 0);
1911 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1912 xc_gnttab_open(NULL, 0);
1913 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1914 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1918 compile_prog
"" "$xen_libs"
1920 xen_ctrl_version
=420
1924 cat > $TMPC <<EOF &&
1925 #include <xenctrl.h>
1928 #include <xen/hvm/hvm_info_table.h>
1929 #if !defined(HVM_MAX_VCPUS)
1930 # error HVM_MAX_VCPUS not defined
1934 xc_interface_open(0, 0, 0);
1935 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1936 xc_gnttab_open(NULL, 0);
1937 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1941 compile_prog
"" "$xen_libs"
1943 xen_ctrl_version
=410
1948 cat > $TMPC <<EOF &&
1949 #include <xenctrl.h>
1952 #include <xen/hvm/hvm_info_table.h>
1953 #if !defined(HVM_MAX_VCPUS)
1954 # error HVM_MAX_VCPUS not defined
1957 struct xen_add_to_physmap xatp = {
1958 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1961 xc_interface_open();
1963 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1964 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1968 compile_prog
"" "$xen_libs"
1970 xen_ctrl_version
=400
1975 cat > $TMPC <<EOF &&
1976 #include <xenctrl.h>
1979 struct xen_add_to_physmap xatp = {
1980 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1983 xc_interface_open();
1985 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1986 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1990 compile_prog
"" "$xen_libs"
1992 xen_ctrl_version
=340
1997 cat > $TMPC <<EOF &&
1998 #include <xenctrl.h>
2002 xc_interface_open();
2004 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2008 compile_prog
"" "$xen_libs"
2010 xen_ctrl_version
=330
2013 # Xen version unsupported
2015 if test "$xen" = "yes" ; then
2016 feature_not_found
"xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2021 if test "$xen" = yes; then
2022 libs_softmmu
="$xen_libs $libs_softmmu"
2026 if test "$xen_pci_passthrough" != "no"; then
2027 if test "$xen" = "yes" && test "$linux" = "yes" &&
2028 test "$xen_ctrl_version" -ge 340; then
2029 xen_pci_passthrough
=yes
2031 if test "$xen_pci_passthrough" = "yes"; then
2032 if test "$xen_ctrl_version" -lt 340; then
2033 error_exit
"User requested feature Xen PCI Passthrough" \
2034 "This feature does not work with Xen 3.3"
2036 error_exit
"User requested feature Xen PCI Passthrough" \
2037 " but this feature requires /sys from Linux"
2039 xen_pci_passthrough
=no
2043 ##########################################
2046 if ! has
$libtool; then
2050 # MacOSX ships with a libtool which isn't the GNU one; weed this
2051 # out by checking whether libtool supports the --version switch
2052 if test -n "$libtool"; then
2053 if ! "$libtool" --version >/dev
/null
2>&1; then
2058 ##########################################
2060 if test "$sparse" != "no" ; then
2064 if test "$sparse" = "yes" ; then
2065 feature_not_found
"sparse" "Install sparse binary"
2071 ##########################################
2075 if $pkg_config --exists "x11"; then
2076 x11_cflags
=`$pkg_config --cflags x11`
2077 x11_libs
=`$pkg_config --libs x11`
2080 ##########################################
2083 if test "$gtkabi" = ""; then
2084 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2085 # Use 3.0 as a fallback if that is available.
2086 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2088 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2095 if test "$gtk" != "no"; then
2096 gtkpackage
="gtk+-$gtkabi"
2097 gtkx11package
="gtk+-x11-$gtkabi"
2098 if test "$gtkabi" = "3.0" ; then
2103 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2104 gtk_cflags
=`$pkg_config --cflags $gtkpackage`
2105 gtk_libs
=`$pkg_config --libs $gtkpackage`
2106 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2107 gtk_cflags
="$gtk_cflags $x11_cflags"
2108 gtk_libs
="$gtk_libs $x11_libs"
2110 libs_softmmu
="$gtk_libs $libs_softmmu"
2112 elif test "$gtk" = "yes"; then
2113 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2119 ##########################################
2122 if test "$vte" != "no"; then
2123 if test "$gtkabi" = "3.0"; then
2124 vtepackage
="vte-2.90"
2130 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2131 vte_cflags
=`$pkg_config --cflags $vtepackage`
2132 vte_libs
=`$pkg_config --libs $vtepackage`
2133 libs_softmmu
="$vte_libs $libs_softmmu"
2135 elif test "$vte" = "yes"; then
2136 if test "$gtkabi" = "3.0"; then
2137 feature_not_found
"vte" "Install libvte-2.90 devel"
2139 feature_not_found
"vte" "Install libvte devel"
2146 ##########################################
2149 # Look for sdl configuration program (pkg-config or sdl-config). Try
2150 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2152 if test $sdlabi = "2.0"; then
2153 sdl_config
=$sdl2_config
2155 sdlconfigname
=sdl2_config
2158 sdlconfigname
=sdl_config
2161 if test "`basename $sdl_config`" != $sdlconfigname && ! has
${sdl_config}; then
2162 sdl_config
=$sdlconfigname
2165 if $pkg_config $sdlname --exists; then
2166 sdlconfig
="$pkg_config $sdlname"
2167 _sdlversion
=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2168 elif has
${sdl_config}; then
2169 sdlconfig
="$sdl_config"
2170 _sdlversion
=`$sdlconfig --version | sed 's/[^0-9]//g'`
2172 if test "$sdl" = "yes" ; then
2173 feature_not_found
"sdl" "Install SDL devel"
2177 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2178 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2182 if test "$sdl" != "no" ; then
2185 #undef main /* We don't want SDL to override our main() */
2186 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2188 sdl_cflags
=`$sdlconfig --cflags 2> /dev/null`
2189 if test "$static" = "yes" ; then
2190 sdl_libs
=`$sdlconfig --static-libs 2>/dev/null`
2192 sdl_libs
=`$sdlconfig --libs 2> /dev/null`
2194 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2195 if test "$_sdlversion" -lt 121 ; then
2198 if test "$cocoa" = "no" ; then
2203 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2204 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2205 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2206 sdl_libs
="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2207 sdl_cflags
="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2209 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2215 else # sdl not found
2216 if test "$sdl" = "yes" ; then
2217 feature_not_found
"sdl" "Install SDL devel"
2220 fi # sdl compile test
2223 if test "$sdl" = "yes" ; then
2226 #if defined(SDL_VIDEO_DRIVER_X11)
2227 #include <X11/XKBlib.h>
2229 #error No x11 support
2231 int main(void) { return 0; }
2233 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2234 sdl_cflags
="$sdl_cflags $x11_cflags"
2235 sdl_libs
="$sdl_libs $x11_libs"
2237 libs_softmmu
="$sdl_libs $libs_softmmu"
2240 ##########################################
2241 # RDMA needs OpenFabrics libraries
2242 if test "$rdma" != "no" ; then
2244 #include <rdma/rdma_cma.h>
2245 int main(void) { return 0; }
2247 rdma_libs
="-lrdmacm -libverbs"
2248 if compile_prog
"" "$rdma_libs" ; then
2250 libs_softmmu
="$libs_softmmu $rdma_libs"
2252 if test "$rdma" = "yes" ; then
2254 " OpenFabrics librdmacm/libibverbs not present." \
2256 " (1) Fast: Install infiniband packages from your distro." \
2257 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2258 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2264 ##########################################
2265 # VNC TLS/WS detection
2266 if test "$vnc" = "yes" -a \
( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \
) ; then
2268 #include <gnutls/gnutls.h>
2269 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2271 vnc_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2272 vnc_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2273 if compile_prog
"$vnc_tls_cflags" "$vnc_tls_libs" ; then
2274 if test "$vnc_tls" != "no" ; then
2277 if test "$vnc_ws" != "no" ; then
2280 libs_softmmu
="$vnc_tls_libs $libs_softmmu"
2281 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_tls_cflags"
2283 if test "$vnc_tls" = "yes" ; then
2284 feature_not_found
"vnc-tls" "Install gnutls devel"
2286 if test "$vnc_ws" = "yes" ; then
2287 feature_not_found
"vnc-ws" "Install gnutls devel"
2294 ##########################################
2295 # Quorum probe (check for gnutls)
2296 if test "$quorum" != "no" ; then
2298 #include <gnutls/gnutls.h>
2299 #include <gnutls/crypto.h>
2300 int main(void) {char data[4096], digest[32];
2301 gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest);
2305 quorum_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2306 quorum_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2307 if compile_prog
"$quorum_tls_cflags" "$quorum_tls_libs" ; then
2309 libs_softmmu
="$quorum_tls_libs $libs_softmmu"
2310 libs_tools
="$quorum_tls_libs $libs_softmmu"
2311 QEMU_CFLAGS
="$QEMU_CFLAGS $quorum_tls_cflags"
2314 if test "$quorum" = "yes"; then
2315 feature_not_found
"gnutls" "gnutls > 2.10.0 required to compile Quorum"
2321 ##########################################
2322 # VNC SASL detection
2323 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2325 #include <sasl/sasl.h>
2327 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2329 # Assuming Cyrus-SASL installed in /usr prefix
2331 vnc_sasl_libs
="-lsasl2"
2332 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2334 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2335 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2337 if test "$vnc_sasl" = "yes" ; then
2338 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2344 ##########################################
2345 # VNC JPEG detection
2346 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2349 #include <jpeglib.h>
2350 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2353 vnc_jpeg_libs
="-ljpeg"
2354 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2356 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2357 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2359 if test "$vnc_jpeg" = "yes" ; then
2360 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2366 ##########################################
2368 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2370 //#include <stdio.h>
2374 png_structp png_ptr;
2375 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2376 return png_ptr != 0;
2379 if $pkg_config libpng
--exists; then
2380 vnc_png_cflags
=`$pkg_config libpng --cflags`
2381 vnc_png_libs
=`$pkg_config libpng --libs`
2384 vnc_png_libs
="-lpng"
2386 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2388 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2389 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2391 if test "$vnc_png" = "yes" ; then
2392 feature_not_found
"vnc-png" "Install libpng devel"
2398 ##########################################
2399 # fnmatch() probe, used for ACL routines
2402 #include <fnmatch.h>
2405 fnmatch("foo", "foo", 0);
2409 if compile_prog
"" "" ; then
2413 ##########################################
2414 # uuid_generate() probe, used for vdi block driver
2415 # Note that on some systems (notably MacOSX) no extra library
2416 # need be linked to get the uuid functions.
2417 if test "$uuid" != "no" ; then
2420 #include <uuid/uuid.h>
2424 uuid_generate(my_uuid);
2428 if compile_prog
"" "" ; then
2430 elif compile_prog
"" "$uuid_libs" ; then
2432 libs_softmmu
="$uuid_libs $libs_softmmu"
2433 libs_tools
="$uuid_libs $libs_tools"
2435 if test "$uuid" = "yes" ; then
2436 feature_not_found
"uuid" "Install libuuid devel"
2442 if test "$vhdx" = "yes" ; then
2443 if test "$uuid" = "no" ; then
2444 error_exit
"uuid required for VHDX support"
2446 elif test "$vhdx" != "no" ; then
2447 if test "$uuid" = "yes" ; then
2454 ##########################################
2455 # xfsctl() probe, used for raw-posix
2456 if test "$xfs" != "no" ; then
2458 #include <stddef.h> /* NULL */
2459 #include <xfs/xfs.h>
2462 xfsctl(NULL, 0, 0, NULL);
2466 if compile_prog
"" "" ; then
2469 if test "$xfs" = "yes" ; then
2470 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2476 ##########################################
2477 # vde libraries probe
2478 if test "$vde" != "no" ; then
2479 vde_libs
="-lvdeplug"
2481 #include <libvdeplug.h>
2484 struct vde_open_args a = {0, 0, 0};
2490 if compile_prog
"" "$vde_libs" ; then
2492 libs_softmmu
="$vde_libs $libs_softmmu"
2493 libs_tools
="$vde_libs $libs_tools"
2495 if test "$vde" = "yes" ; then
2496 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2502 ##########################################
2503 # netmap support probe
2504 # Apart from looking for netmap headers, we make sure that the host API version
2505 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2506 # a minor/major version number. Minor new features will be marked with values up
2507 # to 15, and if something happens that requires a change to the backend we will
2508 # move above 15, submit the backend fixes and modify this two bounds.
2509 if test "$netmap" != "no" ; then
2511 #include <inttypes.h>
2513 #include <net/netmap.h>
2514 #include <net/netmap_user.h>
2515 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2518 int main(void) { return 0; }
2520 if compile_prog
"" "" ; then
2523 if test "$netmap" = "yes" ; then
2524 feature_not_found
"netmap"
2530 ##########################################
2531 # libcap-ng library probe
2532 if test "$cap_ng" != "no" ; then
2538 capng_capability_to_name(CAPNG_EFFECTIVE);
2542 if compile_prog
"" "$cap_libs" ; then
2544 libs_tools
="$cap_libs $libs_tools"
2546 if test "$cap_ng" = "yes" ; then
2547 feature_not_found
"cap_ng" "Install libcap-ng devel"
2553 ##########################################
2554 # Sound support libraries probe
2565 int main(void) { $exp }
2567 if compile_prog
"$cfl" "$lib" ; then
2570 error_exit
"$drv check failed" \
2571 "Make sure to have the $drv libs and headers installed."
2575 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2576 for drv
in $audio_drv_list; do
2579 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2580 "return snd_pcm_close((snd_pcm_t *)0);"
2581 libs_softmmu
="-lasound $libs_softmmu"
2585 audio_drv_probe
$drv pulse
/mainloop.h
"-lpulse" \
2586 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2587 libs_softmmu
="-lpulse $libs_softmmu"
2592 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2596 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2601 libs_softmmu
="$oss_lib $libs_softmmu"
2605 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2609 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2610 error_exit
"Unknown driver '$drv' selected" \
2611 "Possible drivers are: $audio_possible_drivers"
2617 ##########################################
2620 if test "$brlapi" != "no" ; then
2621 brlapi_libs
="-lbrlapi"
2625 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2627 if compile_prog
"" "$brlapi_libs" ; then
2629 libs_softmmu
="$brlapi_libs $libs_softmmu"
2631 if test "$brlapi" = "yes" ; then
2632 feature_not_found
"brlapi" "Install brlapi devel"
2638 ##########################################
2640 if test "$curses" != "no" ; then
2641 if test "$mingw32" = "yes" ; then
2642 curses_list
="-lpdcurses"
2644 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2650 const char *s = curses_version();
2656 for curses_lib
in $curses_list; do
2658 if compile_prog
"" "$curses_lib" ; then
2660 libs_softmmu
="$curses_lib $libs_softmmu"
2665 if test "$curses_found" = "yes" ; then
2668 if test "$curses" = "yes" ; then
2669 feature_not_found
"curses" "Install ncurses devel"
2675 ##########################################
2677 if test "$curl" != "no" ; then
2678 if $pkg_config libcurl
--exists; then
2679 curlconfig
="$pkg_config libcurl"
2681 curlconfig
=curl-config
2684 #include <curl/curl.h>
2685 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2687 curl_cflags
=`$curlconfig --cflags 2>/dev/null`
2688 curl_libs
=`$curlconfig --libs 2>/dev/null`
2689 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2692 if test "$curl" = "yes" ; then
2693 feature_not_found
"curl" "Install libcurl devel"
2699 ##########################################
2700 # bluez support probe
2701 if test "$bluez" != "no" ; then
2703 #include <bluetooth/bluetooth.h>
2704 int main(void) { return bt_error(0); }
2706 bluez_cflags
=`$pkg_config --cflags bluez 2> /dev/null`
2707 bluez_libs
=`$pkg_config --libs bluez 2> /dev/null`
2708 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2710 libs_softmmu
="$bluez_libs $libs_softmmu"
2712 if test "$bluez" = "yes" ; then
2713 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2719 ##########################################
2720 # glib support probe
2723 glib_modules
=gthread-2.0
2724 if test "$modules" = yes; then
2725 glib_modules
="$glib_modules gmodule-2.0"
2728 for i
in $glib_modules; do
2729 if $pkg_config --atleast-version=$glib_req_ver $i; then
2730 glib_cflags
=`$pkg_config --cflags $i`
2731 glib_libs
=`$pkg_config --libs $i`
2732 CFLAGS
="$glib_cflags $CFLAGS"
2733 LIBS
="$glib_libs $LIBS"
2734 libs_qga
="$glib_libs $libs_qga"
2736 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2740 # g_test_trap_subprocess added in 2.38. Used by some tests.
2742 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
2746 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2749 int main(void) { return 0; }
2751 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
2752 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
2753 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
2754 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
2758 ##########################################
2759 # SHA command probe for modules
2760 if test "$modules" = yes; then
2761 shacmd_probe
="sha1sum sha1 shasum"
2762 for c
in $shacmd_probe; do
2768 if test "$shacmd" = ""; then
2769 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
2773 ##########################################
2774 # pixman support probe
2776 if test "$pixman" = ""; then
2777 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2779 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
2785 if test "$pixman" = "none"; then
2786 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2787 error_exit
"pixman disabled but system emulation or tools build" \
2788 "enabled. You can turn off pixman only if you also" \
2789 "disable all system emulation targets and the tools" \
2790 "build with '--disable-tools --disable-system'."
2794 elif test "$pixman" = "system"; then
2795 # pixman version has been checked above
2796 pixman_cflags
=`$pkg_config --cflags pixman-1`
2797 pixman_libs
=`$pkg_config --libs pixman-1`
2799 if test ! -d ${source_path}/pixman
/pixman
; then
2800 error_exit
"pixman >= 0.21.8 not present. Your options:" \
2801 " (1) Preferred: Install the pixman devel package (any recent" \
2802 " distro should have packages as Xorg needs pixman too)." \
2803 " (2) Fetch the pixman submodule, using:" \
2804 " git submodule update --init pixman"
2806 mkdir
-p pixman
/pixman
2807 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2808 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2811 ##########################################
2814 if test "$cap" != "no" ; then
2817 #include <sys/capability.h>
2818 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2820 if compile_prog
"" "-lcap" ; then
2827 ##########################################
2829 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
2833 #include <pthread.h>
2834 static void *f(void *p) { return NULL; }
2837 pthread_create(&thread, 0, f, 0);
2841 if compile_prog
"" "" ; then
2844 for pthread_lib
in $PTHREADLIBS_LIST; do
2845 if compile_prog
"" "$pthread_lib" ; then
2848 for lib_entry
in $LIBS; do
2849 if test "$lib_entry" = "$pthread_lib"; then
2854 if test "$found" = "no"; then
2855 LIBS
="$pthread_lib $LIBS"
2862 if test "$mingw32" != yes -a "$pthread" = no
; then
2863 error_exit
"pthread check failed" \
2864 "Make sure to have the pthread libs and headers installed."
2867 # check for pthread_setname_np
2868 pthread_setname_np
=no
2870 #include <pthread.h>
2872 static void *f(void *p) { return NULL; }
2876 pthread_create(&thread, 0, f, 0);
2877 pthread_setname_np(thread, "QEMU");
2881 if compile_prog
"" "$pthread_lib" ; then
2882 pthread_setname_np
=yes
2885 ##########################################
2887 if test "$rbd" != "no" ; then
2890 #include <rbd/librbd.h>
2893 rados_create(&cluster, NULL);
2897 rbd_libs
="-lrbd -lrados"
2898 if compile_prog
"" "$rbd_libs" ; then
2901 if test "$rbd" = "yes" ; then
2902 feature_not_found
"rados block device" "Install librbd/ceph devel"
2908 ##########################################
2910 min_libssh2_version
=1.2.8
2911 if test "$libssh2" != "no" ; then
2912 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
2913 libssh2_cflags
=`$pkg_config libssh2 --cflags`
2914 libssh2_libs
=`$pkg_config libssh2 --libs`
2917 if test "$libssh2" = "yes" ; then
2918 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
2924 ##########################################
2925 # libssh2_sftp_fsync probe
2927 if test "$libssh2" = "yes"; then
2930 #include <libssh2.h>
2931 #include <libssh2_sftp.h>
2933 LIBSSH2_SESSION *session;
2935 LIBSSH2_SFTP_HANDLE *sftp_handle;
2936 session = libssh2_session_init ();
2937 sftp = libssh2_sftp_init (session);
2938 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2939 libssh2_sftp_fsync (sftp_handle);
2943 # libssh2_cflags/libssh2_libs defined in previous test.
2944 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
2945 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
2949 ##########################################
2952 if test "$linux_aio" != "no" ; then
2955 #include <sys/eventfd.h>
2957 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
2959 if compile_prog
"" "-laio" ; then
2962 if test "$linux_aio" = "yes" ; then
2963 feature_not_found
"linux AIO" "Install libaio devel"
2969 ##########################################
2970 # TPM passthrough is only on x86 Linux
2972 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
2973 tpm_passthrough
=$tpm
2978 ##########################################
2981 if test "$attr" != "no" ; then
2984 #include <sys/types.h>
2985 #ifdef CONFIG_LIBATTR
2986 #include <attr/xattr.h>
2988 #include <sys/xattr.h>
2990 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
2992 if compile_prog
"" "" ; then
2994 # Older distros have <attr/xattr.h>, and need -lattr:
2995 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3000 if test "$attr" = "yes" ; then
3001 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3007 ##########################################
3010 #include <sys/types.h>
3011 #include <sys/uio.h>
3013 int main(void) { return sizeof(struct iovec); }
3016 if compile_prog
"" "" ; then
3020 ##########################################
3023 #include <sys/types.h>
3024 #include <sys/uio.h>
3026 int main(void) { return preadv(0, 0, 0, 0); }
3029 if compile_prog
"" "" ; then
3033 ##########################################
3035 # fdt support is mandatory for at least some target architectures,
3036 # so insist on it if we're building those system emulators.
3038 for target
in $target_list; do
3040 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3046 if test "$fdt_required" = "yes"; then
3047 if test "$fdt" = "no"; then
3048 error_exit
"fdt disabled but some requested targets require it." \
3049 "You can turn off fdt only if you also disable all the system emulation" \
3050 "targets which need it (by specifying a cut down --target-list)."
3055 if test "$fdt" != "no" ; then
3057 # explicitly check for libfdt_env.h as it is missing in some stable installs
3058 # and test for required functions to make sure we are on a version >= 1.4.0
3061 #include <libfdt_env.h>
3062 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3064 if compile_prog
"" "$fdt_libs" ; then
3065 # system DTC is good - use it
3067 elif test -d ${source_path}/dtc
/libfdt
; then
3068 # have submodule DTC - use it
3072 if [ "$pwd_is_source_path" != "y" ] ; then
3073 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3074 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3076 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3077 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3078 elif test "$fdt" = "yes" ; then
3079 # have neither and want - prompt for system/submodule install
3080 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3081 " (1) Preferred: Install the DTC (libfdt) devel package" \
3082 " (2) Fetch the DTC submodule, using:" \
3083 " git submodule update --init dtc"
3085 # don't have and don't want
3091 libs_softmmu
="$libs_softmmu $fdt_libs"
3093 ##########################################
3094 # opengl probe (for sdl2, milkymist-tmu2)
3096 # GLX probe, used by milkymist-tmu2
3097 # this is temporary, code will be switched to egl mid-term.
3099 #include <X11/Xlib.h>
3102 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3104 if compile_prog
"" "-lGL -lX11" ; then
3110 if test "$opengl" != "no" ; then
3111 opengl_pkgs
="gl glesv2 epoxy egl"
3112 if $pkg_config $opengl_pkgs x11
&& test "$have_glx" = "yes"; then
3113 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3114 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3117 if test "$opengl" = "yes" ; then
3118 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3127 ##########################################
3129 if test "$archipelago" != "no" ; then
3132 #include <xseg/xseg.h>
3133 #include <xseg/protocol.h>
3139 archipelago_libs
=-lxseg
3140 if compile_prog
"" "$archipelago_libs"; then
3142 libs_tools
="$archipelago_libs $libs_tools"
3143 libs_softmmu
="$archipelago_libs $libs_softmmu"
3145 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3146 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3147 echo "license and therefore prevent redistribution."
3149 echo "To disable Archipelago, use --disable-archipelago"
3151 if test "$archipelago" = "yes" ; then
3152 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3159 ##########################################
3161 if test "$glusterfs" != "no" ; then
3162 if $pkg_config --atleast-version=3 glusterfs-api
; then
3164 glusterfs_cflags
=`$pkg_config --cflags glusterfs-api`
3165 glusterfs_libs
=`$pkg_config --libs glusterfs-api`
3166 if $pkg_config --atleast-version=5 glusterfs-api
; then
3167 glusterfs_discard
="yes"
3169 if $pkg_config --atleast-version=6 glusterfs-api
; then
3170 glusterfs_zerofill
="yes"
3173 if test "$glusterfs" = "yes" ; then
3174 feature_not_found
"GlusterFS backend support" \
3175 "Install glusterfs-api devel >= 3"
3181 # Check for inotify functions when we are building linux-user
3182 # emulator. This is done because older glibc versions don't
3183 # have syscall stubs for these implemented. In that case we
3184 # don't provide them even if kernel supports them.
3188 #include <sys/inotify.h>
3193 /* try to start inotify */
3194 return inotify_init();
3197 if compile_prog
"" "" ; then
3203 #include <sys/inotify.h>
3208 /* try to start inotify */
3209 return inotify_init1(0);
3212 if compile_prog
"" "" ; then
3216 # check if utimensat and futimens are supported
3219 #define _ATFILE_SOURCE
3222 #include <sys/stat.h>
3226 utimensat(AT_FDCWD, "foo", NULL, 0);
3231 if compile_prog
"" "" ; then
3235 # check if pipe2 is there
3244 return pipe2(pipefd, O_CLOEXEC);
3247 if compile_prog
"" "" ; then
3251 # check if accept4 is there
3254 #include <sys/socket.h>
3259 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3263 if compile_prog
"" "" ; then
3267 # check if tee/splice is there. vmsplice was added same time.
3277 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3278 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3282 if compile_prog
"" "" ; then
3286 ##########################################
3289 if test "$numa" != "no" ; then
3292 int main(void) { return numa_available(); }
3295 if compile_prog
"" "-lnuma" ; then
3297 libs_softmmu
="-lnuma $libs_softmmu"
3299 if test "$numa" = "yes" ; then
3300 feature_not_found
"numa" "install numactl devel"
3306 ##########################################
3309 if test "$tcmalloc" = "yes" ; then
3312 int main(void) { malloc(1); return 0; }
3315 if compile_prog
"" "-ltcmalloc" ; then
3316 LIBS
="-ltcmalloc $LIBS"
3318 feature_not_found
"tcmalloc" "install gperftools devel"
3322 ##########################################
3327 #include <sys/syscall.h>
3329 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3332 if compile_prog
"" "" ; then
3336 # check if eventfd is supported
3339 #include <sys/eventfd.h>
3343 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3346 if compile_prog
"" "" ; then
3350 # check for fallocate
3357 fallocate(0, 0, 0, 0);
3361 if compile_prog
"" "" ; then
3365 # check for fallocate hole punching
3366 fallocate_punch_hole
=no
3369 #include <linux/falloc.h>
3373 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3377 if compile_prog
"" "" ; then
3378 fallocate_punch_hole
=yes
3381 # check that fallocate supports range zeroing inside the file
3382 fallocate_zero_range
=no
3385 #include <linux/falloc.h>
3389 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3393 if compile_prog
"" "" ; then
3394 fallocate_zero_range
=yes
3397 # check for posix_fallocate
3404 posix_fallocate(0, 0, 0);
3408 if compile_prog
"" "" ; then
3412 # check for sync_file_range
3419 sync_file_range(0, 0, 0, 0);
3423 if compile_prog
"" "" ; then
3427 # check for linux/fiemap.h and FS_IOC_FIEMAP
3430 #include <sys/ioctl.h>
3431 #include <linux/fs.h>
3432 #include <linux/fiemap.h>
3436 ioctl(0, FS_IOC_FIEMAP, 0);
3440 if compile_prog
"" "" ; then
3455 if compile_prog
"" "" ; then
3459 # check for ppoll support
3466 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3467 ppoll(&pfd, 1, 0, 0);
3471 if compile_prog
"" "" ; then
3475 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3476 prctl_pr_set_timerslack
=no
3478 #include <sys/prctl.h>
3482 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3486 if compile_prog
"" "" ; then
3487 prctl_pr_set_timerslack
=yes
3490 # check for epoll support
3493 #include <sys/epoll.h>
3501 if compile_prog
"" "" ; then
3505 # epoll_create1 and epoll_pwait are later additions
3506 # so we must check separately for their presence
3509 #include <sys/epoll.h>
3513 /* Note that we use epoll_create1 as a value, not as
3514 * a function being called. This is necessary so that on
3515 * old SPARC glibc versions where the function was present in
3516 * the library but not declared in the header file we will
3517 * fail the configure check. (Otherwise we will get a compiler
3518 * warning but not an error, and will proceed to fail the
3519 * qemu compile where we compile with -Werror.)
3521 return (int)(uintptr_t)&epoll_create1;
3524 if compile_prog
"" "" ; then
3530 #include <sys/epoll.h>
3534 epoll_pwait(0, 0, 0, 0, 0);
3538 if compile_prog
"" "" ; then
3542 # check for sendfile support
3545 #include <sys/sendfile.h>
3549 return sendfile(0, 0, 0, 0);
3552 if compile_prog
"" "" ; then
3556 # check for timerfd support (glibc 2.8 and newer)
3559 #include <sys/timerfd.h>
3563 return(timerfd_create(CLOCK_REALTIME, 0));
3566 if compile_prog
"" "" ; then
3570 # check for setns and unshare support
3583 if compile_prog
"" "" ; then
3587 # Check if tools are available to build documentation.
3588 if test "$docs" != "no" ; then
3589 if has makeinfo
&& has pod2man
; then
3592 if test "$docs" = "yes" ; then
3593 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3599 # Search for bswap_32 function
3602 #include <byteswap.h>
3603 int main(void) { return bswap_32(0); }
3605 if compile_prog
"" "" ; then
3609 # Search for bswap32 function
3612 #include <sys/endian.h>
3613 #include <sys/types.h>
3614 #include <machine/bswap.h>
3615 int main(void) { return bswap32(0); }
3617 if compile_prog
"" "" ; then
3621 ##########################################
3622 # Do we have libiscsi >= 1.9.0
3623 if test "$libiscsi" != "no" ; then
3624 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3626 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3627 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3629 if test "$libiscsi" = "yes" ; then
3630 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3636 ##########################################
3640 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3642 if compile_prog
"" "" ; then
3644 elif compile_prog
"" "-lm" ; then
3646 libs_qga
="-lm $libs_qga"
3648 error_exit
"libm check failed"
3651 ##########################################
3653 # uClibc provides 2 versions of clock_gettime(), one with realtime
3654 # support and one without. This means that the clock_gettime() don't
3655 # need -lrt. We still need it for timer_create() so we check for this
3656 # function in addition.
3661 timer_create(CLOCK_REALTIME, NULL, NULL);
3662 return clock_gettime(CLOCK_REALTIME, NULL);
3666 if compile_prog
"" "" ; then
3668 # we need pthread for static linking. use previous pthread test result
3669 elif compile_prog
"" "$pthread_lib -lrt" ; then
3671 libs_qga
="$libs_qga -lrt"
3674 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3675 "$aix" != "yes" -a "$haiku" != "yes" ; then
3676 libs_softmmu
="-lutil $libs_softmmu"
3679 ##########################################
3681 if test "$spice" != "no" ; then
3684 int main(void) { spice_server_new(); return 0; }
3686 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3687 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3688 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
3689 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
3690 compile_prog
"$spice_cflags" "$spice_libs" ; then
3692 libs_softmmu
="$libs_softmmu $spice_libs"
3693 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
3694 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
3695 spice_server_version
=$
($pkg_config --modversion spice-server
)
3697 if test "$spice" = "yes" ; then
3698 feature_not_found
"spice" \
3699 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3705 # check for libcacard for smartcard support
3707 # TODO - what's the minimal nss version we support?
3708 if test "$smartcard_nss" != "no"; then
3710 #include <pk11pub.h>
3711 int main(void) { PK11_FreeSlot(0); return 0; }
3713 # FIXME: do not include $glib_* in here
3714 nss_libs
="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3715 nss_cflags
="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3716 test_cflags
="$nss_cflags"
3717 # The header files in nss < 3.13.3 have a bug which causes them to
3718 # emit a warning. If we're going to compile QEMU with -Werror, then
3719 # test that the headers don't have this bug. Otherwise we would pass
3720 # the configure test but fail to compile QEMU later.
3721 if test "$werror" = "yes"; then
3722 test_cflags
="-Werror $test_cflags"
3724 if test -n "$libtool" &&
3725 $pkg_config --atleast-version=3.12.8 nss
&& \
3726 compile_prog
"$test_cflags" "$nss_libs"; then
3729 if test "$smartcard_nss" = "yes"; then
3730 feature_not_found
"nss" "Install nss devel >= 3.12.8"
3737 if test "$libusb" != "no" ; then
3738 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
3740 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
3741 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
3742 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
3743 libs_softmmu
="$libs_softmmu $libusb_libs"
3745 if test "$libusb" = "yes"; then
3746 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
3752 # check for usbredirparser for usb network redirection support
3753 if test "$usb_redir" != "no" ; then
3754 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
3756 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
3757 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
3758 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
3759 libs_softmmu
="$libs_softmmu $usb_redir_libs"
3761 if test "$usb_redir" = "yes"; then
3762 feature_not_found
"usb-redir" "Install usbredir devel"
3768 ##########################################
3769 # check if we have VSS SDK headers for win
3771 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3772 case "$vss_win32_sdk" in
3773 "") vss_win32_include
="-I$source_path" ;;
3774 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
3775 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3776 vss_win32_include
="-I$source_path/.sdk/vss"
3777 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3779 *) vss_win32_include
="-I$vss_win32_sdk"
3782 #define __MIDL_user_allocate_free_DEFINED__
3783 #include <inc/win2003/vss.h>
3784 int main(void) { return VSS_CTX_BACKUP; }
3786 if compile_prog
"$vss_win32_include" "" ; then
3787 guest_agent_with_vss
="yes"
3788 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
3789 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3791 if test "$vss_win32_sdk" != "" ; then
3792 echo "ERROR: Please download and install Microsoft VSS SDK:"
3793 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3794 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3795 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3796 echo "ERROR: The headers are extracted in the directory \`inc'."
3797 feature_not_found
"VSS support"
3799 guest_agent_with_vss
="no"
3803 ##########################################
3804 # lookup Windows platform SDK (if not specified)
3805 # The SDK is needed only to build .tlb (type library) file of guest agent
3806 # VSS provider from the source. It is usually unnecessary because the
3807 # pre-compiled .tlb file is included.
3809 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3810 if test -z "$win_sdk"; then
3811 programfiles
="$PROGRAMFILES"
3812 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
3813 if test -n "$programfiles"; then
3814 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
3816 feature_not_found
"Windows SDK"
3818 elif test "$win_sdk" = "no"; then
3823 ##########################################
3824 # check if mingw environment provides a recent ntddscsi.h
3825 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3827 #include <windows.h>
3828 #include <ntddscsi.h>
3830 #if !defined(IOCTL_SCSI_GET_ADDRESS)
3831 #error Missing required ioctl definitions
3833 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3837 if compile_prog
"" "" ; then
3838 guest_agent_ntddscsi
=yes
3839 libs_qga
="-lsetupapi $libs_qga"
3843 ##########################################
3844 # Guest agent Window MSI package
3846 if test "$guest_agent" != yes; then
3847 if test "$guest_agent_msi" = yes; then
3848 error_exit
"MSI guest agent package requires guest agent enabled"
3851 elif test "$mingw32" != "yes"; then
3852 if test "$guest_agent_msi" = "yes"; then
3853 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
3856 elif ! has wixl
; then
3857 if test "$guest_agent_msi" = "yes"; then
3858 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3863 if test "$guest_agent_msi" != "no"; then
3864 if test "$guest_agent_with_vss" = "yes"; then
3865 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
3868 if test "$QEMU_GA_MANUFACTURER" = ""; then
3869 QEMU_GA_MANUFACTURER
=QEMU
3872 if test "$QEMU_GA_DISTRO" = ""; then
3873 QEMU_GA_DISTRO
=Linux
3876 if test "$QEMU_GA_VERSION" = ""; then
3877 QEMU_GA_VERSION
=`cat $source_path/VERSION`
3880 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3884 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
3887 QEMU_GA_MSI_ARCH
="-D Arch=32"
3890 error_exit
"CPU $cpu not supported for building installation package"
3895 ##########################################
3896 # check if we have fdatasync
3902 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3903 return fdatasync(0);
3905 #error Not supported
3909 if compile_prog
"" "" ; then
3913 ##########################################
3914 # check if we have madvise
3918 #include <sys/types.h>
3919 #include <sys/mman.h>
3921 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3923 if compile_prog
"" "" ; then
3927 ##########################################
3928 # check if we have posix_madvise
3932 #include <sys/mman.h>
3934 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3936 if compile_prog
"" "" ; then
3940 ##########################################
3941 # check if we have usable SIGEV_THREAD_ID
3948 ev.sigev_notify = SIGEV_THREAD_ID;
3949 ev._sigev_un._tid = 0;
3950 asm volatile("" : : "g"(&ev));
3954 if compile_prog
"" "" ; then
3958 ##########################################
3959 # check if trace backend exists
3961 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
3962 if test "$?" -ne 0 ; then
3963 error_exit
"invalid trace backends" \
3964 "Please choose supported trace backends."
3967 ##########################################
3968 # For 'ust' backend, test if ust headers are present
3969 if have_backend
"ust"; then
3971 #include <lttng/tracepoint.h>
3972 int main(void) { return 0; }
3974 if compile_prog
"" "" ; then
3975 if $pkg_config lttng-ust
--exists; then
3976 lttng_ust_libs
=`$pkg_config --libs lttng-ust`
3978 lttng_ust_libs
="-llttng-ust"
3980 if $pkg_config liburcu-bp
--exists; then
3981 urcu_bp_libs
=`$pkg_config --libs liburcu-bp`
3983 urcu_bp_libs
="-lurcu-bp"
3986 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
3987 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
3989 error_exit
"Trace backend 'ust' missing lttng-ust header files"
3993 ##########################################
3994 # For 'dtrace' backend, test if 'dtrace' command is present
3995 if have_backend
"dtrace"; then
3996 if ! has
'dtrace' ; then
3997 error_exit
"dtrace command is not found in PATH $PATH"
3999 trace_backend_stap
="no"
4000 if has
'stap' ; then
4001 trace_backend_stap
="yes"
4005 ##########################################
4006 # check and set a backend for coroutine
4008 # We prefer ucontext, but it's not always possible. The fallback
4009 # is sigcontext. gthread is not selectable except explicitly, because
4010 # it is not functional enough to run QEMU proper. (It is occasionally
4011 # useful for debugging purposes.) On Windows the only valid backend
4012 # is the Windows-specific one.
4015 if test "$darwin" != "yes"; then
4017 #include <ucontext.h>
4018 #ifdef __stub_makecontext
4019 #error Ignoring glibc stub makecontext which will always fail
4021 int main(void) { makecontext(0, 0, 0); return 0; }
4023 if compile_prog
"" "" ; then
4028 if test "$coroutine" = ""; then
4029 if test "$mingw32" = "yes"; then
4031 elif test "$ucontext_works" = "yes"; then
4034 coroutine
=sigaltstack
4039 if test "$mingw32" != "yes"; then
4040 error_exit
"'windows' coroutine backend only valid for Windows"
4042 # Unfortunately the user visible backend name doesn't match the
4043 # coroutine-*.c filename for this case, so we have to adjust it here.
4047 if test "$ucontext_works" != "yes"; then
4048 feature_not_found
"ucontext"
4051 gthread|sigaltstack
)
4052 if test "$mingw32" = "yes"; then
4053 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4057 error_exit
"unknown coroutine backend $coroutine"
4062 if test "$coroutine_pool" = ""; then
4063 if test "$coroutine" = "gthread"; then
4069 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4070 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4073 ##########################################
4074 # check if we have open_by_handle_at
4076 open_by_handle_at
=no
4079 #if !defined(AT_EMPTY_PATH)
4080 # error missing definition
4082 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4085 if compile_prog
"" "" ; then
4086 open_by_handle_at
=yes
4089 ########################################
4090 # check if we have linux/magic.h
4094 #include <linux/magic.h>
4099 if compile_prog
"" "" ; then
4103 ########################################
4104 # check whether we can disable warning option with a pragma (this is needed
4105 # to silence warnings in the headers of some versions of external libraries).
4106 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4109 # If we can't selectively disable warning in the code, disable -Werror so that
4110 # the build doesn't fail anyway.
4112 pragma_disable_unused_but_set
=no
4114 #pragma GCC diagnostic push
4115 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4116 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4117 #pragma GCC diagnostic pop
4123 if compile_prog
"-Werror" "" ; then
4124 pragma_diagnostic_available
=yes
4129 ########################################
4130 # check if we have valgrind/valgrind.h
4134 #include <valgrind/valgrind.h>
4139 if compile_prog
"" "" ; then
4143 ########################################
4144 # check if environ is declared
4154 if compile_prog
"" "" ; then
4158 ########################################
4159 # check if cpuid.h is usable.
4165 unsigned a, b, c, d;
4166 int max = __get_cpuid_max(0, 0);
4169 __cpuid(1, a, b, c, d);
4173 __cpuid_count(7, 0, a, b, c, d);
4179 if compile_prog
"" "" ; then
4183 ########################################
4184 # check if __[u]int128_t is usable.
4188 #if defined(__clang_major__) && defined(__clang_minor__)
4189 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4190 # error __int128_t does not work in CLANG before 3.2
4202 if compile_prog
"" "" ; then
4206 ########################################
4207 # check if getauxval is available.
4211 #include <sys/auxv.h>
4213 return getauxval(AT_HWCAP) == 0;
4216 if compile_prog
"" "" ; then
4220 ########################################
4221 # check if ccache is interfering with
4222 # semantic analysis of macros
4226 static const int Z = 1;
4227 #define fn() ({ Z; })
4228 #define TAUT(X) ((X) == Z)
4229 #define PAREN(X, Y) (X == Y)
4231 int main(int argc, char *argv[])
4237 if (PAREN(x, y)) return 0;
4238 if (TAUT(Z)) return 0;
4243 if ! compile_object
"-Werror"; then
4247 ##########################################
4249 # After here, no more $cc or $ld runs
4251 if test "$gcov" = "yes" ; then
4252 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4253 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4254 elif test "$debug" = "no" ; then
4255 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4258 ##########################################
4260 if test "$libnfs" != "no" ; then
4261 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4263 libnfs_libs
=$
($pkg_config --libs libnfs
)
4264 LIBS
="$LIBS $libnfs_libs"
4266 if test "$libnfs" = "yes" ; then
4267 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4273 # Disable zero malloc errors for official releases unless explicitly told to
4275 if test -z "$zero_malloc" ; then
4276 if test "$z_version" = "50" ; then
4283 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4284 if test "$werror" = "yes"; then
4285 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4288 if test "$solaris" = "no" ; then
4289 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4290 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4294 # test if pod2man has --utf8 option
4295 if pod2man
--help |
grep -q utf8
; then
4296 POD2MAN
="pod2man --utf8"
4301 # Use ASLR, no-SEH and DEP if available
4302 if test "$mingw32" = "yes" ; then
4303 for flag
in --dynamicbase --no-seh --nxcompat; do
4304 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4305 LDFLAGS
="-Wl,$flag $LDFLAGS"
4310 qemu_confdir
=$sysconfdir$confsuffix
4311 qemu_moddir
=$libdir$confsuffix
4312 qemu_datadir
=$datadir$confsuffix
4313 qemu_localedir
="$datadir/locale"
4316 if test "$want_tools" = "yes" ; then
4317 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4318 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4319 tools
="qemu-nbd\$(EXESUF) $tools"
4322 if test "$softmmu" = yes ; then
4323 if test "$virtfs" != no
; then
4324 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4326 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4328 if test "$virtfs" = yes; then
4329 error_exit
"VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4335 if [ "$guest_agent" != "no" ]; then
4336 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4337 tools
="qemu-ga\$(EXESUF) $tools"
4338 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4339 tools
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4342 elif [ "$guest_agent" != yes ]; then
4345 error_exit
"Guest agent is not supported on this platform"
4349 # Mac OS X ships with a broken assembler
4351 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4352 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4353 "$softmmu" = yes ; then
4356 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4357 roms
="$roms spapr-rtas"
4360 if test "$cpu" = "s390x" ; then
4361 roms
="$roms s390-ccw"
4364 # Probe for the need for relocating the user-only binary.
4365 if test "$pie" = "no" ; then
4368 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4369 # ??? Rationale for choosing this address
4370 textseg_addr
=0x60000000
4373 # A 256M aligned address, high in the address space, with enough
4374 # room for the code_gen_buffer above it before the stack.
4375 textseg_addr
=0x60000000
4378 if [ -n "$textseg_addr" ]; then
4380 int main(void) { return 0; }
4382 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4383 if ! compile_prog
"" "$textseg_ldflags"; then
4384 # In case ld does not support -Ttext-segment, edit the default linker
4385 # script via sed to set the .text start addr. This is needed on FreeBSD
4387 $ld --verbose |
sed \
4388 -e '1,/==================================================/d' \
4389 -e '/==================================================/,$d' \
4390 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4391 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4392 textseg_ldflags
="-Wl,-T../config-host.ld"
4397 # prepend pixman and ftd flags after all config tests are done
4398 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4399 libs_softmmu
="$pixman_libs $libs_softmmu"
4401 echo "Install prefix $prefix"
4402 echo "BIOS directory `eval echo $qemu_datadir`"
4403 echo "binary directory `eval echo $bindir`"
4404 echo "library directory `eval echo $libdir`"
4405 echo "module directory `eval echo $qemu_moddir`"
4406 echo "libexec directory `eval echo $libexecdir`"
4407 echo "include directory `eval echo $includedir`"
4408 echo "config directory `eval echo $sysconfdir`"
4409 if test "$mingw32" = "no" ; then
4410 echo "local state directory `eval echo $local_statedir`"
4411 echo "Manual directory `eval echo $mandir`"
4412 echo "ELF interp prefix $interp_prefix"
4414 echo "local state directory queried at runtime"
4415 echo "Windows SDK $win_sdk"
4417 echo "Source path $source_path"
4418 echo "C compiler $cc"
4419 echo "Host C compiler $host_cc"
4420 echo "C++ compiler $cxx"
4421 echo "Objective-C compiler $objcc"
4422 echo "ARFLAGS $ARFLAGS"
4423 echo "CFLAGS $CFLAGS"
4424 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4425 echo "LDFLAGS $LDFLAGS"
4427 echo "install $install"
4428 echo "python $python"
4429 if test "$slirp" = "yes" ; then
4432 echo "module support $modules"
4433 echo "host CPU $cpu"
4434 echo "host big endian $bigendian"
4435 echo "target list $target_list"
4436 echo "tcg debug enabled $debug_tcg"
4437 echo "gprof enabled $gprof"
4438 echo "sparse enabled $sparse"
4439 echo "strip binaries $strip_opt"
4440 echo "profiler $profiler"
4441 echo "static build $static"
4442 if test "$darwin" = "yes" ; then
4443 echo "Cocoa support $cocoa"
4445 echo "pixman $pixman"
4446 echo "SDL support $sdl"
4447 echo "GTK support $gtk"
4448 echo "VTE support $vte"
4449 echo "curses support $curses"
4450 echo "curl support $curl"
4451 echo "mingw32 support $mingw32"
4452 echo "Audio drivers $audio_drv_list"
4453 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4454 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4455 echo "VirtFS support $virtfs"
4456 echo "VNC support $vnc"
4457 if test "$vnc" = "yes" ; then
4458 echo "VNC TLS support $vnc_tls"
4459 echo "VNC SASL support $vnc_sasl"
4460 echo "VNC JPEG support $vnc_jpeg"
4461 echo "VNC PNG support $vnc_png"
4462 echo "VNC WS support $vnc_ws"
4464 if test -n "$sparc_cpu"; then
4465 echo "Target Sparc Arch $sparc_cpu"
4467 echo "xen support $xen"
4468 if test "$xen" = "yes" ; then
4469 echo "xen ctrl version $xen_ctrl_version"
4471 echo "brlapi support $brlapi"
4472 echo "bluez support $bluez"
4473 echo "Documentation $docs"
4474 echo "GUEST_BASE $guest_base"
4476 echo "vde support $vde"
4477 echo "netmap support $netmap"
4478 echo "Linux AIO support $linux_aio"
4479 echo "ATTR/XATTR support $attr"
4480 echo "Install blobs $blobs"
4481 echo "KVM support $kvm"
4482 echo "RDMA support $rdma"
4483 echo "TCG interpreter $tcg_interpreter"
4484 echo "fdt support $fdt"
4485 echo "preadv support $preadv"
4486 echo "fdatasync $fdatasync"
4487 echo "madvise $madvise"
4488 echo "posix_madvise $posix_madvise"
4489 echo "sigev_thread_id $sigev_thread_id"
4490 echo "uuid support $uuid"
4491 echo "libcap-ng support $cap_ng"
4492 echo "vhost-net support $vhost_net"
4493 echo "vhost-scsi support $vhost_scsi"
4494 echo "Trace backends $trace_backends"
4495 if test "$trace_backend" = "simple"; then
4496 echo "Trace output file $trace_file-<pid>"
4498 if test "$spice" = "yes"; then
4499 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4501 echo "spice support $spice"
4503 echo "rbd support $rbd"
4504 echo "xfsctl support $xfs"
4505 echo "nss used $smartcard_nss"
4506 echo "libusb $libusb"
4507 echo "usb net redir $usb_redir"
4508 echo "OpenGL support $opengl"
4509 echo "libiscsi support $libiscsi"
4510 echo "libnfs support $libnfs"
4511 echo "build guest agent $guest_agent"
4512 echo "QGA VSS support $guest_agent_with_vss"
4513 echo "QGA w32 disk info $guest_agent_ntddscsi"
4514 echo "seccomp support $seccomp"
4515 echo "coroutine backend $coroutine"
4516 echo "coroutine pool $coroutine_pool"
4517 echo "GlusterFS support $glusterfs"
4518 echo "Archipelago support $archipelago"
4519 echo "gcov $gcov_tool"
4520 echo "gcov enabled $gcov"
4521 echo "TPM support $tpm"
4522 echo "libssh2 support $libssh2"
4523 echo "TPM passthrough $tpm_passthrough"
4524 echo "QOM debugging $qom_cast_debug"
4526 echo "Quorum $quorum"
4527 echo "lzo support $lzo"
4528 echo "snappy support $snappy"
4529 echo "bzip2 support $bzip2"
4530 echo "NUMA host support $numa"
4531 echo "tcmalloc support $tcmalloc"
4533 if test "$sdl_too_old" = "yes"; then
4534 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4537 config_host_mak
="config-host.mak"
4539 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4541 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4542 echo >> $config_host_mak
4544 echo all
: >> $config_host_mak
4545 echo "prefix=$prefix" >> $config_host_mak
4546 echo "bindir=$bindir" >> $config_host_mak
4547 echo "libdir=$libdir" >> $config_host_mak
4548 echo "libexecdir=$libexecdir" >> $config_host_mak
4549 echo "includedir=$includedir" >> $config_host_mak
4550 echo "mandir=$mandir" >> $config_host_mak
4551 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4552 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4553 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4554 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4555 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4556 if test "$mingw32" = "no" ; then
4557 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4559 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4560 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4561 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4562 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4563 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4565 echo "ARCH=$ARCH" >> $config_host_mak
4567 if test "$debug_tcg" = "yes" ; then
4568 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4570 if test "$strip_opt" = "yes" ; then
4571 echo "STRIP=${strip}" >> $config_host_mak
4573 if test "$bigendian" = "yes" ; then
4574 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4576 if test "$mingw32" = "yes" ; then
4577 echo "CONFIG_WIN32=y" >> $config_host_mak
4578 rc_version
=`cat $source_path/VERSION`
4579 version_major
=${rc_version%%.*}
4580 rc_version
=${rc_version#*.}
4581 version_minor
=${rc_version%%.*}
4582 rc_version
=${rc_version#*.}
4583 version_subminor
=${rc_version%%.*}
4585 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4586 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4587 if test "$guest_agent_with_vss" = "yes" ; then
4588 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4589 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4591 if test "$guest_agent_ntddscsi" = "yes" ; then
4592 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4594 if test "$guest_agent_msi" != "no"; then
4595 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4596 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4597 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4598 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4599 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4600 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4601 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4604 echo "CONFIG_POSIX=y" >> $config_host_mak
4607 if test "$linux" = "yes" ; then
4608 echo "CONFIG_LINUX=y" >> $config_host_mak
4611 if test "$darwin" = "yes" ; then
4612 echo "CONFIG_DARWIN=y" >> $config_host_mak
4615 if test "$aix" = "yes" ; then
4616 echo "CONFIG_AIX=y" >> $config_host_mak
4619 if test "$solaris" = "yes" ; then
4620 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4621 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4622 if test "$needs_libsunmath" = "yes" ; then
4623 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4626 if test "$haiku" = "yes" ; then
4627 echo "CONFIG_HAIKU=y" >> $config_host_mak
4629 if test "$static" = "yes" ; then
4630 echo "CONFIG_STATIC=y" >> $config_host_mak
4632 if test "$profiler" = "yes" ; then
4633 echo "CONFIG_PROFILER=y" >> $config_host_mak
4635 if test "$slirp" = "yes" ; then
4636 echo "CONFIG_SLIRP=y" >> $config_host_mak
4637 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4639 if test "$vde" = "yes" ; then
4640 echo "CONFIG_VDE=y" >> $config_host_mak
4642 if test "$netmap" = "yes" ; then
4643 echo "CONFIG_NETMAP=y" >> $config_host_mak
4645 if test "$l2tpv3" = "yes" ; then
4646 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4648 if test "$cap_ng" = "yes" ; then
4649 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4651 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4652 for drv
in $audio_drv_list; do
4653 def
=CONFIG_
`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4654 echo "$def=y" >> $config_host_mak
4656 if test "$audio_pt_int" = "yes" ; then
4657 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4659 if test "$audio_win_int" = "yes" ; then
4660 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4662 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4663 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4664 if test "$vnc" = "yes" ; then
4665 echo "CONFIG_VNC=y" >> $config_host_mak
4667 if test "$vnc_tls" = "yes" ; then
4668 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4670 if test "$vnc_sasl" = "yes" ; then
4671 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4673 if test "$vnc_jpeg" = "yes" ; then
4674 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4676 if test "$vnc_png" = "yes" ; then
4677 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4679 if test "$vnc_ws" = "yes" ; then
4680 echo "CONFIG_VNC_WS=y" >> $config_host_mak
4681 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
4683 if test "$fnmatch" = "yes" ; then
4684 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4686 if test "$uuid" = "yes" ; then
4687 echo "CONFIG_UUID=y" >> $config_host_mak
4689 if test "$xfs" = "yes" ; then
4690 echo "CONFIG_XFS=y" >> $config_host_mak
4692 qemu_version
=`head $source_path/VERSION`
4693 echo "VERSION=$qemu_version" >>$config_host_mak
4694 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4695 echo "SRC_PATH=$source_path" >> $config_host_mak
4696 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4697 if [ "$docs" = "yes" ] ; then
4698 echo "BUILD_DOCS=yes" >> $config_host_mak
4700 if test "$modules" = "yes"; then
4701 # $shacmd can generate a hash started with digit, which the compiler doesn't
4702 # like as an symbol. So prefix it with an underscore
4703 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4704 echo "CONFIG_MODULES=y" >> $config_host_mak
4706 if test "$sdl" = "yes" ; then
4707 echo "CONFIG_SDL=y" >> $config_host_mak
4708 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4709 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4711 if test "$cocoa" = "yes" ; then
4712 echo "CONFIG_COCOA=y" >> $config_host_mak
4714 if test "$curses" = "yes" ; then
4715 echo "CONFIG_CURSES=y" >> $config_host_mak
4717 if test "$utimens" = "yes" ; then
4718 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4720 if test "$pipe2" = "yes" ; then
4721 echo "CONFIG_PIPE2=y" >> $config_host_mak
4723 if test "$accept4" = "yes" ; then
4724 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4726 if test "$splice" = "yes" ; then
4727 echo "CONFIG_SPLICE=y" >> $config_host_mak
4729 if test "$eventfd" = "yes" ; then
4730 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4732 if test "$fallocate" = "yes" ; then
4733 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4735 if test "$fallocate_punch_hole" = "yes" ; then
4736 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4738 if test "$fallocate_zero_range" = "yes" ; then
4739 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4741 if test "$posix_fallocate" = "yes" ; then
4742 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4744 if test "$sync_file_range" = "yes" ; then
4745 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4747 if test "$fiemap" = "yes" ; then
4748 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4750 if test "$dup3" = "yes" ; then
4751 echo "CONFIG_DUP3=y" >> $config_host_mak
4753 if test "$ppoll" = "yes" ; then
4754 echo "CONFIG_PPOLL=y" >> $config_host_mak
4756 if test "$prctl_pr_set_timerslack" = "yes" ; then
4757 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4759 if test "$epoll" = "yes" ; then
4760 echo "CONFIG_EPOLL=y" >> $config_host_mak
4762 if test "$epoll_create1" = "yes" ; then
4763 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4765 if test "$epoll_pwait" = "yes" ; then
4766 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4768 if test "$sendfile" = "yes" ; then
4769 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4771 if test "$timerfd" = "yes" ; then
4772 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4774 if test "$setns" = "yes" ; then
4775 echo "CONFIG_SETNS=y" >> $config_host_mak
4777 if test "$inotify" = "yes" ; then
4778 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4780 if test "$inotify1" = "yes" ; then
4781 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4783 if test "$byteswap_h" = "yes" ; then
4784 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4786 if test "$bswap_h" = "yes" ; then
4787 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4789 if test "$curl" = "yes" ; then
4790 echo "CONFIG_CURL=m" >> $config_host_mak
4791 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4792 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4794 if test "$brlapi" = "yes" ; then
4795 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4797 if test "$bluez" = "yes" ; then
4798 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4799 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4801 if test "$glib_subprocess" = "yes" ; then
4802 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4804 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4805 if test "$gtk" = "yes" ; then
4806 echo "CONFIG_GTK=y" >> $config_host_mak
4807 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4808 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4810 if test "$vte" = "yes" ; then
4811 echo "CONFIG_VTE=y" >> $config_host_mak
4812 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4814 if test "$xen" = "yes" ; then
4815 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4816 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4818 if test "$linux_aio" = "yes" ; then
4819 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4821 if test "$attr" = "yes" ; then
4822 echo "CONFIG_ATTR=y" >> $config_host_mak
4824 if test "$libattr" = "yes" ; then
4825 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4827 if test "$virtfs" = "yes" ; then
4828 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4830 if test "$vhost_scsi" = "yes" ; then
4831 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4833 if test "$vhost_net" = "yes" ; then
4834 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4836 if test "$blobs" = "yes" ; then
4837 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4839 if test "$iovec" = "yes" ; then
4840 echo "CONFIG_IOVEC=y" >> $config_host_mak
4842 if test "$preadv" = "yes" ; then
4843 echo "CONFIG_PREADV=y" >> $config_host_mak
4845 if test "$fdt" = "yes" ; then
4846 echo "CONFIG_FDT=y" >> $config_host_mak
4848 if test "$signalfd" = "yes" ; then
4849 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4851 if test "$tcg_interpreter" = "yes" ; then
4852 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4854 if test "$fdatasync" = "yes" ; then
4855 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4857 if test "$madvise" = "yes" ; then
4858 echo "CONFIG_MADVISE=y" >> $config_host_mak
4860 if test "$posix_madvise" = "yes" ; then
4861 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4863 if test "$sigev_thread_id" = "yes" ; then
4864 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4867 if test "$spice" = "yes" ; then
4868 echo "CONFIG_SPICE=y" >> $config_host_mak
4871 if test "$smartcard_nss" = "yes" ; then
4872 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4873 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4874 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4877 if test "$libusb" = "yes" ; then
4878 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4881 if test "$usb_redir" = "yes" ; then
4882 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4885 if test "$opengl" = "yes" ; then
4886 echo "CONFIG_OPENGL=y" >> $config_host_mak
4887 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4888 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4891 if test "$lzo" = "yes" ; then
4892 echo "CONFIG_LZO=y" >> $config_host_mak
4895 if test "$snappy" = "yes" ; then
4896 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4899 if test "$bzip2" = "yes" ; then
4900 echo "CONFIG_BZIP2=y" >> $config_host_mak
4901 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4904 if test "$libiscsi" = "yes" ; then
4905 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4906 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4907 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4910 if test "$libnfs" = "yes" ; then
4911 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4914 if test "$seccomp" = "yes"; then
4915 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4918 # XXX: suppress that
4919 if [ "$bsd" = "yes" ] ; then
4920 echo "CONFIG_BSD=y" >> $config_host_mak
4923 if test "$zero_malloc" = "yes" ; then
4924 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4926 if test "$qom_cast_debug" = "yes" ; then
4927 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4929 if test "$rbd" = "yes" ; then
4930 echo "CONFIG_RBD=m" >> $config_host_mak
4931 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
4932 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4935 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4936 if test "$coroutine_pool" = "yes" ; then
4937 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4939 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4942 if test "$open_by_handle_at" = "yes" ; then
4943 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
4946 if test "$linux_magic_h" = "yes" ; then
4947 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4950 if test "$pragma_diagnostic_available" = "yes" ; then
4951 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
4954 if test "$valgrind_h" = "yes" ; then
4955 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
4958 if test "$has_environ" = "yes" ; then
4959 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
4962 if test "$cpuid_h" = "yes" ; then
4963 echo "CONFIG_CPUID_H=y" >> $config_host_mak
4966 if test "$int128" = "yes" ; then
4967 echo "CONFIG_INT128=y" >> $config_host_mak
4970 if test "$getauxval" = "yes" ; then
4971 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
4974 if test "$glusterfs" = "yes" ; then
4975 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
4976 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
4977 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
4980 if test "$glusterfs_discard" = "yes" ; then
4981 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
4984 if test "$glusterfs_zerofill" = "yes" ; then
4985 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
4988 if test "$archipelago" = "yes" ; then
4989 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
4990 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
4993 if test "$libssh2" = "yes" ; then
4994 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
4995 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
4996 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
4999 if test "$quorum" = "yes" ; then
5000 echo "CONFIG_QUORUM=y" >> $config_host_mak
5003 if test "$vhdx" = "yes" ; then
5004 echo "CONFIG_VHDX=y" >> $config_host_mak
5008 if test "$libusb" = "yes"; then
5009 echo "HOST_USB=libusb legacy" >> $config_host_mak
5011 echo "HOST_USB=stub" >> $config_host_mak
5014 # TPM passthrough support?
5015 if test "$tpm" = "yes"; then
5016 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5017 if test "$tpm_passthrough" = "yes"; then
5018 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5022 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5023 if have_backend
"nop"; then
5024 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5026 if have_backend
"simple"; then
5027 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5028 # Set the appropriate trace file.
5029 trace_file
="\"$trace_file-\" FMT_pid"
5031 if have_backend
"stderr"; then
5032 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5034 if have_backend
"ust"; then
5035 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5037 if have_backend
"dtrace"; then
5038 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5039 if test "$trace_backend_stap" = "yes" ; then
5040 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5043 if have_backend
"ftrace"; then
5044 if test "$linux" = "yes" ; then
5045 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5047 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5050 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5052 if test "$rdma" = "yes" ; then
5053 echo "CONFIG_RDMA=y" >> $config_host_mak
5056 # Hold two types of flag:
5057 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5058 # a thread we have a handle to
5059 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5061 if test "$pthread_setname_np" = "yes" ; then
5062 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5063 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5066 if test "$tcg_interpreter" = "yes"; then
5067 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5068 elif test "$ARCH" = "sparc64" ; then
5069 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5070 elif test "$ARCH" = "s390x" ; then
5071 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5072 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5073 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5074 elif test "$ARCH" = "ppc64" ; then
5075 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5077 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5079 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5081 echo "TOOLS=$tools" >> $config_host_mak
5082 echo "ROMS=$roms" >> $config_host_mak
5083 echo "MAKE=$make" >> $config_host_mak
5084 echo "INSTALL=$install" >> $config_host_mak
5085 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5086 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5087 if test -n "$libtool"; then
5088 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5089 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5091 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5092 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5094 echo "PYTHON=$python" >> $config_host_mak
5095 echo "CC=$cc" >> $config_host_mak
5096 if $iasl -h > /dev
/null
2>&1; then
5097 echo "IASL=$iasl" >> $config_host_mak
5099 echo "CC_I386=$cc_i386" >> $config_host_mak
5100 echo "HOST_CC=$host_cc" >> $config_host_mak
5101 echo "CXX=$cxx" >> $config_host_mak
5102 echo "OBJCC=$objcc" >> $config_host_mak
5103 echo "AR=$ar" >> $config_host_mak
5104 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5105 echo "AS=$as" >> $config_host_mak
5106 echo "CPP=$cpp" >> $config_host_mak
5107 echo "OBJCOPY=$objcopy" >> $config_host_mak
5108 echo "LD=$ld" >> $config_host_mak
5109 echo "NM=$nm" >> $config_host_mak
5110 echo "WINDRES=$windres" >> $config_host_mak
5111 echo "LIBTOOL=$libtool" >> $config_host_mak
5112 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5113 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5114 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5115 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5116 if test "$sparse" = "yes" ; then
5117 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5118 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5119 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5120 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5121 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5123 if test "$cross_prefix" != ""; then
5124 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5126 echo "AUTOCONF_HOST := " >> $config_host_mak
5128 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5129 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5130 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5131 echo "LIBS+=$LIBS" >> $config_host_mak
5132 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5133 echo "EXESUF=$EXESUF" >> $config_host_mak
5134 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5135 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5136 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5137 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5138 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5139 if test "$gcov" = "yes" ; then
5140 echo "CONFIG_GCOV=y" >> $config_host_mak
5141 echo "GCOV=$gcov_tool" >> $config_host_mak
5144 # use included Linux headers
5145 if test "$linux" = "yes" ; then
5146 mkdir
-p linux-headers
5164 # For most CPUs the kernel architecture name and QEMU CPU name match.
5168 # For non-KVM architectures we will not have asm headers
5169 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5170 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5174 for target
in $target_list; do
5175 target_dir
="$target"
5176 config_target_mak
=$target_dir/config-target.mak
5177 target_name
=`echo $target | cut -d '-' -f 1`
5178 target_bigendian
="no"
5180 case "$target_name" in
5181 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5182 target_bigendian
=yes
5186 target_user_only
="no"
5187 target_linux_user
="no"
5188 target_bsd_user
="no"
5190 ${target_name}-softmmu)
5191 target_softmmu
="yes"
5193 ${target_name}-linux-user)
5194 if test "$linux" != "yes" ; then
5195 error_exit
"Target '$target' is only available on a Linux host"
5197 target_user_only
="yes"
5198 target_linux_user
="yes"
5200 ${target_name}-bsd-user)
5201 if test "$bsd" != "yes" ; then
5202 error_exit
"Target '$target' is only available on a BSD host"
5204 target_user_only
="yes"
5205 target_bsd_user
="yes"
5208 error_exit
"Target '$target' not recognised"
5213 mkdir
-p $target_dir
5214 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5217 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5220 TARGET_ARCH
="$target_name"
5224 case "$target_name" in
5228 TARGET_BASE_ARCH
=i386
5235 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5238 TARGET_BASE_ARCH
=arm
5240 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5248 gdb_xml_files
="cf-core.xml cf-fp.xml"
5250 microblaze|microblazeel
)
5251 TARGET_ARCH
=microblaze
5256 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5260 TARGET_BASE_ARCH
=mips
5261 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5262 echo "TARGET_ABI32=y" >> $config_target_mak
5266 TARGET_BASE_ARCH
=mips
5267 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5272 TARGET_ARCH
=openrisc
5273 TARGET_BASE_ARCH
=openrisc
5276 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5279 TARGET_BASE_ARCH
=ppc
5281 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5284 TARGET_BASE_ARCH
=ppc
5286 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5290 TARGET_BASE_ARCH
=ppc
5292 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5296 TARGET_BASE_ARCH
=ppc
5298 echo "TARGET_ABI32=y" >> $config_target_mak
5299 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5308 TARGET_BASE_ARCH
=sparc
5312 TARGET_BASE_ARCH
=sparc
5313 TARGET_ABI_DIR
=sparc
5314 echo "TARGET_ABI32=y" >> $config_target_mak
5317 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5327 error_exit
"Unsupported target CPU"
5330 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5331 if [ "$TARGET_BASE_ARCH" = "" ]; then
5332 TARGET_BASE_ARCH
=$TARGET_ARCH
5335 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5338 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5341 target_arch_name
="`upper $TARGET_ARCH`"
5342 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5343 echo "TARGET_NAME=$target_name" >> $config_target_mak
5344 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5345 if [ "$TARGET_ABI_DIR" = "" ]; then
5346 TARGET_ABI_DIR
=$TARGET_ARCH
5348 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5349 if [ "$HOST_VARIANT_DIR" != "" ]; then
5350 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5352 case "$target_name" in
5354 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5355 echo "CONFIG_XEN=y" >> $config_target_mak
5356 if test "$xen_pci_passthrough" = yes; then
5357 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5363 case "$target_name" in
5364 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5365 # Make sure the target and host cpus are compatible
5366 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5367 \
( "$target_name" = "$cpu" -o \
5368 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5369 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5370 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5371 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5372 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5373 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5374 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5375 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5376 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5377 echo "CONFIG_KVM=y" >> $config_target_mak
5378 if test "$vhost_net" = "yes" ; then
5379 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5383 if test "$target_bigendian" = "yes" ; then
5384 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5386 if test "$target_softmmu" = "yes" ; then
5387 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5389 if test "$target_user_only" = "yes" ; then
5390 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5391 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5393 if test "$target_linux_user" = "yes" ; then
5394 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5397 if test ! -z "$gdb_xml_files" ; then
5398 for x
in $gdb_xml_files; do
5399 list
="$list $source_path/gdb-xml/$x"
5401 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5404 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5405 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5407 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5408 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5410 if test "$target_bsd_user" = "yes" ; then
5411 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5414 # generate QEMU_CFLAGS/LDFLAGS for targets
5419 for i
in $ARCH $TARGET_BASE_ARCH ; do
5422 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5423 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5426 if test -n "${cxx}"; then
5427 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5428 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5432 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5433 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5434 if test -n "${cxx}"; then
5435 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5436 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5440 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5441 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5444 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5445 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5448 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5449 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5452 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5453 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5456 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5457 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5460 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5461 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5464 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5465 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5468 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5469 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5472 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5473 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5476 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5477 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5480 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5481 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5484 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5485 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5488 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5489 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5492 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5493 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5496 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5497 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5501 if test "$tcg_interpreter" = "yes" ; then
5502 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5503 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5508 # Ensure there's only a single GP
5509 cflags
="-msmall-data $cflags"
5513 if test "$gprof" = "yes" ; then
5514 echo "TARGET_GPROF=yes" >> $config_target_mak
5515 if test "$target_linux_user" = "yes" ; then
5517 ldflags
="-p $ldflags"
5519 if test "$target_softmmu" = "yes" ; then
5520 ldflags
="-p $ldflags"
5521 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5525 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5526 ldflags
="$ldflags $textseg_ldflags"
5529 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5530 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5532 done # for target in $targets
5534 if [ "$pixman" = "internal" ]; then
5535 echo "config-host.h: subdir-pixman" >> $config_host_mak
5538 if test "$rdma" = "yes" ; then
5539 echo "CONFIG_RDMA=y" >> $config_host_mak
5542 if [ "$dtc_internal" = "yes" ]; then
5543 echo "config-host.h: subdir-dtc" >> $config_host_mak
5546 if test "$numa" = "yes"; then
5547 echo "CONFIG_NUMA=y" >> $config_host_mak
5550 if test "$ccache_cpp2" = "yes"; then
5551 echo "export CCACHE_CPP2=y" >> $config_host_mak
5554 # build tree in object directory in case the source is not in the current directory
5555 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5557 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5558 DIRS
="$DIRS roms/seabios roms/vgabios"
5559 DIRS
="$DIRS qapi-generated"
5560 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
5561 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5562 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5563 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5564 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
5565 FILES
="$FILES pc-bios/s390-ccw/Makefile"
5566 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5567 FILES
="$FILES pc-bios/qemu-icon.bmp"
5569 $source_path/pc-bios
/*.bin \
5570 $source_path/pc-bios
/*.aml \
5571 $source_path/pc-bios
/*.rom \
5572 $source_path/pc-bios
/*.dtb \
5573 $source_path/pc-bios
/*.img \
5574 $source_path/pc-bios
/openbios-
* \
5575 $source_path/pc-bios
/u-boot.
* \
5576 $source_path/pc-bios
/palcode-
*
5578 FILES
="$FILES pc-bios/`basename $bios_file`"
5580 for test_file
in `find $source_path/tests/acpi-test-data -type f`
5582 FILES
="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5585 for f
in $FILES ; do
5586 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5587 symlink
"$source_path/$f" "$f"
5591 # temporary config to build submodules
5592 for rom
in seabios vgabios
; do
5593 config_mak
=roms
/$rom/config.mak
5594 echo "# Automatically generated by configure - do not modify" > $config_mak
5595 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5596 echo "AS=$as" >> $config_mak
5597 echo "CC=$cc" >> $config_mak
5598 echo "BCC=bcc" >> $config_mak
5599 echo "CPP=$cpp" >> $config_mak
5600 echo "OBJCOPY=objcopy" >> $config_mak
5601 echo "IASL=$iasl" >> $config_mak
5602 echo "LD=$ld" >> $config_mak
5605 # set up qemu-iotests in this build directory
5606 iotests_common_env
="tests/qemu-iotests/common.env"
5607 iotests_check
="tests/qemu-iotests/check"
5609 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5610 echo >> "$iotests_common_env"
5611 echo "export PYTHON='$python'" >> "$iotests_common_env"
5613 if [ ! -e "$iotests_check" ]; then
5614 symlink
"$source_path/$iotests_check" "$iotests_check"
5617 # Save the configure command line for later reuse.
5618 cat <<EOD >config.status
5620 # Generated by configure.
5621 # Run this file to recreate the current configuration.
5622 # Compiler output produced by configure, useful for debugging
5623 # configure, is in config.log if it exists.
5625 printf "exec" >>config.status
5626 printf " '%s'" "$0" "$@" >>config.status
5627 echo >>config.status
5628 chmod +x config.status