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.
251 xen_pci_passthrough
=""
273 LDFLAGS_SHARED
="-shared"
276 mandir
="\${prefix}/share/man"
277 datadir
="\${prefix}/share"
278 qemu_docdir
="\${prefix}/share/doc/qemu"
279 bindir
="\${prefix}/bin"
280 libdir
="\${prefix}/lib"
281 libexecdir
="\${prefix}/libexec"
282 includedir
="\${prefix}/include"
283 sysconfdir
="\${prefix}/etc"
284 local_statedir
="\${prefix}/var"
316 guest_agent_with_vss
="no"
317 guest_agent_ntddscsi
="no"
328 glusterfs_discard
="no"
329 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-slirp) slirp
="no"
901 --disable-uuid) uuid
="no"
903 --enable-uuid) uuid
="yes"
905 --disable-vde) vde
="no"
907 --enable-vde) vde
="yes"
909 --disable-netmap) netmap
="no"
911 --enable-netmap) netmap
="yes"
913 --disable-xen) xen
="no"
915 --enable-xen) xen
="yes"
917 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
919 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
921 --disable-brlapi) brlapi
="no"
923 --enable-brlapi) brlapi
="yes"
925 --disable-bluez) bluez
="no"
927 --enable-bluez) bluez
="yes"
929 --disable-kvm) kvm
="no"
931 --enable-kvm) kvm
="yes"
933 --disable-tcg-interpreter) tcg_interpreter
="no"
935 --enable-tcg-interpreter) tcg_interpreter
="yes"
937 --disable-cap-ng) cap_ng
="no"
939 --enable-cap-ng) cap_ng
="yes"
941 --disable-spice) spice
="no"
943 --enable-spice) spice
="yes"
945 --disable-libiscsi) libiscsi
="no"
947 --enable-libiscsi) libiscsi
="yes"
949 --disable-libnfs) libnfs
="no"
951 --enable-libnfs) libnfs
="yes"
953 --enable-profiler) profiler
="yes"
955 --disable-cocoa) cocoa
="no"
960 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
962 --disable-system) softmmu
="no"
964 --enable-system) softmmu
="yes"
971 --disable-linux-user) linux_user
="no"
973 --enable-linux-user) linux_user
="yes"
975 --disable-bsd-user) bsd_user
="no"
977 --enable-bsd-user) bsd_user
="yes"
979 --enable-guest-base) guest_base
="yes"
981 --disable-guest-base) guest_base
="no"
983 --enable-pie) pie
="yes"
985 --disable-pie) pie
="no"
987 --enable-werror) werror
="yes"
989 --disable-werror) werror
="no"
991 --enable-stack-protector) stack_protector
="yes"
993 --disable-stack-protector) stack_protector
="no"
995 --disable-curses) curses
="no"
997 --enable-curses) curses
="yes"
999 --disable-curl) curl
="no"
1001 --enable-curl) curl
="yes"
1003 --disable-fdt) fdt
="no"
1005 --enable-fdt) fdt
="yes"
1007 --disable-linux-aio) linux_aio
="no"
1009 --enable-linux-aio) linux_aio
="yes"
1011 --disable-attr) attr
="no"
1013 --enable-attr) attr
="yes"
1015 --disable-blobs) blobs
="no"
1017 --with-pkgversion=*) pkgversion
=" ($optarg)"
1019 --with-coroutine=*) coroutine
="$optarg"
1021 --disable-coroutine-pool) coroutine_pool
="no"
1023 --enable-coroutine-pool) coroutine_pool
="yes"
1025 --disable-docs) docs
="no"
1027 --enable-docs) docs
="yes"
1029 --disable-vhost-net) vhost_net
="no"
1031 --enable-vhost-net) vhost_net
="yes"
1033 --disable-vhost-scsi) vhost_scsi
="no"
1035 --enable-vhost-scsi) vhost_scsi
="yes"
1037 --disable-opengl) opengl
="no"
1039 --enable-opengl) opengl
="yes"
1041 --disable-rbd) rbd
="no"
1043 --enable-rbd) rbd
="yes"
1045 --disable-xfsctl) xfs
="no"
1047 --enable-xfsctl) xfs
="yes"
1049 --disable-smartcard-nss) smartcard_nss
="no"
1051 --enable-smartcard-nss) smartcard_nss
="yes"
1053 --disable-libusb) libusb
="no"
1055 --enable-libusb) libusb
="yes"
1057 --disable-usb-redir) usb_redir
="no"
1059 --enable-usb-redir) usb_redir
="yes"
1061 --disable-zlib-test) zlib
="no"
1063 --disable-lzo) lzo
="no"
1065 --enable-lzo) lzo
="yes"
1067 --disable-snappy) snappy
="no"
1069 --enable-snappy) snappy
="yes"
1071 --disable-bzip2) bzip2="no"
1073 --enable-bzip2) bzip2="yes"
1075 --enable-guest-agent) guest_agent
="yes"
1077 --disable-guest-agent) guest_agent
="no"
1079 --enable-guest-agent-msi) guest_agent_msi
="yes"
1081 --disable-guest-agent-msi) guest_agent_msi
="no"
1083 --with-vss-sdk) vss_win32_sdk
=""
1085 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1087 --without-vss-sdk) vss_win32_sdk
="no"
1089 --with-win-sdk) win_sdk
=""
1091 --with-win-sdk=*) win_sdk
="$optarg"
1093 --without-win-sdk) win_sdk
="no"
1095 --enable-tools) want_tools
="yes"
1097 --disable-tools) want_tools
="no"
1099 --enable-seccomp) seccomp
="yes"
1101 --disable-seccomp) seccomp
="no"
1103 --disable-glusterfs) glusterfs
="no"
1105 --enable-glusterfs) glusterfs
="yes"
1107 --disable-archipelago) archipelago
="no"
1109 --enable-archipelago) archipelago
="yes"
1111 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1112 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1114 --disable-gtk) gtk
="no"
1116 --enable-gtk) gtk
="yes"
1118 --disable-gnutls) gnutls
="no"
1120 --enable-gnutls) gnutls
="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-numa) numa
="no"
1146 --enable-numa) numa
="yes"
1148 --disable-tcmalloc) tcmalloc
="no"
1150 --enable-tcmalloc) tcmalloc
="yes"
1153 echo "ERROR: unknown option $opt"
1154 echo "Try '$0 --help' for more information"
1160 if ! has
$python; then
1161 error_exit
"Python not found. Use --python=/path/to/python"
1164 # Note that if the Python conditional here evaluates True we will exit
1165 # with status 1 which is a shell 'false' value.
1166 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1167 error_exit
"Cannot use '$python', Python 2.4 or later is required." \
1168 "Note that Python 3 or later is not yet supported." \
1169 "Use --python=/path/to/python to specify a supported Python."
1172 # The -B switch was added in Python 2.6.
1173 # If it is supplied, compiled files are not written.
1174 # Use it for Python versions which support it.
1175 if $python -B -c 'import sys; sys.exit(0)' 2>/dev
/null
; then
1182 LDFLAGS
="-m32 $LDFLAGS"
1186 LDFLAGS
="-m64 $LDFLAGS"
1189 LDFLAGS
="-m32 $LDFLAGS"
1190 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1193 LDFLAGS
="-m64 $LDFLAGS"
1194 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1198 LDFLAGS
="-m31 $LDFLAGS"
1202 LDFLAGS
="-m64 $LDFLAGS"
1206 LDFLAGS
="-m32 $LDFLAGS"
1207 cc_i386
='$(CC) -m32'
1211 LDFLAGS
="-m64 $LDFLAGS"
1212 cc_i386
='$(CC) -m32'
1216 LDFLAGS
="-mx32 $LDFLAGS"
1217 cc_i386
='$(CC) -m32'
1219 # No special flags required for other host CPUs
1222 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1223 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1225 default_target_list
=""
1229 if [ "$softmmu" = "yes" ]; then
1230 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1232 if [ "$linux_user" = "yes" ]; then
1233 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1235 if [ "$bsd_user" = "yes" ]; then
1236 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1239 for config
in $mak_wilds; do
1240 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1243 if test x
"$show_help" = x
"yes" ; then
1246 Usage: configure [options]
1247 Options: [defaults in brackets after descriptions]
1250 --help print this message
1251 --prefix=PREFIX install in PREFIX [$prefix]
1252 --interp-prefix=PREFIX where to find shared libraries, etc.
1253 use %M for cpu name [$interp_prefix]
1254 --target-list=LIST set target list (default: build everything)
1255 $(echo Available targets: $default_target_list | \
1256 fold -s -w 53 | sed -e 's/^/ /')
1258 Advanced options (experts only):
1259 --source-path=PATH path of source code [$source_path]
1260 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1261 --cc=CC use C compiler CC [$cc]
1262 --iasl=IASL use ACPI compiler IASL [$iasl]
1263 --host-cc=CC use C compiler CC [$host_cc] for code run at
1265 --cxx=CXX use C++ compiler CXX [$cxx]
1266 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1267 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1268 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1269 --make=MAKE use specified make [$make]
1270 --install=INSTALL use specified install [$install]
1271 --python=PYTHON use specified python [$python]
1272 --smbd=SMBD use specified smbd [$smbd]
1273 --static enable static build [$static]
1274 --mandir=PATH install man pages in PATH
1275 --datadir=PATH install firmware in PATH$confsuffix
1276 --docdir=PATH install documentation in PATH$confsuffix
1277 --bindir=PATH install binaries in PATH
1278 --libdir=PATH install libraries in PATH
1279 --sysconfdir=PATH install config in PATH$confsuffix
1280 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1281 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1282 --enable-debug enable common debug build options
1283 --disable-strip disable stripping binaries
1284 --disable-werror disable compilation abort on warning
1285 --disable-stack-protector disable compiler-provided stack protection
1286 --audio-drv-list=LIST set audio drivers list:
1287 Available drivers: $audio_possible_drivers
1288 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1289 --block-drv-rw-whitelist=L
1290 set block driver read-write whitelist
1291 (affects only QEMU, not qemu-img)
1292 --block-drv-ro-whitelist=L
1293 set block driver read-only whitelist
1294 (affects only QEMU, not qemu-img)
1295 --enable-trace-backends=B Set trace backend
1296 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1297 --with-trace-file=NAME Full PATH,NAME of file to store traces
1299 --disable-slirp disable SLIRP userspace network connectivity
1300 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1301 --oss-lib path to OSS library
1302 --cpu=CPU Build for host CPU [$cpu]
1303 --with-coroutine=BACKEND coroutine backend. Supported options:
1304 gthread, ucontext, sigaltstack, windows
1305 --enable-gcov enable test coverage analysis with gcov
1306 --gcov=GCOV use specified gcov [$gcov_tool]
1307 --disable-blobs disable installing provided firmware blobs
1308 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1309 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1311 Optional features, enabled with --enable-FEATURE and
1312 disabled with --disable-FEATURE, default is enabled if available:
1314 system all system emulation targets
1315 user supported user emulation targets
1316 linux-user all linux usermode emulation targets
1317 bsd-user all BSD usermode emulation targets
1318 guest-base GUEST_BASE support for usermode emulation targets
1319 docs build documentation
1320 guest-agent build the QEMU Guest Agent
1321 guest-agent-msi build guest agent Windows MSI installation package
1322 pie Position Independent Executables
1323 modules modules support
1324 debug-tcg TCG debugging (default is disabled)
1325 debug-info debugging information
1326 sparse sparse checker
1328 gnutls GNUTLS cryptography support
1330 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1332 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1333 vte vte support for the gtk UI
1336 vnc-tls TLS encryption for VNC server
1337 vnc-sasl SASL encryption for VNC server
1338 vnc-jpeg JPEG lossy compression for VNC server
1339 vnc-png PNG compression for VNC server
1340 vnc-ws Websockets support for VNC server
1341 cocoa Cocoa UI (Mac OS X only)
1343 xen xen backend driver support
1345 brlapi BrlAPI (Braile)
1346 curl curl connectivity
1348 bluez bluez stack connectivity
1349 kvm KVM acceleration support
1350 rdma RDMA-based migration support
1352 vde support for vde network
1353 netmap support for netmap network
1354 linux-aio Linux AIO support
1355 cap-ng libcap-ng support
1356 attr attr and xattr support
1357 vhost-net vhost-net acceleration support
1359 rbd rados block device (rbd)
1360 libiscsi iscsi support
1362 smartcard-nss smartcard nss support
1363 libusb libusb (for usb passthrough)
1364 usb-redir usb network redirection support
1365 lzo support of lzo compression library
1366 snappy support of snappy compression library
1367 bzip2 support of bzip2 compression library
1368 (for reading bzip2-compressed dmg images)
1369 seccomp seccomp support
1370 coroutine-pool coroutine freelist (better performance)
1371 glusterfs GlusterFS backend
1372 archipelago Archipelago backend
1374 libssh2 ssh block device support
1375 vhdx support for the Microsoft VHDX image format
1376 numa libnuma support
1377 tcmalloc tcmalloc support
1379 NOTE: The object files are built at the place where configure is launched
1384 # Now we have handled --enable-tcg-interpreter and know we're not just
1385 # printing the help message, bail out if the host CPU isn't supported.
1386 if test "$ARCH" = "unknown"; then
1387 if test "$tcg_interpreter" = "yes" ; then
1388 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1391 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1395 # Consult white-list to determine whether to enable werror
1396 # by default. Only enable by default for git builds
1397 z_version
=`cut -f3 -d. $source_path/VERSION`
1399 if test -z "$werror" ; then
1400 if test -d "$source_path/.git" -a \
1401 "$linux" = "yes" ; then
1408 # check that the C compiler works.
1410 if compile_object
; then
1411 : C compiler works ok
1413 error_exit
"\"$cc\" either does not exist or does not work"
1416 # Check that the C++ compiler exists and works with the C compiler
1419 int c_function(void);
1420 int main(void) { return c_function(); }
1427 int c_function(void);
1429 int c_function(void) { return 42; }
1434 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1435 # C++ compiler $cxx works ok with C compiler $cc
1438 echo "C++ compiler $cxx does not work with C compiler $cc"
1439 echo "Disabling C++ specific optional code"
1443 echo "No C++ compiler available; disabling C++ specific optional code"
1447 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1448 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1449 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1450 gcc_flags
="-Wendif-labels $gcc_flags"
1451 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1452 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1453 # Note that we do not add -Werror to gcc_flags here, because that would
1454 # enable it for all configure tests. If a configure test failed due
1455 # to -Werror this would just silently disable some features,
1456 # so it's too error prone.
1458 cc_has_warning_flag
() {
1461 # Use the positive sense of the flag when testing for -Wno-wombat
1462 # support (gcc will happily accept the -Wno- form of unknown
1464 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1465 compile_prog
"-Werror $optflag" ""
1468 for flag
in $gcc_flags; do
1469 if cc_has_warning_flag
$flag ; then
1470 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1474 if test "$stack_protector" != "no"; then
1475 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1477 for flag
in $gcc_flags; do
1478 # We need to check both a compile and a link, since some compiler
1479 # setups fail only on a .c->.o compile and some only at link time
1480 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1481 compile_prog
"-Werror $flag" ""; then
1482 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1483 LIBTOOLFLAGS
="$LIBTOOLFLAGS -Wc,$flag"
1488 if test "$stack_protector" = yes; then
1489 if test $sp_on = 0; then
1490 error_exit
"Stack protector not supported"
1495 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1496 # large functions that use global variables. The bug is in all releases of
1497 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1498 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1500 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1501 int main(void) { return 0; }
1503 #error No bug in this compiler.
1506 if compile_prog
"-Werror -fno-gcse" "" ; then
1507 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1510 if test "$static" = "yes" ; then
1511 if test "$modules" = "yes" ; then
1512 error_exit
"static and modules are mutually incompatible"
1514 if test "$pie" = "yes" ; then
1515 error_exit
"static and pie are mutually incompatible"
1521 # Unconditional check for compiler __thread support
1523 static __thread int tls_var;
1524 int main(void) { return tls_var; }
1527 if ! compile_prog
"-Werror" "" ; then
1528 error_exit
"Your compiler does not support the __thread specifier for " \
1529 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1532 if test "$pie" = ""; then
1533 case "$cpu-$targetos" in
1534 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1542 if test "$pie" != "no" ; then
1546 # define THREAD __thread
1551 static THREAD int tls_var;
1553 int main(void) { return tls_var; }
1556 if compile_prog
"-fPIE -DPIE" "-pie"; then
1557 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1558 LDFLAGS
="-pie $LDFLAGS"
1560 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1561 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1564 if test "$pie" = "yes"; then
1565 error_exit
"PIE not available due to missing toolchain support"
1567 echo "Disabling PIE due to missing toolchain support"
1572 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1573 CFLAGS_NOPIE
="-fno-pie"
1574 LDFLAGS_NOPIE
="-nopie"
1578 # check for broken gcc and libtool in RHEL5
1579 if test -n "$libtool" -a "$pie" != "no" ; then
1582 void *f(unsigned char *buf, int len);
1583 void *g(unsigned char *buf, int len);
1586 f(unsigned char *buf, int len)
1592 g(unsigned char *buf, int len)
1598 if ! libtool_prog
; then
1599 echo "Disabling libtool due to broken toolchain support"
1604 ##########################################
1605 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1606 # use i686 as default anyway, but for those that don't, an explicit
1607 # specification is necessary
1609 if test "$cpu" = "i386"; then
1611 static int sfaa(int *ptr)
1613 return __sync_fetch_and_and(ptr, 0);
1619 val = __sync_val_compare_and_swap(&val, 0, 1);
1624 if ! compile_prog
"" "" ; then
1625 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1629 #########################################
1630 # Solaris specific configure tool chain decisions
1632 if test "$solaris" = "yes" ; then
1633 if has
$install; then
1636 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1637 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1638 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1640 if test "`path_of $install`" = "/usr/sbin/install" ; then
1641 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1642 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1643 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1648 if test -f /usr
/ccs
/bin
/ar ; then
1649 error_exit
"No path includes ar" \
1650 "Add /usr/ccs/bin to your path and rerun configure"
1652 error_exit
"No path includes ar"
1656 if test -z "${target_list+xxx}" ; then
1657 target_list
="$default_target_list"
1659 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
1662 # Check that we recognised the target name; this allows a more
1663 # friendly error message than if we let it fall through.
1664 for target
in $target_list; do
1665 case " $default_target_list " in
1669 error_exit
"Unknown target name '$target'"
1674 # see if system emulation was really requested
1675 case " $target_list " in
1676 *"-softmmu "*) softmmu
=yes
1682 feature_not_found
() {
1686 error_exit
"User requested feature $feature" \
1687 "configure was not able to find it." \
1692 # big/little endian test
1694 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1695 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1696 extern int foo(short *, short *);
1697 int main(int argc, char *argv[]) {
1698 return foo(big_endian, little_endian);
1702 if compile_object
; then
1703 if grep -q BiGeNdIaN
$TMPO ; then
1705 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1708 echo big
/little
test failed
1711 echo big
/little
test failed
1714 ##########################################
1718 #include <sys/socket.h>
1719 #include <linux/ip.h>
1720 int main(void) { return sizeof(struct mmsghdr); }
1722 if compile_prog
"" "" ; then
1728 ##########################################
1731 if ! has
"$pkg_config_exe"; then
1732 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1735 ##########################################
1738 if test "$linux_user" = "yes"; then
1741 #include <linux/futex.h>
1743 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1749 if ! compile_object
; then
1750 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1754 ##########################################
1757 if test "$zlib" != "no" ; then
1760 int main(void) { zlibVersion(); return 0; }
1762 if compile_prog
"" "-lz" ; then
1765 error_exit
"zlib check failed" \
1766 "Make sure to have the zlib libs and headers installed."
1771 ##########################################
1774 if test "$lzo" != "no" ; then
1776 #include <lzo/lzo1x.h>
1777 int main(void) { lzo_version(); return 0; }
1779 if compile_prog
"" "-llzo2" ; then
1780 libs_softmmu
="$libs_softmmu -llzo2"
1783 if test "$lzo" = "yes"; then
1784 feature_not_found
"liblzo2" "Install liblzo2 devel"
1790 ##########################################
1793 if test "$snappy" != "no" ; then
1795 #include <snappy-c.h>
1796 int main(void) { snappy_max_compressed_length(4096); return 0; }
1798 if compile_prog
"" "-lsnappy" ; then
1799 libs_softmmu
="$libs_softmmu -lsnappy"
1802 if test "$snappy" = "yes"; then
1803 feature_not_found
"libsnappy" "Install libsnappy devel"
1809 ##########################################
1812 if test "$bzip2" != "no" ; then
1815 int main(void) { BZ2_bzlibVersion(); return 0; }
1817 if compile_prog
"" "-lbz2" ; then
1820 if test "$bzip2" = "yes"; then
1821 feature_not_found
"libbzip2" "Install libbzip2 devel"
1827 ##########################################
1830 if test "$seccomp" != "no" ; then
1831 if test "$cpu" = "i386" ||
test "$cpu" = "x86_64" &&
1832 $pkg_config --atleast-version=2.1.1 libseccomp
; then
1833 libs_softmmu
="$libs_softmmu `$pkg_config --libs libseccomp`"
1834 QEMU_CFLAGS
="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1837 if test "$seccomp" = "yes"; then
1838 feature_not_found
"libseccomp" "Install libseccomp devel >= 2.1.1"
1843 ##########################################
1846 if test "$xen" != "no" ; then
1847 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1849 # First we test whether Xen headers and libraries are available.
1850 # If no, we are done and there is no Xen support.
1851 # If yes, more tests are run to detect the Xen version.
1855 #include <xenctrl.h>
1860 if ! compile_prog
"" "$xen_libs" ; then
1862 if test "$xen" = "yes" ; then
1863 feature_not_found
"xen" "Install xen devel"
1869 cat > $TMPC <<EOF &&
1870 #include <xenctrl.h>
1871 #include <xenstore.h>
1873 #include <xen/hvm/hvm_info_table.h>
1874 #if !defined(HVM_MAX_VCPUS)
1875 # error HVM_MAX_VCPUS not defined
1880 xc = xc_interface_open(0, 0, 0);
1881 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1882 xc_gnttab_open(NULL, 0);
1883 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1884 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1885 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1889 compile_prog
"" "$xen_libs"
1891 xen_ctrl_version
=450
1895 cat > $TMPC <<EOF &&
1896 #include <xenctrl.h>
1897 #include <xenstore.h>
1899 #include <xen/hvm/hvm_info_table.h>
1900 #if !defined(HVM_MAX_VCPUS)
1901 # error HVM_MAX_VCPUS not defined
1906 xc = xc_interface_open(0, 0, 0);
1907 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1908 xc_gnttab_open(NULL, 0);
1909 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1910 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1914 compile_prog
"" "$xen_libs"
1916 xen_ctrl_version
=420
1920 cat > $TMPC <<EOF &&
1921 #include <xenctrl.h>
1924 #include <xen/hvm/hvm_info_table.h>
1925 #if !defined(HVM_MAX_VCPUS)
1926 # error HVM_MAX_VCPUS not defined
1930 xc_interface_open(0, 0, 0);
1931 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1932 xc_gnttab_open(NULL, 0);
1933 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1937 compile_prog
"" "$xen_libs"
1939 xen_ctrl_version
=410
1944 cat > $TMPC <<EOF &&
1945 #include <xenctrl.h>
1948 #include <xen/hvm/hvm_info_table.h>
1949 #if !defined(HVM_MAX_VCPUS)
1950 # error HVM_MAX_VCPUS not defined
1953 struct xen_add_to_physmap xatp = {
1954 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1957 xc_interface_open();
1959 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1960 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1964 compile_prog
"" "$xen_libs"
1966 xen_ctrl_version
=400
1971 cat > $TMPC <<EOF &&
1972 #include <xenctrl.h>
1975 struct xen_add_to_physmap xatp = {
1976 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1979 xc_interface_open();
1981 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1982 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1986 compile_prog
"" "$xen_libs"
1988 xen_ctrl_version
=340
1993 cat > $TMPC <<EOF &&
1994 #include <xenctrl.h>
1998 xc_interface_open();
2000 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2004 compile_prog
"" "$xen_libs"
2006 xen_ctrl_version
=330
2009 # Xen version unsupported
2011 if test "$xen" = "yes" ; then
2012 feature_not_found
"xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2017 if test "$xen" = yes; then
2018 libs_softmmu
="$xen_libs $libs_softmmu"
2022 if test "$xen_pci_passthrough" != "no"; then
2023 if test "$xen" = "yes" && test "$linux" = "yes" &&
2024 test "$xen_ctrl_version" -ge 340; then
2025 xen_pci_passthrough
=yes
2027 if test "$xen_pci_passthrough" = "yes"; then
2028 if test "$xen_ctrl_version" -lt 340; then
2029 error_exit
"User requested feature Xen PCI Passthrough" \
2030 "This feature does not work with Xen 3.3"
2032 error_exit
"User requested feature Xen PCI Passthrough" \
2033 " but this feature requires /sys from Linux"
2035 xen_pci_passthrough
=no
2039 ##########################################
2042 if ! has
$libtool; then
2046 # MacOSX ships with a libtool which isn't the GNU one; weed this
2047 # out by checking whether libtool supports the --version switch
2048 if test -n "$libtool"; then
2049 if ! "$libtool" --version >/dev
/null
2>&1; then
2054 ##########################################
2056 if test "$sparse" != "no" ; then
2060 if test "$sparse" = "yes" ; then
2061 feature_not_found
"sparse" "Install sparse binary"
2067 ##########################################
2071 if $pkg_config --exists "x11"; then
2072 x11_cflags
=`$pkg_config --cflags x11`
2073 x11_libs
=`$pkg_config --libs x11`
2076 ##########################################
2079 if test "$gtkabi" = ""; then
2080 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2081 # Use 3.0 as a fallback if that is available.
2082 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2084 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2091 if test "$gtk" != "no"; then
2092 gtkpackage
="gtk+-$gtkabi"
2093 gtkx11package
="gtk+-x11-$gtkabi"
2094 if test "$gtkabi" = "3.0" ; then
2099 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2100 gtk_cflags
=`$pkg_config --cflags $gtkpackage`
2101 gtk_libs
=`$pkg_config --libs $gtkpackage`
2102 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2103 gtk_cflags
="$gtk_cflags $x11_cflags"
2104 gtk_libs
="$gtk_libs $x11_libs"
2106 libs_softmmu
="$gtk_libs $libs_softmmu"
2108 elif test "$gtk" = "yes"; then
2109 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2116 ##########################################
2121 if test "$gnutls" != "no"; then
2122 if $pkg_config --exists "gnutls"; then
2123 gnutls_cflags
=`$pkg_config --cflags gnutls`
2124 gnutls_libs
=`$pkg_config --libs gnutls`
2125 libs_softmmu
="$gnutls_libs $libs_softmmu"
2126 libs_tools
="$gnutls_libs $libs_tools"
2127 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2130 # gnutls_hash_init requires >= 2.9.10
2131 if $pkg_config --exists "gnutls >= 2.9.10"; then
2137 if $pkg_config --exists 'gnutls >= 3.0'; then
2140 elif $pkg_config --exists 'gnutls >= 2.12'; then
2141 case `$pkg_config --libs --static gnutls` in
2159 elif test "$gnutls" = "yes"; then
2160 feature_not_found
"gnutls" "Install gnutls devel"
2169 if test "$gnutls_gcrypt" != "no"; then
2170 if has
"libgcrypt-config"; then
2171 gcrypt_cflags
=`libgcrypt-config --cflags`
2172 gcrypt_libs
=`libgcrypt-config --libs`
2173 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2174 libs_tools
="$gcrypt_libs $libs_tools"
2175 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2177 feature_not_found
"gcrypt" "Install gcrypt devel"
2182 if test "$gnutls_nettle" != "no"; then
2183 if $pkg_config --exists "nettle"; then
2184 nettle_cflags
=`$pkg_config --cflags nettle`
2185 nettle_libs
=`$pkg_config --libs nettle`
2186 libs_softmmu
="$nettle_libs $libs_softmmu"
2187 libs_tools
="$nettle_libs $libs_tools"
2188 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2190 feature_not_found
"nettle" "Install nettle devel"
2195 ##########################################
2198 if test "$vte" != "no"; then
2199 if test "$gtkabi" = "3.0"; then
2200 vtepackage
="vte-2.90"
2206 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2207 vte_cflags
=`$pkg_config --cflags $vtepackage`
2208 vte_libs
=`$pkg_config --libs $vtepackage`
2209 libs_softmmu
="$vte_libs $libs_softmmu"
2211 elif test "$vte" = "yes"; then
2212 if test "$gtkabi" = "3.0"; then
2213 feature_not_found
"vte" "Install libvte-2.90 devel"
2215 feature_not_found
"vte" "Install libvte devel"
2222 ##########################################
2225 # Look for sdl configuration program (pkg-config or sdl-config). Try
2226 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2228 if test $sdlabi = "2.0"; then
2229 sdl_config
=$sdl2_config
2231 sdlconfigname
=sdl2_config
2234 sdlconfigname
=sdl_config
2237 if test "`basename $sdl_config`" != $sdlconfigname && ! has
${sdl_config}; then
2238 sdl_config
=$sdlconfigname
2241 if $pkg_config $sdlname --exists; then
2242 sdlconfig
="$pkg_config $sdlname"
2243 _sdlversion
=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2244 elif has
${sdl_config}; then
2245 sdlconfig
="$sdl_config"
2246 _sdlversion
=`$sdlconfig --version | sed 's/[^0-9]//g'`
2248 if test "$sdl" = "yes" ; then
2249 feature_not_found
"sdl" "Install SDL devel"
2253 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2254 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2258 if test "$sdl" != "no" ; then
2261 #undef main /* We don't want SDL to override our main() */
2262 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2264 sdl_cflags
=`$sdlconfig --cflags 2> /dev/null`
2265 if test "$static" = "yes" ; then
2266 sdl_libs
=`$sdlconfig --static-libs 2>/dev/null`
2268 sdl_libs
=`$sdlconfig --libs 2> /dev/null`
2270 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2271 if test "$_sdlversion" -lt 121 ; then
2274 if test "$cocoa" = "no" ; then
2279 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2280 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2281 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2282 sdl_libs
="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2283 sdl_cflags
="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2285 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2291 else # sdl not found
2292 if test "$sdl" = "yes" ; then
2293 feature_not_found
"sdl" "Install SDL devel"
2296 fi # sdl compile test
2299 if test "$sdl" = "yes" ; then
2302 #if defined(SDL_VIDEO_DRIVER_X11)
2303 #include <X11/XKBlib.h>
2305 #error No x11 support
2307 int main(void) { return 0; }
2309 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2310 sdl_cflags
="$sdl_cflags $x11_cflags"
2311 sdl_libs
="$sdl_libs $x11_libs"
2313 libs_softmmu
="$sdl_libs $libs_softmmu"
2316 ##########################################
2317 # RDMA needs OpenFabrics libraries
2318 if test "$rdma" != "no" ; then
2320 #include <rdma/rdma_cma.h>
2321 int main(void) { return 0; }
2323 rdma_libs
="-lrdmacm -libverbs"
2324 if compile_prog
"" "$rdma_libs" ; then
2326 libs_softmmu
="$libs_softmmu $rdma_libs"
2328 if test "$rdma" = "yes" ; then
2330 " OpenFabrics librdmacm/libibverbs not present." \
2332 " (1) Fast: Install infiniband packages from your distro." \
2333 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2334 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2340 ##########################################
2341 # VNC TLS/WS detection
2342 if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
2344 #include <gnutls/gnutls.h>
2345 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2347 vnc_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2348 vnc_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2349 if compile_prog
"$vnc_tls_cflags" "$vnc_tls_libs" ; then
2350 if test "$vnc_tls" != "no" ; then
2353 libs_softmmu
="$vnc_tls_libs $libs_softmmu"
2354 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_tls_cflags"
2356 if test "$vnc_tls" = "yes" ; then
2357 feature_not_found
"vnc-tls" "Install gnutls devel"
2363 ##########################################
2364 # VNC SASL detection
2365 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2367 #include <sasl/sasl.h>
2369 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2371 # Assuming Cyrus-SASL installed in /usr prefix
2373 vnc_sasl_libs
="-lsasl2"
2374 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2376 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2377 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2379 if test "$vnc_sasl" = "yes" ; then
2380 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2386 ##########################################
2387 # VNC JPEG detection
2388 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2391 #include <jpeglib.h>
2392 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2395 vnc_jpeg_libs
="-ljpeg"
2396 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2398 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2399 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2401 if test "$vnc_jpeg" = "yes" ; then
2402 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2408 ##########################################
2410 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2412 //#include <stdio.h>
2416 png_structp png_ptr;
2417 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2418 return png_ptr != 0;
2421 if $pkg_config libpng
--exists; then
2422 vnc_png_cflags
=`$pkg_config libpng --cflags`
2423 vnc_png_libs
=`$pkg_config libpng --libs`
2426 vnc_png_libs
="-lpng"
2428 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2430 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2431 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2433 if test "$vnc_png" = "yes" ; then
2434 feature_not_found
"vnc-png" "Install libpng devel"
2440 ##########################################
2441 # fnmatch() probe, used for ACL routines
2444 #include <fnmatch.h>
2447 fnmatch("foo", "foo", 0);
2451 if compile_prog
"" "" ; then
2455 ##########################################
2456 # uuid_generate() probe, used for vdi block driver
2457 # Note that on some systems (notably MacOSX) no extra library
2458 # need be linked to get the uuid functions.
2459 if test "$uuid" != "no" ; then
2462 #include <uuid/uuid.h>
2466 uuid_generate(my_uuid);
2470 if compile_prog
"" "" ; then
2472 elif compile_prog
"" "$uuid_libs" ; then
2474 libs_softmmu
="$uuid_libs $libs_softmmu"
2475 libs_tools
="$uuid_libs $libs_tools"
2477 if test "$uuid" = "yes" ; then
2478 feature_not_found
"uuid" "Install libuuid devel"
2484 if test "$vhdx" = "yes" ; then
2485 if test "$uuid" = "no" ; then
2486 error_exit
"uuid required for VHDX support"
2488 elif test "$vhdx" != "no" ; then
2489 if test "$uuid" = "yes" ; then
2496 ##########################################
2497 # xfsctl() probe, used for raw-posix
2498 if test "$xfs" != "no" ; then
2500 #include <stddef.h> /* NULL */
2501 #include <xfs/xfs.h>
2504 xfsctl(NULL, 0, 0, NULL);
2508 if compile_prog
"" "" ; then
2511 if test "$xfs" = "yes" ; then
2512 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2518 ##########################################
2519 # vde libraries probe
2520 if test "$vde" != "no" ; then
2521 vde_libs
="-lvdeplug"
2523 #include <libvdeplug.h>
2526 struct vde_open_args a = {0, 0, 0};
2532 if compile_prog
"" "$vde_libs" ; then
2534 libs_softmmu
="$vde_libs $libs_softmmu"
2535 libs_tools
="$vde_libs $libs_tools"
2537 if test "$vde" = "yes" ; then
2538 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2544 ##########################################
2545 # netmap support probe
2546 # Apart from looking for netmap headers, we make sure that the host API version
2547 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2548 # a minor/major version number. Minor new features will be marked with values up
2549 # to 15, and if something happens that requires a change to the backend we will
2550 # move above 15, submit the backend fixes and modify this two bounds.
2551 if test "$netmap" != "no" ; then
2553 #include <inttypes.h>
2555 #include <net/netmap.h>
2556 #include <net/netmap_user.h>
2557 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2560 int main(void) { return 0; }
2562 if compile_prog
"" "" ; then
2565 if test "$netmap" = "yes" ; then
2566 feature_not_found
"netmap"
2572 ##########################################
2573 # libcap-ng library probe
2574 if test "$cap_ng" != "no" ; then
2580 capng_capability_to_name(CAPNG_EFFECTIVE);
2584 if compile_prog
"" "$cap_libs" ; then
2586 libs_tools
="$cap_libs $libs_tools"
2588 if test "$cap_ng" = "yes" ; then
2589 feature_not_found
"cap_ng" "Install libcap-ng devel"
2595 ##########################################
2596 # Sound support libraries probe
2607 int main(void) { $exp }
2609 if compile_prog
"$cfl" "$lib" ; then
2612 error_exit
"$drv check failed" \
2613 "Make sure to have the $drv libs and headers installed."
2617 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2618 for drv
in $audio_drv_list; do
2621 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2622 "return snd_pcm_close((snd_pcm_t *)0);"
2623 libs_softmmu
="-lasound $libs_softmmu"
2627 audio_drv_probe
$drv pulse
/mainloop.h
"-lpulse" \
2628 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2629 libs_softmmu
="-lpulse $libs_softmmu"
2634 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2638 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2643 libs_softmmu
="$oss_lib $libs_softmmu"
2647 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2651 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2652 error_exit
"Unknown driver '$drv' selected" \
2653 "Possible drivers are: $audio_possible_drivers"
2659 ##########################################
2662 if test "$brlapi" != "no" ; then
2663 brlapi_libs
="-lbrlapi"
2667 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2669 if compile_prog
"" "$brlapi_libs" ; then
2671 libs_softmmu
="$brlapi_libs $libs_softmmu"
2673 if test "$brlapi" = "yes" ; then
2674 feature_not_found
"brlapi" "Install brlapi devel"
2680 ##########################################
2682 if test "$curses" != "no" ; then
2683 if test "$mingw32" = "yes" ; then
2684 curses_list
="-lpdcurses"
2686 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2692 const char *s = curses_version();
2698 for curses_lib
in $curses_list; do
2700 if compile_prog
"" "$curses_lib" ; then
2702 libs_softmmu
="$curses_lib $libs_softmmu"
2707 if test "$curses_found" = "yes" ; then
2710 if test "$curses" = "yes" ; then
2711 feature_not_found
"curses" "Install ncurses devel"
2717 ##########################################
2719 if test "$curl" != "no" ; then
2720 if $pkg_config libcurl
--exists; then
2721 curlconfig
="$pkg_config libcurl"
2723 curlconfig
=curl-config
2726 #include <curl/curl.h>
2727 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2729 curl_cflags
=`$curlconfig --cflags 2>/dev/null`
2730 curl_libs
=`$curlconfig --libs 2>/dev/null`
2731 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2734 if test "$curl" = "yes" ; then
2735 feature_not_found
"curl" "Install libcurl devel"
2741 ##########################################
2742 # bluez support probe
2743 if test "$bluez" != "no" ; then
2745 #include <bluetooth/bluetooth.h>
2746 int main(void) { return bt_error(0); }
2748 bluez_cflags
=`$pkg_config --cflags bluez 2> /dev/null`
2749 bluez_libs
=`$pkg_config --libs bluez 2> /dev/null`
2750 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2752 libs_softmmu
="$bluez_libs $libs_softmmu"
2754 if test "$bluez" = "yes" ; then
2755 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2761 ##########################################
2762 # glib support probe
2765 glib_modules
=gthread-2.0
2766 if test "$modules" = yes; then
2767 glib_modules
="$glib_modules gmodule-2.0"
2770 for i
in $glib_modules; do
2771 if $pkg_config --atleast-version=$glib_req_ver $i; then
2772 glib_cflags
=`$pkg_config --cflags $i`
2773 glib_libs
=`$pkg_config --libs $i`
2774 CFLAGS
="$glib_cflags $CFLAGS"
2775 LIBS
="$glib_libs $LIBS"
2776 libs_qga
="$glib_libs $libs_qga"
2778 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2782 # g_test_trap_subprocess added in 2.38. Used by some tests.
2784 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
2788 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2791 int main(void) { return 0; }
2793 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
2794 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
2795 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
2796 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
2800 ##########################################
2801 # SHA command probe for modules
2802 if test "$modules" = yes; then
2803 shacmd_probe
="sha1sum sha1 shasum"
2804 for c
in $shacmd_probe; do
2810 if test "$shacmd" = ""; then
2811 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
2815 ##########################################
2816 # pixman support probe
2818 if test "$pixman" = ""; then
2819 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2821 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
2827 if test "$pixman" = "none"; then
2828 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2829 error_exit
"pixman disabled but system emulation or tools build" \
2830 "enabled. You can turn off pixman only if you also" \
2831 "disable all system emulation targets and the tools" \
2832 "build with '--disable-tools --disable-system'."
2836 elif test "$pixman" = "system"; then
2837 # pixman version has been checked above
2838 pixman_cflags
=`$pkg_config --cflags pixman-1`
2839 pixman_libs
=`$pkg_config --libs pixman-1`
2841 if test ! -d ${source_path}/pixman
/pixman
; then
2842 error_exit
"pixman >= 0.21.8 not present. Your options:" \
2843 " (1) Preferred: Install the pixman devel package (any recent" \
2844 " distro should have packages as Xorg needs pixman too)." \
2845 " (2) Fetch the pixman submodule, using:" \
2846 " git submodule update --init pixman"
2848 mkdir
-p pixman
/pixman
2849 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2850 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2853 ##########################################
2856 if test "$cap" != "no" ; then
2859 #include <sys/capability.h>
2860 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2862 if compile_prog
"" "-lcap" ; then
2869 ##########################################
2871 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
2875 #include <pthread.h>
2876 static void *f(void *p) { return NULL; }
2879 pthread_create(&thread, 0, f, 0);
2883 if compile_prog
"" "" ; then
2886 for pthread_lib
in $PTHREADLIBS_LIST; do
2887 if compile_prog
"" "$pthread_lib" ; then
2890 for lib_entry
in $LIBS; do
2891 if test "$lib_entry" = "$pthread_lib"; then
2896 if test "$found" = "no"; then
2897 LIBS
="$pthread_lib $LIBS"
2904 if test "$mingw32" != yes -a "$pthread" = no
; then
2905 error_exit
"pthread check failed" \
2906 "Make sure to have the pthread libs and headers installed."
2909 # check for pthread_setname_np
2910 pthread_setname_np
=no
2912 #include <pthread.h>
2914 static void *f(void *p) { return NULL; }
2918 pthread_create(&thread, 0, f, 0);
2919 pthread_setname_np(thread, "QEMU");
2923 if compile_prog
"" "$pthread_lib" ; then
2924 pthread_setname_np
=yes
2927 ##########################################
2929 if test "$rbd" != "no" ; then
2932 #include <rbd/librbd.h>
2935 rados_create(&cluster, NULL);
2939 rbd_libs
="-lrbd -lrados"
2940 if compile_prog
"" "$rbd_libs" ; then
2943 if test "$rbd" = "yes" ; then
2944 feature_not_found
"rados block device" "Install librbd/ceph devel"
2950 ##########################################
2952 min_libssh2_version
=1.2.8
2953 if test "$libssh2" != "no" ; then
2954 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
2955 libssh2_cflags
=`$pkg_config libssh2 --cflags`
2956 libssh2_libs
=`$pkg_config libssh2 --libs`
2959 if test "$libssh2" = "yes" ; then
2960 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
2966 ##########################################
2967 # libssh2_sftp_fsync probe
2969 if test "$libssh2" = "yes"; then
2972 #include <libssh2.h>
2973 #include <libssh2_sftp.h>
2975 LIBSSH2_SESSION *session;
2977 LIBSSH2_SFTP_HANDLE *sftp_handle;
2978 session = libssh2_session_init ();
2979 sftp = libssh2_sftp_init (session);
2980 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2981 libssh2_sftp_fsync (sftp_handle);
2985 # libssh2_cflags/libssh2_libs defined in previous test.
2986 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
2987 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
2991 ##########################################
2994 if test "$linux_aio" != "no" ; then
2997 #include <sys/eventfd.h>
2999 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3001 if compile_prog
"" "-laio" ; then
3004 if test "$linux_aio" = "yes" ; then
3005 feature_not_found
"linux AIO" "Install libaio devel"
3011 ##########################################
3012 # TPM passthrough is only on x86 Linux
3014 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3015 tpm_passthrough
=$tpm
3020 ##########################################
3023 if test "$attr" != "no" ; then
3026 #include <sys/types.h>
3027 #ifdef CONFIG_LIBATTR
3028 #include <attr/xattr.h>
3030 #include <sys/xattr.h>
3032 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3034 if compile_prog
"" "" ; then
3036 # Older distros have <attr/xattr.h>, and need -lattr:
3037 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3042 if test "$attr" = "yes" ; then
3043 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3049 ##########################################
3052 #include <sys/types.h>
3053 #include <sys/uio.h>
3055 int main(void) { return sizeof(struct iovec); }
3058 if compile_prog
"" "" ; then
3062 ##########################################
3065 #include <sys/types.h>
3066 #include <sys/uio.h>
3068 int main(void) { return preadv(0, 0, 0, 0); }
3071 if compile_prog
"" "" ; then
3075 ##########################################
3077 # fdt support is mandatory for at least some target architectures,
3078 # so insist on it if we're building those system emulators.
3080 for target
in $target_list; do
3082 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3088 if test "$fdt_required" = "yes"; then
3089 if test "$fdt" = "no"; then
3090 error_exit
"fdt disabled but some requested targets require it." \
3091 "You can turn off fdt only if you also disable all the system emulation" \
3092 "targets which need it (by specifying a cut down --target-list)."
3097 if test "$fdt" != "no" ; then
3099 # explicitly check for libfdt_env.h as it is missing in some stable installs
3100 # and test for required functions to make sure we are on a version >= 1.4.0
3103 #include <libfdt_env.h>
3104 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3106 if compile_prog
"" "$fdt_libs" ; then
3107 # system DTC is good - use it
3109 elif test -d ${source_path}/dtc
/libfdt
; then
3110 # have submodule DTC - use it
3114 if [ "$pwd_is_source_path" != "y" ] ; then
3115 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3116 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3118 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3119 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3120 elif test "$fdt" = "yes" ; then
3121 # have neither and want - prompt for system/submodule install
3122 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3123 " (1) Preferred: Install the DTC (libfdt) devel package" \
3124 " (2) Fetch the DTC submodule, using:" \
3125 " git submodule update --init dtc"
3127 # don't have and don't want
3133 libs_softmmu
="$libs_softmmu $fdt_libs"
3135 ##########################################
3136 # opengl probe (for sdl2, milkymist-tmu2)
3138 # GLX probe, used by milkymist-tmu2
3139 # this is temporary, code will be switched to egl mid-term.
3141 #include <X11/Xlib.h>
3144 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3146 if compile_prog
"" "-lGL -lX11" ; then
3152 if test "$opengl" != "no" ; then
3153 opengl_pkgs
="gl glesv2 epoxy egl"
3154 if $pkg_config $opengl_pkgs x11
&& test "$have_glx" = "yes"; then
3155 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3156 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3159 if test "$opengl" = "yes" ; then
3160 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3169 ##########################################
3171 if test "$archipelago" != "no" ; then
3174 #include <xseg/xseg.h>
3175 #include <xseg/protocol.h>
3181 archipelago_libs
=-lxseg
3182 if compile_prog
"" "$archipelago_libs"; then
3184 libs_tools
="$archipelago_libs $libs_tools"
3185 libs_softmmu
="$archipelago_libs $libs_softmmu"
3187 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3188 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3189 echo "license and therefore prevent redistribution."
3191 echo "To disable Archipelago, use --disable-archipelago"
3193 if test "$archipelago" = "yes" ; then
3194 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3201 ##########################################
3203 if test "$glusterfs" != "no" ; then
3204 if $pkg_config --atleast-version=3 glusterfs-api
; then
3206 glusterfs_cflags
=`$pkg_config --cflags glusterfs-api`
3207 glusterfs_libs
=`$pkg_config --libs glusterfs-api`
3208 if $pkg_config --atleast-version=5 glusterfs-api
; then
3209 glusterfs_discard
="yes"
3211 if $pkg_config --atleast-version=6 glusterfs-api
; then
3212 glusterfs_zerofill
="yes"
3215 if test "$glusterfs" = "yes" ; then
3216 feature_not_found
"GlusterFS backend support" \
3217 "Install glusterfs-api devel >= 3"
3223 # Check for inotify functions when we are building linux-user
3224 # emulator. This is done because older glibc versions don't
3225 # have syscall stubs for these implemented. In that case we
3226 # don't provide them even if kernel supports them.
3230 #include <sys/inotify.h>
3235 /* try to start inotify */
3236 return inotify_init();
3239 if compile_prog
"" "" ; then
3245 #include <sys/inotify.h>
3250 /* try to start inotify */
3251 return inotify_init1(0);
3254 if compile_prog
"" "" ; then
3258 # check if utimensat and futimens are supported
3261 #define _ATFILE_SOURCE
3264 #include <sys/stat.h>
3268 utimensat(AT_FDCWD, "foo", NULL, 0);
3273 if compile_prog
"" "" ; then
3277 # check if pipe2 is there
3286 return pipe2(pipefd, O_CLOEXEC);
3289 if compile_prog
"" "" ; then
3293 # check if accept4 is there
3296 #include <sys/socket.h>
3301 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3305 if compile_prog
"" "" ; then
3309 # check if tee/splice is there. vmsplice was added same time.
3319 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3320 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3324 if compile_prog
"" "" ; then
3328 ##########################################
3331 if test "$numa" != "no" ; then
3334 int main(void) { return numa_available(); }
3337 if compile_prog
"" "-lnuma" ; then
3339 libs_softmmu
="-lnuma $libs_softmmu"
3341 if test "$numa" = "yes" ; then
3342 feature_not_found
"numa" "install numactl devel"
3348 ##########################################
3351 if test "$tcmalloc" = "yes" ; then
3354 int main(void) { malloc(1); return 0; }
3357 if compile_prog
"" "-ltcmalloc" ; then
3358 LIBS
="-ltcmalloc $LIBS"
3360 feature_not_found
"tcmalloc" "install gperftools devel"
3364 ##########################################
3369 #include <sys/syscall.h>
3371 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3374 if compile_prog
"" "" ; then
3378 # check if eventfd is supported
3381 #include <sys/eventfd.h>
3385 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3388 if compile_prog
"" "" ; then
3392 # check for fallocate
3399 fallocate(0, 0, 0, 0);
3403 if compile_prog
"" "" ; then
3407 # check for fallocate hole punching
3408 fallocate_punch_hole
=no
3411 #include <linux/falloc.h>
3415 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3419 if compile_prog
"" "" ; then
3420 fallocate_punch_hole
=yes
3423 # check that fallocate supports range zeroing inside the file
3424 fallocate_zero_range
=no
3427 #include <linux/falloc.h>
3431 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3435 if compile_prog
"" "" ; then
3436 fallocate_zero_range
=yes
3439 # check for posix_fallocate
3446 posix_fallocate(0, 0, 0);
3450 if compile_prog
"" "" ; then
3454 # check for sync_file_range
3461 sync_file_range(0, 0, 0, 0);
3465 if compile_prog
"" "" ; then
3469 # check for linux/fiemap.h and FS_IOC_FIEMAP
3472 #include <sys/ioctl.h>
3473 #include <linux/fs.h>
3474 #include <linux/fiemap.h>
3478 ioctl(0, FS_IOC_FIEMAP, 0);
3482 if compile_prog
"" "" ; then
3497 if compile_prog
"" "" ; then
3501 # check for ppoll support
3508 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3509 ppoll(&pfd, 1, 0, 0);
3513 if compile_prog
"" "" ; then
3517 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3518 prctl_pr_set_timerslack
=no
3520 #include <sys/prctl.h>
3524 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3528 if compile_prog
"" "" ; then
3529 prctl_pr_set_timerslack
=yes
3532 # check for epoll support
3535 #include <sys/epoll.h>
3543 if compile_prog
"" "" ; then
3547 # epoll_create1 and epoll_pwait are later additions
3548 # so we must check separately for their presence
3551 #include <sys/epoll.h>
3555 /* Note that we use epoll_create1 as a value, not as
3556 * a function being called. This is necessary so that on
3557 * old SPARC glibc versions where the function was present in
3558 * the library but not declared in the header file we will
3559 * fail the configure check. (Otherwise we will get a compiler
3560 * warning but not an error, and will proceed to fail the
3561 * qemu compile where we compile with -Werror.)
3563 return (int)(uintptr_t)&epoll_create1;
3566 if compile_prog
"" "" ; then
3572 #include <sys/epoll.h>
3576 epoll_pwait(0, 0, 0, 0, 0);
3580 if compile_prog
"" "" ; then
3584 # check for sendfile support
3587 #include <sys/sendfile.h>
3591 return sendfile(0, 0, 0, 0);
3594 if compile_prog
"" "" ; then
3598 # check for timerfd support (glibc 2.8 and newer)
3601 #include <sys/timerfd.h>
3605 return(timerfd_create(CLOCK_REALTIME, 0));
3608 if compile_prog
"" "" ; then
3612 # check for setns and unshare support
3625 if compile_prog
"" "" ; then
3629 # Check if tools are available to build documentation.
3630 if test "$docs" != "no" ; then
3631 if has makeinfo
&& has pod2man
; then
3634 if test "$docs" = "yes" ; then
3635 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3641 # Search for bswap_32 function
3644 #include <byteswap.h>
3645 int main(void) { return bswap_32(0); }
3647 if compile_prog
"" "" ; then
3651 # Search for bswap32 function
3654 #include <sys/endian.h>
3655 #include <sys/types.h>
3656 #include <machine/bswap.h>
3657 int main(void) { return bswap32(0); }
3659 if compile_prog
"" "" ; then
3663 ##########################################
3664 # Do we have libiscsi >= 1.9.0
3665 if test "$libiscsi" != "no" ; then
3666 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3668 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3669 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3671 if test "$libiscsi" = "yes" ; then
3672 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3678 ##########################################
3682 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3684 if compile_prog
"" "" ; then
3686 elif compile_prog
"" "-lm" ; then
3688 libs_qga
="-lm $libs_qga"
3690 error_exit
"libm check failed"
3693 ##########################################
3695 # uClibc provides 2 versions of clock_gettime(), one with realtime
3696 # support and one without. This means that the clock_gettime() don't
3697 # need -lrt. We still need it for timer_create() so we check for this
3698 # function in addition.
3703 timer_create(CLOCK_REALTIME, NULL, NULL);
3704 return clock_gettime(CLOCK_REALTIME, NULL);
3708 if compile_prog
"" "" ; then
3710 # we need pthread for static linking. use previous pthread test result
3711 elif compile_prog
"" "$pthread_lib -lrt" ; then
3713 libs_qga
="$libs_qga -lrt"
3716 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3717 "$aix" != "yes" -a "$haiku" != "yes" ; then
3718 libs_softmmu
="-lutil $libs_softmmu"
3721 ##########################################
3723 if test "$spice" != "no" ; then
3726 int main(void) { spice_server_new(); return 0; }
3728 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3729 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3730 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
3731 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
3732 compile_prog
"$spice_cflags" "$spice_libs" ; then
3734 libs_softmmu
="$libs_softmmu $spice_libs"
3735 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
3736 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
3737 spice_server_version
=$
($pkg_config --modversion spice-server
)
3739 if test "$spice" = "yes" ; then
3740 feature_not_found
"spice" \
3741 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3747 # check for libcacard for smartcard support
3749 # TODO - what's the minimal nss version we support?
3750 if test "$smartcard_nss" != "no"; then
3752 #include <pk11pub.h>
3753 int main(void) { PK11_FreeSlot(0); return 0; }
3755 # FIXME: do not include $glib_* in here
3756 nss_libs
="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3757 nss_cflags
="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3758 test_cflags
="$nss_cflags"
3759 # The header files in nss < 3.13.3 have a bug which causes them to
3760 # emit a warning. If we're going to compile QEMU with -Werror, then
3761 # test that the headers don't have this bug. Otherwise we would pass
3762 # the configure test but fail to compile QEMU later.
3763 if test "$werror" = "yes"; then
3764 test_cflags
="-Werror $test_cflags"
3766 if test -n "$libtool" &&
3767 $pkg_config --atleast-version=3.12.8 nss
&& \
3768 compile_prog
"$test_cflags" "$nss_libs"; then
3771 if test "$smartcard_nss" = "yes"; then
3772 feature_not_found
"nss" "Install nss devel >= 3.12.8"
3779 if test "$libusb" != "no" ; then
3780 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
3782 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
3783 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
3784 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
3785 libs_softmmu
="$libs_softmmu $libusb_libs"
3787 if test "$libusb" = "yes"; then
3788 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
3794 # check for usbredirparser for usb network redirection support
3795 if test "$usb_redir" != "no" ; then
3796 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
3798 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
3799 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
3800 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
3801 libs_softmmu
="$libs_softmmu $usb_redir_libs"
3803 if test "$usb_redir" = "yes"; then
3804 feature_not_found
"usb-redir" "Install usbredir devel"
3810 ##########################################
3811 # check if we have VSS SDK headers for win
3813 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3814 case "$vss_win32_sdk" in
3815 "") vss_win32_include
="-I$source_path" ;;
3816 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
3817 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3818 vss_win32_include
="-I$source_path/.sdk/vss"
3819 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3821 *) vss_win32_include
="-I$vss_win32_sdk"
3824 #define __MIDL_user_allocate_free_DEFINED__
3825 #include <inc/win2003/vss.h>
3826 int main(void) { return VSS_CTX_BACKUP; }
3828 if compile_prog
"$vss_win32_include" "" ; then
3829 guest_agent_with_vss
="yes"
3830 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
3831 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3833 if test "$vss_win32_sdk" != "" ; then
3834 echo "ERROR: Please download and install Microsoft VSS SDK:"
3835 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3836 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3837 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3838 echo "ERROR: The headers are extracted in the directory \`inc'."
3839 feature_not_found
"VSS support"
3841 guest_agent_with_vss
="no"
3845 ##########################################
3846 # lookup Windows platform SDK (if not specified)
3847 # The SDK is needed only to build .tlb (type library) file of guest agent
3848 # VSS provider from the source. It is usually unnecessary because the
3849 # pre-compiled .tlb file is included.
3851 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3852 if test -z "$win_sdk"; then
3853 programfiles
="$PROGRAMFILES"
3854 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
3855 if test -n "$programfiles"; then
3856 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
3858 feature_not_found
"Windows SDK"
3860 elif test "$win_sdk" = "no"; then
3865 ##########################################
3866 # check if mingw environment provides a recent ntddscsi.h
3867 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3869 #include <windows.h>
3870 #include <ntddscsi.h>
3872 #if !defined(IOCTL_SCSI_GET_ADDRESS)
3873 #error Missing required ioctl definitions
3875 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3879 if compile_prog
"" "" ; then
3880 guest_agent_ntddscsi
=yes
3881 libs_qga
="-lsetupapi $libs_qga"
3885 ##########################################
3886 # Guest agent Window MSI package
3888 if test "$guest_agent" != yes; then
3889 if test "$guest_agent_msi" = yes; then
3890 error_exit
"MSI guest agent package requires guest agent enabled"
3893 elif test "$mingw32" != "yes"; then
3894 if test "$guest_agent_msi" = "yes"; then
3895 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
3898 elif ! has wixl
; then
3899 if test "$guest_agent_msi" = "yes"; then
3900 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3905 if test "$guest_agent_msi" != "no"; then
3906 if test "$guest_agent_with_vss" = "yes"; then
3907 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
3910 if test "$QEMU_GA_MANUFACTURER" = ""; then
3911 QEMU_GA_MANUFACTURER
=QEMU
3914 if test "$QEMU_GA_DISTRO" = ""; then
3915 QEMU_GA_DISTRO
=Linux
3918 if test "$QEMU_GA_VERSION" = ""; then
3919 QEMU_GA_VERSION
=`cat $source_path/VERSION`
3922 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3926 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
3929 QEMU_GA_MSI_ARCH
="-D Arch=32"
3932 error_exit
"CPU $cpu not supported for building installation package"
3937 ##########################################
3938 # check if we have fdatasync
3944 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3945 return fdatasync(0);
3947 #error Not supported
3951 if compile_prog
"" "" ; then
3955 ##########################################
3956 # check if we have madvise
3960 #include <sys/types.h>
3961 #include <sys/mman.h>
3963 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3965 if compile_prog
"" "" ; then
3969 ##########################################
3970 # check if we have posix_madvise
3974 #include <sys/mman.h>
3976 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3978 if compile_prog
"" "" ; then
3982 ##########################################
3983 # check if we have usable SIGEV_THREAD_ID
3990 ev.sigev_notify = SIGEV_THREAD_ID;
3991 ev._sigev_un._tid = 0;
3992 asm volatile("" : : "g"(&ev));
3996 if compile_prog
"" "" ; then
4000 ##########################################
4001 # check if trace backend exists
4003 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4004 if test "$?" -ne 0 ; then
4005 error_exit
"invalid trace backends" \
4006 "Please choose supported trace backends."
4009 ##########################################
4010 # For 'ust' backend, test if ust headers are present
4011 if have_backend
"ust"; then
4013 #include <lttng/tracepoint.h>
4014 int main(void) { return 0; }
4016 if compile_prog
"" "" ; then
4017 if $pkg_config lttng-ust
--exists; then
4018 lttng_ust_libs
=`$pkg_config --libs lttng-ust`
4020 lttng_ust_libs
="-llttng-ust"
4022 if $pkg_config liburcu-bp
--exists; then
4023 urcu_bp_libs
=`$pkg_config --libs liburcu-bp`
4025 urcu_bp_libs
="-lurcu-bp"
4028 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4029 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4031 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4035 ##########################################
4036 # For 'dtrace' backend, test if 'dtrace' command is present
4037 if have_backend
"dtrace"; then
4038 if ! has
'dtrace' ; then
4039 error_exit
"dtrace command is not found in PATH $PATH"
4041 trace_backend_stap
="no"
4042 if has
'stap' ; then
4043 trace_backend_stap
="yes"
4047 ##########################################
4048 # check and set a backend for coroutine
4050 # We prefer ucontext, but it's not always possible. The fallback
4051 # is sigcontext. gthread is not selectable except explicitly, because
4052 # it is not functional enough to run QEMU proper. (It is occasionally
4053 # useful for debugging purposes.) On Windows the only valid backend
4054 # is the Windows-specific one.
4057 if test "$darwin" != "yes"; then
4059 #include <ucontext.h>
4060 #ifdef __stub_makecontext
4061 #error Ignoring glibc stub makecontext which will always fail
4063 int main(void) { makecontext(0, 0, 0); return 0; }
4065 if compile_prog
"" "" ; then
4070 if test "$coroutine" = ""; then
4071 if test "$mingw32" = "yes"; then
4073 elif test "$ucontext_works" = "yes"; then
4076 coroutine
=sigaltstack
4081 if test "$mingw32" != "yes"; then
4082 error_exit
"'windows' coroutine backend only valid for Windows"
4084 # Unfortunately the user visible backend name doesn't match the
4085 # coroutine-*.c filename for this case, so we have to adjust it here.
4089 if test "$ucontext_works" != "yes"; then
4090 feature_not_found
"ucontext"
4093 gthread|sigaltstack
)
4094 if test "$mingw32" = "yes"; then
4095 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4099 error_exit
"unknown coroutine backend $coroutine"
4104 if test "$coroutine_pool" = ""; then
4105 if test "$coroutine" = "gthread"; then
4111 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4112 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4115 ##########################################
4116 # check if we have open_by_handle_at
4118 open_by_handle_at
=no
4121 #if !defined(AT_EMPTY_PATH)
4122 # error missing definition
4124 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4127 if compile_prog
"" "" ; then
4128 open_by_handle_at
=yes
4131 ########################################
4132 # check if we have linux/magic.h
4136 #include <linux/magic.h>
4141 if compile_prog
"" "" ; then
4145 ########################################
4146 # check whether we can disable warning option with a pragma (this is needed
4147 # to silence warnings in the headers of some versions of external libraries).
4148 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4151 # If we can't selectively disable warning in the code, disable -Werror so that
4152 # the build doesn't fail anyway.
4154 pragma_disable_unused_but_set
=no
4156 #pragma GCC diagnostic push
4157 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4158 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4159 #pragma GCC diagnostic pop
4165 if compile_prog
"-Werror" "" ; then
4166 pragma_diagnostic_available
=yes
4171 ########################################
4172 # check if we have valgrind/valgrind.h
4176 #include <valgrind/valgrind.h>
4181 if compile_prog
"" "" ; then
4185 ########################################
4186 # check if environ is declared
4196 if compile_prog
"" "" ; then
4200 ########################################
4201 # check if cpuid.h is usable.
4207 unsigned a, b, c, d;
4208 int max = __get_cpuid_max(0, 0);
4211 __cpuid(1, a, b, c, d);
4215 __cpuid_count(7, 0, a, b, c, d);
4221 if compile_prog
"" "" ; then
4225 ########################################
4226 # check if __[u]int128_t is usable.
4230 #if defined(__clang_major__) && defined(__clang_minor__)
4231 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4232 # error __int128_t does not work in CLANG before 3.2
4244 if compile_prog
"" "" ; then
4248 ########################################
4249 # check if getauxval is available.
4253 #include <sys/auxv.h>
4255 return getauxval(AT_HWCAP) == 0;
4258 if compile_prog
"" "" ; then
4262 ########################################
4263 # check if ccache is interfering with
4264 # semantic analysis of macros
4268 static const int Z = 1;
4269 #define fn() ({ Z; })
4270 #define TAUT(X) ((X) == Z)
4271 #define PAREN(X, Y) (X == Y)
4273 int main(int argc, char *argv[])
4279 if (PAREN(x, y)) return 0;
4280 if (TAUT(Z)) return 0;
4285 if ! compile_object
"-Werror"; then
4289 ##########################################
4291 # After here, no more $cc or $ld runs
4293 if test "$gcov" = "yes" ; then
4294 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4295 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4296 elif test "$debug" = "no" ; then
4297 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4300 ##########################################
4302 if test "$libnfs" != "no" ; then
4303 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4305 libnfs_libs
=$
($pkg_config --libs libnfs
)
4306 LIBS
="$LIBS $libnfs_libs"
4308 if test "$libnfs" = "yes" ; then
4309 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4315 # Disable zero malloc errors for official releases unless explicitly told to
4317 if test -z "$zero_malloc" ; then
4318 if test "$z_version" = "50" ; then
4325 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4326 if test "$werror" = "yes"; then
4327 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4330 if test "$solaris" = "no" ; then
4331 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4332 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4336 # test if pod2man has --utf8 option
4337 if pod2man
--help |
grep -q utf8
; then
4338 POD2MAN
="pod2man --utf8"
4343 # Use ASLR, no-SEH and DEP if available
4344 if test "$mingw32" = "yes" ; then
4345 for flag
in --dynamicbase --no-seh --nxcompat; do
4346 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4347 LDFLAGS
="-Wl,$flag $LDFLAGS"
4352 qemu_confdir
=$sysconfdir$confsuffix
4353 qemu_moddir
=$libdir$confsuffix
4354 qemu_datadir
=$datadir$confsuffix
4355 qemu_localedir
="$datadir/locale"
4358 if test "$want_tools" = "yes" ; then
4359 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4360 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4361 tools
="qemu-nbd\$(EXESUF) $tools"
4364 if test "$softmmu" = yes ; then
4365 if test "$virtfs" != no
; then
4366 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4368 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4370 if test "$virtfs" = yes; then
4371 error_exit
"VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4377 if [ "$guest_agent" != "no" ]; then
4378 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4379 tools
="qemu-ga\$(EXESUF) $tools"
4380 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4381 tools
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4384 elif [ "$guest_agent" != yes ]; then
4387 error_exit
"Guest agent is not supported on this platform"
4391 # Mac OS X ships with a broken assembler
4393 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4394 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4395 "$softmmu" = yes ; then
4398 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4399 roms
="$roms spapr-rtas"
4402 if test "$cpu" = "s390x" ; then
4403 roms
="$roms s390-ccw"
4406 # Probe for the need for relocating the user-only binary.
4407 if test "$pie" = "no" ; then
4410 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4411 # ??? Rationale for choosing this address
4412 textseg_addr
=0x60000000
4415 # A 256M aligned address, high in the address space, with enough
4416 # room for the code_gen_buffer above it before the stack.
4417 textseg_addr
=0x60000000
4420 if [ -n "$textseg_addr" ]; then
4422 int main(void) { return 0; }
4424 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4425 if ! compile_prog
"" "$textseg_ldflags"; then
4426 # In case ld does not support -Ttext-segment, edit the default linker
4427 # script via sed to set the .text start addr. This is needed on FreeBSD
4429 $ld --verbose |
sed \
4430 -e '1,/==================================================/d' \
4431 -e '/==================================================/,$d' \
4432 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4433 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4434 textseg_ldflags
="-Wl,-T../config-host.ld"
4439 # prepend pixman and ftd flags after all config tests are done
4440 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4441 libs_softmmu
="$pixman_libs $libs_softmmu"
4443 echo "Install prefix $prefix"
4444 echo "BIOS directory `eval echo $qemu_datadir`"
4445 echo "binary directory `eval echo $bindir`"
4446 echo "library directory `eval echo $libdir`"
4447 echo "module directory `eval echo $qemu_moddir`"
4448 echo "libexec directory `eval echo $libexecdir`"
4449 echo "include directory `eval echo $includedir`"
4450 echo "config directory `eval echo $sysconfdir`"
4451 if test "$mingw32" = "no" ; then
4452 echo "local state directory `eval echo $local_statedir`"
4453 echo "Manual directory `eval echo $mandir`"
4454 echo "ELF interp prefix $interp_prefix"
4456 echo "local state directory queried at runtime"
4457 echo "Windows SDK $win_sdk"
4459 echo "Source path $source_path"
4460 echo "C compiler $cc"
4461 echo "Host C compiler $host_cc"
4462 echo "C++ compiler $cxx"
4463 echo "Objective-C compiler $objcc"
4464 echo "ARFLAGS $ARFLAGS"
4465 echo "CFLAGS $CFLAGS"
4466 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4467 echo "LDFLAGS $LDFLAGS"
4469 echo "install $install"
4470 echo "python $python"
4471 if test "$slirp" = "yes" ; then
4474 echo "module support $modules"
4475 echo "host CPU $cpu"
4476 echo "host big endian $bigendian"
4477 echo "target list $target_list"
4478 echo "tcg debug enabled $debug_tcg"
4479 echo "gprof enabled $gprof"
4480 echo "sparse enabled $sparse"
4481 echo "strip binaries $strip_opt"
4482 echo "profiler $profiler"
4483 echo "static build $static"
4484 if test "$darwin" = "yes" ; then
4485 echo "Cocoa support $cocoa"
4487 echo "pixman $pixman"
4488 echo "SDL support $sdl"
4489 echo "GTK support $gtk"
4490 echo "GNUTLS support $gnutls"
4491 echo "GNUTLS hash $gnutls_hash"
4492 echo "GNUTLS gcrypt $gnutls_gcrypt"
4493 echo "GNUTLS nettle $gnutls_nettle"
4494 echo "VTE support $vte"
4495 echo "curses support $curses"
4496 echo "curl support $curl"
4497 echo "mingw32 support $mingw32"
4498 echo "Audio drivers $audio_drv_list"
4499 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4500 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4501 echo "VirtFS support $virtfs"
4502 echo "VNC support $vnc"
4503 if test "$vnc" = "yes" ; then
4504 echo "VNC TLS support $vnc_tls"
4505 echo "VNC SASL support $vnc_sasl"
4506 echo "VNC JPEG support $vnc_jpeg"
4507 echo "VNC PNG support $vnc_png"
4509 if test -n "$sparc_cpu"; then
4510 echo "Target Sparc Arch $sparc_cpu"
4512 echo "xen support $xen"
4513 if test "$xen" = "yes" ; then
4514 echo "xen ctrl version $xen_ctrl_version"
4516 echo "brlapi support $brlapi"
4517 echo "bluez support $bluez"
4518 echo "Documentation $docs"
4519 echo "GUEST_BASE $guest_base"
4521 echo "vde support $vde"
4522 echo "netmap support $netmap"
4523 echo "Linux AIO support $linux_aio"
4524 echo "ATTR/XATTR support $attr"
4525 echo "Install blobs $blobs"
4526 echo "KVM support $kvm"
4527 echo "RDMA support $rdma"
4528 echo "TCG interpreter $tcg_interpreter"
4529 echo "fdt support $fdt"
4530 echo "preadv support $preadv"
4531 echo "fdatasync $fdatasync"
4532 echo "madvise $madvise"
4533 echo "posix_madvise $posix_madvise"
4534 echo "sigev_thread_id $sigev_thread_id"
4535 echo "uuid support $uuid"
4536 echo "libcap-ng support $cap_ng"
4537 echo "vhost-net support $vhost_net"
4538 echo "vhost-scsi support $vhost_scsi"
4539 echo "Trace backends $trace_backends"
4540 if test "$trace_backend" = "simple"; then
4541 echo "Trace output file $trace_file-<pid>"
4543 if test "$spice" = "yes"; then
4544 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4546 echo "spice support $spice"
4548 echo "rbd support $rbd"
4549 echo "xfsctl support $xfs"
4550 echo "nss used $smartcard_nss"
4551 echo "libusb $libusb"
4552 echo "usb net redir $usb_redir"
4553 echo "OpenGL support $opengl"
4554 echo "libiscsi support $libiscsi"
4555 echo "libnfs support $libnfs"
4556 echo "build guest agent $guest_agent"
4557 echo "QGA VSS support $guest_agent_with_vss"
4558 echo "QGA w32 disk info $guest_agent_ntddscsi"
4559 echo "seccomp support $seccomp"
4560 echo "coroutine backend $coroutine"
4561 echo "coroutine pool $coroutine_pool"
4562 echo "GlusterFS support $glusterfs"
4563 echo "Archipelago support $archipelago"
4564 echo "gcov $gcov_tool"
4565 echo "gcov enabled $gcov"
4566 echo "TPM support $tpm"
4567 echo "libssh2 support $libssh2"
4568 echo "TPM passthrough $tpm_passthrough"
4569 echo "QOM debugging $qom_cast_debug"
4571 echo "lzo support $lzo"
4572 echo "snappy support $snappy"
4573 echo "bzip2 support $bzip2"
4574 echo "NUMA host support $numa"
4575 echo "tcmalloc support $tcmalloc"
4577 if test "$sdl_too_old" = "yes"; then
4578 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4581 config_host_mak
="config-host.mak"
4583 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4585 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4586 echo >> $config_host_mak
4588 echo all
: >> $config_host_mak
4589 echo "prefix=$prefix" >> $config_host_mak
4590 echo "bindir=$bindir" >> $config_host_mak
4591 echo "libdir=$libdir" >> $config_host_mak
4592 echo "libexecdir=$libexecdir" >> $config_host_mak
4593 echo "includedir=$includedir" >> $config_host_mak
4594 echo "mandir=$mandir" >> $config_host_mak
4595 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4596 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4597 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4598 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4599 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4600 if test "$mingw32" = "no" ; then
4601 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4603 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4604 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4605 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4606 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4607 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4609 echo "ARCH=$ARCH" >> $config_host_mak
4611 if test "$debug_tcg" = "yes" ; then
4612 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4614 if test "$strip_opt" = "yes" ; then
4615 echo "STRIP=${strip}" >> $config_host_mak
4617 if test "$bigendian" = "yes" ; then
4618 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4620 if test "$mingw32" = "yes" ; then
4621 echo "CONFIG_WIN32=y" >> $config_host_mak
4622 rc_version
=`cat $source_path/VERSION`
4623 version_major
=${rc_version%%.*}
4624 rc_version
=${rc_version#*.}
4625 version_minor
=${rc_version%%.*}
4626 rc_version
=${rc_version#*.}
4627 version_subminor
=${rc_version%%.*}
4629 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4630 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4631 if test "$guest_agent_with_vss" = "yes" ; then
4632 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4633 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4635 if test "$guest_agent_ntddscsi" = "yes" ; then
4636 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4638 if test "$guest_agent_msi" != "no"; then
4639 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4640 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4641 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4642 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4643 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4644 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4645 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4648 echo "CONFIG_POSIX=y" >> $config_host_mak
4651 if test "$linux" = "yes" ; then
4652 echo "CONFIG_LINUX=y" >> $config_host_mak
4655 if test "$darwin" = "yes" ; then
4656 echo "CONFIG_DARWIN=y" >> $config_host_mak
4659 if test "$aix" = "yes" ; then
4660 echo "CONFIG_AIX=y" >> $config_host_mak
4663 if test "$solaris" = "yes" ; then
4664 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4665 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4666 if test "$needs_libsunmath" = "yes" ; then
4667 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4670 if test "$haiku" = "yes" ; then
4671 echo "CONFIG_HAIKU=y" >> $config_host_mak
4673 if test "$static" = "yes" ; then
4674 echo "CONFIG_STATIC=y" >> $config_host_mak
4676 if test "$profiler" = "yes" ; then
4677 echo "CONFIG_PROFILER=y" >> $config_host_mak
4679 if test "$slirp" = "yes" ; then
4680 echo "CONFIG_SLIRP=y" >> $config_host_mak
4681 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4683 if test "$vde" = "yes" ; then
4684 echo "CONFIG_VDE=y" >> $config_host_mak
4686 if test "$netmap" = "yes" ; then
4687 echo "CONFIG_NETMAP=y" >> $config_host_mak
4689 if test "$l2tpv3" = "yes" ; then
4690 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4692 if test "$cap_ng" = "yes" ; then
4693 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4695 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4696 for drv
in $audio_drv_list; do
4697 def
=CONFIG_
`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4698 echo "$def=y" >> $config_host_mak
4700 if test "$audio_pt_int" = "yes" ; then
4701 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4703 if test "$audio_win_int" = "yes" ; then
4704 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4706 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4707 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4708 if test "$vnc" = "yes" ; then
4709 echo "CONFIG_VNC=y" >> $config_host_mak
4711 if test "$vnc_tls" = "yes" ; then
4712 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4714 if test "$vnc_sasl" = "yes" ; then
4715 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4717 if test "$vnc_jpeg" = "yes" ; then
4718 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4720 if test "$vnc_png" = "yes" ; then
4721 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4723 if test "$fnmatch" = "yes" ; then
4724 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4726 if test "$uuid" = "yes" ; then
4727 echo "CONFIG_UUID=y" >> $config_host_mak
4729 if test "$xfs" = "yes" ; then
4730 echo "CONFIG_XFS=y" >> $config_host_mak
4732 qemu_version
=`head $source_path/VERSION`
4733 echo "VERSION=$qemu_version" >>$config_host_mak
4734 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4735 echo "SRC_PATH=$source_path" >> $config_host_mak
4736 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4737 if [ "$docs" = "yes" ] ; then
4738 echo "BUILD_DOCS=yes" >> $config_host_mak
4740 if test "$modules" = "yes"; then
4741 # $shacmd can generate a hash started with digit, which the compiler doesn't
4742 # like as an symbol. So prefix it with an underscore
4743 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4744 echo "CONFIG_MODULES=y" >> $config_host_mak
4746 if test "$sdl" = "yes" ; then
4747 echo "CONFIG_SDL=y" >> $config_host_mak
4748 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4749 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4751 if test "$cocoa" = "yes" ; then
4752 echo "CONFIG_COCOA=y" >> $config_host_mak
4754 if test "$curses" = "yes" ; then
4755 echo "CONFIG_CURSES=y" >> $config_host_mak
4757 if test "$utimens" = "yes" ; then
4758 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4760 if test "$pipe2" = "yes" ; then
4761 echo "CONFIG_PIPE2=y" >> $config_host_mak
4763 if test "$accept4" = "yes" ; then
4764 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4766 if test "$splice" = "yes" ; then
4767 echo "CONFIG_SPLICE=y" >> $config_host_mak
4769 if test "$eventfd" = "yes" ; then
4770 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4772 if test "$fallocate" = "yes" ; then
4773 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4775 if test "$fallocate_punch_hole" = "yes" ; then
4776 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4778 if test "$fallocate_zero_range" = "yes" ; then
4779 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4781 if test "$posix_fallocate" = "yes" ; then
4782 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4784 if test "$sync_file_range" = "yes" ; then
4785 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4787 if test "$fiemap" = "yes" ; then
4788 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4790 if test "$dup3" = "yes" ; then
4791 echo "CONFIG_DUP3=y" >> $config_host_mak
4793 if test "$ppoll" = "yes" ; then
4794 echo "CONFIG_PPOLL=y" >> $config_host_mak
4796 if test "$prctl_pr_set_timerslack" = "yes" ; then
4797 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4799 if test "$epoll" = "yes" ; then
4800 echo "CONFIG_EPOLL=y" >> $config_host_mak
4802 if test "$epoll_create1" = "yes" ; then
4803 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4805 if test "$epoll_pwait" = "yes" ; then
4806 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4808 if test "$sendfile" = "yes" ; then
4809 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4811 if test "$timerfd" = "yes" ; then
4812 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4814 if test "$setns" = "yes" ; then
4815 echo "CONFIG_SETNS=y" >> $config_host_mak
4817 if test "$inotify" = "yes" ; then
4818 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4820 if test "$inotify1" = "yes" ; then
4821 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4823 if test "$byteswap_h" = "yes" ; then
4824 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4826 if test "$bswap_h" = "yes" ; then
4827 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4829 if test "$curl" = "yes" ; then
4830 echo "CONFIG_CURL=m" >> $config_host_mak
4831 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4832 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4834 if test "$brlapi" = "yes" ; then
4835 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4837 if test "$bluez" = "yes" ; then
4838 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4839 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4841 if test "$glib_subprocess" = "yes" ; then
4842 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4844 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4845 if test "$gtk" = "yes" ; then
4846 echo "CONFIG_GTK=y" >> $config_host_mak
4847 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4848 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4850 if test "$gnutls" = "yes" ; then
4851 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4853 if test "$gnutls_hash" = "yes" ; then
4854 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4856 if test "$gnutls_gcrypt" = "yes" ; then
4857 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4859 if test "$gnutls_nettle" = "yes" ; then
4860 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
4862 if test "$vte" = "yes" ; then
4863 echo "CONFIG_VTE=y" >> $config_host_mak
4864 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4866 if test "$xen" = "yes" ; then
4867 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4868 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4870 if test "$linux_aio" = "yes" ; then
4871 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4873 if test "$attr" = "yes" ; then
4874 echo "CONFIG_ATTR=y" >> $config_host_mak
4876 if test "$libattr" = "yes" ; then
4877 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4879 if test "$virtfs" = "yes" ; then
4880 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4882 if test "$vhost_scsi" = "yes" ; then
4883 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4885 if test "$vhost_net" = "yes" ; then
4886 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4888 if test "$blobs" = "yes" ; then
4889 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4891 if test "$iovec" = "yes" ; then
4892 echo "CONFIG_IOVEC=y" >> $config_host_mak
4894 if test "$preadv" = "yes" ; then
4895 echo "CONFIG_PREADV=y" >> $config_host_mak
4897 if test "$fdt" = "yes" ; then
4898 echo "CONFIG_FDT=y" >> $config_host_mak
4900 if test "$signalfd" = "yes" ; then
4901 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4903 if test "$tcg_interpreter" = "yes" ; then
4904 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4906 if test "$fdatasync" = "yes" ; then
4907 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4909 if test "$madvise" = "yes" ; then
4910 echo "CONFIG_MADVISE=y" >> $config_host_mak
4912 if test "$posix_madvise" = "yes" ; then
4913 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4915 if test "$sigev_thread_id" = "yes" ; then
4916 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4919 if test "$spice" = "yes" ; then
4920 echo "CONFIG_SPICE=y" >> $config_host_mak
4923 if test "$smartcard_nss" = "yes" ; then
4924 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4925 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4926 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4929 if test "$libusb" = "yes" ; then
4930 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4933 if test "$usb_redir" = "yes" ; then
4934 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4937 if test "$opengl" = "yes" ; then
4938 echo "CONFIG_OPENGL=y" >> $config_host_mak
4939 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4940 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4943 if test "$lzo" = "yes" ; then
4944 echo "CONFIG_LZO=y" >> $config_host_mak
4947 if test "$snappy" = "yes" ; then
4948 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4951 if test "$bzip2" = "yes" ; then
4952 echo "CONFIG_BZIP2=y" >> $config_host_mak
4953 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4956 if test "$libiscsi" = "yes" ; then
4957 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4958 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4959 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4962 if test "$libnfs" = "yes" ; then
4963 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4966 if test "$seccomp" = "yes"; then
4967 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4970 # XXX: suppress that
4971 if [ "$bsd" = "yes" ] ; then
4972 echo "CONFIG_BSD=y" >> $config_host_mak
4975 if test "$zero_malloc" = "yes" ; then
4976 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4978 if test "$qom_cast_debug" = "yes" ; then
4979 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4981 if test "$rbd" = "yes" ; then
4982 echo "CONFIG_RBD=m" >> $config_host_mak
4983 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
4984 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4987 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4988 if test "$coroutine_pool" = "yes" ; then
4989 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4991 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4994 if test "$open_by_handle_at" = "yes" ; then
4995 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
4998 if test "$linux_magic_h" = "yes" ; then
4999 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5002 if test "$pragma_diagnostic_available" = "yes" ; then
5003 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5006 if test "$valgrind_h" = "yes" ; then
5007 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5010 if test "$has_environ" = "yes" ; then
5011 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5014 if test "$cpuid_h" = "yes" ; then
5015 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5018 if test "$int128" = "yes" ; then
5019 echo "CONFIG_INT128=y" >> $config_host_mak
5022 if test "$getauxval" = "yes" ; then
5023 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5026 if test "$glusterfs" = "yes" ; then
5027 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5028 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5029 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5032 if test "$glusterfs_discard" = "yes" ; then
5033 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5036 if test "$glusterfs_zerofill" = "yes" ; then
5037 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5040 if test "$archipelago" = "yes" ; then
5041 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5042 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5045 if test "$libssh2" = "yes" ; then
5046 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5047 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5048 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5051 if test "$vhdx" = "yes" ; then
5052 echo "CONFIG_VHDX=y" >> $config_host_mak
5056 if test "$libusb" = "yes"; then
5057 echo "HOST_USB=libusb legacy" >> $config_host_mak
5059 echo "HOST_USB=stub" >> $config_host_mak
5062 # TPM passthrough support?
5063 if test "$tpm" = "yes"; then
5064 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5065 if test "$tpm_passthrough" = "yes"; then
5066 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5070 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5071 if have_backend
"nop"; then
5072 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5074 if have_backend
"simple"; then
5075 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5076 # Set the appropriate trace file.
5077 trace_file
="\"$trace_file-\" FMT_pid"
5079 if have_backend
"stderr"; then
5080 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5082 if have_backend
"ust"; then
5083 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5085 if have_backend
"dtrace"; then
5086 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5087 if test "$trace_backend_stap" = "yes" ; then
5088 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5091 if have_backend
"ftrace"; then
5092 if test "$linux" = "yes" ; then
5093 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5095 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5098 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5100 if test "$rdma" = "yes" ; then
5101 echo "CONFIG_RDMA=y" >> $config_host_mak
5104 # Hold two types of flag:
5105 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5106 # a thread we have a handle to
5107 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5109 if test "$pthread_setname_np" = "yes" ; then
5110 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5111 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5114 if test "$tcg_interpreter" = "yes"; then
5115 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5116 elif test "$ARCH" = "sparc64" ; then
5117 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5118 elif test "$ARCH" = "s390x" ; then
5119 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5120 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5121 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5122 elif test "$ARCH" = "ppc64" ; then
5123 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5125 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5127 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5129 echo "TOOLS=$tools" >> $config_host_mak
5130 echo "ROMS=$roms" >> $config_host_mak
5131 echo "MAKE=$make" >> $config_host_mak
5132 echo "INSTALL=$install" >> $config_host_mak
5133 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5134 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5135 if test -n "$libtool"; then
5136 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5137 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5139 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5140 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5142 echo "PYTHON=$python" >> $config_host_mak
5143 echo "CC=$cc" >> $config_host_mak
5144 if $iasl -h > /dev
/null
2>&1; then
5145 echo "IASL=$iasl" >> $config_host_mak
5147 echo "CC_I386=$cc_i386" >> $config_host_mak
5148 echo "HOST_CC=$host_cc" >> $config_host_mak
5149 echo "CXX=$cxx" >> $config_host_mak
5150 echo "OBJCC=$objcc" >> $config_host_mak
5151 echo "AR=$ar" >> $config_host_mak
5152 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5153 echo "AS=$as" >> $config_host_mak
5154 echo "CPP=$cpp" >> $config_host_mak
5155 echo "OBJCOPY=$objcopy" >> $config_host_mak
5156 echo "LD=$ld" >> $config_host_mak
5157 echo "NM=$nm" >> $config_host_mak
5158 echo "WINDRES=$windres" >> $config_host_mak
5159 echo "LIBTOOL=$libtool" >> $config_host_mak
5160 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5161 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5162 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5163 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5164 if test "$sparse" = "yes" ; then
5165 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5166 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5167 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5168 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5169 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5171 if test "$cross_prefix" != ""; then
5172 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5174 echo "AUTOCONF_HOST := " >> $config_host_mak
5176 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5177 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5178 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5179 echo "LIBS+=$LIBS" >> $config_host_mak
5180 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5181 echo "EXESUF=$EXESUF" >> $config_host_mak
5182 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5183 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5184 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5185 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5186 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5187 if test "$gcov" = "yes" ; then
5188 echo "CONFIG_GCOV=y" >> $config_host_mak
5189 echo "GCOV=$gcov_tool" >> $config_host_mak
5192 # use included Linux headers
5193 if test "$linux" = "yes" ; then
5194 mkdir
-p linux-headers
5212 # For most CPUs the kernel architecture name and QEMU CPU name match.
5216 # For non-KVM architectures we will not have asm headers
5217 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5218 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5222 for target
in $target_list; do
5223 target_dir
="$target"
5224 config_target_mak
=$target_dir/config-target.mak
5225 target_name
=`echo $target | cut -d '-' -f 1`
5226 target_bigendian
="no"
5228 case "$target_name" in
5229 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5230 target_bigendian
=yes
5234 target_user_only
="no"
5235 target_linux_user
="no"
5236 target_bsd_user
="no"
5238 ${target_name}-softmmu)
5239 target_softmmu
="yes"
5241 ${target_name}-linux-user)
5242 if test "$linux" != "yes" ; then
5243 error_exit
"Target '$target' is only available on a Linux host"
5245 target_user_only
="yes"
5246 target_linux_user
="yes"
5248 ${target_name}-bsd-user)
5249 if test "$bsd" != "yes" ; then
5250 error_exit
"Target '$target' is only available on a BSD host"
5252 target_user_only
="yes"
5253 target_bsd_user
="yes"
5256 error_exit
"Target '$target' not recognised"
5261 mkdir
-p $target_dir
5262 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5265 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5268 TARGET_ARCH
="$target_name"
5272 case "$target_name" in
5276 TARGET_BASE_ARCH
=i386
5283 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5286 TARGET_BASE_ARCH
=arm
5288 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5296 gdb_xml_files
="cf-core.xml cf-fp.xml"
5298 microblaze|microblazeel
)
5299 TARGET_ARCH
=microblaze
5304 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5308 TARGET_BASE_ARCH
=mips
5309 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5310 echo "TARGET_ABI32=y" >> $config_target_mak
5314 TARGET_BASE_ARCH
=mips
5315 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5320 TARGET_ARCH
=openrisc
5321 TARGET_BASE_ARCH
=openrisc
5324 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5327 TARGET_BASE_ARCH
=ppc
5329 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5332 TARGET_BASE_ARCH
=ppc
5334 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5338 TARGET_BASE_ARCH
=ppc
5340 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5344 TARGET_BASE_ARCH
=ppc
5346 echo "TARGET_ABI32=y" >> $config_target_mak
5347 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5356 TARGET_BASE_ARCH
=sparc
5360 TARGET_BASE_ARCH
=sparc
5361 TARGET_ABI_DIR
=sparc
5362 echo "TARGET_ABI32=y" >> $config_target_mak
5365 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5375 error_exit
"Unsupported target CPU"
5378 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5379 if [ "$TARGET_BASE_ARCH" = "" ]; then
5380 TARGET_BASE_ARCH
=$TARGET_ARCH
5383 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5386 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5389 target_arch_name
="`upper $TARGET_ARCH`"
5390 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5391 echo "TARGET_NAME=$target_name" >> $config_target_mak
5392 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5393 if [ "$TARGET_ABI_DIR" = "" ]; then
5394 TARGET_ABI_DIR
=$TARGET_ARCH
5396 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5397 if [ "$HOST_VARIANT_DIR" != "" ]; then
5398 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5400 case "$target_name" in
5402 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5403 echo "CONFIG_XEN=y" >> $config_target_mak
5404 if test "$xen_pci_passthrough" = yes; then
5405 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5411 case "$target_name" in
5412 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5413 # Make sure the target and host cpus are compatible
5414 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5415 \
( "$target_name" = "$cpu" -o \
5416 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5417 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5418 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5419 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5420 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5421 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5422 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5423 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5424 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5425 echo "CONFIG_KVM=y" >> $config_target_mak
5426 if test "$vhost_net" = "yes" ; then
5427 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5431 if test "$target_bigendian" = "yes" ; then
5432 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5434 if test "$target_softmmu" = "yes" ; then
5435 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5437 if test "$target_user_only" = "yes" ; then
5438 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5439 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5441 if test "$target_linux_user" = "yes" ; then
5442 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5445 if test ! -z "$gdb_xml_files" ; then
5446 for x
in $gdb_xml_files; do
5447 list
="$list $source_path/gdb-xml/$x"
5449 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5452 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5453 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5455 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5456 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5458 if test "$target_bsd_user" = "yes" ; then
5459 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5462 # generate QEMU_CFLAGS/LDFLAGS for targets
5467 for i
in $ARCH $TARGET_BASE_ARCH ; do
5470 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5471 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5474 if test -n "${cxx}"; then
5475 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5476 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5480 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5481 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5482 if test -n "${cxx}"; then
5483 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5484 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5488 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5489 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5492 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5493 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5496 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5497 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5500 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5501 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5504 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5505 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5508 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5509 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5512 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5513 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5516 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5517 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5520 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5521 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5524 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5525 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5528 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5529 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5532 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5533 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5536 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5537 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5540 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5541 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5544 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5545 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5549 if test "$tcg_interpreter" = "yes" ; then
5550 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5551 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5556 # Ensure there's only a single GP
5557 cflags
="-msmall-data $cflags"
5561 if test "$gprof" = "yes" ; then
5562 echo "TARGET_GPROF=yes" >> $config_target_mak
5563 if test "$target_linux_user" = "yes" ; then
5565 ldflags
="-p $ldflags"
5567 if test "$target_softmmu" = "yes" ; then
5568 ldflags
="-p $ldflags"
5569 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5573 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5574 ldflags
="$ldflags $textseg_ldflags"
5577 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5578 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5580 done # for target in $targets
5582 if [ "$pixman" = "internal" ]; then
5583 echo "config-host.h: subdir-pixman" >> $config_host_mak
5586 if test "$rdma" = "yes" ; then
5587 echo "CONFIG_RDMA=y" >> $config_host_mak
5590 if [ "$dtc_internal" = "yes" ]; then
5591 echo "config-host.h: subdir-dtc" >> $config_host_mak
5594 if test "$numa" = "yes"; then
5595 echo "CONFIG_NUMA=y" >> $config_host_mak
5598 if test "$ccache_cpp2" = "yes"; then
5599 echo "export CCACHE_CPP2=y" >> $config_host_mak
5602 # build tree in object directory in case the source is not in the current directory
5603 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5605 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5606 DIRS
="$DIRS roms/seabios roms/vgabios"
5607 DIRS
="$DIRS qapi-generated"
5608 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
5609 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5610 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5611 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5612 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
5613 FILES
="$FILES pc-bios/s390-ccw/Makefile"
5614 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5615 FILES
="$FILES pc-bios/qemu-icon.bmp"
5617 $source_path/pc-bios
/*.bin \
5618 $source_path/pc-bios
/*.aml \
5619 $source_path/pc-bios
/*.rom \
5620 $source_path/pc-bios
/*.dtb \
5621 $source_path/pc-bios
/*.img \
5622 $source_path/pc-bios
/openbios-
* \
5623 $source_path/pc-bios
/u-boot.
* \
5624 $source_path/pc-bios
/palcode-
*
5626 FILES
="$FILES pc-bios/`basename $bios_file`"
5628 for test_file
in `find $source_path/tests/acpi-test-data -type f`
5630 FILES
="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5633 for f
in $FILES ; do
5634 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5635 symlink
"$source_path/$f" "$f"
5639 # temporary config to build submodules
5640 for rom
in seabios vgabios
; do
5641 config_mak
=roms
/$rom/config.mak
5642 echo "# Automatically generated by configure - do not modify" > $config_mak
5643 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5644 echo "AS=$as" >> $config_mak
5645 echo "CC=$cc" >> $config_mak
5646 echo "BCC=bcc" >> $config_mak
5647 echo "CPP=$cpp" >> $config_mak
5648 echo "OBJCOPY=objcopy" >> $config_mak
5649 echo "IASL=$iasl" >> $config_mak
5650 echo "LD=$ld" >> $config_mak
5653 # set up qemu-iotests in this build directory
5654 iotests_common_env
="tests/qemu-iotests/common.env"
5655 iotests_check
="tests/qemu-iotests/check"
5657 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5658 echo >> "$iotests_common_env"
5659 echo "export PYTHON='$python'" >> "$iotests_common_env"
5661 if [ ! -e "$iotests_check" ]; then
5662 symlink
"$source_path/$iotests_check" "$iotests_check"
5665 # Save the configure command line for later reuse.
5666 cat <<EOD >config.status
5668 # Generated by configure.
5669 # Run this file to recreate the current configuration.
5670 # Compiler output produced by configure, useful for debugging
5671 # configure, is in config.log if it exists.
5673 printf "exec" >>config.status
5674 printf " '%s'" "$0" "$@" >>config.status
5675 echo >>config.status
5676 chmod +x config.status