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
107 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
108 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
111 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
119 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
125 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
128 # symbolically link $1 to $2. Portable version of "ln -sf".
131 mkdir
-p "$(dirname "$2")"
135 # check whether a command is available to this shell (may be either an
136 # executable or a builtin)
138 type "$1" >/dev
/null
2>&1
141 # search for an executable in PATH
147 # pathname has a dir component?
148 if [ "${local_command#*/}" != "$local_command" ]; then
149 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
150 echo "$local_command"
154 if [ -z "$local_command" ]; then
159 for local_dir
in $PATH; do
160 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
161 echo "$local_dir/$local_command"
162 IFS
="${local_ifs:-$(printf ' \t\n')}"
167 IFS
="${local_ifs:-$(printf ' \t\n')}"
172 echo "$trace_backends" |
grep "$1" >/dev
/null
176 eval test -z '"${1#'"$2"'}"'
179 supported_hax_target
() {
180 test "$hax" = "yes" ||
return 1
181 glob
"$1" "*-softmmu" ||
return 1
182 case "${1%-softmmu}" in
190 supported_kvm_target
() {
191 test "$kvm" = "yes" ||
return 1
192 glob
"$1" "*-softmmu" ||
return 1
193 case "${1%-softmmu}:$cpu" in
194 arm
:arm | aarch64
:aarch64 | \
195 i386
:i386 | i386
:x86_64 | i386
:x32 | \
196 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
197 mips
:mips | mipsel
:mips | \
198 ppc
:ppc | ppc64
:ppc | ppc
:ppc64 | ppc64
:ppc64 | \
206 supported_xen_target
() {
207 test "$xen" = "yes" ||
return 1
208 glob
"$1" "*-softmmu" ||
return 1
209 # Only i386 and x86_64 provide the xenpv machine.
210 case "${1%-softmmu}" in
218 supported_hvf_target
() {
219 test "$hvf" = "yes" ||
return 1
220 glob
"$1" "*-softmmu" ||
return 1
221 case "${1%-softmmu}" in
229 supported_whpx_target
() {
230 test "$whpx" = "yes" ||
return 1
231 glob
"$1" "*-softmmu" ||
return 1
232 case "${1%-softmmu}" in
245 if test "$linux" != "yes"; then
246 print_error
"Target '$target' is only available on a Linux host"
251 if test "$bsd" != "yes"; then
252 print_error
"Target '$target' is only available on a BSD host"
257 print_error
"Invalid target name '$target'"
261 test "$tcg" = "yes" && return 0
262 supported_kvm_target
"$1" && return 0
263 supported_xen_target
"$1" && return 0
264 supported_hax_target
"$1" && return 0
265 supported_hvf_target
"$1" && return 0
266 supported_whpx_target
"$1" && return 0
267 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
273 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
277 source_path
=$
(dirname "$0")
280 interp_prefix
="/usr/gnemul/qemu-%M"
284 block_drv_rw_whitelist
=""
285 block_drv_ro_whitelist
=""
295 if test -e "$source_path/.git"
298 git_submodules
="ui/keycodemapdb"
299 git_submodules
="$git_submodules tests/fp/berkeley-testfloat-3"
300 git_submodules
="$git_submodules tests/fp/berkeley-softfloat-3"
305 if ! test -f "$source_path/ui/keycodemapdb/README"
308 echo "ERROR: missing file $source_path/ui/keycodemapdb/README"
310 echo "This is not a GIT checkout but module content appears to"
311 echo "be missing. Do not use 'git archive' or GitHub download links"
312 echo "to acquire QEMU source archives. Non-GIT builds are only"
313 echo "supported with source archives linked from:"
315 echo " https://www.qemu.org/download/"
317 echo "Developers working with GIT can use scripts/archive-source.sh"
318 echo "if they need to create valid source archives."
325 # Don't accept a target_list environment variable.
328 # Default value for a variable defining feature "foo".
329 # * foo="no" feature will only be used if --enable-foo arg is given
330 # * foo="" feature will be searched for, and if found, will be used
331 # unless --disable-foo is given
332 # * foo="yes" this value will only be set by --enable-foo flag.
333 # feature will searched for,
334 # if not found, configure exits with error
336 # Always add --enable-foo and --disable-foo command line args.
337 # Distributions want to ensure that several features are compiled in, and it
338 # is impossible without a --enable-foo that exits if a feature is not found.
360 xen_pv_domain_build
="no"
361 xen_pci_passthrough
=""
393 LDFLAGS_SHARED
="-shared"
396 mandir
="\${prefix}/share/man"
397 datadir
="\${prefix}/share"
398 firmwarepath
="\${prefix}/share/qemu-firmware"
399 qemu_docdir
="\${prefix}/share/doc/qemu"
400 bindir
="\${prefix}/bin"
401 libdir
="\${prefix}/lib"
402 libexecdir
="\${prefix}/libexec"
403 includedir
="\${prefix}/include"
404 sysconfdir
="\${prefix}/etc"
405 local_statedir
="\${prefix}/var"
438 guest_agent_with_vss
="no"
439 guest_agent_ntddscsi
="no"
448 debug_stack_usage
="no"
452 glusterfs_xlator_opt
="no"
453 glusterfs_discard
="no"
454 glusterfs_fallocate
="no"
455 glusterfs_zerofill
="no"
458 tls_priority
="NORMAL"
467 live_block_migration
="yes"
478 # cross compilers defaults, can be overridden with --cross-cc-ARCH
479 cross_cc_aarch64
="aarch64-linux-gnu-gcc"
480 cross_cc_aarch64_be
="$cross_cc_aarch64"
481 cross_cc_cflags_aarch64_be
="-mbig-endian"
482 cross_cc_arm
="arm-linux-gnueabihf-gcc"
483 cross_cc_cflags_armeb
="-mbig-endian"
484 cross_cc_i386
="i386-pc-linux-gnu-gcc"
485 cross_cc_cflags_i386
=""
486 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
487 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
489 enabled_cross_compilers
=""
496 # parse CC options first
498 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
500 --cross-prefix=*) cross_prefix
="$optarg"
504 --cxx=*) CXX
="$optarg"
506 --source-path=*) source_path
="$optarg"
508 --cpu=*) cpu
="$optarg"
510 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
512 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
514 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
515 EXTRA_LDFLAGS
="$optarg"
517 --enable-debug-info) debug_info
="yes"
519 --disable-debug-info) debug_info
="no"
521 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
523 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
524 eval "cross_cc_cflags_${cc_arch}=\$optarg"
526 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
527 eval "cross_cc_${cc_arch}=\$optarg"
532 # Using uname is really, really broken. Once we have the right set of checks
533 # we can eliminate its usage altogether.
535 # Preferred compiler:
537 # ${cross_prefix}gcc (if cross-prefix specified)
539 if test -z "${CC}${cross_prefix}"; then
542 cc
="${CC-${cross_prefix}gcc}"
545 if test -z "${CXX}${cross_prefix}"; then
548 cxx
="${CXX-${cross_prefix}g++}"
551 ar="${AR-${cross_prefix}ar}"
552 as
="${AS-${cross_prefix}as}"
555 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
556 ld
="${LD-${cross_prefix}ld}"
557 ranlib
="${RANLIB-${cross_prefix}ranlib}"
558 nm
="${NM-${cross_prefix}nm}"
559 strip
="${STRIP-${cross_prefix}strip}"
560 windres
="${WINDRES-${cross_prefix}windres}"
561 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
563 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
565 pkg_config
=query_pkg_config
566 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
567 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
569 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
570 ARFLAGS
="${ARFLAGS-rv}"
572 # default flags for all hosts
573 # We use -fwrapv to tell the compiler that we require a C dialect where
574 # left shift of signed integers is well defined and has the expected
575 # 2s-complement style results. (Both clang and gcc agree that it
576 # provides these semantics.)
577 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
578 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
579 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
580 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
581 QEMU_INCLUDES
="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
582 if test "$debug_info" = "yes"; then
584 LDFLAGS
="-g $LDFLAGS"
587 # make source path absolute
588 source_path
=$
(cd "$source_path"; pwd)
590 # running configure in the source tree?
591 # we know that's the case if configure is there.
592 if test -f "./configure"; then
593 pwd_is_source_path
="y"
595 pwd_is_source_path
="n"
601 #error $1 not defined
603 int main(void) { return 0; }
611 int main(void) { return 0; }
618 int main(void) { return 0; }
622 if check_define __linux__
; then
624 elif check_define _WIN32
; then
626 elif check_define __OpenBSD__
; then
628 elif check_define __sun__
; then
630 elif check_define __HAIKU__
; then
632 elif check_define __FreeBSD__
; then
634 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
635 targetos
='GNU/kFreeBSD'
636 elif check_define __DragonFly__
; then
638 elif check_define __NetBSD__
; then
640 elif check_define __APPLE__
; then
643 # This is a fatal error, but don't report it yet, because we
644 # might be going to just print the --help text, or it might
645 # be the result of a missing compiler.
650 # Some host OSes need non-standard checks for which CPU to use.
651 # Note that these checks are broken for cross-compilation: if you're
652 # cross-compiling to one of these OSes then you'll need to specify
653 # the correct CPU with the --cpu option.
656 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
657 # run 64-bit userspace code.
658 # If the user didn't specify a CPU explicitly and the kernel says this is
659 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
660 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
665 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
666 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
671 if test ! -z "$cpu" ; then
672 # command line argument
674 elif check_define __i386__
; then
676 elif check_define __x86_64__
; then
677 if check_define __ILP32__
; then
682 elif check_define __sparc__
; then
683 if check_define __arch64__
; then
688 elif check_define _ARCH_PPC
; then
689 if check_define _ARCH_PPC64
; then
694 elif check_define __mips__
; then
696 elif check_define __s390__
; then
697 if check_define __s390x__
; then
702 elif check_define __arm__
; then
704 elif check_define __aarch64__
; then
711 # Normalise host CPU name and set ARCH.
712 # Note that this case should only have supported host CPUs, not guests.
714 ppc|ppc64|s390|s390x|sparc64|x32
)
717 eval "cross_cc_${cpu}=\$host_cc"
719 i386|i486|i586|i686|i86pc|BePC
)
722 cross_cc_i386
=$host_cc
727 cross_cc_x86_64
=$host_cc
732 cross_cc_arm
=$host_cc
737 cross_cc_aarch64
=$host_cc
742 cross_cc_mips
=$host_cc
747 cross_cc_sparc
=$host_cc
750 # This will result in either an error or falling back to TCI later
754 if test -z "$ARCH"; then
760 # host *BSD for user mode
767 audio_possible_drivers
="dsound sdl"
768 if check_include dsound.h
; then
769 audio_drv_list
="dsound"
778 audio_possible_drivers
="oss sdl pa"
784 audio_possible_drivers
="oss sdl pa"
785 # needed for kinfo_getvmmap(3) in libutil.h
787 # needed for kinfo_getproc
788 libs_qga
="-lutil $libs_qga"
789 netmap
="" # enable netmap autodetect
790 HOST_VARIANT_DIR
="freebsd"
797 audio_possible_drivers
="oss sdl pa"
798 HOST_VARIANT_DIR
="dragonfly"
804 audio_possible_drivers
="oss sdl"
806 HOST_VARIANT_DIR
="netbsd"
813 audio_possible_drivers
="sdl"
814 HOST_VARIANT_DIR
="openbsd"
822 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
823 if [ "$cpu" = "x86_64" ] ; then
824 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
825 LDFLAGS
="-arch x86_64 $LDFLAGS"
828 audio_drv_list
="coreaudio"
829 audio_possible_drivers
="coreaudio sdl"
830 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
831 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
832 # Disable attempts to use ObjectiveC features in os/object.h since they
833 # won't work when we're compiling with gcc as a C compiler.
834 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
835 HOST_VARIANT_DIR
="darwin"
841 install="${INSTALL-ginstall}"
842 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
843 if test -f /usr
/include
/sys
/soundcard.h
; then
846 audio_possible_drivers
="oss sdl"
847 # needed for CMSG_ macros in sys/socket.h
848 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
849 # needed for TIOCWIN* defines in termios.h
850 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
851 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
852 solarisnetlibs
="-lsocket -lnsl -lresolv"
853 LIBS
="$solarisnetlibs $LIBS"
854 libs_qga
="$solarisnetlibs $libs_qga"
858 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
859 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
863 audio_possible_drivers
="oss alsa sdl pa"
871 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
876 if [ "$bsd" = "yes" ] ; then
877 if [ "$darwin" != "yes" ] ; then
882 : ${make=${MAKE-make}}
883 : ${install=${INSTALL-install}}
884 : ${python=${PYTHON-python}}
885 : ${smbd=${SMBD-/usr/sbin/smbd}}
887 # Default objcc to clang if available, otherwise use CC
894 if test "$mingw32" = "yes" ; then
897 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
898 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
899 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
900 # MinGW needs -mthreads for TLS and macro _MT.
901 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
902 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
904 if compile_prog
"" "-liberty" ; then
905 LIBS
="-liberty $LIBS"
907 prefix
="c:/Program Files/QEMU"
910 qemu_docdir
="\${prefix}"
912 sysconfdir
="\${prefix}"
915 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
921 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
923 --help|
-h) show_help
=yes
925 --version|
-V) exec cat $source_path/VERSION
927 --prefix=*) prefix
="$optarg"
929 --interp-prefix=*) interp_prefix
="$optarg"
937 --host-cc=*) host_cc
="$optarg"
941 --iasl=*) iasl
="$optarg"
943 --objcc=*) objcc
="$optarg"
945 --make=*) make="$optarg"
947 --install=*) install="$optarg"
949 --python=*) python
="$optarg"
951 --gcov=*) gcov_tool
="$optarg"
953 --smbd=*) smbd
="$optarg"
963 --disable-debug-info)
975 --target-list=*) target_list
="$optarg"
977 --enable-trace-backends=*) trace_backends
="$optarg"
979 # XXX: backwards compatibility
980 --enable-trace-backend=*) trace_backends
="$optarg"
982 --with-trace-file=*) trace_file
="$optarg"
984 --enable-gprof) gprof
="yes"
986 --enable-gcov) gcov
="yes"
990 LDFLAGS
="-static $LDFLAGS"
991 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
993 --mandir=*) mandir
="$optarg"
995 --bindir=*) bindir
="$optarg"
997 --libdir=*) libdir
="$optarg"
999 --libexecdir=*) libexecdir
="$optarg"
1001 --includedir=*) includedir
="$optarg"
1003 --datadir=*) datadir
="$optarg"
1005 --with-confsuffix=*) confsuffix
="$optarg"
1007 --docdir=*) qemu_docdir
="$optarg"
1009 --sysconfdir=*) sysconfdir
="$optarg"
1011 --localstatedir=*) local_statedir
="$optarg"
1013 --firmwarepath=*) firmwarepath
="$optarg"
1015 --host=*|
--build=*|\
1016 --disable-dependency-tracking|\
1017 --sbindir=*|
--sharedstatedir=*|\
1018 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
1019 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
1020 # These switches are silently ignored, for compatibility with
1021 # autoconf-generated configure scripts. This allows QEMU's
1022 # configure to be used by RPM and similar macros that set
1023 # lots of directory switches by default.
1025 --disable-sdl) sdl
="no"
1027 --enable-sdl) sdl
="yes"
1029 --with-sdlabi=*) sdlabi
="$optarg"
1031 --disable-qom-cast-debug) qom_cast_debug
="no"
1033 --enable-qom-cast-debug) qom_cast_debug
="yes"
1035 --disable-virtfs) virtfs
="no"
1037 --enable-virtfs) virtfs
="yes"
1039 --disable-mpath) mpath
="no"
1041 --enable-mpath) mpath
="yes"
1043 --disable-vnc) vnc
="no"
1045 --enable-vnc) vnc
="yes"
1047 --oss-lib=*) oss_lib
="$optarg"
1049 --audio-drv-list=*) audio_drv_list
="$optarg"
1051 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1053 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1055 --enable-debug-tcg) debug_tcg
="yes"
1057 --disable-debug-tcg) debug_tcg
="no"
1060 # Enable debugging options that aren't excessively noisy
1067 --enable-sanitizers) sanitizers
="yes"
1069 --disable-sanitizers) sanitizers
="no"
1071 --enable-sparse) sparse
="yes"
1073 --disable-sparse) sparse
="no"
1075 --disable-strip) strip_opt
="no"
1077 --disable-vnc-sasl) vnc_sasl
="no"
1079 --enable-vnc-sasl) vnc_sasl
="yes"
1081 --disable-vnc-jpeg) vnc_jpeg
="no"
1083 --enable-vnc-jpeg) vnc_jpeg
="yes"
1085 --disable-vnc-png) vnc_png
="no"
1087 --enable-vnc-png) vnc_png
="yes"
1089 --disable-slirp) slirp
="no"
1091 --disable-vde) vde
="no"
1093 --enable-vde) vde
="yes"
1095 --disable-netmap) netmap
="no"
1097 --enable-netmap) netmap
="yes"
1099 --disable-xen) xen
="no"
1101 --enable-xen) xen
="yes"
1103 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1105 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1107 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
1109 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
1111 --disable-brlapi) brlapi
="no"
1113 --enable-brlapi) brlapi
="yes"
1115 --disable-bluez) bluez
="no"
1117 --enable-bluez) bluez
="yes"
1119 --disable-kvm) kvm
="no"
1121 --enable-kvm) kvm
="yes"
1123 --disable-hax) hax
="no"
1125 --enable-hax) hax
="yes"
1127 --disable-hvf) hvf
="no"
1129 --enable-hvf) hvf
="yes"
1131 --disable-whpx) whpx
="no"
1133 --enable-whpx) whpx
="yes"
1135 --disable-tcg-interpreter) tcg_interpreter
="no"
1137 --enable-tcg-interpreter) tcg_interpreter
="yes"
1139 --disable-cap-ng) cap_ng
="no"
1141 --enable-cap-ng) cap_ng
="yes"
1143 --disable-tcg) tcg
="no"
1145 --enable-tcg) tcg
="yes"
1147 --disable-malloc-trim) malloc_trim
="no"
1149 --enable-malloc-trim) malloc_trim
="yes"
1151 --disable-spice) spice
="no"
1153 --enable-spice) spice
="yes"
1155 --disable-libiscsi) libiscsi
="no"
1157 --enable-libiscsi) libiscsi
="yes"
1159 --disable-libnfs) libnfs
="no"
1161 --enable-libnfs) libnfs
="yes"
1163 --enable-profiler) profiler
="yes"
1165 --disable-cocoa) cocoa
="no"
1169 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1171 --disable-system) softmmu
="no"
1173 --enable-system) softmmu
="yes"
1180 --disable-linux-user) linux_user
="no"
1182 --enable-linux-user) linux_user
="yes"
1184 --disable-bsd-user) bsd_user
="no"
1186 --enable-bsd-user) bsd_user
="yes"
1188 --enable-pie) pie
="yes"
1190 --disable-pie) pie
="no"
1192 --enable-werror) werror
="yes"
1194 --disable-werror) werror
="no"
1196 --enable-stack-protector) stack_protector
="yes"
1198 --disable-stack-protector) stack_protector
="no"
1200 --disable-curses) curses
="no"
1202 --enable-curses) curses
="yes"
1204 --disable-curl) curl
="no"
1206 --enable-curl) curl
="yes"
1208 --disable-fdt) fdt
="no"
1210 --enable-fdt) fdt
="yes"
1212 --disable-linux-aio) linux_aio
="no"
1214 --enable-linux-aio) linux_aio
="yes"
1216 --disable-attr) attr
="no"
1218 --enable-attr) attr
="yes"
1220 --disable-membarrier) membarrier
="no"
1222 --enable-membarrier) membarrier
="yes"
1224 --disable-blobs) blobs
="no"
1226 --with-pkgversion=*) pkgversion
="$optarg"
1228 --with-coroutine=*) coroutine
="$optarg"
1230 --disable-coroutine-pool) coroutine_pool
="no"
1232 --enable-coroutine-pool) coroutine_pool
="yes"
1234 --enable-debug-stack-usage) debug_stack_usage
="yes"
1236 --enable-crypto-afalg) crypto_afalg
="yes"
1238 --disable-crypto-afalg) crypto_afalg
="no"
1240 --disable-docs) docs
="no"
1242 --enable-docs) docs
="yes"
1244 --disable-vhost-net) vhost_net
="no"
1246 --enable-vhost-net) vhost_net
="yes"
1248 --disable-vhost-crypto) vhost_crypto
="no"
1250 --enable-vhost-crypto)
1252 if test "$mingw32" = "yes"; then
1253 error_exit
"vhost-crypto isn't available on win32"
1256 --disable-vhost-scsi) vhost_scsi
="no"
1258 --enable-vhost-scsi) vhost_scsi
="yes"
1260 --disable-vhost-vsock) vhost_vsock
="no"
1262 --enable-vhost-vsock) vhost_vsock
="yes"
1264 --disable-opengl) opengl
="no"
1266 --enable-opengl) opengl
="yes"
1268 --disable-rbd) rbd
="no"
1270 --enable-rbd) rbd
="yes"
1272 --disable-xfsctl) xfs
="no"
1274 --enable-xfsctl) xfs
="yes"
1276 --disable-smartcard) smartcard
="no"
1278 --enable-smartcard) smartcard
="yes"
1280 --disable-libusb) libusb
="no"
1282 --enable-libusb) libusb
="yes"
1284 --disable-usb-redir) usb_redir
="no"
1286 --enable-usb-redir) usb_redir
="yes"
1288 --disable-zlib-test) zlib
="no"
1290 --disable-lzo) lzo
="no"
1292 --enable-lzo) lzo
="yes"
1294 --disable-snappy) snappy
="no"
1296 --enable-snappy) snappy
="yes"
1298 --disable-bzip2) bzip2="no"
1300 --enable-bzip2) bzip2="yes"
1302 --enable-guest-agent) guest_agent
="yes"
1304 --disable-guest-agent) guest_agent
="no"
1306 --enable-guest-agent-msi) guest_agent_msi
="yes"
1308 --disable-guest-agent-msi) guest_agent_msi
="no"
1310 --with-vss-sdk) vss_win32_sdk
=""
1312 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1314 --without-vss-sdk) vss_win32_sdk
="no"
1316 --with-win-sdk) win_sdk
=""
1318 --with-win-sdk=*) win_sdk
="$optarg"
1320 --without-win-sdk) win_sdk
="no"
1322 --enable-tools) want_tools
="yes"
1324 --disable-tools) want_tools
="no"
1326 --enable-seccomp) seccomp
="yes"
1328 --disable-seccomp) seccomp
="no"
1330 --disable-glusterfs) glusterfs
="no"
1332 --disable-avx2) avx2_opt
="no"
1334 --enable-avx2) avx2_opt
="yes"
1336 --enable-glusterfs) glusterfs
="yes"
1338 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1339 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1341 --enable-vhdx|
--disable-vhdx)
1342 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1344 --enable-uuid|
--disable-uuid)
1345 echo "$0: $opt is obsolete, UUID support is always built" >&2
1347 --disable-gtk) gtk
="no"
1349 --enable-gtk) gtk
="yes"
1351 --tls-priority=*) tls_priority
="$optarg"
1353 --disable-gnutls) gnutls
="no"
1355 --enable-gnutls) gnutls
="yes"
1357 --disable-nettle) nettle
="no"
1359 --enable-nettle) nettle
="yes"
1361 --disable-gcrypt) gcrypt
="no"
1363 --enable-gcrypt) gcrypt
="yes"
1365 --enable-rdma) rdma
="yes"
1367 --disable-rdma) rdma
="no"
1369 --enable-pvrdma) pvrdma
="yes"
1371 --disable-pvrdma) pvrdma
="no"
1373 --disable-vte) vte
="no"
1375 --enable-vte) vte
="yes"
1377 --disable-virglrenderer) virglrenderer
="no"
1379 --enable-virglrenderer) virglrenderer
="yes"
1381 --disable-tpm) tpm
="no"
1383 --enable-tpm) tpm
="yes"
1385 --disable-libssh2) libssh2
="no"
1387 --enable-libssh2) libssh2
="yes"
1389 --disable-live-block-migration) live_block_migration
="no"
1391 --enable-live-block-migration) live_block_migration
="yes"
1393 --disable-numa) numa
="no"
1395 --enable-numa) numa
="yes"
1397 --disable-libxml2) libxml2
="no"
1399 --enable-libxml2) libxml2
="yes"
1401 --disable-tcmalloc) tcmalloc
="no"
1403 --enable-tcmalloc) tcmalloc
="yes"
1405 --disable-jemalloc) jemalloc
="no"
1407 --enable-jemalloc) jemalloc
="yes"
1409 --disable-replication) replication
="no"
1411 --enable-replication) replication
="yes"
1413 --disable-vxhs) vxhs
="no"
1415 --enable-vxhs) vxhs
="yes"
1417 --disable-vhost-user) vhost_user
="no"
1419 --enable-vhost-user)
1421 if test "$mingw32" = "yes"; then
1422 error_exit
"vhost-user isn't available on win32"
1425 --disable-capstone) capstone
="no"
1427 --enable-capstone) capstone
="yes"
1429 --enable-capstone=git
) capstone
="git"
1431 --enable-capstone=system
) capstone
="system"
1433 --with-git=*) git
="$optarg"
1435 --enable-git-update) git_update
=yes
1437 --disable-git-update) git_update
=no
1439 --enable-debug-mutex) debug_mutex
=yes
1441 --disable-debug-mutex) debug_mutex
=no
1443 --enable-libpmem) libpmem
=yes
1445 --disable-libpmem) libpmem
=no
1448 echo "ERROR: unknown option $opt"
1449 echo "Try '$0 --help' for more information"
1455 if test "$vhost_user" = ""; then
1456 if test "$mingw32" = "yes"; then
1466 LDFLAGS
="-m32 $LDFLAGS"
1467 cross_cc_powerpc
=$cc
1468 cross_cc_cflags_powerpc
=$CPU_CFLAGS
1472 LDFLAGS
="-m64 $LDFLAGS"
1474 cross_cc_cflags_ppc64
=$CPU_CFLAGS
1477 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1478 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1480 cross_cc_cflags_sparc
=$CPU_CFLAGS
1483 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1484 LDFLAGS
="-m64 $LDFLAGS"
1485 cross_cc_sparc64
=$cc
1486 cross_cc_cflags_sparc64
=$CPU_CFLAGS
1490 LDFLAGS
="-m31 $LDFLAGS"
1492 cross_cc_cflags_s390
=$CPU_CFLAGS
1496 LDFLAGS
="-m64 $LDFLAGS"
1498 cross_cc_cflags_s390x
=$CPU_CFLAGS
1502 LDFLAGS
="-m32 $LDFLAGS"
1504 cross_cc_cflags_i386
=$CPU_CFLAGS
1507 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1508 # If we truly care, we should simply detect this case at
1509 # runtime and generate the fallback to serial emulation.
1510 CPU_CFLAGS
="-m64 -mcx16"
1511 LDFLAGS
="-m64 $LDFLAGS"
1513 cross_cc_cflags_x86_64
=$CPU_CFLAGS
1517 LDFLAGS
="-mx32 $LDFLAGS"
1519 cross_cc_cflags_i386
=$CPU_CFLAGS
1521 # No special flags required for other host CPUs
1524 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1526 # For user-mode emulation the host arch has to be one we explicitly
1527 # support, even if we're using TCI.
1528 if [ "$ARCH" = "unknown" ]; then
1533 default_target_list
=""
1537 if [ "$softmmu" = "yes" ]; then
1538 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1540 if [ "$linux_user" = "yes" ]; then
1541 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1543 if [ "$bsd_user" = "yes" ]; then
1544 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1547 for config
in $mak_wilds; do
1548 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1551 # Enumerate public trace backends for --help output
1552 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1554 if test x
"$show_help" = x
"yes" ; then
1557 Usage: configure [options]
1558 Options: [defaults in brackets after descriptions]
1561 --help print this message
1562 --prefix=PREFIX install in PREFIX [$prefix]
1563 --interp-prefix=PREFIX where to find shared libraries, etc.
1564 use %M for cpu name [$interp_prefix]
1565 --target-list=LIST set target list (default: build everything)
1566 $(echo Available targets: $default_target_list | \
1567 fold -s -w 53 | sed -e 's/^/ /')
1569 Advanced options (experts only):
1570 --source-path=PATH path of source code [$source_path]
1571 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1572 --cc=CC use C compiler CC [$cc]
1573 --iasl=IASL use ACPI compiler IASL [$iasl]
1574 --host-cc=CC use C compiler CC [$host_cc] for code run at
1576 --cxx=CXX use C++ compiler CXX [$cxx]
1577 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1578 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1579 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1580 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1581 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1582 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1583 --make=MAKE use specified make [$make]
1584 --install=INSTALL use specified install [$install]
1585 --python=PYTHON use specified python [$python]
1586 --smbd=SMBD use specified smbd [$smbd]
1587 --with-git=GIT use specified git [$git]
1588 --static enable static build [$static]
1589 --mandir=PATH install man pages in PATH
1590 --datadir=PATH install firmware in PATH$confsuffix
1591 --docdir=PATH install documentation in PATH$confsuffix
1592 --bindir=PATH install binaries in PATH
1593 --libdir=PATH install libraries in PATH
1594 --libexecdir=PATH install helper binaries in PATH
1595 --sysconfdir=PATH install config in PATH$confsuffix
1596 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1597 --firmwarepath=PATH search PATH for firmware files
1598 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1599 --with-pkgversion=VERS use specified string as sub-version of the package
1600 --enable-debug enable common debug build options
1601 --enable-sanitizers enable default sanitizers
1602 --disable-strip disable stripping binaries
1603 --disable-werror disable compilation abort on warning
1604 --disable-stack-protector disable compiler-provided stack protection
1605 --audio-drv-list=LIST set audio drivers list:
1606 Available drivers: $audio_possible_drivers
1607 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1608 --block-drv-rw-whitelist=L
1609 set block driver read-write whitelist
1610 (affects only QEMU, not qemu-img)
1611 --block-drv-ro-whitelist=L
1612 set block driver read-only whitelist
1613 (affects only QEMU, not qemu-img)
1614 --enable-trace-backends=B Set trace backend
1615 Available backends: $trace_backend_list
1616 --with-trace-file=NAME Full PATH,NAME of file to store traces
1618 --disable-slirp disable SLIRP userspace network connectivity
1619 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1620 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1621 --oss-lib path to OSS library
1622 --cpu=CPU Build for host CPU [$cpu]
1623 --with-coroutine=BACKEND coroutine backend. Supported options:
1624 ucontext, sigaltstack, windows
1625 --enable-gcov enable test coverage analysis with gcov
1626 --gcov=GCOV use specified gcov [$gcov_tool]
1627 --disable-blobs disable installing provided firmware blobs
1628 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1629 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1630 --tls-priority default TLS protocol/cipher priority string
1631 --enable-gprof QEMU profiling with gprof
1632 --enable-profiler profiler support
1633 --enable-xen-pv-domain-build
1634 xen pv domain builder
1635 --enable-debug-stack-usage
1636 track the maximum stack usage of stacks created by qemu_alloc_stack
1638 Optional features, enabled with --enable-FEATURE and
1639 disabled with --disable-FEATURE, default is enabled if available:
1641 system all system emulation targets
1642 user supported user emulation targets
1643 linux-user all linux usermode emulation targets
1644 bsd-user all BSD usermode emulation targets
1645 docs build documentation
1646 guest-agent build the QEMU Guest Agent
1647 guest-agent-msi build guest agent Windows MSI installation package
1648 pie Position Independent Executables
1649 modules modules support
1650 debug-tcg TCG debugging (default is disabled)
1651 debug-info debugging information
1652 sparse sparse checker
1654 gnutls GNUTLS cryptography support
1655 nettle nettle cryptography support
1656 gcrypt libgcrypt cryptography support
1658 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1660 vte vte support for the gtk UI
1663 vnc-sasl SASL encryption for VNC server
1664 vnc-jpeg JPEG lossy compression for VNC server
1665 vnc-png PNG compression for VNC server
1666 cocoa Cocoa UI (Mac OS X only)
1668 mpath Multipath persistent reservation passthrough
1669 xen xen backend driver support
1670 xen-pci-passthrough PCI passthrough support for Xen
1671 brlapi BrlAPI (Braile)
1672 curl curl connectivity
1673 membarrier membarrier system call (for Linux 4.14+ or Windows)
1675 bluez bluez stack connectivity
1676 kvm KVM acceleration support
1677 hax HAX acceleration support
1678 hvf Hypervisor.framework acceleration support
1679 whpx Windows Hypervisor Platform acceleration support
1680 rdma Enable RDMA-based migration
1681 pvrdma Enable PVRDMA support
1682 vde support for vde network
1683 netmap support for netmap network
1684 linux-aio Linux AIO support
1685 cap-ng libcap-ng support
1686 attr attr and xattr support
1687 vhost-net vhost-net acceleration support
1688 vhost-crypto vhost-crypto acceleration support
1690 rbd rados block device (rbd)
1691 libiscsi iscsi support
1693 smartcard smartcard support (libcacard)
1694 libusb libusb (for usb passthrough)
1695 live-block-migration Block migration in the main migration stream
1696 usb-redir usb network redirection support
1697 lzo support of lzo compression library
1698 snappy support of snappy compression library
1699 bzip2 support of bzip2 compression library
1700 (for reading bzip2-compressed dmg images)
1701 seccomp seccomp support
1702 coroutine-pool coroutine freelist (better performance)
1703 glusterfs GlusterFS backend
1705 libssh2 ssh block device support
1706 numa libnuma support
1707 libxml2 for Parallels image format
1708 tcmalloc tcmalloc support
1709 jemalloc jemalloc support
1710 avx2 AVX2 optimization support
1711 replication replication support
1712 vhost-vsock virtio sockets device support
1713 opengl opengl support
1714 virglrenderer virgl rendering support
1715 xfsctl xfsctl support
1716 qom-cast-debug cast debugging support
1717 tools build qemu-io, qemu-nbd and qemu-image tools
1718 vxhs Veritas HyperScale vDisk backend support
1719 crypto-afalg Linux AF_ALG crypto backend driver
1720 vhost-user vhost-user support
1721 capstone capstone disassembler support
1722 debug-mutex mutex debugging support
1723 libpmem libpmem support
1725 NOTE: The object files are built at the place where configure is launched
1730 if ! has
$python; then
1731 error_exit
"Python not found. Use --python=/path/to/python"
1734 # Note that if the Python conditional here evaluates True we will exit
1735 # with status 1 which is a shell 'false' value.
1736 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then
1737 error_exit
"Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \
1738 "Use --python=/path/to/python to specify a supported Python."
1741 # Suppress writing compiled files
1744 # Check that the C compiler works. Doing this here before testing
1745 # the host CPU ensures that we had a valid CC to autodetect the
1746 # $cpu var (and we should bail right here if that's not the case).
1747 # It also allows the help message to be printed without a CC.
1749 if compile_object
; then
1750 : C compiler works ok
1752 error_exit
"\"$cc\" either does not exist or does not work"
1754 if ! compile_prog
; then
1755 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1758 # Now we have handled --enable-tcg-interpreter and know we're not just
1759 # printing the help message, bail out if the host CPU isn't supported.
1760 if test "$ARCH" = "unknown"; then
1761 if test "$tcg_interpreter" = "yes" ; then
1762 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1764 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1768 # Consult white-list to determine whether to enable werror
1769 # by default. Only enable by default for git builds
1770 if test -z "$werror" ; then
1771 if test -d "$source_path/.git" -a \
1772 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1779 if test "$bogus_os" = "yes"; then
1780 # Now that we know that we're not printing the help and that
1781 # the compiler works (so the results of the check_defines we used
1782 # to identify the OS are reliable), if we didn't recognize the
1783 # host OS we should stop now.
1784 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1787 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1788 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1789 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1790 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1791 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1792 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1793 gcc_flags
="-Wno-error=address-of-packed-member $gcc_flags"
1794 # Note that we do not add -Werror to gcc_flags here, because that would
1795 # enable it for all configure tests. If a configure test failed due
1796 # to -Werror this would just silently disable some features,
1797 # so it's too error prone.
1799 cc_has_warning_flag
() {
1802 # Use the positive sense of the flag when testing for -Wno-wombat
1803 # support (gcc will happily accept the -Wno- form of unknown
1805 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1806 compile_prog
"-Werror $optflag" ""
1809 for flag
in $gcc_flags; do
1810 if cc_has_warning_flag
$flag ; then
1811 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1815 if test "$stack_protector" != "no"; then
1817 int main(int argc, char *argv[])
1819 char arr[64], *p = arr, *c = argv[0];
1826 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1828 for flag
in $gcc_flags; do
1829 # We need to check both a compile and a link, since some compiler
1830 # setups fail only on a .c->.o compile and some only at link time
1831 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1832 compile_prog
"-Werror $flag" ""; then
1833 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1838 if test "$stack_protector" = yes; then
1839 if test $sp_on = 0; then
1840 error_exit
"Stack protector not supported"
1845 # Disable -Wmissing-braces on older compilers that warn even for
1846 # the "universal" C zero initializer {0}.
1852 if compile_object
"-Werror" "" ; then
1855 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1858 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1859 # large functions that use global variables. The bug is in all releases of
1860 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1861 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1863 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1864 int main(void) { return 0; }
1866 #error No bug in this compiler.
1869 if compile_prog
"-Werror -fno-gcse" "" ; then
1870 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1873 if test "$static" = "yes" ; then
1874 if test "$modules" = "yes" ; then
1875 error_exit
"static and modules are mutually incompatible"
1877 if test "$pie" = "yes" ; then
1878 error_exit
"static and pie are mutually incompatible"
1884 # Unconditional check for compiler __thread support
1886 static __thread int tls_var;
1887 int main(void) { return tls_var; }
1890 if ! compile_prog
"-Werror" "" ; then
1891 error_exit
"Your compiler does not support the __thread specifier for " \
1892 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1895 if test "$pie" = ""; then
1896 case "$cpu-$targetos" in
1897 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1905 if test "$pie" != "no" ; then
1909 # define THREAD __thread
1914 static THREAD int tls_var;
1916 int main(void) { return tls_var; }
1919 if compile_prog
"-fPIE -DPIE" "-pie"; then
1920 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1921 LDFLAGS
="-pie $LDFLAGS"
1923 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1924 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1927 if test "$pie" = "yes"; then
1928 error_exit
"PIE not available due to missing toolchain support"
1930 echo "Disabling PIE due to missing toolchain support"
1935 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1936 CFLAGS_NOPIE
="-fno-pie"
1937 LDFLAGS_NOPIE
="-nopie"
1941 ##########################################
1942 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1943 # use i686 as default anyway, but for those that don't, an explicit
1944 # specification is necessary
1946 if test "$cpu" = "i386"; then
1948 static int sfaa(int *ptr)
1950 return __sync_fetch_and_and(ptr, 0);
1956 val = __sync_val_compare_and_swap(&val, 0, 1);
1961 if ! compile_prog
"" "" ; then
1962 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1966 #########################################
1967 # Solaris specific configure tool chain decisions
1969 if test "$solaris" = "yes" ; then
1970 if has
$install; then
1973 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1974 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1975 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1977 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1978 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1979 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1980 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1985 if test -f /usr
/ccs
/bin
/ar ; then
1986 error_exit
"No path includes ar" \
1987 "Add /usr/ccs/bin to your path and rerun configure"
1989 error_exit
"No path includes ar"
1993 if test -z "${target_list+xxx}" ; then
1994 for target
in $default_target_list; do
1995 supported_target
$target 2>/dev
/null
&& \
1996 target_list
="$target_list $target"
1998 target_list
="${target_list# }"
2000 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
2001 for target
in $target_list; do
2002 # Check that we recognised the target name; this allows a more
2003 # friendly error message than if we let it fall through.
2004 case " $default_target_list " in
2008 error_exit
"Unknown target name '$target'"
2011 supported_target
$target ||
exit 1
2015 # see if system emulation was really requested
2016 case " $target_list " in
2017 *"-softmmu "*) softmmu
=yes
2023 feature_not_found
() {
2027 error_exit
"User requested feature $feature" \
2028 "configure was not able to find it." \
2033 # big/little endian test
2035 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2036 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2037 extern int foo(short *, short *);
2038 int main(int argc, char *argv[]) {
2039 return foo(big_endian, little_endian);
2043 if compile_object
; then
2044 if strings -a $TMPO |
grep -q BiGeNdIaN
; then
2046 elif strings -a $TMPO |
grep -q LiTtLeEnDiAn
; then
2049 echo big
/little
test failed
2052 echo big
/little
test failed
2055 ##########################################
2056 # cocoa implies not SDL or GTK
2057 # (the cocoa UI code currently assumes it is always the active UI
2058 # and doesn't interact well with other UI frontend code)
2059 if test "$cocoa" = "yes"; then
2060 if test "$sdl" = "yes"; then
2061 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
2063 if test "$gtk" = "yes"; then
2064 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
2070 # Some versions of Mac OS X incorrectly define SIZE_MAX
2074 int main(int argc, char *argv[]) {
2075 return printf("%zu", SIZE_MAX);
2078 have_broken_size_max
=no
2079 if ! compile_object
-Werror ; then
2080 have_broken_size_max
=yes
2083 ##########################################
2087 #include <sys/socket.h>
2088 #include <linux/ip.h>
2089 int main(void) { return sizeof(struct mmsghdr); }
2091 if compile_prog
"" "" ; then
2097 ##########################################
2098 # MinGW / Mingw-w64 localtime_r/gmtime_r check
2100 if test "$mingw32" = "yes"; then
2101 # Some versions of MinGW / Mingw-w64 lack localtime_r
2102 # and gmtime_r entirely.
2104 # Some versions of Mingw-w64 define a macro for
2105 # localtime_r/gmtime_r.
2107 # Some versions of Mingw-w64 will define functions
2108 # for localtime_r/gmtime_r, but only if you have
2109 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2110 # though, unistd.h and pthread.h both define
2113 # So this #undef localtime_r and #include <unistd.h>
2114 # are not in fact redundant.
2119 int main(void) { localtime_r(NULL, NULL); return 0; }
2121 if compile_prog
"" "" ; then
2128 ##########################################
2131 if ! has
"$pkg_config_exe"; then
2132 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2135 ##########################################
2138 if test "$linux_user" = "yes"; then
2141 #include <linux/futex.h>
2143 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2149 if ! compile_object
; then
2150 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2154 #########################################
2157 if test "$zlib" != "no" ; then
2160 int main(void) { zlibVersion(); return 0; }
2162 if compile_prog
"" "-lz" ; then
2165 error_exit
"zlib check failed" \
2166 "Make sure to have the zlib libs and headers installed."
2171 ##########################################
2174 if test "$lzo" != "no" ; then
2176 #include <lzo/lzo1x.h>
2177 int main(void) { lzo_version(); return 0; }
2179 if compile_prog
"" "-llzo2" ; then
2180 libs_softmmu
="$libs_softmmu -llzo2"
2183 if test "$lzo" = "yes"; then
2184 feature_not_found
"liblzo2" "Install liblzo2 devel"
2190 ##########################################
2193 if test "$snappy" != "no" ; then
2195 #include <snappy-c.h>
2196 int main(void) { snappy_max_compressed_length(4096); return 0; }
2198 if compile_prog
"" "-lsnappy" ; then
2199 libs_softmmu
="$libs_softmmu -lsnappy"
2202 if test "$snappy" = "yes"; then
2203 feature_not_found
"libsnappy" "Install libsnappy devel"
2209 ##########################################
2212 if test "$bzip2" != "no" ; then
2215 int main(void) { BZ2_bzlibVersion(); return 0; }
2217 if compile_prog
"" "-lbz2" ; then
2220 if test "$bzip2" = "yes"; then
2221 feature_not_found
"libbzip2" "Install libbzip2 devel"
2227 ##########################################
2230 libseccomp_minver
="2.2.0"
2231 if test "$seccomp" != "no" ; then
2236 libseccomp_minver
="2.2.3"
2239 libseccomp_minver
="2.3.0"
2242 libseccomp_minver
=""
2246 if test "$libseccomp_minver" != "" &&
2247 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2248 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2249 seccomp_libs
="$($pkg_config --libs libseccomp)"
2252 if test "$seccomp" = "yes" ; then
2253 if test "$libseccomp_minver" != "" ; then
2254 feature_not_found
"libseccomp" \
2255 "Install libseccomp devel >= $libseccomp_minver"
2257 feature_not_found
"libseccomp" \
2258 "libseccomp is not supported for host cpu $cpu"
2264 ##########################################
2267 if test "$xen" != "no" ; then
2268 # Check whether Xen library path is specified via --extra-ldflags to avoid
2269 # overriding this setting with pkg-config output. If not, try pkg-config
2270 # to obtain all needed flags.
2272 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2273 $pkg_config --exists xencontrol
; then
2274 xen_ctrl_version
="$(printf '%d%02d%02d' \
2275 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2277 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2278 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2279 if $pkg_config --exists xentoolcore
; then
2280 xen_pc
="$xen_pc xentoolcore"
2282 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2283 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2284 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2287 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2288 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2290 # First we test whether Xen headers and libraries are available.
2291 # If no, we are done and there is no Xen support.
2292 # If yes, more tests are run to detect the Xen version.
2296 #include <xenctrl.h>
2301 if ! compile_prog
"" "$xen_libs" ; then
2303 if test "$xen" = "yes" ; then
2304 feature_not_found
"xen" "Install xen devel"
2310 cat > $TMPC <<EOF &&
2311 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2312 #define __XEN_TOOLS__
2313 #include <xendevicemodel.h>
2314 #include <xenforeignmemory.h>
2316 xendevicemodel_handle *xd;
2317 xenforeignmemory_handle *xfmem;
2319 xd = xendevicemodel_open(0, 0);
2320 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2322 xfmem = xenforeignmemory_open(0, 0);
2323 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2328 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2330 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2331 xen_ctrl_version
=41100
2334 cat > $TMPC <<EOF &&
2335 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2336 #include <xenforeignmemory.h>
2337 #include <xentoolcore.h>
2339 xenforeignmemory_handle *xfmem;
2341 xfmem = xenforeignmemory_open(0, 0);
2342 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2343 xentoolcore_restrict_all(0);
2348 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2350 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2351 xen_ctrl_version
=41000
2354 cat > $TMPC <<EOF &&
2355 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2356 #define __XEN_TOOLS__
2357 #include <xendevicemodel.h>
2359 xendevicemodel_handle *xd;
2361 xd = xendevicemodel_open(0, 0);
2362 xendevicemodel_close(xd);
2367 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2369 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2370 xen_ctrl_version
=40900
2373 cat > $TMPC <<EOF &&
2375 * If we have stable libs the we don't want the libxc compat
2376 * layers, regardless of what CFLAGS we may have been given.
2378 * Also, check if xengnttab_grant_copy_segment_t is defined and
2379 * grant copy operation is implemented.
2381 #undef XC_WANT_COMPAT_EVTCHN_API
2382 #undef XC_WANT_COMPAT_GNTTAB_API
2383 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2384 #include <xenctrl.h>
2385 #include <xenstore.h>
2386 #include <xenevtchn.h>
2387 #include <xengnttab.h>
2388 #include <xenforeignmemory.h>
2390 #include <xen/hvm/hvm_info_table.h>
2391 #if !defined(HVM_MAX_VCPUS)
2392 # error HVM_MAX_VCPUS not defined
2395 xc_interface *xc = NULL;
2396 xenforeignmemory_handle *xfmem;
2397 xenevtchn_handle *xe;
2398 xengnttab_handle *xg;
2399 xen_domain_handle_t handle;
2400 xengnttab_grant_copy_segment_t* seg = NULL;
2404 xc = xc_interface_open(0, 0, 0);
2405 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2406 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2407 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2408 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2409 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2411 xfmem = xenforeignmemory_open(0, 0);
2412 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2414 xe = xenevtchn_open(0, 0);
2417 xg = xengnttab_open(0, 0);
2418 xengnttab_grant_copy(xg, 0, seg);
2423 compile_prog
"" "$xen_libs $xen_stable_libs"
2425 xen_ctrl_version
=40800
2428 cat > $TMPC <<EOF &&
2430 * If we have stable libs the we don't want the libxc compat
2431 * layers, regardless of what CFLAGS we may have been given.
2433 #undef XC_WANT_COMPAT_EVTCHN_API
2434 #undef XC_WANT_COMPAT_GNTTAB_API
2435 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2436 #include <xenctrl.h>
2437 #include <xenstore.h>
2438 #include <xenevtchn.h>
2439 #include <xengnttab.h>
2440 #include <xenforeignmemory.h>
2442 #include <xen/hvm/hvm_info_table.h>
2443 #if !defined(HVM_MAX_VCPUS)
2444 # error HVM_MAX_VCPUS not defined
2447 xc_interface *xc = NULL;
2448 xenforeignmemory_handle *xfmem;
2449 xenevtchn_handle *xe;
2450 xengnttab_handle *xg;
2451 xen_domain_handle_t handle;
2455 xc = xc_interface_open(0, 0, 0);
2456 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2457 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2458 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2459 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2460 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2462 xfmem = xenforeignmemory_open(0, 0);
2463 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2465 xe = xenevtchn_open(0, 0);
2468 xg = xengnttab_open(0, 0);
2469 xengnttab_map_grant_ref(xg, 0, 0, 0);
2474 compile_prog
"" "$xen_libs $xen_stable_libs"
2476 xen_ctrl_version
=40701
2479 cat > $TMPC <<EOF &&
2480 #include <xenctrl.h>
2483 xc_interface *xc = NULL;
2484 xen_domain_handle_t handle;
2485 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2489 compile_prog
"" "$xen_libs"
2491 xen_ctrl_version
=40700
2496 cat > $TMPC <<EOF &&
2497 #include <xenctrl.h>
2498 #include <xenstore.h>
2500 #include <xen/hvm/hvm_info_table.h>
2501 #if !defined(HVM_MAX_VCPUS)
2502 # error HVM_MAX_VCPUS not defined
2507 xc = xc_interface_open(0, 0, 0);
2508 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2509 xc_gnttab_open(NULL, 0);
2510 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2511 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2512 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2513 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2517 compile_prog
"" "$xen_libs"
2519 xen_ctrl_version
=40600
2524 cat > $TMPC <<EOF &&
2525 #include <xenctrl.h>
2526 #include <xenstore.h>
2528 #include <xen/hvm/hvm_info_table.h>
2529 #if !defined(HVM_MAX_VCPUS)
2530 # error HVM_MAX_VCPUS not defined
2535 xc = xc_interface_open(0, 0, 0);
2536 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2537 xc_gnttab_open(NULL, 0);
2538 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2539 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2540 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2544 compile_prog
"" "$xen_libs"
2546 xen_ctrl_version
=40500
2550 cat > $TMPC <<EOF &&
2551 #include <xenctrl.h>
2552 #include <xenstore.h>
2554 #include <xen/hvm/hvm_info_table.h>
2555 #if !defined(HVM_MAX_VCPUS)
2556 # error HVM_MAX_VCPUS not defined
2561 xc = xc_interface_open(0, 0, 0);
2562 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2563 xc_gnttab_open(NULL, 0);
2564 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2565 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2569 compile_prog
"" "$xen_libs"
2571 xen_ctrl_version
=40200
2575 if test "$xen" = "yes" ; then
2576 feature_not_found
"xen (unsupported version)" \
2577 "Install a supported xen (xen 4.2 or newer)"
2582 if test "$xen" = yes; then
2583 if test $xen_ctrl_version -ge 40701 ; then
2584 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2586 libs_softmmu
="$xen_libs $libs_softmmu"
2591 if test "$xen_pci_passthrough" != "no"; then
2592 if test "$xen" = "yes" && test "$linux" = "yes"; then
2593 xen_pci_passthrough
=yes
2595 if test "$xen_pci_passthrough" = "yes"; then
2596 error_exit
"User requested feature Xen PCI Passthrough" \
2597 " but this feature requires /sys from Linux"
2599 xen_pci_passthrough
=no
2603 if test "$xen_pv_domain_build" = "yes" &&
2604 test "$xen" != "yes"; then
2605 error_exit
"User requested Xen PV domain builder support" \
2606 "which requires Xen support."
2609 ##########################################
2610 # Windows Hypervisor Platform accelerator (WHPX) check
2611 if test "$whpx" != "no" ; then
2612 if check_include
"WinHvPlatform.h" && check_include
"WinHvEmulation.h"; then
2615 if test "$whpx" = "yes"; then
2616 feature_not_found
"WinHvPlatform" "WinHvEmulation is not installed"
2622 ##########################################
2624 if test "$sparse" != "no" ; then
2628 if test "$sparse" = "yes" ; then
2629 feature_not_found
"sparse" "Install sparse binary"
2635 ##########################################
2637 if $pkg_config --exists "x11"; then
2639 x11_cflags
=$
($pkg_config --cflags x11
)
2640 x11_libs
=$
($pkg_config --libs x11
)
2643 ##########################################
2646 if test "$gtk" != "no"; then
2647 gtkpackage
="gtk+-3.0"
2648 gtkx11package
="gtk+-x11-3.0"
2650 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2651 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2652 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2653 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2654 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2656 gtk_cflags
="$gtk_cflags $x11_cflags"
2657 gtk_libs
="$gtk_libs $x11_libs"
2660 elif test "$gtk" = "yes"; then
2661 feature_not_found
"gtk" "Install gtk3-devel"
2668 ##########################################
2671 if test "$gnutls" != "no"; then
2672 if $pkg_config --exists "gnutls >= 3.1.18"; then
2673 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2674 gnutls_libs
=$
($pkg_config --libs gnutls
)
2675 libs_softmmu
="$gnutls_libs $libs_softmmu"
2676 libs_tools
="$gnutls_libs $libs_tools"
2677 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2679 elif test "$gnutls" = "yes"; then
2680 feature_not_found
"gnutls" "Install gnutls devel >= 3.1.18"
2687 # If user didn't give a --disable/enable-gcrypt flag,
2688 # then mark as disabled if user requested nettle
2690 if test -z "$gcrypt"
2692 if test "$nettle" = "yes"
2698 # If user didn't give a --disable/enable-nettle flag,
2699 # then mark as disabled if user requested gcrypt
2701 if test -z "$nettle"
2703 if test "$gcrypt" = "yes"
2710 if ! has
"libgcrypt-config"
2715 if test -n "$cross_prefix"
2717 host=$
(libgcrypt-config
--host)
2718 if test "$host-" != $cross_prefix
2724 maj
=`libgcrypt-config --version | awk -F . '{print $1}'`
2725 min
=`libgcrypt-config --version | awk -F . '{print $2}'`
2727 if test $maj != 1 ||
test $min -lt 5
2736 if test "$nettle" != "no"; then
2737 if $pkg_config --exists "nettle >= 2.7.1"; then
2738 nettle_cflags
=$
($pkg_config --cflags nettle
)
2739 nettle_libs
=$
($pkg_config --libs nettle
)
2740 nettle_version
=$
($pkg_config --modversion nettle
)
2741 libs_softmmu
="$nettle_libs $libs_softmmu"
2742 libs_tools
="$nettle_libs $libs_tools"
2743 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2746 if test -z "$gcrypt"; then
2750 if test "$nettle" = "yes"; then
2751 feature_not_found
"nettle" "Install nettle devel >= 2.7.1"
2758 if test "$gcrypt" != "no"; then
2759 if has_libgcrypt
; then
2760 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2761 gcrypt_libs
=$
(libgcrypt-config
--libs)
2762 # Debian has remove -lgpg-error from libgcrypt-config
2763 # as it "spreads unnecessary dependencies" which in
2764 # turn breaks static builds...
2765 if test "$static" = "yes"
2767 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2769 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2770 libs_tools
="$gcrypt_libs $libs_tools"
2771 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2777 gcry_mac_hd_t handle;
2778 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2779 GCRY_MAC_FLAG_SECURE, NULL);
2783 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2787 if test "$gcrypt" = "yes"; then
2788 feature_not_found
"gcrypt" "Install gcrypt devel >= 1.5.0"
2796 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2798 error_exit
"Only one of gcrypt & nettle can be enabled"
2801 ##########################################
2802 # libtasn1 - only for the TLS creds/session test suite
2807 if $pkg_config --exists "libtasn1"; then
2808 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2809 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2815 ##########################################
2816 # getifaddrs (for tests/test-io-channel-socket )
2819 if ! check_include
"ifaddrs.h" ; then
2823 ##########################################
2826 if test "$vte" != "no"; then
2827 vteminversion
="0.32.0"
2828 if $pkg_config --exists "vte-2.91"; then
2829 vtepackage
="vte-2.91"
2831 vtepackage
="vte-2.90"
2833 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2834 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2835 vte_libs
=$
($pkg_config --libs $vtepackage)
2836 vteversion
=$
($pkg_config --modversion $vtepackage)
2838 elif test "$vte" = "yes"; then
2839 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2845 ##########################################
2848 # Look for sdl configuration program (pkg-config or sdl-config). Try
2849 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2854 if test "$sdlabi" = ""; then
2855 if $pkg_config --exists "sdl2"; then
2857 elif $pkg_config --exists "sdl"; then
2864 if test $sdlabi = "2.0"; then
2865 sdl_config
=$sdl2_config
2867 sdlconfigname
=sdl2_config
2868 elif test $sdlabi = "1.2"; then
2870 sdlconfigname
=sdl_config
2872 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2875 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2876 sdl_config
=$sdlconfigname
2879 if $pkg_config $sdlname --exists; then
2880 sdlconfig
="$pkg_config $sdlname"
2881 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2882 elif has
${sdl_config}; then
2883 sdlconfig
="$sdl_config"
2884 sdlversion
=$
($sdlconfig --version)
2886 if test "$sdl" = "yes" ; then
2887 feature_not_found
"sdl" "Install SDL2-devel"
2890 # no need to do the rest
2893 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2894 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2899 #undef main /* We don't want SDL to override our main() */
2900 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2902 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2903 sdl_cflags
="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
2904 if test "$static" = "yes" ; then
2905 if $pkg_config $sdlname --exists; then
2906 sdl_libs
=$
($pkg_config $sdlname --static --libs 2>/dev
/null
)
2908 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2911 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2913 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2914 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2920 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2921 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2922 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2923 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2924 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2926 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2932 else # sdl not found
2933 if test "$sdl" = "yes" ; then
2934 feature_not_found
"sdl" "Install SDL devel"
2937 fi # sdl compile test
2940 if test "$sdl" != "no" ; then
2944 if test "$sdl" = "yes" ; then
2947 #if defined(SDL_VIDEO_DRIVER_X11)
2948 #include <X11/XKBlib.h>
2950 #error No x11 support
2952 int main(void) { return 0; }
2954 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2956 sdl_cflags
="$sdl_cflags $x11_cflags"
2957 sdl_libs
="$sdl_libs $x11_libs"
2961 ##########################################
2962 # RDMA needs OpenFabrics libraries
2963 if test "$rdma" != "no" ; then
2965 #include <rdma/rdma_cma.h>
2966 int main(void) { return 0; }
2968 rdma_libs
="-lrdmacm -libverbs -libumad"
2969 if compile_prog
"" "$rdma_libs" ; then
2971 libs_softmmu
="$libs_softmmu $rdma_libs"
2973 if test "$rdma" = "yes" ; then
2975 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
2977 " (1) Fast: Install infiniband packages (devel) from your distro." \
2978 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2979 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2985 ##########################################
2988 cat > $TMPC <<EOF &&
2989 #include <sys/mman.h>
2996 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3002 if test "$rdma" = "yes" ; then
3005 if compile_prog
"" ""; then
3012 if ! compile_prog
"" ""; then
3013 error_exit
"PVRDMA is not supported since mremap is not implemented"
3022 if test "$pvrdma" = "yes" ; then
3023 error_exit
"PVRDMA requires rdma suppport"
3028 ##########################################
3029 # VNC SASL detection
3030 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
3032 #include <sasl/sasl.h>
3034 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3036 # Assuming Cyrus-SASL installed in /usr prefix
3038 vnc_sasl_libs
="-lsasl2"
3039 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3041 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
3042 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
3044 if test "$vnc_sasl" = "yes" ; then
3045 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
3051 ##########################################
3052 # VNC JPEG detection
3053 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
3056 #include <jpeglib.h>
3057 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3060 vnc_jpeg_libs
="-ljpeg"
3061 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3063 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
3064 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
3066 if test "$vnc_jpeg" = "yes" ; then
3067 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
3073 ##########################################
3075 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
3077 //#include <stdio.h>
3081 png_structp png_ptr;
3082 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
3083 return png_ptr != 0;
3086 if $pkg_config libpng
--exists; then
3087 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
3088 vnc_png_libs
=$
($pkg_config libpng
--libs)
3091 vnc_png_libs
="-lpng"
3093 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
3095 libs_softmmu
="$vnc_png_libs $libs_softmmu"
3096 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
3098 if test "$vnc_png" = "yes" ; then
3099 feature_not_found
"vnc-png" "Install libpng devel"
3105 ##########################################
3107 if test "$xkbcommon" != "no" ; then
3108 if $pkg_config xkbcommon
--exists; then
3109 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
3110 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
3113 if test "$xkbcommon" = "yes" ; then
3114 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
3120 ##########################################
3121 # fnmatch() probe, used for ACL routines
3124 #include <fnmatch.h>
3127 fnmatch("foo", "foo", 0);
3131 if compile_prog
"" "" ; then
3135 ##########################################
3136 # xfsctl() probe, used for file-posix.c
3137 if test "$xfs" != "no" ; then
3139 #include <stddef.h> /* NULL */
3140 #include <xfs/xfs.h>
3143 xfsctl(NULL, 0, 0, NULL);
3147 if compile_prog
"" "" ; then
3150 if test "$xfs" = "yes" ; then
3151 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3157 ##########################################
3158 # vde libraries probe
3159 if test "$vde" != "no" ; then
3160 vde_libs
="-lvdeplug"
3162 #include <libvdeplug.h>
3165 struct vde_open_args a = {0, 0, 0};
3171 if compile_prog
"" "$vde_libs" ; then
3174 if test "$vde" = "yes" ; then
3175 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3181 ##########################################
3182 # netmap support probe
3183 # Apart from looking for netmap headers, we make sure that the host API version
3184 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3185 # a minor/major version number. Minor new features will be marked with values up
3186 # to 15, and if something happens that requires a change to the backend we will
3187 # move above 15, submit the backend fixes and modify this two bounds.
3188 if test "$netmap" != "no" ; then
3190 #include <inttypes.h>
3192 #include <net/netmap.h>
3193 #include <net/netmap_user.h>
3194 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3197 int main(void) { return 0; }
3199 if compile_prog
"" "" ; then
3202 if test "$netmap" = "yes" ; then
3203 feature_not_found
"netmap"
3209 ##########################################
3210 # libcap-ng library probe
3211 if test "$cap_ng" != "no" ; then
3217 capng_capability_to_name(CAPNG_EFFECTIVE);
3221 if compile_prog
"" "$cap_libs" ; then
3223 libs_tools
="$cap_libs $libs_tools"
3225 if test "$cap_ng" = "yes" ; then
3226 feature_not_found
"cap_ng" "Install libcap-ng devel"
3232 ##########################################
3233 # Sound support libraries probe
3244 int main(void) { $exp }
3246 if compile_prog
"$cfl" "$lib" ; then
3249 error_exit
"$drv check failed" \
3250 "Make sure to have the $drv libs and headers installed."
3254 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3255 for drv
in $audio_drv_list; do
3258 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
3259 "return snd_pcm_close((snd_pcm_t *)0);"
3260 alsa_libs
="-lasound"
3264 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
3265 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3266 pulse_libs
="-lpulse"
3271 if test "$sdl" = "no"; then
3272 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3277 coreaudio_libs
="-framework CoreAudio"
3281 dsound_libs
="-lole32 -ldxguid"
3290 # XXX: Probes for CoreAudio, DirectSound
3294 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3295 error_exit
"Unknown driver '$drv' selected" \
3296 "Possible drivers are: $audio_possible_drivers"
3302 ##########################################
3305 if test "$brlapi" != "no" ; then
3306 brlapi_libs
="-lbrlapi"
3310 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3312 if compile_prog
"" "$brlapi_libs" ; then
3315 if test "$brlapi" = "yes" ; then
3316 feature_not_found
"brlapi" "Install brlapi devel"
3322 ##########################################
3324 if test "$curses" != "no" ; then
3325 if test "$mingw32" = "yes" ; then
3326 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3327 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3329 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3330 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3339 setlocale(LC_ALL, "");
3341 addwstr(L"wide chars\n");
3343 add_wch(WACS_DEGREE);
3348 for curses_inc
in $curses_inc_list; do
3349 # Make sure we get the wide character prototypes
3350 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3352 for curses_lib
in $curses_lib_list; do
3354 if compile_prog
"$curses_inc" "$curses_lib" ; then
3359 if test "$curses_found" = yes ; then
3364 if test "$curses_found" = "yes" ; then
3367 if test "$curses" = "yes" ; then
3368 feature_not_found
"curses" "Install ncurses devel"
3374 ##########################################
3376 if test "$curl" != "no" ; then
3377 if $pkg_config libcurl
--exists; then
3378 curlconfig
="$pkg_config libcurl"
3380 curlconfig
=curl-config
3383 #include <curl/curl.h>
3384 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3386 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3387 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3388 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3391 if test "$curl" = "yes" ; then
3392 feature_not_found
"curl" "Install libcurl devel"
3398 ##########################################
3399 # bluez support probe
3400 if test "$bluez" != "no" ; then
3402 #include <bluetooth/bluetooth.h>
3403 int main(void) { return bt_error(0); }
3405 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3406 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3407 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3409 libs_softmmu
="$bluez_libs $libs_softmmu"
3411 if test "$bluez" = "yes" ; then
3412 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3418 ##########################################
3419 # glib support probe
3422 glib_modules
=gthread-2.0
3423 if test "$modules" = yes; then
3424 glib_modules
="$glib_modules gmodule-export-2.0"
3427 # This workaround is required due to a bug in pkg-config file for glib as it
3428 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3430 if test "$static" = yes -a "$mingw32" = yes; then
3431 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3434 for i
in $glib_modules; do
3435 if $pkg_config --atleast-version=$glib_req_ver $i; then
3436 glib_cflags
=$
($pkg_config --cflags $i)
3437 glib_libs
=$
($pkg_config --libs $i)
3438 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3439 LIBS
="$glib_libs $LIBS"
3440 libs_qga
="$glib_libs $libs_qga"
3442 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3446 # Sanity check that the current size_t matches the
3447 # size that glib thinks it should be. This catches
3448 # problems on multi-arch where people try to build
3449 # 32-bit QEMU while pointing at 64-bit glib headers
3454 #define QEMU_BUILD_BUG_ON(x) \
3455 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3458 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3463 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3464 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3465 "You probably need to set PKG_CONFIG_LIBDIR"\
3466 "to point to the right pkg-config files for your"\
3470 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3473 int main(void) { return 0; }
3475 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3476 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3477 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3478 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3482 ##########################################
3483 # SHA command probe for modules
3484 if test "$modules" = yes; then
3485 shacmd_probe
="sha1sum sha1 shasum"
3486 for c
in $shacmd_probe; do
3492 if test "$shacmd" = ""; then
3493 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3497 ##########################################
3498 # pixman support probe
3500 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3503 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3504 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3505 pixman_libs
=$
($pkg_config --libs pixman-1
)
3507 error_exit
"pixman >= 0.21.8 not present." \
3508 "Please install the pixman devel package."
3511 ##########################################
3512 # libmpathpersist probe
3514 if test "$mpath" != "no" ; then
3515 # probe for the new API
3517 #include <libudev.h>
3518 #include <mpath_persist.h>
3519 unsigned mpath_mx_alloc_len = 1024;
3521 static struct config *multipath_conf;
3522 extern struct udev *udev;
3523 extern struct config *get_multipath_config(void);
3524 extern void put_multipath_config(struct config *conf);
3526 struct config *get_multipath_config(void) { return multipath_conf; }
3527 void put_multipath_config(struct config *conf) { }
3531 multipath_conf = mpath_lib_init();
3535 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3537 mpathpersist_new_api
=yes
3539 # probe for the old API
3541 #include <libudev.h>
3542 #include <mpath_persist.h>
3543 unsigned mpath_mx_alloc_len = 1024;
3546 struct udev *udev = udev_new();
3547 mpath_lib_init(udev);
3551 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3553 mpathpersist_new_api
=no
3562 ##########################################
3565 if test "$cap" != "no" ; then
3568 #include <sys/capability.h>
3569 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3571 if compile_prog
"" "-lcap" ; then
3578 ##########################################
3580 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3584 #include <pthread.h>
3585 static void *f(void *p) { return NULL; }
3588 pthread_create(&thread, 0, f, 0);
3592 if compile_prog
"" "" ; then
3595 for pthread_lib
in $PTHREADLIBS_LIST; do
3596 if compile_prog
"" "$pthread_lib" ; then
3599 for lib_entry
in $LIBS; do
3600 if test "$lib_entry" = "$pthread_lib"; then
3605 if test "$found" = "no"; then
3606 LIBS
="$pthread_lib $LIBS"
3607 libs_qga
="$pthread_lib $libs_qga"
3609 PTHREAD_LIB
="$pthread_lib"
3615 if test "$mingw32" != yes -a "$pthread" = no
; then
3616 error_exit
"pthread check failed" \
3617 "Make sure to have the pthread libs and headers installed."
3620 # check for pthread_setname_np
3621 pthread_setname_np
=no
3623 #include <pthread.h>
3625 static void *f(void *p) { return NULL; }
3629 pthread_create(&thread, 0, f, 0);
3630 pthread_setname_np(thread, "QEMU");
3634 if compile_prog
"" "$pthread_lib" ; then
3635 pthread_setname_np
=yes
3638 ##########################################
3640 if test "$rbd" != "no" ; then
3643 #include <rbd/librbd.h>
3646 rados_create(&cluster, NULL);
3650 rbd_libs
="-lrbd -lrados"
3651 if compile_prog
"" "$rbd_libs" ; then
3654 if test "$rbd" = "yes" ; then
3655 feature_not_found
"rados block device" "Install librbd/ceph devel"
3661 ##########################################
3663 min_libssh2_version
=1.2.8
3664 if test "$libssh2" != "no" ; then
3665 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3666 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3667 libssh2_libs
=$
($pkg_config libssh2
--libs)
3670 if test "$libssh2" = "yes" ; then
3671 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3677 ##########################################
3678 # libssh2_sftp_fsync probe
3680 if test "$libssh2" = "yes"; then
3683 #include <libssh2.h>
3684 #include <libssh2_sftp.h>
3686 LIBSSH2_SESSION *session;
3688 LIBSSH2_SFTP_HANDLE *sftp_handle;
3689 session = libssh2_session_init ();
3690 sftp = libssh2_sftp_init (session);
3691 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3692 libssh2_sftp_fsync (sftp_handle);
3696 # libssh2_cflags/libssh2_libs defined in previous test.
3697 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3698 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3702 ##########################################
3705 if test "$linux_aio" != "no" ; then
3708 #include <sys/eventfd.h>
3710 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3712 if compile_prog
"" "-laio" ; then
3715 if test "$linux_aio" = "yes" ; then
3716 feature_not_found
"linux AIO" "Install libaio devel"
3722 ##########################################
3723 # TPM passthrough is only on x86 Linux
3725 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3726 tpm_passthrough
=$tpm
3731 # TPM emulator is for all posix systems
3732 if test "$mingw32" != "yes"; then
3737 ##########################################
3740 if test "$attr" != "no" ; then
3743 #include <sys/types.h>
3744 #ifdef CONFIG_LIBATTR
3745 #include <attr/xattr.h>
3747 #include <sys/xattr.h>
3749 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3751 if compile_prog
"" "" ; then
3753 # Older distros have <attr/xattr.h>, and need -lattr:
3754 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3759 if test "$attr" = "yes" ; then
3760 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3766 ##########################################
3769 #include <sys/types.h>
3770 #include <sys/uio.h>
3772 int main(void) { return sizeof(struct iovec); }
3775 if compile_prog
"" "" ; then
3779 ##########################################
3782 #include <sys/types.h>
3783 #include <sys/uio.h>
3785 int main(void) { return preadv(0, 0, 0, 0); }
3788 if compile_prog
"" "" ; then
3792 ##########################################
3794 # fdt support is mandatory for at least some target architectures,
3795 # so insist on it if we're building those system emulators.
3797 for target
in $target_list; do
3799 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu|riscv
*-softmmu)
3805 if test "$fdt_required" = "yes"; then
3806 if test "$fdt" = "no"; then
3807 error_exit
"fdt disabled but some requested targets require it." \
3808 "You can turn off fdt only if you also disable all the system emulation" \
3809 "targets which need it (by specifying a cut down --target-list)."
3814 if test "$fdt" != "no" ; then
3816 # explicitly check for libfdt_env.h as it is missing in some stable installs
3817 # and test for required functions to make sure we are on a version >= 1.4.2
3820 #include <libfdt_env.h>
3821 int main(void) { fdt_first_subnode(0, 0); return 0; }
3823 if compile_prog
"" "$fdt_libs" ; then
3824 # system DTC is good - use it
3827 # have GIT checkout, so activate dtc submodule
3828 if test -e "${source_path}/.git" ; then
3829 git_submodules
="${git_submodules} dtc"
3831 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
3834 if [ "$pwd_is_source_path" != "y" ] ; then
3835 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3836 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3838 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3839 fdt_ldflags
="-L\$(BUILD_DIR)/dtc/libfdt"
3840 fdt_libs
="$fdt_libs"
3841 elif test "$fdt" = "yes" ; then
3842 # Not a git build & no libfdt found, prompt for system install
3843 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
3844 "Please install the DTC (libfdt) devel package"
3846 # don't have and don't want
3853 libs_softmmu
="$libs_softmmu $fdt_libs"
3855 ##########################################
3856 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3858 if test "$opengl" != "no" ; then
3859 opengl_pkgs
="epoxy gbm"
3860 if $pkg_config $opengl_pkgs; then
3861 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs)"
3862 opengl_libs
="$($pkg_config --libs $opengl_pkgs)"
3864 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3867 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3869 if test "$opengl" = "yes" ; then
3870 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3878 if test "$opengl" = "yes"; then
3880 #include <epoxy/egl.h>
3881 #ifndef EGL_MESA_image_dma_buf_export
3882 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3884 int main(void) { return 0; }
3886 if compile_prog
"" "" ; then
3891 ##########################################
3893 if test "$libxml2" != "no" ; then
3894 if $pkg_config --exists libxml-2.0
; then
3896 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
3897 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
3899 if test "$libxml2" = "yes"; then
3900 feature_not_found
"libxml2" "Install libxml2 devel"
3906 ##########################################
3908 if test "$glusterfs" != "no" ; then
3909 if $pkg_config --atleast-version=3 glusterfs-api
; then
3911 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3912 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3913 if $pkg_config --atleast-version=4 glusterfs-api
; then
3914 glusterfs_xlator_opt
="yes"
3916 if $pkg_config --atleast-version=5 glusterfs-api
; then
3917 glusterfs_discard
="yes"
3919 if $pkg_config --atleast-version=6 glusterfs-api
; then
3920 glusterfs_fallocate
="yes"
3921 glusterfs_zerofill
="yes"
3924 if test "$glusterfs" = "yes" ; then
3925 feature_not_found
"GlusterFS backend support" \
3926 "Install glusterfs-api devel >= 3"
3932 # Check for inotify functions when we are building linux-user
3933 # emulator. This is done because older glibc versions don't
3934 # have syscall stubs for these implemented. In that case we
3935 # don't provide them even if kernel supports them.
3939 #include <sys/inotify.h>
3944 /* try to start inotify */
3945 return inotify_init();
3948 if compile_prog
"" "" ; then
3954 #include <sys/inotify.h>
3959 /* try to start inotify */
3960 return inotify_init1(0);
3963 if compile_prog
"" "" ; then
3967 # check if pipe2 is there
3976 return pipe2(pipefd, O_CLOEXEC);
3979 if compile_prog
"" "" ; then
3983 # check if accept4 is there
3986 #include <sys/socket.h>
3991 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3995 if compile_prog
"" "" ; then
3999 # check if tee/splice is there. vmsplice was added same time.
4009 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4010 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4014 if compile_prog
"" "" ; then
4018 ##########################################
4021 if test "$numa" != "no" ; then
4024 int main(void) { return numa_available(); }
4027 if compile_prog
"" "-lnuma" ; then
4029 libs_softmmu
="-lnuma $libs_softmmu"
4031 if test "$numa" = "yes" ; then
4032 feature_not_found
"numa" "install numactl devel"
4038 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4039 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4043 # Even if malloc_trim() is available, these non-libc memory allocators
4044 # do not support it.
4045 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
4046 if test "$malloc_trim" = "yes" ; then
4047 echo "Disabling malloc_trim with non-libc memory allocator"
4052 #######################################
4055 if test "$malloc_trim" != "no" ; then
4058 int main(void) { malloc_trim(0); return 0; }
4060 if compile_prog
"" "" ; then
4067 ##########################################
4070 if test "$tcmalloc" = "yes" ; then
4073 int main(void) { malloc(1); return 0; }
4076 if compile_prog
"" "-ltcmalloc" ; then
4077 LIBS
="-ltcmalloc $LIBS"
4079 feature_not_found
"tcmalloc" "install gperftools devel"
4083 ##########################################
4086 if test "$jemalloc" = "yes" ; then
4089 int main(void) { malloc(1); return 0; }
4092 if compile_prog
"" "-ljemalloc" ; then
4093 LIBS
="-ljemalloc $LIBS"
4095 feature_not_found
"jemalloc" "install jemalloc devel"
4099 ##########################################
4104 #include <sys/syscall.h>
4106 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4109 if compile_prog
"" "" ; then
4113 # check if eventfd is supported
4116 #include <sys/eventfd.h>
4120 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
4123 if compile_prog
"" "" ; then
4127 # check if memfd is supported
4130 #include <sys/mman.h>
4134 return memfd_create("foo", MFD_ALLOW_SEALING);
4137 if compile_prog
"" "" ; then
4143 if test "$linux_user" = "yes"; then
4144 if check_include linux
/usbdevice_fs.h
; then
4150 # check for fallocate
4157 fallocate(0, 0, 0, 0);
4161 if compile_prog
"" "" ; then
4165 # check for fallocate hole punching
4166 fallocate_punch_hole
=no
4169 #include <linux/falloc.h>
4173 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4177 if compile_prog
"" "" ; then
4178 fallocate_punch_hole
=yes
4181 # check that fallocate supports range zeroing inside the file
4182 fallocate_zero_range
=no
4185 #include <linux/falloc.h>
4189 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4193 if compile_prog
"" "" ; then
4194 fallocate_zero_range
=yes
4197 # check for posix_fallocate
4204 posix_fallocate(0, 0, 0);
4208 if compile_prog
"" "" ; then
4212 # check for sync_file_range
4219 sync_file_range(0, 0, 0, 0);
4223 if compile_prog
"" "" ; then
4227 # check for linux/fiemap.h and FS_IOC_FIEMAP
4230 #include <sys/ioctl.h>
4231 #include <linux/fs.h>
4232 #include <linux/fiemap.h>
4236 ioctl(0, FS_IOC_FIEMAP, 0);
4240 if compile_prog
"" "" ; then
4255 if compile_prog
"" "" ; then
4259 # check for ppoll support
4266 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4267 ppoll(&pfd, 1, 0, 0);
4271 if compile_prog
"" "" ; then
4275 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4276 prctl_pr_set_timerslack
=no
4278 #include <sys/prctl.h>
4282 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4286 if compile_prog
"" "" ; then
4287 prctl_pr_set_timerslack
=yes
4290 # check for epoll support
4293 #include <sys/epoll.h>
4301 if compile_prog
"" "" ; then
4305 # epoll_create1 is a later addition
4306 # so we must check separately for its presence
4309 #include <sys/epoll.h>
4313 /* Note that we use epoll_create1 as a value, not as
4314 * a function being called. This is necessary so that on
4315 * old SPARC glibc versions where the function was present in
4316 * the library but not declared in the header file we will
4317 * fail the configure check. (Otherwise we will get a compiler
4318 * warning but not an error, and will proceed to fail the
4319 * qemu compile where we compile with -Werror.)
4321 return (int)(uintptr_t)&epoll_create1;
4324 if compile_prog
"" "" ; then
4328 # check for sendfile support
4331 #include <sys/sendfile.h>
4335 return sendfile(0, 0, 0, 0);
4338 if compile_prog
"" "" ; then
4342 # check for timerfd support (glibc 2.8 and newer)
4345 #include <sys/timerfd.h>
4349 return(timerfd_create(CLOCK_REALTIME, 0));
4352 if compile_prog
"" "" ; then
4356 # check for setns and unshare support
4369 if compile_prog
"" "" ; then
4373 # clock_adjtime probe
4380 return clock_adjtime(0, 0);
4384 if compile_prog
"" "" ; then
4399 if compile_prog
"" "" ; then
4403 # Check if tools are available to build documentation.
4404 if test "$docs" != "no" ; then
4405 if has makeinfo
&& has pod2man
; then
4408 if test "$docs" = "yes" ; then
4409 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4415 # Search for bswap_32 function
4418 #include <byteswap.h>
4419 int main(void) { return bswap_32(0); }
4421 if compile_prog
"" "" ; then
4425 # Search for bswap32 function
4428 #include <sys/endian.h>
4429 #include <sys/types.h>
4430 #include <machine/bswap.h>
4431 int main(void) { return bswap32(0); }
4433 if compile_prog
"" "" ; then
4437 ##########################################
4438 # Do we have libiscsi >= 1.9.0
4439 if test "$libiscsi" != "no" ; then
4440 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4442 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4443 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4445 if test "$libiscsi" = "yes" ; then
4446 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4452 ##########################################
4456 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4458 if compile_prog
"" "" ; then
4460 elif compile_prog
"" "-lm" ; then
4462 libs_qga
="-lm $libs_qga"
4464 error_exit
"libm check failed"
4467 ##########################################
4469 # uClibc provides 2 versions of clock_gettime(), one with realtime
4470 # support and one without. This means that the clock_gettime() don't
4471 # need -lrt. We still need it for timer_create() so we check for this
4472 # function in addition.
4477 timer_create(CLOCK_REALTIME, NULL, NULL);
4478 return clock_gettime(CLOCK_REALTIME, NULL);
4482 if compile_prog
"" "" ; then
4484 # we need pthread for static linking. use previous pthread test result
4485 elif compile_prog
"" "$pthread_lib -lrt" ; then
4487 libs_qga
="$libs_qga -lrt"
4490 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4491 "$haiku" != "yes" ; then
4492 libs_softmmu
="-lutil $libs_softmmu"
4495 ##########################################
4497 if test "$spice" != "no" ; then
4500 int main(void) { spice_server_new(); return 0; }
4502 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4503 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4504 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4505 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4506 compile_prog
"$spice_cflags" "$spice_libs" ; then
4508 libs_softmmu
="$libs_softmmu $spice_libs"
4509 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4510 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4511 spice_server_version
=$
($pkg_config --modversion spice-server
)
4513 if test "$spice" = "yes" ; then
4514 feature_not_found
"spice" \
4515 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4521 # check for smartcard support
4522 if test "$smartcard" != "no"; then
4523 if $pkg_config --atleast-version=2.5.1 libcacard
; then
4524 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4525 libcacard_libs
=$
($pkg_config --libs libcacard
)
4528 if test "$smartcard" = "yes"; then
4529 feature_not_found
"smartcard" "Install libcacard devel"
4536 if test "$libusb" != "no" ; then
4537 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4539 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4540 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4542 if test "$libusb" = "yes"; then
4543 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4549 # check for usbredirparser for usb network redirection support
4550 if test "$usb_redir" != "no" ; then
4551 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4553 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4554 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4556 if test "$usb_redir" = "yes"; then
4557 feature_not_found
"usb-redir" "Install usbredir devel"
4563 ##########################################
4564 # check if we have VSS SDK headers for win
4566 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4567 case "$vss_win32_sdk" in
4568 "") vss_win32_include
="-isystem $source_path" ;;
4569 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4570 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4571 vss_win32_include
="-isystem $source_path/.sdk/vss"
4572 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4574 *) vss_win32_include
="-isystem $vss_win32_sdk"
4577 #define __MIDL_user_allocate_free_DEFINED__
4578 #include <inc/win2003/vss.h>
4579 int main(void) { return VSS_CTX_BACKUP; }
4581 if compile_prog
"$vss_win32_include" "" ; then
4582 guest_agent_with_vss
="yes"
4583 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4584 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4585 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4587 if test "$vss_win32_sdk" != "" ; then
4588 echo "ERROR: Please download and install Microsoft VSS SDK:"
4589 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4590 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4591 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4592 echo "ERROR: The headers are extracted in the directory \`inc'."
4593 feature_not_found
"VSS support"
4595 guest_agent_with_vss
="no"
4599 ##########################################
4600 # lookup Windows platform SDK (if not specified)
4601 # The SDK is needed only to build .tlb (type library) file of guest agent
4602 # VSS provider from the source. It is usually unnecessary because the
4603 # pre-compiled .tlb file is included.
4605 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4606 if test -z "$win_sdk"; then
4607 programfiles
="$PROGRAMFILES"
4608 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4609 if test -n "$programfiles"; then
4610 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4612 feature_not_found
"Windows SDK"
4614 elif test "$win_sdk" = "no"; then
4619 ##########################################
4620 # check if mingw environment provides a recent ntddscsi.h
4621 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4623 #include <windows.h>
4624 #include <ntddscsi.h>
4626 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4627 #error Missing required ioctl definitions
4629 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4633 if compile_prog
"" "" ; then
4634 guest_agent_ntddscsi
=yes
4635 libs_qga
="-lsetupapi $libs_qga"
4639 ##########################################
4640 # virgl renderer probe
4642 if test "$virglrenderer" != "no" ; then
4644 #include <virglrenderer.h>
4645 int main(void) { virgl_renderer_poll(); return 0; }
4647 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4648 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4649 virgl_version
=$
($pkg_config --modversion virglrenderer
2>/dev
/null
)
4650 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4651 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4654 if test "$virglrenderer" = "yes" ; then
4655 feature_not_found
"virglrenderer"
4661 ##########################################
4666 if $pkg_config capstone
; then
4668 elif test -e "${source_path}/.git" -a $git_update = 'yes' ; then
4670 elif test -e "${source_path}/capstone/Makefile" ; then
4672 elif test -z "$capstone" ; then
4675 feature_not_found
"capstone" "Install capstone devel or git submodule"
4680 if ! $pkg_config capstone
; then
4681 feature_not_found
"capstone" "Install capstone devel"
4688 if test "$capstone" = git
; then
4689 git_submodules
="${git_submodules} capstone"
4692 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4693 if test "$mingw32" = "yes"; then
4694 LIBCAPSTONE
=capstone.lib
4696 LIBCAPSTONE
=libcapstone.a
4698 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4702 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4703 LIBS
="$($pkg_config --libs capstone) $LIBS"
4709 error_exit
"Unknown state for capstone: $capstone"
4713 ##########################################
4714 # check if we have fdatasync
4720 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4721 return fdatasync(0);
4723 #error Not supported
4727 if compile_prog
"" "" ; then
4731 ##########################################
4732 # check if we have madvise
4736 #include <sys/types.h>
4737 #include <sys/mman.h>
4739 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4741 if compile_prog
"" "" ; then
4745 ##########################################
4746 # check if we have posix_madvise
4750 #include <sys/mman.h>
4752 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4754 if compile_prog
"" "" ; then
4758 ##########################################
4759 # check if we have posix_memalign()
4766 return posix_memalign(&p, 8, 8);
4769 if compile_prog
"" "" ; then
4773 ##########################################
4774 # check if we have posix_syslog
4779 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4781 if compile_prog
"" "" ; then
4785 ##########################################
4786 # check if we have sem_timedwait
4790 #include <semaphore.h>
4791 int main(void) { return sem_timedwait(0, 0); }
4793 if compile_prog
"" "" ; then
4797 ##########################################
4798 # check if we have strchrnul
4804 // Use a haystack that the compiler shouldn't be able to constant fold
4805 char *haystack = (char*)&main;
4806 int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
4808 if compile_prog
"" "" ; then
4812 ##########################################
4813 # check if trace backend exists
4815 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4816 if test "$?" -ne 0 ; then
4817 error_exit
"invalid trace backends" \
4818 "Please choose supported trace backends."
4821 ##########################################
4822 # For 'ust' backend, test if ust headers are present
4823 if have_backend
"ust"; then
4825 #include <lttng/tracepoint.h>
4826 int main(void) { return 0; }
4828 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4829 if $pkg_config lttng-ust
--exists; then
4830 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4832 lttng_ust_libs
="-llttng-ust -ldl"
4834 if $pkg_config liburcu-bp
--exists; then
4835 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4837 urcu_bp_libs
="-lurcu-bp"
4840 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4841 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4843 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4847 ##########################################
4848 # For 'dtrace' backend, test if 'dtrace' command is present
4849 if have_backend
"dtrace"; then
4850 if ! has
'dtrace' ; then
4851 error_exit
"dtrace command is not found in PATH $PATH"
4853 trace_backend_stap
="no"
4854 if has
'stap' ; then
4855 trace_backend_stap
="yes"
4859 ##########################################
4860 # check and set a backend for coroutine
4862 # We prefer ucontext, but it's not always possible. The fallback
4863 # is sigcontext. On Windows the only valid backend is the Windows
4867 if test "$darwin" != "yes"; then
4869 #include <ucontext.h>
4870 #ifdef __stub_makecontext
4871 #error Ignoring glibc stub makecontext which will always fail
4873 int main(void) { makecontext(0, 0, 0); return 0; }
4875 if compile_prog
"" "" ; then
4880 if test "$coroutine" = ""; then
4881 if test "$mingw32" = "yes"; then
4883 elif test "$ucontext_works" = "yes"; then
4886 coroutine
=sigaltstack
4891 if test "$mingw32" != "yes"; then
4892 error_exit
"'windows' coroutine backend only valid for Windows"
4894 # Unfortunately the user visible backend name doesn't match the
4895 # coroutine-*.c filename for this case, so we have to adjust it here.
4899 if test "$ucontext_works" != "yes"; then
4900 feature_not_found
"ucontext"
4904 if test "$mingw32" = "yes"; then
4905 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4909 error_exit
"unknown coroutine backend $coroutine"
4914 if test "$coroutine_pool" = ""; then
4918 if test "$debug_stack_usage" = "yes"; then
4919 if test "$coroutine_pool" = "yes"; then
4920 echo "WARN: disabling coroutine pool for stack usage debugging"
4926 ##########################################
4927 # check if we have open_by_handle_at
4929 open_by_handle_at
=no
4932 #if !defined(AT_EMPTY_PATH)
4933 # error missing definition
4935 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4938 if compile_prog
"" "" ; then
4939 open_by_handle_at
=yes
4942 ########################################
4943 # check if we have linux/magic.h
4947 #include <linux/magic.h>
4952 if compile_prog
"" "" ; then
4956 ########################################
4957 # check whether we can disable warning option with a pragma (this is needed
4958 # to silence warnings in the headers of some versions of external libraries).
4959 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4962 # If we can't selectively disable warning in the code, disable -Werror so that
4963 # the build doesn't fail anyway.
4965 pragma_disable_unused_but_set
=no
4967 #pragma GCC diagnostic push
4968 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4969 #pragma GCC diagnostic pop
4975 if compile_prog
"-Werror" "" ; then
4976 pragma_diagnostic_available
=yes
4981 ########################################
4982 # check if we have valgrind/valgrind.h
4986 #include <valgrind/valgrind.h>
4991 if compile_prog
"" "" ; then
4995 ########################################
4996 # check if environ is declared
5006 if compile_prog
"" "" ; then
5010 ########################################
5011 # check if cpuid.h is usable.
5016 unsigned a, b, c, d;
5017 int max = __get_cpuid_max(0, 0);
5020 __cpuid(1, a, b, c, d);
5024 __cpuid_count(7, 0, a, b, c, d);
5030 if compile_prog
"" "" ; then
5034 ##########################################
5035 # avx2 optimization requirement check
5037 # There is no point enabling this if cpuid.h is not usable,
5038 # since we won't be able to select the new routines.
5040 if test "$cpuid_h" = "yes" -a "$avx2_opt" != "no"; then
5042 #pragma GCC push_options
5043 #pragma GCC target("avx2")
5045 #include <immintrin.h>
5046 static int bar(void *a) {
5047 __m256i x = *(__m256i *)a;
5048 return _mm256_testz_si256(x, x);
5050 int main(int argc, char *argv[]) { return bar(argv[0]); }
5052 if compile_object
"" ; then
5059 ########################################
5060 # check if __[u]int128_t is usable.
5064 #if defined(__clang_major__) && defined(__clang_minor__)
5065 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
5066 # error __int128_t does not work in CLANG before 3.2
5078 if compile_prog
"" "" ; then
5082 #########################################
5083 # See if 128-bit atomic operations are supported.
5086 if test "$int128" = "yes"; then
5090 unsigned __int128 x = 0, y = 0;
5091 y = __atomic_load_16(&x, 0);
5092 __atomic_store_16(&x, y, 0);
5093 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5097 if compile_prog
"" "" ; then
5103 if test "$int128" = yes -a "$atomic128" = no
; then
5107 unsigned __int128 x = 0, y = 0;
5108 __sync_val_compare_and_swap_16(&x, y, x);
5112 if compile_prog
"" "" ; then
5117 #########################################
5118 # See if 64-bit atomic operations are supported.
5119 # Note that without __atomic builtins, we can only
5120 # assume atomic loads/stores max at pointer size.
5126 uint64_t x = 0, y = 0;
5127 #ifdef __ATOMIC_RELAXED
5128 y = __atomic_load_8(&x, 0);
5129 __atomic_store_8(&x, y, 0);
5130 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5131 __atomic_exchange_8(&x, y, 0);
5132 __atomic_fetch_add_8(&x, y, 0);
5134 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5135 __sync_lock_test_and_set(&x, y);
5136 __sync_val_compare_and_swap(&x, y, 0);
5137 __sync_fetch_and_add(&x, y);
5142 if compile_prog
"" "" ; then
5146 ########################################
5147 # See if 16-byte vector operations are supported.
5148 # Even without a vector unit the compiler may expand these.
5149 # There is a bug in old GCC for PPC that crashes here.
5150 # Unfortunately it's the system compiler for Centos 7.
5153 typedef unsigned char U1 __attribute__((vector_size(16)));
5154 typedef unsigned short U2 __attribute__((vector_size(16)));
5155 typedef unsigned int U4 __attribute__((vector_size(16)));
5156 typedef unsigned long long U8 __attribute__((vector_size(16)));
5157 typedef signed char S1 __attribute__((vector_size(16)));
5158 typedef signed short S2 __attribute__((vector_size(16)));
5159 typedef signed int S4 __attribute__((vector_size(16)));
5160 typedef signed long long S8 __attribute__((vector_size(16)));
5170 void helper(void *d, void *a, int shift, int i);
5171 void helper(void *d, void *a, int shift, int i)
5173 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5174 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5175 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5176 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5180 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5181 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5182 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5183 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5184 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5185 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5186 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5187 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5188 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5194 if compile_prog
"" "" ; then
5198 ########################################
5199 # check if getauxval is available.
5203 #include <sys/auxv.h>
5205 return getauxval(AT_HWCAP) == 0;
5208 if compile_prog
"" "" ; then
5212 ########################################
5213 # check if ccache is interfering with
5214 # semantic analysis of macros
5219 static const int Z = 1;
5220 #define fn() ({ Z; })
5221 #define TAUT(X) ((X) == Z)
5222 #define PAREN(X, Y) (X == Y)
5224 int main(int argc, char *argv[])
5230 if (PAREN(x, y)) return 0;
5231 if (TAUT(Z)) return 0;
5236 if ! compile_object
"-Werror"; then
5240 #################################################
5241 # clang does not support glibc + FORTIFY_SOURCE.
5243 if test "$fortify_source" != "no"; then
5244 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
5245 fortify_source
="no";
5246 elif test -n "$cxx" && has
$cxx &&
5247 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
5248 fortify_source
="no";
5250 fortify_source
="yes"
5254 ###############################################
5255 # Check if copy_file_range is provided by glibc
5256 have_copy_file_range
=no
5260 copy_file_range(0, NULL, 0, NULL, 0, 0);
5264 if compile_prog
"" "" ; then
5265 have_copy_file_range
=yes
5268 ##########################################
5269 # check if struct fsxattr is available via linux/fs.h
5273 #include <linux/fs.h>
5279 if compile_prog
"" "" ; then
5283 ##########################################
5284 # check for usable membarrier system call
5285 if test "$membarrier" = "yes"; then
5287 if test "$mingw32" = "yes" ; then
5289 elif test "$linux" = "yes" ; then
5291 #include <linux/membarrier.h>
5292 #include <sys/syscall.h>
5296 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5297 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5301 if compile_prog
"" "" ; then
5305 if test "$have_membarrier" = "no"; then
5306 feature_not_found
"membarrier" "membarrier system call not available"
5309 # Do not enable it by default even for Mingw32, because it doesn't
5314 ##########################################
5315 # check if rtnetlink.h exists and is useful
5318 #include <linux/rtnetlink.h>
5320 return IFLA_PROTO_DOWN;
5323 if compile_prog
"" "" ; then
5327 ##########################################
5328 # check for usable AF_VSOCK environment
5332 #include <sys/types.h>
5333 #include <sys/socket.h>
5334 #if !defined(AF_VSOCK)
5335 # error missing AF_VSOCK flag
5337 #include <linux/vm_sockets.h>
5340 struct sockaddr_vm svm;
5341 socklen_t len = sizeof(svm);
5342 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5343 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5344 if ((ret == -1) && (errno == ENOTCONN)) {
5350 if compile_prog
"" "" ; then
5354 ##########################################
5355 # check for usable AF_ALG environment
5359 #include <sys/types.h>
5360 #include <sys/socket.h>
5361 #include <linux/if_alg.h>
5364 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5368 if compile_prog
"" "" ; then
5371 if test "$crypto_afalg" = "yes"
5373 if test "$have_afalg" != "yes"
5375 error_exit
"AF_ALG requested but could not be detected"
5380 #################################################
5381 # Check to see if we have the Hypervisor framework
5382 if [ "$darwin" = "yes" ] ; then
5384 #include <Hypervisor/hv.h>
5385 int main() { return 0;}
5387 if ! compile_object
""; then
5391 LDFLAGS
="-framework Hypervisor $LDFLAGS"
5395 #################################################
5396 # Sparc implicitly links with --relax, which is
5397 # incompatible with -r, so --no-relax should be
5398 # given. It does no harm to give it on other
5401 # Note: the prototype is needed since QEMU_CFLAGS
5402 # contains -Wmissing-prototypes
5404 extern int foo(void);
5405 int foo(void) { return 0; }
5407 if ! compile_object
""; then
5408 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5410 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5411 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5416 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5417 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5420 ##########################################
5421 # check for sysmacros.h
5425 #include <sys/sysmacros.h>
5427 return makedev(0, 0);
5430 if compile_prog
"" "" ; then
5434 ##########################################
5435 # Veritas HyperScale block driver VxHS
5436 # Check if libvxhs is installed
5438 if test "$vxhs" != "no" ; then
5441 #include <qnio/qnio_api.h>
5443 void *vxhs_callback;
5446 iio_init(QNIO_VERSION, vxhs_callback);
5450 vxhs_libs
="-lvxhs -lssl"
5451 if compile_prog
"" "$vxhs_libs" ; then
5454 if test "$vxhs" = "yes" ; then
5455 feature_not_found
"vxhs block device" "Install libvxhs See github"
5461 ##########################################
5462 # check for _Static_assert()
5464 have_static_assert
=no
5466 _Static_assert(1, "success");
5471 if compile_prog
"" "" ; then
5472 have_static_assert
=yes
5475 ##########################################
5476 # check for utmpx.h, it is missing e.g. on OpenBSD
5481 struct utmpx user_info;
5486 if compile_prog
"" "" ; then
5490 ##########################################
5491 # checks for sanitizers
5495 have_asan_iface_h
=no
5496 have_asan_iface_fiber
=no
5498 if test "$sanitizers" = "yes" ; then
5500 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5504 # we could use a simple skeleton for flags checks, but this also
5505 # detect the static linking issue of ubsan, see also:
5506 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5510 void *tmp = malloc(10);
5511 return *(int *)(tmp + 2);
5514 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5518 if check_include
"sanitizer/asan_interface.h" ; then
5519 have_asan_iface_h
=yes
5523 #include <sanitizer/asan_interface.h>
5525 __sanitizer_start_switch_fiber(0, 0, 0);
5529 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5530 have_asan_iface_fiber
=yes
5534 ##########################################
5535 # Docker and cross-compiler support
5537 # This is specifically for building test
5538 # cases for foreign architectures, not
5539 # cross-compiling QEMU itself.
5541 if has
"docker"; then
5542 docker
=$
($python $source_path/tests
/docker
/docker.py probe
)
5545 ##########################################
5548 if test "$libpmem" != "no"; then
5549 if $pkg_config --exists "libpmem"; then
5551 libpmem_libs
=$
($pkg_config --libs libpmem
)
5552 libpmem_cflags
=$
($pkg_config --cflags libpmem
)
5553 libs_softmmu
="$libs_softmmu $libpmem_libs"
5554 QEMU_CFLAGS
="$QEMU_CFLAGS $libpmem_cflags"
5556 if test "$libpmem" = "yes" ; then
5557 feature_not_found
"libpmem" "Install nvml or pmdk"
5563 ##########################################
5565 # After here, no more $cc or $ld runs
5569 if test "$gcov" = "yes" ; then
5570 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5571 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5572 elif test "$fortify_source" = "yes" ; then
5573 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5574 elif test "$debug" = "no"; then
5575 CFLAGS
="-O2 $CFLAGS"
5578 if test "$have_asan" = "yes"; then
5579 CFLAGS
="-fsanitize=address $CFLAGS"
5580 if test "$have_asan_iface_h" = "no" ; then
5581 echo "ASAN build enabled, but ASAN header missing." \
5582 "Without code annotation, the report may be inferior."
5583 elif test "$have_asan_iface_fiber" = "no" ; then
5584 echo "ASAN build enabled, but ASAN header is too old." \
5585 "Without code annotation, the report may be inferior."
5588 if test "$have_ubsan" = "yes"; then
5589 CFLAGS
="-fsanitize=undefined $CFLAGS"
5592 ##########################################
5594 if test "$libnfs" != "no" ; then
5595 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5597 libnfs_libs
=$
($pkg_config --libs libnfs
)
5599 if test "$libnfs" = "yes" ; then
5600 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5606 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5607 if test "$werror" = "yes"; then
5608 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5611 if test "$solaris" = "no" ; then
5612 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5613 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5617 # test if pod2man has --utf8 option
5618 if pod2man
--help |
grep -q utf8
; then
5619 POD2MAN
="pod2man --utf8"
5624 # Use ASLR, no-SEH and DEP if available
5625 if test "$mingw32" = "yes" ; then
5626 for flag
in --dynamicbase --no-seh --nxcompat; do
5627 if ld_has
$flag ; then
5628 LDFLAGS
="-Wl,$flag $LDFLAGS"
5633 qemu_confdir
=$sysconfdir$confsuffix
5634 qemu_moddir
=$libdir$confsuffix
5635 qemu_datadir
=$datadir$confsuffix
5636 qemu_localedir
="$datadir/locale"
5638 # We can only support ivshmem if we have eventfd
5639 if [ "$eventfd" = "yes" ]; then
5644 if test "$want_tools" = "yes" ; then
5645 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools"
5646 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5647 tools
="qemu-nbd\$(EXESUF) $tools"
5649 if [ "$ivshmem" = "yes" ]; then
5650 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5652 if [ "$posix" = "yes" ] && [ "$curl" = "yes" ]; then
5653 tools
="elf2dmp $tools"
5656 if test "$softmmu" = yes ; then
5657 if test "$linux" = yes; then
5658 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5660 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5662 if test "$virtfs" = yes; then
5663 error_exit
"VirtFS requires libcap devel and libattr devel"
5667 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
5670 if test "$mpath" = yes; then
5671 error_exit
"Multipath requires libmpathpersist devel"
5675 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
5677 if test "$virtfs" = yes; then
5678 error_exit
"VirtFS is supported only on Linux"
5681 if test "$mpath" = yes; then
5682 error_exit
"Multipath is supported only on Linux"
5686 if test "$xkbcommon" = "yes"; then
5687 tools
="qemu-keymap\$(EXESUF) $tools"
5691 # Probe for guest agent support/options
5693 if [ "$guest_agent" != "no" ]; then
5694 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5695 tools
="qemu-ga $tools"
5697 elif [ "$guest_agent" != yes ]; then
5700 error_exit
"Guest agent is not supported on this platform"
5704 # Guest agent Window MSI package
5706 if test "$guest_agent" != yes; then
5707 if test "$guest_agent_msi" = yes; then
5708 error_exit
"MSI guest agent package requires guest agent enabled"
5711 elif test "$mingw32" != "yes"; then
5712 if test "$guest_agent_msi" = "yes"; then
5713 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5716 elif ! has wixl
; then
5717 if test "$guest_agent_msi" = "yes"; then
5718 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5722 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5723 # disabled explicitly
5724 if test "$guest_agent_msi" != "no"; then
5729 if test "$guest_agent_msi" = "yes"; then
5730 if test "$guest_agent_with_vss" = "yes"; then
5731 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5734 if test "$QEMU_GA_MANUFACTURER" = ""; then
5735 QEMU_GA_MANUFACTURER
=QEMU
5738 if test "$QEMU_GA_DISTRO" = ""; then
5739 QEMU_GA_DISTRO
=Linux
5742 if test "$QEMU_GA_VERSION" = ""; then
5743 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5746 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5750 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5753 QEMU_GA_MSI_ARCH
="-D Arch=32"
5756 error_exit
"CPU $cpu not supported for building installation package"
5761 # Mac OS X ships with a broken assembler
5763 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5764 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5765 "$softmmu" = yes ; then
5766 # Different host OS linkers have different ideas about the name of the ELF
5767 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5768 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5769 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
5770 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5771 ld_i386_emulation
="$emu"
5777 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5778 roms
="$roms spapr-rtas"
5781 if test "$cpu" = "s390x" ; then
5782 roms
="$roms s390-ccw"
5785 # Probe for the need for relocating the user-only binary.
5786 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5789 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5790 # ??? Rationale for choosing this address
5791 textseg_addr
=0x60000000
5794 # A 256M aligned address, high in the address space, with enough
5795 # room for the code_gen_buffer above it before the stack.
5796 textseg_addr
=0x60000000
5799 if [ -n "$textseg_addr" ]; then
5801 int main(void) { return 0; }
5803 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5804 if ! compile_prog
"" "$textseg_ldflags"; then
5805 # In case ld does not support -Ttext-segment, edit the default linker
5806 # script via sed to set the .text start addr. This is needed on FreeBSD
5808 if ! $ld --verbose >/dev
/null
2>&1; then
5810 "We need to link the QEMU user mode binaries at a" \
5811 "specific text address. Unfortunately your linker" \
5812 "doesn't support either the -Ttext-segment option or" \
5813 "printing the default linker script with --verbose." \
5814 "If you don't want the user mode binaries, pass the" \
5815 "--disable-user option to configure."
5818 $ld --verbose |
sed \
5819 -e '1,/==================================================/d' \
5820 -e '/==================================================/,$d' \
5821 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5822 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5823 textseg_ldflags
="-Wl,-T../config-host.ld"
5828 # Check that the C++ compiler exists and works with the C compiler.
5829 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5832 int c_function(void);
5833 int main(void) { return c_function(); }
5840 int c_function(void);
5842 int c_function(void) { return 42; }
5847 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5848 # C++ compiler $cxx works ok with C compiler $cc
5851 echo "C++ compiler $cxx does not work with C compiler $cc"
5852 echo "Disabling C++ specific optional code"
5856 echo "No C++ compiler available; disabling C++ specific optional code"
5861 if test "$1" = "yes" ; then
5866 # prepend pixman and ftd flags after all config tests are done
5867 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5868 QEMU_LDFLAGS
="$fdt_ldflags $QEMU_LDFLAGS"
5869 libs_softmmu
="$pixman_libs $libs_softmmu"
5871 echo "Install prefix $prefix"
5872 echo "BIOS directory $(eval echo $qemu_datadir)"
5873 echo "firmware path $(eval echo $firmwarepath)"
5874 echo "binary directory $(eval echo $bindir)"
5875 echo "library directory $(eval echo $libdir)"
5876 echo "module directory $(eval echo $qemu_moddir)"
5877 echo "libexec directory $(eval echo $libexecdir)"
5878 echo "include directory $(eval echo $includedir)"
5879 echo "config directory $(eval echo $sysconfdir)"
5880 if test "$mingw32" = "no" ; then
5881 echo "local state directory $(eval echo $local_statedir)"
5882 echo "Manual directory $(eval echo $mandir)"
5883 echo "ELF interp prefix $interp_prefix"
5885 echo "local state directory queried at runtime"
5886 echo "Windows SDK $win_sdk"
5888 echo "Source path $source_path"
5889 echo "GIT binary $git"
5890 echo "GIT submodules $git_submodules"
5891 echo "C compiler $cc"
5892 echo "Host C compiler $host_cc"
5893 echo "C++ compiler $cxx"
5894 echo "Objective-C compiler $objcc"
5895 echo "ARFLAGS $ARFLAGS"
5896 echo "CFLAGS $CFLAGS"
5897 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5898 echo "LDFLAGS $LDFLAGS"
5899 echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
5901 echo "install $install"
5902 echo "python $python"
5903 if test "$slirp" = "yes" ; then
5906 echo "module support $modules"
5907 echo "host CPU $cpu"
5908 echo "host big endian $bigendian"
5909 echo "target list $target_list"
5910 echo "gprof enabled $gprof"
5911 echo "sparse enabled $sparse"
5912 echo "strip binaries $strip_opt"
5913 echo "profiler $profiler"
5914 echo "static build $static"
5915 if test "$darwin" = "yes" ; then
5916 echo "Cocoa support $cocoa"
5918 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5919 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5920 echo "GTK GL support $gtk_gl"
5921 echo "VTE support $vte $(echo_version $vte $vteversion)"
5922 echo "TLS priority $tls_priority"
5923 echo "GNUTLS support $gnutls"
5924 echo "libgcrypt $gcrypt"
5925 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5926 echo "libtasn1 $tasn1"
5927 echo "curses support $curses"
5928 echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
5929 echo "curl support $curl"
5930 echo "mingw32 support $mingw32"
5931 echo "Audio drivers $audio_drv_list"
5932 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5933 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5934 echo "VirtFS support $virtfs"
5935 echo "Multipath support $mpath"
5936 echo "VNC support $vnc"
5937 if test "$vnc" = "yes" ; then
5938 echo "VNC SASL support $vnc_sasl"
5939 echo "VNC JPEG support $vnc_jpeg"
5940 echo "VNC PNG support $vnc_png"
5942 if test -n "$sparc_cpu"; then
5943 echo "Target Sparc Arch $sparc_cpu"
5945 echo "xen support $xen"
5946 if test "$xen" = "yes" ; then
5947 echo "xen ctrl version $xen_ctrl_version"
5948 echo "pv dom build $xen_pv_domain_build"
5950 echo "brlapi support $brlapi"
5951 echo "bluez support $bluez"
5952 echo "Documentation $docs"
5954 echo "vde support $vde"
5955 echo "netmap support $netmap"
5956 echo "Linux AIO support $linux_aio"
5957 echo "ATTR/XATTR support $attr"
5958 echo "Install blobs $blobs"
5959 echo "KVM support $kvm"
5960 echo "HAX support $hax"
5961 echo "HVF support $hvf"
5962 echo "WHPX support $whpx"
5963 echo "TCG support $tcg"
5964 if test "$tcg" = "yes" ; then
5965 echo "TCG debug enabled $debug_tcg"
5966 echo "TCG interpreter $tcg_interpreter"
5968 echo "malloc trim support $malloc_trim"
5969 echo "RDMA support $rdma"
5970 echo "PVRDMA support $pvrdma"
5971 echo "fdt support $fdt"
5972 echo "membarrier $membarrier"
5973 echo "preadv support $preadv"
5974 echo "fdatasync $fdatasync"
5975 echo "madvise $madvise"
5976 echo "posix_madvise $posix_madvise"
5977 echo "posix_memalign $posix_memalign"
5978 echo "libcap-ng support $cap_ng"
5979 echo "vhost-net support $vhost_net"
5980 echo "vhost-crypto support $vhost_crypto"
5981 echo "vhost-scsi support $vhost_scsi"
5982 echo "vhost-vsock support $vhost_vsock"
5983 echo "vhost-user support $vhost_user"
5984 echo "Trace backends $trace_backends"
5985 if have_backend
"simple"; then
5986 echo "Trace output file $trace_file-<pid>"
5988 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5989 echo "rbd support $rbd"
5990 echo "xfsctl support $xfs"
5991 echo "smartcard support $smartcard"
5992 echo "libusb $libusb"
5993 echo "usb net redir $usb_redir"
5994 echo "OpenGL support $opengl"
5995 echo "OpenGL dmabufs $opengl_dmabuf"
5996 echo "libiscsi support $libiscsi"
5997 echo "libnfs support $libnfs"
5998 echo "build guest agent $guest_agent"
5999 echo "QGA VSS support $guest_agent_with_vss"
6000 echo "QGA w32 disk info $guest_agent_ntddscsi"
6001 echo "QGA MSI support $guest_agent_msi"
6002 echo "seccomp support $seccomp"
6003 echo "coroutine backend $coroutine"
6004 echo "coroutine pool $coroutine_pool"
6005 echo "debug stack usage $debug_stack_usage"
6006 echo "mutex debugging $debug_mutex"
6007 echo "crypto afalg $crypto_afalg"
6008 echo "GlusterFS support $glusterfs"
6009 echo "gcov $gcov_tool"
6010 echo "gcov enabled $gcov"
6011 echo "TPM support $tpm"
6012 echo "libssh2 support $libssh2"
6013 echo "TPM passthrough $tpm_passthrough"
6014 echo "TPM emulator $tpm_emulator"
6015 echo "QOM debugging $qom_cast_debug"
6016 echo "Live block migration $live_block_migration"
6017 echo "lzo support $lzo"
6018 echo "snappy support $snappy"
6019 echo "bzip2 support $bzip2"
6020 echo "NUMA host support $numa"
6021 echo "libxml2 $libxml2"
6022 echo "tcmalloc support $tcmalloc"
6023 echo "jemalloc support $jemalloc"
6024 echo "avx2 optimization $avx2_opt"
6025 echo "replication support $replication"
6026 echo "VxHS block device $vxhs"
6027 echo "capstone $capstone"
6028 echo "docker $docker"
6029 echo "libpmem support $libpmem"
6031 if test "$sdl_too_old" = "yes"; then
6032 echo "-> Your SDL version is too old - please upgrade to have SDL support"
6035 if test "$sdlabi" = "1.2"; then
6037 echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
6038 echo "WARNING: future releases. Please switch to using SDL 2.0"
6041 if test "$supported_cpu" = "no"; then
6043 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
6045 echo "CPU host architecture $cpu support is not currently maintained."
6046 echo "The QEMU project intends to remove support for this host CPU in"
6047 echo "a future release if nobody volunteers to maintain it and to"
6048 echo "provide a build host for our continuous integration setup."
6049 echo "configure has succeeded and you can continue to build, but"
6050 echo "if you care about QEMU on this platform you should contact"
6051 echo "us upstream at qemu-devel@nongnu.org."
6054 if test "$supported_os" = "no"; then
6056 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
6058 echo "Host OS $targetos support is not currently maintained."
6059 echo "The QEMU project intends to remove support for this host OS in"
6060 echo "a future release if nobody volunteers to maintain it and to"
6061 echo "provide a build host for our continuous integration setup."
6062 echo "configure has succeeded and you can continue to build, but"
6063 echo "if you care about QEMU on this platform you should contact"
6064 echo "us upstream at qemu-devel@nongnu.org."
6067 config_host_mak
="config-host.mak"
6069 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
6071 echo "# Automatically generated by configure - do not modify" > $config_host_mak
6072 echo >> $config_host_mak
6074 echo all
: >> $config_host_mak
6075 echo "prefix=$prefix" >> $config_host_mak
6076 echo "bindir=$bindir" >> $config_host_mak
6077 echo "libdir=$libdir" >> $config_host_mak
6078 echo "libexecdir=$libexecdir" >> $config_host_mak
6079 echo "includedir=$includedir" >> $config_host_mak
6080 echo "mandir=$mandir" >> $config_host_mak
6081 echo "sysconfdir=$sysconfdir" >> $config_host_mak
6082 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
6083 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
6084 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
6085 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
6086 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
6087 if test "$mingw32" = "no" ; then
6088 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
6090 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
6091 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
6092 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
6093 echo "GIT=$git" >> $config_host_mak
6094 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
6095 echo "GIT_UPDATE=$git_update" >> $config_host_mak
6097 echo "ARCH=$ARCH" >> $config_host_mak
6099 if test "$debug_tcg" = "yes" ; then
6100 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
6102 if test "$strip_opt" = "yes" ; then
6103 echo "STRIP=${strip}" >> $config_host_mak
6105 if test "$bigendian" = "yes" ; then
6106 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
6108 if test "$mingw32" = "yes" ; then
6109 echo "CONFIG_WIN32=y" >> $config_host_mak
6110 rc_version
=$
(cat $source_path/VERSION
)
6111 version_major
=${rc_version%%.*}
6112 rc_version
=${rc_version#*.}
6113 version_minor
=${rc_version%%.*}
6114 rc_version
=${rc_version#*.}
6115 version_subminor
=${rc_version%%.*}
6117 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6118 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6119 if test "$guest_agent_with_vss" = "yes" ; then
6120 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
6121 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
6122 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
6124 if test "$guest_agent_ntddscsi" = "yes" ; then
6125 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
6127 if test "$guest_agent_msi" = "yes"; then
6128 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
6129 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6130 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6131 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6132 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6133 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6134 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6137 echo "CONFIG_POSIX=y" >> $config_host_mak
6140 if test "$linux" = "yes" ; then
6141 echo "CONFIG_LINUX=y" >> $config_host_mak
6144 if test "$darwin" = "yes" ; then
6145 echo "CONFIG_DARWIN=y" >> $config_host_mak
6148 if test "$solaris" = "yes" ; then
6149 echo "CONFIG_SOLARIS=y" >> $config_host_mak
6151 if test "$haiku" = "yes" ; then
6152 echo "CONFIG_HAIKU=y" >> $config_host_mak
6154 if test "$static" = "yes" ; then
6155 echo "CONFIG_STATIC=y" >> $config_host_mak
6157 if test "$profiler" = "yes" ; then
6158 echo "CONFIG_PROFILER=y" >> $config_host_mak
6160 if test "$slirp" = "yes" ; then
6161 echo "CONFIG_SLIRP=y" >> $config_host_mak
6162 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
6164 if test "$vde" = "yes" ; then
6165 echo "CONFIG_VDE=y" >> $config_host_mak
6166 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
6168 if test "$netmap" = "yes" ; then
6169 echo "CONFIG_NETMAP=y" >> $config_host_mak
6171 if test "$l2tpv3" = "yes" ; then
6172 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6174 if test "$cap_ng" = "yes" ; then
6175 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6177 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
6178 for drv
in $audio_drv_list; do
6179 def
=CONFIG_AUDIO_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
6181 alsa | oss | pa | sdl
)
6182 echo "$def=m" >> $config_host_mak ;;
6184 echo "$def=y" >> $config_host_mak ;;
6187 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6188 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6189 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6190 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6191 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
6192 if test "$audio_pt_int" = "yes" ; then
6193 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6195 if test "$audio_win_int" = "yes" ; then
6196 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6198 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6199 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
6200 if test "$vnc" = "yes" ; then
6201 echo "CONFIG_VNC=y" >> $config_host_mak
6203 if test "$vnc_sasl" = "yes" ; then
6204 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
6206 if test "$vnc_jpeg" = "yes" ; then
6207 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
6209 if test "$vnc_png" = "yes" ; then
6210 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
6212 if test "$xkbcommon" = "yes" ; then
6213 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6214 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6216 if test "$fnmatch" = "yes" ; then
6217 echo "CONFIG_FNMATCH=y" >> $config_host_mak
6219 if test "$xfs" = "yes" ; then
6220 echo "CONFIG_XFS=y" >> $config_host_mak
6222 qemu_version
=$
(head $source_path/VERSION
)
6223 echo "VERSION=$qemu_version" >>$config_host_mak
6224 echo "PKGVERSION=$pkgversion" >>$config_host_mak
6225 echo "SRC_PATH=$source_path" >> $config_host_mak
6226 echo "TARGET_DIRS=$target_list" >> $config_host_mak
6227 if [ "$docs" = "yes" ] ; then
6228 echo "BUILD_DOCS=yes" >> $config_host_mak
6230 if test "$modules" = "yes"; then
6231 # $shacmd can generate a hash started with digit, which the compiler doesn't
6232 # like as an symbol. So prefix it with an underscore
6233 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
6234 echo "CONFIG_MODULES=y" >> $config_host_mak
6236 if test "$have_x11" = "yes" -a "$need_x11" = "yes"; then
6237 echo "CONFIG_X11=y" >> $config_host_mak
6238 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6239 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6241 if test "$sdl" = "yes" ; then
6242 echo "CONFIG_SDL=m" >> $config_host_mak
6243 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
6244 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
6245 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
6247 if test "$cocoa" = "yes" ; then
6248 echo "CONFIG_COCOA=y" >> $config_host_mak
6250 if test "$curses" = "yes" ; then
6251 echo "CONFIG_CURSES=m" >> $config_host_mak
6252 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6253 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
6255 if test "$pipe2" = "yes" ; then
6256 echo "CONFIG_PIPE2=y" >> $config_host_mak
6258 if test "$accept4" = "yes" ; then
6259 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6261 if test "$splice" = "yes" ; then
6262 echo "CONFIG_SPLICE=y" >> $config_host_mak
6264 if test "$eventfd" = "yes" ; then
6265 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6267 if test "$memfd" = "yes" ; then
6268 echo "CONFIG_MEMFD=y" >> $config_host_mak
6270 if test "$have_usbfs" = "yes" ; then
6271 echo "CONFIG_USBFS=y" >> $config_host_mak
6273 if test "$fallocate" = "yes" ; then
6274 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6276 if test "$fallocate_punch_hole" = "yes" ; then
6277 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6279 if test "$fallocate_zero_range" = "yes" ; then
6280 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6282 if test "$posix_fallocate" = "yes" ; then
6283 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6285 if test "$sync_file_range" = "yes" ; then
6286 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6288 if test "$fiemap" = "yes" ; then
6289 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6291 if test "$dup3" = "yes" ; then
6292 echo "CONFIG_DUP3=y" >> $config_host_mak
6294 if test "$ppoll" = "yes" ; then
6295 echo "CONFIG_PPOLL=y" >> $config_host_mak
6297 if test "$prctl_pr_set_timerslack" = "yes" ; then
6298 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6300 if test "$epoll" = "yes" ; then
6301 echo "CONFIG_EPOLL=y" >> $config_host_mak
6303 if test "$epoll_create1" = "yes" ; then
6304 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6306 if test "$sendfile" = "yes" ; then
6307 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6309 if test "$timerfd" = "yes" ; then
6310 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6312 if test "$setns" = "yes" ; then
6313 echo "CONFIG_SETNS=y" >> $config_host_mak
6315 if test "$clock_adjtime" = "yes" ; then
6316 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6318 if test "$syncfs" = "yes" ; then
6319 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6321 if test "$inotify" = "yes" ; then
6322 echo "CONFIG_INOTIFY=y" >> $config_host_mak
6324 if test "$inotify1" = "yes" ; then
6325 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6327 if test "$sem_timedwait" = "yes" ; then
6328 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6330 if test "$strchrnul" = "yes" ; then
6331 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
6333 if test "$byteswap_h" = "yes" ; then
6334 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6336 if test "$bswap_h" = "yes" ; then
6337 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6339 if test "$curl" = "yes" ; then
6340 echo "CONFIG_CURL=m" >> $config_host_mak
6341 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
6342 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
6344 if test "$brlapi" = "yes" ; then
6345 echo "CONFIG_BRLAPI=y" >> $config_host_mak
6346 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
6348 if test "$bluez" = "yes" ; then
6349 echo "CONFIG_BLUEZ=y" >> $config_host_mak
6350 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
6352 if test "$gtk" = "yes" ; then
6353 echo "CONFIG_GTK=m" >> $config_host_mak
6354 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
6355 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
6356 if test "$gtk_gl" = "yes" ; then
6357 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6360 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
6361 if test "$gnutls" = "yes" ; then
6362 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6364 if test "$gcrypt" = "yes" ; then
6365 echo "CONFIG_GCRYPT=y" >> $config_host_mak
6366 if test "$gcrypt_hmac" = "yes" ; then
6367 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6370 if test "$nettle" = "yes" ; then
6371 echo "CONFIG_NETTLE=y" >> $config_host_mak
6372 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
6374 if test "$tasn1" = "yes" ; then
6375 echo "CONFIG_TASN1=y" >> $config_host_mak
6377 if test "$have_ifaddrs_h" = "yes" ; then
6378 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6380 if test "$have_broken_size_max" = "yes" ; then
6381 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6384 # Work around a system header bug with some kernel/XFS header
6385 # versions where they both try to define 'struct fsxattr':
6386 # xfs headers will not try to redefine structs from linux headers
6387 # if this macro is set.
6388 if test "$have_fsxattr" = "yes" ; then
6389 echo "HAVE_FSXATTR=y" >> $config_host_mak
6391 if test "$have_copy_file_range" = "yes" ; then
6392 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
6394 if test "$vte" = "yes" ; then
6395 echo "CONFIG_VTE=y" >> $config_host_mak
6396 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6397 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
6399 if test "$virglrenderer" = "yes" ; then
6400 echo "CONFIG_VIRGL=y" >> $config_host_mak
6401 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6402 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6404 if test "$xen" = "yes" ; then
6405 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
6406 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
6407 if test "$xen_pv_domain_build" = "yes" ; then
6408 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6411 if test "$linux_aio" = "yes" ; then
6412 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6414 if test "$attr" = "yes" ; then
6415 echo "CONFIG_ATTR=y" >> $config_host_mak
6417 if test "$libattr" = "yes" ; then
6418 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6420 if test "$virtfs" = "yes" ; then
6421 echo "CONFIG_VIRTFS=y" >> $config_host_mak
6423 if test "$mpath" = "yes" ; then
6424 echo "CONFIG_MPATH=y" >> $config_host_mak
6425 if test "$mpathpersist_new_api" = "yes"; then
6426 echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
6429 if test "$vhost_scsi" = "yes" ; then
6430 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6432 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
6433 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6435 if test "$vhost_crypto" = "yes" ; then
6436 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6438 if test "$vhost_vsock" = "yes" ; then
6439 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6441 if test "$vhost_user" = "yes" ; then
6442 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6444 if test "$blobs" = "yes" ; then
6445 echo "INSTALL_BLOBS=yes" >> $config_host_mak
6447 if test "$iovec" = "yes" ; then
6448 echo "CONFIG_IOVEC=y" >> $config_host_mak
6450 if test "$preadv" = "yes" ; then
6451 echo "CONFIG_PREADV=y" >> $config_host_mak
6453 if test "$fdt" != "no" ; then
6454 echo "CONFIG_FDT=y" >> $config_host_mak
6456 if test "$membarrier" = "yes" ; then
6457 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6459 if test "$signalfd" = "yes" ; then
6460 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6462 if test "$tcg" = "yes"; then
6463 echo "CONFIG_TCG=y" >> $config_host_mak
6464 if test "$tcg_interpreter" = "yes" ; then
6465 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6468 if test "$fdatasync" = "yes" ; then
6469 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6471 if test "$madvise" = "yes" ; then
6472 echo "CONFIG_MADVISE=y" >> $config_host_mak
6474 if test "$posix_madvise" = "yes" ; then
6475 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6477 if test "$posix_memalign" = "yes" ; then
6478 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6481 if test "$spice" = "yes" ; then
6482 echo "CONFIG_SPICE=y" >> $config_host_mak
6485 if test "$smartcard" = "yes" ; then
6486 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6487 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6488 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6491 if test "$libusb" = "yes" ; then
6492 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6493 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6494 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6497 if test "$usb_redir" = "yes" ; then
6498 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6499 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6500 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6503 if test "$opengl" = "yes" ; then
6504 echo "CONFIG_OPENGL=y" >> $config_host_mak
6505 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6506 if test "$opengl_dmabuf" = "yes" ; then
6507 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6511 if test "$malloc_trim" = "yes" ; then
6512 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6515 if test "$avx2_opt" = "yes" ; then
6516 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6519 if test "$lzo" = "yes" ; then
6520 echo "CONFIG_LZO=y" >> $config_host_mak
6523 if test "$snappy" = "yes" ; then
6524 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6527 if test "$bzip2" = "yes" ; then
6528 echo "CONFIG_BZIP2=y" >> $config_host_mak
6529 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6532 if test "$libiscsi" = "yes" ; then
6533 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6534 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6535 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6538 if test "$libnfs" = "yes" ; then
6539 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6540 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6543 if test "$seccomp" = "yes"; then
6544 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6545 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6546 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6549 # XXX: suppress that
6550 if [ "$bsd" = "yes" ] ; then
6551 echo "CONFIG_BSD=y" >> $config_host_mak
6554 if test "$localtime_r" = "yes" ; then
6555 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6557 if test "$qom_cast_debug" = "yes" ; then
6558 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6560 if test "$rbd" = "yes" ; then
6561 echo "CONFIG_RBD=m" >> $config_host_mak
6562 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6563 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6566 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6567 if test "$coroutine_pool" = "yes" ; then
6568 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6570 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6573 if test "$debug_stack_usage" = "yes" ; then
6574 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6577 if test "$crypto_afalg" = "yes" ; then
6578 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6581 if test "$open_by_handle_at" = "yes" ; then
6582 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6585 if test "$linux_magic_h" = "yes" ; then
6586 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6589 if test "$pragma_diagnostic_available" = "yes" ; then
6590 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6593 if test "$valgrind_h" = "yes" ; then
6594 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6597 if test "$have_asan_iface_fiber" = "yes" ; then
6598 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6601 if test "$has_environ" = "yes" ; then
6602 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6605 if test "$cpuid_h" = "yes" ; then
6606 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6609 if test "$int128" = "yes" ; then
6610 echo "CONFIG_INT128=y" >> $config_host_mak
6613 if test "$atomic128" = "yes" ; then
6614 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6617 if test "$cmpxchg128" = "yes" ; then
6618 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
6621 if test "$atomic64" = "yes" ; then
6622 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6625 if test "$vector16" = "yes" ; then
6626 echo "CONFIG_VECTOR16=y" >> $config_host_mak
6629 if test "$getauxval" = "yes" ; then
6630 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6633 if test "$glusterfs" = "yes" ; then
6634 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6635 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6636 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6639 if test "$glusterfs_xlator_opt" = "yes" ; then
6640 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6643 if test "$glusterfs_discard" = "yes" ; then
6644 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6647 if test "$glusterfs_fallocate" = "yes" ; then
6648 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6651 if test "$glusterfs_zerofill" = "yes" ; then
6652 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6655 if test "$libssh2" = "yes" ; then
6656 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6657 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6658 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6661 if test "$live_block_migration" = "yes" ; then
6662 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6665 if test "$tpm" = "yes"; then
6666 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6667 # TPM passthrough support?
6668 if test "$tpm_passthrough" = "yes"; then
6669 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6671 # TPM emulator support?
6672 if test "$tpm_emulator" = "yes"; then
6673 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6677 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6678 if have_backend
"nop"; then
6679 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6681 if have_backend
"simple"; then
6682 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6683 # Set the appropriate trace file.
6684 trace_file
="\"$trace_file-\" FMT_pid"
6686 if have_backend
"log"; then
6687 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6689 if have_backend
"ust"; then
6690 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6692 if have_backend
"dtrace"; then
6693 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6694 if test "$trace_backend_stap" = "yes" ; then
6695 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6698 if have_backend
"ftrace"; then
6699 if test "$linux" = "yes" ; then
6700 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6702 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6705 if have_backend
"syslog"; then
6706 if test "$posix_syslog" = "yes" ; then
6707 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6709 feature_not_found
"syslog(trace backend)" "syslog not available"
6712 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6714 if test "$rdma" = "yes" ; then
6715 echo "CONFIG_RDMA=y" >> $config_host_mak
6716 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6719 if test "$pvrdma" = "yes" ; then
6720 echo "CONFIG_PVRDMA=y" >> $config_host_mak
6723 if test "$have_rtnetlink" = "yes" ; then
6724 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6727 if test "$libxml2" = "yes" ; then
6728 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6729 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6730 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6733 if test "$replication" = "yes" ; then
6734 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6737 if test "$have_af_vsock" = "yes" ; then
6738 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6741 if test "$have_sysmacros" = "yes" ; then
6742 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6745 if test "$have_static_assert" = "yes" ; then
6746 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6749 if test "$have_utmpx" = "yes" ; then
6750 echo "HAVE_UTMPX=y" >> $config_host_mak
6753 if test "$ivshmem" = "yes" ; then
6754 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6756 if test "$capstone" != "no" ; then
6757 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6759 if test "$debug_mutex" = "yes" ; then
6760 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
6763 # Hold two types of flag:
6764 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6765 # a thread we have a handle to
6766 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6768 if test "$pthread_setname_np" = "yes" ; then
6769 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6770 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6773 if test "$vxhs" = "yes" ; then
6774 echo "CONFIG_VXHS=y" >> $config_host_mak
6775 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6778 if test "$libpmem" = "yes" ; then
6779 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
6782 if test "$tcg_interpreter" = "yes"; then
6783 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6784 elif test "$ARCH" = "sparc64" ; then
6785 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6786 elif test "$ARCH" = "s390x" ; then
6787 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6788 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6789 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6790 elif test "$ARCH" = "ppc64" ; then
6791 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6793 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6795 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
6797 echo "TOOLS=$tools" >> $config_host_mak
6798 echo "ROMS=$roms" >> $config_host_mak
6799 echo "MAKE=$make" >> $config_host_mak
6800 echo "INSTALL=$install" >> $config_host_mak
6801 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6802 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6803 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6804 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6805 echo "PYTHON=$python" >> $config_host_mak
6806 echo "CC=$cc" >> $config_host_mak
6807 if $iasl -h > /dev
/null
2>&1; then
6808 echo "IASL=$iasl" >> $config_host_mak
6810 echo "HOST_CC=$host_cc" >> $config_host_mak
6811 echo "CXX=$cxx" >> $config_host_mak
6812 echo "OBJCC=$objcc" >> $config_host_mak
6813 echo "AR=$ar" >> $config_host_mak
6814 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6815 echo "AS=$as" >> $config_host_mak
6816 echo "CCAS=$ccas" >> $config_host_mak
6817 echo "CPP=$cpp" >> $config_host_mak
6818 echo "OBJCOPY=$objcopy" >> $config_host_mak
6819 echo "LD=$ld" >> $config_host_mak
6820 echo "RANLIB=$ranlib" >> $config_host_mak
6821 echo "NM=$nm" >> $config_host_mak
6822 echo "WINDRES=$windres" >> $config_host_mak
6823 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6824 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6825 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6826 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6827 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6828 if test "$sparse" = "yes" ; then
6829 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6830 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6831 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6832 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6833 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6835 if test "$cross_prefix" != ""; then
6836 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6838 echo "AUTOCONF_HOST := " >> $config_host_mak
6840 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6841 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6842 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
6843 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6844 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6845 echo "LIBS+=$LIBS" >> $config_host_mak
6846 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6847 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6848 echo "EXESUF=$EXESUF" >> $config_host_mak
6849 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6850 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6851 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6852 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6853 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6854 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6855 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6856 if test "$gcov" = "yes" ; then
6857 echo "CONFIG_GCOV=y" >> $config_host_mak
6858 echo "GCOV=$gcov_tool" >> $config_host_mak
6861 if test "$docker" != "no"; then
6862 echo "HAVE_USER_DOCKER=y" >> $config_host_mak
6865 # use included Linux headers
6866 if test "$linux" = "yes" ; then
6867 mkdir
-p linux-headers
6885 # For most CPUs the kernel architecture name and QEMU CPU name match.
6889 # For non-KVM architectures we will not have asm headers
6890 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6891 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
6895 for target
in $target_list; do
6896 target_dir
="$target"
6897 config_target_mak
=$target_dir/config-target.mak
6898 target_name
=$
(echo $target | cut
-d '-' -f 1)
6899 target_bigendian
="no"
6901 case "$target_name" in
6902 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
6903 target_bigendian
=yes
6907 target_user_only
="no"
6908 target_linux_user
="no"
6909 target_bsd_user
="no"
6911 ${target_name}-softmmu)
6912 target_softmmu
="yes"
6914 ${target_name}-linux-user)
6915 target_user_only
="yes"
6916 target_linux_user
="yes"
6918 ${target_name}-bsd-user)
6919 target_user_only
="yes"
6920 target_bsd_user
="yes"
6923 error_exit
"Target '$target' not recognised"
6929 target_compiler_static
=""
6930 target_compiler_cflags
=""
6932 mkdir
-p $target_dir
6933 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6937 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
6940 TARGET_ARCH
="$target_name"
6944 case "$target_name" in
6947 gdb_xml_files
="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
6948 target_compiler
=$cross_cc_i386
6949 target_compiler_cflags
=$cross_cc_ccflags_i386
6952 TARGET_BASE_ARCH
=i386
6954 gdb_xml_files
="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
6955 target_compiler
=$cross_cc_x86_64
6959 target_compiler
=$cross_cc_alpha
6965 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6966 target_compiler
=$cross_cc_arm
6967 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
6971 TARGET_BASE_ARCH
=arm
6974 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6975 target_compiler
=$cross_cc_aarch64
6976 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
6979 target_compiler
=$cross_cc_cris
6983 target_compiler
=$cross_cc_hppa
6986 target_compiler
=$cross_cc_lm32
6990 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
6991 target_compiler
=$cross_cc_m68k
6993 microblaze|microblazeel
)
6994 TARGET_ARCH
=microblaze
6996 echo "TARGET_ABI32=y" >> $config_target_mak
6997 target_compiler
=$cross_cc_microblaze
7001 target_compiler
=$cross_cc_mips
7002 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
7006 TARGET_BASE_ARCH
=mips
7007 target_compiler
=$cross_cc_mipsn32
7008 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
7009 echo "TARGET_ABI32=y" >> $config_target_mak
7013 TARGET_BASE_ARCH
=mips
7014 target_compiler
=$cross_cc_mips64
7015 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
7018 target_compiler
=$cross_cc_moxie
7021 target_compiler
=$cross_cc_nios2
7024 target_compiler
=$cross_cc_or1k
7025 TARGET_ARCH
=openrisc
7026 TARGET_BASE_ARCH
=openrisc
7029 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
7030 target_compiler
=$cross_cc_powerpc
7033 TARGET_BASE_ARCH
=ppc
7036 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7037 target_compiler
=$cross_cc_ppc64
7041 TARGET_BASE_ARCH
=ppc
7044 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7045 target_compiler
=$cross_cc_ppc64le
7049 TARGET_BASE_ARCH
=ppc
7051 echo "TARGET_ABI32=y" >> $config_target_mak
7052 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7053 target_compiler
=$cross_cc_ppc64abi32
7056 TARGET_BASE_ARCH
=riscv
7057 TARGET_ABI_DIR
=riscv
7059 target_compiler
=$cross_cc_riscv32
7062 TARGET_BASE_ARCH
=riscv
7063 TARGET_ABI_DIR
=riscv
7065 target_compiler
=$cross_cc_riscv64
7070 target_compiler
=$cross_cc_sh4
7073 target_compiler
=$cross_cc_sparc
7076 TARGET_BASE_ARCH
=sparc
7077 target_compiler
=$cross_cc_sparc64
7081 TARGET_BASE_ARCH
=sparc
7082 TARGET_ABI_DIR
=sparc
7083 target_compiler
=$cross_cc_sparc32plus
7084 echo "TARGET_ABI32=y" >> $config_target_mak
7088 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
7089 target_compiler
=$cross_cc_s390x
7092 target_compiler
=$cross_cc_tilegx
7095 target_compiler
=$cross_cc_tricore
7098 target_compiler
=$cross_cc_unicore32
7103 target_compiler
=$cross_cc_xtensa
7106 error_exit
"Unsupported target CPU"
7109 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
7110 if [ "$TARGET_BASE_ARCH" = "" ]; then
7111 TARGET_BASE_ARCH
=$TARGET_ARCH
7114 # Do we have a cross compiler for this target?
7115 if has
$target_compiler; then
7119 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then
7120 # For host systems we might get away with building without -static
7121 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then
7124 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7125 target_compiler_static
="n"
7128 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7129 target_compiler_static
="y"
7135 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
7138 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
7141 target_arch_name
="$(upper $TARGET_ARCH)"
7142 echo "TARGET_$target_arch_name=y" >> $config_target_mak
7143 echo "TARGET_NAME=$target_name" >> $config_target_mak
7144 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
7145 if [ "$TARGET_ABI_DIR" = "" ]; then
7146 TARGET_ABI_DIR
=$TARGET_ARCH
7148 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
7149 if [ "$HOST_VARIANT_DIR" != "" ]; then
7150 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
7153 if supported_xen_target
$target; then
7154 echo "CONFIG_XEN=y" >> $config_target_mak
7155 if test "$xen_pci_passthrough" = yes; then
7156 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
7159 if supported_kvm_target
$target; then
7160 echo "CONFIG_KVM=y" >> $config_target_mak
7161 if test "$vhost_net" = "yes" ; then
7162 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
7163 if test "$vhost_user" = "yes" ; then
7164 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
7168 if supported_hax_target
$target; then
7169 echo "CONFIG_HAX=y" >> $config_target_mak
7171 if supported_hvf_target
$target; then
7172 echo "CONFIG_HVF=y" >> $config_target_mak
7174 if supported_whpx_target
$target; then
7175 echo "CONFIG_WHPX=y" >> $config_target_mak
7177 if test "$target_bigendian" = "yes" ; then
7178 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
7180 if test "$target_softmmu" = "yes" ; then
7181 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
7182 if test "$mttcg" = "yes" ; then
7183 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
7186 if test "$target_user_only" = "yes" ; then
7187 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
7188 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
7190 if test "$target_linux_user" = "yes" ; then
7191 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
7194 if test ! -z "$gdb_xml_files" ; then
7195 for x
in $gdb_xml_files; do
7196 list
="$list $source_path/gdb-xml/$x"
7198 echo "TARGET_XML_FILES=$list" >> $config_target_mak
7201 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
7202 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
7204 if test "$target_bsd_user" = "yes" ; then
7205 echo "CONFIG_BSD_USER=y" >> $config_target_mak
7208 if test -n "$target_compiler"; then
7209 echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak
7211 if test -n "$target_compiler_static"; then
7212 echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak
7215 if test -n "$target_compiler_cflags"; then
7216 echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
7221 # generate QEMU_CFLAGS/LDFLAGS for targets
7227 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7228 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7231 for i
in $ARCH $TARGET_BASE_ARCH ; do
7234 disas_config
"ALPHA"
7237 if test -n "${cxx}"; then
7238 disas_config
"ARM_A64"
7243 if test -n "${cxx}"; then
7244 disas_config
"ARM_A64"
7263 disas_config
"MICROBLAZE"
7267 if test -n "${cxx}"; then
7268 disas_config
"NANOMIPS"
7272 disas_config
"MOXIE"
7275 disas_config
"NIOS2"
7278 disas_config
"OPENRISC"
7284 disas_config
"RISCV"
7293 disas_config
"SPARC"
7296 disas_config
"XTENSA"
7300 if test "$tcg_interpreter" = "yes" ; then
7306 # Ensure there's only a single GP
7307 cflags
="-msmall-data $cflags"
7311 if test "$gprof" = "yes" ; then
7312 echo "TARGET_GPROF=yes" >> $config_target_mak
7313 if test "$target_linux_user" = "yes" ; then
7315 ldflags
="-p $ldflags"
7317 if test "$target_softmmu" = "yes" ; then
7318 ldflags
="-p $ldflags"
7319 echo "GPROF_CFLAGS=-p" >> $config_target_mak
7323 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
7324 ldflags
="$ldflags $textseg_ldflags"
7327 # Newer kernels on s390 check for an S390_PGSTE program header and
7328 # enable the pgste page table extensions in that case. This makes
7329 # the vm.allocate_pgste sysctl unnecessary. We enable this program
7331 # - we build on s390x
7332 # - we build the system emulation for s390x (qemu-system-s390x)
7334 # - the linker supports --s390-pgste
7335 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
7336 if ld_has
--s390-pgste ; then
7337 ldflags
="-Wl,--s390-pgste $ldflags"
7341 echo "LDFLAGS+=$ldflags" >> $config_target_mak
7342 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
7344 done # for target in $targets
7346 if test -n "$enabled_cross_compilers"; then
7348 echo "NOTE: cross-compilers enabled: $enabled_cross_compilers"
7351 if [ "$fdt" = "git" ]; then
7352 echo "config-host.h: subdir-dtc" >> $config_host_mak
7354 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7355 echo "config-host.h: subdir-capstone" >> $config_host_mak
7357 if test -n "$LIBCAPSTONE"; then
7358 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7361 if test "$numa" = "yes"; then
7362 echo "CONFIG_NUMA=y" >> $config_host_mak
7365 if test "$ccache_cpp2" = "yes"; then
7366 echo "export CCACHE_CPP2=y" >> $config_host_mak
7369 # build tree in object directory in case the source is not in the current directory
7370 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
7371 DIRS
="$DIRS tests/fp"
7372 DIRS
="$DIRS docs docs/interop fsdev scsi"
7373 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
7374 DIRS
="$DIRS roms/seabios roms/vgabios"
7375 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
7376 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
7377 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
7378 FILES
="$FILES tests/fp/Makefile"
7379 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
7380 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
7381 FILES
="$FILES pc-bios/s390-ccw/Makefile"
7382 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
7383 FILES
="$FILES pc-bios/qemu-icon.bmp"
7384 FILES
="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
7386 $source_path/pc-bios
/*.bin \
7387 $source_path/pc-bios
/*.lid \
7388 $source_path/pc-bios
/*.aml \
7389 $source_path/pc-bios
/*.rom \
7390 $source_path/pc-bios
/*.dtb \
7391 $source_path/pc-bios
/*.img \
7392 $source_path/pc-bios
/openbios-
* \
7393 $source_path/pc-bios
/u-boot.
* \
7394 $source_path/pc-bios
/palcode-
*
7396 FILES
="$FILES pc-bios/$(basename $bios_file)"
7398 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
7400 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
7402 for test_file
in $
(find $source_path/tests
/hex-loader-check-data
-type f
)
7404 FILES
="$FILES tests/hex-loader-check-data$(echo $test_file | sed -e 's/.*hex-loader-check-data//')"
7407 for f
in $FILES ; do
7408 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
7409 symlink
"$source_path/$f" "$f"
7413 # temporary config to build submodules
7414 for rom
in seabios vgabios
; do
7415 config_mak
=roms
/$rom/config.mak
7416 echo "# Automatically generated by configure - do not modify" > $config_mak
7417 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
7418 echo "AS=$as" >> $config_mak
7419 echo "CCAS=$ccas" >> $config_mak
7420 echo "CC=$cc" >> $config_mak
7421 echo "BCC=bcc" >> $config_mak
7422 echo "CPP=$cpp" >> $config_mak
7423 echo "OBJCOPY=objcopy" >> $config_mak
7424 echo "IASL=$iasl" >> $config_mak
7425 echo "LD=$ld" >> $config_mak
7426 echo "RANLIB=$ranlib" >> $config_mak
7429 # set up tests data directory
7430 for tests_subdir
in acceptance data
; do
7431 if [ ! -e tests
/$tests_subdir ]; then
7432 symlink
"$source_path/tests/$tests_subdir" tests
/$tests_subdir
7436 # set up qemu-iotests in this build directory
7437 iotests_common_env
="tests/qemu-iotests/common.env"
7438 iotests_check
="tests/qemu-iotests/check"
7440 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7441 echo >> "$iotests_common_env"
7442 echo "export PYTHON='$python'" >> "$iotests_common_env"
7444 if [ ! -e "$iotests_check" ]; then
7445 symlink
"$source_path/$iotests_check" "$iotests_check"
7448 # Save the configure command line for later reuse.
7449 cat <<EOD >config.status
7451 # Generated by configure.
7452 # Run this file to recreate the current configuration.
7453 # Compiler output produced by configure, useful for debugging
7454 # configure, is in config.log if it exists.
7460 eval envval
=\$
$envname
7462 if test -n "$envval"
7464 echo "$envname='$envval'" >> config.status
7465 echo "export $envname" >> config.status
7467 echo "unset $envname" >> config.status
7471 # Preserve various env variables that influence what
7472 # features/build target configure will detect
7478 preserve_env INSTALL
7480 preserve_env LD_LIBRARY_PATH
7481 preserve_env LIBTOOL
7484 preserve_env OBJCOPY
7486 preserve_env PKG_CONFIG
7487 preserve_env PKG_CONFIG_LIBDIR
7488 preserve_env PKG_CONFIG_PATH
7490 preserve_env SDL_CONFIG
7491 preserve_env SDL2_CONFIG
7494 preserve_env WINDRES
7496 printf "exec" >>config.status
7497 printf " '%s'" "$0" "$@" >>config.status
7498 echo ' "$@"' >>config.status
7499 chmod +x config.status