3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE
= GREP_OPTIONS
=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE
=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC
="${TMPDIR1}/${TMPB}.c"
29 TMPO
="${TMPDIR1}/${TMPB}.o"
30 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
31 TMPL
="${TMPDIR1}/${TMPB}.lo"
32 TMPA
="${TMPDIR1}/lib${TMPB}.la"
33 TMPE
="${TMPDIR1}/${TMPB}.exe"
34 TMPMO
="${TMPDIR1}/${TMPB}.mo"
38 # Print a helpful header at the top of config.log
39 echo "# QEMU configure log $(date)" >> config.log
40 printf "# Configured with:" >> config.log
41 printf " '%s'" "$0" "$@" >> config.log
43 echo "#" >> config.log
48 while test -n "$2"; do
57 # Run the compiler, capturing its output to the log. First argument
58 # is compiler binary to execute.
61 echo $compiler "$@" >> config.log
62 $compiler "$@" >> config.log
2>&1 ||
return $?
63 # Test passed. If this is an --enable-werror build, rerun
64 # the test with -Werror and bail out if it fails. This
65 # makes warning-generating-errors in configure test code
66 # obvious to developers.
67 if test "$werror" != "yes"; then
70 # Don't bother rerunning the compile if we were already using -Werror
76 echo $compiler -Werror "$@" >> config.log
77 $compiler -Werror "$@" >> config.log
2>&1 && return $?
78 error_exit
"configure test passed without -Werror but failed with -Werror." \
79 "This is probably a bug in the configure script. The failing command" \
80 "will be at the bottom of config.log." \
81 "You can run configure with --disable-werror to bypass this check."
85 do_compiler
"$cc" "$@"
89 do_compiler
"$cxx" "$@"
93 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
94 # options which some versions of GCC's C++ compiler complain about
95 # because they only make sense for C programs.
97 for arg
in $QEMU_CFLAGS; do
99 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
100 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
103 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
111 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
117 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
120 # symbolically link $1 to $2. Portable version of "ln -sf".
123 mkdir
-p "$(dirname "$2")"
127 # check whether a command is available to this shell (may be either an
128 # executable or a builtin)
130 type "$1" >/dev
/null
2>&1
133 # search for an executable in PATH
139 # pathname has a dir component?
140 if [ "${local_command#*/}" != "$local_command" ]; then
141 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
142 echo "$local_command"
146 if [ -z "$local_command" ]; then
151 for local_dir
in $PATH; do
152 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
153 echo "$local_dir/$local_command"
154 IFS
="${local_ifs:-$(printf ' \t\n')}"
159 IFS
="${local_ifs:-$(printf ' \t\n')}"
164 echo "$trace_backends" |
grep "$1" >/dev
/null
168 source_path
=$
(dirname "$0")
171 interp_prefix
="/usr/gnemul/qemu-%M"
175 block_drv_rw_whitelist
=""
176 block_drv_ro_whitelist
=""
182 cc_i386
=i386-pc-linux-gnu-gcc
187 # Don't accept a target_list environment variable.
190 # Default value for a variable defining feature "foo".
191 # * foo="no" feature will only be used if --enable-foo arg is given
192 # * foo="" feature will be searched for, and if found, will be used
193 # unless --disable-foo is given
194 # * foo="yes" this value will only be set by --enable-foo flag.
195 # feature will searched for,
196 # if not found, configure exits with error
198 # Always add --enable-foo and --disable-foo command line args.
199 # Distributions want to ensure that several features are compiled in, and it
200 # is impossible without a --enable-foo that exits if a feature is not found.
221 xen_pv_domain_build
="no"
222 xen_pci_passthrough
=""
247 LDFLAGS_SHARED
="-shared"
250 mandir
="\${prefix}/share/man"
251 datadir
="\${prefix}/share"
252 qemu_docdir
="\${prefix}/share/doc/qemu"
253 bindir
="\${prefix}/bin"
254 libdir
="\${prefix}/lib"
255 libexecdir
="\${prefix}/libexec"
256 includedir
="\${prefix}/include"
257 sysconfdir
="\${prefix}/etc"
258 local_statedir
="\${prefix}/var"
290 guest_agent_with_vss
="no"
291 guest_agent_ntddscsi
="no"
300 debug_stack_usage
="no"
303 glusterfs_xlator_opt
="no"
304 glusterfs_discard
="no"
305 glusterfs_zerofill
="no"
310 tls_priority
="NORMAL"
326 # parse CC options first
328 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
330 --cross-prefix=*) cross_prefix
="$optarg"
334 --cxx=*) CXX
="$optarg"
336 --source-path=*) source_path
="$optarg"
338 --cpu=*) cpu
="$optarg"
340 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
341 EXTRA_CFLAGS
="$optarg"
343 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
344 EXTRA_LDFLAGS
="$optarg"
346 --enable-debug-info) debug_info
="yes"
348 --disable-debug-info) debug_info
="no"
353 # Using uname is really, really broken. Once we have the right set of checks
354 # we can eliminate its usage altogether.
356 # Preferred compiler:
358 # ${cross_prefix}gcc (if cross-prefix specified)
360 if test -z "${CC}${cross_prefix}"; then
363 cc
="${CC-${cross_prefix}gcc}"
366 if test -z "${CXX}${cross_prefix}"; then
369 cxx
="${CXX-${cross_prefix}g++}"
372 ar="${AR-${cross_prefix}ar}"
373 as
="${AS-${cross_prefix}as}"
376 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
377 ld
="${LD-${cross_prefix}ld}"
378 nm
="${NM-${cross_prefix}nm}"
379 strip
="${STRIP-${cross_prefix}strip}"
380 windres
="${WINDRES-${cross_prefix}windres}"
381 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
383 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
385 pkg_config
=query_pkg_config
386 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
387 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
389 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
390 ARFLAGS
="${ARFLAGS-rv}"
392 # default flags for all hosts
393 # We use -fwrapv to tell the compiler that we require a C dialect where
394 # left shift of signed integers is well defined and has the expected
395 # 2s-complement style results. (Both clang and gcc agree that it
396 # provides these semantics.)
397 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
398 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
399 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
400 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
401 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
402 if test "$debug_info" = "yes"; then
404 LDFLAGS
="-g $LDFLAGS"
407 # make source path absolute
408 source_path
=$
(cd "$source_path"; pwd)
410 # running configure in the source tree?
411 # we know that's the case if configure is there.
412 if test -f "./configure"; then
413 pwd_is_source_path
="y"
415 pwd_is_source_path
="n"
421 #error $1 not defined
423 int main(void) { return 0; }
431 int main(void) { return 0; }
438 int main(void) { return 0; }
442 if check_define __linux__
; then
444 elif check_define _WIN32
; then
446 elif check_define __OpenBSD__
; then
448 elif check_define __sun__
; then
450 elif check_define __HAIKU__
; then
456 # Some host OSes need non-standard checks for which CPU to use.
457 # Note that these checks are broken for cross-compilation: if you're
458 # cross-compiling to one of these OSes then you'll need to specify
459 # the correct CPU with the --cpu option.
462 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
463 # run 64-bit userspace code.
464 # If the user didn't specify a CPU explicitly and the kernel says this is
465 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
466 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
471 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
472 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
477 if test ! -z "$cpu" ; then
478 # command line argument
480 elif check_define __i386__
; then
482 elif check_define __x86_64__
; then
483 if check_define __ILP32__
; then
488 elif check_define __sparc__
; then
489 if check_define __arch64__
; then
494 elif check_define _ARCH_PPC
; then
495 if check_define _ARCH_PPC64
; then
500 elif check_define __mips__
; then
502 elif check_define __ia64__
; then
504 elif check_define __s390__
; then
505 if check_define __s390x__
; then
510 elif check_define __arm__
; then
512 elif check_define __aarch64__
; then
519 # Normalise host CPU name and set ARCH.
520 # Note that this case should only have supported host CPUs, not guests.
522 ia64|ppc|ppc64|s390|s390x|sparc64|x32
)
525 i386|i486|i586|i686|i86pc|BePC
)
544 # This will result in either an error or falling back to TCI later
548 if test -z "$ARCH"; then
554 # host *BSD for user mode
560 QEMU_CFLAGS
="-mno-cygwin $QEMU_CFLAGS"
561 audio_possible_drivers
="sdl"
566 audio_possible_drivers
="dsound sdl"
567 if check_include dsound.h
; then
568 audio_drv_list
="dsound"
576 audio_possible_drivers
="oss sdl pa"
582 audio_possible_drivers
="oss sdl pa"
583 # needed for kinfo_getvmmap(3) in libutil.h
585 # needed for kinfo_getproc
586 libs_qga
="-lutil $libs_qga"
587 netmap
="" # enable netmap autodetect
588 HOST_VARIANT_DIR
="freebsd"
594 audio_possible_drivers
="oss sdl pa"
595 HOST_VARIANT_DIR
="dragonfly"
601 audio_possible_drivers
="oss sdl"
603 HOST_VARIANT_DIR
="netbsd"
609 audio_possible_drivers
="sdl"
610 HOST_VARIANT_DIR
="openbsd"
615 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
616 if [ "$cpu" = "x86_64" ] ; then
617 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
618 LDFLAGS
="-arch x86_64 $LDFLAGS"
621 audio_drv_list
="coreaudio"
622 audio_possible_drivers
="coreaudio sdl"
623 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
624 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
625 # Disable attempts to use ObjectiveC features in os/object.h since they
626 # won't work when we're compiling with gcc as a C compiler.
627 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
628 HOST_VARIANT_DIR
="darwin"
633 install="${INSTALL-ginstall}"
635 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
636 needs_libsunmath
="no"
637 solarisrev
=$
(uname
-r | cut
-f2 -d.
)
638 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
639 if test "$solarisrev" -le 9 ; then
640 if test -f /opt
/SUNWspro
/prod
/lib
/libsunmath.so
.1; then
641 needs_libsunmath
="yes"
642 QEMU_CFLAGS
="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
643 LDFLAGS
="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
644 LIBS
="-lsunmath $LIBS"
646 error_exit
"QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
647 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
648 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
649 "Studio 11 can be downloaded from www.sun.com."
653 if test -f /usr
/include
/sys
/soundcard.h
; then
656 audio_possible_drivers
="oss sdl"
657 # needed for CMSG_ macros in sys/socket.h
658 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
659 # needed for TIOCWIN* defines in termios.h
660 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
661 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
662 solarisnetlibs
="-lsocket -lnsl -lresolv"
663 LIBS
="$solarisnetlibs $LIBS"
664 libs_qga
="$solarisnetlibs $libs_qga"
672 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
673 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
677 audio_possible_drivers
="oss alsa sdl pa"
684 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
688 if [ "$bsd" = "yes" ] ; then
689 if [ "$darwin" != "yes" ] ; then
694 : ${make=${MAKE-make}}
695 : ${install=${INSTALL-install}}
696 : ${python=${PYTHON-python}}
697 : ${smbd=${SMBD-/usr/sbin/smbd}}
699 # Default objcc to clang if available, otherwise use CC
706 if test "$mingw32" = "yes" ; then
709 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
710 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
711 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
712 # MinGW needs -mthreads for TLS and macro _MT.
713 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
714 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
716 if compile_prog
"" "-liberty" ; then
717 LIBS
="-liberty $LIBS"
719 prefix
="c:/Program Files/QEMU"
722 qemu_docdir
="\${prefix}"
724 sysconfdir
="\${prefix}"
727 libs_qga
="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
733 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
735 --help|
-h) show_help
=yes
737 --version|
-V) exec cat $source_path/VERSION
739 --prefix=*) prefix
="$optarg"
741 --interp-prefix=*) interp_prefix
="$optarg"
749 --host-cc=*) host_cc
="$optarg"
753 --iasl=*) iasl
="$optarg"
755 --objcc=*) objcc
="$optarg"
757 --make=*) make="$optarg"
759 --install=*) install="$optarg"
761 --python=*) python
="$optarg"
763 --gcov=*) gcov_tool
="$optarg"
765 --smbd=*) smbd
="$optarg"
773 --disable-debug-info)
783 --target-list=*) target_list
="$optarg"
785 --enable-trace-backends=*) trace_backends
="$optarg"
787 # XXX: backwards compatibility
788 --enable-trace-backend=*) trace_backends
="$optarg"
790 --with-trace-file=*) trace_file
="$optarg"
792 --enable-gprof) gprof
="yes"
794 --enable-gcov) gcov
="yes"
798 LDFLAGS
="-static $LDFLAGS"
799 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
801 --mandir=*) mandir
="$optarg"
803 --bindir=*) bindir
="$optarg"
805 --libdir=*) libdir
="$optarg"
807 --libexecdir=*) libexecdir
="$optarg"
809 --includedir=*) includedir
="$optarg"
811 --datadir=*) datadir
="$optarg"
813 --with-confsuffix=*) confsuffix
="$optarg"
815 --docdir=*) qemu_docdir
="$optarg"
817 --sysconfdir=*) sysconfdir
="$optarg"
819 --localstatedir=*) local_statedir
="$optarg"
821 --sbindir=*|
--sharedstatedir=*|\
822 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
823 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
824 # These switches are silently ignored, for compatibility with
825 # autoconf-generated configure scripts. This allows QEMU's
826 # configure to be used by RPM and similar macros that set
827 # lots of directory switches by default.
829 --with-system-pixman) pixman
="system"
831 --without-system-pixman) pixman
="internal"
833 --without-pixman) pixman
="none"
835 --disable-sdl) sdl
="no"
837 --enable-sdl) sdl
="yes"
839 --with-sdlabi=*) sdlabi
="$optarg"
841 --disable-qom-cast-debug) qom_cast_debug
="no"
843 --enable-qom-cast-debug) qom_cast_debug
="yes"
845 --disable-virtfs) virtfs
="no"
847 --enable-virtfs) virtfs
="yes"
849 --disable-vnc) vnc
="no"
851 --enable-vnc) vnc
="yes"
853 --oss-lib=*) oss_lib
="$optarg"
855 --audio-drv-list=*) audio_drv_list
="$optarg"
857 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
859 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
861 --enable-debug-tcg) debug_tcg
="yes"
863 --disable-debug-tcg) debug_tcg
="no"
866 # Enable debugging options that aren't excessively noisy
872 --enable-sparse) sparse
="yes"
874 --disable-sparse) sparse
="no"
876 --disable-strip) strip_opt
="no"
878 --disable-vnc-sasl) vnc_sasl
="no"
880 --enable-vnc-sasl) vnc_sasl
="yes"
882 --disable-vnc-jpeg) vnc_jpeg
="no"
884 --enable-vnc-jpeg) vnc_jpeg
="yes"
886 --disable-vnc-png) vnc_png
="no"
888 --enable-vnc-png) vnc_png
="yes"
890 --disable-slirp) slirp
="no"
892 --disable-vde) vde
="no"
894 --enable-vde) vde
="yes"
896 --disable-netmap) netmap
="no"
898 --enable-netmap) netmap
="yes"
900 --disable-xen) xen
="no"
902 --enable-xen) xen
="yes"
904 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
906 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
908 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
910 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
912 --disable-brlapi) brlapi
="no"
914 --enable-brlapi) brlapi
="yes"
916 --disable-bluez) bluez
="no"
918 --enable-bluez) bluez
="yes"
920 --disable-kvm) kvm
="no"
922 --enable-kvm) kvm
="yes"
924 --disable-colo) colo
="no"
926 --enable-colo) colo
="yes"
928 --disable-tcg-interpreter) tcg_interpreter
="no"
930 --enable-tcg-interpreter) tcg_interpreter
="yes"
932 --disable-cap-ng) cap_ng
="no"
934 --enable-cap-ng) cap_ng
="yes"
936 --disable-spice) spice
="no"
938 --enable-spice) spice
="yes"
940 --disable-libiscsi) libiscsi
="no"
942 --enable-libiscsi) libiscsi
="yes"
944 --disable-libnfs) libnfs
="no"
946 --enable-libnfs) libnfs
="yes"
948 --enable-profiler) profiler
="yes"
950 --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-pie) pie
="yes"
975 --disable-pie) pie
="no"
977 --enable-werror) werror
="yes"
979 --disable-werror) werror
="no"
981 --enable-stack-protector) stack_protector
="yes"
983 --disable-stack-protector) stack_protector
="no"
985 --disable-curses) curses
="no"
987 --enable-curses) curses
="yes"
989 --disable-curl) curl
="no"
991 --enable-curl) curl
="yes"
993 --disable-fdt) fdt
="no"
995 --enable-fdt) fdt
="yes"
997 --disable-linux-aio) linux_aio
="no"
999 --enable-linux-aio) linux_aio
="yes"
1001 --disable-attr) attr
="no"
1003 --enable-attr) attr
="yes"
1005 --disable-blobs) blobs
="no"
1007 --with-pkgversion=*) pkgversion
=" ($optarg)"
1009 --with-coroutine=*) coroutine
="$optarg"
1011 --disable-coroutine-pool) coroutine_pool
="no"
1013 --enable-coroutine-pool) coroutine_pool
="yes"
1015 --enable-debug-stack-usage) debug_stack_usage
="yes"
1017 --disable-docs) docs
="no"
1019 --enable-docs) docs
="yes"
1021 --disable-vhost-net) vhost_net
="no"
1023 --enable-vhost-net) vhost_net
="yes"
1025 --disable-vhost-scsi) vhost_scsi
="no"
1027 --enable-vhost-scsi) vhost_scsi
="yes"
1029 --disable-vhost-vsock) vhost_vsock
="no"
1031 --enable-vhost-vsock) vhost_vsock
="yes"
1033 --disable-opengl) opengl
="no"
1035 --enable-opengl) opengl
="yes"
1037 --disable-rbd) rbd
="no"
1039 --enable-rbd) rbd
="yes"
1041 --disable-xfsctl) xfs
="no"
1043 --enable-xfsctl) xfs
="yes"
1045 --disable-smartcard) smartcard
="no"
1047 --enable-smartcard) smartcard
="yes"
1049 --disable-libusb) libusb
="no"
1051 --enable-libusb) libusb
="yes"
1053 --disable-usb-redir) usb_redir
="no"
1055 --enable-usb-redir) usb_redir
="yes"
1057 --disable-zlib-test) zlib
="no"
1059 --disable-lzo) lzo
="no"
1061 --enable-lzo) lzo
="yes"
1063 --disable-snappy) snappy
="no"
1065 --enable-snappy) snappy
="yes"
1067 --disable-bzip2) bzip2="no"
1069 --enable-bzip2) bzip2="yes"
1071 --enable-guest-agent) guest_agent
="yes"
1073 --disable-guest-agent) guest_agent
="no"
1075 --enable-guest-agent-msi) guest_agent_msi
="yes"
1077 --disable-guest-agent-msi) guest_agent_msi
="no"
1079 --with-vss-sdk) vss_win32_sdk
=""
1081 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1083 --without-vss-sdk) vss_win32_sdk
="no"
1085 --with-win-sdk) win_sdk
=""
1087 --with-win-sdk=*) win_sdk
="$optarg"
1089 --without-win-sdk) win_sdk
="no"
1091 --enable-tools) want_tools
="yes"
1093 --disable-tools) want_tools
="no"
1095 --enable-seccomp) seccomp
="yes"
1097 --disable-seccomp) seccomp
="no"
1099 --disable-glusterfs) glusterfs
="no"
1101 --enable-glusterfs) glusterfs
="yes"
1103 --disable-archipelago) archipelago
="no"
1105 --enable-archipelago) archipelago
="yes"
1107 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1108 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1110 --enable-vhdx|
--disable-vhdx)
1111 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1113 --enable-uuid|
--disable-uuid)
1114 echo "$0: $opt is obsolete, UUID support is always built" >&2
1116 --disable-gtk) gtk
="no"
1118 --enable-gtk) gtk
="yes"
1120 --tls-priority=*) tls_priority
="$optarg"
1122 --disable-gnutls) gnutls
="no"
1124 --enable-gnutls) gnutls
="yes"
1126 --disable-nettle) nettle
="no"
1128 --enable-nettle) nettle
="yes"
1130 --disable-gcrypt) gcrypt
="no"
1132 --enable-gcrypt) gcrypt
="yes"
1134 --enable-rdma) rdma
="yes"
1136 --disable-rdma) rdma
="no"
1138 --with-gtkabi=*) gtkabi
="$optarg"
1140 --disable-vte) vte
="no"
1142 --enable-vte) vte
="yes"
1144 --disable-virglrenderer) virglrenderer
="no"
1146 --enable-virglrenderer) virglrenderer
="yes"
1148 --disable-tpm) tpm
="no"
1150 --enable-tpm) tpm
="yes"
1152 --disable-libssh2) libssh2
="no"
1154 --enable-libssh2) libssh2
="yes"
1156 --disable-numa) numa
="no"
1158 --enable-numa) numa
="yes"
1160 --disable-tcmalloc) tcmalloc
="no"
1162 --enable-tcmalloc) tcmalloc
="yes"
1164 --disable-jemalloc) jemalloc
="no"
1166 --enable-jemalloc) jemalloc
="yes"
1168 --disable-replication) replication
="no"
1170 --enable-replication) replication
="yes"
1173 echo "ERROR: unknown option $opt"
1174 echo "Try '$0 --help' for more information"
1180 if ! has
$python; then
1181 error_exit
"Python not found. Use --python=/path/to/python"
1184 # Note that if the Python conditional here evaluates True we will exit
1185 # with status 1 which is a shell 'false' value.
1186 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1187 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1188 "Note that Python 3 or later is not yet supported." \
1189 "Use --python=/path/to/python to specify a supported Python."
1192 # Suppress writing compiled files
1198 LDFLAGS
="-m32 $LDFLAGS"
1202 LDFLAGS
="-m64 $LDFLAGS"
1205 LDFLAGS
="-m32 $LDFLAGS"
1206 CPU_CFLAGS
="-m32 -mcpu=ultrasparc"
1209 LDFLAGS
="-m64 $LDFLAGS"
1210 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1214 LDFLAGS
="-m31 $LDFLAGS"
1218 LDFLAGS
="-m64 $LDFLAGS"
1222 LDFLAGS
="-m32 $LDFLAGS"
1223 cc_i386
='$(CC) -m32'
1226 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1227 # If we truly care, we should simply detect this case at
1228 # runtime and generate the fallback to serial emulation.
1229 CPU_CFLAGS
="-m64 -mcx16"
1230 LDFLAGS
="-m64 $LDFLAGS"
1231 cc_i386
='$(CC) -m32'
1235 LDFLAGS
="-mx32 $LDFLAGS"
1236 cc_i386
='$(CC) -m32'
1238 # No special flags required for other host CPUs
1241 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1242 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1244 # For user-mode emulation the host arch has to be one we explicitly
1245 # support, even if we're using TCI.
1246 if [ "$ARCH" = "unknown" ]; then
1251 default_target_list
=""
1255 if [ "$softmmu" = "yes" ]; then
1256 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1258 if [ "$linux_user" = "yes" ]; then
1259 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1261 if [ "$bsd_user" = "yes" ]; then
1262 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1265 for config
in $mak_wilds; do
1266 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1269 if test x
"$show_help" = x
"yes" ; then
1272 Usage: configure [options]
1273 Options: [defaults in brackets after descriptions]
1276 --help print this message
1277 --prefix=PREFIX install in PREFIX [$prefix]
1278 --interp-prefix=PREFIX where to find shared libraries, etc.
1279 use %M for cpu name [$interp_prefix]
1280 --target-list=LIST set target list (default: build everything)
1281 $(echo Available targets: $default_target_list | \
1282 fold -s -w 53 | sed -e 's/^/ /')
1284 Advanced options (experts only):
1285 --source-path=PATH path of source code [$source_path]
1286 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1287 --cc=CC use C compiler CC [$cc]
1288 --iasl=IASL use ACPI compiler IASL [$iasl]
1289 --host-cc=CC use C compiler CC [$host_cc] for code run at
1291 --cxx=CXX use C++ compiler CXX [$cxx]
1292 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1293 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1294 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1295 --make=MAKE use specified make [$make]
1296 --install=INSTALL use specified install [$install]
1297 --python=PYTHON use specified python [$python]
1298 --smbd=SMBD use specified smbd [$smbd]
1299 --static enable static build [$static]
1300 --mandir=PATH install man pages in PATH
1301 --datadir=PATH install firmware in PATH$confsuffix
1302 --docdir=PATH install documentation in PATH$confsuffix
1303 --bindir=PATH install binaries in PATH
1304 --libdir=PATH install libraries in PATH
1305 --sysconfdir=PATH install config in PATH$confsuffix
1306 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1307 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1308 --enable-debug enable common debug build options
1309 --disable-strip disable stripping binaries
1310 --disable-werror disable compilation abort on warning
1311 --disable-stack-protector disable compiler-provided stack protection
1312 --audio-drv-list=LIST set audio drivers list:
1313 Available drivers: $audio_possible_drivers
1314 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1315 --block-drv-rw-whitelist=L
1316 set block driver read-write whitelist
1317 (affects only QEMU, not qemu-img)
1318 --block-drv-ro-whitelist=L
1319 set block driver read-only whitelist
1320 (affects only QEMU, not qemu-img)
1321 --enable-trace-backends=B Set trace backend
1322 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1323 --with-trace-file=NAME Full PATH,NAME of file to store traces
1325 --disable-slirp disable SLIRP userspace network connectivity
1326 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1327 --oss-lib path to OSS library
1328 --cpu=CPU Build for host CPU [$cpu]
1329 --with-coroutine=BACKEND coroutine backend. Supported options:
1330 gthread, ucontext, sigaltstack, windows
1331 --enable-gcov enable test coverage analysis with gcov
1332 --gcov=GCOV use specified gcov [$gcov_tool]
1333 --disable-blobs disable installing provided firmware blobs
1334 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1335 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1336 --tls-priority default TLS protocol/cipher priority string
1338 Optional features, enabled with --enable-FEATURE and
1339 disabled with --disable-FEATURE, default is enabled if available:
1341 system all system emulation targets
1342 user supported user emulation targets
1343 linux-user all linux usermode emulation targets
1344 bsd-user all BSD usermode emulation targets
1345 docs build documentation
1346 guest-agent build the QEMU Guest Agent
1347 guest-agent-msi build guest agent Windows MSI installation package
1348 pie Position Independent Executables
1349 modules modules support
1350 debug-tcg TCG debugging (default is disabled)
1351 debug-info debugging information
1352 sparse sparse checker
1354 gnutls GNUTLS cryptography support
1355 nettle nettle cryptography support
1356 gcrypt libgcrypt cryptography support
1358 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1360 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1361 vte vte support for the gtk UI
1364 vnc-sasl SASL encryption for VNC server
1365 vnc-jpeg JPEG lossy compression for VNC server
1366 vnc-png PNG compression for VNC server
1367 cocoa Cocoa UI (Mac OS X only)
1369 xen xen backend driver support
1371 brlapi BrlAPI (Braile)
1372 curl curl connectivity
1374 bluez bluez stack connectivity
1375 kvm KVM acceleration support
1376 colo COarse-grain LOck-stepping VM for Non-stop Service
1377 rdma RDMA-based migration support
1378 vde support for vde network
1379 netmap support for netmap network
1380 linux-aio Linux AIO support
1381 cap-ng libcap-ng support
1382 attr attr and xattr support
1383 vhost-net vhost-net acceleration support
1385 rbd rados block device (rbd)
1386 libiscsi iscsi support
1388 smartcard smartcard support (libcacard)
1389 libusb libusb (for usb passthrough)
1390 usb-redir usb network redirection support
1391 lzo support of lzo compression library
1392 snappy support of snappy compression library
1393 bzip2 support of bzip2 compression library
1394 (for reading bzip2-compressed dmg images)
1395 seccomp seccomp support
1396 coroutine-pool coroutine freelist (better performance)
1397 glusterfs GlusterFS backend
1398 archipelago Archipelago backend
1400 libssh2 ssh block device support
1401 numa libnuma support
1402 tcmalloc tcmalloc support
1403 jemalloc jemalloc support
1404 replication replication support
1406 NOTE: The object files are built at the place where configure is launched
1411 # Now we have handled --enable-tcg-interpreter and know we're not just
1412 # printing the help message, bail out if the host CPU isn't supported.
1413 if test "$ARCH" = "unknown"; then
1414 if test "$tcg_interpreter" = "yes" ; then
1415 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1417 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1421 # Consult white-list to determine whether to enable werror
1422 # by default. Only enable by default for git builds
1423 if test -z "$werror" ; then
1424 if test -d "$source_path/.git" -a \
1425 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1432 # check that the C compiler works.
1434 if compile_object
; then
1435 : C compiler works ok
1437 error_exit
"\"$cc\" either does not exist or does not work"
1439 if ! compile_prog
; then
1440 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1443 # Check that the C++ compiler exists and works with the C compiler
1446 int c_function(void);
1447 int main(void) { return c_function(); }
1454 int c_function(void);
1456 int c_function(void) { return 42; }
1461 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1462 # C++ compiler $cxx works ok with C compiler $cc
1465 echo "C++ compiler $cxx does not work with C compiler $cc"
1466 echo "Disabling C++ specific optional code"
1470 echo "No C++ compiler available; disabling C++ specific optional code"
1474 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1475 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1476 gcc_flags
="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1477 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1478 gcc_flags
="-Wno-initializer-overrides $gcc_flags"
1479 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1480 # Note that we do not add -Werror to gcc_flags here, because that would
1481 # enable it for all configure tests. If a configure test failed due
1482 # to -Werror this would just silently disable some features,
1483 # so it's too error prone.
1485 cc_has_warning_flag
() {
1488 # Use the positive sense of the flag when testing for -Wno-wombat
1489 # support (gcc will happily accept the -Wno- form of unknown
1491 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1492 compile_prog
"-Werror $optflag" ""
1495 for flag
in $gcc_flags; do
1496 if cc_has_warning_flag
$flag ; then
1497 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1501 if test "$stack_protector" != "no"; then
1503 int main(int argc, char *argv[])
1505 char arr[64], *p = arr, *c = argv[0];
1512 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1514 for flag
in $gcc_flags; do
1515 # We need to check both a compile and a link, since some compiler
1516 # setups fail only on a .c->.o compile and some only at link time
1517 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1518 compile_prog
"-Werror $flag" ""; then
1519 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1524 if test "$stack_protector" = yes; then
1525 if test $sp_on = 0; then
1526 error_exit
"Stack protector not supported"
1531 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1532 # large functions that use global variables. The bug is in all releases of
1533 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1534 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1536 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1537 int main(void) { return 0; }
1539 #error No bug in this compiler.
1542 if compile_prog
"-Werror -fno-gcse" "" ; then
1543 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1546 if test "$static" = "yes" ; then
1547 if test "$modules" = "yes" ; then
1548 error_exit
"static and modules are mutually incompatible"
1550 if test "$pie" = "yes" ; then
1551 error_exit
"static and pie are mutually incompatible"
1557 # Unconditional check for compiler __thread support
1559 static __thread int tls_var;
1560 int main(void) { return tls_var; }
1563 if ! compile_prog
"-Werror" "" ; then
1564 error_exit
"Your compiler does not support the __thread specifier for " \
1565 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1568 if test "$pie" = ""; then
1569 case "$cpu-$targetos" in
1570 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1578 if test "$pie" != "no" ; then
1582 # define THREAD __thread
1587 static THREAD int tls_var;
1589 int main(void) { return tls_var; }
1592 if compile_prog
"-fPIE -DPIE" "-pie"; then
1593 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1594 LDFLAGS
="-pie $LDFLAGS"
1596 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1597 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1600 if test "$pie" = "yes"; then
1601 error_exit
"PIE not available due to missing toolchain support"
1603 echo "Disabling PIE due to missing toolchain support"
1608 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1609 CFLAGS_NOPIE
="-fno-pie"
1610 LDFLAGS_NOPIE
="-nopie"
1614 ##########################################
1615 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1616 # use i686 as default anyway, but for those that don't, an explicit
1617 # specification is necessary
1619 if test "$cpu" = "i386"; then
1621 static int sfaa(int *ptr)
1623 return __sync_fetch_and_and(ptr, 0);
1629 val = __sync_val_compare_and_swap(&val, 0, 1);
1634 if ! compile_prog
"" "" ; then
1635 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1639 #########################################
1640 # Solaris specific configure tool chain decisions
1642 if test "$solaris" = "yes" ; then
1643 if has
$install; then
1646 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1647 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1648 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1650 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1651 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1652 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1653 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1658 if test -f /usr
/ccs
/bin
/ar ; then
1659 error_exit
"No path includes ar" \
1660 "Add /usr/ccs/bin to your path and rerun configure"
1662 error_exit
"No path includes ar"
1666 if test -z "${target_list+xxx}" ; then
1667 target_list
="$default_target_list"
1669 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1672 # Check that we recognised the target name; this allows a more
1673 # friendly error message than if we let it fall through.
1674 for target
in $target_list; do
1675 case " $default_target_list " in
1679 error_exit
"Unknown target name '$target'"
1684 # see if system emulation was really requested
1685 case " $target_list " in
1686 *"-softmmu "*) softmmu
=yes
1692 feature_not_found
() {
1696 error_exit
"User requested feature $feature" \
1697 "configure was not able to find it." \
1702 # big/little endian test
1704 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1705 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1706 extern int foo(short *, short *);
1707 int main(int argc, char *argv[]) {
1708 return foo(big_endian, little_endian);
1712 if compile_object
; then
1713 if grep -q BiGeNdIaN
$TMPO ; then
1715 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1718 echo big
/little
test failed
1721 echo big
/little
test failed
1724 ##########################################
1725 # cocoa implies not SDL or GTK
1726 # (the cocoa UI code currently assumes it is always the active UI
1727 # and doesn't interact well with other UI frontend code)
1728 if test "$cocoa" = "yes"; then
1729 if test "$sdl" = "yes"; then
1730 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1732 if test "$gtk" = "yes"; then
1733 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1739 # Some versions of Mac OS X incorrectly define SIZE_MAX
1743 int main(int argc, char *argv[]) {
1744 return printf("%zu", SIZE_MAX);
1747 have_broken_size_max
=no
1748 if ! compile_object
-Werror ; then
1749 have_broken_size_max
=yes
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 ##########################################
1767 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1769 if test "$mingw32" = "yes"; then
1770 # Some versions of MinGW / Mingw-w64 lack localtime_r
1771 # and gmtime_r entirely.
1773 # Some versions of Mingw-w64 define a macro for
1774 # localtime_r/gmtime_r.
1776 # Some versions of Mingw-w64 will define functions
1777 # for localtime_r/gmtime_r, but only if you have
1778 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1779 # though, unistd.h and pthread.h both define
1782 # So this #undef localtime_r and #include <unistd.h>
1783 # are not in fact redundant.
1788 int main(void) { localtime_r(NULL, NULL); return 0; }
1790 if compile_prog
"" "" ; then
1797 ##########################################
1800 if ! has
"$pkg_config_exe"; then
1801 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1804 ##########################################
1807 if test "$linux_user" = "yes"; then
1810 #include <linux/futex.h>
1812 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1818 if ! compile_object
; then
1819 feature_not_found
"nptl" "Install glibc and linux kernel headers."
1823 ##########################################
1824 # avx2 optimization requirement check
1827 #pragma GCC push_options
1828 #pragma GCC target("avx2")
1830 #include <immintrin.h>
1831 static int bar(void *a) {
1832 __m256i x = *(__m256i *)a;
1833 return _mm256_testz_si256(x, x);
1835 int main(int argc, char *argv[]) { return bar(argv[0]); }
1837 if compile_object
"" ; then
1841 #########################################
1844 if test "$zlib" != "no" ; then
1847 int main(void) { zlibVersion(); return 0; }
1849 if compile_prog
"" "-lz" ; then
1852 error_exit
"zlib check failed" \
1853 "Make sure to have the zlib libs and headers installed."
1858 ##########################################
1861 if test "$lzo" != "no" ; then
1863 #include <lzo/lzo1x.h>
1864 int main(void) { lzo_version(); return 0; }
1866 if compile_prog
"" "-llzo2" ; then
1867 libs_softmmu
="$libs_softmmu -llzo2"
1870 if test "$lzo" = "yes"; then
1871 feature_not_found
"liblzo2" "Install liblzo2 devel"
1877 ##########################################
1880 if test "$snappy" != "no" ; then
1882 #include <snappy-c.h>
1883 int main(void) { snappy_max_compressed_length(4096); return 0; }
1885 if compile_prog
"" "-lsnappy" ; then
1886 libs_softmmu
="$libs_softmmu -lsnappy"
1889 if test "$snappy" = "yes"; then
1890 feature_not_found
"libsnappy" "Install libsnappy devel"
1896 ##########################################
1899 if test "$bzip2" != "no" ; then
1902 int main(void) { BZ2_bzlibVersion(); return 0; }
1904 if compile_prog
"" "-lbz2" ; then
1907 if test "$bzip2" = "yes"; then
1908 feature_not_found
"libbzip2" "Install libbzip2 devel"
1914 ##########################################
1917 if test "$seccomp" != "no" ; then
1920 libseccomp_minver
="2.1.0"
1923 libseccomp_minver
="2.2.0"
1926 libseccomp_minver
="2.2.3"
1929 libseccomp_minver
="2.3.0"
1932 libseccomp_minver
=""
1936 if test "$libseccomp_minver" != "" &&
1937 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
1938 libs_softmmu
="$libs_softmmu $($pkg_config --libs libseccomp)"
1939 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
1942 if test "$seccomp" = "yes" ; then
1943 if test "$libseccomp_minver" != "" ; then
1944 feature_not_found
"libseccomp" \
1945 "Install libseccomp devel >= $libseccomp_minver"
1947 feature_not_found
"libseccomp" \
1948 "libseccomp is not supported for host cpu $cpu"
1954 ##########################################
1957 if test "$xen" != "no" ; then
1958 xen_libs
="-lxenstore -lxenctrl -lxenguest"
1959 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
1961 # First we test whether Xen headers and libraries are available.
1962 # If no, we are done and there is no Xen support.
1963 # If yes, more tests are run to detect the Xen version.
1967 #include <xenctrl.h>
1972 if ! compile_prog
"" "$xen_libs" ; then
1974 if test "$xen" = "yes" ; then
1975 feature_not_found
"xen" "Install xen devel"
1981 cat > $TMPC <<EOF &&
1983 * If we have stable libs the we don't want the libxc compat
1984 * layers, regardless of what CFLAGS we may have been given.
1986 * Also, check if xengnttab_grant_copy_segment_t is defined and
1987 * grant copy operation is implemented.
1989 #undef XC_WANT_COMPAT_EVTCHN_API
1990 #undef XC_WANT_COMPAT_GNTTAB_API
1991 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
1992 #include <xenctrl.h>
1993 #include <xenstore.h>
1994 #include <xenevtchn.h>
1995 #include <xengnttab.h>
1996 #include <xenforeignmemory.h>
1998 #include <xen/hvm/hvm_info_table.h>
1999 #if !defined(HVM_MAX_VCPUS)
2000 # error HVM_MAX_VCPUS not defined
2003 xc_interface *xc = NULL;
2004 xenforeignmemory_handle *xfmem;
2005 xenevtchn_handle *xe;
2006 xengnttab_handle *xg;
2007 xen_domain_handle_t handle;
2008 xengnttab_grant_copy_segment_t* seg = NULL;
2012 xc = xc_interface_open(0, 0, 0);
2013 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2014 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2015 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2016 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2017 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2019 xfmem = xenforeignmemory_open(0, 0);
2020 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2022 xe = xenevtchn_open(0, 0);
2025 xg = xengnttab_open(0, 0);
2026 xengnttab_grant_copy(xg, 0, seg);
2031 compile_prog
"" "$xen_libs $xen_stable_libs"
2033 xen_ctrl_version
=480
2036 cat > $TMPC <<EOF &&
2038 * If we have stable libs the we don't want the libxc compat
2039 * layers, regardless of what CFLAGS we may have been given.
2041 #undef XC_WANT_COMPAT_EVTCHN_API
2042 #undef XC_WANT_COMPAT_GNTTAB_API
2043 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2044 #include <xenctrl.h>
2045 #include <xenstore.h>
2046 #include <xenevtchn.h>
2047 #include <xengnttab.h>
2048 #include <xenforeignmemory.h>
2050 #include <xen/hvm/hvm_info_table.h>
2051 #if !defined(HVM_MAX_VCPUS)
2052 # error HVM_MAX_VCPUS not defined
2055 xc_interface *xc = NULL;
2056 xenforeignmemory_handle *xfmem;
2057 xenevtchn_handle *xe;
2058 xengnttab_handle *xg;
2059 xen_domain_handle_t handle;
2063 xc = xc_interface_open(0, 0, 0);
2064 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2065 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2066 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2067 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2068 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2070 xfmem = xenforeignmemory_open(0, 0);
2071 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2073 xe = xenevtchn_open(0, 0);
2076 xg = xengnttab_open(0, 0);
2077 xengnttab_map_grant_ref(xg, 0, 0, 0);
2082 compile_prog
"" "$xen_libs $xen_stable_libs"
2084 xen_ctrl_version
=471
2087 cat > $TMPC <<EOF &&
2088 #include <xenctrl.h>
2091 xc_interface *xc = NULL;
2092 xen_domain_handle_t handle;
2093 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2097 compile_prog
"" "$xen_libs"
2099 xen_ctrl_version
=470
2104 cat > $TMPC <<EOF &&
2105 #include <xenctrl.h>
2106 #include <xenstore.h>
2108 #include <xen/hvm/hvm_info_table.h>
2109 #if !defined(HVM_MAX_VCPUS)
2110 # error HVM_MAX_VCPUS not defined
2115 xc = xc_interface_open(0, 0, 0);
2116 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2117 xc_gnttab_open(NULL, 0);
2118 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2119 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2120 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2121 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2125 compile_prog
"" "$xen_libs"
2127 xen_ctrl_version
=460
2132 cat > $TMPC <<EOF &&
2133 #include <xenctrl.h>
2134 #include <xenstore.h>
2136 #include <xen/hvm/hvm_info_table.h>
2137 #if !defined(HVM_MAX_VCPUS)
2138 # error HVM_MAX_VCPUS not defined
2143 xc = xc_interface_open(0, 0, 0);
2144 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2145 xc_gnttab_open(NULL, 0);
2146 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2147 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2148 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2152 compile_prog
"" "$xen_libs"
2154 xen_ctrl_version
=450
2158 cat > $TMPC <<EOF &&
2159 #include <xenctrl.h>
2160 #include <xenstore.h>
2162 #include <xen/hvm/hvm_info_table.h>
2163 #if !defined(HVM_MAX_VCPUS)
2164 # error HVM_MAX_VCPUS not defined
2169 xc = xc_interface_open(0, 0, 0);
2170 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2171 xc_gnttab_open(NULL, 0);
2172 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2173 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2177 compile_prog
"" "$xen_libs"
2179 xen_ctrl_version
=420
2183 if test "$xen" = "yes" ; then
2184 feature_not_found
"xen (unsupported version)" \
2185 "Install a supported xen (xen 4.2 or newer)"
2190 if test "$xen" = yes; then
2191 if test $xen_ctrl_version -ge 471 ; then
2192 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2194 libs_softmmu
="$xen_libs $libs_softmmu"
2198 if test "$xen_pci_passthrough" != "no"; then
2199 if test "$xen" = "yes" && test "$linux" = "yes"; then
2200 xen_pci_passthrough
=yes
2202 if test "$xen_pci_passthrough" = "yes"; then
2203 error_exit
"User requested feature Xen PCI Passthrough" \
2204 " but this feature requires /sys from Linux"
2206 xen_pci_passthrough
=no
2210 if test "$xen_pv_domain_build" = "yes" &&
2211 test "$xen" != "yes"; then
2212 error_exit
"User requested Xen PV domain builder support" \
2213 "which requires Xen support."
2216 ##########################################
2218 if test "$sparse" != "no" ; then
2222 if test "$sparse" = "yes" ; then
2223 feature_not_found
"sparse" "Install sparse binary"
2229 ##########################################
2233 if $pkg_config --exists "x11"; then
2234 x11_cflags
=$
($pkg_config --cflags x11
)
2235 x11_libs
=$
($pkg_config --libs x11
)
2238 ##########################################
2241 if test "$gtkabi" = ""; then
2242 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2243 # Use 3.0 as a fallback if that is available.
2244 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2246 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2253 if test "$gtk" != "no"; then
2254 gtkpackage
="gtk+-$gtkabi"
2255 gtkx11package
="gtk+-x11-$gtkabi"
2256 if test "$gtkabi" = "3.0" ; then
2261 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2262 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2263 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2264 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2265 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2266 gtk_cflags
="$gtk_cflags $x11_cflags"
2267 gtk_libs
="$gtk_libs $x11_libs"
2269 libs_softmmu
="$gtk_libs $libs_softmmu"
2271 elif test "$gtk" = "yes"; then
2272 feature_not_found
"gtk" "Install gtk2 or gtk3 devel"
2279 ##########################################
2283 # Unfortunately some distros have bad pkg-config information for gnutls
2284 # such that it claims to exist but you get a compiler error if you try
2285 # to use the options returned by --libs. Specifically, Ubuntu for --static
2286 # builds doesn't work:
2287 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2289 # So sanity check the cflags/libs before assuming gnutls can be used.
2290 if ! $pkg_config --exists "gnutls"; then
2295 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2300 if test "$gnutls" != "no"; then
2301 if gnutls_works
; then
2302 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2303 gnutls_libs
=$
($pkg_config --libs gnutls
)
2304 libs_softmmu
="$gnutls_libs $libs_softmmu"
2305 libs_tools
="$gnutls_libs $libs_tools"
2306 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2309 # gnutls_rnd requires >= 2.11.0
2310 if $pkg_config --exists "gnutls >= 2.11.0"; then
2316 if $pkg_config --exists 'gnutls >= 3.0'; then
2319 elif $pkg_config --exists 'gnutls >= 2.12'; then
2320 case $
($pkg_config --libs --static gnutls
) in
2338 elif test "$gnutls" = "yes"; then
2339 feature_not_found
"gnutls" "Install gnutls devel"
2349 # If user didn't give a --disable/enable-gcrypt flag,
2350 # then mark as disabled if user requested nettle
2351 # explicitly, or if gnutls links to nettle
2352 if test -z "$gcrypt"
2354 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2360 # If user didn't give a --disable/enable-nettle flag,
2361 # then mark as disabled if user requested gcrypt
2362 # explicitly, or if gnutls links to gcrypt
2363 if test -z "$nettle"
2365 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2371 has_libgcrypt_config
() {
2372 if ! has
"libgcrypt-config"
2377 if test -n "$cross_prefix"
2379 host=$
(libgcrypt-config
--host)
2380 if test "$host-" != $cross_prefix
2389 if test "$gcrypt" != "no"; then
2390 if has_libgcrypt_config
; then
2391 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2392 gcrypt_libs
=$
(libgcrypt-config
--libs)
2393 # Debian has remove -lgpg-error from libgcrypt-config
2394 # as it "spreads unnecessary dependencies" which in
2395 # turn breaks static builds...
2396 if test "$static" = "yes"
2398 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2400 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2401 libs_tools
="$gcrypt_libs $libs_tools"
2402 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2404 if test -z "$nettle"; then
2411 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2413 NULL, 0, 0, 0, NULL);
2417 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2421 if test "$gcrypt" = "yes"; then
2422 feature_not_found
"gcrypt" "Install gcrypt devel"
2430 if test "$nettle" != "no"; then
2431 if $pkg_config --exists "nettle"; then
2432 nettle_cflags
=$
($pkg_config --cflags nettle
)
2433 nettle_libs
=$
($pkg_config --libs nettle
)
2434 nettle_version
=$
($pkg_config --modversion nettle
)
2435 libs_softmmu
="$nettle_libs $libs_softmmu"
2436 libs_tools
="$nettle_libs $libs_tools"
2437 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2442 #include <nettle/pbkdf2.h>
2444 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2448 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2452 if test "$nettle" = "yes"; then
2453 feature_not_found
"nettle" "Install nettle devel"
2460 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2462 error_exit
"Only one of gcrypt & nettle can be enabled"
2465 ##########################################
2466 # libtasn1 - only for the TLS creds/session test suite
2471 if $pkg_config --exists "libtasn1"; then
2472 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2473 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2479 ##########################################
2480 # getifaddrs (for tests/test-io-channel-socket )
2483 if ! check_include
"ifaddrs.h" ; then
2487 ##########################################
2490 if test "$vte" != "no"; then
2491 if test "$gtkabi" = "3.0"; then
2492 vteminversion
="0.32.0"
2493 if $pkg_config --exists "vte-2.91"; then
2494 vtepackage
="vte-2.91"
2496 vtepackage
="vte-2.90"
2500 vteminversion
="0.24.0"
2502 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2503 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2504 vte_libs
=$
($pkg_config --libs $vtepackage)
2505 vteversion
=$
($pkg_config --modversion $vtepackage)
2506 libs_softmmu
="$vte_libs $libs_softmmu"
2508 elif test "$vte" = "yes"; then
2509 if test "$gtkabi" = "3.0"; then
2510 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2512 feature_not_found
"vte" "Install libvte devel"
2519 ##########################################
2522 # Look for sdl configuration program (pkg-config or sdl-config). Try
2523 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2525 if test "$sdlabi" = ""; then
2526 if $pkg_config --exists "sdl"; then
2528 elif $pkg_config --exists "sdl2"; then
2535 if test $sdlabi = "2.0"; then
2536 sdl_config
=$sdl2_config
2538 sdlconfigname
=sdl2_config
2539 elif test $sdlabi = "1.2"; then
2541 sdlconfigname
=sdl_config
2543 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2546 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2547 sdl_config
=$sdlconfigname
2550 if $pkg_config $sdlname --exists; then
2551 sdlconfig
="$pkg_config $sdlname"
2552 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2553 elif has
${sdl_config}; then
2554 sdlconfig
="$sdl_config"
2555 sdlversion
=$
($sdlconfig --version)
2557 if test "$sdl" = "yes" ; then
2558 feature_not_found
"sdl" "Install SDL devel"
2562 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2563 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2567 if test "$sdl" != "no" ; then
2570 #undef main /* We don't want SDL to override our main() */
2571 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2573 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2574 if test "$static" = "yes" ; then
2575 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2577 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2579 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2580 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2586 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2587 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2588 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2589 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2590 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2592 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2598 else # sdl not found
2599 if test "$sdl" = "yes" ; then
2600 feature_not_found
"sdl" "Install SDL devel"
2603 fi # sdl compile test
2606 if test "$sdl" = "yes" ; then
2609 #if defined(SDL_VIDEO_DRIVER_X11)
2610 #include <X11/XKBlib.h>
2612 #error No x11 support
2614 int main(void) { return 0; }
2616 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2617 sdl_cflags
="$sdl_cflags $x11_cflags"
2618 sdl_libs
="$sdl_libs $x11_libs"
2620 libs_softmmu
="$sdl_libs $libs_softmmu"
2623 ##########################################
2624 # RDMA needs OpenFabrics libraries
2625 if test "$rdma" != "no" ; then
2627 #include <rdma/rdma_cma.h>
2628 int main(void) { return 0; }
2630 rdma_libs
="-lrdmacm -libverbs"
2631 if compile_prog
"" "$rdma_libs" ; then
2633 libs_softmmu
="$libs_softmmu $rdma_libs"
2635 if test "$rdma" = "yes" ; then
2637 " OpenFabrics librdmacm/libibverbs not present." \
2639 " (1) Fast: Install infiniband packages from your distro." \
2640 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2641 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2648 ##########################################
2649 # VNC SASL detection
2650 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2652 #include <sasl/sasl.h>
2654 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2656 # Assuming Cyrus-SASL installed in /usr prefix
2658 vnc_sasl_libs
="-lsasl2"
2659 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2661 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2662 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2664 if test "$vnc_sasl" = "yes" ; then
2665 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2671 ##########################################
2672 # VNC JPEG detection
2673 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2676 #include <jpeglib.h>
2677 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2680 vnc_jpeg_libs
="-ljpeg"
2681 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2683 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2684 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2686 if test "$vnc_jpeg" = "yes" ; then
2687 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2693 ##########################################
2695 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2697 //#include <stdio.h>
2701 png_structp png_ptr;
2702 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2703 return png_ptr != 0;
2706 if $pkg_config libpng
--exists; then
2707 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2708 vnc_png_libs
=$
($pkg_config libpng
--libs)
2711 vnc_png_libs
="-lpng"
2713 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2715 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2716 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2718 if test "$vnc_png" = "yes" ; then
2719 feature_not_found
"vnc-png" "Install libpng devel"
2725 ##########################################
2726 # fnmatch() probe, used for ACL routines
2729 #include <fnmatch.h>
2732 fnmatch("foo", "foo", 0);
2736 if compile_prog
"" "" ; then
2740 ##########################################
2741 # xfsctl() probe, used for raw-posix
2742 if test "$xfs" != "no" ; then
2744 #include <stddef.h> /* NULL */
2745 #include <xfs/xfs.h>
2748 xfsctl(NULL, 0, 0, NULL);
2752 if compile_prog
"" "" ; then
2755 if test "$xfs" = "yes" ; then
2756 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
2762 ##########################################
2763 # vde libraries probe
2764 if test "$vde" != "no" ; then
2765 vde_libs
="-lvdeplug"
2767 #include <libvdeplug.h>
2770 struct vde_open_args a = {0, 0, 0};
2776 if compile_prog
"" "$vde_libs" ; then
2778 libs_softmmu
="$vde_libs $libs_softmmu"
2779 libs_tools
="$vde_libs $libs_tools"
2781 if test "$vde" = "yes" ; then
2782 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2788 ##########################################
2789 # netmap support probe
2790 # Apart from looking for netmap headers, we make sure that the host API version
2791 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2792 # a minor/major version number. Minor new features will be marked with values up
2793 # to 15, and if something happens that requires a change to the backend we will
2794 # move above 15, submit the backend fixes and modify this two bounds.
2795 if test "$netmap" != "no" ; then
2797 #include <inttypes.h>
2799 #include <net/netmap.h>
2800 #include <net/netmap_user.h>
2801 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2804 int main(void) { return 0; }
2806 if compile_prog
"" "" ; then
2809 if test "$netmap" = "yes" ; then
2810 feature_not_found
"netmap"
2816 ##########################################
2817 # libcap-ng library probe
2818 if test "$cap_ng" != "no" ; then
2824 capng_capability_to_name(CAPNG_EFFECTIVE);
2828 if compile_prog
"" "$cap_libs" ; then
2830 libs_tools
="$cap_libs $libs_tools"
2832 if test "$cap_ng" = "yes" ; then
2833 feature_not_found
"cap_ng" "Install libcap-ng devel"
2839 ##########################################
2840 # Sound support libraries probe
2851 int main(void) { $exp }
2853 if compile_prog
"$cfl" "$lib" ; then
2856 error_exit
"$drv check failed" \
2857 "Make sure to have the $drv libs and headers installed."
2861 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
2862 for drv
in $audio_drv_list; do
2865 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
2866 "return snd_pcm_close((snd_pcm_t *)0);"
2867 libs_softmmu
="-lasound $libs_softmmu"
2871 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
2872 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
2873 libs_softmmu
="-lpulse $libs_softmmu"
2878 libs_softmmu
="-framework CoreAudio $libs_softmmu"
2882 libs_softmmu
="-lole32 -ldxguid $libs_softmmu"
2887 libs_softmmu
="$oss_lib $libs_softmmu"
2891 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2895 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
2896 error_exit
"Unknown driver '$drv' selected" \
2897 "Possible drivers are: $audio_possible_drivers"
2903 ##########################################
2906 if test "$brlapi" != "no" ; then
2907 brlapi_libs
="-lbrlapi"
2911 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2913 if compile_prog
"" "$brlapi_libs" ; then
2915 libs_softmmu
="$brlapi_libs $libs_softmmu"
2917 if test "$brlapi" = "yes" ; then
2918 feature_not_found
"brlapi" "Install brlapi devel"
2924 ##########################################
2926 if test "$curses" != "no" ; then
2927 if test "$mingw32" = "yes" ; then
2928 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
2929 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
2931 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
2932 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
2940 const char *s = curses_version();
2942 setlocale(LC_ALL, "");
2944 addwstr(L"wide chars\n");
2946 add_wch(WACS_DEGREE);
2951 for curses_inc
in $curses_inc_list; do
2953 for curses_lib
in $curses_lib_list; do
2955 if compile_prog
"$curses_inc" "$curses_lib" ; then
2957 QEMU_CFLAGS
="$curses_inc $QEMU_CFLAGS"
2958 libs_softmmu
="$curses_lib $libs_softmmu"
2962 if test "$curses_found" = yes ; then
2967 if test "$curses_found" = "yes" ; then
2970 if test "$curses" = "yes" ; then
2971 feature_not_found
"curses" "Install ncurses devel"
2977 ##########################################
2979 if test "$curl" != "no" ; then
2980 if $pkg_config libcurl
--exists; then
2981 curlconfig
="$pkg_config libcurl"
2983 curlconfig
=curl-config
2986 #include <curl/curl.h>
2987 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2989 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
2990 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
2991 if compile_prog
"$curl_cflags" "$curl_libs" ; then
2994 if test "$curl" = "yes" ; then
2995 feature_not_found
"curl" "Install libcurl devel"
3001 ##########################################
3002 # bluez support probe
3003 if test "$bluez" != "no" ; then
3005 #include <bluetooth/bluetooth.h>
3006 int main(void) { return bt_error(0); }
3008 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3009 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3010 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3012 libs_softmmu
="$bluez_libs $libs_softmmu"
3014 if test "$bluez" = "yes" ; then
3015 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3021 ##########################################
3022 # glib support probe
3025 glib_modules
=gthread-2.0
3026 if test "$modules" = yes; then
3027 glib_modules
="$glib_modules gmodule-2.0"
3030 for i
in $glib_modules; do
3031 if $pkg_config --atleast-version=$glib_req_ver $i; then
3032 glib_cflags
=$
($pkg_config --cflags $i)
3033 glib_libs
=$
($pkg_config --libs $i)
3034 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3035 LIBS
="$glib_libs $LIBS"
3036 libs_qga
="$glib_libs $libs_qga"
3038 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3042 # Sanity check that the current size_t matches the
3043 # size that glib thinks it should be. This catches
3044 # problems on multi-arch where people try to build
3045 # 32-bit QEMU while pointing at 64-bit glib headers
3050 #define QEMU_BUILD_BUG_ON(x) \
3051 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3054 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3059 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3060 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3061 "You probably need to set PKG_CONFIG_LIBDIR"\
3062 "to point to the right pkg-config files for your"\
3066 # g_test_trap_subprocess added in 2.38. Used by some tests.
3068 if test "$mingw32" = "yes" ||
! $pkg_config --atleast-version=2.38 glib-2.0
; then
3072 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3075 int main(void) { return 0; }
3077 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3078 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3079 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3080 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3084 ##########################################
3085 # SHA command probe for modules
3086 if test "$modules" = yes; then
3087 shacmd_probe
="sha1sum sha1 shasum"
3088 for c
in $shacmd_probe; do
3094 if test "$shacmd" = ""; then
3095 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3099 ##########################################
3100 # pixman support probe
3102 if test "$pixman" = ""; then
3103 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3105 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3111 if test "$pixman" = "none"; then
3112 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3113 error_exit
"pixman disabled but system emulation or tools build" \
3114 "enabled. You can turn off pixman only if you also" \
3115 "disable all system emulation targets and the tools" \
3116 "build with '--disable-tools --disable-system'."
3120 elif test "$pixman" = "system"; then
3121 # pixman version has been checked above
3122 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3123 pixman_libs
=$
($pkg_config --libs pixman-1
)
3125 if test ! -d ${source_path}/pixman
/pixman
; then
3126 error_exit
"pixman >= 0.21.8 not present. Your options:" \
3127 " (1) Preferred: Install the pixman devel package (any recent" \
3128 " distro should have packages as Xorg needs pixman too)." \
3129 " (2) Fetch the pixman submodule, using:" \
3130 " git submodule update --init pixman"
3132 mkdir
-p pixman
/pixman
3133 pixman_cflags
="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3134 pixman_libs
="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3137 ##########################################
3140 if test "$cap" != "no" ; then
3143 #include <sys/capability.h>
3144 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3146 if compile_prog
"" "-lcap" ; then
3153 ##########################################
3155 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3159 #include <pthread.h>
3160 static void *f(void *p) { return NULL; }
3163 pthread_create(&thread, 0, f, 0);
3167 if compile_prog
"" "" ; then
3170 for pthread_lib
in $PTHREADLIBS_LIST; do
3171 if compile_prog
"" "$pthread_lib" ; then
3174 for lib_entry
in $LIBS; do
3175 if test "$lib_entry" = "$pthread_lib"; then
3180 if test "$found" = "no"; then
3181 LIBS
="$pthread_lib $LIBS"
3183 PTHREAD_LIB
="$pthread_lib"
3189 if test "$mingw32" != yes -a "$pthread" = no
; then
3190 error_exit
"pthread check failed" \
3191 "Make sure to have the pthread libs and headers installed."
3194 # check for pthread_setname_np
3195 pthread_setname_np
=no
3197 #include <pthread.h>
3199 static void *f(void *p) { return NULL; }
3203 pthread_create(&thread, 0, f, 0);
3204 pthread_setname_np(thread, "QEMU");
3208 if compile_prog
"" "$pthread_lib" ; then
3209 pthread_setname_np
=yes
3212 ##########################################
3214 if test "$rbd" != "no" ; then
3217 #include <rbd/librbd.h>
3220 rados_create(&cluster, NULL);
3224 rbd_libs
="-lrbd -lrados"
3225 if compile_prog
"" "$rbd_libs" ; then
3228 if test "$rbd" = "yes" ; then
3229 feature_not_found
"rados block device" "Install librbd/ceph devel"
3235 ##########################################
3237 min_libssh2_version
=1.2.8
3238 if test "$libssh2" != "no" ; then
3239 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3240 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3241 libssh2_libs
=$
($pkg_config libssh2
--libs)
3244 if test "$libssh2" = "yes" ; then
3245 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3251 ##########################################
3252 # libssh2_sftp_fsync probe
3254 if test "$libssh2" = "yes"; then
3257 #include <libssh2.h>
3258 #include <libssh2_sftp.h>
3260 LIBSSH2_SESSION *session;
3262 LIBSSH2_SFTP_HANDLE *sftp_handle;
3263 session = libssh2_session_init ();
3264 sftp = libssh2_sftp_init (session);
3265 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3266 libssh2_sftp_fsync (sftp_handle);
3270 # libssh2_cflags/libssh2_libs defined in previous test.
3271 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3272 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3276 ##########################################
3279 if test "$linux_aio" != "no" ; then
3282 #include <sys/eventfd.h>
3284 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3286 if compile_prog
"" "-laio" ; then
3289 if test "$linux_aio" = "yes" ; then
3290 feature_not_found
"linux AIO" "Install libaio devel"
3296 ##########################################
3297 # TPM passthrough is only on x86 Linux
3299 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3300 tpm_passthrough
=$tpm
3305 ##########################################
3308 if test "$attr" != "no" ; then
3311 #include <sys/types.h>
3312 #ifdef CONFIG_LIBATTR
3313 #include <attr/xattr.h>
3315 #include <sys/xattr.h>
3317 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3319 if compile_prog
"" "" ; then
3321 # Older distros have <attr/xattr.h>, and need -lattr:
3322 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3327 if test "$attr" = "yes" ; then
3328 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3334 ##########################################
3337 #include <sys/types.h>
3338 #include <sys/uio.h>
3340 int main(void) { return sizeof(struct iovec); }
3343 if compile_prog
"" "" ; then
3347 ##########################################
3350 #include <sys/types.h>
3351 #include <sys/uio.h>
3353 int main(void) { return preadv(0, 0, 0, 0); }
3356 if compile_prog
"" "" ; then
3360 ##########################################
3362 # fdt support is mandatory for at least some target architectures,
3363 # so insist on it if we're building those system emulators.
3365 for target
in $target_list; do
3367 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu)
3373 if test "$fdt_required" = "yes"; then
3374 if test "$fdt" = "no"; then
3375 error_exit
"fdt disabled but some requested targets require it." \
3376 "You can turn off fdt only if you also disable all the system emulation" \
3377 "targets which need it (by specifying a cut down --target-list)."
3382 if test "$fdt" != "no" ; then
3384 # explicitly check for libfdt_env.h as it is missing in some stable installs
3385 # and test for required functions to make sure we are on a version >= 1.4.0
3388 #include <libfdt_env.h>
3389 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3391 if compile_prog
"" "$fdt_libs" ; then
3392 # system DTC is good - use it
3394 elif test -d ${source_path}/dtc
/libfdt
; then
3395 # have submodule DTC - use it
3399 if [ "$pwd_is_source_path" != "y" ] ; then
3400 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3401 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3403 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3404 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3405 elif test "$fdt" = "yes" ; then
3406 # have neither and want - prompt for system/submodule install
3407 error_exit
"DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3408 " (1) Preferred: Install the DTC (libfdt) devel package" \
3409 " (2) Fetch the DTC submodule, using:" \
3410 " git submodule update --init dtc"
3412 # don't have and don't want
3418 libs_softmmu
="$libs_softmmu $fdt_libs"
3420 ##########################################
3421 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3423 if test "$opengl" != "no" ; then
3424 opengl_pkgs
="epoxy libdrm gbm"
3425 if $pkg_config $opengl_pkgs x11
; then
3426 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3427 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3429 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3433 if test "$opengl" = "yes" ; then
3434 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3442 if test "$opengl" = "yes"; then
3444 #include <epoxy/egl.h>
3445 #ifndef EGL_MESA_image_dma_buf_export
3446 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3448 int main(void) { return 0; }
3450 if compile_prog
"" "" ; then
3455 ##########################################
3457 if test "$archipelago" != "no" ; then
3460 #include <xseg/xseg.h>
3461 #include <xseg/protocol.h>
3467 archipelago_libs
=-lxseg
3468 if compile_prog
"" "$archipelago_libs"; then
3470 libs_tools
="$archipelago_libs $libs_tools"
3471 libs_softmmu
="$archipelago_libs $libs_softmmu"
3473 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3474 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3475 echo "license and therefore prevent redistribution."
3477 echo "To disable Archipelago, use --disable-archipelago"
3479 if test "$archipelago" = "yes" ; then
3480 feature_not_found
"Archipelago backend support" "Install libxseg devel"
3487 ##########################################
3489 if test "$glusterfs" != "no" ; then
3490 if $pkg_config --atleast-version=3 glusterfs-api
; then
3492 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3493 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3494 if $pkg_config --atleast-version=4 glusterfs-api
; then
3495 glusterfs_xlator_opt
="yes"
3497 if $pkg_config --atleast-version=5 glusterfs-api
; then
3498 glusterfs_discard
="yes"
3500 if $pkg_config --atleast-version=6 glusterfs-api
; then
3501 glusterfs_zerofill
="yes"
3504 if test "$glusterfs" = "yes" ; then
3505 feature_not_found
"GlusterFS backend support" \
3506 "Install glusterfs-api devel >= 3"
3512 # Check for inotify functions when we are building linux-user
3513 # emulator. This is done because older glibc versions don't
3514 # have syscall stubs for these implemented. In that case we
3515 # don't provide them even if kernel supports them.
3519 #include <sys/inotify.h>
3524 /* try to start inotify */
3525 return inotify_init();
3528 if compile_prog
"" "" ; then
3534 #include <sys/inotify.h>
3539 /* try to start inotify */
3540 return inotify_init1(0);
3543 if compile_prog
"" "" ; then
3547 # check if utimensat and futimens are supported
3550 #define _ATFILE_SOURCE
3553 #include <sys/stat.h>
3557 utimensat(AT_FDCWD, "foo", NULL, 0);
3562 if compile_prog
"" "" ; then
3566 # check if pipe2 is there
3575 return pipe2(pipefd, O_CLOEXEC);
3578 if compile_prog
"" "" ; then
3582 # check if accept4 is there
3585 #include <sys/socket.h>
3590 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3594 if compile_prog
"" "" ; then
3598 # check if tee/splice is there. vmsplice was added same time.
3608 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3609 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3613 if compile_prog
"" "" ; then
3617 ##########################################
3620 if test "$numa" != "no" ; then
3623 int main(void) { return numa_available(); }
3626 if compile_prog
"" "-lnuma" ; then
3628 libs_softmmu
="-lnuma $libs_softmmu"
3630 if test "$numa" = "yes" ; then
3631 feature_not_found
"numa" "install numactl devel"
3637 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3638 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3642 ##########################################
3645 if test "$tcmalloc" = "yes" ; then
3648 int main(void) { malloc(1); return 0; }
3651 if compile_prog
"" "-ltcmalloc" ; then
3652 LIBS
="-ltcmalloc $LIBS"
3654 feature_not_found
"tcmalloc" "install gperftools devel"
3658 ##########################################
3661 if test "$jemalloc" = "yes" ; then
3664 int main(void) { malloc(1); return 0; }
3667 if compile_prog
"" "-ljemalloc" ; then
3668 LIBS
="-ljemalloc $LIBS"
3670 feature_not_found
"jemalloc" "install jemalloc devel"
3674 ##########################################
3679 #include <sys/syscall.h>
3681 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3684 if compile_prog
"" "" ; then
3688 # check if eventfd is supported
3691 #include <sys/eventfd.h>
3695 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3698 if compile_prog
"" "" ; then
3702 # check if memfd is supported
3705 #include <sys/memfd.h>
3709 return memfd_create("foo", MFD_ALLOW_SEALING);
3712 if compile_prog
"" "" ; then
3718 # check for fallocate
3725 fallocate(0, 0, 0, 0);
3729 if compile_prog
"" "" ; then
3733 # check for fallocate hole punching
3734 fallocate_punch_hole
=no
3737 #include <linux/falloc.h>
3741 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3745 if compile_prog
"" "" ; then
3746 fallocate_punch_hole
=yes
3749 # check that fallocate supports range zeroing inside the file
3750 fallocate_zero_range
=no
3753 #include <linux/falloc.h>
3757 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3761 if compile_prog
"" "" ; then
3762 fallocate_zero_range
=yes
3765 # check for posix_fallocate
3772 posix_fallocate(0, 0, 0);
3776 if compile_prog
"" "" ; then
3780 # check for sync_file_range
3787 sync_file_range(0, 0, 0, 0);
3791 if compile_prog
"" "" ; then
3795 # check for linux/fiemap.h and FS_IOC_FIEMAP
3798 #include <sys/ioctl.h>
3799 #include <linux/fs.h>
3800 #include <linux/fiemap.h>
3804 ioctl(0, FS_IOC_FIEMAP, 0);
3808 if compile_prog
"" "" ; then
3823 if compile_prog
"" "" ; then
3827 # check for ppoll support
3834 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3835 ppoll(&pfd, 1, 0, 0);
3839 if compile_prog
"" "" ; then
3843 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3844 prctl_pr_set_timerslack
=no
3846 #include <sys/prctl.h>
3850 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3854 if compile_prog
"" "" ; then
3855 prctl_pr_set_timerslack
=yes
3858 # check for epoll support
3861 #include <sys/epoll.h>
3869 if compile_prog
"" "" ; then
3873 # epoll_create1 is a later addition
3874 # so we must check separately for its presence
3877 #include <sys/epoll.h>
3881 /* Note that we use epoll_create1 as a value, not as
3882 * a function being called. This is necessary so that on
3883 * old SPARC glibc versions where the function was present in
3884 * the library but not declared in the header file we will
3885 * fail the configure check. (Otherwise we will get a compiler
3886 * warning but not an error, and will proceed to fail the
3887 * qemu compile where we compile with -Werror.)
3889 return (int)(uintptr_t)&epoll_create1;
3892 if compile_prog
"" "" ; then
3896 # check for sendfile support
3899 #include <sys/sendfile.h>
3903 return sendfile(0, 0, 0, 0);
3906 if compile_prog
"" "" ; then
3910 # check for timerfd support (glibc 2.8 and newer)
3913 #include <sys/timerfd.h>
3917 return(timerfd_create(CLOCK_REALTIME, 0));
3920 if compile_prog
"" "" ; then
3924 # check for setns and unshare support
3937 if compile_prog
"" "" ; then
3941 # clock_adjtime probe
3948 return clock_adjtime(0, 0);
3952 if compile_prog
"" "" ; then
3967 if compile_prog
"" "" ; then
3971 # Check if tools are available to build documentation.
3972 if test "$docs" != "no" ; then
3973 if has makeinfo
&& has pod2man
; then
3976 if test "$docs" = "yes" ; then
3977 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
3983 # Search for bswap_32 function
3986 #include <byteswap.h>
3987 int main(void) { return bswap_32(0); }
3989 if compile_prog
"" "" ; then
3993 # Search for bswap32 function
3996 #include <sys/endian.h>
3997 #include <sys/types.h>
3998 #include <machine/bswap.h>
3999 int main(void) { return bswap32(0); }
4001 if compile_prog
"" "" ; then
4005 ##########################################
4006 # Do we have libiscsi >= 1.9.0
4007 if test "$libiscsi" != "no" ; then
4008 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4010 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4011 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4013 if test "$libiscsi" = "yes" ; then
4014 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4020 ##########################################
4024 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4026 if compile_prog
"" "" ; then
4028 elif compile_prog
"" "-lm" ; then
4030 libs_qga
="-lm $libs_qga"
4032 error_exit
"libm check failed"
4035 ##########################################
4037 # uClibc provides 2 versions of clock_gettime(), one with realtime
4038 # support and one without. This means that the clock_gettime() don't
4039 # need -lrt. We still need it for timer_create() so we check for this
4040 # function in addition.
4045 timer_create(CLOCK_REALTIME, NULL, NULL);
4046 return clock_gettime(CLOCK_REALTIME, NULL);
4050 if compile_prog
"" "" ; then
4052 # we need pthread for static linking. use previous pthread test result
4053 elif compile_prog
"" "$pthread_lib -lrt" ; then
4055 libs_qga
="$libs_qga -lrt"
4058 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4059 "$aix" != "yes" -a "$haiku" != "yes" ; then
4060 libs_softmmu
="-lutil $libs_softmmu"
4063 ##########################################
4065 if test "$spice" != "no" ; then
4068 int main(void) { spice_server_new(); return 0; }
4070 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4071 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4072 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4073 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4074 compile_prog
"$spice_cflags" "$spice_libs" ; then
4076 libs_softmmu
="$libs_softmmu $spice_libs"
4077 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4078 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4079 spice_server_version
=$
($pkg_config --modversion spice-server
)
4081 if test "$spice" = "yes" ; then
4082 feature_not_found
"spice" \
4083 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4089 # check for smartcard support
4091 if test "$smartcard" != "no"; then
4092 if $pkg_config libcacard
; then
4093 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4094 libcacard_libs
=$
($pkg_config --libs libcacard
)
4095 QEMU_CFLAGS
="$QEMU_CFLAGS $libcacard_cflags"
4096 libs_softmmu
="$libs_softmmu $libcacard_libs"
4099 if test "$smartcard" = "yes"; then
4100 feature_not_found
"smartcard" "Install libcacard devel"
4107 if test "$libusb" != "no" ; then
4108 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4110 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4111 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4112 QEMU_CFLAGS
="$QEMU_CFLAGS $libusb_cflags"
4113 libs_softmmu
="$libs_softmmu $libusb_libs"
4115 if test "$libusb" = "yes"; then
4116 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4122 # check for usbredirparser for usb network redirection support
4123 if test "$usb_redir" != "no" ; then
4124 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4126 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4127 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4128 QEMU_CFLAGS
="$QEMU_CFLAGS $usb_redir_cflags"
4129 libs_softmmu
="$libs_softmmu $usb_redir_libs"
4131 if test "$usb_redir" = "yes"; then
4132 feature_not_found
"usb-redir" "Install usbredir devel"
4138 ##########################################
4139 # check if we have VSS SDK headers for win
4141 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4142 case "$vss_win32_sdk" in
4143 "") vss_win32_include
="-isystem $source_path" ;;
4144 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4145 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4146 vss_win32_include
="-isystem $source_path/.sdk/vss"
4147 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4149 *) vss_win32_include
="-isystem $vss_win32_sdk"
4152 #define __MIDL_user_allocate_free_DEFINED__
4153 #include <inc/win2003/vss.h>
4154 int main(void) { return VSS_CTX_BACKUP; }
4156 if compile_prog
"$vss_win32_include" "" ; then
4157 guest_agent_with_vss
="yes"
4158 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4159 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4160 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4162 if test "$vss_win32_sdk" != "" ; then
4163 echo "ERROR: Please download and install Microsoft VSS SDK:"
4164 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4165 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4166 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4167 echo "ERROR: The headers are extracted in the directory \`inc'."
4168 feature_not_found
"VSS support"
4170 guest_agent_with_vss
="no"
4174 ##########################################
4175 # lookup Windows platform SDK (if not specified)
4176 # The SDK is needed only to build .tlb (type library) file of guest agent
4177 # VSS provider from the source. It is usually unnecessary because the
4178 # pre-compiled .tlb file is included.
4180 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4181 if test -z "$win_sdk"; then
4182 programfiles
="$PROGRAMFILES"
4183 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4184 if test -n "$programfiles"; then
4185 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4187 feature_not_found
"Windows SDK"
4189 elif test "$win_sdk" = "no"; then
4194 ##########################################
4195 # check if mingw environment provides a recent ntddscsi.h
4196 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4198 #include <windows.h>
4199 #include <ntddscsi.h>
4201 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4202 #error Missing required ioctl definitions
4204 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4208 if compile_prog
"" "" ; then
4209 guest_agent_ntddscsi
=yes
4210 libs_qga
="-lsetupapi $libs_qga"
4214 ##########################################
4215 # virgl renderer probe
4217 if test "$virglrenderer" != "no" ; then
4219 #include <virglrenderer.h>
4220 int main(void) { virgl_renderer_poll(); return 0; }
4222 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4223 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4224 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4225 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4228 if test "$virglrenderer" = "yes" ; then
4229 feature_not_found
"virglrenderer"
4235 ##########################################
4236 # check if we have fdatasync
4242 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4243 return fdatasync(0);
4245 #error Not supported
4249 if compile_prog
"" "" ; then
4253 ##########################################
4254 # check if we have madvise
4258 #include <sys/types.h>
4259 #include <sys/mman.h>
4261 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4263 if compile_prog
"" "" ; then
4267 ##########################################
4268 # check if we have posix_madvise
4272 #include <sys/mman.h>
4274 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4276 if compile_prog
"" "" ; then
4280 ##########################################
4281 # check if we have posix_syslog
4286 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4288 if compile_prog
"" "" ; then
4292 ##########################################
4293 # check if trace backend exists
4295 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4296 if test "$?" -ne 0 ; then
4297 error_exit
"invalid trace backends" \
4298 "Please choose supported trace backends."
4301 ##########################################
4302 # For 'ust' backend, test if ust headers are present
4303 if have_backend
"ust"; then
4305 #include <lttng/tracepoint.h>
4306 int main(void) { return 0; }
4308 if compile_prog
"" "" ; then
4309 if $pkg_config lttng-ust
--exists; then
4310 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4312 lttng_ust_libs
="-llttng-ust"
4314 if $pkg_config liburcu-bp
--exists; then
4315 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4317 urcu_bp_libs
="-lurcu-bp"
4320 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4321 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4323 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4327 ##########################################
4328 # For 'dtrace' backend, test if 'dtrace' command is present
4329 if have_backend
"dtrace"; then
4330 if ! has
'dtrace' ; then
4331 error_exit
"dtrace command is not found in PATH $PATH"
4333 trace_backend_stap
="no"
4334 if has
'stap' ; then
4335 trace_backend_stap
="yes"
4339 ##########################################
4340 # check and set a backend for coroutine
4342 # We prefer ucontext, but it's not always possible. The fallback
4343 # is sigcontext. gthread is not selectable except explicitly, because
4344 # it is not functional enough to run QEMU proper. (It is occasionally
4345 # useful for debugging purposes.) On Windows the only valid backend
4346 # is the Windows-specific one.
4349 if test "$darwin" != "yes"; then
4351 #include <ucontext.h>
4352 #ifdef __stub_makecontext
4353 #error Ignoring glibc stub makecontext which will always fail
4355 int main(void) { makecontext(0, 0, 0); return 0; }
4357 if compile_prog
"" "" ; then
4362 if test "$coroutine" = ""; then
4363 if test "$mingw32" = "yes"; then
4365 elif test "$ucontext_works" = "yes"; then
4368 coroutine
=sigaltstack
4373 if test "$mingw32" != "yes"; then
4374 error_exit
"'windows' coroutine backend only valid for Windows"
4376 # Unfortunately the user visible backend name doesn't match the
4377 # coroutine-*.c filename for this case, so we have to adjust it here.
4381 if test "$ucontext_works" != "yes"; then
4382 feature_not_found
"ucontext"
4385 gthread|sigaltstack
)
4386 if test "$mingw32" = "yes"; then
4387 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4391 error_exit
"unknown coroutine backend $coroutine"
4396 if test "$coroutine_pool" = ""; then
4397 if test "$coroutine" = "gthread"; then
4403 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4404 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4407 if test "$debug_stack_usage" = "yes"; then
4408 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4409 error_exit
"stack usage debugging is not supported for $cpu"
4411 if test "$coroutine_pool" = "yes"; then
4412 echo "WARN: disabling coroutine pool for stack usage debugging"
4418 ##########################################
4419 # check if we have open_by_handle_at
4421 open_by_handle_at
=no
4424 #if !defined(AT_EMPTY_PATH)
4425 # error missing definition
4427 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4430 if compile_prog
"" "" ; then
4431 open_by_handle_at
=yes
4434 ########################################
4435 # check if we have linux/magic.h
4439 #include <linux/magic.h>
4444 if compile_prog
"" "" ; then
4448 ########################################
4449 # check whether we can disable warning option with a pragma (this is needed
4450 # to silence warnings in the headers of some versions of external libraries).
4451 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4454 # If we can't selectively disable warning in the code, disable -Werror so that
4455 # the build doesn't fail anyway.
4457 pragma_disable_unused_but_set
=no
4459 #pragma GCC diagnostic push
4460 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4461 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4462 #pragma GCC diagnostic pop
4468 if compile_prog
"-Werror" "" ; then
4469 pragma_diagnostic_available
=yes
4474 ########################################
4475 # check if we have valgrind/valgrind.h
4479 #include <valgrind/valgrind.h>
4484 if compile_prog
"" "" ; then
4488 ########################################
4489 # check if environ is declared
4499 if compile_prog
"" "" ; then
4503 ########################################
4504 # check if cpuid.h is usable.
4510 unsigned a, b, c, d;
4511 int max = __get_cpuid_max(0, 0);
4514 __cpuid(1, a, b, c, d);
4518 __cpuid_count(7, 0, a, b, c, d);
4524 if compile_prog
"" "" ; then
4528 ########################################
4529 # check if __[u]int128_t is usable.
4533 #if defined(__clang_major__) && defined(__clang_minor__)
4534 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4535 # error __int128_t does not work in CLANG before 3.2
4547 if compile_prog
"" "" ; then
4551 #########################################
4552 # See if 128-bit atomic operations are supported.
4555 if test "$int128" = "yes"; then
4559 unsigned __int128 x = 0, y = 0;
4560 y = __atomic_load_16(&x, 0);
4561 __atomic_store_16(&x, y, 0);
4562 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4566 if compile_prog
"" "" ; then
4571 #########################################
4572 # See if 64-bit atomic operations are supported.
4573 # Note that without __atomic builtins, we can only
4574 # assume atomic loads/stores max at pointer size.
4580 uint64_t x = 0, y = 0;
4581 #ifdef __ATOMIC_RELAXED
4582 y = __atomic_load_8(&x, 0);
4583 __atomic_store_8(&x, y, 0);
4584 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4585 __atomic_exchange_8(&x, y, 0);
4586 __atomic_fetch_add_8(&x, y, 0);
4588 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4589 __sync_lock_test_and_set(&x, y);
4590 __sync_val_compare_and_swap(&x, y, 0);
4591 __sync_fetch_and_add(&x, y);
4596 if compile_prog
"" "" ; then
4600 ########################################
4601 # check if getauxval is available.
4605 #include <sys/auxv.h>
4607 return getauxval(AT_HWCAP) == 0;
4610 if compile_prog
"" "" ; then
4614 ########################################
4615 # check if ccache is interfering with
4616 # semantic analysis of macros
4621 static const int Z = 1;
4622 #define fn() ({ Z; })
4623 #define TAUT(X) ((X) == Z)
4624 #define PAREN(X, Y) (X == Y)
4626 int main(int argc, char *argv[])
4632 if (PAREN(x, y)) return 0;
4633 if (TAUT(Z)) return 0;
4638 if ! compile_object
"-Werror"; then
4642 #################################################
4643 # clang does not support glibc + FORTIFY_SOURCE.
4645 if test "$fortify_source" != "no"; then
4646 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4647 fortify_source
="no";
4648 elif test -n "$cxx" &&
4649 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4650 fortify_source
="no";
4652 fortify_source
="yes"
4656 ##########################################
4657 # check if struct fsxattr is available via linux/fs.h
4661 #include <linux/fs.h>
4667 if compile_prog
"" "" ; then
4671 ##########################################
4672 # check if rtnetlink.h exists and is useful
4675 #include <linux/rtnetlink.h>
4677 return IFLA_PROTO_DOWN;
4680 if compile_prog
"" "" ; then
4684 ##########################################
4685 # check for usable AF_VSOCK environment
4689 #include <sys/types.h>
4690 #include <sys/socket.h>
4691 #if !defined(AF_VSOCK)
4692 # error missing AF_VSOCK flag
4694 #include <linux/vm_sockets.h>
4697 struct sockaddr_vm svm;
4698 socklen_t len = sizeof(svm);
4699 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4700 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4701 if ((ret == -1) && (errno == ENOTCONN)) {
4707 if compile_prog
"" "" ; then
4711 #################################################
4712 # Sparc implicitly links with --relax, which is
4713 # incompatible with -r, so --no-relax should be
4714 # given. It does no harm to give it on other
4717 # Note: the prototype is needed since QEMU_CFLAGS
4718 # contains -Wmissing-prototypes
4720 extern int foo(void);
4721 int foo(void) { return 0; }
4723 if ! compile_object
""; then
4724 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
4726 if do_cc
-nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then
4727 LD_REL_FLAGS
="-Wl,--no-relax"
4730 ##########################################
4732 # After here, no more $cc or $ld runs
4734 if test "$gcov" = "yes" ; then
4735 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4736 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
4737 elif test "$fortify_source" = "yes" ; then
4738 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4739 elif test "$debug" = "no"; then
4740 CFLAGS
="-O2 $CFLAGS"
4743 ##########################################
4745 if test "$libnfs" != "no" ; then
4746 if $pkg_config --atleast-version=1.9.3 libnfs
; then
4748 libnfs_libs
=$
($pkg_config --libs libnfs
)
4750 if test "$libnfs" = "yes" ; then
4751 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
4757 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4758 if test "$werror" = "yes"; then
4759 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
4762 if test "$solaris" = "no" ; then
4763 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4764 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
4768 # test if pod2man has --utf8 option
4769 if pod2man
--help |
grep -q utf8
; then
4770 POD2MAN
="pod2man --utf8"
4775 # Use ASLR, no-SEH and DEP if available
4776 if test "$mingw32" = "yes" ; then
4777 for flag
in --dynamicbase --no-seh --nxcompat; do
4778 if $ld --help 2>/dev
/null |
grep ".$flag" >/dev
/null
2>/dev
/null
; then
4779 LDFLAGS
="-Wl,$flag $LDFLAGS"
4784 qemu_confdir
=$sysconfdir$confsuffix
4785 qemu_moddir
=$libdir$confsuffix
4786 qemu_datadir
=$datadir$confsuffix
4787 qemu_localedir
="$datadir/locale"
4790 if test "$want_tools" = "yes" ; then
4791 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4792 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4793 tools
="qemu-nbd\$(EXESUF) $tools"
4794 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4797 if test "$softmmu" = yes ; then
4798 if test "$virtfs" != no
; then
4799 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4801 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4803 if test "$virtfs" = yes; then
4804 error_exit
"VirtFS is supported only on Linux and requires libcap devel and libattr devel"
4811 # Probe for guest agent support/options
4813 if [ "$guest_agent" != "no" ]; then
4814 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4815 tools
="qemu-ga $tools"
4817 elif [ "$guest_agent" != yes ]; then
4820 error_exit
"Guest agent is not supported on this platform"
4824 # Guest agent Window MSI package
4826 if test "$guest_agent" != yes; then
4827 if test "$guest_agent_msi" = yes; then
4828 error_exit
"MSI guest agent package requires guest agent enabled"
4831 elif test "$mingw32" != "yes"; then
4832 if test "$guest_agent_msi" = "yes"; then
4833 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
4836 elif ! has wixl
; then
4837 if test "$guest_agent_msi" = "yes"; then
4838 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4842 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4843 # disabled explicitly
4844 if test "$guest_agent_msi" != "no"; then
4849 if test "$guest_agent_msi" = "yes"; then
4850 if test "$guest_agent_with_vss" = "yes"; then
4851 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
4854 if test "$QEMU_GA_MANUFACTURER" = ""; then
4855 QEMU_GA_MANUFACTURER
=QEMU
4858 if test "$QEMU_GA_DISTRO" = ""; then
4859 QEMU_GA_DISTRO
=Linux
4862 if test "$QEMU_GA_VERSION" = ""; then
4863 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
4866 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
4870 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
4873 QEMU_GA_MSI_ARCH
="-D Arch=32"
4876 error_exit
"CPU $cpu not supported for building installation package"
4881 # Mac OS X ships with a broken assembler
4883 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
4884 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4885 "$softmmu" = yes ; then
4886 # Different host OS linkers have different ideas about the name of the ELF
4887 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
4888 # variant; and Windows uses i386pe.
4889 for emu
in elf_i386 elf_i386_fbsd i386pe
; do
4890 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
4891 ld_i386_emulation
="$emu"
4897 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4898 roms
="$roms spapr-rtas"
4901 if test "$cpu" = "s390x" ; then
4902 roms
="$roms s390-ccw"
4905 # Probe for the need for relocating the user-only binary.
4906 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
4909 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
4910 # ??? Rationale for choosing this address
4911 textseg_addr
=0x60000000
4914 # A 256M aligned address, high in the address space, with enough
4915 # room for the code_gen_buffer above it before the stack.
4916 textseg_addr
=0x60000000
4919 if [ -n "$textseg_addr" ]; then
4921 int main(void) { return 0; }
4923 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
4924 if ! compile_prog
"" "$textseg_ldflags"; then
4925 # In case ld does not support -Ttext-segment, edit the default linker
4926 # script via sed to set the .text start addr. This is needed on FreeBSD
4928 if ! $ld --verbose >/dev
/null
2>&1; then
4930 "We need to link the QEMU user mode binaries at a" \
4931 "specific text address. Unfortunately your linker" \
4932 "doesn't support either the -Ttext-segment option or" \
4933 "printing the default linker script with --verbose." \
4934 "If you don't want the user mode binaries, pass the" \
4935 "--disable-user option to configure."
4938 $ld --verbose |
sed \
4939 -e '1,/==================================================/d' \
4940 -e '/==================================================/,$d' \
4941 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4942 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4943 textseg_ldflags
="-Wl,-T../config-host.ld"
4949 if test "$1" = "yes" ; then
4954 # prepend pixman and ftd flags after all config tests are done
4955 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4956 libs_softmmu
="$pixman_libs $libs_softmmu"
4958 echo "Install prefix $prefix"
4959 echo "BIOS directory $(eval echo $qemu_datadir)"
4960 echo "binary directory $(eval echo $bindir)"
4961 echo "library directory $(eval echo $libdir)"
4962 echo "module directory $(eval echo $qemu_moddir)"
4963 echo "libexec directory $(eval echo $libexecdir)"
4964 echo "include directory $(eval echo $includedir)"
4965 echo "config directory $(eval echo $sysconfdir)"
4966 if test "$mingw32" = "no" ; then
4967 echo "local state directory $(eval echo $local_statedir)"
4968 echo "Manual directory $(eval echo $mandir)"
4969 echo "ELF interp prefix $interp_prefix"
4971 echo "local state directory queried at runtime"
4972 echo "Windows SDK $win_sdk"
4974 echo "Source path $source_path"
4975 echo "C compiler $cc"
4976 echo "Host C compiler $host_cc"
4977 echo "C++ compiler $cxx"
4978 echo "Objective-C compiler $objcc"
4979 echo "ARFLAGS $ARFLAGS"
4980 echo "CFLAGS $CFLAGS"
4981 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4982 echo "LDFLAGS $LDFLAGS"
4984 echo "install $install"
4985 echo "python $python"
4986 if test "$slirp" = "yes" ; then
4989 echo "module support $modules"
4990 echo "host CPU $cpu"
4991 echo "host big endian $bigendian"
4992 echo "target list $target_list"
4993 echo "tcg debug enabled $debug_tcg"
4994 echo "gprof enabled $gprof"
4995 echo "sparse enabled $sparse"
4996 echo "strip binaries $strip_opt"
4997 echo "profiler $profiler"
4998 echo "static build $static"
4999 if test "$darwin" = "yes" ; then
5000 echo "Cocoa support $cocoa"
5002 echo "pixman $pixman"
5003 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5004 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5005 echo "GTK GL support $gtk_gl"
5006 echo "VTE support $vte $(echo_version $vte $vteversion)"
5007 echo "TLS priority $tls_priority"
5008 echo "GNUTLS support $gnutls"
5009 echo "GNUTLS rnd $gnutls_rnd"
5010 echo "libgcrypt $gcrypt"
5011 echo "libgcrypt kdf $gcrypt_kdf"
5012 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5013 echo "nettle kdf $nettle_kdf"
5014 echo "libtasn1 $tasn1"
5015 echo "curses support $curses"
5016 echo "virgl support $virglrenderer"
5017 echo "curl support $curl"
5018 echo "mingw32 support $mingw32"
5019 echo "Audio drivers $audio_drv_list"
5020 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5021 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5022 echo "VirtFS support $virtfs"
5023 echo "VNC support $vnc"
5024 if test "$vnc" = "yes" ; then
5025 echo "VNC SASL support $vnc_sasl"
5026 echo "VNC JPEG support $vnc_jpeg"
5027 echo "VNC PNG support $vnc_png"
5029 if test -n "$sparc_cpu"; then
5030 echo "Target Sparc Arch $sparc_cpu"
5032 echo "xen support $xen"
5033 if test "$xen" = "yes" ; then
5034 echo "xen ctrl version $xen_ctrl_version"
5035 echo "pv dom build $xen_pv_domain_build"
5037 echo "brlapi support $brlapi"
5038 echo "bluez support $bluez"
5039 echo "Documentation $docs"
5041 echo "vde support $vde"
5042 echo "netmap support $netmap"
5043 echo "Linux AIO support $linux_aio"
5044 echo "ATTR/XATTR support $attr"
5045 echo "Install blobs $blobs"
5046 echo "KVM support $kvm"
5047 echo "COLO support $colo"
5048 echo "RDMA support $rdma"
5049 echo "TCG interpreter $tcg_interpreter"
5050 echo "fdt support $fdt"
5051 echo "preadv support $preadv"
5052 echo "fdatasync $fdatasync"
5053 echo "madvise $madvise"
5054 echo "posix_madvise $posix_madvise"
5055 echo "libcap-ng support $cap_ng"
5056 echo "vhost-net support $vhost_net"
5057 echo "vhost-scsi support $vhost_scsi"
5058 echo "vhost-vsock support $vhost_vsock"
5059 echo "Trace backends $trace_backends"
5060 if have_backend
"simple"; then
5061 echo "Trace output file $trace_file-<pid>"
5063 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5064 echo "rbd support $rbd"
5065 echo "xfsctl support $xfs"
5066 echo "smartcard support $smartcard"
5067 echo "libusb $libusb"
5068 echo "usb net redir $usb_redir"
5069 echo "OpenGL support $opengl"
5070 echo "OpenGL dmabufs $opengl_dmabuf"
5071 echo "libiscsi support $libiscsi"
5072 echo "libnfs support $libnfs"
5073 echo "build guest agent $guest_agent"
5074 echo "QGA VSS support $guest_agent_with_vss"
5075 echo "QGA w32 disk info $guest_agent_ntddscsi"
5076 echo "QGA MSI support $guest_agent_msi"
5077 echo "seccomp support $seccomp"
5078 echo "coroutine backend $coroutine"
5079 echo "coroutine pool $coroutine_pool"
5080 echo "debug stack usage $debug_stack_usage"
5081 echo "GlusterFS support $glusterfs"
5082 echo "Archipelago support $archipelago"
5083 echo "gcov $gcov_tool"
5084 echo "gcov enabled $gcov"
5085 echo "TPM support $tpm"
5086 echo "libssh2 support $libssh2"
5087 echo "TPM passthrough $tpm_passthrough"
5088 echo "QOM debugging $qom_cast_debug"
5089 echo "lzo support $lzo"
5090 echo "snappy support $snappy"
5091 echo "bzip2 support $bzip2"
5092 echo "NUMA host support $numa"
5093 echo "tcmalloc support $tcmalloc"
5094 echo "jemalloc support $jemalloc"
5095 echo "avx2 optimization $avx2_opt"
5096 echo "replication support $replication"
5098 if test "$sdl_too_old" = "yes"; then
5099 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5102 config_host_mak
="config-host.mak"
5104 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5106 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5107 echo >> $config_host_mak
5109 echo all
: >> $config_host_mak
5110 echo "prefix=$prefix" >> $config_host_mak
5111 echo "bindir=$bindir" >> $config_host_mak
5112 echo "libdir=$libdir" >> $config_host_mak
5113 echo "libexecdir=$libexecdir" >> $config_host_mak
5114 echo "includedir=$includedir" >> $config_host_mak
5115 echo "mandir=$mandir" >> $config_host_mak
5116 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5117 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5118 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5119 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5120 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5121 if test "$mingw32" = "no" ; then
5122 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5124 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5125 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5126 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5127 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5128 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5130 echo "ARCH=$ARCH" >> $config_host_mak
5132 if test "$debug_tcg" = "yes" ; then
5133 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5135 if test "$strip_opt" = "yes" ; then
5136 echo "STRIP=${strip}" >> $config_host_mak
5138 if test "$bigendian" = "yes" ; then
5139 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5141 if test "$mingw32" = "yes" ; then
5142 echo "CONFIG_WIN32=y" >> $config_host_mak
5143 rc_version
=$
(cat $source_path/VERSION
)
5144 version_major
=${rc_version%%.*}
5145 rc_version
=${rc_version#*.}
5146 version_minor
=${rc_version%%.*}
5147 rc_version
=${rc_version#*.}
5148 version_subminor
=${rc_version%%.*}
5150 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5151 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5152 if test "$guest_agent_with_vss" = "yes" ; then
5153 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5154 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5155 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5157 if test "$guest_agent_ntddscsi" = "yes" ; then
5158 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5160 if test "$guest_agent_msi" = "yes"; then
5161 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5162 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5163 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5164 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5165 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5166 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5167 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5170 echo "CONFIG_POSIX=y" >> $config_host_mak
5173 if test "$linux" = "yes" ; then
5174 echo "CONFIG_LINUX=y" >> $config_host_mak
5177 if test "$darwin" = "yes" ; then
5178 echo "CONFIG_DARWIN=y" >> $config_host_mak
5181 if test "$aix" = "yes" ; then
5182 echo "CONFIG_AIX=y" >> $config_host_mak
5185 if test "$solaris" = "yes" ; then
5186 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5187 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5188 if test "$needs_libsunmath" = "yes" ; then
5189 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5192 if test "$haiku" = "yes" ; then
5193 echo "CONFIG_HAIKU=y" >> $config_host_mak
5195 if test "$static" = "yes" ; then
5196 echo "CONFIG_STATIC=y" >> $config_host_mak
5198 if test "$profiler" = "yes" ; then
5199 echo "CONFIG_PROFILER=y" >> $config_host_mak
5201 if test "$slirp" = "yes" ; then
5202 echo "CONFIG_SLIRP=y" >> $config_host_mak
5203 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5205 if test "$vde" = "yes" ; then
5206 echo "CONFIG_VDE=y" >> $config_host_mak
5208 if test "$netmap" = "yes" ; then
5209 echo "CONFIG_NETMAP=y" >> $config_host_mak
5211 if test "$l2tpv3" = "yes" ; then
5212 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5214 if test "$cap_ng" = "yes" ; then
5215 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5217 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5218 for drv
in $audio_drv_list; do
5219 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5220 echo "$def=y" >> $config_host_mak
5222 if test "$audio_pt_int" = "yes" ; then
5223 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5225 if test "$audio_win_int" = "yes" ; then
5226 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5228 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5229 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5230 if test "$vnc" = "yes" ; then
5231 echo "CONFIG_VNC=y" >> $config_host_mak
5233 if test "$vnc_sasl" = "yes" ; then
5234 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5236 if test "$vnc_jpeg" = "yes" ; then
5237 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5239 if test "$vnc_png" = "yes" ; then
5240 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5242 if test "$fnmatch" = "yes" ; then
5243 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5245 if test "$xfs" = "yes" ; then
5246 echo "CONFIG_XFS=y" >> $config_host_mak
5248 qemu_version
=$
(head $source_path/VERSION
)
5249 echo "VERSION=$qemu_version" >>$config_host_mak
5250 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5251 echo "SRC_PATH=$source_path" >> $config_host_mak
5252 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5253 if [ "$docs" = "yes" ] ; then
5254 echo "BUILD_DOCS=yes" >> $config_host_mak
5256 if test "$modules" = "yes"; then
5257 # $shacmd can generate a hash started with digit, which the compiler doesn't
5258 # like as an symbol. So prefix it with an underscore
5259 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5260 echo "CONFIG_MODULES=y" >> $config_host_mak
5262 if test "$sdl" = "yes" ; then
5263 echo "CONFIG_SDL=y" >> $config_host_mak
5264 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5265 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5267 if test "$cocoa" = "yes" ; then
5268 echo "CONFIG_COCOA=y" >> $config_host_mak
5270 if test "$curses" = "yes" ; then
5271 echo "CONFIG_CURSES=y" >> $config_host_mak
5273 if test "$utimens" = "yes" ; then
5274 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
5276 if test "$pipe2" = "yes" ; then
5277 echo "CONFIG_PIPE2=y" >> $config_host_mak
5279 if test "$accept4" = "yes" ; then
5280 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5282 if test "$splice" = "yes" ; then
5283 echo "CONFIG_SPLICE=y" >> $config_host_mak
5285 if test "$eventfd" = "yes" ; then
5286 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5288 if test "$memfd" = "yes" ; then
5289 echo "CONFIG_MEMFD=y" >> $config_host_mak
5291 if test "$fallocate" = "yes" ; then
5292 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5294 if test "$fallocate_punch_hole" = "yes" ; then
5295 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5297 if test "$fallocate_zero_range" = "yes" ; then
5298 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5300 if test "$posix_fallocate" = "yes" ; then
5301 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5303 if test "$sync_file_range" = "yes" ; then
5304 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5306 if test "$fiemap" = "yes" ; then
5307 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5309 if test "$dup3" = "yes" ; then
5310 echo "CONFIG_DUP3=y" >> $config_host_mak
5312 if test "$ppoll" = "yes" ; then
5313 echo "CONFIG_PPOLL=y" >> $config_host_mak
5315 if test "$prctl_pr_set_timerslack" = "yes" ; then
5316 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5318 if test "$epoll" = "yes" ; then
5319 echo "CONFIG_EPOLL=y" >> $config_host_mak
5321 if test "$epoll_create1" = "yes" ; then
5322 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5324 if test "$sendfile" = "yes" ; then
5325 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5327 if test "$timerfd" = "yes" ; then
5328 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5330 if test "$setns" = "yes" ; then
5331 echo "CONFIG_SETNS=y" >> $config_host_mak
5333 if test "$clock_adjtime" = "yes" ; then
5334 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5336 if test "$syncfs" = "yes" ; then
5337 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5339 if test "$inotify" = "yes" ; then
5340 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5342 if test "$inotify1" = "yes" ; then
5343 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5345 if test "$byteswap_h" = "yes" ; then
5346 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5348 if test "$bswap_h" = "yes" ; then
5349 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5351 if test "$curl" = "yes" ; then
5352 echo "CONFIG_CURL=m" >> $config_host_mak
5353 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5354 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5356 if test "$brlapi" = "yes" ; then
5357 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5359 if test "$bluez" = "yes" ; then
5360 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5361 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5363 if test "$glib_subprocess" = "yes" ; then
5364 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5366 if test "$gtk" = "yes" ; then
5367 echo "CONFIG_GTK=y" >> $config_host_mak
5368 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5369 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5370 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5371 if test "$gtk_gl" = "yes" ; then
5372 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5375 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5376 if test "$gnutls" = "yes" ; then
5377 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5379 if test "$gnutls_rnd" = "yes" ; then
5380 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5382 if test "$gcrypt" = "yes" ; then
5383 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5384 if test "$gcrypt_kdf" = "yes" ; then
5385 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5388 if test "$nettle" = "yes" ; then
5389 echo "CONFIG_NETTLE=y" >> $config_host_mak
5390 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5391 if test "$nettle_kdf" = "yes" ; then
5392 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5395 if test "$tasn1" = "yes" ; then
5396 echo "CONFIG_TASN1=y" >> $config_host_mak
5398 if test "$have_ifaddrs_h" = "yes" ; then
5399 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5401 if test "$have_broken_size_max" = "yes" ; then
5402 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5405 # Work around a system header bug with some kernel/XFS header
5406 # versions where they both try to define 'struct fsxattr':
5407 # xfs headers will not try to redefine structs from linux headers
5408 # if this macro is set.
5409 if test "$have_fsxattr" = "yes" ; then
5410 echo "HAVE_FSXATTR=y" >> $config_host_mak
5412 if test "$vte" = "yes" ; then
5413 echo "CONFIG_VTE=y" >> $config_host_mak
5414 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5416 if test "$virglrenderer" = "yes" ; then
5417 echo "CONFIG_VIRGL=y" >> $config_host_mak
5418 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5419 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5421 if test "$xen" = "yes" ; then
5422 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5423 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5424 if test "$xen_pv_domain_build" = "yes" ; then
5425 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5428 if test "$linux_aio" = "yes" ; then
5429 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5431 if test "$attr" = "yes" ; then
5432 echo "CONFIG_ATTR=y" >> $config_host_mak
5434 if test "$libattr" = "yes" ; then
5435 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5437 if test "$virtfs" = "yes" ; then
5438 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5440 if test "$vhost_scsi" = "yes" ; then
5441 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5443 if test "$vhost_net" = "yes" ; then
5444 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5446 if test "$vhost_vsock" = "yes" ; then
5447 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5449 if test "$blobs" = "yes" ; then
5450 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5452 if test "$iovec" = "yes" ; then
5453 echo "CONFIG_IOVEC=y" >> $config_host_mak
5455 if test "$preadv" = "yes" ; then
5456 echo "CONFIG_PREADV=y" >> $config_host_mak
5458 if test "$fdt" = "yes" ; then
5459 echo "CONFIG_FDT=y" >> $config_host_mak
5461 if test "$signalfd" = "yes" ; then
5462 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5464 if test "$tcg_interpreter" = "yes" ; then
5465 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5467 if test "$fdatasync" = "yes" ; then
5468 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5470 if test "$madvise" = "yes" ; then
5471 echo "CONFIG_MADVISE=y" >> $config_host_mak
5473 if test "$posix_madvise" = "yes" ; then
5474 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5477 if test "$spice" = "yes" ; then
5478 echo "CONFIG_SPICE=y" >> $config_host_mak
5481 if test "$smartcard" = "yes" ; then
5482 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5485 if test "$libusb" = "yes" ; then
5486 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5489 if test "$usb_redir" = "yes" ; then
5490 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5493 if test "$opengl" = "yes" ; then
5494 echo "CONFIG_OPENGL=y" >> $config_host_mak
5495 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5496 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5497 if test "$opengl_dmabuf" = "yes" ; then
5498 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5502 if test "$avx2_opt" = "yes" ; then
5503 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5506 if test "$lzo" = "yes" ; then
5507 echo "CONFIG_LZO=y" >> $config_host_mak
5510 if test "$snappy" = "yes" ; then
5511 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5514 if test "$bzip2" = "yes" ; then
5515 echo "CONFIG_BZIP2=y" >> $config_host_mak
5516 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5519 if test "$libiscsi" = "yes" ; then
5520 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5521 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5522 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5525 if test "$libnfs" = "yes" ; then
5526 echo "CONFIG_LIBNFS=m" >> $config_host_mak
5527 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
5530 if test "$seccomp" = "yes"; then
5531 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5534 # XXX: suppress that
5535 if [ "$bsd" = "yes" ] ; then
5536 echo "CONFIG_BSD=y" >> $config_host_mak
5539 if test "$localtime_r" = "yes" ; then
5540 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5542 if test "$qom_cast_debug" = "yes" ; then
5543 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5545 if test "$rbd" = "yes" ; then
5546 echo "CONFIG_RBD=m" >> $config_host_mak
5547 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5548 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5551 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5552 if test "$coroutine_pool" = "yes" ; then
5553 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5555 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5558 if test "$debug_stack_usage" = "yes" ; then
5559 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
5562 if test "$open_by_handle_at" = "yes" ; then
5563 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5566 if test "$linux_magic_h" = "yes" ; then
5567 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5570 if test "$pragma_diagnostic_available" = "yes" ; then
5571 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5574 if test "$valgrind_h" = "yes" ; then
5575 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5578 if test "$has_environ" = "yes" ; then
5579 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5582 if test "$cpuid_h" = "yes" ; then
5583 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5586 if test "$int128" = "yes" ; then
5587 echo "CONFIG_INT128=y" >> $config_host_mak
5590 if test "$atomic128" = "yes" ; then
5591 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
5594 if test "$atomic64" = "yes" ; then
5595 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
5598 if test "$getauxval" = "yes" ; then
5599 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5602 if test "$glusterfs" = "yes" ; then
5603 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5604 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5605 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5608 if test "$glusterfs_xlator_opt" = "yes" ; then
5609 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5612 if test "$glusterfs_discard" = "yes" ; then
5613 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5616 if test "$glusterfs_zerofill" = "yes" ; then
5617 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5620 if test "$archipelago" = "yes" ; then
5621 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5622 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5625 if test "$libssh2" = "yes" ; then
5626 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5627 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5628 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5632 if test "$libusb" = "yes"; then
5633 echo "HOST_USB=libusb legacy" >> $config_host_mak
5635 echo "HOST_USB=stub" >> $config_host_mak
5638 # TPM passthrough support?
5639 if test "$tpm" = "yes"; then
5640 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5641 if test "$tpm_passthrough" = "yes"; then
5642 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5646 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5647 if have_backend
"nop"; then
5648 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5650 if have_backend
"simple"; then
5651 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5652 # Set the appropriate trace file.
5653 trace_file
="\"$trace_file-\" FMT_pid"
5655 if have_backend
"log"; then
5656 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
5658 if have_backend
"ust"; then
5659 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5661 if have_backend
"dtrace"; then
5662 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5663 if test "$trace_backend_stap" = "yes" ; then
5664 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5667 if have_backend
"ftrace"; then
5668 if test "$linux" = "yes" ; then
5669 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5671 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
5674 if have_backend
"syslog"; then
5675 if test "$posix_syslog" = "yes" ; then
5676 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
5678 feature_not_found
"syslog(trace backend)" "syslog not available"
5681 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5683 if test "$colo" = "yes"; then
5684 echo "CONFIG_COLO=y" >> $config_host_mak
5687 if test "$rdma" = "yes" ; then
5688 echo "CONFIG_RDMA=y" >> $config_host_mak
5691 if test "$have_rtnetlink" = "yes" ; then
5692 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5695 if test "$replication" = "yes" ; then
5696 echo "CONFIG_REPLICATION=y" >> $config_host_mak
5699 if test "$have_af_vsock" = "yes" ; then
5700 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
5703 # Hold two types of flag:
5704 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5705 # a thread we have a handle to
5706 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5708 if test "$pthread_setname_np" = "yes" ; then
5709 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5710 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5713 if test "$tcg_interpreter" = "yes"; then
5714 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5715 elif test "$ARCH" = "sparc64" ; then
5716 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5717 elif test "$ARCH" = "s390x" ; then
5718 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5719 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5720 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5721 elif test "$ARCH" = "ppc64" ; then
5722 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5724 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5726 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5728 echo "TOOLS=$tools" >> $config_host_mak
5729 echo "ROMS=$roms" >> $config_host_mak
5730 echo "MAKE=$make" >> $config_host_mak
5731 echo "INSTALL=$install" >> $config_host_mak
5732 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5733 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5734 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5735 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5736 echo "PYTHON=$python" >> $config_host_mak
5737 echo "CC=$cc" >> $config_host_mak
5738 if $iasl -h > /dev
/null
2>&1; then
5739 echo "IASL=$iasl" >> $config_host_mak
5741 echo "CC_I386=$cc_i386" >> $config_host_mak
5742 echo "HOST_CC=$host_cc" >> $config_host_mak
5743 echo "CXX=$cxx" >> $config_host_mak
5744 echo "OBJCC=$objcc" >> $config_host_mak
5745 echo "AR=$ar" >> $config_host_mak
5746 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5747 echo "AS=$as" >> $config_host_mak
5748 echo "CCAS=$ccas" >> $config_host_mak
5749 echo "CPP=$cpp" >> $config_host_mak
5750 echo "OBJCOPY=$objcopy" >> $config_host_mak
5751 echo "LD=$ld" >> $config_host_mak
5752 echo "NM=$nm" >> $config_host_mak
5753 echo "WINDRES=$windres" >> $config_host_mak
5754 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5755 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5756 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5757 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5758 if test "$sparse" = "yes" ; then
5759 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5760 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5761 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5762 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5763 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5765 if test "$cross_prefix" != ""; then
5766 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5768 echo "AUTOCONF_HOST := " >> $config_host_mak
5770 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5771 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5772 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
5773 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
5774 echo "LIBS+=$LIBS" >> $config_host_mak
5775 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5776 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
5777 echo "EXESUF=$EXESUF" >> $config_host_mak
5778 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5779 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5780 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5781 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5782 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5783 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5784 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5785 if test "$gcov" = "yes" ; then
5786 echo "CONFIG_GCOV=y" >> $config_host_mak
5787 echo "GCOV=$gcov_tool" >> $config_host_mak
5790 # use included Linux headers
5791 if test "$linux" = "yes" ; then
5792 mkdir
-p linux-headers
5810 # For most CPUs the kernel architecture name and QEMU CPU name match.
5814 # For non-KVM architectures we will not have asm headers
5815 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5816 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
5820 for target
in $target_list; do
5821 target_dir
="$target"
5822 config_target_mak
=$target_dir/config-target.mak
5823 target_name
=$
(echo $target | cut
-d '-' -f 1)
5824 target_bigendian
="no"
5826 case "$target_name" in
5827 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
5828 target_bigendian
=yes
5832 target_user_only
="no"
5833 target_linux_user
="no"
5834 target_bsd_user
="no"
5836 ${target_name}-softmmu)
5837 target_softmmu
="yes"
5839 ${target_name}-linux-user)
5840 if test "$linux" != "yes" ; then
5841 error_exit
"Target '$target' is only available on a Linux host"
5843 target_user_only
="yes"
5844 target_linux_user
="yes"
5846 ${target_name}-bsd-user)
5847 if test "$bsd" != "yes" ; then
5848 error_exit
"Target '$target' is only available on a BSD host"
5850 target_user_only
="yes"
5851 target_bsd_user
="yes"
5854 error_exit
"Target '$target' not recognised"
5859 mkdir
-p $target_dir
5860 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5863 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
5866 TARGET_ARCH
="$target_name"
5870 case "$target_name" in
5874 TARGET_BASE_ARCH
=i386
5881 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5884 TARGET_BASE_ARCH
=arm
5886 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5894 gdb_xml_files
="cf-core.xml cf-fp.xml"
5896 microblaze|microblazeel
)
5897 TARGET_ARCH
=microblaze
5902 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5906 TARGET_BASE_ARCH
=mips
5907 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5908 echo "TARGET_ABI32=y" >> $config_target_mak
5912 TARGET_BASE_ARCH
=mips
5913 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5918 TARGET_ARCH
=openrisc
5919 TARGET_BASE_ARCH
=openrisc
5922 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5925 TARGET_BASE_ARCH
=ppc
5927 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5930 TARGET_BASE_ARCH
=ppc
5932 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5936 TARGET_BASE_ARCH
=ppc
5938 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5942 TARGET_BASE_ARCH
=ppc
5944 echo "TARGET_ABI32=y" >> $config_target_mak
5945 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
5954 TARGET_BASE_ARCH
=sparc
5958 TARGET_BASE_ARCH
=sparc
5959 TARGET_ABI_DIR
=sparc
5960 echo "TARGET_ABI32=y" >> $config_target_mak
5963 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
5975 error_exit
"Unsupported target CPU"
5978 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5979 if [ "$TARGET_BASE_ARCH" = "" ]; then
5980 TARGET_BASE_ARCH
=$TARGET_ARCH
5983 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
5986 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
5989 target_arch_name
="$(upper $TARGET_ARCH)"
5990 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5991 echo "TARGET_NAME=$target_name" >> $config_target_mak
5992 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5993 if [ "$TARGET_ABI_DIR" = "" ]; then
5994 TARGET_ABI_DIR
=$TARGET_ARCH
5996 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5997 if [ "$HOST_VARIANT_DIR" != "" ]; then
5998 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6000 case "$target_name" in
6002 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
6003 echo "CONFIG_XEN=y" >> $config_target_mak
6004 if test "$xen_pci_passthrough" = yes; then
6005 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6011 case "$target_name" in
6012 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips
)
6013 # Make sure the target and host cpus are compatible
6014 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
6015 \
( "$target_name" = "$cpu" -o \
6016 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \
) -o \
6017 \
( "$target_name" = "ppc64" -a "$cpu" = "ppc" \
) -o \
6018 \
( "$target_name" = "ppc" -a "$cpu" = "ppc64" \
) -o \
6019 \
( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \
) -o \
6020 \
( "$target_name" = "mipsel" -a "$cpu" = "mips" \
) -o \
6021 \
( "$target_name" = "x86_64" -a "$cpu" = "i386" \
) -o \
6022 \
( "$target_name" = "i386" -a "$cpu" = "x86_64" \
) -o \
6023 \
( "$target_name" = "x86_64" -a "$cpu" = "x32" \
) -o \
6024 \
( "$target_name" = "i386" -a "$cpu" = "x32" \
) \
) ; then
6025 echo "CONFIG_KVM=y" >> $config_target_mak
6026 if test "$vhost_net" = "yes" ; then
6027 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6028 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
6032 if test "$target_bigendian" = "yes" ; then
6033 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6035 if test "$target_softmmu" = "yes" ; then
6036 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6038 if test "$target_user_only" = "yes" ; then
6039 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6040 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6042 if test "$target_linux_user" = "yes" ; then
6043 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6046 if test ! -z "$gdb_xml_files" ; then
6047 for x
in $gdb_xml_files; do
6048 list
="$list $source_path/gdb-xml/$x"
6050 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6053 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6054 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6056 if test "$target_bsd_user" = "yes" ; then
6057 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6060 # generate QEMU_CFLAGS/LDFLAGS for targets
6066 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6067 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6070 for i
in $ARCH $TARGET_BASE_ARCH ; do
6073 disas_config
"ALPHA"
6076 if test -n "${cxx}"; then
6077 disas_config
"ARM_A64"
6082 if test -n "${cxx}"; then
6083 disas_config
"ARM_A64"
6102 disas_config
"MICROBLAZE"
6108 disas_config
"MOXIE"
6111 disas_config
"OPENRISC"
6123 disas_config
"SPARC"
6126 disas_config
"XTENSA"
6130 if test "$tcg_interpreter" = "yes" ; then
6136 # Ensure there's only a single GP
6137 cflags
="-msmall-data $cflags"
6141 if test "$gprof" = "yes" ; then
6142 echo "TARGET_GPROF=yes" >> $config_target_mak
6143 if test "$target_linux_user" = "yes" ; then
6145 ldflags
="-p $ldflags"
6147 if test "$target_softmmu" = "yes" ; then
6148 ldflags
="-p $ldflags"
6149 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6153 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6154 ldflags
="$ldflags $textseg_ldflags"
6157 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6158 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6160 done # for target in $targets
6162 if [ "$pixman" = "internal" ]; then
6163 echo "config-host.h: subdir-pixman" >> $config_host_mak
6166 if [ "$dtc_internal" = "yes" ]; then
6167 echo "config-host.h: subdir-dtc" >> $config_host_mak
6170 if test "$numa" = "yes"; then
6171 echo "CONFIG_NUMA=y" >> $config_host_mak
6174 if test "$ccache_cpp2" = "yes"; then
6175 echo "export CCACHE_CPP2=y" >> $config_host_mak
6178 # build tree in object directory in case the source is not in the current directory
6179 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6181 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6182 DIRS
="$DIRS roms/seabios roms/vgabios"
6183 DIRS
="$DIRS qapi-generated"
6184 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6185 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6186 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6187 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6188 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6189 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6190 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6191 FILES
="$FILES pc-bios/qemu-icon.bmp"
6193 $source_path/pc-bios
/*.bin \
6194 $source_path/pc-bios
/*.lid \
6195 $source_path/pc-bios
/*.aml \
6196 $source_path/pc-bios
/*.rom \
6197 $source_path/pc-bios
/*.dtb \
6198 $source_path/pc-bios
/*.img \
6199 $source_path/pc-bios
/openbios-
* \
6200 $source_path/pc-bios
/u-boot.
* \
6201 $source_path/pc-bios
/palcode-
*
6203 FILES
="$FILES pc-bios/$(basename $bios_file)"
6205 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6207 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6210 for f
in $FILES ; do
6211 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6212 symlink
"$source_path/$f" "$f"
6216 # temporary config to build submodules
6217 for rom
in seabios vgabios
; do
6218 config_mak
=roms
/$rom/config.mak
6219 echo "# Automatically generated by configure - do not modify" > $config_mak
6220 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6221 echo "AS=$as" >> $config_mak
6222 echo "CCAS=$ccas" >> $config_mak
6223 echo "CC=$cc" >> $config_mak
6224 echo "BCC=bcc" >> $config_mak
6225 echo "CPP=$cpp" >> $config_mak
6226 echo "OBJCOPY=objcopy" >> $config_mak
6227 echo "IASL=$iasl" >> $config_mak
6228 echo "LD=$ld" >> $config_mak
6231 # set up tests data directory
6232 if [ ! -e tests
/data
]; then
6233 symlink
"$source_path/tests/data" tests
/data
6236 # set up qemu-iotests in this build directory
6237 iotests_common_env
="tests/qemu-iotests/common.env"
6238 iotests_check
="tests/qemu-iotests/check"
6240 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6241 echo >> "$iotests_common_env"
6242 echo "export PYTHON='$python'" >> "$iotests_common_env"
6244 if [ ! -e "$iotests_check" ]; then
6245 symlink
"$source_path/$iotests_check" "$iotests_check"
6248 # Save the configure command line for later reuse.
6249 cat <<EOD >config.status
6251 # Generated by configure.
6252 # Run this file to recreate the current configuration.
6253 # Compiler output produced by configure, useful for debugging
6254 # configure, is in config.log if it exists.
6256 printf "exec" >>config.status
6257 printf " '%s'" "$0" "$@" >>config.status
6258 echo ' "$@"' >>config.status
6259 chmod +x config.status