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 TMPE
="${TMPDIR1}/${TMPB}.exe"
32 TMPMO
="${TMPDIR1}/${TMPB}.mo"
36 # Print a helpful header at the top of config.log
37 echo "# QEMU configure log $(date)" >> config.log
38 printf "# Configured with:" >> config.log
39 printf " '%s'" "$0" "$@" >> config.log
41 echo "#" >> config.log
46 while test -n "$2"; do
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
63 if test -n "$BASH_VERSION"; then eval '
66 lines: ${BASH_LINENO[*]}"
68 echo $compiler "$@" >> config.log
69 $compiler "$@" >> config.log
2>&1 ||
return $?
70 # Test passed. If this is an --enable-werror build, rerun
71 # the test with -Werror and bail out if it fails. This
72 # makes warning-generating-errors in configure test code
73 # obvious to developers.
74 if test "$werror" != "yes"; then
77 # Don't bother rerunning the compile if we were already using -Werror
83 echo $compiler -Werror "$@" >> config.log
84 $compiler -Werror "$@" >> config.log
2>&1 && return $?
85 error_exit
"configure test passed without -Werror but failed with -Werror." \
86 "This is probably a bug in the configure script. The failing command" \
87 "will be at the bottom of config.log." \
88 "You can run configure with --disable-werror to bypass this check."
92 do_compiler
"$cc" "$@"
96 do_compiler
"$cxx" "$@"
100 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
101 # options which some versions of GCC's C++ compiler complain about
102 # because they only make sense for C programs.
103 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
105 for arg
in $QEMU_CFLAGS; do
108 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
109 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
112 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
120 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
126 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
129 # symbolically link $1 to $2. Portable version of "ln -sf".
132 mkdir
-p "$(dirname "$2")"
136 # check whether a command is available to this shell (may be either an
137 # executable or a builtin)
139 type "$1" >/dev
/null
2>&1
142 # search for an executable in PATH
148 # pathname has a dir component?
149 if [ "${local_command#*/}" != "$local_command" ]; then
150 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
151 echo "$local_command"
155 if [ -z "$local_command" ]; then
160 for local_dir
in $PATH; do
161 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
162 echo "$local_dir/$local_command"
163 IFS
="${local_ifs:-$(printf ' \t\n')}"
168 IFS
="${local_ifs:-$(printf ' \t\n')}"
173 echo "$trace_backends" |
grep "$1" >/dev
/null
177 eval test -z '"${1#'"$2"'}"'
180 supported_hax_target
() {
181 test "$hax" = "yes" ||
return 1
182 glob
"$1" "*-softmmu" ||
return 1
183 case "${1%-softmmu}" in
191 supported_kvm_target
() {
192 test "$kvm" = "yes" ||
return 1
193 glob
"$1" "*-softmmu" ||
return 1
194 case "${1%-softmmu}:$cpu" in
195 arm
:arm | aarch64
:aarch64 | \
196 i386
:i386 | i386
:x86_64 | i386
:x32 | \
197 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
198 mips
:mips | mipsel
:mips | \
199 ppc
:ppc | ppcemb
:ppc | ppc64
:ppc | \
200 ppc
:ppc64 | ppcemb
:ppc64 | ppc64
:ppc64 | \
208 supported_xen_target
() {
209 test "$xen" = "yes" ||
return 1
210 glob
"$1" "*-softmmu" ||
return 1
211 # Only i386 and x86_64 provide the xenpv machine.
212 case "${1%-softmmu}" in
220 supported_hvf_target
() {
221 test "$hvf" = "yes" ||
return 1
222 glob
"$1" "*-softmmu" ||
return 1
223 case "${1%-softmmu}" in
231 supported_whpx_target
() {
232 test "$whpx" = "yes" ||
return 1
233 glob
"$1" "*-softmmu" ||
return 1
234 case "${1%-softmmu}" in
247 if test "$linux" != "yes"; then
248 print_error
"Target '$target' is only available on a Linux host"
253 if test "$bsd" != "yes"; then
254 print_error
"Target '$target' is only available on a BSD host"
259 print_error
"Invalid target name '$target'"
263 test "$tcg" = "yes" && return 0
264 supported_kvm_target
"$1" && return 0
265 supported_xen_target
"$1" && return 0
266 supported_hax_target
"$1" && return 0
267 supported_hvf_target
"$1" && return 0
268 supported_whpx_target
"$1" && return 0
269 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
275 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
279 source_path
=$
(dirname "$0")
282 interp_prefix
="/usr/gnemul/qemu-%M"
286 block_drv_rw_whitelist
=""
287 block_drv_ro_whitelist
=""
293 cc_i386
=i386-pc-linux-gnu-gcc
298 if test -e "$source_path/.git"
301 git_submodules
="ui/keycodemapdb"
308 # Don't accept a target_list environment variable.
311 # Default value for a variable defining feature "foo".
312 # * foo="no" feature will only be used if --enable-foo arg is given
313 # * foo="" feature will be searched for, and if found, will be used
314 # unless --disable-foo is given
315 # * foo="yes" this value will only be set by --enable-foo flag.
316 # feature will searched for,
317 # if not found, configure exits with error
319 # Always add --enable-foo and --disable-foo command line args.
320 # Distributions want to ensure that several features are compiled in, and it
321 # is impossible without a --enable-foo that exits if a feature is not found.
343 xen_pv_domain_build
="no"
344 xen_pci_passthrough
=""
375 LDFLAGS_SHARED
="-shared"
378 mandir
="\${prefix}/share/man"
379 datadir
="\${prefix}/share"
380 firmwarepath
="\${prefix}/share/qemu-firmware"
381 qemu_docdir
="\${prefix}/share/doc/qemu"
382 bindir
="\${prefix}/bin"
383 libdir
="\${prefix}/lib"
384 libexecdir
="\${prefix}/libexec"
385 includedir
="\${prefix}/include"
386 sysconfdir
="\${prefix}/etc"
387 local_statedir
="\${prefix}/var"
421 guest_agent_with_vss
="no"
422 guest_agent_ntddscsi
="no"
431 debug_stack_usage
="no"
435 glusterfs_xlator_opt
="no"
436 glusterfs_discard
="no"
437 glusterfs_fallocate
="no"
438 glusterfs_zerofill
="no"
442 tls_priority
="NORMAL"
454 live_block_migration
="yes"
467 # parse CC options first
469 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
471 --cross-prefix=*) cross_prefix
="$optarg"
475 --cxx=*) CXX
="$optarg"
477 --source-path=*) source_path
="$optarg"
479 --cpu=*) cpu
="$optarg"
481 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
483 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
485 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
486 EXTRA_LDFLAGS
="$optarg"
488 --enable-debug-info) debug_info
="yes"
490 --disable-debug-info) debug_info
="no"
495 # Using uname is really, really broken. Once we have the right set of checks
496 # we can eliminate its usage altogether.
498 # Preferred compiler:
500 # ${cross_prefix}gcc (if cross-prefix specified)
502 if test -z "${CC}${cross_prefix}"; then
505 cc
="${CC-${cross_prefix}gcc}"
508 if test -z "${CXX}${cross_prefix}"; then
511 cxx
="${CXX-${cross_prefix}g++}"
514 ar="${AR-${cross_prefix}ar}"
515 as
="${AS-${cross_prefix}as}"
518 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
519 ld
="${LD-${cross_prefix}ld}"
520 ranlib
="${RANLIB-${cross_prefix}ranlib}"
521 nm
="${NM-${cross_prefix}nm}"
522 strip
="${STRIP-${cross_prefix}strip}"
523 windres
="${WINDRES-${cross_prefix}windres}"
524 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
526 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
528 pkg_config
=query_pkg_config
529 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
530 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
532 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
533 ARFLAGS
="${ARFLAGS-rv}"
535 # default flags for all hosts
536 # We use -fwrapv to tell the compiler that we require a C dialect where
537 # left shift of signed integers is well defined and has the expected
538 # 2s-complement style results. (Both clang and gcc agree that it
539 # provides these semantics.)
540 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
541 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
542 QEMU_CFLAGS
="-Wmissing-format-attribute $QEMU_CFLAGS"
543 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
544 QEMU_CFLAGS
="-Wno-unused-parameter $QEMU_CFLAGS"
545 QEMU_CFLAGS
="-Wno-missing-field-initializers $QEMU_CFLAGS"
546 QEMU_CFLAGS
="-Wno-sign-compare $QEMU_CFLAGS"
547 QEMU_CFLAGS
="-Wno-override-init $QEMU_CFLAGS"
548 QEMU_CFLAGS
="-Wno-error=format $QEMU_CFLAGS"
549 QEMU_CFLAGS
="-Wno-error=format-extra-args $QEMU_CFLAGS"
550 QEMU_CFLAGS
="-Wno-error=parentheses $QEMU_CFLAGS"
551 QEMU_CFLAGS
="-Wextra $QEMU_CFLAGS"
552 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
553 QEMU_INCLUDES
="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
554 if test "$debug_info" = "yes"; then
556 LDFLAGS
="-g $LDFLAGS"
559 # make source path absolute
560 source_path
=$
(cd "$source_path"; pwd)
562 cc_macros
=$
($cc $QEMU_CFLAGS -E -dD - </dev
/null
)
564 # running configure in the source tree?
565 # we know that's the case if configure is there.
566 if test -f "./configure"; then
567 pwd_is_source_path
="y"
569 pwd_is_source_path
="n"
576 #error $1 not defined
578 int main(void) { return 0; }
586 int main(void) { return 0; }
593 int main(void) { return 0; }
597 if check_define __linux__
; then
599 elif check_define _WIN32
; then
601 elif check_define __OpenBSD__
; then
603 elif check_define __sun__
; then
605 elif check_define __HAIKU__
; then
607 elif check_define __FreeBSD__
; then
609 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
610 targetos
='GNU/kFreeBSD'
611 elif check_define __DragonFly__
; then
613 elif check_define __NetBSD__
; then
615 elif check_define __APPLE__
; then
618 # This is a fatal error, but don't report it yet, because we
619 # might be going to just print the --help text, or it might
620 # be the result of a missing compiler.
625 # Some host OSes need non-standard checks for which CPU to use.
626 # Note that these checks are broken for cross-compilation: if you're
627 # cross-compiling to one of these OSes then you'll need to specify
628 # the correct CPU with the --cpu option.
631 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
632 # run 64-bit userspace code.
633 # If the user didn't specify a CPU explicitly and the kernel says this is
634 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
635 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
640 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
641 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
646 if test ! -z "$cpu" ; then
647 # command line argument
649 elif check_define __i386__
; then
651 elif check_define __x86_64__
; then
652 if check_define __ILP32__
; then
657 elif check_define __sparc__
; then
658 if check_define __arch64__
; then
663 elif check_define _ARCH_PPC
; then
664 if check_define _ARCH_PPC64
; then
669 elif check_define __mips__
; then
670 if check_define __mips64
; then
675 elif check_define __s390__
; then
676 if check_define __s390x__
; then
681 elif check_define __arm__
; then
683 elif check_define __aarch64__
; then
690 # Normalise host CPU name and set ARCH.
691 # Note that this case should only have supported host CPUs, not guests.
693 ppc|ppc64|s390|s390x|sparc64|x32
)
697 i386|i486|i586|i686|i86pc|BePC
)
715 if check_define __MIPSEL__
; then
728 # This will result in either an error or falling back to TCI later
732 if test -z "$ARCH"; then
738 # host *BSD for user mode
745 audio_possible_drivers
="dsound sdl"
746 if check_include dsound.h
; then
747 audio_drv_list
="dsound"
756 audio_possible_drivers
="oss sdl pa"
762 audio_possible_drivers
="oss sdl pa"
763 # needed for kinfo_getvmmap(3) in libutil.h
765 # needed for kinfo_getproc
766 libs_qga
="-lutil $libs_qga"
767 netmap
="" # enable netmap autodetect
768 HOST_VARIANT_DIR
="freebsd"
775 audio_possible_drivers
="oss sdl pa"
776 HOST_VARIANT_DIR
="dragonfly"
782 audio_possible_drivers
="oss sdl"
784 HOST_VARIANT_DIR
="netbsd"
791 audio_possible_drivers
="sdl"
792 HOST_VARIANT_DIR
="openbsd"
800 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
801 if [ "$cpu" = "x86_64" ] ; then
802 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
803 LDFLAGS
="-arch x86_64 $LDFLAGS"
806 audio_drv_list
="coreaudio"
807 audio_possible_drivers
="coreaudio sdl"
808 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
809 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
810 # Disable attempts to use ObjectiveC features in os/object.h since they
811 # won't work when we're compiling with gcc as a C compiler.
812 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
813 HOST_VARIANT_DIR
="darwin"
819 install="${INSTALL-ginstall}"
820 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
821 if test -f /usr
/include
/sys
/soundcard.h
; then
824 audio_possible_drivers
="oss sdl"
825 # needed for CMSG_ macros in sys/socket.h
826 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
827 # needed for TIOCWIN* defines in termios.h
828 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
829 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
830 solarisnetlibs
="-lsocket -lnsl -lresolv"
831 LIBS
="$solarisnetlibs $LIBS"
832 libs_qga
="$solarisnetlibs $libs_qga"
836 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
837 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
841 audio_possible_drivers
="oss alsa sdl pa"
849 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
854 if [ "$bsd" = "yes" ] ; then
855 if [ "$darwin" != "yes" ] ; then
860 : ${make=${MAKE-make}}
861 : ${install=${INSTALL-install}}
862 : ${python=${PYTHON-python}}
863 : ${smbd=${SMBD-/usr/sbin/smbd}}
865 # Default objcc to clang if available, otherwise use CC
872 if test "$mingw32" = "yes" ; then
875 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
876 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
877 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
878 # MinGW-w64 needs _POSIX defined.
879 QEMU_CFLAGS
="-D_POSIX=1 $QEMU_CFLAGS"
880 # MinGW needs -mthreads for TLS and macro _MT.
881 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
882 QEMU_CFLAGS
="-I\$(SRC_PATH)/hosts/w32/include $QEMU_CFLAGS"
883 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
885 if compile_prog
"" "-liberty" ; then
886 LIBS
="-liberty $LIBS"
888 prefix
="c:/Program Files/QEMU"
891 qemu_docdir
="\${prefix}"
893 sysconfdir
="\${prefix}"
896 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
902 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
904 --help|
-h) show_help
=yes
906 --version|
-V) exec cat $source_path/VERSION
908 --prefix=*) prefix
="$optarg"
910 --interp-prefix=*) interp_prefix
="$optarg"
918 --host-cc=*) host_cc
="$optarg"
922 --iasl=*) iasl
="$optarg"
924 --objcc=*) objcc
="$optarg"
926 --make=*) make="$optarg"
928 --install=*) install="$optarg"
930 --python=*) python
="$optarg"
932 --gcov=*) gcov_tool
="$optarg"
934 --smbd=*) smbd
="$optarg"
944 --disable-debug-info)
954 --target-list=*) target_list
="$optarg"
956 --enable-trace-backends=*) trace_backends
="$optarg"
958 # XXX: backwards compatibility
959 --enable-trace-backend=*) trace_backends
="$optarg"
961 --with-trace-file=*) trace_file
="$optarg"
963 --enable-gprof) gprof
="yes"
965 --enable-gcov) gcov
="yes"
969 LDFLAGS
="-static $LDFLAGS"
970 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
972 --mandir=*) mandir
="$optarg"
974 --bindir=*) bindir
="$optarg"
976 --libdir=*) libdir
="$optarg"
978 --libexecdir=*) libexecdir
="$optarg"
980 --includedir=*) includedir
="$optarg"
982 --datadir=*) datadir
="$optarg"
984 --with-confsuffix=*) confsuffix
="$optarg"
986 --docdir=*) qemu_docdir
="$optarg"
988 --sysconfdir=*) sysconfdir
="$optarg"
990 --localstatedir=*) local_statedir
="$optarg"
992 --firmwarepath=*) firmwarepath
="$optarg"
995 --disable-dependency-tracking|\
996 --sbindir=*|
--sharedstatedir=*|\
997 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
998 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
999 # These switches are silently ignored, for compatibility with
1000 # autoconf-generated configure scripts. This allows QEMU's
1001 # configure to be used by RPM and similar macros that set
1002 # lots of directory switches by default.
1004 --disable-sdl) sdl
="no"
1006 --enable-sdl) sdl
="yes"
1008 --with-sdlabi=*) sdlabi
="$optarg"
1010 --disable-qom-cast-debug) qom_cast_debug
="no"
1012 --enable-qom-cast-debug) qom_cast_debug
="yes"
1014 --disable-virtfs) virtfs
="no"
1016 --enable-virtfs) virtfs
="yes"
1018 --disable-mpath) mpath
="no"
1020 --enable-mpath) mpath
="yes"
1022 --disable-vnc) vnc
="no"
1024 --enable-vnc) vnc
="yes"
1026 --oss-lib=*) oss_lib
="$optarg"
1028 --audio-drv-list=*) audio_drv_list
="$optarg"
1030 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1032 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1034 --enable-debug-tcg) debug_tcg
="yes"
1036 --disable-debug-tcg) debug_tcg
="no"
1039 # Enable debugging options that aren't excessively noisy
1045 --enable-sanitizers) sanitizers
="yes"
1047 --disable-sanitizers) sanitizers
="no"
1049 --enable-sparse) sparse
="yes"
1051 --disable-sparse) sparse
="no"
1053 --disable-strip) strip_opt
="no"
1055 --disable-vnc-sasl) vnc_sasl
="no"
1057 --enable-vnc-sasl) vnc_sasl
="yes"
1059 --disable-vnc-jpeg) vnc_jpeg
="no"
1061 --enable-vnc-jpeg) vnc_jpeg
="yes"
1063 --disable-vnc-png) vnc_png
="no"
1065 --enable-vnc-png) vnc_png
="yes"
1067 --disable-slirp) slirp
="no"
1069 --disable-vde) vde
="no"
1071 --enable-vde) vde
="yes"
1073 --disable-netmap) netmap
="no"
1075 --enable-netmap) netmap
="yes"
1077 --disable-xen) xen
="no"
1079 --enable-xen) xen
="yes"
1081 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1083 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1085 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
1087 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
1089 --disable-brlapi) brlapi
="no"
1091 --enable-brlapi) brlapi
="yes"
1093 --disable-bluez) bluez
="no"
1095 --enable-bluez) bluez
="yes"
1097 --disable-kvm) kvm
="no"
1099 --enable-kvm) kvm
="yes"
1101 --disable-hax) hax
="no"
1103 --enable-hax) hax
="yes"
1105 --disable-hvf) hvf
="no"
1107 --enable-hvf) hvf
="yes"
1109 --disable-whpx) whpx
="no"
1111 --enable-whpx) whpx
="yes"
1113 --disable-tcg-interpreter) tcg_interpreter
="no"
1115 --enable-tcg-interpreter) tcg_interpreter
="yes"
1117 --disable-cap-ng) cap_ng
="no"
1119 --enable-cap-ng) cap_ng
="yes"
1121 --disable-tcg) tcg
="no"
1123 --enable-tcg) tcg
="yes"
1125 --disable-malloc-trim) malloc_trim
="no"
1127 --enable-malloc-trim) malloc_trim
="yes"
1129 --disable-spice) spice
="no"
1131 --enable-spice) spice
="yes"
1133 --disable-libiscsi) libiscsi
="no"
1135 --enable-libiscsi) libiscsi
="yes"
1137 --disable-libnfs) libnfs
="no"
1139 --enable-libnfs) libnfs
="yes"
1141 --enable-profiler) profiler
="yes"
1143 --disable-cocoa) cocoa
="no"
1147 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1149 --disable-system) softmmu
="no"
1151 --enable-system) softmmu
="yes"
1158 --disable-linux-user) linux_user
="no"
1160 --enable-linux-user) linux_user
="yes"
1162 --disable-bsd-user) bsd_user
="no"
1164 --enable-bsd-user) bsd_user
="yes"
1166 --enable-pie) pie
="yes"
1168 --disable-pie) pie
="no"
1170 --enable-werror) werror
="yes"
1172 --disable-werror) werror
="no"
1174 --enable-stack-protector) stack_protector
="yes"
1176 --disable-stack-protector) stack_protector
="no"
1178 --disable-curses) curses
="no"
1180 --enable-curses) curses
="yes"
1182 --disable-curl) curl
="no"
1184 --enable-curl) curl
="yes"
1186 --disable-fdt) fdt
="no"
1188 --enable-fdt) fdt
="yes"
1190 --disable-linux-aio) linux_aio
="no"
1192 --enable-linux-aio) linux_aio
="yes"
1194 --disable-attr) attr
="no"
1196 --enable-attr) attr
="yes"
1198 --disable-membarrier) membarrier
="no"
1200 --enable-membarrier) membarrier
="yes"
1202 --disable-blobs) blobs
="no"
1204 --with-pkgversion=*) pkgversion
="$optarg"
1206 --with-coroutine=*) coroutine
="$optarg"
1208 --disable-coroutine-pool) coroutine_pool
="no"
1210 --enable-coroutine-pool) coroutine_pool
="yes"
1212 --enable-debug-stack-usage) debug_stack_usage
="yes"
1214 --enable-crypto-afalg) crypto_afalg
="yes"
1216 --disable-crypto-afalg) crypto_afalg
="no"
1218 --disable-docs) docs
="no"
1220 --enable-docs) docs
="yes"
1222 --disable-vhost-net) vhost_net
="no"
1224 --enable-vhost-net) vhost_net
="yes"
1226 --disable-vhost-crypto) vhost_crypto
="no"
1228 --enable-vhost-crypto)
1230 if test "$mingw32" = "yes"; then
1231 error_exit
"vhost-crypto isn't available on win32"
1234 --disable-vhost-scsi) vhost_scsi
="no"
1236 --enable-vhost-scsi) vhost_scsi
="yes"
1238 --disable-vhost-vsock) vhost_vsock
="no"
1240 --enable-vhost-vsock) vhost_vsock
="yes"
1242 --disable-opengl) opengl
="no"
1244 --enable-opengl) opengl
="yes"
1246 --disable-rbd) rbd
="no"
1248 --enable-rbd) rbd
="yes"
1250 --disable-xfsctl) xfs
="no"
1252 --enable-xfsctl) xfs
="yes"
1254 --disable-smartcard) smartcard
="no"
1256 --enable-smartcard) smartcard
="yes"
1258 --disable-libusb) libusb
="no"
1260 --enable-libusb) libusb
="yes"
1262 --disable-usb-redir) usb_redir
="no"
1264 --enable-usb-redir) usb_redir
="yes"
1266 --disable-zlib-test) zlib
="no"
1268 --disable-lzo) lzo
="no"
1270 --enable-lzo) lzo
="yes"
1272 --disable-snappy) snappy
="no"
1274 --enable-snappy) snappy
="yes"
1276 --disable-bzip2) bzip2="no"
1278 --enable-bzip2) bzip2="yes"
1280 --enable-guest-agent) guest_agent
="yes"
1282 --disable-guest-agent) guest_agent
="no"
1284 --enable-guest-agent-msi) guest_agent_msi
="yes"
1286 --disable-guest-agent-msi) guest_agent_msi
="no"
1288 --with-vss-sdk) vss_win32_sdk
=""
1290 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1292 --without-vss-sdk) vss_win32_sdk
="no"
1294 --with-win-sdk) win_sdk
=""
1296 --with-win-sdk=*) win_sdk
="$optarg"
1298 --without-win-sdk) win_sdk
="no"
1300 --enable-tools) want_tools
="yes"
1302 --disable-tools) want_tools
="no"
1304 --enable-seccomp) seccomp
="yes"
1306 --disable-seccomp) seccomp
="no"
1308 --disable-glusterfs) glusterfs
="no"
1310 --enable-glusterfs) glusterfs
="yes"
1312 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1313 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1315 --enable-vhdx|
--disable-vhdx)
1316 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1318 --enable-uuid|
--disable-uuid)
1319 echo "$0: $opt is obsolete, UUID support is always built" >&2
1321 --disable-gtk) gtk
="no"
1323 --enable-gtk) gtk
="yes"
1325 --tls-priority=*) tls_priority
="$optarg"
1327 --disable-gnutls) gnutls
="no"
1329 --enable-gnutls) gnutls
="yes"
1331 --disable-nettle) nettle
="no"
1333 --enable-nettle) nettle
="yes"
1335 --disable-gcrypt) gcrypt
="no"
1337 --enable-gcrypt) gcrypt
="yes"
1339 --enable-rdma) rdma
="yes"
1341 --disable-rdma) rdma
="no"
1343 --with-gtkabi=*) gtkabi
="$optarg"
1345 --disable-vte) vte
="no"
1347 --enable-vte) vte
="yes"
1349 --disable-virglrenderer) virglrenderer
="no"
1351 --enable-virglrenderer) virglrenderer
="yes"
1353 --disable-tpm) tpm
="no"
1355 --enable-tpm) tpm
="yes"
1357 --disable-libssh2) libssh2
="no"
1359 --enable-libssh2) libssh2
="yes"
1361 --disable-live-block-migration) live_block_migration
="no"
1363 --enable-live-block-migration) live_block_migration
="yes"
1365 --disable-numa) numa
="no"
1367 --enable-numa) numa
="yes"
1369 --disable-libxml2) libxml2
="no"
1371 --enable-libxml2) libxml2
="yes"
1373 --disable-tcmalloc) tcmalloc
="no"
1375 --enable-tcmalloc) tcmalloc
="yes"
1377 --disable-jemalloc) jemalloc
="no"
1379 --enable-jemalloc) jemalloc
="yes"
1381 --disable-replication) replication
="no"
1383 --enable-replication) replication
="yes"
1385 --disable-vxhs) vxhs
="no"
1387 --enable-vxhs) vxhs
="yes"
1389 --disable-vhost-user) vhost_user
="no"
1391 --enable-vhost-user)
1393 if test "$mingw32" = "yes"; then
1394 error_exit
"vhost-user isn't available on win32"
1397 --disable-capstone) capstone
="no"
1399 --enable-capstone) capstone
="yes"
1401 --enable-capstone=git
) capstone
="git"
1403 --enable-capstone=system
) capstone
="system"
1405 --with-git=*) git
="$optarg"
1407 --enable-git-update) git_update
=yes
1409 --disable-git-update) git_update
=no
1412 echo "ERROR: unknown option $opt"
1413 echo "Try '$0 --help' for more information"
1419 if test "$vhost_user" = ""; then
1420 if test "$mingw32" = "yes"; then
1430 LDFLAGS
="-m32 $LDFLAGS"
1434 LDFLAGS
="-m64 $LDFLAGS"
1437 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1438 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1441 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1442 LDFLAGS
="-m64 $LDFLAGS"
1446 LDFLAGS
="-m31 $LDFLAGS"
1450 LDFLAGS
="-m64 $LDFLAGS"
1454 LDFLAGS
="-m32 $LDFLAGS"
1455 cc_i386
='$(CC) -m32'
1458 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1459 # If we truly care, we should simply detect this case at
1460 # runtime and generate the fallback to serial emulation.
1461 CPU_CFLAGS
="-m64 -mcx16"
1462 LDFLAGS
="-m64 $LDFLAGS"
1463 cc_i386
='$(CC) -m32'
1467 LDFLAGS
="-mx32 $LDFLAGS"
1468 cc_i386
='$(CC) -m32'
1470 # No special flags required for other host CPUs
1473 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1475 # For user-mode emulation the host arch has to be one we explicitly
1476 # support, even if we're using TCI.
1477 if [ "$ARCH" = "unknown" ]; then
1482 default_target_list
=""
1486 if [ "$softmmu" = "yes" ]; then
1487 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1489 if [ "$linux_user" = "yes" ]; then
1490 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1492 if [ "$bsd_user" = "yes" ]; then
1493 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1496 for config
in $mak_wilds; do
1497 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1500 # Enumerate public trace backends for --help output
1501 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1503 if test x
"$show_help" = x
"yes" ; then
1506 Usage: configure [options]
1507 Options: [defaults in brackets after descriptions]
1510 --help print this message
1511 --prefix=PREFIX install in PREFIX [$prefix]
1512 --interp-prefix=PREFIX where to find shared libraries, etc.
1513 use %M for cpu name [$interp_prefix]
1514 --target-list=LIST set target list (default: build everything)
1515 $(echo Available targets: $default_target_list | \
1516 fold -s -w 53 | sed -e 's/^/ /')
1518 Advanced options (experts only):
1519 --source-path=PATH path of source code [$source_path]
1520 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1521 --cc=CC use C compiler CC [$cc]
1522 --iasl=IASL use ACPI compiler IASL [$iasl]
1523 --host-cc=CC use C compiler CC [$host_cc] for code run at
1525 --cxx=CXX use C++ compiler CXX [$cxx]
1526 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1527 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1528 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1529 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1530 --make=MAKE use specified make [$make]
1531 --install=INSTALL use specified install [$install]
1532 --python=PYTHON use specified python [$python]
1533 --smbd=SMBD use specified smbd [$smbd]
1534 --with-git=GIT use specified git [$git]
1535 --static enable static build [$static]
1536 --mandir=PATH install man pages in PATH
1537 --datadir=PATH install firmware in PATH$confsuffix
1538 --docdir=PATH install documentation in PATH$confsuffix
1539 --bindir=PATH install binaries in PATH
1540 --libdir=PATH install libraries in PATH
1541 --libexecdir=PATH install helper binaries in PATH
1542 --sysconfdir=PATH install config in PATH$confsuffix
1543 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1544 --firmwarepath=PATH search PATH for firmware files
1545 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1546 --with-pkgversion=VERS use specified string as sub-version of the package
1547 --enable-debug enable common debug build options
1548 --enable-sanitizers enable default sanitizers
1549 --disable-strip disable stripping binaries
1550 --disable-werror disable compilation abort on warning
1551 --disable-stack-protector disable compiler-provided stack protection
1552 --audio-drv-list=LIST set audio drivers list:
1553 Available drivers: $audio_possible_drivers
1554 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1555 --block-drv-rw-whitelist=L
1556 set block driver read-write whitelist
1557 (affects only QEMU, not qemu-img)
1558 --block-drv-ro-whitelist=L
1559 set block driver read-only whitelist
1560 (affects only QEMU, not qemu-img)
1561 --enable-trace-backends=B Set trace backend
1562 Available backends: $trace_backend_list
1563 --with-trace-file=NAME Full PATH,NAME of file to store traces
1565 --disable-slirp disable SLIRP userspace network connectivity
1566 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1567 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1568 --oss-lib path to OSS library
1569 --cpu=CPU Build for host CPU [$cpu]
1570 --with-coroutine=BACKEND coroutine backend. Supported options:
1571 ucontext, sigaltstack, windows
1572 --enable-gcov enable test coverage analysis with gcov
1573 --gcov=GCOV use specified gcov [$gcov_tool]
1574 --disable-blobs disable installing provided firmware blobs
1575 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1576 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1577 --tls-priority default TLS protocol/cipher priority string
1578 --enable-gprof QEMU profiling with gprof
1579 --enable-profiler profiler support
1580 --enable-xen-pv-domain-build
1581 xen pv domain builder
1582 --enable-debug-stack-usage
1583 track the maximum stack usage of stacks created by qemu_alloc_stack
1585 Optional features, enabled with --enable-FEATURE and
1586 disabled with --disable-FEATURE, default is enabled if available:
1588 system all system emulation targets
1589 user supported user emulation targets
1590 linux-user all linux usermode emulation targets
1591 bsd-user all BSD usermode emulation targets
1592 docs build documentation
1593 guest-agent build the QEMU Guest Agent
1594 guest-agent-msi build guest agent Windows MSI installation package
1595 pie Position Independent Executables
1596 modules modules support
1597 debug-tcg TCG debugging (default is disabled)
1598 debug-info debugging information
1599 sparse sparse checker
1601 gnutls GNUTLS cryptography support
1602 nettle nettle cryptography support
1603 gcrypt libgcrypt cryptography support
1605 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1607 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1608 vte vte support for the gtk UI
1611 vnc-sasl SASL encryption for VNC server
1612 vnc-jpeg JPEG lossy compression for VNC server
1613 vnc-png PNG compression for VNC server
1614 cocoa Cocoa UI (Mac OS X only)
1616 mpath Multipath persistent reservation passthrough
1617 xen xen backend driver support
1619 brlapi BrlAPI (Braile)
1620 curl curl connectivity
1621 membarrier membarrier system call (for Linux 4.14+ or Windows)
1623 bluez bluez stack connectivity
1624 kvm KVM acceleration support
1625 hax HAX acceleration support
1626 hvf Hypervisor.framework acceleration support
1627 whpx Windows Hypervisor Platform acceleration support
1628 rdma Enable RDMA-based migration and PVRDMA support
1629 vde support for vde network
1630 netmap support for netmap network
1631 linux-aio Linux AIO support
1632 cap-ng libcap-ng support
1633 attr attr and xattr support
1634 vhost-net vhost-net acceleration support
1635 vhost-crypto vhost-crypto acceleration support
1637 rbd rados block device (rbd)
1638 libiscsi iscsi support
1640 smartcard smartcard support (libcacard)
1641 libusb libusb (for usb passthrough)
1642 live-block-migration Block migration in the main migration stream
1643 usb-redir usb network redirection support
1644 lzo support of lzo compression library
1645 snappy support of snappy compression library
1646 bzip2 support of bzip2 compression library
1647 (for reading bzip2-compressed dmg images)
1648 seccomp seccomp support
1649 coroutine-pool coroutine freelist (better performance)
1650 glusterfs GlusterFS backend
1652 libssh2 ssh block device support
1653 numa libnuma support
1654 libxml2 for Parallels image format
1655 tcmalloc tcmalloc support
1656 jemalloc jemalloc support
1657 replication replication support
1658 vhost-vsock virtio sockets device support
1659 opengl opengl support
1660 virglrenderer virgl rendering support
1661 xfsctl xfsctl support
1662 qom-cast-debug cast debugging support
1663 tools build qemu-io, qemu-nbd and qemu-image tools
1664 vxhs Veritas HyperScale vDisk backend support
1665 crypto-afalg Linux AF_ALG crypto backend driver
1666 vhost-user vhost-user support
1667 capstone capstone disassembler support
1669 NOTE: The object files are built at the place where configure is launched
1674 if ! has
$python; then
1675 error_exit
"Python not found. Use --python=/path/to/python"
1678 # Note that if the Python conditional here evaluates True we will exit
1679 # with status 1 which is a shell 'false' value.
1680 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6))'; then
1681 error_exit
"Cannot use '$python', Python 2 >= 2.6 or Python 3 is required." \
1682 "Use --python=/path/to/python to specify a supported Python."
1685 # Suppress writing compiled files
1688 # Check that the C compiler works. Doing this here before testing
1689 # the host CPU ensures that we had a valid CC to autodetect the
1690 # $cpu var (and we should bail right here if that's not the case).
1691 # It also allows the help message to be printed without a CC.
1693 if compile_object
; then
1694 : C compiler works ok
1696 error_exit
"\"$cc\" either does not exist or does not work"
1698 if ! compile_prog
; then
1699 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1702 # Now we have handled --enable-tcg-interpreter and know we're not just
1703 # printing the help message, bail out if the host CPU isn't supported.
1704 if test "$ARCH" = "unknown"; then
1705 if test "$tcg_interpreter" = "yes" ; then
1706 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1708 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1712 # Consult white-list to determine whether to enable werror
1713 # by default. Only enable by default for git builds
1714 if test -z "$werror" ; then
1715 if test -d "$source_path/.git" -a \
1716 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1723 if test "$bogus_os" = "yes"; then
1724 # Now that we know that we're not printing the help and that
1725 # the compiler works (so the results of the check_defines we used
1726 # to identify the OS are reliable), if we didn't recognize the
1727 # host OS we should stop now.
1728 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1731 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1732 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1733 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1734 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1735 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1736 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1737 gcc_flags
="-Wno-error=address-of-packed-member $gcc_flags"
1738 # Note that we do not add -Werror to gcc_flags here, because that would
1739 # enable it for all configure tests. If a configure test failed due
1740 # to -Werror this would just silently disable some features,
1741 # so it's too error prone.
1743 cc_has_warning_flag
() {
1746 # Use the positive sense of the flag when testing for -Wno-wombat
1747 # support (gcc will happily accept the -Wno- form of unknown
1749 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1750 compile_prog
"-Werror $optflag" ""
1753 for flag
in $gcc_flags; do
1754 if cc_has_warning_flag
$flag ; then
1755 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1759 if test "$mingw32" = "yes"; then
1760 stack_protector
="no"
1762 if test "$stack_protector" != "no"; then
1764 int main(int argc, char *argv[])
1766 char arr[64], *p = arr, *c = argv[0];
1773 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1775 for flag
in $gcc_flags; do
1776 # We need to check both a compile and a link, since some compiler
1777 # setups fail only on a .c->.o compile and some only at link time
1778 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1779 compile_prog
"-Werror $flag" ""; then
1780 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1785 if test "$stack_protector" = yes; then
1786 if test $sp_on = 0; then
1787 error_exit
"Stack protector not supported"
1792 # Disable -Wmissing-braces on older compilers that warn even for
1793 # the "universal" C zero initializer {0}.
1799 if compile_object
"-Werror" "" ; then
1802 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1805 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1806 # large functions that use global variables. The bug is in all releases of
1807 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1808 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1810 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1811 int main(void) { return 0; }
1813 #error No bug in this compiler.
1816 if compile_prog
"-Werror -fno-gcse" "" ; then
1817 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1820 if test "$static" = "yes" ; then
1821 if test "$modules" = "yes" ; then
1822 error_exit
"static and modules are mutually incompatible"
1824 if test "$pie" = "yes" ; then
1825 error_exit
"static and pie are mutually incompatible"
1831 # Unconditional check for compiler __thread support
1833 static __thread int tls_var;
1834 int main(void) { return tls_var; }
1837 if ! compile_prog
"-Werror" "" ; then
1838 error_exit
"Your compiler does not support the __thread specifier for " \
1839 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1842 if test "$pie" = ""; then
1843 case "$cpu-$targetos" in
1844 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1852 if test "$pie" != "no" ; then
1856 # define THREAD __thread
1861 static THREAD int tls_var;
1863 int main(void) { return tls_var; }
1866 if compile_prog
"-fPIE -DPIE" "-pie"; then
1867 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1868 LDFLAGS
="-pie $LDFLAGS"
1870 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1871 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1874 if test "$pie" = "yes"; then
1875 error_exit
"PIE not available due to missing toolchain support"
1877 echo "Disabling PIE due to missing toolchain support"
1882 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1883 CFLAGS_NOPIE
="-fno-pie"
1884 LDFLAGS_NOPIE
="-nopie"
1888 ##########################################
1889 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1890 # use i686 as default anyway, but for those that don't, an explicit
1891 # specification is necessary
1893 if test "$cpu" = "i386"; then
1895 static int sfaa(int *ptr)
1897 return __sync_fetch_and_and(ptr, 0);
1903 val = __sync_val_compare_and_swap(&val, 0, 1);
1908 if ! compile_prog
"" "" ; then
1909 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1913 #########################################
1914 # Solaris specific configure tool chain decisions
1916 if test "$solaris" = "yes" ; then
1917 if has
$install; then
1920 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1921 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1922 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1924 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1925 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1926 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1927 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1932 if test -f /usr
/ccs
/bin
/ar ; then
1933 error_exit
"No path includes ar" \
1934 "Add /usr/ccs/bin to your path and rerun configure"
1936 error_exit
"No path includes ar"
1940 if test -z "${target_list+xxx}" ; then
1941 for target
in $default_target_list; do
1942 supported_target
$target 2>/dev
/null
&& \
1943 target_list
="$target_list $target"
1945 target_list
="${target_list# }"
1947 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1948 for target
in $target_list; do
1949 # Check that we recognised the target name; this allows a more
1950 # friendly error message than if we let it fall through.
1951 case " $default_target_list " in
1955 error_exit
"Unknown target name '$target'"
1958 supported_target
$target ||
exit 1
1962 # see if system emulation was really requested
1963 case " $target_list " in
1964 *"-softmmu "*) softmmu
=yes
1970 feature_not_found
() {
1974 error_exit
"User requested feature $feature" \
1975 "configure was not able to find it." \
1980 # big/little endian test
1982 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1983 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1984 extern int foo(short *, short *);
1985 int main(int argc, char *argv[]) {
1986 return foo(big_endian, little_endian);
1990 if compile_object
; then
1991 if strings -a $TMPO |
grep -q BiGeNdIaN
; then
1993 elif strings -a $TMPO |
grep -q LiTtLeEnDiAn
; then
1996 echo big
/little
test failed
1999 echo big
/little
test failed
2002 ##########################################
2003 # cocoa implies not SDL or GTK
2004 # (the cocoa UI code currently assumes it is always the active UI
2005 # and doesn't interact well with other UI frontend code)
2006 if test "$cocoa" = "yes"; then
2007 if test "$sdl" = "yes"; then
2008 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
2010 if test "$gtk" = "yes"; then
2011 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
2017 # Some versions of Mac OS X incorrectly define SIZE_MAX
2021 int main(int argc, char *argv[]) {
2022 return printf("%zu", SIZE_MAX);
2025 have_broken_size_max
=no
2026 if ! compile_object
-Werror ; then
2027 have_broken_size_max
=yes
2030 ##########################################
2034 #include <sys/socket.h>
2035 #include <linux/ip.h>
2036 int main(void) { return sizeof(struct mmsghdr); }
2038 if compile_prog
"" "" ; then
2044 ##########################################
2045 # MinGW / Mingw-w64 localtime_r/gmtime_r check
2047 if test "$mingw32" = "yes"; then
2048 # Some versions of MinGW / Mingw-w64 lack localtime_r
2049 # and gmtime_r entirely.
2051 # Some versions of Mingw-w64 define a macro for
2052 # localtime_r/gmtime_r.
2054 # Some versions of Mingw-w64 will define functions
2055 # for localtime_r/gmtime_r, but only if you have
2056 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2057 # though, unistd.h and pthread.h both define
2060 # So this #undef localtime_r and #include <unistd.h>
2061 # are not in fact redundant.
2066 int main(void) { localtime_r(NULL, NULL); return 0; }
2068 if compile_prog
"" "" ; then
2075 ##########################################
2078 if ! has
"$pkg_config_exe"; then
2079 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2082 ##########################################
2085 if test "$linux_user" = "yes"; then
2088 #include <linux/futex.h>
2090 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2096 if ! compile_object
; then
2097 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2101 ##########################################
2104 if test "$lzo" != "no" ; then
2106 #include <lzo/lzo1x.h>
2107 int main(void) { lzo_version(); return 0; }
2109 if compile_prog
"" "-llzo2" ; then
2110 libs_softmmu
="$libs_softmmu -llzo2"
2113 if test "$lzo" = "yes"; then
2114 feature_not_found
"liblzo2" "Install liblzo2 devel"
2120 ##########################################
2123 if test "$snappy" != "no" ; then
2125 #include <snappy-c.h>
2126 int main(void) { snappy_max_compressed_length(4096); return 0; }
2128 if compile_prog
"" "-lsnappy" ; then
2129 libs_softmmu
="$libs_softmmu -lsnappy"
2132 if test "$snappy" = "yes"; then
2133 feature_not_found
"libsnappy" "Install libsnappy devel"
2139 ##########################################
2142 if test "$bzip2" != "no" ; then
2145 int main(void) { BZ2_bzlibVersion(); return 0; }
2147 if compile_prog
"" "-lbz2" ; then
2150 if test "$bzip2" = "yes"; then
2151 feature_not_found
"libbzip2" "Install libbzip2 devel"
2157 ##########################################
2160 if test "$seccomp" != "no" ; then
2163 libseccomp_minver
="2.1.0"
2166 libseccomp_minver
="2.2.0"
2169 libseccomp_minver
="2.2.3"
2172 libseccomp_minver
="2.3.0"
2175 libseccomp_minver
=""
2179 if test "$libseccomp_minver" != "" &&
2180 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2181 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2182 seccomp_libs
="$($pkg_config --libs libseccomp)"
2185 if test "$seccomp" = "yes" ; then
2186 if test "$libseccomp_minver" != "" ; then
2187 feature_not_found
"libseccomp" \
2188 "Install libseccomp devel >= $libseccomp_minver"
2190 feature_not_found
"libseccomp" \
2191 "libseccomp is not supported for host cpu $cpu"
2197 ##########################################
2200 if test "$xen" != "no" ; then
2201 # Check whether Xen library path is specified via --extra-ldflags to avoid
2202 # overriding this setting with pkg-config output. If not, try pkg-config
2203 # to obtain all needed flags.
2205 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2206 $pkg_config --exists xencontrol
; then
2207 xen_ctrl_version
="$(printf '%d%02d%02d' \
2208 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2210 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2211 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2212 if $pkg_config --exists xentoolcore
; then
2213 xen_pc
="$xen_pc xentoolcore"
2215 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2216 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2217 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2220 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2221 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2223 # First we test whether Xen headers and libraries are available.
2224 # If no, we are done and there is no Xen support.
2225 # If yes, more tests are run to detect the Xen version.
2229 #include <xenctrl.h>
2234 if ! compile_prog
"" "$xen_libs" ; then
2236 if test "$xen" = "yes" ; then
2237 feature_not_found
"xen" "Install xen devel"
2243 cat > $TMPC <<EOF &&
2244 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2245 #define __XEN_TOOLS__
2246 #include <xendevicemodel.h>
2248 xendevicemodel_handle *xd;
2250 xd = xendevicemodel_open(0, 0);
2251 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2256 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2258 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2259 xen_ctrl_version
=41100
2262 cat > $TMPC <<EOF &&
2263 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2264 #include <xenforeignmemory.h>
2265 #include <xentoolcore.h>
2267 xenforeignmemory_handle *xfmem;
2269 xfmem = xenforeignmemory_open(0, 0);
2270 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2271 xentoolcore_restrict_all(0);
2276 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2278 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2279 xen_ctrl_version
=41000
2282 cat > $TMPC <<EOF &&
2283 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2284 #define __XEN_TOOLS__
2285 #include <xendevicemodel.h>
2287 xendevicemodel_handle *xd;
2289 xd = xendevicemodel_open(0, 0);
2290 xendevicemodel_close(xd);
2295 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2297 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2298 xen_ctrl_version
=40900
2301 cat > $TMPC <<EOF &&
2303 * If we have stable libs the we don't want the libxc compat
2304 * layers, regardless of what CFLAGS we may have been given.
2306 * Also, check if xengnttab_grant_copy_segment_t is defined and
2307 * grant copy operation is implemented.
2309 #undef XC_WANT_COMPAT_EVTCHN_API
2310 #undef XC_WANT_COMPAT_GNTTAB_API
2311 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2312 #include <xenctrl.h>
2313 #include <xenstore.h>
2314 #include <xenevtchn.h>
2315 #include <xengnttab.h>
2316 #include <xenforeignmemory.h>
2318 #include <xen/hvm/hvm_info_table.h>
2319 #if !defined(HVM_MAX_VCPUS)
2320 # error HVM_MAX_VCPUS not defined
2323 xc_interface *xc = NULL;
2324 xenforeignmemory_handle *xfmem;
2325 xenevtchn_handle *xe;
2326 xengnttab_handle *xg;
2327 xen_domain_handle_t handle;
2328 xengnttab_grant_copy_segment_t* seg = NULL;
2332 xc = xc_interface_open(0, 0, 0);
2333 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2334 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2335 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2336 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2337 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2339 xfmem = xenforeignmemory_open(0, 0);
2340 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2342 xe = xenevtchn_open(0, 0);
2345 xg = xengnttab_open(0, 0);
2346 xengnttab_grant_copy(xg, 0, seg);
2351 compile_prog
"" "$xen_libs $xen_stable_libs"
2353 xen_ctrl_version
=40800
2356 cat > $TMPC <<EOF &&
2358 * If we have stable libs the we don't want the libxc compat
2359 * layers, regardless of what CFLAGS we may have been given.
2361 #undef XC_WANT_COMPAT_EVTCHN_API
2362 #undef XC_WANT_COMPAT_GNTTAB_API
2363 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2364 #include <xenctrl.h>
2365 #include <xenstore.h>
2366 #include <xenevtchn.h>
2367 #include <xengnttab.h>
2368 #include <xenforeignmemory.h>
2370 #include <xen/hvm/hvm_info_table.h>
2371 #if !defined(HVM_MAX_VCPUS)
2372 # error HVM_MAX_VCPUS not defined
2375 xc_interface *xc = NULL;
2376 xenforeignmemory_handle *xfmem;
2377 xenevtchn_handle *xe;
2378 xengnttab_handle *xg;
2379 xen_domain_handle_t handle;
2383 xc = xc_interface_open(0, 0, 0);
2384 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2385 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2386 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2387 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2388 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2390 xfmem = xenforeignmemory_open(0, 0);
2391 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2393 xe = xenevtchn_open(0, 0);
2396 xg = xengnttab_open(0, 0);
2397 xengnttab_map_grant_ref(xg, 0, 0, 0);
2402 compile_prog
"" "$xen_libs $xen_stable_libs"
2404 xen_ctrl_version
=40701
2407 cat > $TMPC <<EOF &&
2408 #include <xenctrl.h>
2411 xc_interface *xc = NULL;
2412 xen_domain_handle_t handle;
2413 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2417 compile_prog
"" "$xen_libs"
2419 xen_ctrl_version
=40700
2424 cat > $TMPC <<EOF &&
2425 #include <xenctrl.h>
2426 #include <xenstore.h>
2428 #include <xen/hvm/hvm_info_table.h>
2429 #if !defined(HVM_MAX_VCPUS)
2430 # error HVM_MAX_VCPUS not defined
2435 xc = xc_interface_open(0, 0, 0);
2436 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2437 xc_gnttab_open(NULL, 0);
2438 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2439 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2440 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2441 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2445 compile_prog
"" "$xen_libs"
2447 xen_ctrl_version
=40600
2452 cat > $TMPC <<EOF &&
2453 #include <xenctrl.h>
2454 #include <xenstore.h>
2456 #include <xen/hvm/hvm_info_table.h>
2457 #if !defined(HVM_MAX_VCPUS)
2458 # error HVM_MAX_VCPUS not defined
2463 xc = xc_interface_open(0, 0, 0);
2464 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2465 xc_gnttab_open(NULL, 0);
2466 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2467 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2468 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2472 compile_prog
"" "$xen_libs"
2474 xen_ctrl_version
=40500
2478 cat > $TMPC <<EOF &&
2479 #include <xenctrl.h>
2480 #include <xenstore.h>
2482 #include <xen/hvm/hvm_info_table.h>
2483 #if !defined(HVM_MAX_VCPUS)
2484 # error HVM_MAX_VCPUS not defined
2489 xc = xc_interface_open(0, 0, 0);
2490 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2491 xc_gnttab_open(NULL, 0);
2492 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2493 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2497 compile_prog
"" "$xen_libs"
2499 xen_ctrl_version
=40200
2503 if test "$xen" = "yes" ; then
2504 feature_not_found
"xen (unsupported version)" \
2505 "Install a supported xen (xen 4.2 or newer)"
2510 if test "$xen" = yes; then
2511 if test $xen_ctrl_version -ge 40701 ; then
2512 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2514 libs_softmmu
="$xen_libs $libs_softmmu"
2519 if test "$xen_pci_passthrough" != "no"; then
2520 if test "$xen" = "yes" && test "$linux" = "yes"; then
2521 xen_pci_passthrough
=yes
2523 if test "$xen_pci_passthrough" = "yes"; then
2524 error_exit
"User requested feature Xen PCI Passthrough" \
2525 " but this feature requires /sys from Linux"
2527 xen_pci_passthrough
=no
2531 if test "$xen_pv_domain_build" = "yes" &&
2532 test "$xen" != "yes"; then
2533 error_exit
"User requested Xen PV domain builder support" \
2534 "which requires Xen support."
2537 ##########################################
2538 # Windows Hypervisor Platform accelerator (WHPX) check
2539 if test "$whpx" != "no" ; then
2541 #include <windows.h>
2542 #include <WinHvPlatform.h>
2543 #include <WinHvEmulation.h>
2545 WHV_CAPABILITY whpx_cap;
2547 WHvGetCapability(WHvCapabilityCodeFeatures, &whpx_cap, sizeof(whpx_cap),
2552 if compile_prog
"" "-lWinHvPlatform -lWinHvEmulation" ; then
2553 libs_softmmu
="$libs_softmmu -lWinHvPlatform -lWinHvEmulation"
2556 if test "$whpx" = "yes"; then
2557 feature_not_found
"WinHvPlatform" "WinHvEmulation is not installed"
2563 ##########################################
2565 if test "$sparse" != "no" ; then
2569 if test "$sparse" = "yes" ; then
2570 feature_not_found
"sparse" "Install sparse binary"
2576 ##########################################
2578 if $pkg_config --exists "x11"; then
2580 x11_cflags
=$
($pkg_config --cflags x11
)
2581 x11_libs
=$
($pkg_config --libs x11
)
2584 ##########################################
2587 if test "$gtk" != "no"; then
2588 if test "$gtkabi" = ""; then
2589 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2590 # Use 2.0 as a fallback if that is available.
2591 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2593 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2599 gtkpackage
="gtk+-$gtkabi"
2600 gtkx11package
="gtk+-x11-$gtkabi"
2601 if test "$gtkabi" = "3.0" ; then
2606 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2607 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2608 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2609 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2610 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2612 gtk_cflags
="$gtk_cflags $x11_cflags"
2613 gtk_libs
="$gtk_libs $x11_libs"
2616 elif test "$gtk" = "yes"; then
2617 feature_not_found
"gtk" "Install gtk3-devel"
2624 ##########################################
2628 # Unfortunately some distros have bad pkg-config information for gnutls
2629 # such that it claims to exist but you get a compiler error if you try
2630 # to use the options returned by --libs. Specifically, Ubuntu for --static
2631 # builds doesn't work:
2632 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2634 # So sanity check the cflags/libs before assuming gnutls can be used.
2635 if ! $pkg_config --exists "gnutls"; then
2640 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2645 if test "$gnutls" != "no"; then
2646 if gnutls_works
; then
2647 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2648 gnutls_libs
=$
($pkg_config --libs gnutls
)
2649 libs_softmmu
="$gnutls_libs $libs_softmmu"
2650 libs_tools
="$gnutls_libs $libs_tools"
2651 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2654 # gnutls_rnd requires >= 2.11.0
2655 if $pkg_config --exists "gnutls >= 2.11.0"; then
2661 if $pkg_config --exists 'gnutls >= 3.0'; then
2664 elif $pkg_config --exists 'gnutls >= 2.12'; then
2665 case $
($pkg_config --libs --static gnutls
) in
2683 elif test "$gnutls" = "yes"; then
2684 feature_not_found
"gnutls" "Install gnutls devel"
2694 # If user didn't give a --disable/enable-gcrypt flag,
2695 # then mark as disabled if user requested nettle
2696 # explicitly, or if gnutls links to nettle
2697 if test -z "$gcrypt"
2699 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2705 # If user didn't give a --disable/enable-nettle flag,
2706 # then mark as disabled if user requested gcrypt
2707 # explicitly, or if gnutls links to gcrypt
2708 if test -z "$nettle"
2710 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2716 has_libgcrypt_config
() {
2717 if ! has
"libgcrypt-config"
2722 if test -n "$cross_prefix"
2724 host=$
(libgcrypt-config
--host)
2725 if test "$host-" != $cross_prefix
2734 if test "$gcrypt" != "no"; then
2735 if has_libgcrypt_config
; then
2736 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2737 gcrypt_libs
=$
(libgcrypt-config
--libs)
2738 # Debian has remove -lgpg-error from libgcrypt-config
2739 # as it "spreads unnecessary dependencies" which in
2740 # turn breaks static builds...
2741 if test "$static" = "yes"
2743 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2745 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2746 libs_tools
="$gcrypt_libs $libs_tools"
2747 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2749 if test -z "$nettle"; then
2756 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2758 NULL, 0, 0, 0, NULL);
2762 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2769 gcry_mac_hd_t handle;
2770 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2771 GCRY_MAC_FLAG_SECURE, NULL);
2775 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2779 if test "$gcrypt" = "yes"; then
2780 feature_not_found
"gcrypt" "Install gcrypt devel"
2788 if test "$nettle" != "no"; then
2789 if $pkg_config --exists "nettle"; then
2790 nettle_cflags
=$
($pkg_config --cflags nettle
)
2791 nettle_libs
=$
($pkg_config --libs nettle
)
2792 nettle_version
=$
($pkg_config --modversion nettle
)
2793 libs_softmmu
="$nettle_libs $libs_softmmu"
2794 libs_tools
="$nettle_libs $libs_tools"
2795 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2800 #include <nettle/pbkdf2.h>
2802 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2806 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2810 if test "$nettle" = "yes"; then
2811 feature_not_found
"nettle" "Install nettle devel"
2818 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2820 error_exit
"Only one of gcrypt & nettle can be enabled"
2823 ##########################################
2824 # libtasn1 - only for the TLS creds/session test suite
2829 if $pkg_config --exists "libtasn1"; then
2830 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2831 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2837 ##########################################
2838 # getifaddrs (for tests/test-io-channel-socket )
2841 if ! check_include
"ifaddrs.h" ; then
2845 ##########################################
2848 if test "$vte" != "no"; then
2849 if test "$gtkabi" = "3.0"; then
2850 vteminversion
="0.32.0"
2851 if $pkg_config --exists "vte-2.91"; then
2852 vtepackage
="vte-2.91"
2854 vtepackage
="vte-2.90"
2858 vteminversion
="0.24.0"
2860 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2861 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2862 vte_libs
=$
($pkg_config --libs $vtepackage)
2863 vteversion
=$
($pkg_config --modversion $vtepackage)
2865 elif test "$vte" = "yes"; then
2866 if test "$gtkabi" = "3.0"; then
2867 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2869 feature_not_found
"vte" "Install libvte devel"
2876 ##########################################
2879 # Look for sdl configuration program (pkg-config or sdl-config). Try
2880 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2885 if test "$sdlabi" = ""; then
2886 if $pkg_config --exists "sdl2"; then
2888 elif $pkg_config --exists "sdl"; then
2895 if test $sdlabi = "2.0"; then
2896 sdl_config
=$sdl2_config
2898 sdlconfigname
=sdl2_config
2899 elif test $sdlabi = "1.2"; then
2901 sdlconfigname
=sdl_config
2903 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2906 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2907 sdl_config
=$sdlconfigname
2910 if $pkg_config $sdlname --exists; then
2911 sdlconfig
="$pkg_config $sdlname"
2912 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2913 elif has
${sdl_config}; then
2914 sdlconfig
="$sdl_config"
2915 sdlversion
=$
($sdlconfig --version)
2917 if test "$sdl" = "yes" ; then
2918 feature_not_found
"sdl" "Install SDL2-devel"
2921 # no need to do the rest
2924 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2925 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2930 #undef main /* We don't want SDL to override our main() */
2931 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2933 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2934 sdl_cflags
="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
2935 if test "$static" = "yes" ; then
2936 if $pkg_config $sdlname --exists; then
2937 sdl_libs
=$
($pkg_config $sdlname --static --libs 2>/dev
/null
)
2939 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2942 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2944 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2945 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2951 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2952 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2953 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2954 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2955 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2957 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2963 else # sdl not found
2964 if test "$sdl" = "yes" ; then
2965 feature_not_found
"sdl" "Install SDL devel"
2968 fi # sdl compile test
2971 if test "$sdl" != "no" ; then
2975 if test "$sdl" = "yes" ; then
2978 #if defined(SDL_VIDEO_DRIVER_X11)
2979 #include <X11/XKBlib.h>
2981 #error No x11 support
2983 int main(void) { return 0; }
2985 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2987 sdl_cflags
="$sdl_cflags $x11_cflags"
2988 sdl_libs
="$sdl_libs $x11_libs"
2992 ##########################################
2993 # RDMA needs OpenFabrics libraries
2994 if test "$rdma" != "no" ; then
2996 #include <rdma/rdma_cma.h>
2997 int main(void) { return 0; }
2999 rdma_libs
="-lrdmacm -libverbs -libumad"
3000 if compile_prog
"" "$rdma_libs" ; then
3002 libs_softmmu
="$libs_softmmu $rdma_libs"
3004 if test "$rdma" = "yes" ; then
3006 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
3008 " (1) Fast: Install infiniband packages (devel) from your distro." \
3009 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3010 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3016 ##########################################
3017 # VNC SASL detection
3018 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
3020 #include <sasl/sasl.h>
3022 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3024 # Assuming Cyrus-SASL installed in /usr prefix
3026 vnc_sasl_libs
="-lsasl2"
3027 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3029 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
3030 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
3032 if test "$vnc_sasl" = "yes" ; then
3033 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
3039 ##########################################
3040 # VNC JPEG detection
3041 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
3042 if $pkg_config --exists libjpeg
; then
3044 libs_softmmu
="$libs_softmmu $($pkg_config --libs libjpeg)"
3045 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libjpeg)"
3049 #include <jpeglib.h>
3050 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3053 vnc_jpeg_libs
="-ljpeg"
3054 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3056 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
3057 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
3059 if test "$vnc_jpeg" = "yes" ; then
3060 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
3067 ##########################################
3069 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
3071 //#include <stdio.h>
3075 png_structp png_ptr;
3076 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
3077 return png_ptr != 0;
3080 if $pkg_config libpng
--exists; then
3081 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
3082 vnc_png_libs
=$
($pkg_config libpng
--libs)
3085 vnc_png_libs
="-lpng"
3087 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
3089 libs_softmmu
="$vnc_png_libs $libs_softmmu"
3090 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
3092 if test "$vnc_png" = "yes" ; then
3093 feature_not_found
"vnc-png" "Install libpng devel"
3099 ##########################################
3101 if test "$xkbcommon" != "no" ; then
3102 if $pkg_config xkbcommon
--exists; then
3103 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
3104 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
3107 if test "$xkbcommon" = "yes" ; then
3108 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
3114 ##########################################
3115 # fnmatch() probe, used for ACL routines
3118 #include <fnmatch.h>
3121 fnmatch("foo", "foo", 0);
3125 if compile_prog
"" "" ; then
3129 ##########################################
3130 # xfsctl() probe, used for file-posix.c
3131 if test "$xfs" != "no" ; then
3133 #include <stddef.h> /* NULL */
3134 #include <xfs/xfs.h>
3137 xfsctl(NULL, 0, 0, NULL);
3141 if compile_prog
"" "" ; then
3144 if test "$xfs" = "yes" ; then
3145 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3151 ##########################################
3152 # vde libraries probe
3153 if test "$vde" != "no" ; then
3154 vde_libs
="-lvdeplug"
3157 #include <libvdeplug.h>
3160 struct vde_open_args a = {0, 0, 0};
3166 if compile_prog
"" "$vde_libs" ; then
3169 if test "$vde" = "yes" ; then
3170 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3176 ##########################################
3177 # netmap support probe
3178 # Apart from looking for netmap headers, we make sure that the host API version
3179 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3180 # a minor/major version number. Minor new features will be marked with values up
3181 # to 15, and if something happens that requires a change to the backend we will
3182 # move above 15, submit the backend fixes and modify this two bounds.
3183 if test "$netmap" != "no" ; then
3185 #include <inttypes.h>
3187 #include <net/netmap.h>
3188 #include <net/netmap_user.h>
3189 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3192 int main(void) { return 0; }
3194 if compile_prog
"" "" ; then
3197 if test "$netmap" = "yes" ; then
3198 feature_not_found
"netmap"
3204 ##########################################
3205 # libcap-ng library probe
3206 if test "$cap_ng" != "no" ; then
3212 capng_capability_to_name(CAPNG_EFFECTIVE);
3216 if compile_prog
"" "$cap_libs" ; then
3218 libs_tools
="$cap_libs $libs_tools"
3220 if test "$cap_ng" = "yes" ; then
3221 feature_not_found
"cap_ng" "Install libcap-ng devel"
3227 ##########################################
3228 # Sound support libraries probe
3239 int main(void) { $exp }
3241 if compile_prog
"$cfl" "$lib" ; then
3244 error_exit
"$drv check failed" \
3245 "Make sure to have the $drv libs and headers installed."
3249 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3250 for drv
in $audio_drv_list; do
3253 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
3254 "return snd_pcm_close((snd_pcm_t *)0);"
3255 alsa_libs
="-lasound"
3259 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
3260 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3261 pulse_libs
="-lpulse"
3266 if test "$sdl" = "no"; then
3267 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3272 coreaudio_libs
="-framework CoreAudio"
3276 dsound_libs
="-lole32 -ldxguid"
3285 # XXX: Probes for CoreAudio, DirectSound
3289 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3290 error_exit
"Unknown driver '$drv' selected" \
3291 "Possible drivers are: $audio_possible_drivers"
3297 ##########################################
3300 if test "$brlapi" != "no" ; then
3301 brlapi_libs
="-lbrlapi"
3305 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3307 if compile_prog
"" "$brlapi_libs" ; then
3310 if test "$brlapi" = "yes" ; then
3311 feature_not_found
"brlapi" "Install brlapi devel"
3317 ##########################################
3319 if test "$curses" != "no" ; then
3320 if test "$mingw32" = "yes" ; then
3321 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3322 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3324 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3325 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3334 setlocale(LC_ALL, "");
3336 addwstr(L"wide chars\n");
3338 add_wch(WACS_DEGREE);
3343 for curses_inc
in $curses_inc_list; do
3344 # Make sure we get the wide character prototypes
3345 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3347 for curses_lib
in $curses_lib_list; do
3349 if compile_prog
"$curses_inc" "$curses_lib" ; then
3354 if test "$curses_found" = yes ; then
3359 if test "$curses_found" = "yes" ; then
3362 if test "$curses" = "yes" ; then
3363 feature_not_found
"curses" "Install ncurses devel"
3369 ##########################################
3371 if test "$curl" != "no" ; then
3372 if $pkg_config libcurl
--exists; then
3373 curlconfig
="$pkg_config libcurl"
3375 curlconfig
=curl-config
3378 #include <curl/curl.h>
3379 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3381 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3382 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3383 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3386 if test "$curl" = "yes" ; then
3387 feature_not_found
"curl" "Install libcurl devel"
3393 ##########################################
3394 # bluez support probe
3395 if test "$bluez" != "no" ; then
3397 #include <bluetooth/bluetooth.h>
3398 int main(void) { return bt_error(0); }
3400 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3401 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3402 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3404 libs_softmmu
="$bluez_libs $libs_softmmu"
3406 if test "$bluez" = "yes" ; then
3407 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3413 ##########################################
3414 # glib support probe
3416 if test "$mingw32" = yes; then
3421 glib_modules
=gthread-2.0
3422 if test "$modules" = yes; then
3423 glib_modules
="$glib_modules gmodule-export-2.0"
3426 # This workaround is required due to a bug in pkg-config file for glib as it
3427 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3429 if test "$static" = yes -a "$mingw32" = yes; then
3430 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3433 for i
in $glib_modules; do
3434 if $pkg_config --atleast-version=$glib_req_ver $i; then
3435 glib_cflags
=$
($pkg_config --cflags $i)
3436 glib_libs
=$
($pkg_config --libs $i)
3437 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3438 LIBS
="$glib_libs $LIBS"
3439 libs_qga
="$glib_libs $libs_qga"
3441 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3445 # Sanity check that the current size_t matches the
3446 # size that glib thinks it should be. This catches
3447 # problems on multi-arch where people try to build
3448 # 32-bit QEMU while pointing at 64-bit glib headers
3453 #define QEMU_BUILD_BUG_ON(x) \
3454 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3457 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3462 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3463 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3464 "You probably need to set PKG_CONFIG_LIBDIR"\
3465 "to point to the right pkg-config files for your"\
3469 # g_test_trap_subprocess added in 2.38. Used by some tests.
3471 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
3475 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3478 int main(void) { return 0; }
3480 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3481 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3482 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3483 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3487 #########################################
3490 if test "$zlib" != "no" ; then
3491 if $pkg_config --exists zlib
; then
3492 zlib_cflags
=$
($pkg_config --cflags zlib
)
3493 zlib_libs
=$
($pkg_config --libs zlib
)
3494 QEMU_CFLAGS
="$zlib_cflags $QEMU_CFLAGS"
3495 LIBS
="$zlib_libs $LIBS"
3499 int main(void) { zlibVersion(); return 0; }
3501 if compile_prog
"" "-lz" ; then
3504 error_exit
"zlib check failed" \
3505 "Make sure to have the zlib libs and headers installed."
3510 ##########################################
3511 # SHA command probe for modules
3512 if test "$modules" = yes; then
3513 shacmd_probe
="sha1sum sha1 shasum"
3514 for c
in $shacmd_probe; do
3520 if test "$shacmd" = ""; then
3521 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3525 ##########################################
3526 # pixman support probe
3528 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3531 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3532 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3533 pixman_libs
=$
($pkg_config --libs pixman-1
)
3535 error_exit
"pixman >= 0.21.8 not present." \
3536 "Please install the pixman devel package."
3539 ##########################################
3540 # libmpathpersist probe
3542 if test "$mpath" != "no" ; then
3544 #include <libudev.h>
3545 #include <mpath_persist.h>
3546 unsigned mpath_mx_alloc_len = 1024;
3548 static struct config *multipath_conf;
3549 extern struct udev *udev;
3550 extern struct config *get_multipath_config(void);
3551 extern void put_multipath_config(struct config *conf);
3553 struct config *get_multipath_config(void) { return multipath_conf; }
3554 void put_multipath_config(struct config *conf) { }
3558 multipath_conf = mpath_lib_init();
3562 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3571 ##########################################
3574 if test "$cap" != "no" ; then
3577 #include <sys/capability.h>
3578 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3580 if compile_prog
"" "-lcap" ; then
3587 ##########################################
3589 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3593 #include <pthread.h>
3594 static void *f(void *p) { return NULL; }
3597 pthread_create(&thread, 0, f, 0);
3601 if compile_prog
"" "" ; then
3604 for pthread_lib
in $PTHREADLIBS_LIST; do
3605 if compile_prog
"" "$pthread_lib" ; then
3608 for lib_entry
in $LIBS; do
3609 if test "$lib_entry" = "$pthread_lib"; then
3614 if test "$found" = "no"; then
3615 LIBS
="$pthread_lib $LIBS"
3616 libs_qga
="$pthread_lib $libs_qga"
3618 PTHREAD_LIB
="$pthread_lib"
3624 if test "$mingw32" != yes -a "$pthread" = no
; then
3625 error_exit
"pthread check failed" \
3626 "Make sure to have the pthread libs and headers installed."
3629 # check for pthread_setname_np
3630 pthread_setname_np
=no
3632 #include <pthread.h>
3634 static void *f(void *p) { return NULL; }
3638 pthread_create(&thread, 0, f, 0);
3639 pthread_setname_np(thread, "QEMU");
3643 if compile_prog
"" "$pthread_lib" ; then
3644 pthread_setname_np
=yes
3647 ##########################################
3649 if test "$rbd" != "no" ; then
3652 #include <rbd/librbd.h>
3655 rados_create(&cluster, NULL);
3659 rbd_libs
="-lrbd -lrados"
3660 if compile_prog
"" "$rbd_libs" ; then
3663 if test "$rbd" = "yes" ; then
3664 feature_not_found
"rados block device" "Install librbd/ceph devel"
3670 ##########################################
3672 min_libssh2_version
=1.2.8
3673 if test "$libssh2" != "no" ; then
3674 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3675 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3676 libssh2_libs
=$
($pkg_config libssh2
--libs)
3679 if test "$libssh2" = "yes" ; then
3680 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3686 ##########################################
3687 # libssh2_sftp_fsync probe
3689 if test "$libssh2" = "yes"; then
3692 #include <libssh2.h>
3693 #include <libssh2_sftp.h>
3695 LIBSSH2_SESSION *session;
3697 LIBSSH2_SFTP_HANDLE *sftp_handle;
3698 session = libssh2_session_init ();
3699 sftp = libssh2_sftp_init (session);
3700 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3701 libssh2_sftp_fsync (sftp_handle);
3705 # libssh2_cflags/libssh2_libs defined in previous test.
3706 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3707 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3711 ##########################################
3714 if test "$linux_aio" != "no" ; then
3717 #include <sys/eventfd.h>
3719 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3721 if compile_prog
"" "-laio" ; then
3724 if test "$linux_aio" = "yes" ; then
3725 feature_not_found
"linux AIO" "Install libaio devel"
3731 ##########################################
3732 # TPM passthrough is only on x86 Linux
3734 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3735 tpm_passthrough
=$tpm
3740 # TPM emulator is for all posix systems
3741 if test "$mingw32" != "yes"; then
3746 ##########################################
3749 if test "$attr" != "no" ; then
3752 #include <sys/types.h>
3753 #ifdef CONFIG_LIBATTR
3754 #include <attr/xattr.h>
3756 #include <sys/xattr.h>
3758 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3760 if compile_prog
"" "" ; then
3762 # Older distros have <attr/xattr.h>, and need -lattr:
3763 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3768 if test "$attr" = "yes" ; then
3769 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3775 ##########################################
3778 #include <sys/types.h>
3779 #include <sys/uio.h>
3781 int main(void) { return sizeof(struct iovec); }
3784 if compile_prog
"" "" ; then
3788 ##########################################
3791 #include <sys/types.h>
3792 #include <sys/uio.h>
3794 int main(void) { return preadv(0, 0, 0, 0); }
3797 if compile_prog
"" "" ; then
3801 ##########################################
3803 # fdt support is mandatory for at least some target architectures,
3804 # so insist on it if we're building those system emulators.
3806 for target
in $target_list; do
3808 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu|riscv
*-softmmu)
3814 if test "$fdt_required" = "yes"; then
3815 if test "$fdt" = "no"; then
3816 error_exit
"fdt disabled but some requested targets require it." \
3817 "You can turn off fdt only if you also disable all the system emulation" \
3818 "targets which need it (by specifying a cut down --target-list)."
3823 if test "$fdt" != "no" ; then
3825 # explicitly check for libfdt_env.h as it is missing in some stable installs
3826 # and test for required functions to make sure we are on a version >= 1.4.2
3829 #include <libfdt_env.h>
3830 int main(void) { fdt_first_subnode(0, 0); return 0; }
3832 if compile_prog
"" "$fdt_libs" ; then
3833 # system DTC is good - use it
3836 # have GIT checkout, so activate dtc submodule
3837 if test -e "${source_path}/.git" ; then
3838 git_submodules
="${git_submodules} dtc"
3840 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
3843 if [ "$pwd_is_source_path" != "y" ] ; then
3844 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3845 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3847 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3848 fdt_ldflags
="-L\$(BUILD_DIR)/dtc/libfdt"
3849 fdt_libs
="$fdt_libs"
3850 elif test "$fdt" = "yes" ; then
3851 # Not a git build & no libfdt found, prompt for system install
3852 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
3853 "Please install the DTC (libfdt) devel package"
3855 # don't have and don't want
3862 libs_softmmu
="$libs_softmmu $fdt_libs"
3864 ##########################################
3865 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3867 if test "$opengl" != "no" ; then
3868 opengl_pkgs
="epoxy libdrm gbm"
3869 if $pkg_config $opengl_pkgs; then
3870 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs)"
3871 opengl_libs
="$($pkg_config --libs $opengl_pkgs)"
3873 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3876 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3878 if test "$opengl" = "yes" ; then
3879 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3887 if test "$opengl" = "yes"; then
3889 #include <epoxy/egl.h>
3890 #ifndef EGL_MESA_image_dma_buf_export
3891 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3893 int main(void) { return 0; }
3895 if compile_prog
"" "" ; then
3900 ##########################################
3902 if test "$libxml2" != "no" ; then
3903 if $pkg_config --exists libxml-2.0
; then
3905 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
3906 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
3908 if test "$libxml2" = "yes"; then
3909 feature_not_found
"libxml2" "Install libxml2 devel"
3915 ##########################################
3917 if test "$glusterfs" != "no" ; then
3918 if $pkg_config --atleast-version=3 glusterfs-api
; then
3920 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3921 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3922 if $pkg_config --atleast-version=4 glusterfs-api
; then
3923 glusterfs_xlator_opt
="yes"
3925 if $pkg_config --atleast-version=5 glusterfs-api
; then
3926 glusterfs_discard
="yes"
3928 if $pkg_config --atleast-version=6 glusterfs-api
; then
3929 glusterfs_fallocate
="yes"
3930 glusterfs_zerofill
="yes"
3933 if test "$glusterfs" = "yes" ; then
3934 feature_not_found
"GlusterFS backend support" \
3935 "Install glusterfs-api devel >= 3"
3941 # Check for inotify functions when we are building linux-user
3942 # emulator. This is done because older glibc versions don't
3943 # have syscall stubs for these implemented. In that case we
3944 # don't provide them even if kernel supports them.
3948 #include <sys/inotify.h>
3953 /* try to start inotify */
3954 return inotify_init();
3957 if compile_prog
"" "" ; then
3963 #include <sys/inotify.h>
3968 /* try to start inotify */
3969 return inotify_init1(0);
3972 if compile_prog
"" "" ; then
3976 # check if pipe2 is there
3985 return pipe2(pipefd, O_CLOEXEC);
3988 if compile_prog
"" "" ; then
3992 # check if accept4 is there
3995 #include <sys/socket.h>
4000 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4004 if compile_prog
"" "" ; then
4008 # check if tee/splice is there. vmsplice was added same time.
4018 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4019 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4023 if compile_prog
"" "" ; then
4027 ##########################################
4030 if test "$numa" != "no" ; then
4033 int main(void) { return numa_available(); }
4036 if compile_prog
"" "-lnuma" ; then
4038 libs_softmmu
="-lnuma $libs_softmmu"
4040 if test "$numa" = "yes" ; then
4041 feature_not_found
"numa" "install numactl devel"
4047 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4048 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4052 # Even if malloc_trim() is available, these non-libc memory allocators
4053 # do not support it.
4054 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
4055 if test "$malloc_trim" = "yes" ; then
4056 echo "Disabling malloc_trim with non-libc memory allocator"
4061 #######################################
4064 if test "$malloc_trim" != "no" ; then
4067 int main(void) { malloc_trim(0); return 0; }
4069 if compile_prog
"" "" ; then
4076 ##########################################
4079 if test "$tcmalloc" = "yes" ; then
4082 int main(void) { malloc(1); return 0; }
4085 if compile_prog
"" "-ltcmalloc" ; then
4086 LIBS
="-ltcmalloc $LIBS"
4088 feature_not_found
"tcmalloc" "install gperftools devel"
4092 ##########################################
4095 if test "$jemalloc" = "yes" ; then
4098 int main(void) { malloc(1); return 0; }
4101 if compile_prog
"" "-ljemalloc" ; then
4102 LIBS
="-ljemalloc $LIBS"
4104 feature_not_found
"jemalloc" "install jemalloc devel"
4108 ##########################################
4113 #include <sys/syscall.h>
4115 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4118 if compile_prog
"" "" ; then
4122 # check if eventfd is supported
4125 #include <sys/eventfd.h>
4129 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
4132 if compile_prog
"" "" ; then
4136 # check if memfd is supported
4139 #include <sys/mman.h>
4143 return memfd_create("foo", MFD_ALLOW_SEALING);
4146 if compile_prog
"" "" ; then
4152 # check for fallocate
4159 fallocate(0, 0, 0, 0);
4163 if compile_prog
"" "" ; then
4167 # check for fallocate hole punching
4168 fallocate_punch_hole
=no
4171 #include <linux/falloc.h>
4175 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4179 if compile_prog
"" "" ; then
4180 fallocate_punch_hole
=yes
4183 # check that fallocate supports range zeroing inside the file
4184 fallocate_zero_range
=no
4187 #include <linux/falloc.h>
4191 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4195 if compile_prog
"" "" ; then
4196 fallocate_zero_range
=yes
4199 # check for posix_fallocate
4206 posix_fallocate(0, 0, 0);
4210 if compile_prog
"" "" ; then
4214 # check for sync_file_range
4221 sync_file_range(0, 0, 0, 0);
4225 if compile_prog
"" "" ; then
4229 # check for linux/fiemap.h and FS_IOC_FIEMAP
4232 #include <sys/ioctl.h>
4233 #include <linux/fs.h>
4234 #include <linux/fiemap.h>
4238 ioctl(0, FS_IOC_FIEMAP, 0);
4242 if compile_prog
"" "" ; then
4257 if compile_prog
"" "" ; then
4261 # check for ppoll support
4268 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4269 ppoll(&pfd, 1, 0, 0);
4273 if compile_prog
"" "" ; then
4277 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4278 prctl_pr_set_timerslack
=no
4280 #include <sys/prctl.h>
4284 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4288 if compile_prog
"" "" ; then
4289 prctl_pr_set_timerslack
=yes
4292 # check for epoll support
4295 #include <sys/epoll.h>
4303 if compile_prog
"" "" ; then
4307 # epoll_create1 is a later addition
4308 # so we must check separately for its presence
4311 #include <sys/epoll.h>
4315 /* Note that we use epoll_create1 as a value, not as
4316 * a function being called. This is necessary so that on
4317 * old SPARC glibc versions where the function was present in
4318 * the library but not declared in the header file we will
4319 * fail the configure check. (Otherwise we will get a compiler
4320 * warning but not an error, and will proceed to fail the
4321 * qemu compile where we compile with -Werror.)
4323 return (int)(uintptr_t)&epoll_create1;
4326 if compile_prog
"" "" ; then
4330 # check for sendfile support
4333 #include <sys/sendfile.h>
4337 return sendfile(0, 0, 0, 0);
4340 if compile_prog
"" "" ; then
4344 # check for timerfd support (glibc 2.8 and newer)
4347 #include <sys/timerfd.h>
4351 return(timerfd_create(CLOCK_REALTIME, 0));
4354 if compile_prog
"" "" ; then
4358 # check for setns and unshare support
4371 if compile_prog
"" "" ; then
4375 # clock_adjtime probe
4382 return clock_adjtime(0, 0);
4386 if compile_prog
"" "" ; then
4401 if compile_prog
"" "" ; then
4405 # Check if tools are available to build documentation.
4406 if test "$docs" != "no" ; then
4407 if has makeinfo
&& has pod2man
; then
4410 if test "$docs" = "yes" ; then
4411 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4417 if test "$want_tools" = ""; then
4418 if test $
(expr "$target_list" : ".*softmmu.*") != 0; then
4425 # Search for bswap_32 function
4428 #include <byteswap.h>
4429 int main(void) { return bswap_32(0); }
4431 if compile_prog
"" "" ; then
4435 # Search for bswap32 function
4438 #include <sys/endian.h>
4439 #include <sys/types.h>
4440 #include <machine/bswap.h>
4441 int main(void) { return bswap32(0); }
4443 if compile_prog
"" "" ; then
4447 ##########################################
4448 # Do we have libiscsi >= 1.9.0
4449 if test "$libiscsi" != "no" ; then
4450 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4452 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4453 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4455 if test "$libiscsi" = "yes" ; then
4456 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4462 ##########################################
4466 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4468 if compile_prog
"" "" ; then
4470 elif compile_prog
"" "-lm" ; then
4472 libs_qga
="-lm $libs_qga"
4474 error_exit
"libm check failed"
4477 ##########################################
4479 # uClibc provides 2 versions of clock_gettime(), one with realtime
4480 # support and one without. This means that the clock_gettime() don't
4481 # need -lrt. We still need it for timer_create() so we check for this
4482 # function in addition.
4487 timer_create(CLOCK_REALTIME, NULL, NULL);
4488 return clock_gettime(CLOCK_REALTIME, NULL);
4492 if compile_prog
"" "" ; then
4494 # we need pthread for static linking. use previous pthread test result
4495 elif compile_prog
"" "$pthread_lib -lrt" ; then
4497 libs_qga
="$libs_qga -lrt"
4500 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4501 "$haiku" != "yes" ; then
4502 libs_softmmu
="-lutil $libs_softmmu"
4505 ##########################################
4507 if test "$spice" != "no" ; then
4510 int main(void) { spice_server_new(); return 0; }
4512 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4513 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4514 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4515 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4516 compile_prog
"$spice_cflags" "$spice_libs" ; then
4518 libs_softmmu
="$libs_softmmu $spice_libs"
4519 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4520 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4521 spice_server_version
=$
($pkg_config --modversion spice-server
)
4523 if test "$spice" = "yes" ; then
4524 feature_not_found
"spice" \
4525 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4531 # check for smartcard support
4532 if test "$smartcard" != "no"; then
4533 if $pkg_config --atleast-version=2.5.1 libcacard
; then
4534 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4535 libcacard_libs
=$
($pkg_config --libs libcacard
)
4538 if test "$smartcard" = "yes"; then
4539 feature_not_found
"smartcard" "Install libcacard devel"
4546 if test "$libusb" != "no" ; then
4547 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4549 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4550 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4552 if test "$libusb" = "yes"; then
4553 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4559 # check for usbredirparser for usb network redirection support
4560 if test "$usb_redir" != "no" ; then
4561 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4563 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4564 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4566 if test "$usb_redir" = "yes"; then
4567 feature_not_found
"usb-redir" "Install usbredir devel"
4573 ##########################################
4574 # check if we have VSS SDK headers for win
4576 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4577 case "$vss_win32_sdk" in
4578 "") vss_win32_include
="-isystem $source_path" ;;
4579 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4580 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4581 vss_win32_include
="-isystem $source_path/.sdk/vss"
4582 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4584 *) vss_win32_include
="-isystem $vss_win32_sdk"
4587 #define __MIDL_user_allocate_free_DEFINED__
4588 #include <inc/win2003/vss.h>
4589 int main(void) { return VSS_CTX_BACKUP; }
4591 if compile_prog
"$vss_win32_include" "" ; then
4592 guest_agent_with_vss
="yes"
4593 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4594 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4595 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4597 if test "$vss_win32_sdk" != "" ; then
4598 echo "ERROR: Please download and install Microsoft VSS SDK:"
4599 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4600 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4601 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4602 echo "ERROR: The headers are extracted in the directory \`inc'."
4603 feature_not_found
"VSS support"
4605 guest_agent_with_vss
="no"
4609 ##########################################
4610 # lookup Windows platform SDK (if not specified)
4611 # The SDK is needed only to build .tlb (type library) file of guest agent
4612 # VSS provider from the source. It is usually unnecessary because the
4613 # pre-compiled .tlb file is included.
4615 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4616 if test -z "$win_sdk"; then
4617 programfiles
="$PROGRAMFILES"
4618 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4619 if test -n "$programfiles"; then
4620 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4622 feature_not_found
"Windows SDK"
4624 elif test "$win_sdk" = "no"; then
4629 ##########################################
4630 # check if mingw environment provides a recent ntddscsi.h
4631 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4633 #include <windows.h>
4634 #include <ntddscsi.h>
4636 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4637 #error Missing required ioctl definitions
4639 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4643 if compile_prog
"" "" ; then
4644 guest_agent_ntddscsi
=yes
4645 libs_qga
="-lsetupapi $libs_qga"
4649 ##########################################
4650 # virgl renderer probe
4652 if test "$virglrenderer" != "no" ; then
4654 #include <virglrenderer.h>
4655 int main(void) { virgl_renderer_poll(); return 0; }
4657 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4658 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4659 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4660 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4663 if test "$virglrenderer" = "yes" ; then
4664 feature_not_found
"virglrenderer"
4670 ##########################################
4675 if $pkg_config capstone
; then
4677 elif test -e "${source_path}/.git" -a $git_update = 'yes' ; then
4679 elif test -e "${source_path}/capstone/Makefile" ; then
4681 elif test -z "$capstone" ; then
4684 feature_not_found
"capstone" "Install capstone devel or git submodule"
4689 if ! $pkg_config capstone
; then
4690 feature_not_found
"capstone" "Install capstone devel"
4697 if test "$capstone" = git
; then
4698 git_submodules
="${git_submodules} capstone"
4701 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4702 if test "$mingw32" = "yes"; then
4703 LIBCAPSTONE
=capstone.lib
4705 LIBCAPSTONE
=libcapstone.a
4707 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4711 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4712 LIBS
="$($pkg_config --libs capstone) $LIBS"
4718 error_exit
"Unknown state for capstone: $capstone"
4722 ##########################################
4723 # check if we have fdatasync
4729 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4730 return fdatasync(0);
4732 #error Not supported
4736 if compile_prog
"" "" ; then
4740 ##########################################
4741 # check if we have madvise
4745 #include <sys/types.h>
4746 #include <sys/mman.h>
4748 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4750 if compile_prog
"" "" ; then
4754 ##########################################
4755 # check if we have posix_madvise
4759 #include <sys/mman.h>
4761 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4763 if compile_prog
"" "" ; then
4767 ##########################################
4768 # check if we have posix_memalign()
4775 return posix_memalign(&p, 8, 8);
4778 if compile_prog
"" "" ; then
4782 ##########################################
4783 # check if we have posix_syslog
4788 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4790 if compile_prog
"" "" ; then
4794 ##########################################
4795 # check if we have sem_timedwait
4799 #include <semaphore.h>
4800 int main(void) { return sem_timedwait(0, 0); }
4802 if compile_prog
"" "" ; then
4806 ##########################################
4807 # check if trace backend exists
4809 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4810 if test "$?" -ne 0 ; then
4811 error_exit
"invalid trace backends" \
4812 "Please choose supported trace backends."
4815 ##########################################
4816 # For 'ust' backend, test if ust headers are present
4817 if have_backend
"ust"; then
4819 #include <lttng/tracepoint.h>
4820 int main(void) { return 0; }
4822 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4823 if $pkg_config lttng-ust
--exists; then
4824 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4826 lttng_ust_libs
="-llttng-ust -ldl"
4828 if $pkg_config liburcu-bp
--exists; then
4829 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4831 urcu_bp_libs
="-lurcu-bp"
4834 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4835 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4837 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4841 ##########################################
4842 # For 'dtrace' backend, test if 'dtrace' command is present
4843 if have_backend
"dtrace"; then
4844 if ! has
'dtrace' ; then
4845 error_exit
"dtrace command is not found in PATH $PATH"
4847 trace_backend_stap
="no"
4848 if has
'stap' ; then
4849 trace_backend_stap
="yes"
4853 ##########################################
4854 # check and set a backend for coroutine
4856 # We prefer ucontext, but it's not always possible. The fallback
4857 # is sigcontext. On Windows the only valid backend is the Windows
4861 if test "$darwin" != "yes"; then
4863 #include <ucontext.h>
4864 #ifdef __stub_makecontext
4865 #error Ignoring glibc stub makecontext which will always fail
4867 int main(void) { makecontext(0, 0, 0); return 0; }
4869 if compile_prog
"" "" ; then
4874 if test "$coroutine" = ""; then
4875 if test "$mingw32" = "yes"; then
4877 elif test "$ucontext_works" = "yes"; then
4880 coroutine
=sigaltstack
4885 if test "$mingw32" != "yes"; then
4886 error_exit
"'windows' coroutine backend only valid for Windows"
4888 # Unfortunately the user visible backend name doesn't match the
4889 # coroutine-*.c filename for this case, so we have to adjust it here.
4893 if test "$ucontext_works" != "yes"; then
4894 feature_not_found
"ucontext"
4898 if test "$mingw32" = "yes"; then
4899 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4903 error_exit
"unknown coroutine backend $coroutine"
4908 if test "$coroutine_pool" = ""; then
4909 if test "$coroutine" = "gthread" -o "$coroutine" = "win32"; then
4915 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4916 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4919 if test "$debug_stack_usage" = "yes"; then
4920 if test "$coroutine_pool" = "yes"; then
4921 echo "WARN: disabling coroutine pool for stack usage debugging"
4927 ##########################################
4928 # check if we have open_by_handle_at
4930 open_by_handle_at
=no
4933 #if !defined(AT_EMPTY_PATH)
4934 # error missing definition
4936 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4939 if compile_prog
"" "" ; then
4940 open_by_handle_at
=yes
4943 ########################################
4944 # check if we have linux/magic.h
4948 #include <linux/magic.h>
4953 if compile_prog
"" "" ; then
4957 ########################################
4958 # check whether we can disable warning option with a pragma (this is needed
4959 # to silence warnings in the headers of some versions of external libraries).
4960 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4963 # If we can't selectively disable warning in the code, disable -Werror so that
4964 # the build doesn't fail anyway.
4966 pragma_disable_unused_but_set
=no
4968 #pragma GCC diagnostic push
4969 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4970 #pragma GCC diagnostic pop
4976 if compile_prog
"-Werror" "" ; then
4977 pragma_diagnostic_available
=yes
4980 ########################################
4981 # check if we have valgrind/valgrind.h
4985 #include <valgrind/valgrind.h>
4990 if compile_prog
"" "" ; then
4994 ########################################
4995 # check if environ is declared
5005 if compile_prog
"" "" ; then
5009 ########################################
5010 # check if cpuid.h is usable.
5015 unsigned a, b, c, d;
5016 int max = __get_cpuid_max(0, 0);
5019 __cpuid(1, a, b, c, d);
5023 __cpuid_count(7, 0, a, b, c, d);
5029 if compile_prog
"" "" ; then
5033 ##########################################
5034 # avx2 optimization requirement check
5036 # There is no point enabling this if cpuid.h is not usable,
5037 # since we won't be able to select the new routines.
5039 if test $cpuid_h = yes; then
5041 #pragma GCC push_options
5042 #pragma GCC target("avx2")
5044 #include <immintrin.h>
5045 static int bar(void *a) {
5046 __m256i x = *(__m256i *)a;
5047 return _mm256_testz_si256(x, x);
5049 int main(int argc, char *argv[]) { return bar(argv[0]); }
5051 if compile_object
"" ; then
5056 ########################################
5057 # check if __[u]int128_t is usable.
5061 #if defined(__clang_major__) && defined(__clang_minor__)
5062 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
5063 # error __int128_t does not work in CLANG before 3.2
5075 if compile_prog
"" "" ; then
5079 #########################################
5080 # See if 128-bit atomic operations are supported.
5083 if test "$int128" = "yes"; then
5087 unsigned __int128 x = 0, y = 0;
5088 y = __atomic_load_16(&x, 0);
5089 __atomic_store_16(&x, y, 0);
5090 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5094 if compile_prog
"" "" ; then
5099 #########################################
5100 # See if 64-bit atomic operations are supported.
5101 # Note that without __atomic builtins, we can only
5102 # assume atomic loads/stores max at pointer size.
5108 uint64_t x = 0, y = 0;
5109 #ifdef __ATOMIC_RELAXED
5110 y = __atomic_load_8(&x, 0);
5111 __atomic_store_8(&x, y, 0);
5112 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5113 __atomic_exchange_8(&x, y, 0);
5114 __atomic_fetch_add_8(&x, y, 0);
5116 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5117 __sync_lock_test_and_set(&x, y);
5118 __sync_val_compare_and_swap(&x, y, 0);
5119 __sync_fetch_and_add(&x, y);
5124 if compile_prog
"" "" ; then
5128 ########################################
5129 # See if 16-byte vector operations are supported.
5130 # Even without a vector unit the compiler may expand these.
5131 # There is a bug in old GCC for PPC that crashes here.
5132 # Unfortunately it's the system compiler for Centos 7.
5135 typedef unsigned char U1 __attribute__((vector_size(16)));
5136 typedef unsigned short U2 __attribute__((vector_size(16)));
5137 typedef unsigned int U4 __attribute__((vector_size(16)));
5138 typedef unsigned long long U8 __attribute__((vector_size(16)));
5139 typedef signed char S1 __attribute__((vector_size(16)));
5140 typedef signed short S2 __attribute__((vector_size(16)));
5141 typedef signed int S4 __attribute__((vector_size(16)));
5142 typedef signed long long S8 __attribute__((vector_size(16)));
5152 void helper(void *d, void *a, int shift, int i);
5153 void helper(void *d, void *a, int shift, int i)
5155 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5156 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5157 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5158 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5162 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5163 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5164 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5165 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5166 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5167 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5168 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5169 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5170 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5176 if compile_prog
"" "" ; then
5180 ########################################
5181 # check if getauxval is available.
5185 #include <sys/auxv.h>
5187 return getauxval(AT_HWCAP) == 0;
5190 if compile_prog
"" "" ; then
5194 ########################################
5195 # check if ccache is interfering with
5196 # semantic analysis of macros
5201 static const int Z = 1;
5202 #define fn() ({ Z; })
5203 #define TAUT(X) ((X) == Z)
5204 #define PAREN(X, Y) (X == Y)
5206 int main(int argc, char *argv[])
5212 if (PAREN(x, y)) return 0;
5213 if (TAUT(Z)) return 0;
5218 if ! compile_object
"-Werror"; then
5222 #################################################
5223 # clang does not support glibc + FORTIFY_SOURCE.
5225 if test "$fortify_source" != "no"; then
5226 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
5227 fortify_source
="no";
5228 elif test -n "$cxx" && has
$cxx &&
5229 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
5230 fortify_source
="no";
5232 fortify_source
="yes"
5236 ##########################################
5237 # check if struct fsxattr is available via linux/fs.h
5241 #include <linux/fs.h>
5247 if compile_prog
"" "" ; then
5251 ##########################################
5252 # check for usable membarrier system call
5253 if test "$membarrier" = "yes"; then
5255 if test "$mingw32" = "yes" ; then
5257 elif test "$linux" = "yes" ; then
5259 #include <linux/membarrier.h>
5260 #include <sys/syscall.h>
5264 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5265 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5269 if compile_prog
"" "" ; then
5273 if test "$have_membarrier" = "no"; then
5274 feature_not_found
"membarrier" "membarrier system call not available"
5277 # Do not enable it by default even for Mingw32, because it doesn't
5282 ##########################################
5283 # check if rtnetlink.h exists and is useful
5286 #include <linux/rtnetlink.h>
5288 return IFLA_PROTO_DOWN;
5291 if compile_prog
"" "" ; then
5295 ##########################################
5296 # check for usable AF_VSOCK environment
5300 #include <sys/types.h>
5301 #include <sys/socket.h>
5302 #if !defined(AF_VSOCK)
5303 # error missing AF_VSOCK flag
5305 #include <linux/vm_sockets.h>
5308 struct sockaddr_vm svm;
5309 socklen_t len = sizeof(svm);
5310 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5311 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5312 if ((ret == -1) && (errno == ENOTCONN)) {
5318 if compile_prog
"" "" ; then
5322 ##########################################
5323 # check for usable AF_ALG environment
5327 #include <sys/types.h>
5328 #include <sys/socket.h>
5329 #include <linux/if_alg.h>
5332 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5336 if compile_prog
"" "" ; then
5339 if test "$crypto_afalg" = "yes"
5341 if test "$have_afalg" != "yes"
5343 error_exit
"AF_ALG requested but could not be detected"
5348 #################################################
5349 # Check to see if we have the Hypervisor framework
5350 if [ "$darwin" = "yes" ] ; then
5352 #include <Hypervisor/hv.h>
5353 int main() { return 0;}
5355 if ! compile_object
""; then
5359 LDFLAGS
="-framework Hypervisor $LDFLAGS"
5363 #################################################
5364 # Sparc implicitly links with --relax, which is
5365 # incompatible with -r, so --no-relax should be
5366 # given. It does no harm to give it on other
5369 # Note: the prototype is needed since QEMU_CFLAGS
5370 # contains -Wmissing-prototypes
5372 extern int foo(void);
5373 int foo(void) { return 0; }
5375 if ! compile_object
""; then
5376 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5378 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5379 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5384 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5385 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5388 ##########################################
5389 # check for sysmacros.h
5393 #include <sys/sysmacros.h>
5395 return makedev(0, 0);
5398 if compile_prog
"" "" ; then
5402 ##########################################
5403 # Veritas HyperScale block driver VxHS
5404 # Check if libvxhs is installed
5406 if test "$vxhs" != "no" ; then
5409 #include <qnio/qnio_api.h>
5411 void *vxhs_callback;
5414 iio_init(QNIO_VERSION, vxhs_callback);
5418 vxhs_libs
="-lvxhs -lssl"
5419 if compile_prog
"" "$vxhs_libs" ; then
5422 if test "$vxhs" = "yes" ; then
5423 feature_not_found
"vxhs block device" "Install libvxhs See github"
5429 ##########################################
5430 # check for _Static_assert()
5432 have_static_assert
=no
5434 _Static_assert(1, "success");
5439 if compile_prog
"" "" ; then
5440 have_static_assert
=yes
5443 ##########################################
5444 # check for utmpx.h, it is missing e.g. on OpenBSD
5449 struct utmpx user_info;
5454 if compile_prog
"" "" ; then
5458 ##########################################
5459 # checks for sanitizers
5463 have_asan_iface_h
=no
5464 have_asan_iface_fiber
=no
5466 if test "$sanitizers" = "yes" ; then
5468 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5472 # we could use a simple skeleton for flags checks, but this also
5473 # detect the static linking issue of ubsan, see also:
5474 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5478 void *tmp = malloc(10);
5479 return *(int *)(tmp + 2);
5482 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5486 if check_include
"sanitizer/asan_interface.h" ; then
5487 have_asan_iface_h
=yes
5491 #include <sanitizer/asan_interface.h>
5493 __sanitizer_start_switch_fiber(0, 0, 0);
5497 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5498 have_asan_iface_fiber
=yes
5502 ##########################################
5504 # After here, no more $cc or $ld runs
5508 if test "$gcov" = "yes" ; then
5509 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5510 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5511 elif test "$fortify_source" = "yes" ; then
5512 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5513 elif test "$debug" = "no"; then
5514 CFLAGS
="-O2 $CFLAGS"
5517 if test "$have_asan" = "yes"; then
5518 CFLAGS
="-fsanitize=address $CFLAGS"
5519 if test "$have_asan_iface_h" = "no" ; then
5520 echo "ASAN build enabled, but ASAN header missing." \
5521 "Without code annotation, the report may be inferior."
5522 elif test "$have_asan_iface_fiber" = "no" ; then
5523 echo "ASAN build enabled, but ASAN header is too old." \
5524 "Without code annotation, the report may be inferior."
5527 if test "$have_ubsan" = "yes"; then
5528 CFLAGS
="-fsanitize=undefined $CFLAGS"
5531 ##########################################
5533 if test "$libnfs" != "no" ; then
5534 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5536 libnfs_libs
=$
($pkg_config --libs libnfs
)
5538 if test "$libnfs" = "yes" ; then
5539 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5545 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5546 if test "$werror" = "yes"; then
5547 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5550 if test "$solaris" = "no" ; then
5551 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5552 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5556 # test if pod2man has --utf8 option
5557 if pod2man
--help |
grep -q utf8
; then
5558 POD2MAN
="pod2man --utf8"
5563 # Use large addresses, ASLR, no-SEH and DEP if available.
5564 if test "$mingw32" = "yes" ; then
5565 if test "$cpu" = i386
; then
5566 LDFLAGS
="-Wl,--large-address-aware $LDFLAGS"
5568 for flag
in --dynamicbase --no-seh --nxcompat; do
5569 if ld_has
$flag ; then
5570 LDFLAGS
="-Wl,$flag $LDFLAGS"
5575 qemu_confdir
=$sysconfdir$confsuffix
5576 qemu_moddir
=$libdir$confsuffix
5577 qemu_datadir
=$datadir$confsuffix
5578 qemu_localedir
="$datadir/locale"
5580 # We can only support ivshmem if we have eventfd
5581 if [ "$eventfd" = "yes" ]; then
5586 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
5587 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5588 tools
="qemu-nbd\$(EXESUF) $tools"
5590 if [ "$ivshmem" = "yes" ]; then
5591 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5593 if test "$softmmu" = yes ; then
5594 if test "$linux" = yes; then
5595 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5597 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5599 if test "$virtfs" = yes; then
5600 error_exit
"VirtFS requires libcap devel and libattr devel"
5604 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
5607 if test "$mpath" = yes; then
5608 error_exit
"Multipath requires libmpathpersist devel"
5612 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
5614 if test "$virtfs" = yes; then
5615 error_exit
"VirtFS is supported only on Linux"
5618 if test "$mpath" = yes; then
5619 error_exit
"Multipath is supported only on Linux"
5623 if test "$xkbcommon" = "yes"; then
5624 tools
="qemu-keymap\$(EXESUF) $tools"
5628 # Probe for guest agent support/options
5630 if [ "$guest_agent" != "no" ]; then
5631 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5632 tools
="qemu-ga $tools"
5634 elif [ "$guest_agent" != yes ]; then
5637 error_exit
"Guest agent is not supported on this platform"
5641 # Guest agent Window MSI package
5643 if test "$guest_agent" != yes; then
5644 if test "$guest_agent_msi" = yes; then
5645 error_exit
"MSI guest agent package requires guest agent enabled"
5648 elif test "$mingw32" != "yes"; then
5649 if test "$guest_agent_msi" = "yes"; then
5650 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5653 elif ! has wixl
; then
5654 if test "$guest_agent_msi" = "yes"; then
5655 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5659 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5660 # disabled explicitly
5661 if test "$guest_agent_msi" != "no"; then
5666 if test "$guest_agent_msi" = "yes"; then
5667 if test "$guest_agent_with_vss" = "yes"; then
5668 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5671 if test "$QEMU_GA_MANUFACTURER" = ""; then
5672 QEMU_GA_MANUFACTURER
=QEMU
5675 if test "$QEMU_GA_DISTRO" = ""; then
5676 QEMU_GA_DISTRO
=Linux
5679 if test "$QEMU_GA_VERSION" = ""; then
5680 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5683 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5687 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5690 QEMU_GA_MSI_ARCH
="-D Arch=32"
5693 error_exit
"CPU $cpu not supported for building installation package"
5698 # Mac OS X ships with a broken assembler
5700 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5701 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5702 "$softmmu" = yes ; then
5703 # Different host OS linkers have different ideas about the name of the ELF
5704 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5705 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5706 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
5707 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5708 ld_i386_emulation
="$emu"
5714 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5715 roms
="$roms spapr-rtas"
5718 if test "$cpu" = "s390x" ; then
5719 roms
="$roms s390-ccw"
5722 # Probe for the need for relocating the user-only binary.
5723 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5726 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5727 # ??? Rationale for choosing this address
5728 textseg_addr
=0x60000000
5731 # A 256M aligned address, high in the address space, with enough
5732 # room for the code_gen_buffer above it before the stack.
5733 textseg_addr
=0x60000000
5736 if [ -n "$textseg_addr" ]; then
5738 int main(void) { return 0; }
5740 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5741 if ! compile_prog
"" "$textseg_ldflags"; then
5742 # In case ld does not support -Ttext-segment, edit the default linker
5743 # script via sed to set the .text start addr. This is needed on FreeBSD
5745 if ! $ld --verbose >/dev
/null
2>&1; then
5747 "We need to link the QEMU user mode binaries at a" \
5748 "specific text address. Unfortunately your linker" \
5749 "doesn't support either the -Ttext-segment option or" \
5750 "printing the default linker script with --verbose." \
5751 "If you don't want the user mode binaries, pass the" \
5752 "--disable-user option to configure."
5755 $ld --verbose |
sed \
5756 -e '1,/==================================================/d' \
5757 -e '/==================================================/,$d' \
5758 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5759 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5760 textseg_ldflags
="-Wl,-T../config-host.ld"
5765 # Check that the C++ compiler exists and works with the C compiler.
5766 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5769 int c_function(void);
5770 int main(void) { return c_function(); }
5777 int c_function(void);
5779 int c_function(void) { return 42; }
5784 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5785 # C++ compiler $cxx works ok with C compiler $cc
5788 echo "C++ compiler $cxx does not work with C compiler $cc"
5789 echo "Disabling C++ specific optional code"
5793 echo "No C++ compiler available; disabling C++ specific optional code"
5798 if test "$1" = "yes" ; then
5803 # prepend pixman and ftd flags after all config tests are done
5804 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5805 QEMU_LDFLAGS
="$fdt_ldflags $QEMU_LDFLAGS"
5806 libs_softmmu
="$pixman_libs $libs_softmmu"
5808 echo "Install prefix $prefix"
5809 echo "BIOS directory $(eval echo $qemu_datadir)"
5810 echo "firmware path $(eval echo $firmwarepath)"
5811 echo "binary directory $(eval echo $bindir)"
5812 echo "library directory $(eval echo $libdir)"
5813 echo "module directory $(eval echo $qemu_moddir)"
5814 echo "libexec directory $(eval echo $libexecdir)"
5815 echo "include directory $(eval echo $includedir)"
5816 echo "config directory $(eval echo $sysconfdir)"
5817 if test "$mingw32" = "no" ; then
5818 echo "local state directory $(eval echo $local_statedir)"
5819 echo "Manual directory $(eval echo $mandir)"
5820 echo "ELF interp prefix $interp_prefix"
5822 echo "local state directory queried at runtime"
5823 echo "Windows SDK $win_sdk"
5825 echo "Source path $source_path"
5826 echo "GIT binary $git"
5827 echo "GIT submodules $git_submodules"
5828 echo "C compiler $cc"
5829 echo "Host C compiler $host_cc"
5830 echo "C++ compiler $cxx"
5831 echo "Objective-C compiler $objcc"
5832 echo "ARFLAGS $ARFLAGS"
5833 echo "CFLAGS $CFLAGS"
5834 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5835 echo "LDFLAGS $LDFLAGS"
5836 echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
5838 echo "install $install"
5839 echo "python $python"
5840 if test "$slirp" = "yes" ; then
5843 echo "module support $modules"
5844 echo "host CPU $cpu"
5845 echo "host big endian $bigendian"
5846 echo "target list $target_list"
5847 echo "gprof enabled $gprof"
5848 echo "sparse enabled $sparse"
5849 echo "strip binaries $strip_opt"
5850 echo "profiler $profiler"
5851 echo "static build $static"
5852 if test "$darwin" = "yes" ; then
5853 echo "Cocoa support $cocoa"
5855 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5856 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5857 echo "GTK GL support $gtk_gl"
5858 echo "VTE support $vte $(echo_version $vte $vteversion)"
5859 echo "TLS priority $tls_priority"
5860 echo "GNUTLS support $gnutls"
5861 echo "GNUTLS rnd $gnutls_rnd"
5862 if test "$gcrypt" = "yes"; then
5863 echo "encryption libgcrypt"
5864 echo "libgcrypt kdf $gcrypt_kdf"
5865 elif test "$nettle" = "yes"; then
5866 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5868 echo "encryption none"
5870 echo "nettle kdf $nettle_kdf"
5871 echo "libtasn1 $tasn1"
5872 echo "curses support $curses"
5873 echo "virgl support $virglrenderer"
5874 echo "curl support $curl"
5875 echo "mingw32 support $mingw32"
5876 echo "Audio drivers $audio_drv_list"
5877 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5878 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5879 echo "VirtFS support $virtfs"
5880 echo "Multipath support $mpath"
5881 echo "VNC support $vnc"
5882 if test "$vnc" = "yes" ; then
5883 echo "VNC SASL support $vnc_sasl"
5884 echo "VNC JPEG support $vnc_jpeg"
5885 echo "VNC PNG support $vnc_png"
5887 if test -n "$sparc_cpu"; then
5888 echo "Target Sparc Arch $sparc_cpu"
5890 echo "xen support $xen"
5891 if test "$xen" = "yes" ; then
5892 echo "xen ctrl version $xen_ctrl_version"
5893 echo "pv dom build $xen_pv_domain_build"
5895 echo "brlapi support $brlapi"
5896 echo "bluez support $bluez"
5897 echo "Documentation $docs"
5900 echo "vde support $vde"
5901 echo "netmap support $netmap"
5902 echo "Linux AIO support $linux_aio"
5903 echo "(X)ATTR support $attr"
5904 echo "Install blobs $blobs"
5905 echo "KVM support $kvm"
5906 echo "HAX support $hax"
5907 echo "HVF support $hvf"
5908 echo "WHPX support $whpx"
5909 echo "TCG support $tcg"
5910 if test "$tcg" = "yes" ; then
5911 echo "TCG debug enabled $debug_tcg"
5912 echo "TCG interpreter $tcg_interpreter"
5914 echo "malloc trim support $malloc_trim"
5915 echo "RDMA support $rdma"
5916 echo "fdt support $fdt"
5917 echo "membarrier $membarrier"
5918 echo "preadv support $preadv"
5919 echo "fdatasync $fdatasync"
5920 echo "madvise $madvise"
5921 echo "posix_madvise $posix_madvise"
5922 echo "posix_memalign $posix_memalign"
5923 echo "libcap-ng support $cap_ng"
5924 echo "vhost-net support $vhost_net"
5925 echo "vhost-crypto support $vhost_crypto"
5926 echo "vhost-scsi support $vhost_scsi"
5927 echo "vhost-vsock support $vhost_vsock"
5928 echo "vhost-user support $vhost_user"
5929 echo "Trace backends $trace_backends"
5930 if have_backend
"simple"; then
5931 echo "Trace output file $trace_file-<pid>"
5933 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5934 echo "rbd support $rbd"
5935 echo "xfsctl support $xfs"
5936 echo "smartcard support $smartcard"
5937 echo "libusb $libusb"
5938 echo "usb net redir $usb_redir"
5939 echo "OpenGL support $opengl"
5940 echo "OpenGL dmabufs $opengl_dmabuf"
5941 echo "libiscsi support $libiscsi"
5942 echo "libnfs support $libnfs"
5943 echo "build guest agent $guest_agent"
5944 echo "QGA VSS support $guest_agent_with_vss"
5945 echo "QGA w32 disk info $guest_agent_ntddscsi"
5946 echo "QGA MSI support $guest_agent_msi"
5947 echo "seccomp support $seccomp"
5948 echo "coroutine backend $coroutine"
5949 echo "coroutine pool $coroutine_pool"
5950 echo "debug stack usage $debug_stack_usage"
5951 echo "crypto afalg $crypto_afalg"
5952 echo "GlusterFS support $glusterfs"
5953 echo "gcov $gcov_tool"
5954 echo "gcov enabled $gcov"
5955 echo "TPM support $tpm"
5956 echo "libssh2 support $libssh2"
5957 echo "TPM passthrough $tpm_passthrough"
5958 echo "TPM emulator $tpm_emulator"
5959 echo "QOM debugging $qom_cast_debug"
5960 echo "Live block migration $live_block_migration"
5961 echo "lzo support $lzo"
5962 echo "snappy support $snappy"
5963 echo "bzip2 support $bzip2"
5964 echo "NUMA host support $numa"
5965 echo "libxml2 $libxml2"
5966 echo "tcmalloc support $tcmalloc"
5967 echo "jemalloc support $jemalloc"
5968 echo "avx2 optimization $avx2_opt"
5969 echo "replication support $replication"
5970 echo "VxHS block device $vxhs"
5971 echo "capstone $capstone"
5973 if test "$sdl_too_old" = "yes"; then
5974 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5977 if test "$gtkabi" = "2.0"; then
5979 echo "WARNING: Use of GTK 2.0 is deprecated and will be removed in"
5980 echo "WARNING: future releases. Please switch to using GTK 3.0"
5983 if test "$sdlabi" = "1.2"; then
5985 echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
5986 echo "WARNING: future releases. Please switch to using SDL 2.0"
5989 if test "$supported_cpu" = "no"; then
5991 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5993 echo "CPU host architecture $cpu support is not currently maintained."
5994 echo "The QEMU project intends to remove support for this host CPU in"
5995 echo "a future release if nobody volunteers to maintain it and to"
5996 echo "provide a build host for our continuous integration setup."
5997 echo "configure has succeeded and you can continue to build, but"
5998 echo "if you care about QEMU on this platform you should contact"
5999 echo "us upstream at qemu-devel@nongnu.org."
6002 if test "$supported_os" = "no"; then
6004 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
6006 echo "Host OS $targetos support is not currently maintained."
6007 echo "The QEMU project intends to remove support for this host OS in"
6008 echo "a future release if nobody volunteers to maintain it and to"
6009 echo "provide a build host for our continuous integration setup."
6010 echo "configure has succeeded and you can continue to build, but"
6011 echo "if you care about QEMU on this platform you should contact"
6012 echo "us upstream at qemu-devel@nongnu.org."
6015 config_host_mak
="config-host.mak"
6017 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
6019 echo "# Automatically generated by configure - do not modify" > $config_host_mak
6020 echo >> $config_host_mak
6022 echo all
: >> $config_host_mak
6023 echo "prefix=$prefix" >> $config_host_mak
6024 echo "bindir=$bindir" >> $config_host_mak
6025 echo "libdir=$libdir" >> $config_host_mak
6026 echo "libexecdir=$libexecdir" >> $config_host_mak
6027 echo "includedir=$includedir" >> $config_host_mak
6028 echo "mandir=$mandir" >> $config_host_mak
6029 echo "sysconfdir=$sysconfdir" >> $config_host_mak
6030 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
6031 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
6032 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
6033 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
6034 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
6035 if test "$mingw32" = "no" ; then
6036 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
6038 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
6039 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
6040 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
6041 echo "GIT=$git" >> $config_host_mak
6042 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
6043 echo "GIT_UPDATE=$git_update" >> $config_host_mak
6045 echo "ARCH=$ARCH" >> $config_host_mak
6047 if test "$debug_tcg" = "yes" ; then
6048 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
6050 if test "$strip_opt" = "yes" ; then
6051 echo "STRIP=${strip}" >> $config_host_mak
6053 if test "$bigendian" = "yes" ; then
6054 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
6056 if test "$mingw32" = "yes" ; then
6057 echo "CONFIG_WIN32=y" >> $config_host_mak
6058 echo "CONFIG_INSTALLER=y" >> $config_host_mak
6059 rc_version
=$
(cat $source_path/VERSION
)
6060 version_major
=${rc_version%%.*}
6061 rc_version
=${rc_version#*.}
6062 version_minor
=${rc_version%%.*}
6063 rc_version
=${rc_version#*.}
6064 version_subminor
=${rc_version%%.*}
6066 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6067 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6068 if test "$guest_agent_with_vss" = "yes" ; then
6069 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
6070 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
6071 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
6073 if test "$guest_agent_ntddscsi" = "yes" ; then
6074 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
6076 if test "$guest_agent_msi" = "yes"; then
6077 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
6078 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6079 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6080 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6081 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6082 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6083 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6086 echo "CONFIG_POSIX=y" >> $config_host_mak
6089 if test "$linux" = "yes" ; then
6090 echo "CONFIG_LINUX=y" >> $config_host_mak
6093 if test "$darwin" = "yes" ; then
6094 echo "CONFIG_DARWIN=y" >> $config_host_mak
6097 if test "$solaris" = "yes" ; then
6098 echo "CONFIG_SOLARIS=y" >> $config_host_mak
6100 if test "$haiku" = "yes" ; then
6101 echo "CONFIG_HAIKU=y" >> $config_host_mak
6103 if test "$static" = "yes" ; then
6104 echo "CONFIG_STATIC=y" >> $config_host_mak
6106 if test "$profiler" = "yes" ; then
6107 echo "CONFIG_PROFILER=y" >> $config_host_mak
6109 if test "$slirp" = "yes" ; then
6110 echo "CONFIG_SLIRP=y" >> $config_host_mak
6111 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
6113 if test "$vde" = "yes" ; then
6114 echo "CONFIG_VDE=y" >> $config_host_mak
6115 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
6117 if test "$netmap" = "yes" ; then
6118 echo "CONFIG_NETMAP=y" >> $config_host_mak
6120 if test "$l2tpv3" = "yes" ; then
6121 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6123 if test "$cap_ng" = "yes" ; then
6124 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6126 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
6127 for drv
in $audio_drv_list; do
6128 def
=CONFIG_AUDIO_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
6130 alsa | oss | pa | sdl
)
6131 echo "$def=m" >> $config_host_mak ;;
6133 echo "$def=y" >> $config_host_mak ;;
6136 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6137 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6138 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6139 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6140 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
6141 if test "$audio_pt_int" = "yes" ; then
6142 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6144 if test "$audio_win_int" = "yes" ; then
6145 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6147 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6148 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
6149 if test "$vnc" = "yes" ; then
6150 echo "CONFIG_VNC=y" >> $config_host_mak
6152 if test "$vnc_sasl" = "yes" ; then
6153 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
6155 if test "$vnc_jpeg" = "yes" ; then
6156 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
6158 if test "$vnc_png" = "yes" ; then
6159 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
6161 if test "$xkbcommon" = "yes" ; then
6162 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6163 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6165 if test "$fnmatch" = "yes" ; then
6166 echo "CONFIG_FNMATCH=y" >> $config_host_mak
6168 if test "$xfs" = "yes" ; then
6169 echo "CONFIG_XFS=y" >> $config_host_mak
6171 qemu_version
=$
(head $source_path/VERSION
)
6172 echo "VERSION=$qemu_version" >>$config_host_mak
6173 echo "PKGVERSION=$pkgversion" >>$config_host_mak
6174 echo "SRC_PATH=$source_path" >> $config_host_mak
6175 echo "TARGET_DIRS=$target_list" >> $config_host_mak
6176 if [ "$docs" = "yes" ] ; then
6177 echo "BUILD_DOCS=yes" >> $config_host_mak
6179 if [ "$want_tools" = "yes" ] ; then
6180 echo "BUILD_TOOLS=yes" >> $config_host_mak
6182 if test "$modules" = "yes"; then
6183 # $shacmd can generate a hash started with digit, which the compiler doesn't
6184 # like as an symbol. So prefix it with an underscore
6185 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
6186 echo "CONFIG_MODULES=y" >> $config_host_mak
6188 if test "$have_x11" = "yes" -a "$need_x11" = "yes"; then
6189 echo "CONFIG_X11=y" >> $config_host_mak
6190 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6191 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6193 if test "$sdl" = "yes" ; then
6194 echo "CONFIG_SDL=m" >> $config_host_mak
6195 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
6196 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
6197 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
6199 if test "$cocoa" = "yes" ; then
6200 echo "CONFIG_COCOA=y" >> $config_host_mak
6202 if test "$curses" = "yes" ; then
6203 echo "CONFIG_CURSES=m" >> $config_host_mak
6204 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6205 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
6207 if test "$pipe2" = "yes" ; then
6208 echo "CONFIG_PIPE2=y" >> $config_host_mak
6210 if test "$accept4" = "yes" ; then
6211 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6213 if test "$splice" = "yes" ; then
6214 echo "CONFIG_SPLICE=y" >> $config_host_mak
6216 if test "$eventfd" = "yes" ; then
6217 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6219 if test "$memfd" = "yes" ; then
6220 echo "CONFIG_MEMFD=y" >> $config_host_mak
6222 if test "$fallocate" = "yes" ; then
6223 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6225 if test "$fallocate_punch_hole" = "yes" ; then
6226 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6228 if test "$fallocate_zero_range" = "yes" ; then
6229 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6231 if test "$posix_fallocate" = "yes" ; then
6232 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6234 if test "$sync_file_range" = "yes" ; then
6235 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6237 if test "$fiemap" = "yes" ; then
6238 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6240 if test "$dup3" = "yes" ; then
6241 echo "CONFIG_DUP3=y" >> $config_host_mak
6243 if test "$ppoll" = "yes" ; then
6244 echo "CONFIG_PPOLL=y" >> $config_host_mak
6246 if test "$prctl_pr_set_timerslack" = "yes" ; then
6247 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6249 if test "$epoll" = "yes" ; then
6250 echo "CONFIG_EPOLL=y" >> $config_host_mak
6252 if test "$epoll_create1" = "yes" ; then
6253 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6255 if test "$sendfile" = "yes" ; then
6256 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6258 if test "$timerfd" = "yes" ; then
6259 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6261 if test "$setns" = "yes" ; then
6262 echo "CONFIG_SETNS=y" >> $config_host_mak
6264 if test "$clock_adjtime" = "yes" ; then
6265 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6267 if test "$syncfs" = "yes" ; then
6268 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6270 if test "$inotify" = "yes" ; then
6271 echo "CONFIG_INOTIFY=y" >> $config_host_mak
6273 if test "$inotify1" = "yes" ; then
6274 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6276 if test "$sem_timedwait" = "yes" ; then
6277 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6279 if test "$byteswap_h" = "yes" ; then
6280 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6282 if test "$bswap_h" = "yes" ; then
6283 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6285 if test "$curl" = "yes" ; then
6286 echo "CONFIG_CURL=m" >> $config_host_mak
6287 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
6288 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
6290 if test "$brlapi" = "yes" ; then
6291 echo "CONFIG_BRLAPI=y" >> $config_host_mak
6292 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
6294 if test "$bluez" = "yes" ; then
6295 echo "CONFIG_BLUEZ=y" >> $config_host_mak
6296 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
6298 if test "$glib_subprocess" = "yes" ; then
6299 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
6301 if test "$gtk" = "yes" ; then
6302 echo "CONFIG_GTK=m" >> $config_host_mak
6303 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
6304 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
6305 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
6306 if test "$gtk_gl" = "yes" ; then
6307 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6310 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
6311 if test "$gnutls" = "yes" ; then
6312 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6314 if test "$gnutls_rnd" = "yes" ; then
6315 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
6317 if test "$gcrypt" = "yes" ; then
6318 echo "CONFIG_GCRYPT=y" >> $config_host_mak
6319 if test "$gcrypt_hmac" = "yes" ; then
6320 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6322 if test "$gcrypt_kdf" = "yes" ; then
6323 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
6326 if test "$nettle" = "yes" ; then
6327 echo "CONFIG_NETTLE=y" >> $config_host_mak
6328 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
6329 if test "$nettle_kdf" = "yes" ; then
6330 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
6333 if test "$tasn1" = "yes" ; then
6334 echo "CONFIG_TASN1=y" >> $config_host_mak
6336 if test "$have_ifaddrs_h" = "yes" ; then
6337 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6339 if test "$have_broken_size_max" = "yes" ; then
6340 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6343 # Work around a system header bug with some kernel/XFS header
6344 # versions where they both try to define 'struct fsxattr':
6345 # xfs headers will not try to redefine structs from linux headers
6346 # if this macro is set.
6347 if test "$have_fsxattr" = "yes" ; then
6348 echo "HAVE_FSXATTR=y" >> $config_host_mak
6350 if test "$vte" = "yes" ; then
6351 echo "CONFIG_VTE=y" >> $config_host_mak
6352 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6353 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
6355 if test "$virglrenderer" = "yes" ; then
6356 echo "CONFIG_VIRGL=y" >> $config_host_mak
6357 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6358 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6360 if test "$xen" = "yes" ; then
6361 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
6362 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
6363 if test "$xen_pv_domain_build" = "yes" ; then
6364 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6367 if test "$linux_aio" = "yes" ; then
6368 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6370 if test "$attr" = "yes" ; then
6371 echo "CONFIG_ATTR=y" >> $config_host_mak
6373 if test "$libattr" = "yes" ; then
6374 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6376 if test "$virtfs" = "yes" ; then
6377 echo "CONFIG_VIRTFS=y" >> $config_host_mak
6379 if test "$mpath" = "yes" ; then
6380 echo "CONFIG_MPATH=y" >> $config_host_mak
6382 if test "$vhost_scsi" = "yes" ; then
6383 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6385 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
6386 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6388 if test "$vhost_crypto" = "yes" ; then
6389 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6391 if test "$vhost_vsock" = "yes" ; then
6392 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6394 if test "$vhost_user" = "yes" ; then
6395 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6397 if test "$blobs" = "yes" ; then
6398 echo "INSTALL_BLOBS=yes" >> $config_host_mak
6400 if test "$iovec" = "yes" ; then
6401 echo "CONFIG_IOVEC=y" >> $config_host_mak
6403 if test "$preadv" = "yes" ; then
6404 echo "CONFIG_PREADV=y" >> $config_host_mak
6406 if test "$fdt" != "no" ; then
6407 echo "CONFIG_FDT=y" >> $config_host_mak
6409 if test "$membarrier" = "yes" ; then
6410 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6412 if test "$signalfd" = "yes" ; then
6413 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6415 if test "$tcg" = "yes"; then
6416 echo "CONFIG_TCG=y" >> $config_host_mak
6417 if test "$tcg_interpreter" = "yes" ; then
6418 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6421 if test "$fdatasync" = "yes" ; then
6422 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6424 if test "$madvise" = "yes" ; then
6425 echo "CONFIG_MADVISE=y" >> $config_host_mak
6427 if test "$posix_madvise" = "yes" ; then
6428 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6430 if test "$posix_memalign" = "yes" ; then
6431 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6434 if test "$spice" = "yes" ; then
6435 echo "CONFIG_SPICE=y" >> $config_host_mak
6438 if test "$smartcard" = "yes" ; then
6439 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6440 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6441 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6444 if test "$libusb" = "yes" ; then
6445 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6446 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6447 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6450 if test "$usb_redir" = "yes" ; then
6451 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6452 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6453 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6456 if test "$opengl" = "yes" ; then
6457 echo "CONFIG_OPENGL=y" >> $config_host_mak
6458 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6459 if test "$opengl_dmabuf" = "yes" ; then
6460 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6464 if test "$malloc_trim" = "yes" ; then
6465 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6468 if test "$avx2_opt" = "yes" ; then
6469 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6472 if test "$lzo" = "yes" ; then
6473 echo "CONFIG_LZO=y" >> $config_host_mak
6476 if test "$snappy" = "yes" ; then
6477 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6480 if test "$bzip2" = "yes" ; then
6481 echo "CONFIG_BZIP2=y" >> $config_host_mak
6482 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6485 if test "$libiscsi" = "yes" ; then
6486 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6487 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6488 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6491 if test "$libnfs" = "yes" ; then
6492 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6493 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6496 if test "$seccomp" = "yes"; then
6497 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6498 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6499 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6502 # XXX: suppress that
6503 if [ "$bsd" = "yes" ] ; then
6504 echo "CONFIG_BSD=y" >> $config_host_mak
6507 if test "$localtime_r" = "yes" ; then
6508 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6510 if test "$qom_cast_debug" = "yes" ; then
6511 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6513 if test "$rbd" = "yes" ; then
6514 echo "CONFIG_RBD=m" >> $config_host_mak
6515 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6516 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6519 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6520 if test "$coroutine_pool" = "yes" ; then
6521 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6523 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6526 if test "$debug_stack_usage" = "yes" ; then
6527 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6530 if test "$crypto_afalg" = "yes" ; then
6531 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6534 if test "$open_by_handle_at" = "yes" ; then
6535 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6538 if test "$linux_magic_h" = "yes" ; then
6539 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6542 if test "$pragma_diagnostic_available" = "yes" ; then
6543 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6546 if test "$valgrind_h" = "yes" ; then
6547 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6550 if test "$have_asan_iface_fiber" = "yes" ; then
6551 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6554 if test "$has_environ" = "yes" ; then
6555 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6558 if test "$cpuid_h" = "yes" ; then
6559 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6562 if test "$int128" = "yes" ; then
6563 echo "CONFIG_INT128=y" >> $config_host_mak
6566 if test "$atomic128" = "yes" ; then
6567 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6570 if test "$atomic64" = "yes" ; then
6571 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6574 if test "$vector16" = "yes" ; then
6575 echo "CONFIG_VECTOR16=y" >> $config_host_mak
6578 if test "$getauxval" = "yes" ; then
6579 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6582 if test "$glusterfs" = "yes" ; then
6583 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6584 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6585 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6588 if test "$glusterfs_xlator_opt" = "yes" ; then
6589 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6592 if test "$glusterfs_discard" = "yes" ; then
6593 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6596 if test "$glusterfs_fallocate" = "yes" ; then
6597 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6600 if test "$glusterfs_zerofill" = "yes" ; then
6601 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6604 if test "$libssh2" = "yes" ; then
6605 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6606 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6607 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6610 if test "$live_block_migration" = "yes" ; then
6611 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6614 if test "$tpm" = "yes"; then
6615 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6616 # TPM passthrough support?
6617 if test "$tpm_passthrough" = "yes"; then
6618 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6620 # TPM emulator support?
6621 if test "$tpm_emulator" = "yes"; then
6622 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6626 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6627 if have_backend
"nop"; then
6628 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6630 if have_backend
"simple"; then
6631 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6632 # Set the appropriate trace file.
6633 trace_file
="\"$trace_file-\" FMT_pid"
6635 if have_backend
"log"; then
6636 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6638 if have_backend
"ust"; then
6639 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6641 if have_backend
"dtrace"; then
6642 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6643 if test "$trace_backend_stap" = "yes" ; then
6644 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6647 if have_backend
"ftrace"; then
6648 if test "$linux" = "yes" ; then
6649 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6651 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6654 if have_backend
"syslog"; then
6655 if test "$posix_syslog" = "yes" ; then
6656 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6658 feature_not_found
"syslog(trace backend)" "syslog not available"
6661 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6663 if test "$rdma" = "yes" ; then
6664 echo "CONFIG_RDMA=y" >> $config_host_mak
6665 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6668 if test "$have_rtnetlink" = "yes" ; then
6669 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6672 if test "$libxml2" = "yes" ; then
6673 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6674 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6675 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6678 if test "$replication" = "yes" ; then
6679 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6682 if test "$have_af_vsock" = "yes" ; then
6683 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6686 if test "$have_sysmacros" = "yes" ; then
6687 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6690 if test "$have_static_assert" = "yes" ; then
6691 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6694 if test "$have_utmpx" = "yes" ; then
6695 echo "HAVE_UTMPX=y" >> $config_host_mak
6698 if test "$ivshmem" = "yes" ; then
6699 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6701 if test "$capstone" != "no" ; then
6702 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6705 # Hold two types of flag:
6706 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6707 # a thread we have a handle to
6708 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6710 if test "$pthread_setname_np" = "yes" ; then
6711 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6712 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6715 if test "$vxhs" = "yes" ; then
6716 echo "CONFIG_VXHS=y" >> $config_host_mak
6717 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6720 if test "$tcg_interpreter" = "yes"; then
6721 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6722 elif test "$ARCH" = "sparc64" ; then
6723 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6724 elif test "$ARCH" = "s390x" ; then
6725 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6726 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6727 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6728 elif test "$ARCH" = "ppc64" ; then
6729 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6731 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6733 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
6735 echo "TOOLS=$tools" >> $config_host_mak
6736 echo "ROMS=$roms" >> $config_host_mak
6737 echo "MAKE=$make" >> $config_host_mak
6738 echo "INSTALL=$install" >> $config_host_mak
6739 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6740 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6741 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6742 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6743 echo "PYTHON=$python" >> $config_host_mak
6744 echo "CC=$cc" >> $config_host_mak
6745 if $iasl -h > /dev
/null
2>&1; then
6746 echo "IASL=$iasl" >> $config_host_mak
6748 echo "CC_I386=$cc_i386" >> $config_host_mak
6749 echo "HOST_CC=$host_cc" >> $config_host_mak
6750 echo "CXX=$cxx" >> $config_host_mak
6751 echo "OBJCC=$objcc" >> $config_host_mak
6752 echo "AR=$ar" >> $config_host_mak
6753 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6754 echo "AS=$as" >> $config_host_mak
6755 echo "CCAS=$ccas" >> $config_host_mak
6756 echo "CPP=$cpp" >> $config_host_mak
6757 echo "OBJCOPY=$objcopy" >> $config_host_mak
6758 echo "LD=$ld" >> $config_host_mak
6759 echo "RANLIB=$ranlib" >> $config_host_mak
6760 echo "NM=$nm" >> $config_host_mak
6761 echo "WINDRES=$windres" >> $config_host_mak
6762 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6763 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6764 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6765 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6766 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6767 if test "$sparse" = "yes" ; then
6768 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6769 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6770 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6771 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6772 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6774 if test "$cross_prefix" != ""; then
6775 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6777 echo "AUTOCONF_HOST := " >> $config_host_mak
6779 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6780 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6781 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
6782 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6783 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6784 echo "LIBS+=$LIBS" >> $config_host_mak
6785 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6786 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6787 echo "EXESUF=$EXESUF" >> $config_host_mak
6788 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6789 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6790 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6791 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6792 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6793 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6794 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6795 if test "$gcov" = "yes" ; then
6796 echo "CONFIG_GCOV=y" >> $config_host_mak
6797 echo "GCOV=$gcov_tool" >> $config_host_mak
6800 # use included Linux headers
6801 if test "$linux" = "yes" ; then
6802 mkdir
-p linux-headers
6820 # For most CPUs the kernel architecture name and QEMU CPU name match.
6824 # For non-KVM architectures we will not have asm headers
6825 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6826 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
6830 for target
in $target_list; do
6831 target_dir
="$target"
6832 config_target_mak
=$target_dir/config-target.mak
6833 target_name
=$
(echo $target | cut
-d '-' -f 1)
6834 target_bigendian
="no"
6836 case "$target_name" in
6837 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
6838 target_bigendian
=yes
6842 target_user_only
="no"
6843 target_linux_user
="no"
6844 target_bsd_user
="no"
6846 ${target_name}-softmmu)
6847 target_softmmu
="yes"
6849 ${target_name}-linux-user)
6850 target_user_only
="yes"
6851 target_linux_user
="yes"
6853 ${target_name}-bsd-user)
6854 target_user_only
="yes"
6855 target_bsd_user
="yes"
6858 error_exit
"Target '$target' not recognised"
6863 mkdir
-p $target_dir
6864 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6868 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
6871 TARGET_ARCH
="$target_name"
6875 case "$target_name" in
6877 gdb_xml_files
="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
6880 TARGET_BASE_ARCH
=i386
6881 gdb_xml_files
="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
6890 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6894 TARGET_BASE_ARCH
=arm
6897 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6908 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
6910 microblaze|microblazeel
)
6911 TARGET_ARCH
=microblaze
6916 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6920 TARGET_BASE_ARCH
=mips
6921 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6922 echo "TARGET_ABI32=y" >> $config_target_mak
6926 TARGET_BASE_ARCH
=mips
6927 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6934 TARGET_ARCH
=openrisc
6935 TARGET_BASE_ARCH
=openrisc
6938 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6941 TARGET_BASE_ARCH
=ppc
6943 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6946 TARGET_BASE_ARCH
=ppc
6949 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6953 TARGET_BASE_ARCH
=ppc
6956 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6960 TARGET_BASE_ARCH
=ppc
6962 echo "TARGET_ABI32=y" >> $config_target_mak
6963 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6966 TARGET_BASE_ARCH
=riscv
6967 TARGET_ABI_DIR
=riscv
6971 TARGET_BASE_ARCH
=riscv
6972 TARGET_ABI_DIR
=riscv
6982 TARGET_BASE_ARCH
=sparc
6986 TARGET_BASE_ARCH
=sparc
6987 TARGET_ABI_DIR
=sparc
6988 echo "TARGET_ABI32=y" >> $config_target_mak
6992 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
7005 error_exit
"Unsupported target CPU"
7008 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
7009 if [ "$TARGET_BASE_ARCH" = "" ]; then
7010 TARGET_BASE_ARCH
=$TARGET_ARCH
7013 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
7016 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
7019 target_arch_name
="$(upper $TARGET_ARCH)"
7020 echo "TARGET_$target_arch_name=y" >> $config_target_mak
7021 echo "TARGET_NAME=$target_name" >> $config_target_mak
7022 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
7023 if [ "$TARGET_ABI_DIR" = "" ]; then
7024 TARGET_ABI_DIR
=$TARGET_ARCH
7026 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
7027 if [ "$HOST_VARIANT_DIR" != "" ]; then
7028 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
7031 if supported_xen_target
$target; then
7032 echo "CONFIG_XEN=y" >> $config_target_mak
7033 if test "$xen_pci_passthrough" = yes; then
7034 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
7037 if supported_kvm_target
$target; then
7038 echo "CONFIG_KVM=y" >> $config_target_mak
7039 if test "$vhost_net" = "yes" ; then
7040 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
7041 if test "$vhost_user" = "yes" ; then
7042 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
7046 if supported_hax_target
$target; then
7047 echo "CONFIG_HAX=y" >> $config_target_mak
7049 if supported_hvf_target
$target; then
7050 echo "CONFIG_HVF=y" >> $config_target_mak
7052 if supported_whpx_target
$target; then
7053 echo "CONFIG_WHPX=y" >> $config_target_mak
7055 if test "$target_bigendian" = "yes" ; then
7056 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
7058 if test "$target_softmmu" = "yes" ; then
7059 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
7060 if test "$mttcg" = "yes" ; then
7061 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
7064 if test "$target_user_only" = "yes" ; then
7065 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
7066 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
7068 if test "$target_linux_user" = "yes" ; then
7069 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
7072 if test ! -z "$gdb_xml_files" ; then
7073 for x
in $gdb_xml_files; do
7074 list
="$list $source_path/gdb-xml/$x"
7076 echo "TARGET_XML_FILES=$list" >> $config_target_mak
7079 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
7080 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
7082 if test "$target_bsd_user" = "yes" ; then
7083 echo "CONFIG_BSD_USER=y" >> $config_target_mak
7086 # generate QEMU_CFLAGS/LDFLAGS for targets
7092 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7093 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7096 for i
in $ARCH $TARGET_BASE_ARCH ; do
7099 disas_config
"ALPHA"
7102 if test -n "${cxx}"; then
7103 disas_config
"ARM_A64"
7108 if test -n "${cxx}"; then
7109 disas_config
"ARM_A64"
7128 disas_config
"MICROBLAZE"
7134 disas_config
"MOXIE"
7137 disas_config
"NIOS2"
7140 disas_config
"OPENRISC"
7146 disas_config
"RISCV"
7155 disas_config
"SPARC"
7158 disas_config
"XTENSA"
7162 if test "$tcg_interpreter" = "yes" ; then
7168 # Ensure there's only a single GP
7169 cflags
="-msmall-data $cflags"
7173 if test "$gprof" = "yes" ; then
7174 echo "TARGET_GPROF=yes" >> $config_target_mak
7175 if test "$target_linux_user" = "yes" ; then
7177 ldflags
="-p $ldflags"
7179 if test "$target_softmmu" = "yes" ; then
7180 ldflags
="-p $ldflags"
7181 echo "GPROF_CFLAGS=-p" >> $config_target_mak
7185 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
7186 ldflags
="$ldflags $textseg_ldflags"
7189 # Newer kernels on s390 check for an S390_PGSTE program header and
7190 # enable the pgste page table extensions in that case. This makes
7191 # the vm.allocate_pgste sysctl unnecessary. We enable this program
7193 # - we build on s390x
7194 # - we build the system emulation for s390x (qemu-system-s390x)
7196 # - the linker supports --s390-pgste
7197 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
7198 if ld_has
--s390-pgste ; then
7199 ldflags
="-Wl,--s390-pgste $ldflags"
7203 echo "LDFLAGS+=$ldflags" >> $config_target_mak
7204 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
7206 done # for target in $targets
7208 if [ "$fdt" = "git" ]; then
7209 echo "config-host.h: subdir-dtc" >> $config_host_mak
7211 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7212 echo "config-host.h: subdir-capstone" >> $config_host_mak
7214 if test -n "$LIBCAPSTONE"; then
7215 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7218 if test "$numa" = "yes"; then
7219 echo "CONFIG_NUMA=y" >> $config_host_mak
7222 if test "$ccache_cpp2" = "yes"; then
7223 echo "export CCACHE_CPP2=y" >> $config_host_mak
7226 # build tree in object directory in case the source is not in the current directory
7227 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
7228 DIRS
="$DIRS docs docs/interop fsdev scsi"
7229 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
7230 DIRS
="$DIRS roms/seabios roms/vgabios"
7231 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
7232 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
7233 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
7234 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
7235 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
7236 FILES
="$FILES pc-bios/s390-ccw/Makefile"
7237 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
7238 FILES
="$FILES pc-bios/qemu-icon.bmp"
7239 FILES
="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
7241 $source_path/pc-bios
/*.bin \
7242 $source_path/pc-bios
/*.lid \
7243 $source_path/pc-bios
/*.rom \
7244 $source_path/pc-bios
/*.dtb \
7245 $source_path/pc-bios
/*.img \
7246 $source_path/pc-bios
/openbios-
* \
7247 $source_path/pc-bios
/u-boot.
* \
7248 $source_path/pc-bios
/palcode-
*
7250 FILES
="$FILES pc-bios/$(basename $bios_file)"
7252 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
7254 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
7257 for f
in $FILES ; do
7258 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
7259 symlink
"$source_path/$f" "$f"
7263 # temporary config to build submodules
7264 for rom
in seabios vgabios
; do
7265 config_mak
=roms
/$rom/config.mak
7266 echo "# Automatically generated by configure - do not modify" > $config_mak
7267 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
7268 echo "AS=$as" >> $config_mak
7269 echo "CCAS=$ccas" >> $config_mak
7270 echo "CC=$cc" >> $config_mak
7271 echo "BCC=bcc" >> $config_mak
7272 echo "CPP=$cpp" >> $config_mak
7273 echo "OBJCOPY=objcopy" >> $config_mak
7274 echo "IASL=$iasl" >> $config_mak
7275 echo "LD=$ld" >> $config_mak
7276 echo "RANLIB=$ranlib" >> $config_mak
7279 # set up tests data directory
7280 if [ ! -e tests
/data
]; then
7281 symlink
"$source_path/tests/data" tests
/data
7284 # set up qemu-iotests in this build directory
7285 iotests_common_env
="tests/qemu-iotests/common.env"
7286 iotests_check
="tests/qemu-iotests/check"
7288 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7289 echo >> "$iotests_common_env"
7290 echo "export PYTHON='$python'" >> "$iotests_common_env"
7292 if [ ! -e "$iotests_check" ]; then
7293 symlink
"$source_path/$iotests_check" "$iotests_check"
7296 # Save the configure command line for later reuse.
7297 cat <<EOD >config.status
7299 # Generated by configure.
7300 # Run this file to recreate the current configuration.
7301 # Compiler output produced by configure, useful for debugging
7302 # configure, is in config.log if it exists.
7304 printf "exec" >>config.status
7305 printf " '%s'" "$0" "$@" >>config.status
7306 echo ' "$@"' >>config.status
7307 chmod +x config.status