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
106 do_cc
$QEMU_CFLAGS -c -o $TMPO $TMPC
112 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
118 # Run the compiler, capturing its output to the log.
119 echo $libtool $mode --tag=CC
$cc "$@" >> config.log
120 $libtool $mode --tag=CC
$cc "$@" >> config.log
2>&1 ||
return $?
121 # Test passed. If this is an --enable-werror build, rerun
122 # the test with -Werror and bail out if it fails. This
123 # makes warning-generating-errors in configure test code
124 # obvious to developers.
125 if test "$werror" != "yes"; then
128 # Don't bother rerunning the compile if we were already using -Werror
134 echo $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
135 $libtool $mode --tag=CC
$cc -Werror "$@" >> config.log
2>&1 && return $?
136 error_exit
"configure test passed without -Werror but failed with -Werror." \
137 "This is probably a bug in the configure script. The failing command" \
138 "will be at the bottom of config.log." \
139 "You can run configure with --disable-werror to bypass this check."
143 do_libtool
--mode=compile
$QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC ||
return $?
144 do_libtool
--mode=link
$LDFLAGS -o $TMPA $TMPL -rpath /usr
/local
/lib
147 # symbolically link $1 to $2. Portable version of "ln -sf".
150 mkdir
-p "$(dirname "$2")"
154 # check whether a command is available to this shell (may be either an
155 # executable or a builtin)
157 type "$1" >/dev
/null
2>&1
160 # search for an executable in PATH
166 # pathname has a dir component?
167 if [ "${local_command#*/}" != "$local_command" ]; then
168 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
169 echo "$local_command"
173 if [ -z "$local_command" ]; then
178 for local_dir
in $PATH; do
179 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
180 echo "$local_dir/$local_command"
181 IFS
="${local_ifs:-$(printf ' \t\n')}"
186 IFS
="${local_ifs:-$(printf ' \t\n')}"
191 echo "$trace_backends" |
grep "$1" >/dev
/null
195 source_path
=`dirname "$0"`
198 interp_prefix
="/usr/gnemul/qemu-%M"
202 block_drv_rw_whitelist
=""
203 block_drv_ro_whitelist
=""
209 cc_i386
=i386-pc-linux-gnu-gcc
214 # Don't accept a target_list environment variable.
217 # Default value for a variable defining feature "foo".
218 # * foo="no" feature will only be used if --enable-foo arg is given
219 # * foo="" feature will be searched for, and if found, will be used
220 # unless --disable-foo is given
221 # * foo="yes" this value will only be set by --enable-foo flag.
222 # feature will searched for,
223 # if not found, configure exits with error
225 # Always add --enable-foo and --disable-foo command line args.
226 # Distributions want to ensure that several features are compiled in, and it
227 # 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"
318 guest_agent_with_vss
="no"
328 glusterfs_discard
="no"
329 glusterfs_zerofill
="no"
341 # parse CC options first
343 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
345 --cross-prefix=*) cross_prefix
="$optarg"
349 --cxx=*) CXX
="$optarg"
351 --source-path=*) source_path
="$optarg"
353 --cpu=*) cpu
="$optarg"
355 --extra-cflags=*) QEMU_CFLAGS
="$optarg $QEMU_CFLAGS"
356 EXTRA_CFLAGS
="$optarg"
358 --extra-ldflags=*) LDFLAGS
="$optarg $LDFLAGS"
359 EXTRA_LDFLAGS
="$optarg"
361 --enable-debug-info) debug_info
="yes"
363 --disable-debug-info) debug_info
="no"
368 # Using uname is really, really broken. Once we have the right set of checks
369 # we can eliminate its usage altogether.
371 # Preferred compiler:
373 # ${cross_prefix}gcc (if cross-prefix specified)
375 if test -z "${CC}${cross_prefix}"; then
378 cc
="${CC-${cross_prefix}gcc}"
381 if test -z "${CXX}${cross_prefix}"; then
384 cxx
="${CXX-${cross_prefix}g++}"
387 ar="${AR-${cross_prefix}ar}"
388 as
="${AS-${cross_prefix}as}"
390 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
391 ld
="${LD-${cross_prefix}ld}"
392 libtool
="${LIBTOOL-${cross_prefix}libtool}"
393 nm
="${NM-${cross_prefix}nm}"
394 strip
="${STRIP-${cross_prefix}strip}"
395 windres
="${WINDRES-${cross_prefix}windres}"
396 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
398 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
400 pkg_config
=query_pkg_config
401 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
402 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
404 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
405 ARFLAGS
="${ARFLAGS-rv}"
407 # default flags for all hosts
408 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
409 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
410 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
411 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
412 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
413 if test "$debug_info" = "yes"; then
415 LDFLAGS
="-g $LDFLAGS"
418 # make source path absolute
419 source_path
=`cd "$source_path"; pwd`
421 # running configure in the source tree?
422 # we know that's the case if configure is there.
423 if test -f "./configure"; then
424 pwd_is_source_path
="y"
426 pwd_is_source_path
="n"
432 #error $1 not defined
434 int main(void) { return 0; }
439 if check_define __linux__
; then
441 elif check_define _WIN32
; then
443 elif check_define __OpenBSD__
; then
445 elif check_define __sun__
; then
447 elif check_define __HAIKU__
; then
453 # Some host OSes need non-standard checks for which CPU to use.
454 # Note that these checks are broken for cross-compilation: if you're
455 # cross-compiling to one of these OSes then you'll need to specify
456 # the correct CPU with the --cpu option.
459 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
460 # run 64-bit userspace code.
461 # If the user didn't specify a CPU explicitly and the kernel says this is
462 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
463 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
468 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
469 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
474 if test ! -z "$cpu" ; then
475 # command line argument
477 elif check_define __i386__
; then
479 elif check_define __x86_64__
; then
480 if check_define __ILP32__
; then
485 elif check_define __sparc__
; then
486 if check_define __arch64__
; then
491 elif check_define _ARCH_PPC
; then
492 if check_define _ARCH_PPC64
; then
497 elif check_define __mips__
; then
499 elif check_define __ia64__
; then
501 elif check_define __s390__
; then
502 if check_define __s390x__
; then
507 elif check_define __arm__
; then
509 elif check_define __aarch64__
; then
511 elif check_define __hppa__
; then
518 # Normalise host CPU name and set ARCH.
519 # Note that this case should only have supported host CPUs, not guests.
521 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
524 i386|i486|i586|i686|i86pc|BePC
)
543 # This will result in either an error or falling back to TCI later
547 if test -z "$ARCH"; then
553 # host *BSD for user mode
559 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
560 audio_possible_drivers
="winwave sdl"
561 audio_drv_list
="winwave"
565 audio_possible_drivers
="winwave dsound sdl fmod"
566 audio_drv_list
="winwave"
571 audio_possible_drivers
="oss sdl esd pa"
577 audio_possible_drivers
="oss sdl esd pa"
578 # needed for kinfo_getvmmap(3) in libutil.h
580 netmap
="" # enable netmap autodetect
581 HOST_VARIANT_DIR
="freebsd"
587 audio_possible_drivers
="oss sdl esd pa"
588 HOST_VARIANT_DIR
="dragonfly"
594 audio_possible_drivers
="oss sdl esd"
596 HOST_VARIANT_DIR
="netbsd"
602 audio_possible_drivers
="sdl esd"
603 HOST_VARIANT_DIR
="openbsd"
608 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
609 if [ "$cpu" = "x86_64" ] ; then
610 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
611 LDFLAGS
="-arch x86_64 $LDFLAGS"
614 audio_drv_list
="coreaudio"
615 audio_possible_drivers
="coreaudio sdl fmod"
616 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
617 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
618 # Disable attempts to use ObjectiveC features in os/object.h since they
619 # won't work when we're compiling with gcc as a C compiler.
620 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
621 HOST_VARIANT_DIR
="darwin"
626 install="${INSTALL-ginstall}"
628 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
629 needs_libsunmath
="no"
630 solarisrev
=`uname -r | cut -f2 -d.`
631 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
632 if test "$solarisrev" -le 9 ; then
633 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
634 needs_libsunmath
="yes"
635 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
636 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
637 LIBS
="-lsunmath $LIBS"
639 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
640 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
641 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
642 "Studio 11 can be downloaded from www.sun.com."
646 if test -f /usr
/include
/sys
/soundcard.h
; then
649 audio_possible_drivers
="oss sdl"
650 # needed for CMSG_ macros in sys/socket.h
651 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
652 # needed for TIOCWIN* defines in termios.h
653 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
654 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
655 solarisnetlibs
="-lsocket -lnsl -lresolv"
656 LIBS
="$solarisnetlibs $LIBS"
657 libs_qga
="$solarisnetlibs $libs_qga"
665 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
666 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
670 audio_possible_drivers
="oss alsa sdl esd pa"
676 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
677 audio_possible_drivers
="$audio_possible_drivers fmod"
679 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
683 if [ "$bsd" = "yes" ] ; then
684 if [ "$darwin" != "yes" ] ; then
689 : ${make=${MAKE-make}}
690 : ${install=${INSTALL-install}}
691 : ${python=${PYTHON-python}}
692 : ${smbd=${SMBD-/usr/sbin/smbd}}
694 # Default objcc to clang if available, otherwise use CC
701 if test "$mingw32" = "yes" ; then
704 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
705 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
706 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
707 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
709 int main(void) { return 0; }
711 if compile_prog
"" "-liberty" ; then
712 LIBS
="-liberty $LIBS"
714 prefix
="c:/Program Files/QEMU"
717 qemu_docdir
="\${prefix}"
719 sysconfdir
="\${prefix}"
722 libs_qga
="-lws2_32 -lwinmm -lpowrprof $libs_qga"
728 optarg
=`expr "x$opt" : 'x[^=]*=\(.*\)'`
730 --help|
-h) show_help
=yes
732 --version|
-V) exec cat $source_path/VERSION
734 --prefix=*) prefix
="$optarg"
736 --interp-prefix=*) interp_prefix
="$optarg"
744 --host-cc=*) host_cc
="$optarg"
748 --iasl=*) iasl
="$optarg"
750 --objcc=*) objcc
="$optarg"
752 --make=*) make="$optarg"
754 --install=*) install="$optarg"
756 --python=*) python
="$optarg"
758 --gcov=*) gcov_tool
="$optarg"
760 --smbd=*) smbd
="$optarg"
768 --disable-debug-info)
775 --target-list=*) target_list
="$optarg"
777 --enable-trace-backends=*) trace_backends
="$optarg"
779 # XXX: backwards compatibility
780 --enable-trace-backend=*) trace_backends
="$optarg"
782 --with-trace-file=*) trace_file
="$optarg"
784 --enable-gprof) gprof
="yes"
786 --enable-gcov) gcov
="yes"
790 LDFLAGS
="-static $LDFLAGS"
791 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
793 --mandir=*) mandir
="$optarg"
795 --bindir=*) bindir
="$optarg"
797 --libdir=*) libdir
="$optarg"
799 --libexecdir=*) libexecdir
="$optarg"
801 --includedir=*) includedir
="$optarg"
803 --datadir=*) datadir
="$optarg"
805 --with-confsuffix=*) confsuffix
="$optarg"
807 --docdir=*) qemu_docdir
="$optarg"
809 --sysconfdir=*) sysconfdir
="$optarg"
811 --localstatedir=*) local_statedir
="$optarg"
813 --sbindir=*|
--sharedstatedir=*|\
814 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
815 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
816 # These switches are silently ignored, for compatibility with
817 # autoconf-generated configure scripts. This allows QEMU's
818 # configure to be used by RPM and similar macros that set
819 # lots of directory switches by default.
821 --with-system-pixman) pixman
="system"
823 --without-system-pixman) pixman
="internal"
825 --without-pixman) pixman
="none"
827 --disable-sdl) sdl
="no"
829 --enable-sdl) sdl
="yes"
831 --with-sdlabi=*) sdlabi
="$optarg"
833 --disable-qom-cast-debug) qom_cast_debug
="no"
835 --enable-qom-cast-debug) qom_cast_debug
="yes"
837 --disable-virtfs) virtfs
="no"
839 --enable-virtfs) virtfs
="yes"
841 --disable-vnc) vnc
="no"
843 --enable-vnc) vnc
="yes"
845 --fmod-lib=*) fmod_lib
="$optarg"
847 --fmod-inc=*) fmod_inc
="$optarg"
849 --oss-lib=*) oss_lib
="$optarg"
851 --audio-drv-list=*) audio_drv_list
="$optarg"
853 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
855 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=`echo "$optarg" | sed -e 's/,/ /g'`
857 --enable-debug-tcg) debug_tcg
="yes"
859 --disable-debug-tcg) debug_tcg
="no"
862 # Enable debugging options that aren't excessively noisy
867 --enable-sparse) sparse
="yes"
869 --disable-sparse) sparse
="no"
871 --disable-strip) strip_opt
="no"
873 --disable-vnc-tls) vnc_tls
="no"
875 --enable-vnc-tls) vnc_tls
="yes"
877 --disable-vnc-sasl) vnc_sasl
="no"
879 --enable-vnc-sasl) vnc_sasl
="yes"
881 --disable-vnc-jpeg) vnc_jpeg
="no"
883 --enable-vnc-jpeg) vnc_jpeg
="yes"
885 --disable-vnc-png) vnc_png
="no"
887 --enable-vnc-png) vnc_png
="yes"
889 --disable-vnc-ws) vnc_ws
="no"
891 --enable-vnc-ws) vnc_ws
="yes"
893 --disable-slirp) slirp
="no"
895 --disable-uuid) uuid
="no"
897 --enable-uuid) uuid
="yes"
899 --disable-vde) vde
="no"
901 --enable-vde) vde
="yes"
903 --disable-netmap) netmap
="no"
905 --enable-netmap) netmap
="yes"
907 --disable-xen) xen
="no"
909 --enable-xen) xen
="yes"
911 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
913 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
915 --disable-brlapi) brlapi
="no"
917 --enable-brlapi) brlapi
="yes"
919 --disable-bluez) bluez
="no"
921 --enable-bluez) bluez
="yes"
923 --disable-kvm) kvm
="no"
925 --enable-kvm) kvm
="yes"
927 --disable-tcg-interpreter) tcg_interpreter
="no"
929 --enable-tcg-interpreter) tcg_interpreter
="yes"
931 --disable-cap-ng) cap_ng
="no"
933 --enable-cap-ng) cap_ng
="yes"
935 --disable-spice) spice
="no"
937 --enable-spice) spice
="yes"
939 --disable-libiscsi) libiscsi
="no"
941 --enable-libiscsi) libiscsi
="yes"
943 --disable-libnfs) libnfs
="no"
945 --enable-libnfs) libnfs
="yes"
947 --enable-profiler) profiler
="yes"
949 --disable-cocoa) cocoa
="no"
954 audio_drv_list
="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
956 --disable-system) softmmu
="no"
958 --enable-system) softmmu
="yes"
965 --disable-linux-user) linux_user
="no"
967 --enable-linux-user) linux_user
="yes"
969 --disable-bsd-user) bsd_user
="no"
971 --enable-bsd-user) bsd_user
="yes"
973 --enable-guest-base) guest_base
="yes"
975 --disable-guest-base) guest_base
="no"
977 --enable-pie) pie
="yes"
979 --disable-pie) pie
="no"
981 --enable-werror) werror
="yes"
983 --disable-werror) werror
="no"
985 --enable-stack-protector) stack_protector
="yes"
987 --disable-stack-protector) stack_protector
="no"
989 --disable-curses) curses
="no"
991 --enable-curses) curses
="yes"
993 --disable-curl) curl
="no"
995 --enable-curl) curl
="yes"
997 --disable-fdt) fdt
="no"
999 --enable-fdt) fdt
="yes"
1001 --disable-linux-aio) linux_aio
="no"
1003 --enable-linux-aio) linux_aio
="yes"
1005 --disable-attr) attr
="no"
1007 --enable-attr) attr
="yes"
1009 --disable-blobs) blobs
="no"
1011 --with-pkgversion=*) pkgversion
=" ($optarg)"
1013 --with-coroutine=*) coroutine
="$optarg"
1015 --disable-coroutine-pool) coroutine_pool
="no"
1017 --enable-coroutine-pool) coroutine_pool
="yes"
1019 --disable-docs) docs
="no"
1021 --enable-docs) docs
="yes"
1023 --disable-vhost-net) vhost_net
="no"
1025 --enable-vhost-net) vhost_net
="yes"
1027 --disable-vhost-scsi) vhost_scsi
="no"
1029 --enable-vhost-scsi) vhost_scsi
="yes"
1031 --disable-opengl) opengl
="no"
1033 --enable-opengl) opengl
="yes"
1035 --disable-rbd) rbd
="no"
1037 --enable-rbd) rbd
="yes"
1039 --disable-xfsctl) xfs
="no"
1041 --enable-xfsctl) xfs
="yes"
1043 --disable-smartcard-nss) smartcard_nss
="no"
1045 --enable-smartcard-nss) smartcard_nss
="yes"
1047 --disable-libusb) libusb
="no"
1049 --enable-libusb) libusb
="yes"
1051 --disable-usb-redir) usb_redir
="no"
1053 --enable-usb-redir) usb_redir
="yes"
1055 --disable-zlib-test) zlib
="no"
1057 --disable-lzo) lzo
="no"
1059 --enable-lzo) lzo
="yes"
1061 --disable-snappy) snappy
="no"
1063 --enable-snappy) snappy
="yes"
1065 --disable-bzip2) bzip2="no"
1067 --enable-bzip2) bzip2="yes"
1069 --enable-guest-agent) guest_agent
="yes"
1071 --disable-guest-agent) guest_agent
="no"
1073 --with-vss-sdk) vss_win32_sdk
=""
1075 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1077 --without-vss-sdk) vss_win32_sdk
="no"
1079 --with-win-sdk) win_sdk
=""
1081 --with-win-sdk=*) win_sdk
="$optarg"
1083 --without-win-sdk) win_sdk
="no"
1085 --enable-tools) want_tools
="yes"
1087 --disable-tools) want_tools
="no"
1089 --enable-seccomp) seccomp
="yes"
1091 --disable-seccomp) seccomp
="no"
1093 --disable-glusterfs) glusterfs
="no"
1095 --enable-glusterfs) glusterfs
="yes"
1097 --disable-archipelago) archipelago
="no"
1099 --enable-archipelago) archipelago
="yes"
1101 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1102 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1104 --disable-gtk) gtk
="no"
1106 --enable-gtk) gtk
="yes"
1108 --enable-rdma) rdma
="yes"
1110 --disable-rdma) rdma
="no"
1112 --with-gtkabi=*) gtkabi
="$optarg"
1114 --disable-vte) vte
="no"
1116 --enable-vte) vte
="yes"
1118 --disable-tpm) tpm
="no"
1120 --enable-tpm) tpm
="yes"
1122 --disable-libssh2) libssh2
="no"
1124 --enable-libssh2) libssh2
="yes"
1126 --enable-vhdx) vhdx
="yes"
1128 --disable-vhdx) vhdx
="no"
1130 --disable-quorum) quorum
="no"
1132 --enable-quorum) quorum
="yes"
1134 --disable-numa) numa
="no"
1136 --enable-numa) numa
="yes"
1138 --disable-tcmalloc) tcmalloc
="no"
1140 --enable-tcmalloc) tcmalloc
="yes"
1143 echo "ERROR: unknown option $opt"
1144 echo "Try '$0 --help' for more information"
1150 if ! has
$python; then
1151 error_exit
"Python not found. Use --python=/path/to/python"
1154 # Note that if the Python conditional here evaluates True we will exit
1155 # with status 1 which is a shell 'false' value.
1156 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1157 error_exit
"Cannot use '$python', Python 2.4 or later is required." \
1158 "Note that Python 3 or later is not yet supported." \
1159 "Use --python=/path/to/python to specify a supported Python."
1162 # The -B switch was added in Python 2.6.
1163 # If it is supplied, compiled files are not written.
1164 # Use it for Python versions which support it.
1165 if $python -B -c 'import sys; sys.exit(0)' 2>/dev
/null
; then
1172 LDFLAGS
="-m32 $LDFLAGS"
1176 LDFLAGS
="-m64 $LDFLAGS"
1179 LDFLAGS
="-m32 $LDFLAGS"
1180 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1183 LDFLAGS
="-m64 $LDFLAGS"
1184 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1188 LDFLAGS
="-m31 $LDFLAGS"
1192 LDFLAGS
="-m64 $LDFLAGS"
1196 LDFLAGS
="-m32 $LDFLAGS"
1197 cc_i386
='$(CC) -m32'
1201 LDFLAGS
="-m64 $LDFLAGS"
1202 cc_i386
='$(CC) -m32'
1206 LDFLAGS
="-mx32 $LDFLAGS"
1207 cc_i386
='$(CC) -m32'
1209 # No special flags required for other host CPUs
1212 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1213 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1215 default_target_list
=""
1219 if [ "$softmmu" = "yes" ]; then
1220 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1222 if [ "$linux_user" = "yes" ]; then
1223 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1225 if [ "$bsd_user" = "yes" ]; then
1226 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1229 for config
in $mak_wilds; do
1230 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1233 if test x
"$show_help" = x
"yes" ; then
1236 Usage: configure [options]
1237 Options: [defaults in brackets after descriptions]
1240 --help print this message
1241 --prefix=PREFIX install in PREFIX [$prefix]
1242 --interp-prefix=PREFIX where to find shared libraries, etc.
1243 use %M for cpu name [$interp_prefix]
1244 --target-list=LIST set target list (default: build everything)
1245 $(echo Available targets: $default_target_list | \
1246 fold -s -w 53 | sed -e 's/^/ /')
1248 Advanced options (experts only):
1249 --source-path=PATH path of source code [$source_path]
1250 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1251 --cc=CC use C compiler CC [$cc]
1252 --iasl=IASL use ACPI compiler IASL [$iasl]
1253 --host-cc=CC use C compiler CC [$host_cc] for code run at
1255 --cxx=CXX use C++ compiler CXX [$cxx]
1256 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1257 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1258 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1259 --make=MAKE use specified make [$make]
1260 --install=INSTALL use specified install [$install]
1261 --python=PYTHON use specified python [$python]
1262 --smbd=SMBD use specified smbd [$smbd]
1263 --static enable static build [$static]
1264 --mandir=PATH install man pages in PATH
1265 --datadir=PATH install firmware in PATH$confsuffix
1266 --docdir=PATH install documentation in PATH$confsuffix
1267 --bindir=PATH install binaries in PATH
1268 --libdir=PATH install libraries in PATH
1269 --sysconfdir=PATH install config in PATH$confsuffix
1270 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1271 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1272 --enable-modules enable modules support
1273 --enable-debug-tcg enable TCG debugging
1274 --disable-debug-tcg disable TCG debugging (default)
1275 --enable-debug-info enable debugging information (default)
1276 --disable-debug-info disable debugging information
1277 --enable-debug enable common debug build options
1278 --enable-sparse enable sparse checker
1279 --disable-sparse disable sparse checker (default)
1280 --disable-strip disable stripping binaries
1281 --disable-werror disable compilation abort on warning
1282 --disable-stack-protector disable compiler-provided stack protection
1283 --disable-sdl disable SDL
1284 --enable-sdl enable SDL
1285 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1286 --disable-gtk disable gtk UI
1287 --enable-gtk enable gtk UI
1288 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1289 --disable-virtfs disable VirtFS
1290 --enable-virtfs enable VirtFS
1291 --disable-vnc disable VNC
1292 --enable-vnc enable VNC
1293 --disable-cocoa disable Cocoa (Mac OS X only)
1294 --enable-cocoa enable Cocoa (default on Mac OS X)
1295 --audio-drv-list=LIST set audio drivers list:
1296 Available drivers: $audio_possible_drivers
1297 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1298 --block-drv-rw-whitelist=L
1299 set block driver read-write whitelist
1300 (affects only QEMU, not qemu-img)
1301 --block-drv-ro-whitelist=L
1302 set block driver read-only whitelist
1303 (affects only QEMU, not qemu-img)
1304 --disable-xen disable xen backend driver support
1305 --enable-xen enable xen backend driver support
1306 --disable-xen-pci-passthrough
1307 --enable-xen-pci-passthrough
1308 --disable-brlapi disable BrlAPI
1309 --enable-brlapi enable BrlAPI
1310 --disable-vnc-tls disable TLS encryption for VNC server
1311 --enable-vnc-tls enable TLS encryption for VNC server
1312 --disable-vnc-sasl disable SASL encryption for VNC server
1313 --enable-vnc-sasl enable SASL encryption for VNC server
1314 --disable-vnc-jpeg disable JPEG lossy compression for VNC server
1315 --enable-vnc-jpeg enable JPEG lossy compression for VNC server
1316 --disable-vnc-png disable PNG compression for VNC server (default)
1317 --enable-vnc-png enable PNG compression for VNC server
1318 --disable-vnc-ws disable Websockets support for VNC server
1319 --enable-vnc-ws enable Websockets support for VNC server
1320 --disable-curses disable curses output
1321 --enable-curses enable curses output
1322 --disable-curl disable curl connectivity
1323 --enable-curl enable curl connectivity
1324 --disable-fdt disable fdt device tree
1325 --enable-fdt enable fdt device tree
1326 --disable-bluez disable bluez stack connectivity
1327 --enable-bluez enable bluez stack connectivity
1328 --disable-slirp disable SLIRP userspace network connectivity
1329 --disable-kvm disable KVM acceleration support
1330 --enable-kvm enable KVM acceleration support
1331 --disable-rdma disable RDMA-based migration support
1332 --enable-rdma enable RDMA-based migration support
1333 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1334 --enable-system enable all system emulation targets
1335 --disable-system disable all system emulation targets
1336 --enable-user enable supported user emulation targets
1337 --disable-user disable all user emulation targets
1338 --enable-linux-user enable all linux usermode emulation targets
1339 --disable-linux-user disable all linux usermode emulation targets
1340 --enable-bsd-user enable all BSD usermode emulation targets
1341 --disable-bsd-user disable all BSD usermode emulation targets
1342 --enable-guest-base enable GUEST_BASE support for usermode
1344 --disable-guest-base disable GUEST_BASE support
1345 --enable-pie build Position Independent Executables
1346 --disable-pie do not build Position Independent Executables
1347 --fmod-lib path to FMOD library
1348 --fmod-inc path to FMOD includes
1349 --oss-lib path to OSS library
1350 --cpu=CPU Build for host CPU [$cpu]
1351 --disable-uuid disable uuid support
1352 --enable-uuid enable uuid support
1353 --disable-vde disable support for vde network
1354 --enable-vde enable support for vde network
1355 --disable-netmap disable support for netmap network
1356 --enable-netmap enable support for netmap network
1357 --disable-linux-aio disable Linux AIO support
1358 --enable-linux-aio enable Linux AIO support
1359 --disable-cap-ng disable libcap-ng support
1360 --enable-cap-ng enable libcap-ng support
1361 --disable-attr disable attr and xattr support
1362 --enable-attr enable attr and xattr support
1363 --disable-blobs disable installing provided firmware blobs
1364 --enable-docs enable documentation build
1365 --disable-docs disable documentation build
1366 --disable-vhost-net disable vhost-net acceleration support
1367 --enable-vhost-net enable vhost-net acceleration support
1368 --enable-trace-backends=B Set trace backend
1369 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1370 --with-trace-file=NAME Full PATH,NAME of file to store traces
1372 --disable-spice disable spice
1373 --enable-spice enable spice
1374 --enable-rbd enable building the rados block device (rbd)
1375 --disable-libiscsi disable iscsi support
1376 --enable-libiscsi enable iscsi support
1377 --disable-libnfs disable nfs support
1378 --enable-libnfs enable nfs support
1379 --disable-smartcard-nss disable smartcard nss support
1380 --enable-smartcard-nss enable smartcard nss support
1381 --disable-libusb disable libusb (for usb passthrough)
1382 --enable-libusb enable libusb (for usb passthrough)
1383 --disable-usb-redir disable usb network redirection support
1384 --enable-usb-redir enable usb network redirection support
1385 --enable-lzo enable the support of lzo compression library
1386 --enable-snappy enable the support of snappy compression library
1387 --enable-bzip2 enable the support of bzip2 compression library (for
1388 reading bzip2-compressed dmg images)
1389 --disable-guest-agent disable building of the QEMU Guest Agent
1390 --enable-guest-agent enable building of the QEMU Guest Agent
1391 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1392 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1393 --disable-seccomp disable seccomp support
1394 --enable-seccomp enable seccomp support
1395 --with-coroutine=BACKEND coroutine backend. Supported options:
1396 gthread, ucontext, sigaltstack, windows
1397 --disable-coroutine-pool disable coroutine freelist (worse performance)
1398 --enable-coroutine-pool enable coroutine freelist (better performance)
1399 --enable-glusterfs enable GlusterFS backend
1400 --disable-glusterfs disable GlusterFS backend
1401 --enable-archipelago enable Archipelago backend
1402 --disable-archipelago disable Archipelago backend
1403 --enable-gcov enable test coverage analysis with gcov
1404 --gcov=GCOV use specified gcov [$gcov_tool]
1405 --disable-tpm disable TPM support
1406 --enable-tpm enable TPM support
1407 --disable-libssh2 disable ssh block device support
1408 --enable-libssh2 enable ssh block device support
1409 --disable-vhdx disable support for the Microsoft VHDX image format
1410 --enable-vhdx enable support for the Microsoft VHDX image format
1411 --disable-quorum disable quorum block filter support
1412 --enable-quorum enable quorum block filter support
1413 --disable-numa disable libnuma support
1414 --enable-numa enable libnuma support
1415 --disable-tcmalloc disable tcmalloc support
1416 --enable-tcmalloc enable tcmalloc support
1418 NOTE: The object files are built at the place where configure is launched
1423 # Now we have handled --enable-tcg-interpreter and know we're not just
1424 # printing the help message, bail out if the host CPU isn't supported.
1425 if test "$ARCH" = "unknown"; then
1426 if test "$tcg_interpreter" = "yes" ; then
1427 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1430 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1434 # Consult white-list to determine whether to enable werror
1435 # by default. Only enable by default for git builds
1436 z_version
=`cut -f3 -d. $source_path/VERSION`
1438 if test -z "$werror" ; then
1439 if test -d "$source_path/.git" -a \
1440 "$linux" = "yes" ; then
1447 # check that the C compiler works.
1449 int main(void) { return 0; }
1452 if compile_object
; then
1453 : C compiler works ok
1455 error_exit
"\"$cc\" either does not exist or does not work"
1458 # Check that the C++ compiler exists and works with the C compiler
1461 int c_function(void);
1462 int main(void) { return c_function(); }
1469 int c_function(void);
1471 int c_function(void) { return 42; }
1476 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1477 # C++ compiler $cxx works ok with C compiler $cc
1480 echo "C++ compiler $cxx does not work with C compiler $cc"
1481 echo "Disabling C++ specific optional code"
1485 echo "No C++ compiler available; disabling C++ specific optional code"
1489 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1490 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1491 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1492 gcc_flags
="-Wendif-labels $gcc_flags"
1493 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1494 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1495 # Note that we do not add -Werror to gcc_flags here, because that would
1496 # enable it for all configure tests. If a configure test failed due
1497 # to -Werror this would just silently disable some features,
1498 # so it's too error prone.
1500 int main(void) { return 0; }
1502 for flag
in $gcc_flags; do
1503 # Use the positive sense of the flag when testing for -Wno-wombat
1504 # support (gcc will happily accept the -Wno- form of unknown
1506 optflag
="$(echo $flag | sed -e 's/^-Wno-/-W/')"
1507 if compile_prog
"-Werror $optflag" "" ; then
1508 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1512 if test "$stack_protector" != "no"; then
1513 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1515 for flag
in $gcc_flags; do
1516 # We need to check both a compile and a link, since some compiler
1517 # setups fail only on a .c->.o compile and some only at link time
1518 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1519 compile_prog
"-Werror $flag" ""; then
1520 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1521 LIBTOOLFLAGS
="$LIBTOOLFLAGS -Wc,$flag"
1526 if test "$stack_protector" = yes; then
1527 if test $sp_on = 0; then
1528 error_exit
"Stack protector not supported"
1533 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1534 # large functions that use global variables. The bug is in all releases of
1535 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1536 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1538 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1539 int main(void) { return 0; }
1541 #error No bug in this compiler.
1544 if compile_prog
"-Werror -fno-gcse" "" ; then
1545 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1548 if test "$static" = "yes" ; then
1549 if test "$modules" = "yes" ; then
1550 error_exit
"static and modules are mutually incompatible"
1552 if test "$pie" = "yes" ; then
1553 error_exit
"static and pie are mutually incompatible"
1559 # Unconditional check for compiler __thread support
1561 static __thread int tls_var;
1562 int main(void) { return tls_var; }
1565 if ! compile_prog
"-Werror" "" ; then
1566 error_exit
"Your compiler does not support the __thread specifier for " \
1567 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1570 if test "$pie" = ""; then
1571 case "$cpu-$targetos" in
1572 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1580 if test "$pie" != "no" ; then
1584 # define THREAD __thread
1589 static THREAD int tls_var;
1591 int main(void) { return tls_var; }
1594 if compile_prog
"-fPIE -DPIE" "-pie"; then
1595 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1596 LDFLAGS
="-pie $LDFLAGS"
1598 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1599 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1602 if test "$pie" = "yes"; then
1603 error_exit
"PIE not available due to missing toolchain support"
1605 echo "Disabling PIE due to missing toolchain support"
1610 if compile_prog
"-fno-pie" "-nopie"; then
1611 CFLAGS_NOPIE
="-fno-pie"
1612 LDFLAGS_NOPIE
="-nopie"
1616 # check for broken gcc and libtool in RHEL5
1617 if test -n "$libtool" -a "$pie" != "no" ; then
1620 void *f(unsigned char *buf, int len);
1621 void *g(unsigned char *buf, int len);
1624 f(unsigned char *buf, int len)
1630 g(unsigned char *buf, int len)
1636 if ! libtool_prog
; then
1637 echo "Disabling libtool due to broken toolchain support"
1642 ##########################################
1643 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1644 # use i686 as default anyway, but for those that don't, an explicit
1645 # specification is necessary
1647 if test "$cpu" = "i386"; then
1649 static int sfaa(int *ptr)
1651 return __sync_fetch_and_and(ptr, 0);
1657 val = __sync_val_compare_and_swap(&val, 0, 1);
1662 if ! compile_prog
"" "" ; then
1663 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1667 #########################################
1668 # Solaris specific configure tool chain decisions
1670 if test "$solaris" = "yes" ; then
1671 if has
$install; then
1674 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1675 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1676 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1678 if test "`path_of $install`" = "/usr/sbin/install" ; then
1679 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1680 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1681 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1686 if test -f /usr
/ccs
/bin
/ar ; then
1687 error_exit
"No path includes ar" \
1688 "Add /usr/ccs/bin to your path and rerun configure"
1690 error_exit
"No path includes ar"
1694 if test -z "${target_list+xxx}" ; then
1695 target_list
="$default_target_list"
1697 target_list
=`echo "$target_list" | sed -e 's/,/ /g'`
1700 # Check that we recognised the target name; this allows a more
1701 # friendly error message than if we let it fall through.
1702 for target
in $target_list; do
1703 case " $default_target_list " in
1707 error_exit
"Unknown target name '$target'"
1712 # see if system emulation was really requested
1713 case " $target_list " in
1714 *"-softmmu "*) softmmu
=yes
1720 feature_not_found
() {
1724 error_exit
"User requested feature $feature" \
1725 "configure was not able to find it." \
1730 # big/little endian test
1732 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1733 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1734 extern int foo(short *, short *);
1735 int main(int argc, char *argv[]) {
1736 return foo(big_endian, little_endian);
1740 if compile_object
; then
1741 if grep -q BiGeNdIaN
$TMPO ; then
1743 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1746 echo big
/little
test failed
1749 echo big
/little
test failed
1752 ##########################################
1756 #include <sys/socket.h>
1757 #include <linux/ip.h>
1758 int main(void) { return sizeof(struct mmsghdr); }
1760 if compile_prog
"" "" ; then
1766 ##########################################
1769 if ! has
"$pkg_config_exe"; then
1770 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1773 ##########################################
1776 if test "$linux_user" = "yes"; then
1779 #include <linux/futex.h>
1781 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1787 if ! compile_object
; then
1788 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1792 ##########################################
1795 if test "$zlib" != "no" ; then
1798 int main(void) { zlibVersion(); return 0; }
1800 if compile_prog
"" "-lz" ; then
1803 error_exit
"zlib check failed" \
1804 "Make sure to have the zlib libs and headers installed."
1809 ##########################################
1812 if test "$lzo" != "no" ; then
1814 #include <lzo/lzo1x.h>
1815 int main(void) { lzo_version(); return 0; }
1817 if compile_prog
"" "-llzo2" ; then
1818 libs_softmmu
="$libs_softmmu -llzo2"
1821 if test "$lzo" = "yes"; then
1822 feature_not_found
"liblzo2" "Install liblzo2 devel"
1828 ##########################################
1831 if test "$snappy" != "no" ; then
1833 #include <snappy-c.h>
1834 int main(void) { snappy_max_compressed_length(4096); return 0; }
1836 if compile_prog
"" "-lsnappy" ; then
1837 libs_softmmu
="$libs_softmmu -lsnappy"
1840 if test "$snappy" = "yes"; then
1841 feature_not_found
"libsnappy" "Install libsnappy devel"
1847 ##########################################
1850 if test "$bzip2" != "no" ; then
1853 int main(void) { BZ2_bzlibVersion(); return 0; }
1855 if compile_prog
"" "-lbz2" ; then
1858 if test "$bzip2" = "yes"; then
1859 feature_not_found
"libbzip2" "Install libbzip2 devel"
1865 ##########################################
1868 if test "$seccomp" != "no" ; then
1869 if test "$cpu" = "i386" ||
test "$cpu" = "x86_64" &&
1870 $pkg_config --atleast-version=2.1.1 libseccomp
; then
1871 libs_softmmu
="$libs_softmmu `$pkg_config --libs libseccomp`"
1872 QEMU_CFLAGS
="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1875 if test "$seccomp" = "yes"; then
1876 feature_not_found
"libseccomp" "Install libseccomp devel >= 2.1.1"
1881 ##########################################
1884 if test "$xen" != "no" ; then
1885 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1887 # First we test whether Xen headers and libraries are available.
1888 # If no, we are done and there is no Xen support.
1889 # If yes, more tests are run to detect the Xen version.
1893 #include <xenctrl.h>
1898 if ! compile_prog
"" "$xen_libs" ; then
1900 if test "$xen" = "yes" ; then
1901 feature_not_found
"xen" "Install xen devel"
1907 cat > $TMPC <<EOF &&
1908 #include <xenctrl.h>
1909 #include <xenstore.h>
1911 #include <xen/hvm/hvm_info_table.h>
1912 #if !defined(HVM_MAX_VCPUS)
1913 # error HVM_MAX_VCPUS not defined
1918 xc = xc_interface_open(0, 0, 0);
1919 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1920 xc_gnttab_open(NULL, 0);
1921 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1922 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1923 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1927 compile_prog
"" "$xen_libs"
1929 xen_ctrl_version
=450
1933 cat > $TMPC <<EOF &&
1934 #include <xenctrl.h>
1935 #include <xenstore.h>
1937 #include <xen/hvm/hvm_info_table.h>
1938 #if !defined(HVM_MAX_VCPUS)
1939 # error HVM_MAX_VCPUS not defined
1944 xc = xc_interface_open(0, 0, 0);
1945 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1946 xc_gnttab_open(NULL, 0);
1947 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1948 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1952 compile_prog
"" "$xen_libs"
1954 xen_ctrl_version
=420
1958 cat > $TMPC <<EOF &&
1959 #include <xenctrl.h>
1962 #include <xen/hvm/hvm_info_table.h>
1963 #if !defined(HVM_MAX_VCPUS)
1964 # error HVM_MAX_VCPUS not defined
1968 xc_interface_open(0, 0, 0);
1969 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1970 xc_gnttab_open(NULL, 0);
1971 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1975 compile_prog
"" "$xen_libs"
1977 xen_ctrl_version
=410
1982 cat > $TMPC <<EOF &&
1983 #include <xenctrl.h>
1986 #include <xen/hvm/hvm_info_table.h>
1987 #if !defined(HVM_MAX_VCPUS)
1988 # error HVM_MAX_VCPUS not defined
1991 struct xen_add_to_physmap xatp = {
1992 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1995 xc_interface_open();
1997 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1998 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2002 compile_prog
"" "$xen_libs"
2004 xen_ctrl_version
=400
2009 cat > $TMPC <<EOF &&
2010 #include <xenctrl.h>
2013 struct xen_add_to_physmap xatp = {
2014 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2017 xc_interface_open();
2019 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2020 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2024 compile_prog
"" "$xen_libs"
2026 xen_ctrl_version
=340
2031 cat > $TMPC <<EOF &&
2032 #include <xenctrl.h>
2036 xc_interface_open();
2038 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2042 compile_prog
"" "$xen_libs"
2044 xen_ctrl_version
=330
2047 # Xen version unsupported
2049 if test "$xen" = "yes" ; then
2050 feature_not_found
"xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2055 if test "$xen" = yes; then
2056 libs_softmmu
="$xen_libs $libs_softmmu"
2060 if test "$xen_pci_passthrough" != "no"; then
2061 if test "$xen" = "yes" && test "$linux" = "yes" &&
2062 test "$xen_ctrl_version" -ge 340; then
2063 xen_pci_passthrough
=yes
2065 if test "$xen_pci_passthrough" = "yes"; then
2066 if test "$xen_ctrl_version" -lt 340; then
2067 error_exit
"User requested feature Xen PCI Passthrough" \
2068 "This feature does not work with Xen 3.3"
2070 error_exit
"User requested feature Xen PCI Passthrough" \
2071 " but this feature requires /sys from Linux"
2073 xen_pci_passthrough
=no
2077 ##########################################
2080 if ! has
$libtool; then
2084 # MacOSX ships with a libtool which isn't the GNU one; weed this
2085 # out by checking whether libtool supports the --version switch
2086 if test -n "$libtool"; then
2087 if ! "$libtool" --version >/dev
/null
2>&1; then
2092 ##########################################
2094 if test "$sparse" != "no" ; then
2098 if test "$sparse" = "yes" ; then
2099 feature_not_found
"sparse" "Install sparse binary"
2105 ##########################################
2109 if $pkg_config --exists "x11"; then
2110 x11_cflags
=`$pkg_config --cflags x11`
2111 x11_libs
=`$pkg_config --libs x11`
2114 ##########################################
2117 if test "$gtkabi" = ""; then
2118 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2119 # Use 3.0 as a fallback if that is available.
2120 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2122 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2129 if test "$gtk" != "no"; then
2130 gtkpackage
="gtk+-$gtkabi"
2131 gtkx11package
="gtk+-x11-$gtkabi"
2132 if test "$gtkabi" = "3.0" ; then
2137 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2138 gtk_cflags
=`$pkg_config --cflags $gtkpackage`
2139 gtk_libs
=`$pkg_config --libs $gtkpackage`
2140 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2141 gtk_cflags
="$gtk_cflags $x11_cflags"
2142 gtk_libs
="$gtk_libs $x11_libs"
2144 libs_softmmu
="$gtk_libs $libs_softmmu"
2146 elif test "$gtk" = "yes"; then
2147 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2153 ##########################################
2156 if test "$vte" != "no"; then
2157 if test "$gtkabi" = "3.0"; then
2158 vtepackage
="vte-2.90"
2164 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2165 vte_cflags
=`$pkg_config --cflags $vtepackage`
2166 vte_libs
=`$pkg_config --libs $vtepackage`
2167 libs_softmmu
="$vte_libs $libs_softmmu"
2169 elif test "$vte" = "yes"; then
2170 if test "$gtkabi" = "3.0"; then
2171 feature_not_found
"vte" "Install libvte-2.90 devel"
2173 feature_not_found
"vte" "Install libvte devel"
2180 ##########################################
2183 # Look for sdl configuration program (pkg-config or sdl-config). Try
2184 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2186 if test $sdlabi = "2.0"; then
2187 sdl_config
=$sdl2_config
2189 sdlconfigname
=sdl2_config
2192 sdlconfigname
=sdl_config
2195 if test "`basename $sdl_config`" != $sdlconfigname && ! has
${sdl_config}; then
2196 sdl_config
=$sdlconfigname
2199 if $pkg_config $sdlname --exists; then
2200 sdlconfig
="$pkg_config $sdlname"
2201 _sdlversion
=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2202 elif has
${sdl_config}; then
2203 sdlconfig
="$sdl_config"
2204 _sdlversion
=`$sdlconfig --version | sed 's/[^0-9]//g'`
2206 if test "$sdl" = "yes" ; then
2207 feature_not_found
"sdl" "Install SDL devel"
2211 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2212 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2216 if test "$sdl" != "no" ; then
2219 #undef main /* We don't want SDL to override our main() */
2220 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2222 sdl_cflags
=`$sdlconfig --cflags 2> /dev/null`
2223 if test "$static" = "yes" ; then
2224 sdl_libs
=`$sdlconfig --static-libs 2>/dev/null`
2226 sdl_libs
=`$sdlconfig --libs 2> /dev/null`
2228 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2229 if test "$_sdlversion" -lt 121 ; then
2232 if test "$cocoa" = "no" ; then
2237 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2238 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2239 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2240 sdl_libs
="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2241 sdl_cflags
="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2243 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2249 else # sdl not found
2250 if test "$sdl" = "yes" ; then
2251 feature_not_found
"sdl" "Install SDL devel"
2254 fi # sdl compile test
2257 if test "$sdl" = "yes" ; then
2260 #if defined(SDL_VIDEO_DRIVER_X11)
2261 #include <X11/XKBlib.h>
2263 #error No x11 support
2265 int main(void) { return 0; }
2267 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2268 sdl_cflags
="$sdl_cflags $x11_cflags"
2269 sdl_libs
="$sdl_libs $x11_libs"
2271 libs_softmmu
="$sdl_libs $libs_softmmu"
2274 ##########################################
2275 # RDMA needs OpenFabrics libraries
2276 if test "$rdma" != "no" ; then
2278 #include <rdma/rdma_cma.h>
2279 int main(void) { return 0; }
2281 rdma_libs
="-lrdmacm -libverbs"
2282 if compile_prog
"" "$rdma_libs" ; then
2284 libs_softmmu
="$libs_softmmu $rdma_libs"
2286 if test "$rdma" = "yes" ; then
2288 " OpenFabrics librdmacm/libibverbs not present." \
2290 " (1) Fast: Install infiniband packages from your distro." \
2291 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2292 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2298 ##########################################
2299 # VNC TLS/WS detection
2300 if test "$vnc" = "yes" -a \
( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \
) ; then
2302 #include <gnutls/gnutls.h>
2303 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2305 vnc_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2306 vnc_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2307 if compile_prog
"$vnc_tls_cflags" "$vnc_tls_libs" ; then
2308 if test "$vnc_tls" != "no" ; then
2311 if test "$vnc_ws" != "no" ; then
2314 libs_softmmu
="$vnc_tls_libs $libs_softmmu"
2315 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_tls_cflags"
2317 if test "$vnc_tls" = "yes" ; then
2318 feature_not_found
"vnc-tls" "Install gnutls devel"
2320 if test "$vnc_ws" = "yes" ; then
2321 feature_not_found
"vnc-ws" "Install gnutls devel"
2328 ##########################################
2329 # Quorum probe (check for gnutls)
2330 if test "$quorum" != "no" ; then
2332 #include <gnutls/gnutls.h>
2333 #include <gnutls/crypto.h>
2334 int main(void) {char data[4096], digest[32];
2335 gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest);
2339 quorum_tls_cflags
=`$pkg_config --cflags gnutls 2> /dev/null`
2340 quorum_tls_libs
=`$pkg_config --libs gnutls 2> /dev/null`
2341 if compile_prog
"$quorum_tls_cflags" "$quorum_tls_libs" ; then
2343 libs_softmmu
="$quorum_tls_libs $libs_softmmu"
2344 libs_tools
="$quorum_tls_libs $libs_softmmu"
2345 QEMU_CFLAGS
="$QEMU_CFLAGS $quorum_tls_cflags"
2348 if test "$quorum" = "yes"; then
2349 feature_not_found
"gnutls" "gnutls > 2.10.0 required to compile Quorum"
2355 ##########################################
2356 # VNC SASL detection
2357 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2359 #include <sasl/sasl.h>
2361 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2363 # Assuming Cyrus-SASL installed in /usr prefix
2365 vnc_sasl_libs
="-lsasl2"
2366 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2368 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2369 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2371 if test "$vnc_sasl" = "yes" ; then
2372 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2378 ##########################################
2379 # VNC JPEG detection
2380 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2383 #include <jpeglib.h>
2384 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2387 vnc_jpeg_libs
="-ljpeg"
2388 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2390 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2391 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2393 if test "$vnc_jpeg" = "yes" ; then
2394 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2400 ##########################################
2402 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2404 //#include <stdio.h>
2408 png_structp png_ptr;
2409 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2410 return png_ptr != 0;
2413 if $pkg_config libpng
--exists; then
2414 vnc_png_cflags
=`$pkg_config libpng --cflags`
2415 vnc_png_libs
=`$pkg_config libpng --libs`
2418 vnc_png_libs
="-lpng"
2420 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2422 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2423 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2425 if test "$vnc_png" = "yes" ; then
2426 feature_not_found
"vnc-png" "Install libpng devel"
2432 ##########################################
2433 # fnmatch() probe, used for ACL routines
2436 #include <fnmatch.h>
2439 fnmatch("foo", "foo", 0);
2443 if compile_prog
"" "" ; then
2447 ##########################################
2448 # uuid_generate() probe, used for vdi block driver
2449 # Note that on some systems (notably MacOSX) no extra library
2450 # need be linked to get the uuid functions.
2451 if test "$uuid" != "no" ; then
2454 #include <uuid/uuid.h>
2458 uuid_generate(my_uuid);
2462 if compile_prog
"" "" ; then
2464 elif compile_prog
"" "$uuid_libs" ; then
2466 libs_softmmu
="$uuid_libs $libs_softmmu"
2467 libs_tools
="$uuid_libs $libs_tools"
2469 if test "$uuid" = "yes" ; then
2470 feature_not_found
"uuid" "Install libuuid devel"
2476 if test "$vhdx" = "yes" ; then
2477 if test "$uuid" = "no" ; then
2478 error_exit
"uuid required for VHDX support"
2480 elif test "$vhdx" != "no" ; then
2481 if test "$uuid" = "yes" ; then
2488 ##########################################
2489 # xfsctl() probe, used for raw-posix
2490 if test "$xfs" != "no" ; then
2492 #include <stddef.h> /* NULL */
2493 #include <xfs/xfs.h>
2496 xfsctl(NULL, 0, 0, NULL);
2500 if compile_prog
"" "" ; then
2503 if test "$xfs" = "yes" ; then
2504 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2510 ##########################################
2511 # vde libraries probe
2512 if test "$vde" != "no" ; then
2513 vde_libs
="-lvdeplug"
2515 #include <libvdeplug.h>
2518 struct vde_open_args a = {0, 0, 0};
2524 if compile_prog
"" "$vde_libs" ; then
2526 libs_softmmu
="$vde_libs $libs_softmmu"
2527 libs_tools
="$vde_libs $libs_tools"
2529 if test "$vde" = "yes" ; then
2530 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2536 ##########################################
2537 # netmap support probe
2538 # Apart from looking for netmap headers, we make sure that the host API version
2539 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2540 # a minor/major version number. Minor new features will be marked with values up
2541 # to 15, and if something happens that requires a change to the backend we will
2542 # move above 15, submit the backend fixes and modify this two bounds.
2543 if test "$netmap" != "no" ; then
2545 #include <inttypes.h>
2547 #include <net/netmap.h>
2548 #include <net/netmap_user.h>
2549 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2552 int main(void) { return 0; }
2554 if compile_prog
"" "" ; then
2557 if test "$netmap" = "yes" ; then
2558 feature_not_found
"netmap"
2564 ##########################################
2565 # libcap-ng library probe
2566 if test "$cap_ng" != "no" ; then
2572 capng_capability_to_name(CAPNG_EFFECTIVE);
2576 if compile_prog
"" "$cap_libs" ; then
2578 libs_tools
="$cap_libs $libs_tools"
2580 if test "$cap_ng" = "yes" ; then
2581 feature_not_found
"cap_ng" "Install libcap-ng devel"
2587 ##########################################
2588 # Sound support libraries probe
2599 int main(void) { $exp }
2601 if compile_prog
"$cfl" "$lib" ; then
2604 error_exit
"$drv check failed" \
2605 "Make sure to have the $drv libs and headers installed."
2609 audio_drv_list
=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2610 for drv
in $audio_drv_list; do
2613 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2614 "return snd_pcm_close((snd_pcm_t *)0);"
2615 libs_softmmu
="-lasound $libs_softmmu"
2619 if test -z $fmod_lib ||
test -z $fmod_inc; then
2620 error_exit
"You must specify path to FMOD library and headers" \
2621 "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
2623 audio_drv_probe
$drv fmod.h
$fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
2624 libs_softmmu
="$fmod_lib $libs_softmmu"
2628 audio_drv_probe
$drv esd.h
-lesd 'return esd_play_stream(0, 0, "", 0);'
2629 libs_softmmu
="-lesd $libs_softmmu"
2634 audio_drv_probe
$drv pulse
/mainloop.h
"-lpulse" \
2635 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2636 libs_softmmu
="-lpulse $libs_softmmu"
2641 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2645 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2650 libs_softmmu
="$oss_lib $libs_softmmu"
2654 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2658 libs_softmmu
="-lwinmm $libs_softmmu"
2663 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2664 error_exit
"Unknown driver '$drv' selected" \
2665 "Possible drivers are: $audio_possible_drivers"
2671 ##########################################
2674 if test "$brlapi" != "no" ; then
2675 brlapi_libs
="-lbrlapi"
2679 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2681 if compile_prog
"" "$brlapi_libs" ; then
2683 libs_softmmu
="$brlapi_libs $libs_softmmu"
2685 if test "$brlapi" = "yes" ; then
2686 feature_not_found
"brlapi" "Install brlapi devel"
2692 ##########################################
2694 if test "$curses" != "no" ; then
2695 if test "$mingw32" = "yes" ; then
2696 curses_list
="-lpdcurses"
2698 curses_list
="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2704 const char *s = curses_version();
2710 for curses_lib
in $curses_list; do
2712 if compile_prog
"" "$curses_lib" ; then
2714 libs_softmmu
="$curses_lib $libs_softmmu"
2719 if test "$curses_found" = "yes" ; then
2722 if test "$curses" = "yes" ; then
2723 feature_not_found
"curses" "Install ncurses devel"
2729 ##########################################
2731 if test "$curl" != "no" ; then
2732 if $pkg_config libcurl
--exists; then
2733 curlconfig
="$pkg_config libcurl"
2735 curlconfig
=curl-config
2738 #include <curl/curl.h>
2739 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2741 curl_cflags
=`$curlconfig --cflags 2>/dev/null`
2742 curl_libs
=`$curlconfig --libs 2>/dev/null`
2743 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2746 if test "$curl" = "yes" ; then
2747 feature_not_found
"curl" "Install libcurl devel"
2753 ##########################################
2754 # bluez support probe
2755 if test "$bluez" != "no" ; then
2757 #include <bluetooth/bluetooth.h>
2758 int main(void) { return bt_error(0); }
2760 bluez_cflags
=`$pkg_config --cflags bluez 2> /dev/null`
2761 bluez_libs
=`$pkg_config --libs bluez 2> /dev/null`
2762 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
2764 libs_softmmu
="$bluez_libs $libs_softmmu"
2766 if test "$bluez" = "yes" ; then
2767 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
2773 ##########################################
2774 # glib support probe
2776 if test "$mingw32" = yes; then
2777 # g_poll is required in order to integrate with the glib main loop.
2782 glib_modules
=gthread-2.0
2783 if test "$modules" = yes; then
2784 glib_modules
="$glib_modules gmodule-2.0"
2787 for i
in $glib_modules; do
2788 if $pkg_config --atleast-version=$glib_req_ver $i; then
2789 glib_cflags
=`$pkg_config --cflags $i`
2790 glib_libs
=`$pkg_config --libs $i`
2791 CFLAGS
="$glib_cflags $CFLAGS"
2792 LIBS
="$glib_libs $LIBS"
2793 libs_qga
="$glib_libs $libs_qga"
2795 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2799 # g_test_trap_subprocess added in 2.38. Used by some tests.
2801 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
2805 ##########################################
2806 # SHA command probe for modules
2807 if test "$modules" = yes; then
2808 shacmd_probe
="sha1sum sha1 shasum"
2809 for c
in $shacmd_probe; do
2815 if test "$shacmd" = ""; then
2816 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
2820 ##########################################
2821 # pixman support probe
2823 if test "$pixman" = ""; then
2824 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2826 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
2832 if test "$pixman" = "none"; then
2833 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2834 error_exit
"pixman disabled but system emulation or tools build" \
2835 "enabled. You can turn off pixman only if you also" \
2836 "disable all system emulation targets and the tools" \
2837 "build with '--disable-tools --disable-system'."
2841 elif test "$pixman" = "system"; then
2842 # pixman version has been checked above
2843 pixman_cflags
=`$pkg_config --cflags pixman-1`
2844 pixman_libs
=`$pkg_config --libs pixman-1`
2846 if test ! -d ${source_path}/pixman
/pixman
; then
2847 error_exit
"pixman >= 0.21.8 not present. Your options:" \
2848 " (1) Preferred: Install the pixman devel package (any recent" \
2849 " distro should have packages as Xorg needs pixman too)." \
2850 " (2) Fetch the pixman submodule, using:" \
2851 " git submodule update --init pixman"
2853 mkdir
-p pixman
/pixman
2854 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2855 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2858 ##########################################
2861 if test "$cap" != "no" ; then
2864 #include <sys/capability.h>
2865 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2867 if compile_prog
"" "-lcap" ; then
2874 ##########################################
2876 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
2880 #include <pthread.h>
2881 static void *f(void *p) { return NULL; }
2884 pthread_create(&thread, 0, f, 0);
2888 if compile_prog
"" "" ; then
2891 for pthread_lib
in $PTHREADLIBS_LIST; do
2892 if compile_prog
"" "$pthread_lib" ; then
2895 for lib_entry
in $LIBS; do
2896 if test "$lib_entry" = "$pthread_lib"; then
2901 if test "$found" = "no"; then
2902 LIBS
="$pthread_lib $LIBS"
2909 if test "$mingw32" != yes -a "$pthread" = no
; then
2910 error_exit
"pthread check failed" \
2911 "Make sure to have the pthread libs and headers installed."
2914 # check for pthread_setname_np
2915 pthread_setname_np
=no
2917 #include <pthread.h>
2919 static void *f(void *p) { return NULL; }
2923 pthread_create(&thread, 0, f, 0);
2924 pthread_setname_np(thread, "QEMU");
2928 if compile_prog
"" "$pthread_lib" ; then
2929 pthread_setname_np
=yes
2932 ##########################################
2934 if test "$rbd" != "no" ; then
2937 #include <rbd/librbd.h>
2940 rados_create(&cluster, NULL);
2944 rbd_libs
="-lrbd -lrados"
2945 if compile_prog
"" "$rbd_libs" ; then
2948 if test "$rbd" = "yes" ; then
2949 feature_not_found
"rados block device" "Install librbd/ceph devel"
2955 ##########################################
2957 min_libssh2_version
=1.2.8
2958 if test "$libssh2" != "no" ; then
2959 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
2960 libssh2_cflags
=`$pkg_config libssh2 --cflags`
2961 libssh2_libs
=`$pkg_config libssh2 --libs`
2964 if test "$libssh2" = "yes" ; then
2965 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
2971 ##########################################
2972 # libssh2_sftp_fsync probe
2974 if test "$libssh2" = "yes"; then
2977 #include <libssh2.h>
2978 #include <libssh2_sftp.h>
2980 LIBSSH2_SESSION *session;
2982 LIBSSH2_SFTP_HANDLE *sftp_handle;
2983 session = libssh2_session_init ();
2984 sftp = libssh2_sftp_init (session);
2985 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2986 libssh2_sftp_fsync (sftp_handle);
2990 # libssh2_cflags/libssh2_libs defined in previous test.
2991 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
2992 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
2996 ##########################################
2999 if test "$linux_aio" != "no" ; then
3002 #include <sys/eventfd.h>
3004 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3006 if compile_prog
"" "-laio" ; then
3009 if test "$linux_aio" = "yes" ; then
3010 feature_not_found
"linux AIO" "Install libaio devel"
3016 ##########################################
3017 # TPM passthrough is only on x86 Linux
3019 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3020 tpm_passthrough
=$tpm
3025 ##########################################
3028 if test "$attr" != "no" ; then
3031 #include <sys/types.h>
3032 #ifdef CONFIG_LIBATTR
3033 #include <attr/xattr.h>
3035 #include <sys/xattr.h>
3037 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3039 if compile_prog
"" "" ; then
3041 # Older distros have <attr/xattr.h>, and need -lattr:
3042 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3047 if test "$attr" = "yes" ; then
3048 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3054 ##########################################
3057 #include <sys/types.h>
3058 #include <sys/uio.h>
3060 int main(void) { return sizeof(struct iovec); }
3063 if compile_prog
"" "" ; then
3067 ##########################################
3070 #include <sys/types.h>
3071 #include <sys/uio.h>
3073 int main(void) { return preadv(0, 0, 0, 0); }
3076 if compile_prog
"" "" ; then
3080 ##########################################
3082 # fdt support is mandatory for at least some target architectures,
3083 # so insist on it if we're building those system emulators.
3085 for target
in $target_list; do
3087 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3093 if test "$fdt_required" = "yes"; then
3094 if test "$fdt" = "no"; then
3095 error_exit
"fdt disabled but some requested targets require it." \
3096 "You can turn off fdt only if you also disable all the system emulation" \
3097 "targets which need it (by specifying a cut down --target-list)."
3102 if test "$fdt" != "no" ; then
3104 # explicitly check for libfdt_env.h as it is missing in some stable installs
3106 #include <libfdt_env.h>
3107 int main(void) { return 0; }
3109 if compile_prog
"" "$fdt_libs" ; then
3110 # system DTC is good - use it
3112 elif test -d ${source_path}/dtc
/libfdt
; then
3113 # have submodule DTC - use it
3117 if [ "$pwd_is_source_path" != "y" ] ; then
3118 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3119 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3121 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3122 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3123 elif test "$fdt" = "yes" ; then
3124 # have neither and want - prompt for system/submodule install
3125 error_exit
"DTC (libfdt) not present. Your options:" \
3126 " (1) Preferred: Install the DTC (libfdt) devel package" \
3127 " (2) Fetch the DTC submodule, using:" \
3128 " git submodule update --init dtc"
3130 # don't have and don't want
3136 libs_softmmu
="$libs_softmmu $fdt_libs"
3138 ##########################################
3139 # opengl probe (for sdl2, milkymist-tmu2)
3141 # GLX probe, used by milkymist-tmu2
3142 # this is temporary, code will be switched to egl mid-term.
3144 #include <X11/Xlib.h>
3147 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3149 if compile_prog
"" "-lGL -lX11" ; then
3155 if test "$opengl" != "no" ; then
3156 opengl_pkgs
="gl glesv2"
3157 if $pkg_config $opengl_pkgs x11
&& test "$have_glx" = "yes"; then
3158 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3159 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3162 if test "$opengl" = "yes" ; then
3163 feature_not_found
"opengl" "Install GL devel (e.g. MESA)"
3172 ##########################################
3174 if test "$archipelago" != "no" ; then
3177 #include <xseg/xseg.h>
3178 #include <xseg/protocol.h>
3184 archipelago_libs
=-lxseg
3185 if compile_prog
"" "$archipelago_libs"; then
3187 libs_tools
="$archipelago_libs $libs_tools"
3188 libs_softmmu
="$archipelago_libs $libs_softmmu"
3190 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3191 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3192 echo "license and therefore prevent redistribution."
3194 echo "To disable Archipelago, use --disable-archipelago"
3196 if test "$archipelago" = "yes" ; then
3197 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3204 ##########################################
3206 if test "$glusterfs" != "no" ; then
3207 if $pkg_config --atleast-version=3 glusterfs-api
; then
3209 glusterfs_cflags
=`$pkg_config --cflags glusterfs-api`
3210 glusterfs_libs
=`$pkg_config --libs glusterfs-api`
3211 if $pkg_config --atleast-version=5 glusterfs-api
; then
3212 glusterfs_discard
="yes"
3214 if $pkg_config --atleast-version=6 glusterfs-api
; then
3215 glusterfs_zerofill
="yes"
3218 if test "$glusterfs" = "yes" ; then
3219 feature_not_found
"GlusterFS backend support" \
3220 "Install glusterfs-api devel >= 3"
3226 # Check for inotify functions when we are building linux-user
3227 # emulator. This is done because older glibc versions don't
3228 # have syscall stubs for these implemented. In that case we
3229 # don't provide them even if kernel supports them.
3233 #include <sys/inotify.h>
3238 /* try to start inotify */
3239 return inotify_init();
3242 if compile_prog
"" "" ; then
3248 #include <sys/inotify.h>
3253 /* try to start inotify */
3254 return inotify_init1(0);
3257 if compile_prog
"" "" ; then
3261 # check if utimensat and futimens are supported
3264 #define _ATFILE_SOURCE
3267 #include <sys/stat.h>
3271 utimensat(AT_FDCWD, "foo", NULL, 0);
3276 if compile_prog
"" "" ; then
3280 # check if pipe2 is there
3289 return pipe2(pipefd, O_CLOEXEC);
3292 if compile_prog
"" "" ; then
3296 # check if accept4 is there
3299 #include <sys/socket.h>
3304 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3308 if compile_prog
"" "" ; then
3312 # check if tee/splice is there. vmsplice was added same time.
3322 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3323 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3327 if compile_prog
"" "" ; then
3331 ##########################################
3334 if test "$numa" != "no" ; then
3337 int main(void) { return numa_available(); }
3340 if compile_prog
"" "-lnuma" ; then
3342 libs_softmmu
="-lnuma $libs_softmmu"
3344 if test "$numa" = "yes" ; then
3345 feature_not_found
"numa" "install numactl devel"
3351 ##########################################
3354 if test "$tcmalloc" = "yes" ; then
3357 int main(void) { malloc(1); return 0; }
3360 if compile_prog
"" "-ltcmalloc" ; then
3361 LIBS
="-ltcmalloc $LIBS"
3363 feature_not_found
"tcmalloc" "install gperftools devel"
3367 ##########################################
3372 #include <sys/syscall.h>
3374 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3377 if compile_prog
"" "" ; then
3381 # check if eventfd is supported
3384 #include <sys/eventfd.h>
3388 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3391 if compile_prog
"" "" ; then
3395 # check for fallocate
3402 fallocate(0, 0, 0, 0);
3406 if compile_prog
"" "" ; then
3410 # check for fallocate hole punching
3411 fallocate_punch_hole
=no
3414 #include <linux/falloc.h>
3418 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3422 if compile_prog
"" "" ; then
3423 fallocate_punch_hole
=yes
3426 # check that fallocate supports range zeroing inside the file
3427 fallocate_zero_range
=no
3430 #include <linux/falloc.h>
3434 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3438 if compile_prog
"" "" ; then
3439 fallocate_zero_range
=yes
3442 # check for posix_fallocate
3449 posix_fallocate(0, 0, 0);
3453 if compile_prog
"" "" ; then
3457 # check for sync_file_range
3464 sync_file_range(0, 0, 0, 0);
3468 if compile_prog
"" "" ; then
3472 # check for linux/fiemap.h and FS_IOC_FIEMAP
3475 #include <sys/ioctl.h>
3476 #include <linux/fs.h>
3477 #include <linux/fiemap.h>
3481 ioctl(0, FS_IOC_FIEMAP, 0);
3485 if compile_prog
"" "" ; then
3500 if compile_prog
"" "" ; then
3504 # check for ppoll support
3511 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3512 ppoll(&pfd, 1, 0, 0);
3516 if compile_prog
"" "" ; then
3520 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3521 prctl_pr_set_timerslack
=no
3523 #include <sys/prctl.h>
3527 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3531 if compile_prog
"" "" ; then
3532 prctl_pr_set_timerslack
=yes
3535 # check for epoll support
3538 #include <sys/epoll.h>
3546 if compile_prog
"" "" ; then
3550 # epoll_create1 and epoll_pwait are later additions
3551 # so we must check separately for their presence
3554 #include <sys/epoll.h>
3558 /* Note that we use epoll_create1 as a value, not as
3559 * a function being called. This is necessary so that on
3560 * old SPARC glibc versions where the function was present in
3561 * the library but not declared in the header file we will
3562 * fail the configure check. (Otherwise we will get a compiler
3563 * warning but not an error, and will proceed to fail the
3564 * qemu compile where we compile with -Werror.)
3566 return (int)(uintptr_t)&epoll_create1;
3569 if compile_prog
"" "" ; then
3575 #include <sys/epoll.h>
3579 epoll_pwait(0, 0, 0, 0, 0);
3583 if compile_prog
"" "" ; then
3587 # check for sendfile support
3590 #include <sys/sendfile.h>
3594 return sendfile(0, 0, 0, 0);
3597 if compile_prog
"" "" ; then
3601 # check for timerfd support (glibc 2.8 and newer)
3604 #include <sys/timerfd.h>
3608 return(timerfd_create(CLOCK_REALTIME, 0));
3611 if compile_prog
"" "" ; then
3615 # check for setns and unshare support
3628 if compile_prog
"" "" ; then
3632 # Check if tools are available to build documentation.
3633 if test "$docs" != "no" ; then
3634 if has makeinfo
&& has pod2man
; then
3637 if test "$docs" = "yes" ; then
3638 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3644 # Search for bswap_32 function
3647 #include <byteswap.h>
3648 int main(void) { return bswap_32(0); }
3650 if compile_prog
"" "" ; then
3654 # Search for bswap32 function
3657 #include <sys/endian.h>
3658 #include <sys/types.h>
3659 #include <machine/bswap.h>
3660 int main(void) { return bswap32(0); }
3662 if compile_prog
"" "" ; then
3666 ##########################################
3667 # Do we have libiscsi >= 1.9.0
3668 if test "$libiscsi" != "no" ; then
3669 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
3671 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
3672 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
3674 if test "$libiscsi" = "yes" ; then
3675 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
3681 ##########################################
3685 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3687 if compile_prog
"" "" ; then
3689 elif compile_prog
"" "-lm" ; then
3691 libs_qga
="-lm $libs_qga"
3693 error_exit
"libm check failed"
3696 ##########################################
3698 # uClibc provides 2 versions of clock_gettime(), one with realtime
3699 # support and one without. This means that the clock_gettime() don't
3700 # need -lrt. We still need it for timer_create() so we check for this
3701 # function in addition.
3706 timer_create(CLOCK_REALTIME, NULL, NULL);
3707 return clock_gettime(CLOCK_REALTIME, NULL);
3711 if compile_prog
"" "" ; then
3713 # we need pthread for static linking. use previous pthread test result
3714 elif compile_prog
"" "$pthread_lib -lrt" ; then
3716 libs_qga
="$libs_qga -lrt"
3719 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3720 "$aix" != "yes" -a "$haiku" != "yes" ; then
3721 libs_softmmu
="-lutil $libs_softmmu"
3724 ##########################################
3726 if test "$spice" != "no" ; then
3729 int main(void) { spice_server_new(); return 0; }
3731 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3732 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3733 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
3734 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
3735 compile_prog
"$spice_cflags" "$spice_libs" ; then
3737 libs_softmmu
="$libs_softmmu $spice_libs"
3738 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
3739 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
3740 spice_server_version
=$
($pkg_config --modversion spice-server
)
3742 if test "$spice" = "yes" ; then
3743 feature_not_found
"spice" \
3744 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3750 # check for libcacard for smartcard support
3752 # TODO - what's the minimal nss version we support?
3753 if test "$smartcard_nss" != "no"; then
3755 #include <pk11pub.h>
3756 int main(void) { PK11_FreeSlot(0); return 0; }
3758 # FIXME: do not include $glib_* in here
3759 nss_libs
="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3760 nss_cflags
="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3761 test_cflags
="$nss_cflags"
3762 # The header files in nss < 3.13.3 have a bug which causes them to
3763 # emit a warning. If we're going to compile QEMU with -Werror, then
3764 # test that the headers don't have this bug. Otherwise we would pass
3765 # the configure test but fail to compile QEMU later.
3766 if test "$werror" = "yes"; then
3767 test_cflags
="-Werror $test_cflags"
3769 if test -n "$libtool" &&
3770 $pkg_config --atleast-version=3.12.8 nss
&& \
3771 compile_prog
"$test_cflags" "$nss_libs"; then
3774 if test "$smartcard_nss" = "yes"; then
3775 feature_not_found
"nss" "Install nss devel >= 3.12.8"
3782 if test "$libusb" != "no" ; then
3783 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
3785 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
3786 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
3787 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
3788 libs_softmmu
="$libs_softmmu $libusb_libs"
3790 if test "$libusb" = "yes"; then
3791 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
3797 # check for usbredirparser for usb network redirection support
3798 if test "$usb_redir" != "no" ; then
3799 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
3801 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
3802 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
3803 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
3804 libs_softmmu
="$libs_softmmu $usb_redir_libs"
3806 if test "$usb_redir" = "yes"; then
3807 feature_not_found
"usb-redir" "Install usbredir devel"
3813 ##########################################
3814 # check if we have VSS SDK headers for win
3816 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3817 case "$vss_win32_sdk" in
3818 "") vss_win32_include
="-I$source_path" ;;
3819 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
3820 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3821 vss_win32_include
="-I$source_path/.sdk/vss"
3822 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3824 *) vss_win32_include
="-I$vss_win32_sdk"
3827 #define __MIDL_user_allocate_free_DEFINED__
3828 #include <inc/win2003/vss.h>
3829 int main(void) { return VSS_CTX_BACKUP; }
3831 if compile_prog
"$vss_win32_include" "" ; then
3832 guest_agent_with_vss
="yes"
3833 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
3834 libs_qga
="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3836 if test "$vss_win32_sdk" != "" ; then
3837 echo "ERROR: Please download and install Microsoft VSS SDK:"
3838 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3839 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3840 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3841 echo "ERROR: The headers are extracted in the directory \`inc'."
3842 feature_not_found
"VSS support"
3844 guest_agent_with_vss
="no"
3848 ##########################################
3849 # lookup Windows platform SDK (if not specified)
3850 # The SDK is needed only to build .tlb (type library) file of guest agent
3851 # VSS provider from the source. It is usually unnecessary because the
3852 # pre-compiled .tlb file is included.
3854 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3855 if test -z "$win_sdk"; then
3856 programfiles
="$PROGRAMFILES"
3857 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
3858 if test -n "$programfiles"; then
3859 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
3861 feature_not_found
"Windows SDK"
3863 elif test "$win_sdk" = "no"; then
3868 ##########################################
3870 ##########################################
3871 # check if we have fdatasync
3877 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3878 return fdatasync(0);
3880 #error Not supported
3884 if compile_prog
"" "" ; then
3888 ##########################################
3889 # check if we have madvise
3893 #include <sys/types.h>
3894 #include <sys/mman.h>
3896 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3898 if compile_prog
"" "" ; then
3902 ##########################################
3903 # check if we have posix_madvise
3907 #include <sys/mman.h>
3909 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3911 if compile_prog
"" "" ; then
3915 ##########################################
3916 # check if we have usable SIGEV_THREAD_ID
3923 ev.sigev_notify = SIGEV_THREAD_ID;
3924 ev._sigev_un._tid = 0;
3925 asm volatile("" : : "g"(&ev));
3929 if compile_prog
"" "" ; then
3933 ##########################################
3934 # check if trace backend exists
3936 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
3937 if test "$?" -ne 0 ; then
3938 error_exit
"invalid trace backends" \
3939 "Please choose supported trace backends."
3942 ##########################################
3943 # For 'ust' backend, test if ust headers are present
3944 if have_backend
"ust"; then
3946 #include <lttng/tracepoint.h>
3947 int main(void) { return 0; }
3949 if compile_prog
"" "" ; then
3950 if $pkg_config lttng-ust
--exists; then
3951 lttng_ust_libs
=`$pkg_config --libs lttng-ust`
3953 lttng_ust_libs
="-llttng-ust"
3955 if $pkg_config liburcu-bp
--exists; then
3956 urcu_bp_libs
=`$pkg_config --libs liburcu-bp`
3958 urcu_bp_libs
="-lurcu-bp"
3961 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
3962 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
3964 error_exit
"Trace backend 'ust' missing lttng-ust header files"
3968 ##########################################
3969 # For 'dtrace' backend, test if 'dtrace' command is present
3970 if have_backend
"dtrace"; then
3971 if ! has
'dtrace' ; then
3972 error_exit
"dtrace command is not found in PATH $PATH"
3974 trace_backend_stap
="no"
3975 if has
'stap' ; then
3976 trace_backend_stap
="yes"
3980 ##########################################
3981 # check and set a backend for coroutine
3983 # We prefer ucontext, but it's not always possible. The fallback
3984 # is sigcontext. gthread is not selectable except explicitly, because
3985 # it is not functional enough to run QEMU proper. (It is occasionally
3986 # useful for debugging purposes.) On Windows the only valid backend
3987 # is the Windows-specific one.
3990 if test "$darwin" != "yes"; then
3992 #include <ucontext.h>
3993 #ifdef __stub_makecontext
3994 #error Ignoring glibc stub makecontext which will always fail
3996 int main(void) { makecontext(0, 0, 0); return 0; }
3998 if compile_prog
"" "" ; then
4003 if test "$coroutine" = ""; then
4004 if test "$mingw32" = "yes"; then
4006 elif test "$ucontext_works" = "yes"; then
4009 coroutine
=sigaltstack
4014 if test "$mingw32" != "yes"; then
4015 error_exit
"'windows' coroutine backend only valid for Windows"
4017 # Unfortunately the user visible backend name doesn't match the
4018 # coroutine-*.c filename for this case, so we have to adjust it here.
4022 if test "$ucontext_works" != "yes"; then
4023 feature_not_found
"ucontext"
4026 gthread|sigaltstack
)
4027 if test "$mingw32" = "yes"; then
4028 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4032 error_exit
"unknown coroutine backend $coroutine"
4037 if test "$coroutine_pool" = ""; then
4038 if test "$coroutine" = "gthread"; then
4044 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4045 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4048 ##########################################
4049 # check if we have open_by_handle_at
4051 open_by_handle_at
=no
4054 #if !defined(AT_EMPTY_PATH)
4055 # error missing definition
4057 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4060 if compile_prog
"" "" ; then
4061 open_by_handle_at
=yes
4064 ########################################
4065 # check if we have linux/magic.h
4069 #include <linux/magic.h>
4074 if compile_prog
"" "" ; then
4078 ########################################
4079 # check whether we can disable warning option with a pragma (this is needed
4080 # to silence warnings in the headers of some versions of external libraries).
4081 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4084 # If we can't selectively disable warning in the code, disable -Werror so that
4085 # the build doesn't fail anyway.
4087 pragma_disable_unused_but_set
=no
4089 #pragma GCC diagnostic push
4090 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4091 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4092 #pragma GCC diagnostic pop
4098 if compile_prog
"-Werror" "" ; then
4099 pragma_diagnostic_available
=yes
4104 ########################################
4105 # check if we have valgrind/valgrind.h
4109 #include <valgrind/valgrind.h>
4114 if compile_prog
"" "" ; then
4118 ########################################
4119 # check if environ is declared
4129 if compile_prog
"" "" ; then
4133 ########################################
4134 # check if cpuid.h is usable.
4140 unsigned a, b, c, d;
4141 int max = __get_cpuid_max(0, 0);
4144 __cpuid(1, a, b, c, d);
4148 __cpuid_count(7, 0, a, b, c, d);
4154 if compile_prog
"" "" ; then
4158 ########################################
4159 # check if __[u]int128_t is usable.
4163 #if defined(__clang_major__) && defined(__clang_minor__)
4164 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4165 # error __int128_t does not work in CLANG before 3.2
4177 if compile_prog
"" "" ; then
4181 ########################################
4182 # check if getauxval is available.
4186 #include <sys/auxv.h>
4188 return getauxval(AT_HWCAP) == 0;
4191 if compile_prog
"" "" ; then
4195 ##########################################
4197 # After here, no more $cc or $ld runs
4199 if test "$gcov" = "yes" ; then
4200 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4201 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4202 elif test "$debug" = "no" ; then
4203 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4206 ##########################################
4208 if test "$libnfs" != "no" ; then
4209 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4211 libnfs_libs
=$
($pkg_config --libs libnfs
)
4212 LIBS
="$LIBS $libnfs_libs"
4214 if test "$libnfs" = "yes" ; then
4215 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4221 # Disable zero malloc errors for official releases unless explicitly told to
4223 if test -z "$zero_malloc" ; then
4224 if test "$z_version" = "50" ; then
4231 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4232 if test "$werror" = "yes"; then
4233 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4236 if test "$solaris" = "no" ; then
4237 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4238 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4242 # test if pod2man has --utf8 option
4243 if pod2man
--help |
grep -q utf8
; then
4244 POD2MAN
="pod2man --utf8"
4249 # Use ASLR, no-SEH and DEP if available
4250 if test "$mingw32" = "yes" ; then
4251 for flag
in --dynamicbase --no-seh --nxcompat; do
4252 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4253 LDFLAGS
="-Wl,$flag $LDFLAGS"
4258 qemu_confdir
=$sysconfdir$confsuffix
4259 qemu_moddir
=$libdir$confsuffix
4260 qemu_datadir
=$datadir$confsuffix
4261 qemu_localedir
="$datadir/locale"
4264 if test "$want_tools" = "yes" ; then
4265 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4266 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4267 tools
="qemu-nbd\$(EXESUF) $tools"
4270 if test "$softmmu" = yes ; then
4271 if test "$virtfs" != no
; then
4272 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4274 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4276 if test "$virtfs" = yes; then
4277 error_exit
"VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4283 if [ "$guest_agent" != "no" ]; then
4284 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4285 tools
="qemu-ga\$(EXESUF) $tools"
4286 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4287 tools
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4290 elif [ "$guest_agent" != yes ]; then
4293 error_exit
"Guest agent is not supported on this platform"
4297 # Mac OS X ships with a broken assembler
4299 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4300 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4301 "$softmmu" = yes ; then
4304 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4305 roms
="$roms spapr-rtas"
4308 if test "$cpu" = "s390x" ; then
4309 roms
="$roms s390-ccw"
4312 # Probe for the need for relocating the user-only binary.
4313 if test "$pie" = "no" ; then
4316 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4317 # ??? Rationale for choosing this address
4318 textseg_addr
=0x60000000
4321 # A 256M aligned address, high in the address space, with enough
4322 # room for the code_gen_buffer above it before the stack.
4323 textseg_addr
=0x60000000
4326 if [ -n "$textseg_addr" ]; then
4328 int main(void) { return 0; }
4330 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4331 if ! compile_prog
"" "$textseg_ldflags"; then
4332 # In case ld does not support -Ttext-segment, edit the default linker
4333 # script via sed to set the .text start addr. This is needed on FreeBSD
4335 $ld --verbose |
sed \
4336 -e '1,/==================================================/d' \
4337 -e '/==================================================/,$d' \
4338 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4339 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4340 textseg_ldflags
="-Wl,-T../config-host.ld"
4345 # prepend pixman and ftd flags after all config tests are done
4346 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4347 libs_softmmu
="$pixman_libs $libs_softmmu"
4349 echo "Install prefix $prefix"
4350 echo "BIOS directory `eval echo $qemu_datadir`"
4351 echo "binary directory `eval echo $bindir`"
4352 echo "library directory `eval echo $libdir`"
4353 echo "module directory `eval echo $qemu_moddir`"
4354 echo "libexec directory `eval echo $libexecdir`"
4355 echo "include directory `eval echo $includedir`"
4356 echo "config directory `eval echo $sysconfdir`"
4357 if test "$mingw32" = "no" ; then
4358 echo "local state directory `eval echo $local_statedir`"
4359 echo "Manual directory `eval echo $mandir`"
4360 echo "ELF interp prefix $interp_prefix"
4362 echo "local state directory queried at runtime"
4363 echo "Windows SDK $win_sdk"
4365 echo "Source path $source_path"
4366 echo "C compiler $cc"
4367 echo "Host C compiler $host_cc"
4368 echo "C++ compiler $cxx"
4369 echo "Objective-C compiler $objcc"
4370 echo "ARFLAGS $ARFLAGS"
4371 echo "CFLAGS $CFLAGS"
4372 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4373 echo "LDFLAGS $LDFLAGS"
4375 echo "install $install"
4376 echo "python $python"
4377 if test "$slirp" = "yes" ; then
4380 echo "module support $modules"
4381 echo "host CPU $cpu"
4382 echo "host big endian $bigendian"
4383 echo "target list $target_list"
4384 echo "tcg debug enabled $debug_tcg"
4385 echo "gprof enabled $gprof"
4386 echo "sparse enabled $sparse"
4387 echo "strip binaries $strip_opt"
4388 echo "profiler $profiler"
4389 echo "static build $static"
4390 if test "$darwin" = "yes" ; then
4391 echo "Cocoa support $cocoa"
4393 echo "pixman $pixman"
4394 echo "SDL support $sdl"
4395 echo "GTK support $gtk"
4396 echo "VTE support $vte"
4397 echo "curses support $curses"
4398 echo "curl support $curl"
4399 echo "mingw32 support $mingw32"
4400 echo "Audio drivers $audio_drv_list"
4401 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4402 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4403 echo "VirtFS support $virtfs"
4404 echo "VNC support $vnc"
4405 if test "$vnc" = "yes" ; then
4406 echo "VNC TLS support $vnc_tls"
4407 echo "VNC SASL support $vnc_sasl"
4408 echo "VNC JPEG support $vnc_jpeg"
4409 echo "VNC PNG support $vnc_png"
4410 echo "VNC WS support $vnc_ws"
4412 if test -n "$sparc_cpu"; then
4413 echo "Target Sparc Arch $sparc_cpu"
4415 echo "xen support $xen"
4416 if test "$xen" = "yes" ; then
4417 echo "xen ctrl version $xen_ctrl_version"
4419 echo "brlapi support $brlapi"
4420 echo "bluez support $bluez"
4421 echo "Documentation $docs"
4422 echo "GUEST_BASE $guest_base"
4424 echo "vde support $vde"
4425 echo "netmap support $netmap"
4426 echo "Linux AIO support $linux_aio"
4427 echo "ATTR/XATTR support $attr"
4428 echo "Install blobs $blobs"
4429 echo "KVM support $kvm"
4430 echo "RDMA support $rdma"
4431 echo "TCG interpreter $tcg_interpreter"
4432 echo "fdt support $fdt"
4433 echo "preadv support $preadv"
4434 echo "fdatasync $fdatasync"
4435 echo "madvise $madvise"
4436 echo "posix_madvise $posix_madvise"
4437 echo "sigev_thread_id $sigev_thread_id"
4438 echo "uuid support $uuid"
4439 echo "libcap-ng support $cap_ng"
4440 echo "vhost-net support $vhost_net"
4441 echo "vhost-scsi support $vhost_scsi"
4442 echo "Trace backends $trace_backends"
4443 if test "$trace_backend" = "simple"; then
4444 echo "Trace output file $trace_file-<pid>"
4446 if test "$spice" = "yes"; then
4447 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4449 echo "spice support $spice"
4451 echo "rbd support $rbd"
4452 echo "xfsctl support $xfs"
4453 echo "nss used $smartcard_nss"
4454 echo "libusb $libusb"
4455 echo "usb net redir $usb_redir"
4456 echo "OpenGL support $opengl"
4457 echo "libiscsi support $libiscsi"
4458 echo "libnfs support $libnfs"
4459 echo "build guest agent $guest_agent"
4460 echo "QGA VSS support $guest_agent_with_vss"
4461 echo "seccomp support $seccomp"
4462 echo "coroutine backend $coroutine"
4463 echo "coroutine pool $coroutine_pool"
4464 echo "GlusterFS support $glusterfs"
4465 echo "Archipelago support $archipelago"
4466 echo "gcov $gcov_tool"
4467 echo "gcov enabled $gcov"
4468 echo "TPM support $tpm"
4469 echo "libssh2 support $libssh2"
4470 echo "TPM passthrough $tpm_passthrough"
4471 echo "QOM debugging $qom_cast_debug"
4473 echo "Quorum $quorum"
4474 echo "lzo support $lzo"
4475 echo "snappy support $snappy"
4476 echo "bzip2 support $bzip2"
4477 echo "NUMA host support $numa"
4478 echo "tcmalloc support $tcmalloc"
4480 if test "$sdl_too_old" = "yes"; then
4481 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4484 config_host_mak
="config-host.mak"
4486 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4488 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4489 echo >> $config_host_mak
4491 echo all
: >> $config_host_mak
4492 echo "prefix=$prefix" >> $config_host_mak
4493 echo "bindir=$bindir" >> $config_host_mak
4494 echo "libdir=$libdir" >> $config_host_mak
4495 echo "libexecdir=$libexecdir" >> $config_host_mak
4496 echo "includedir=$includedir" >> $config_host_mak
4497 echo "mandir=$mandir" >> $config_host_mak
4498 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4499 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4500 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4501 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4502 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4503 if test "$mingw32" = "no" ; then
4504 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4506 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4507 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4508 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4509 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4510 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4512 echo "ARCH=$ARCH" >> $config_host_mak
4514 if test "$debug_tcg" = "yes" ; then
4515 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4517 if test "$strip_opt" = "yes" ; then
4518 echo "STRIP=${strip}" >> $config_host_mak
4520 if test "$bigendian" = "yes" ; then
4521 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4523 if test "$mingw32" = "yes" ; then
4524 echo "CONFIG_WIN32=y" >> $config_host_mak
4525 rc_version
=`cat $source_path/VERSION`
4526 version_major
=${rc_version%%.*}
4527 rc_version
=${rc_version#*.}
4528 version_minor
=${rc_version%%.*}
4529 rc_version
=${rc_version#*.}
4530 version_subminor
=${rc_version%%.*}
4532 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4533 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4534 if test "$guest_agent_with_vss" = "yes" ; then
4535 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4536 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4539 echo "CONFIG_POSIX=y" >> $config_host_mak
4542 if test "$linux" = "yes" ; then
4543 echo "CONFIG_LINUX=y" >> $config_host_mak
4546 if test "$darwin" = "yes" ; then
4547 echo "CONFIG_DARWIN=y" >> $config_host_mak
4550 if test "$aix" = "yes" ; then
4551 echo "CONFIG_AIX=y" >> $config_host_mak
4554 if test "$solaris" = "yes" ; then
4555 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4556 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4557 if test "$needs_libsunmath" = "yes" ; then
4558 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4561 if test "$haiku" = "yes" ; then
4562 echo "CONFIG_HAIKU=y" >> $config_host_mak
4564 if test "$static" = "yes" ; then
4565 echo "CONFIG_STATIC=y" >> $config_host_mak
4567 if test "$profiler" = "yes" ; then
4568 echo "CONFIG_PROFILER=y" >> $config_host_mak
4570 if test "$slirp" = "yes" ; then
4571 echo "CONFIG_SLIRP=y" >> $config_host_mak
4572 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4574 if test "$vde" = "yes" ; then
4575 echo "CONFIG_VDE=y" >> $config_host_mak
4577 if test "$netmap" = "yes" ; then
4578 echo "CONFIG_NETMAP=y" >> $config_host_mak
4580 if test "$l2tpv3" = "yes" ; then
4581 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4583 if test "$cap_ng" = "yes" ; then
4584 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4586 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4587 for drv
in $audio_drv_list; do
4588 def
=CONFIG_
`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4589 echo "$def=y" >> $config_host_mak
4590 if test "$drv" = "fmod"; then
4591 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
4594 if test "$audio_pt_int" = "yes" ; then
4595 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4597 if test "$audio_win_int" = "yes" ; then
4598 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4600 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4601 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4602 if test "$vnc" = "yes" ; then
4603 echo "CONFIG_VNC=y" >> $config_host_mak
4605 if test "$vnc_tls" = "yes" ; then
4606 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4608 if test "$vnc_sasl" = "yes" ; then
4609 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4611 if test "$vnc_jpeg" = "yes" ; then
4612 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4614 if test "$vnc_png" = "yes" ; then
4615 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4617 if test "$vnc_ws" = "yes" ; then
4618 echo "CONFIG_VNC_WS=y" >> $config_host_mak
4619 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
4621 if test "$fnmatch" = "yes" ; then
4622 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4624 if test "$uuid" = "yes" ; then
4625 echo "CONFIG_UUID=y" >> $config_host_mak
4627 if test "$xfs" = "yes" ; then
4628 echo "CONFIG_XFS=y" >> $config_host_mak
4630 qemu_version
=`head $source_path/VERSION`
4631 echo "VERSION=$qemu_version" >>$config_host_mak
4632 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4633 echo "SRC_PATH=$source_path" >> $config_host_mak
4634 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4635 if [ "$docs" = "yes" ] ; then
4636 echo "BUILD_DOCS=yes" >> $config_host_mak
4638 if test "$modules" = "yes"; then
4639 # $shacmd can generate a hash started with digit, which the compiler doesn't
4640 # like as an symbol. So prefix it with an underscore
4641 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4642 echo "CONFIG_MODULES=y" >> $config_host_mak
4644 if test "$sdl" = "yes" ; then
4645 echo "CONFIG_SDL=y" >> $config_host_mak
4646 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4647 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4649 if test "$cocoa" = "yes" ; then
4650 echo "CONFIG_COCOA=y" >> $config_host_mak
4652 if test "$curses" = "yes" ; then
4653 echo "CONFIG_CURSES=y" >> $config_host_mak
4655 if test "$utimens" = "yes" ; then
4656 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4658 if test "$pipe2" = "yes" ; then
4659 echo "CONFIG_PIPE2=y" >> $config_host_mak
4661 if test "$accept4" = "yes" ; then
4662 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4664 if test "$splice" = "yes" ; then
4665 echo "CONFIG_SPLICE=y" >> $config_host_mak
4667 if test "$eventfd" = "yes" ; then
4668 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4670 if test "$fallocate" = "yes" ; then
4671 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4673 if test "$fallocate_punch_hole" = "yes" ; then
4674 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4676 if test "$fallocate_zero_range" = "yes" ; then
4677 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4679 if test "$posix_fallocate" = "yes" ; then
4680 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4682 if test "$sync_file_range" = "yes" ; then
4683 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4685 if test "$fiemap" = "yes" ; then
4686 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4688 if test "$dup3" = "yes" ; then
4689 echo "CONFIG_DUP3=y" >> $config_host_mak
4691 if test "$ppoll" = "yes" ; then
4692 echo "CONFIG_PPOLL=y" >> $config_host_mak
4694 if test "$prctl_pr_set_timerslack" = "yes" ; then
4695 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4697 if test "$epoll" = "yes" ; then
4698 echo "CONFIG_EPOLL=y" >> $config_host_mak
4700 if test "$epoll_create1" = "yes" ; then
4701 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4703 if test "$epoll_pwait" = "yes" ; then
4704 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4706 if test "$sendfile" = "yes" ; then
4707 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4709 if test "$timerfd" = "yes" ; then
4710 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4712 if test "$setns" = "yes" ; then
4713 echo "CONFIG_SETNS=y" >> $config_host_mak
4715 if test "$inotify" = "yes" ; then
4716 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4718 if test "$inotify1" = "yes" ; then
4719 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4721 if test "$byteswap_h" = "yes" ; then
4722 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4724 if test "$bswap_h" = "yes" ; then
4725 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4727 if test "$curl" = "yes" ; then
4728 echo "CONFIG_CURL=m" >> $config_host_mak
4729 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4730 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4732 if test "$brlapi" = "yes" ; then
4733 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4735 if test "$bluez" = "yes" ; then
4736 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4737 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4739 if test "glib_subprocess" = "yes" ; then
4740 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4742 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4743 if test "$gtk" = "yes" ; then
4744 echo "CONFIG_GTK=y" >> $config_host_mak
4745 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4746 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4748 if test "$vte" = "yes" ; then
4749 echo "CONFIG_VTE=y" >> $config_host_mak
4750 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4752 if test "$xen" = "yes" ; then
4753 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4754 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4756 if test "$linux_aio" = "yes" ; then
4757 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4759 if test "$attr" = "yes" ; then
4760 echo "CONFIG_ATTR=y" >> $config_host_mak
4762 if test "$libattr" = "yes" ; then
4763 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4765 if test "$virtfs" = "yes" ; then
4766 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4768 if test "$vhost_scsi" = "yes" ; then
4769 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4771 if test "$vhost_net" = "yes" ; then
4772 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4774 if test "$blobs" = "yes" ; then
4775 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4777 if test "$iovec" = "yes" ; then
4778 echo "CONFIG_IOVEC=y" >> $config_host_mak
4780 if test "$preadv" = "yes" ; then
4781 echo "CONFIG_PREADV=y" >> $config_host_mak
4783 if test "$fdt" = "yes" ; then
4784 echo "CONFIG_FDT=y" >> $config_host_mak
4786 if test "$signalfd" = "yes" ; then
4787 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4789 if test "$tcg_interpreter" = "yes" ; then
4790 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4792 if test "$fdatasync" = "yes" ; then
4793 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4795 if test "$madvise" = "yes" ; then
4796 echo "CONFIG_MADVISE=y" >> $config_host_mak
4798 if test "$posix_madvise" = "yes" ; then
4799 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4801 if test "$sigev_thread_id" = "yes" ; then
4802 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4805 if test "$spice" = "yes" ; then
4806 echo "CONFIG_SPICE=y" >> $config_host_mak
4809 if test "$smartcard_nss" = "yes" ; then
4810 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4811 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4812 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4815 if test "$libusb" = "yes" ; then
4816 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4819 if test "$usb_redir" = "yes" ; then
4820 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4823 if test "$opengl" = "yes" ; then
4824 echo "CONFIG_OPENGL=y" >> $config_host_mak
4825 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4826 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4829 if test "$lzo" = "yes" ; then
4830 echo "CONFIG_LZO=y" >> $config_host_mak
4833 if test "$snappy" = "yes" ; then
4834 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4837 if test "$bzip2" = "yes" ; then
4838 echo "CONFIG_BZIP2=y" >> $config_host_mak
4839 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4842 if test "$libiscsi" = "yes" ; then
4843 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4844 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4845 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4848 if test "$libnfs" = "yes" ; then
4849 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4852 if test "$seccomp" = "yes"; then
4853 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4856 # XXX: suppress that
4857 if [ "$bsd" = "yes" ] ; then
4858 echo "CONFIG_BSD=y" >> $config_host_mak
4861 if test "$zero_malloc" = "yes" ; then
4862 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4864 if test "$qom_cast_debug" = "yes" ; then
4865 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4867 if test "$rbd" = "yes" ; then
4868 echo "CONFIG_RBD=m" >> $config_host_mak
4869 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
4870 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4873 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4874 if test "$coroutine_pool" = "yes" ; then
4875 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4877 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4880 if test "$open_by_handle_at" = "yes" ; then
4881 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
4884 if test "$linux_magic_h" = "yes" ; then
4885 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4888 if test "$pragma_diagnostic_available" = "yes" ; then
4889 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
4892 if test "$valgrind_h" = "yes" ; then
4893 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
4896 if test "$has_environ" = "yes" ; then
4897 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
4900 if test "$cpuid_h" = "yes" ; then
4901 echo "CONFIG_CPUID_H=y" >> $config_host_mak
4904 if test "$int128" = "yes" ; then
4905 echo "CONFIG_INT128=y" >> $config_host_mak
4908 if test "$getauxval" = "yes" ; then
4909 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
4912 if test "$glusterfs" = "yes" ; then
4913 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
4914 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
4915 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
4918 if test "$glusterfs_discard" = "yes" ; then
4919 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
4922 if test "$glusterfs_zerofill" = "yes" ; then
4923 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
4926 if test "$archipelago" = "yes" ; then
4927 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
4928 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
4931 if test "$libssh2" = "yes" ; then
4932 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
4933 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
4934 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
4937 if test "$quorum" = "yes" ; then
4938 echo "CONFIG_QUORUM=y" >> $config_host_mak
4941 if test "$vhdx" = "yes" ; then
4942 echo "CONFIG_VHDX=y" >> $config_host_mak
4946 if test "$libusb" = "yes"; then
4947 echo "HOST_USB=libusb legacy" >> $config_host_mak
4949 echo "HOST_USB=stub" >> $config_host_mak
4952 # TPM passthrough support?
4953 if test "$tpm" = "yes"; then
4954 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
4955 if test "$tpm_passthrough" = "yes"; then
4956 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
4960 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
4961 if have_backend
"nop"; then
4962 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
4964 if have_backend
"simple"; then
4965 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
4966 # Set the appropriate trace file.
4967 trace_file
="\"$trace_file-\" FMT_pid"
4969 if have_backend
"stderr"; then
4970 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
4972 if have_backend
"ust"; then
4973 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
4975 if have_backend
"dtrace"; then
4976 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
4977 if test "$trace_backend_stap" = "yes" ; then
4978 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
4981 if have_backend
"ftrace"; then
4982 if test "$linux" = "yes" ; then
4983 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
4985 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
4988 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
4990 if test "$rdma" = "yes" ; then
4991 echo "CONFIG_RDMA=y" >> $config_host_mak
4994 # Hold two types of flag:
4995 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
4996 # a thread we have a handle to
4997 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
4999 if test "$pthread_setname_np" = "yes" ; then
5000 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5001 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5004 if test "$tcg_interpreter" = "yes"; then
5005 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5006 elif test "$ARCH" = "sparc64" ; then
5007 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5008 elif test "$ARCH" = "s390x" ; then
5009 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5010 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5011 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5012 elif test "$ARCH" = "ppc64" ; then
5013 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5015 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5017 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5019 echo "TOOLS=$tools" >> $config_host_mak
5020 echo "ROMS=$roms" >> $config_host_mak
5021 echo "MAKE=$make" >> $config_host_mak
5022 echo "INSTALL=$install" >> $config_host_mak
5023 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5024 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5025 if test -n "$libtool"; then
5026 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5027 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5029 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5030 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5032 echo "PYTHON=$python" >> $config_host_mak
5033 echo "CC=$cc" >> $config_host_mak
5034 if $iasl -h > /dev
/null
2>&1; then
5035 echo "IASL=$iasl" >> $config_host_mak
5037 echo "CC_I386=$cc_i386" >> $config_host_mak
5038 echo "HOST_CC=$host_cc" >> $config_host_mak
5039 echo "CXX=$cxx" >> $config_host_mak
5040 echo "OBJCC=$objcc" >> $config_host_mak
5041 echo "AR=$ar" >> $config_host_mak
5042 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5043 echo "AS=$as" >> $config_host_mak
5044 echo "CPP=$cpp" >> $config_host_mak
5045 echo "OBJCOPY=$objcopy" >> $config_host_mak
5046 echo "LD=$ld" >> $config_host_mak
5047 echo "NM=$nm" >> $config_host_mak
5048 echo "WINDRES=$windres" >> $config_host_mak
5049 echo "LIBTOOL=$libtool" >> $config_host_mak
5050 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5051 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5052 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5053 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5054 if test "$sparse" = "yes" ; then
5055 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5056 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5057 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5058 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5059 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5061 if test "$cross_prefix" != ""; then
5062 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5064 echo "AUTOCONF_HOST := " >> $config_host_mak
5066 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5067 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5068 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5069 echo "LIBS+=$LIBS" >> $config_host_mak
5070 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5071 echo "EXESUF=$EXESUF" >> $config_host_mak
5072 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5073 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5074 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5075 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5076 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5077 if test "$gcov" = "yes" ; then
5078 echo "CONFIG_GCOV=y" >> $config_host_mak
5079 echo "GCOV=$gcov_tool" >> $config_host_mak
5082 # use included Linux headers
5083 if test "$linux" = "yes" ; then
5084 mkdir
-p linux-headers
5102 # For most CPUs the kernel architecture name and QEMU CPU name match.
5106 # For non-KVM architectures we will not have asm headers
5107 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5108 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5112 for target
in $target_list; do
5113 target_dir
="$target"
5114 config_target_mak
=$target_dir/config-target.mak
5115 target_name
=`echo $target | cut -d '-' -f 1`
5116 target_bigendian
="no"
5118 case "$target_name" in
5119 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5120 target_bigendian
=yes
5124 target_user_only
="no"
5125 target_linux_user
="no"
5126 target_bsd_user
="no"
5128 ${target_name}-softmmu)
5129 target_softmmu
="yes"
5131 ${target_name}-linux-user)
5132 if test "$linux" != "yes" ; then
5133 error_exit
"Target '$target' is only available on a Linux host"
5135 target_user_only
="yes"
5136 target_linux_user
="yes"
5138 ${target_name}-bsd-user)
5139 if test "$bsd" != "yes" ; then
5140 error_exit
"Target '$target' is only available on a BSD host"
5142 target_user_only
="yes"
5143 target_bsd_user
="yes"
5146 error_exit
"Target '$target' not recognised"
5151 mkdir
-p $target_dir
5152 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5155 interp_prefix1
=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5158 TARGET_ARCH
="$target_name"
5162 case "$target_name" in
5166 TARGET_BASE_ARCH
=i386
5173 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5176 TARGET_BASE_ARCH
=arm
5178 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5186 gdb_xml_files
="cf-core.xml cf-fp.xml"
5188 microblaze|microblazeel
)
5189 TARGET_ARCH
=microblaze
5194 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5198 TARGET_BASE_ARCH
=mips
5199 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5200 echo "TARGET_ABI32=y" >> $config_target_mak
5204 TARGET_BASE_ARCH
=mips
5205 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5210 TARGET_ARCH
=openrisc
5211 TARGET_BASE_ARCH
=openrisc
5214 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5217 TARGET_BASE_ARCH
=ppc
5219 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5222 TARGET_BASE_ARCH
=ppc
5224 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5228 TARGET_BASE_ARCH
=ppc
5230 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5234 TARGET_BASE_ARCH
=ppc
5236 echo "TARGET_ABI32=y" >> $config_target_mak
5237 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5246 TARGET_BASE_ARCH
=sparc
5250 TARGET_BASE_ARCH
=sparc
5251 TARGET_ABI_DIR
=sparc
5252 echo "TARGET_ABI32=y" >> $config_target_mak
5255 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml"
5265 error_exit
"Unsupported target CPU"
5268 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5269 if [ "$TARGET_BASE_ARCH" = "" ]; then
5270 TARGET_BASE_ARCH
=$TARGET_ARCH
5273 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5276 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5279 target_arch_name
="`upper $TARGET_ARCH`"
5280 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5281 echo "TARGET_NAME=$target_name" >> $config_target_mak
5282 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5283 if [ "$TARGET_ABI_DIR" = "" ]; then
5284 TARGET_ABI_DIR
=$TARGET_ARCH
5286 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5287 if [ "$HOST_VARIANT_DIR" != "" ]; then
5288 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5290 case "$target_name" in
5292 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5293 echo "CONFIG_XEN=y" >> $config_target_mak
5294 if test "$xen_pci_passthrough" = yes; then
5295 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5301 case "$target_name" in
5302 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
5303 # Make sure the target and host cpus are compatible
5304 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5305 \
( "$target_name" = "$cpu" -o \
5306 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
5307 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
5308 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
5309 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
5310 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
5311 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
5312 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
5313 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
5314 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
5315 echo "CONFIG_KVM=y" >> $config_target_mak
5316 if test "$vhost_net" = "yes" ; then
5317 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5321 if test "$target_bigendian" = "yes" ; then
5322 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5324 if test "$target_softmmu" = "yes" ; then
5325 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5327 if test "$target_user_only" = "yes" ; then
5328 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5329 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5331 if test "$target_linux_user" = "yes" ; then
5332 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5335 if test ! -z "$gdb_xml_files" ; then
5336 for x
in $gdb_xml_files; do
5337 list
="$list $source_path/gdb-xml/$x"
5339 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5342 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5343 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5345 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5346 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5348 if test "$target_bsd_user" = "yes" ; then
5349 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5352 # generate QEMU_CFLAGS/LDFLAGS for targets
5357 for i
in $ARCH $TARGET_BASE_ARCH ; do
5360 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5361 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5364 if test -n "${cxx}"; then
5365 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5366 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5370 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5371 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5372 if test -n "${cxx}"; then
5373 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5374 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5378 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5379 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5382 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5383 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5386 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5387 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5390 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5391 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5394 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5395 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5398 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5399 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5402 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5403 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5406 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5407 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5410 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5411 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5414 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5415 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5418 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5419 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5422 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5423 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5426 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5427 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5430 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5431 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5434 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5435 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5439 if test "$tcg_interpreter" = "yes" ; then
5440 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5441 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5446 # Ensure there's only a single GP
5447 cflags
="-msmall-data $cflags"
5451 if test "$gprof" = "yes" ; then
5452 echo "TARGET_GPROF=yes" >> $config_target_mak
5453 if test "$target_linux_user" = "yes" ; then
5455 ldflags
="-p $ldflags"
5457 if test "$target_softmmu" = "yes" ; then
5458 ldflags
="-p $ldflags"
5459 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5463 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5464 ldflags
="$ldflags $textseg_ldflags"
5467 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5468 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5470 done # for target in $targets
5472 if [ "$pixman" = "internal" ]; then
5473 echo "config-host.h: subdir-pixman" >> $config_host_mak
5476 if test "$rdma" = "yes" ; then
5477 echo "CONFIG_RDMA=y" >> $config_host_mak
5480 if [ "$dtc_internal" = "yes" ]; then
5481 echo "config-host.h: subdir-dtc" >> $config_host_mak
5484 if test "$numa" = "yes"; then
5485 echo "CONFIG_NUMA=y" >> $config_host_mak
5488 # build tree in object directory in case the source is not in the current directory
5489 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5491 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5492 DIRS
="$DIRS roms/seabios roms/vgabios"
5493 DIRS
="$DIRS qapi-generated"
5494 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
5495 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5496 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5497 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5498 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
5499 FILES
="$FILES pc-bios/s390-ccw/Makefile"
5500 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5501 FILES
="$FILES pc-bios/qemu-icon.bmp"
5503 $source_path/pc-bios
/*.bin \
5504 $source_path/pc-bios
/*.aml \
5505 $source_path/pc-bios
/*.rom \
5506 $source_path/pc-bios
/*.dtb \
5507 $source_path/pc-bios
/*.img \
5508 $source_path/pc-bios
/openbios-
* \
5509 $source_path/pc-bios
/u-boot.
* \
5510 $source_path/pc-bios
/palcode-
*
5512 FILES
="$FILES pc-bios/`basename $bios_file`"
5514 for test_file
in `find $source_path/tests/acpi-test-data -type f`
5516 FILES
="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5519 for f
in $FILES ; do
5520 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5521 symlink
"$source_path/$f" "$f"
5525 # temporary config to build submodules
5526 for rom
in seabios vgabios
; do
5527 config_mak
=roms
/$rom/config.mak
5528 echo "# Automatically generated by configure - do not modify" > $config_mak
5529 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5530 echo "AS=$as" >> $config_mak
5531 echo "CC=$cc" >> $config_mak
5532 echo "BCC=bcc" >> $config_mak
5533 echo "CPP=$cpp" >> $config_mak
5534 echo "OBJCOPY=objcopy" >> $config_mak
5535 echo "IASL=$iasl" >> $config_mak
5536 echo "LD=$ld" >> $config_mak
5539 # set up qemu-iotests in this build directory
5540 iotests_common_env
="tests/qemu-iotests/common.env"
5541 iotests_check
="tests/qemu-iotests/check"
5543 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5544 echo >> "$iotests_common_env"
5545 echo "export PYTHON='$python'" >> "$iotests_common_env"
5547 if [ ! -e "$iotests_check" ]; then
5548 symlink
"$source_path/$iotests_check" "$iotests_check"
5551 # Save the configure command line for later reuse.
5552 cat <<EOD >config.status
5554 # Generated by configure.
5555 # Run this file to recreate the current configuration.
5556 # Compiler output produced by configure, useful for debugging
5557 # configure, is in config.log if it exists.
5559 printf "exec" >>config.status
5560 printf " '%s'" "$0" "$@" >>config.status
5561 echo >>config.status
5562 chmod +x config.status