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"
33 TMPTXT
="${TMPDIR1}/${TMPB}.txt"
37 # Print a helpful header at the top of config.log
38 echo "# QEMU configure log $(date)" >> config.log
39 printf "# Configured with:" >> config.log
40 printf " '%s'" "$0" "$@" >> config.log
42 echo "#" >> config.log
47 while test -n "$2"; do
60 # Run the compiler, capturing its output to the log. First argument
61 # is compiler binary to execute.
64 if test -n "$BASH_VERSION"; then eval '
67 lines: ${BASH_LINENO[*]}"
69 echo $compiler "$@" >> config.log
70 $compiler "$@" >> config.log
2>&1 ||
return $?
71 # Test passed. If this is an --enable-werror build, rerun
72 # the test with -Werror and bail out if it fails. This
73 # makes warning-generating-errors in configure test code
74 # obvious to developers.
75 if test "$werror" != "yes"; then
78 # Don't bother rerunning the compile if we were already using -Werror
84 echo $compiler -Werror "$@" >> config.log
85 $compiler -Werror "$@" >> config.log
2>&1 && return $?
86 error_exit
"configure test passed without -Werror but failed with -Werror." \
87 "This is probably a bug in the configure script. The failing command" \
88 "will be at the bottom of config.log." \
89 "You can run configure with --disable-werror to bypass this check."
93 do_compiler
"$cc" "$@"
97 do_compiler
"$cxx" "$@"
100 # Append $2 to the variable named $1, with space separation
102 eval $1=\
${$1:+\"\$$1 \"}\
$2
106 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
107 # options which some versions of GCC's C++ compiler complain about
108 # because they only make sense for C programs.
109 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS"
111 for arg
in $QEMU_CFLAGS; do
113 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
114 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
117 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }"-std=gnu++98"
120 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
128 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
134 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $QEMU_LDFLAGS $local_ldflags
137 # symbolically link $1 to $2. Portable version of "ln -sf".
140 mkdir
-p "$(dirname "$2")"
144 # check whether a command is available to this shell (may be either an
145 # executable or a builtin)
147 type "$1" >/dev
/null
2>&1
150 # search for an executable in PATH
156 # pathname has a dir component?
157 if [ "${local_command#*/}" != "$local_command" ]; then
158 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
159 echo "$local_command"
163 if [ -z "$local_command" ]; then
168 for local_dir
in $PATH; do
169 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
170 echo "$local_dir/$local_command"
171 IFS
="${local_ifs:-$(printf ' \t\n')}"
176 IFS
="${local_ifs:-$(printf ' \t\n')}"
181 echo "$trace_backends" |
grep "$1" >/dev
/null
185 eval test -z '"${1#'"$2"'}"'
188 supported_hax_target
() {
189 test "$hax" = "yes" ||
return 1
190 glob
"$1" "*-softmmu" ||
return 1
191 case "${1%-softmmu}" in
199 supported_kvm_target
() {
200 test "$kvm" = "yes" ||
return 1
201 glob
"$1" "*-softmmu" ||
return 1
202 case "${1%-softmmu}:$cpu" in
203 arm
:arm | aarch64
:aarch64 | \
204 i386
:i386 | i386
:x86_64 | i386
:x32 | \
205 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
206 mips
:mips | mipsel
:mips | mips64
:mips | mips64el
:mips | \
207 ppc
:ppc | ppc64
:ppc | ppc
:ppc64 | ppc64
:ppc64 | ppc64
:ppc64le | \
215 supported_xen_target
() {
216 test "$xen" = "yes" ||
return 1
217 glob
"$1" "*-softmmu" ||
return 1
218 # Only i386 and x86_64 provide the xenpv machine.
219 case "${1%-softmmu}" in
227 supported_hvf_target
() {
228 test "$hvf" = "yes" ||
return 1
229 glob
"$1" "*-softmmu" ||
return 1
230 case "${1%-softmmu}" in
238 supported_whpx_target
() {
239 test "$whpx" = "yes" ||
return 1
240 glob
"$1" "*-softmmu" ||
return 1
241 case "${1%-softmmu}" in
254 if test "$linux" != "yes"; then
255 print_error
"Target '$target' is only available on a Linux host"
260 if test "$bsd" != "yes"; then
261 print_error
"Target '$target' is only available on a BSD host"
266 print_error
"Invalid target name '$target'"
270 test "$tcg" = "yes" && return 0
271 supported_kvm_target
"$1" && return 0
272 supported_xen_target
"$1" && return 0
273 supported_hax_target
"$1" && return 0
274 supported_hvf_target
"$1" && return 0
275 supported_whpx_target
"$1" && return 0
276 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
282 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
285 # make source path absolute
286 source_path
=$
(cd "$(dirname -- "$0")"; pwd)
288 if printf %s
\\n
"$source_path" "$PWD" |
grep -q "[[:space:]:]";
290 error_exit
"main directory cannot contain spaces nor colons"
296 interp_prefix
="/usr/gnemul/qemu-%M"
300 block_drv_rw_whitelist
=""
301 block_drv_ro_whitelist
=""
312 gdb_bin
=$
(command -v "gdb-multiarch" ||
command -v "gdb")
314 if test -e "$source_path/.git"
317 git_submodules
="ui/keycodemapdb"
318 git_submodules
="$git_submodules tests/fp/berkeley-testfloat-3"
319 git_submodules
="$git_submodules tests/fp/berkeley-softfloat-3"
324 if ! test -f "$source_path/ui/keycodemapdb/README"
327 echo "ERROR: missing file $source_path/ui/keycodemapdb/README"
329 echo "This is not a GIT checkout but module content appears to"
330 echo "be missing. Do not use 'git archive' or GitHub download links"
331 echo "to acquire QEMU source archives. Non-GIT builds are only"
332 echo "supported with source archives linked from:"
334 echo " https://www.qemu.org/download/#source"
336 echo "Developers working with GIT can use scripts/archive-source.sh"
337 echo "if they need to create valid source archives."
344 # Don't accept a target_list environment variable.
346 unset target_list_exclude
348 # Default value for a variable defining feature "foo".
349 # * foo="no" feature will only be used if --enable-foo arg is given
350 # * foo="" feature will be searched for, and if found, will be used
351 # unless --disable-foo is given
352 # * foo="yes" this value will only be set by --enable-foo flag.
353 # feature will searched for,
354 # if not found, configure exits with error
356 # Always add --enable-foo and --disable-foo command line args.
357 # Distributions want to ensure that several features are compiled in, and it
358 # is impossible without a --enable-foo that exits if a feature is not found.
379 xen_pci_passthrough
=""
414 LDFLAGS_SHARED
="-shared"
418 mandir
="\${prefix}/share/man"
419 datadir
="\${prefix}/share"
420 firmwarepath
="\${prefix}/share/qemu-firmware"
422 qemu_docdir
="\${prefix}/share/doc/qemu"
423 bindir
="\${prefix}/bin"
424 libdir
="\${prefix}/lib"
425 libexecdir
="\${prefix}/libexec"
426 includedir
="\${prefix}/include"
427 sysconfdir
="\${prefix}/etc"
428 local_statedir
="\${prefix}/var"
464 guest_agent_with_vss
="no"
465 guest_agent_ntddscsi
="no"
474 debug_stack_usage
="no"
478 glusterfs_xlator_opt
="no"
479 glusterfs_discard
="no"
480 glusterfs_fallocate
="no"
481 glusterfs_zerofill
="no"
482 glusterfs_ftruncate_has_stat
="no"
483 glusterfs_iocb_has_stat
="no"
486 tls_priority
="NORMAL"
493 qemu_private_xts
="yes"
499 live_block_migration
="yes"
516 default_devices
="yes"
528 # parse CC options first
530 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
532 --cross-prefix=*) cross_prefix
="$optarg"
536 --cxx=*) CXX
="$optarg"
538 --cpu=*) cpu
="$optarg"
540 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
541 QEMU_LDFLAGS
="$QEMU_LDFLAGS $optarg"
543 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
545 --extra-ldflags=*) QEMU_LDFLAGS
="$QEMU_LDFLAGS $optarg"
546 EXTRA_LDFLAGS
="$optarg"
548 --enable-debug-info) debug_info
="yes"
550 --disable-debug-info) debug_info
="no"
552 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
554 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
555 eval "cross_cc_cflags_${cc_arch}=\$optarg"
556 cross_cc_vars
="$cross_cc_vars cross_cc_cflags_${cc_arch}"
558 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
559 cc_archs
="$cc_archs $cc_arch"
560 eval "cross_cc_${cc_arch}=\$optarg"
561 cross_cc_vars
="$cross_cc_vars cross_cc_${cc_arch}"
566 # Using uname is really, really broken. Once we have the right set of checks
567 # we can eliminate its usage altogether.
569 # Preferred compiler:
571 # ${cross_prefix}gcc (if cross-prefix specified)
573 if test -z "${CC}${cross_prefix}"; then
576 cc
="${CC-${cross_prefix}gcc}"
579 if test -z "${CXX}${cross_prefix}"; then
582 cxx
="${CXX-${cross_prefix}g++}"
585 ar="${AR-${cross_prefix}ar}"
586 as
="${AS-${cross_prefix}as}"
589 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
590 ld
="${LD-${cross_prefix}ld}"
591 ranlib
="${RANLIB-${cross_prefix}ranlib}"
592 nm
="${NM-${cross_prefix}nm}"
593 strip
="${STRIP-${cross_prefix}strip}"
594 windres
="${WINDRES-${cross_prefix}windres}"
595 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
597 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
599 pkg_config
=query_pkg_config
600 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
602 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
603 ARFLAGS
="${ARFLAGS-rv}"
605 # default flags for all hosts
606 # We use -fwrapv to tell the compiler that we require a C dialect where
607 # left shift of signed integers is well defined and has the expected
608 # 2s-complement style results. (Both clang and gcc agree that it
609 # provides these semantics.)
610 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv -std=gnu99 $QEMU_CFLAGS"
611 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
612 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
613 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
614 QEMU_INCLUDES
="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
615 QEMU_INCLUDES
="$QEMU_INCLUDES -iquote \$(SRC_PATH)/disas/libvixl"
616 if test "$debug_info" = "yes"; then
620 # running configure in the source tree?
621 # we know that's the case if configure is there.
622 if test -f "./configure"; then
623 pwd_is_source_path
="y"
625 pwd_is_source_path
="n"
631 #error $1 not defined
633 int main(void) { return 0; }
641 int main(void) { return 0; }
648 int main(void) { return 0; }
652 write_c_fuzzer_skeleton
() {
655 #include <sys/types.h>
656 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
657 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { return 0; }
661 if check_define __linux__
; then
663 elif check_define _WIN32
; then
665 elif check_define __OpenBSD__
; then
667 elif check_define __sun__
; then
669 elif check_define __HAIKU__
; then
671 elif check_define __FreeBSD__
; then
673 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
674 targetos
='GNU/kFreeBSD'
675 elif check_define __DragonFly__
; then
677 elif check_define __NetBSD__
; then
679 elif check_define __APPLE__
; then
682 # This is a fatal error, but don't report it yet, because we
683 # might be going to just print the --help text, or it might
684 # be the result of a missing compiler.
689 # Some host OSes need non-standard checks for which CPU to use.
690 # Note that these checks are broken for cross-compilation: if you're
691 # cross-compiling to one of these OSes then you'll need to specify
692 # the correct CPU with the --cpu option.
695 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
696 # run 64-bit userspace code.
697 # If the user didn't specify a CPU explicitly and the kernel says this is
698 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
699 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
704 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
705 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
710 if test ! -z "$cpu" ; then
711 # command line argument
713 elif check_define __i386__
; then
715 elif check_define __x86_64__
; then
716 if check_define __ILP32__
; then
721 elif check_define __sparc__
; then
722 if check_define __arch64__
; then
727 elif check_define _ARCH_PPC
; then
728 if check_define _ARCH_PPC64
; then
729 if check_define _LITTLE_ENDIAN
; then
737 elif check_define __mips__
; then
739 elif check_define __s390__
; then
740 if check_define __s390x__
; then
745 elif check_define __riscv
; then
746 if check_define _LP64
; then
751 elif check_define __arm__
; then
753 elif check_define __aarch64__
; then
760 # Normalise host CPU name and set ARCH.
761 # Note that this case should only have supported host CPUs, not guests.
763 ppc|ppc64|s390x|sparc64|x32|riscv32|riscv64
)
770 i386|i486|i586|i686|i86pc|BePC
)
795 # This will result in either an error or falling back to TCI later
799 if test -z "$ARCH"; then
805 # host *BSD for user mode
813 audio_possible_drivers
="dsound sdl"
814 if check_include dsound.h
; then
815 audio_drv_list
="dsound"
824 audio_drv_list
="oss try-sdl"
825 audio_possible_drivers
="oss sdl pa"
830 audio_drv_list
="oss try-sdl"
831 audio_possible_drivers
="oss sdl pa"
832 # needed for kinfo_getvmmap(3) in libutil.h
834 # needed for kinfo_getproc
835 libs_qga
="-lutil $libs_qga"
836 netmap
="" # enable netmap autodetect
837 HOST_VARIANT_DIR
="freebsd"
843 audio_drv_list
="oss try-sdl"
844 audio_possible_drivers
="oss sdl pa"
845 HOST_VARIANT_DIR
="dragonfly"
851 audio_drv_list
="oss try-sdl"
852 audio_possible_drivers
="oss sdl"
854 HOST_VARIANT_DIR
="netbsd"
860 audio_drv_list
="try-sdl"
861 audio_possible_drivers
="sdl"
862 HOST_VARIANT_DIR
="openbsd"
870 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
871 if [ "$cpu" = "x86_64" ] ; then
872 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
873 QEMU_LDFLAGS
="-arch x86_64 $QEMU_LDFLAGS"
876 audio_drv_list
="coreaudio try-sdl"
877 audio_possible_drivers
="coreaudio sdl"
878 QEMU_LDFLAGS
="-framework CoreFoundation -framework IOKit $QEMU_LDFLAGS"
879 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
880 # Disable attempts to use ObjectiveC features in os/object.h since they
881 # won't work when we're compiling with gcc as a C compiler.
882 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
883 HOST_VARIANT_DIR
="darwin"
889 install="${INSTALL-ginstall}"
890 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
891 if test -f /usr
/include
/sys
/soundcard.h
; then
892 audio_drv_list
="oss try-sdl"
894 audio_possible_drivers
="oss sdl"
895 # needed for CMSG_ macros in sys/socket.h
896 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
897 # needed for TIOCWIN* defines in termios.h
898 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
899 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
900 solarisnetlibs
="-lsocket -lnsl -lresolv"
901 LIBS
="$solarisnetlibs $LIBS"
902 libs_qga
="$solarisnetlibs $libs_qga"
906 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS -DBSD_SOURCE $QEMU_CFLAGS"
907 LIBS
="-lposix_error_mapper -lnetwork -lbsd $LIBS"
910 audio_drv_list
="try-pa oss"
911 audio_possible_drivers
="oss alsa sdl pa"
915 QEMU_INCLUDES
="-isystem \$(SRC_PATH)/linux-headers -isystem $PWD/linux-headers $QEMU_INCLUDES"
921 if [ "$bsd" = "yes" ] ; then
922 if [ "$darwin" != "yes" ] ; then
927 : ${make=${MAKE-make}}
928 : ${install=${INSTALL-install}}
929 # We prefer python 3.x. A bare 'python' is traditionally
930 # python 2.x, but some distros have it as python 3.x, so
933 for binary
in "${PYTHON-python3}" python
937 python
=$
(command -v "$binary")
943 for binary
in sphinx-build-3 sphinx-build
947 sphinx_build
=$
(command -v "$binary")
952 # Check for ancillary tools used in testing
954 for binary
in genisoimage mkisofs
958 genisoimage
=$
(command -v "$binary")
963 # Check for existence of python3 yaml, needed to
964 # import yaml config files into vm-build.
966 if $
(python3
-c "import yaml" 2> /dev
/null
); then
970 : ${smbd=${SMBD-/usr/sbin/smbd}}
972 # Default objcc to clang if available, otherwise use CC
979 if test "$mingw32" = "yes" ; then
982 # MinGW needs -mthreads for TLS and macro _MT.
983 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
984 LIBS
="-lwinmm -lws2_32 $LIBS"
986 if compile_prog
"" "-liberty" ; then
987 LIBS
="-liberty $LIBS"
989 prefix
="c:/Program Files/QEMU"
992 qemu_docdir
="\${prefix}"
994 sysconfdir
="\${prefix}"
997 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
1003 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
1005 --help|
-h) show_help
=yes
1007 --version|
-V) exec cat $source_path/VERSION
1009 --prefix=*) prefix
="$optarg"
1011 --interp-prefix=*) interp_prefix
="$optarg"
1017 --host-cc=*) host_cc
="$optarg"
1021 --iasl=*) iasl
="$optarg"
1023 --objcc=*) objcc
="$optarg"
1025 --make=*) make="$optarg"
1027 --install=*) install="$optarg"
1029 --python=*) python
="$optarg"
1031 --sphinx-build=*) sphinx_build
="$optarg"
1033 --gcov=*) gcov_tool
="$optarg"
1035 --smbd=*) smbd
="$optarg"
1043 --enable-debug-info)
1045 --disable-debug-info)
1055 --disable-module-upgrades) module_upgrades
="no"
1057 --enable-module-upgrades) module_upgrades
="yes"
1061 --target-list=*) target_list
="$optarg"
1062 if test "$target_list_exclude"; then
1063 error_exit
"Can't mix --target-list with --target-list-exclude"
1066 --target-list-exclude=*) target_list_exclude
="$optarg"
1067 if test "$target_list"; then
1068 error_exit
"Can't mix --target-list-exclude with --target-list"
1071 --enable-trace-backends=*) trace_backends
="$optarg"
1073 # XXX: backwards compatibility
1074 --enable-trace-backend=*) trace_backends
="$optarg"
1076 --with-trace-file=*) trace_file
="$optarg"
1078 --with-default-devices) default_devices
="yes"
1080 --without-default-devices) default_devices
="no"
1082 --enable-gprof) gprof
="yes"
1084 --enable-gcov) gcov
="yes"
1088 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
1090 --mandir=*) mandir
="$optarg"
1092 --bindir=*) bindir
="$optarg"
1094 --libdir=*) libdir
="$optarg"
1096 --libexecdir=*) libexecdir
="$optarg"
1098 --includedir=*) includedir
="$optarg"
1100 --datadir=*) datadir
="$optarg"
1102 --with-confsuffix=*) confsuffix
="$optarg"
1104 --docdir=*) qemu_docdir
="$optarg"
1106 --sysconfdir=*) sysconfdir
="$optarg"
1108 --localstatedir=*) local_statedir
="$optarg"
1110 --firmwarepath=*) firmwarepath
="$optarg"
1112 --efi-aarch64=*) efi_aarch64
="$optarg"
1114 --host=*|
--build=*|\
1115 --disable-dependency-tracking|\
1116 --sbindir=*|
--sharedstatedir=*|\
1117 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
1118 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
1119 # These switches are silently ignored, for compatibility with
1120 # autoconf-generated configure scripts. This allows QEMU's
1121 # configure to be used by RPM and similar macros that set
1122 # lots of directory switches by default.
1124 --disable-sdl) sdl
="no"
1126 --enable-sdl) sdl
="yes"
1128 --disable-sdl-image) sdl_image
="no"
1130 --enable-sdl-image) sdl_image
="yes"
1132 --disable-qom-cast-debug) qom_cast_debug
="no"
1134 --enable-qom-cast-debug) qom_cast_debug
="yes"
1136 --disable-virtfs) virtfs
="no"
1138 --enable-virtfs) virtfs
="yes"
1140 --disable-mpath) mpath
="no"
1142 --enable-mpath) mpath
="yes"
1144 --disable-vnc) vnc
="no"
1146 --enable-vnc) vnc
="yes"
1148 --oss-lib=*) oss_lib
="$optarg"
1150 --audio-drv-list=*) audio_drv_list
="$optarg"
1152 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1154 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1156 --enable-debug-tcg) debug_tcg
="yes"
1158 --disable-debug-tcg) debug_tcg
="no"
1161 # Enable debugging options that aren't excessively noisy
1168 --enable-sanitizers) sanitizers
="yes"
1170 --disable-sanitizers) sanitizers
="no"
1172 --enable-tsan) tsan
="yes"
1174 --disable-tsan) tsan
="no"
1176 --enable-sparse) sparse
="yes"
1178 --disable-sparse) sparse
="no"
1180 --disable-strip) strip_opt
="no"
1182 --disable-vnc-sasl) vnc_sasl
="no"
1184 --enable-vnc-sasl) vnc_sasl
="yes"
1186 --disable-vnc-jpeg) vnc_jpeg
="no"
1188 --enable-vnc-jpeg) vnc_jpeg
="yes"
1190 --disable-vnc-png) vnc_png
="no"
1192 --enable-vnc-png) vnc_png
="yes"
1194 --disable-slirp) slirp
="no"
1196 --enable-slirp=git
) slirp
="git"
1198 --enable-slirp=system
) slirp
="system"
1200 --disable-vde) vde
="no"
1202 --enable-vde) vde
="yes"
1204 --disable-netmap) netmap
="no"
1206 --enable-netmap) netmap
="yes"
1208 --disable-xen) xen
="no"
1210 --enable-xen) xen
="yes"
1212 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1214 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1216 --disable-brlapi) brlapi
="no"
1218 --enable-brlapi) brlapi
="yes"
1220 --disable-kvm) kvm
="no"
1222 --enable-kvm) kvm
="yes"
1224 --disable-hax) hax
="no"
1226 --enable-hax) hax
="yes"
1228 --disable-hvf) hvf
="no"
1230 --enable-hvf) hvf
="yes"
1232 --disable-whpx) whpx
="no"
1234 --enable-whpx) whpx
="yes"
1236 --disable-tcg-interpreter) tcg_interpreter
="no"
1238 --enable-tcg-interpreter) tcg_interpreter
="yes"
1240 --disable-cap-ng) cap_ng
="no"
1242 --enable-cap-ng) cap_ng
="yes"
1244 --disable-tcg) tcg
="no"
1246 --enable-tcg) tcg
="yes"
1248 --disable-malloc-trim) malloc_trim
="no"
1250 --enable-malloc-trim) malloc_trim
="yes"
1252 --disable-spice) spice
="no"
1254 --enable-spice) spice
="yes"
1256 --disable-libiscsi) libiscsi
="no"
1258 --enable-libiscsi) libiscsi
="yes"
1260 --disable-libnfs) libnfs
="no"
1262 --enable-libnfs) libnfs
="yes"
1264 --enable-profiler) profiler
="yes"
1266 --disable-cocoa) cocoa
="no"
1270 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1272 --disable-system) softmmu
="no"
1274 --enable-system) softmmu
="yes"
1281 --disable-linux-user) linux_user
="no"
1283 --enable-linux-user) linux_user
="yes"
1285 --disable-bsd-user) bsd_user
="no"
1287 --enable-bsd-user) bsd_user
="yes"
1289 --enable-pie) pie
="yes"
1291 --disable-pie) pie
="no"
1293 --enable-werror) werror
="yes"
1295 --disable-werror) werror
="no"
1297 --enable-stack-protector) stack_protector
="yes"
1299 --disable-stack-protector) stack_protector
="no"
1301 --enable-safe-stack) safe_stack
="yes"
1303 --disable-safe-stack) safe_stack
="no"
1305 --disable-curses) curses
="no"
1307 --enable-curses) curses
="yes"
1309 --disable-iconv) iconv="no"
1311 --enable-iconv) iconv="yes"
1313 --disable-curl) curl
="no"
1315 --enable-curl) curl
="yes"
1317 --disable-fdt) fdt
="no"
1319 --enable-fdt) fdt
="yes"
1321 --disable-linux-aio) linux_aio
="no"
1323 --enable-linux-aio) linux_aio
="yes"
1325 --disable-linux-io-uring) linux_io_uring
="no"
1327 --enable-linux-io-uring) linux_io_uring
="yes"
1329 --disable-attr) attr
="no"
1331 --enable-attr) attr
="yes"
1333 --disable-membarrier) membarrier
="no"
1335 --enable-membarrier) membarrier
="yes"
1337 --disable-blobs) blobs
="no"
1339 --with-pkgversion=*) pkgversion
="$optarg"
1341 --with-coroutine=*) coroutine
="$optarg"
1343 --disable-coroutine-pool) coroutine_pool
="no"
1345 --enable-coroutine-pool) coroutine_pool
="yes"
1347 --enable-debug-stack-usage) debug_stack_usage
="yes"
1349 --enable-crypto-afalg) crypto_afalg
="yes"
1351 --disable-crypto-afalg) crypto_afalg
="no"
1353 --disable-docs) docs
="no"
1355 --enable-docs) docs
="yes"
1357 --disable-vhost-net) vhost_net
="no"
1359 --enable-vhost-net) vhost_net
="yes"
1361 --disable-vhost-crypto) vhost_crypto
="no"
1363 --enable-vhost-crypto) vhost_crypto
="yes"
1365 --disable-vhost-scsi) vhost_scsi
="no"
1367 --enable-vhost-scsi) vhost_scsi
="yes"
1369 --disable-vhost-vsock) vhost_vsock
="no"
1371 --enable-vhost-vsock) vhost_vsock
="yes"
1373 --disable-vhost-user-fs) vhost_user_fs
="no"
1375 --enable-vhost-user-fs) vhost_user_fs
="yes"
1377 --disable-opengl) opengl
="no"
1379 --enable-opengl) opengl
="yes"
1381 --disable-rbd) rbd
="no"
1383 --enable-rbd) rbd
="yes"
1385 --disable-xfsctl) xfs
="no"
1387 --enable-xfsctl) xfs
="yes"
1389 --disable-smartcard) smartcard
="no"
1391 --enable-smartcard) smartcard
="yes"
1393 --disable-libusb) libusb
="no"
1395 --enable-libusb) libusb
="yes"
1397 --disable-usb-redir) usb_redir
="no"
1399 --enable-usb-redir) usb_redir
="yes"
1401 --disable-zlib-test) zlib
="no"
1403 --disable-lzo) lzo
="no"
1405 --enable-lzo) lzo
="yes"
1407 --disable-snappy) snappy
="no"
1409 --enable-snappy) snappy
="yes"
1411 --disable-bzip2) bzip2="no"
1413 --enable-bzip2) bzip2="yes"
1415 --enable-lzfse) lzfse
="yes"
1417 --disable-lzfse) lzfse
="no"
1419 --disable-zstd) zstd
="no"
1421 --enable-zstd) zstd
="yes"
1423 --enable-guest-agent) guest_agent
="yes"
1425 --disable-guest-agent) guest_agent
="no"
1427 --enable-guest-agent-msi) guest_agent_msi
="yes"
1429 --disable-guest-agent-msi) guest_agent_msi
="no"
1431 --with-vss-sdk) vss_win32_sdk
=""
1433 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1435 --without-vss-sdk) vss_win32_sdk
="no"
1437 --with-win-sdk) win_sdk
=""
1439 --with-win-sdk=*) win_sdk
="$optarg"
1441 --without-win-sdk) win_sdk
="no"
1443 --enable-tools) want_tools
="yes"
1445 --disable-tools) want_tools
="no"
1447 --enable-seccomp) seccomp
="yes"
1449 --disable-seccomp) seccomp
="no"
1451 --disable-glusterfs) glusterfs
="no"
1453 --disable-avx2) avx2_opt
="no"
1455 --enable-avx2) avx2_opt
="yes"
1457 --disable-avx512f) avx512f_opt
="no"
1459 --enable-avx512f) avx512f_opt
="yes"
1462 --enable-glusterfs) glusterfs
="yes"
1464 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1465 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1467 --enable-vhdx|
--disable-vhdx)
1468 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1470 --enable-uuid|
--disable-uuid)
1471 echo "$0: $opt is obsolete, UUID support is always built" >&2
1473 --disable-gtk) gtk
="no"
1475 --enable-gtk) gtk
="yes"
1477 --tls-priority=*) tls_priority
="$optarg"
1479 --disable-gnutls) gnutls
="no"
1481 --enable-gnutls) gnutls
="yes"
1483 --disable-nettle) nettle
="no"
1485 --enable-nettle) nettle
="yes"
1487 --disable-gcrypt) gcrypt
="no"
1489 --enable-gcrypt) gcrypt
="yes"
1491 --disable-auth-pam) auth_pam
="no"
1493 --enable-auth-pam) auth_pam
="yes"
1495 --enable-rdma) rdma
="yes"
1497 --disable-rdma) rdma
="no"
1499 --enable-pvrdma) pvrdma
="yes"
1501 --disable-pvrdma) pvrdma
="no"
1503 --disable-vte) vte
="no"
1505 --enable-vte) vte
="yes"
1507 --disable-virglrenderer) virglrenderer
="no"
1509 --enable-virglrenderer) virglrenderer
="yes"
1511 --disable-tpm) tpm
="no"
1513 --enable-tpm) tpm
="yes"
1515 --disable-libssh) libssh
="no"
1517 --enable-libssh) libssh
="yes"
1519 --disable-live-block-migration) live_block_migration
="no"
1521 --enable-live-block-migration) live_block_migration
="yes"
1523 --disable-numa) numa
="no"
1525 --enable-numa) numa
="yes"
1527 --disable-libxml2) libxml2
="no"
1529 --enable-libxml2) libxml2
="yes"
1531 --disable-tcmalloc) tcmalloc
="no"
1533 --enable-tcmalloc) tcmalloc
="yes"
1535 --disable-jemalloc) jemalloc
="no"
1537 --enable-jemalloc) jemalloc
="yes"
1539 --disable-replication) replication
="no"
1541 --enable-replication) replication
="yes"
1543 --disable-bochs) bochs
="no"
1545 --enable-bochs) bochs
="yes"
1547 --disable-cloop) cloop
="no"
1549 --enable-cloop) cloop
="yes"
1551 --disable-dmg) dmg
="no"
1553 --enable-dmg) dmg
="yes"
1555 --disable-qcow1) qcow1
="no"
1557 --enable-qcow1) qcow1
="yes"
1559 --disable-vdi) vdi
="no"
1561 --enable-vdi) vdi
="yes"
1563 --disable-vvfat) vvfat
="no"
1565 --enable-vvfat) vvfat
="yes"
1567 --disable-qed) qed
="no"
1569 --enable-qed) qed
="yes"
1571 --disable-parallels) parallels
="no"
1573 --enable-parallels) parallels
="yes"
1575 --disable-sheepdog) sheepdog
="no"
1577 --enable-sheepdog) sheepdog
="yes"
1579 --disable-vhost-user) vhost_user
="no"
1581 --enable-vhost-user) vhost_user
="yes"
1583 --disable-vhost-vdpa) vhost_vdpa
="no"
1585 --enable-vhost-vdpa) vhost_vdpa
="yes"
1587 --disable-vhost-kernel) vhost_kernel
="no"
1589 --enable-vhost-kernel) vhost_kernel
="yes"
1591 --disable-capstone) capstone
="no"
1593 --enable-capstone) capstone
="yes"
1595 --enable-capstone=git
) capstone
="git"
1597 --enable-capstone=system
) capstone
="system"
1599 --with-git=*) git
="$optarg"
1601 --enable-git-update) git_update
=yes
1603 --disable-git-update) git_update
=no
1605 --enable-debug-mutex) debug_mutex
=yes
1607 --disable-debug-mutex) debug_mutex
=no
1609 --enable-libpmem) libpmem
=yes
1611 --disable-libpmem) libpmem
=no
1613 --enable-xkbcommon) xkbcommon
=yes
1615 --disable-xkbcommon) xkbcommon
=no
1617 --enable-plugins) plugins
="yes"
1619 --disable-plugins) plugins
="no"
1621 --enable-containers) use_containers
="yes"
1623 --disable-containers) use_containers
="no"
1625 --enable-fuzzing) fuzzing
=yes
1627 --disable-fuzzing) fuzzing
=no
1629 --gdb=*) gdb_bin
="$optarg"
1631 --enable-rng-none) rng_none
=yes
1633 --disable-rng-none) rng_none
=no
1635 --enable-keyring) secret_keyring
="yes"
1637 --disable-keyring) secret_keyring
="no"
1639 --enable-libdaxctl) libdaxctl
=yes
1641 --disable-libdaxctl) libdaxctl
=no
1644 echo "ERROR: unknown option $opt"
1645 echo "Try '$0 --help' for more information"
1654 QEMU_LDFLAGS
="-m32 $QEMU_LDFLAGS"
1658 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1661 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1662 QEMU_LDFLAGS
="-m32 -mv8plus $QEMU_LDFLAGS"
1665 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1666 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1670 QEMU_LDFLAGS
="-m31 $QEMU_LDFLAGS"
1674 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1678 QEMU_LDFLAGS
="-m32 $QEMU_LDFLAGS"
1681 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1682 # If we truly care, we should simply detect this case at
1683 # runtime and generate the fallback to serial emulation.
1684 CPU_CFLAGS
="-m64 -mcx16"
1685 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1689 QEMU_LDFLAGS
="-mx32 $QEMU_LDFLAGS"
1691 # No special flags required for other host CPUs
1694 eval "cross_cc_${cpu}=\$host_cc"
1695 cross_cc_vars
="$cross_cc_vars cross_cc_${cpu}"
1696 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1698 # For user-mode emulation the host arch has to be one we explicitly
1699 # support, even if we're using TCI.
1700 if [ "$ARCH" = "unknown" ]; then
1705 if [ "$bsd_user" = "no" -a "$linux_user" = "no" -a "$softmmu" = "no" ] ; then
1709 default_target_list
=""
1713 if [ "$softmmu" = "yes" ]; then
1714 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1716 if [ "$linux_user" = "yes" ]; then
1717 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1719 if [ "$bsd_user" = "yes" ]; then
1720 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1723 if test -z "$target_list_exclude"; then
1724 for config
in $mak_wilds; do
1725 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1728 exclude_list
=$
(echo "$target_list_exclude" |
sed -e 's/,/ /g')
1729 for config
in $mak_wilds; do
1730 target
="$(basename "$config" .mak)"
1732 for excl
in $exclude_list; do
1733 if test "$excl" = "$target"; then
1738 if test "$exclude" = "no"; then
1739 default_target_list
="${default_target_list} $target"
1744 # Enumerate public trace backends for --help output
1745 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1747 if test x
"$show_help" = x
"yes" ; then
1750 Usage: configure [options]
1751 Options: [defaults in brackets after descriptions]
1754 --help print this message
1755 --prefix=PREFIX install in PREFIX [$prefix]
1756 --interp-prefix=PREFIX where to find shared libraries, etc.
1757 use %M for cpu name [$interp_prefix]
1758 --target-list=LIST set target list (default: build everything)
1759 $(echo Available targets: $default_target_list | \
1760 fold -s -w 53 | sed -e 's/^/ /')
1761 --target-list-exclude=LIST exclude a set of targets from the default target-list
1763 Advanced options (experts only):
1764 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1765 --cc=CC use C compiler CC [$cc]
1766 --iasl=IASL use ACPI compiler IASL [$iasl]
1767 --host-cc=CC use C compiler CC [$host_cc] for code run at
1769 --cxx=CXX use C++ compiler CXX [$cxx]
1770 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1771 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1772 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1773 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1774 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1775 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1776 --make=MAKE use specified make [$make]
1777 --install=INSTALL use specified install [$install]
1778 --python=PYTHON use specified python [$python]
1779 --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build]
1780 --smbd=SMBD use specified smbd [$smbd]
1781 --with-git=GIT use specified git [$git]
1782 --static enable static build [$static]
1783 --mandir=PATH install man pages in PATH
1784 --datadir=PATH install firmware in PATH$confsuffix
1785 --docdir=PATH install documentation in PATH$confsuffix
1786 --bindir=PATH install binaries in PATH
1787 --libdir=PATH install libraries in PATH
1788 --libexecdir=PATH install helper binaries in PATH
1789 --sysconfdir=PATH install config in PATH$confsuffix
1790 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1791 --firmwarepath=PATH search PATH for firmware files
1792 --efi-aarch64=PATH PATH of efi file to use for aarch64 VMs.
1793 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1794 --with-pkgversion=VERS use specified string as sub-version of the package
1795 --enable-debug enable common debug build options
1796 --enable-sanitizers enable default sanitizers
1797 --enable-tsan enable thread sanitizer
1798 --disable-strip disable stripping binaries
1799 --disable-werror disable compilation abort on warning
1800 --disable-stack-protector disable compiler-provided stack protection
1801 --audio-drv-list=LIST set audio drivers list:
1802 Available drivers: $audio_possible_drivers
1803 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1804 --block-drv-rw-whitelist=L
1805 set block driver read-write whitelist
1806 (affects only QEMU, not qemu-img)
1807 --block-drv-ro-whitelist=L
1808 set block driver read-only whitelist
1809 (affects only QEMU, not qemu-img)
1810 --enable-trace-backends=B Set trace backend
1811 Available backends: $trace_backend_list
1812 --with-trace-file=NAME Full PATH,NAME of file to store traces
1814 --disable-slirp disable SLIRP userspace network connectivity
1815 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1816 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1817 --oss-lib path to OSS library
1818 --cpu=CPU Build for host CPU [$cpu]
1819 --with-coroutine=BACKEND coroutine backend. Supported options:
1820 ucontext, sigaltstack, windows
1821 --enable-gcov enable test coverage analysis with gcov
1822 --gcov=GCOV use specified gcov [$gcov_tool]
1823 --disable-blobs disable installing provided firmware blobs
1824 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1825 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1826 --tls-priority default TLS protocol/cipher priority string
1827 --enable-gprof QEMU profiling with gprof
1828 --enable-profiler profiler support
1829 --enable-debug-stack-usage
1830 track the maximum stack usage of stacks created by qemu_alloc_stack
1832 enable plugins via shared library loading
1833 --disable-containers don't use containers for cross-building
1834 --gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
1836 Optional features, enabled with --enable-FEATURE and
1837 disabled with --disable-FEATURE, default is enabled if available:
1839 system all system emulation targets
1840 user supported user emulation targets
1841 linux-user all linux usermode emulation targets
1842 bsd-user all BSD usermode emulation targets
1843 docs build documentation
1844 guest-agent build the QEMU Guest Agent
1845 guest-agent-msi build guest agent Windows MSI installation package
1846 pie Position Independent Executables
1847 modules modules support (non-Windows)
1848 module-upgrades try to load modules from alternate paths for upgrades
1849 debug-tcg TCG debugging (default is disabled)
1850 debug-info debugging information
1851 sparse sparse checker
1852 safe-stack SafeStack Stack Smash Protection. Depends on
1853 clang/llvm >= 3.7 and requires coroutine backend ucontext.
1855 gnutls GNUTLS cryptography support
1856 nettle nettle cryptography support
1857 gcrypt libgcrypt cryptography support
1858 auth-pam PAM access control
1860 sdl-image SDL Image support for icons
1862 vte vte support for the gtk UI
1864 iconv font glyph conversion support
1866 vnc-sasl SASL encryption for VNC server
1867 vnc-jpeg JPEG lossy compression for VNC server
1868 vnc-png PNG compression for VNC server
1869 cocoa Cocoa UI (Mac OS X only)
1871 mpath Multipath persistent reservation passthrough
1872 xen xen backend driver support
1873 xen-pci-passthrough PCI passthrough support for Xen
1874 brlapi BrlAPI (Braile)
1875 curl curl connectivity
1876 membarrier membarrier system call (for Linux 4.14+ or Windows)
1878 kvm KVM acceleration support
1879 hax HAX acceleration support
1880 hvf Hypervisor.framework acceleration support
1881 whpx Windows Hypervisor Platform acceleration support
1882 rdma Enable RDMA-based migration
1883 pvrdma Enable PVRDMA support
1884 vde support for vde network
1885 netmap support for netmap network
1886 linux-aio Linux AIO support
1887 linux-io-uring Linux io_uring support
1888 cap-ng libcap-ng support
1889 attr attr and xattr support
1890 vhost-net vhost-net kernel acceleration support
1891 vhost-vsock virtio sockets device support
1892 vhost-scsi vhost-scsi kernel target support
1893 vhost-crypto vhost-user-crypto backend support
1894 vhost-kernel vhost kernel backend support
1895 vhost-user vhost-user backend support
1896 vhost-vdpa vhost-vdpa kernel backend support
1898 rbd rados block device (rbd)
1899 libiscsi iscsi support
1901 smartcard smartcard support (libcacard)
1902 libusb libusb (for usb passthrough)
1903 live-block-migration Block migration in the main migration stream
1904 usb-redir usb network redirection support
1905 lzo support of lzo compression library
1906 snappy support of snappy compression library
1907 bzip2 support of bzip2 compression library
1908 (for reading bzip2-compressed dmg images)
1909 lzfse support of lzfse compression library
1910 (for reading lzfse-compressed dmg images)
1911 zstd support for zstd compression library
1912 (for migration compression and qcow2 cluster compression)
1913 seccomp seccomp support
1914 coroutine-pool coroutine freelist (better performance)
1915 glusterfs GlusterFS backend
1917 libssh ssh block device support
1918 numa libnuma support
1919 libxml2 for Parallels image format
1920 tcmalloc tcmalloc support
1921 jemalloc jemalloc support
1922 avx2 AVX2 optimization support
1923 avx512f AVX512F optimization support
1924 replication replication support
1925 opengl opengl support
1926 virglrenderer virgl rendering support
1927 xfsctl xfsctl support
1928 qom-cast-debug cast debugging support
1929 tools build qemu-io, qemu-nbd and qemu-img tools
1930 bochs bochs image format support
1931 cloop cloop image format support
1932 dmg dmg image format support
1933 qcow1 qcow v1 image format support
1934 vdi vdi image format support
1935 vvfat vvfat image format support
1936 qed qed image format support
1937 parallels parallels image format support
1938 sheepdog sheepdog block driver support
1939 crypto-afalg Linux AF_ALG crypto backend driver
1940 capstone capstone disassembler support
1941 debug-mutex mutex debugging support
1942 libpmem libpmem support
1943 xkbcommon xkbcommon support
1944 rng-none dummy RNG, avoid using /dev/(u)random and getrandom()
1945 libdaxctl libdaxctl support
1947 NOTE: The object files are built at the place where configure is launched
1952 # Remove old dependency files to make sure that they get properly regenerated
1953 rm -f */config-devices.mak.d
1955 # Remove syscall_nr.h to be sure they will be regenerated in the build
1956 # directory, not in the source directory
1957 for arch
in alpha hppa m68k xtensa sh4 microblaze arm ppc s390x sparc sparc64 \
1958 i386 x86_64 mips mips64
; do
1959 # remove the file if it has been generated in the source directory
1960 rm -f "${source_path}/linux-user/${arch}/syscall_nr.h"
1961 # remove the dependency files
1962 for target
in ${arch}*-linux-user ; do
1963 test -d "${target}" && find "${target}" -type f
-name "*.d" \
1964 -exec grep -q "${source_path}/linux-user/${arch}/syscall_nr.h" {} \; \
1965 -print | while read file ; do rm "${file}" "${file%.d}.o
" ; done
1969 if test -z "$python"
1971 error_exit "Python not found. Use
--python=/path
/to
/python
"
1974 # Note that if the Python conditional here evaluates True we will exit
1975 # with status 1 which is a shell 'false' value.
1976 if ! $python -c 'import sys; sys.exit(sys.version_info < (3,5))'; then
1977 error_exit "Cannot use
'$python', Python
>= 3.5 is required.
" \
1978 "Use
--python=/path
/to
/python to specify a supported Python.
"
1981 # Preserve python version since some functionality is dependent on it
1982 python_version=$($python -c 'import sys; print("%d.
%d.
%d
" % (sys.version_info[0], sys.version_info[1], sys.version_info[2]))' 2>/dev/null)
1984 # Suppress writing compiled files
1987 # Check that the C compiler works. Doing this here before testing
1988 # the host CPU ensures that we had a valid CC to autodetect the
1989 # $cpu var (and we should bail right here if that's not the case).
1990 # It also allows the help message to be printed without a CC.
1992 if compile_object ; then
1993 : C compiler works ok
1995 error_exit "\"$cc\" either does not exist or does not work
"
1997 if ! compile_prog ; then
1998 error_exit "\"$cc\" cannot build an executable
(is your linker broken?
)"
2001 # Now we have handled --enable-tcg-interpreter and know we're not just
2002 # printing the help message, bail out if the host CPU isn't supported.
2003 if test "$ARCH" = "unknown
"; then
2004 if test "$tcg_interpreter" = "yes" ; then
2005 echo "Unsupported CPU
= $cpu, will use TCG with TCI
(experimental
)"
2007 error_exit "Unsupported CPU
= $cpu, try
--enable-tcg-interpreter"
2011 # Consult white-list to determine whether to enable werror
2012 # by default. Only enable by default for git builds
2013 if test -z "$werror" ; then
2014 if test -e "$source_path/.git
" && \
2015 { test "$linux" = "yes" || test "$mingw32" = "yes"; }; then
2022 if test "$bogus_os" = "yes"; then
2023 # Now that we know that we're not printing the help and that
2024 # the compiler works (so the results of the check_defines we used
2025 # to identify the OS are reliable), if we didn't recognize the
2026 # host OS we should stop now.
2027 error_exit "Unrecognized
host OS
(uname
-s reports
'$(uname -s)')"
2030 # Check whether the compiler matches our minimum requirements:
2032 #if defined(__clang_major__) && defined(__clang_minor__)
2033 # ifdef __apple_build_version__
2034 # if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1)
2035 # error You need at least XCode Clang v5.1 to compile QEMU
2038 # if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
2039 # error You need at least Clang v3.4 to compile QEMU
2042 #elif defined(__GNUC__) && defined(__GNUC_MINOR__)
2043 # if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
2044 # error You need at least GCC v4.8 to compile QEMU
2047 # error You either need GCC or Clang to compiler QEMU
2049 int main (void) { return 0; }
2051 if ! compile_prog "" "" ; then
2052 error_exit "You need
at least GCC v4.8 or Clang v3.4
(or XCode Clang v5.1
)"
2055 # Accumulate -Wfoo and -Wno-bar separately.
2056 # We will list all of the enable flags first, and the disable flags second.
2057 # Note that we do not add -Werror, because that would enable it for all
2058 # configure tests. If a configure test failed due to -Werror this would
2059 # just silently disable some features, so it's too error prone.
2062 add_to warn_flags -Wold-style-declaration
2063 add_to warn_flags -Wold-style-definition
2064 add_to warn_flags -Wtype-limits
2065 add_to warn_flags -Wformat-security
2066 add_to warn_flags -Wformat-y2k
2067 add_to warn_flags -Winit-self
2068 add_to warn_flags -Wignored-qualifiers
2069 add_to warn_flags -Wempty-body
2070 add_to warn_flags -Wnested-externs
2071 add_to warn_flags -Wendif-labels
2072 add_to warn_flags -Wexpansion-to-defined
2075 add_to nowarn_flags -Wno-initializer-overrides
2076 add_to nowarn_flags -Wno-missing-include-dirs
2077 add_to nowarn_flags -Wno-shift-negative-value
2078 add_to nowarn_flags -Wno-string-plus-int
2079 add_to nowarn_flags -Wno-typedef-redefinition
2080 add_to nowarn_flags -Wno-tautological-type-limit-compare
2081 add_to nowarn_flags -Wno-psabi
2083 gcc_flags="$warn_flags $nowarn_flags"
2085 cc_has_warning_flag() {
2088 # Use the positive sense of the flag when testing for -Wno-wombat
2089 # support (gcc will happily accept the -Wno- form of unknown
2091 optflag="$
(echo $1 |
sed -e 's/^-Wno-/-W/')"
2092 compile_prog "-Werror $optflag" ""
2095 for flag in $gcc_flags; do
2096 if cc_has_warning_flag $flag ; then
2097 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
2101 if test "$stack_protector" != "no
"; then
2103 int main(int argc, char *argv[])
2105 char arr[64], *p = arr, *c = argv[0];
2112 gcc_flags="-fstack-protector-strong -fstack-protector-all"
2114 for flag in $gcc_flags; do
2115 # We need to check both a compile and a link, since some compiler
2116 # setups fail only on a .c->.o compile and some only at link time
2117 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
2118 compile_prog "-Werror $flag" ""; then
2119 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
2120 QEMU_LDFLAGS="$QEMU_LDFLAGS $flag"
2125 if test "$stack_protector" = yes; then
2126 if test $sp_on = 0; then
2127 error_exit "Stack protector not supported
"
2132 # Disable -Wmissing-braces on older compilers that warn even for
2133 # the "universal
" C zero initializer {0}.
2139 if compile_object "-Werror" "" ; then
2142 QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces"
2145 # Our module code doesn't support Windows
2146 if test "$modules" = "yes" && test "$mingw32" = "yes" ; then
2147 error_exit "Modules are not available
for Windows
"
2150 # module_upgrades is only reasonable if modules are enabled
2151 if test "$modules" = "no
" && test "$module_upgrades" = "yes" ; then
2152 error_exit "Can
't enable module-upgrades as Modules are not enabled"
2155 # Static linking is not possible with modules or PIE
2156 if test "$static" = "yes" ; then
2157 if test "$modules" = "yes" ; then
2158 error_exit "static and modules are mutually incompatible"
2162 # Unconditional check for compiler __thread support
2164 static __thread int tls_var;
2165 int main(void) { return tls_var; }
2168 if ! compile_prog "-Werror" "" ; then
2169 error_exit "Your compiler does not support the __thread specifier for " \
2170 "Thread-Local Storage (TLS). Please upgrade to a version that does."
2176 # define THREAD __thread
2180 static THREAD int tls_var;
2181 int main(void) { return tls_var; }
2184 # Check we support --no-pie first; we will need this for building ROMs.
2185 if compile_prog "-Werror -fno-pie" "-no-pie"; then
2186 CFLAGS_NOPIE="-fno-pie"
2187 LDFLAGS_NOPIE="-no-pie"
2190 if test "$static" = "yes"; then
2191 if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then
2192 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
2193 QEMU_LDFLAGS="-static-pie $QEMU_LDFLAGS"
2195 elif test "$pie" = "yes"; then
2196 error_exit "-static-pie not available due to missing toolchain support"
2198 QEMU_LDFLAGS="-static $QEMU_LDFLAGS"
2201 elif test "$pie" = "no"; then
2202 QEMU_CFLAGS="$CFLAGS_NOPIE $QEMU_CFLAGS"
2203 QEMU_LDFLAGS="$LDFLAGS_NOPIE $QEMU_LDFLAGS"
2204 elif compile_prog "-Werror -fPIE -DPIE" "-pie"; then
2205 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
2206 QEMU_LDFLAGS="-pie $QEMU_LDFLAGS"
2208 elif test "$pie" = "yes"; then
2209 error_exit "PIE not available due to missing toolchain support"
2211 echo "Disabling PIE due to missing toolchain support"
2215 # Detect support for PT_GNU_RELRO + DT_BIND_NOW.
2216 # The combination is known as "full relro", because .got.plt is read-only too.
2217 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
2218 QEMU_LDFLAGS="-Wl,-z,relro -Wl,-z,now $QEMU_LDFLAGS"
2221 ##########################################
2222 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
2223 # use i686 as default anyway, but for those that don't
, an explicit
2224 # specification is necessary
2226 if test "$cpu" = "i386"; then
2228 static int sfaa(int *ptr)
2230 return __sync_fetch_and_and(ptr, 0);
2236 val = __sync_val_compare_and_swap(&val, 0, 1);
2241 if ! compile_prog
"" "" ; then
2242 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
2246 #########################################
2247 # Solaris specific configure tool chain decisions
2249 if test "$solaris" = "yes" ; then
2250 if has
$install; then
2253 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
2254 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
2255 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
2257 if test "$(path_of $install)" = "/usr/sbin/install" ; then
2258 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
2259 "try ginstall from the GNU fileutils available from www.blastwave.org" \
2260 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
2265 if test -f /usr
/ccs
/bin
/ar ; then
2266 error_exit
"No path includes ar" \
2267 "Add /usr/ccs/bin to your path and rerun configure"
2269 error_exit
"No path includes ar"
2273 if test -z "${target_list+xxx}" ; then
2274 for target
in $default_target_list; do
2275 supported_target
$target 2>/dev
/null
&& \
2276 target_list
="$target_list $target"
2278 target_list
="${target_list# }"
2280 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
2281 for target
in $target_list; do
2282 # Check that we recognised the target name; this allows a more
2283 # friendly error message than if we let it fall through.
2284 case " $default_target_list " in
2288 error_exit
"Unknown target name '$target'"
2291 supported_target
$target ||
exit 1
2295 # see if system emulation was really requested
2296 case " $target_list " in
2297 *"-softmmu "*) softmmu
=yes
2303 for target
in $target_list; do
2305 arm-softmmu | aarch64-softmmu | i386-softmmu | x86_64-softmmu
)
2310 # The EDK2 binaries are compressed with bzip2
2311 if test "$edk2_blobs" = "yes" && ! has
bzip2; then
2312 error_exit
"The bzip2 program is required for building QEMU"
2315 feature_not_found
() {
2319 error_exit
"User requested feature $feature" \
2320 "configure was not able to find it." \
2325 # big/little endian test
2327 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2328 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2329 extern int foo(short *, short *);
2330 int main(int argc, char *argv[]) {
2331 return foo(big_endian, little_endian);
2335 if compile_object
; then
2336 if strings -a $TMPO |
grep -q BiGeNdIaN
; then
2338 elif strings -a $TMPO |
grep -q LiTtLeEnDiAn
; then
2341 echo big
/little
test failed
2344 echo big
/little
test failed
2347 ##########################################
2349 if test -z "$want_tools"; then
2350 if test "$softmmu" = "no"; then
2357 ##########################################
2358 # cocoa implies not SDL or GTK
2359 # (the cocoa UI code currently assumes it is always the active UI
2360 # and doesn't interact well with other UI frontend code)
2361 if test "$cocoa" = "yes"; then
2362 if test "$sdl" = "yes"; then
2363 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
2365 if test "$gtk" = "yes"; then
2366 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
2372 # Some versions of Mac OS X incorrectly define SIZE_MAX
2376 int main(int argc, char *argv[]) {
2377 return printf("%zu", SIZE_MAX);
2380 have_broken_size_max
=no
2381 if ! compile_object
-Werror ; then
2382 have_broken_size_max
=yes
2385 ##########################################
2389 #include <sys/socket.h>
2390 #include <linux/ip.h>
2391 int main(void) { return sizeof(struct mmsghdr); }
2393 if compile_prog
"" "" ; then
2399 if check_include
"pty.h" ; then
2406 #include <sys/mman.h>
2407 int main(int argc, char *argv[]) {
2408 return mlockall(MCL_FUTURE);
2411 if compile_prog
"" "" ; then
2417 #########################################
2418 # vhost interdependencies and host support
2421 test "$vhost_user" = "" && vhost_user
=yes
2422 if test "$vhost_user" = "yes" && test "$mingw32" = "yes"; then
2423 error_exit
"vhost-user isn't available on win32"
2425 test "$vhost_vdpa" = "" && vhost_vdpa
=$linux
2426 if test "$vhost_vdpa" = "yes" && test "$linux" != "yes"; then
2427 error_exit
"vhost-vdpa is only available on Linux"
2429 test "$vhost_kernel" = "" && vhost_kernel
=$linux
2430 if test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then
2431 error_exit
"vhost-kernel is only available on Linux"
2434 # vhost-kernel devices
2435 test "$vhost_scsi" = "" && vhost_scsi
=$vhost_kernel
2436 if test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then
2437 error_exit
"--enable-vhost-scsi requires --enable-vhost-kernel"
2439 test "$vhost_vsock" = "" && vhost_vsock
=$vhost_kernel
2440 if test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then
2441 error_exit
"--enable-vhost-vsock requires --enable-vhost-kernel"
2444 # vhost-user backends
2445 test "$vhost_net_user" = "" && vhost_net_user
=$vhost_user
2446 if test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then
2447 error_exit
"--enable-vhost-net-user requires --enable-vhost-user"
2449 test "$vhost_crypto" = "" && vhost_crypto
=$vhost_user
2450 if test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then
2451 error_exit
"--enable-vhost-crypto requires --enable-vhost-user"
2453 test "$vhost_user_fs" = "" && vhost_user_fs
=$vhost_user
2454 if test "$vhost_user_fs" = "yes" && test "$vhost_user" = "no"; then
2455 error_exit
"--enable-vhost-user-fs requires --enable-vhost-user"
2457 #vhost-vdpa backends
2458 test "$vhost_net_vdpa" = "" && vhost_net_vdpa
=$vhost_vdpa
2459 if test "$vhost_net_vdpa" = "yes" && test "$vhost_vdpa" = "no"; then
2460 error_exit
"--enable-vhost-net-vdpa requires --enable-vhost-vdpa"
2463 # OR the vhost-kernel and vhost-user values for simplicity
2464 if test "$vhost_net" = ""; then
2465 test "$vhost_net_user" = "yes" && vhost_net
=yes
2466 test "$vhost_kernel" = "yes" && vhost_net
=yes
2469 ##########################################
2470 # MinGW / Mingw-w64 localtime_r/gmtime_r check
2472 if test "$mingw32" = "yes"; then
2473 # Some versions of MinGW / Mingw-w64 lack localtime_r
2474 # and gmtime_r entirely.
2476 # Some versions of Mingw-w64 define a macro for
2477 # localtime_r/gmtime_r.
2479 # Some versions of Mingw-w64 will define functions
2480 # for localtime_r/gmtime_r, but only if you have
2481 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2482 # though, unistd.h and pthread.h both define
2485 # So this #undef localtime_r and #include <unistd.h>
2486 # are not in fact redundant.
2491 int main(void) { localtime_r(NULL, NULL); return 0; }
2493 if compile_prog
"" "" ; then
2500 ##########################################
2503 if ! has
"$pkg_config_exe"; then
2504 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2507 ##########################################
2510 if test "$linux_user" = "yes"; then
2513 #include <linux/futex.h>
2515 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2521 if ! compile_object
; then
2522 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2526 ##########################################
2529 if test "$lzo" != "no" ; then
2531 #include <lzo/lzo1x.h>
2532 int main(void) { lzo_version(); return 0; }
2534 if compile_prog
"" "-llzo2" ; then
2535 libs_softmmu
="$libs_softmmu -llzo2"
2538 if test "$lzo" = "yes"; then
2539 feature_not_found
"liblzo2" "Install liblzo2 devel"
2545 ##########################################
2548 if test "$snappy" != "no" ; then
2550 #include <snappy-c.h>
2551 int main(void) { snappy_max_compressed_length(4096); return 0; }
2553 if compile_prog
"" "-lsnappy" ; then
2554 libs_softmmu
="$libs_softmmu -lsnappy"
2557 if test "$snappy" = "yes"; then
2558 feature_not_found
"libsnappy" "Install libsnappy devel"
2564 ##########################################
2567 if test "$bzip2" != "no" ; then
2570 int main(void) { BZ2_bzlibVersion(); return 0; }
2572 if compile_prog
"" "-lbz2" ; then
2575 if test "$bzip2" = "yes"; then
2576 feature_not_found
"libbzip2" "Install libbzip2 devel"
2582 ##########################################
2585 if test "$lzfse" != "no" ; then
2588 int main(void) { lzfse_decode_scratch_size(); return 0; }
2590 if compile_prog
"" "-llzfse" ; then
2593 if test "$lzfse" = "yes"; then
2594 feature_not_found
"lzfse" "Install lzfse devel"
2600 ##########################################
2603 if test "$zstd" != "no" ; then
2604 libzstd_minver
="1.4.0"
2605 if $pkg_config --atleast-version=$libzstd_minver libzstd
; then
2606 zstd_cflags
="$($pkg_config --cflags libzstd)"
2607 zstd_libs
="$($pkg_config --libs libzstd)"
2608 LIBS
="$zstd_libs $LIBS"
2609 QEMU_CFLAGS
="$QEMU_CFLAGS $zstd_cflags"
2612 if test "$zstd" = "yes" ; then
2613 feature_not_found
"libzstd" "Install libzstd devel"
2619 ##########################################
2622 if test "$seccomp" != "no" ; then
2623 libseccomp_minver
="2.3.0"
2624 if $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2625 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2626 seccomp_libs
="$($pkg_config --libs libseccomp)"
2629 if test "$seccomp" = "yes" ; then
2630 feature_not_found
"libseccomp" \
2631 "Install libseccomp devel >= $libseccomp_minver"
2636 ##########################################
2639 if test "$xen" != "no" ; then
2640 # Check whether Xen library path is specified via --extra-ldflags to avoid
2641 # overriding this setting with pkg-config output. If not, try pkg-config
2642 # to obtain all needed flags.
2644 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2645 $pkg_config --exists xencontrol
; then
2646 xen_ctrl_version
="$(printf '%d%02d%02d' \
2647 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2649 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2650 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2651 if $pkg_config --exists xentoolcore
; then
2652 xen_pc
="$xen_pc xentoolcore"
2654 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2655 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2658 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2659 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2661 # First we test whether Xen headers and libraries are available.
2662 # If no, we are done and there is no Xen support.
2663 # If yes, more tests are run to detect the Xen version.
2667 #include <xenctrl.h>
2672 if ! compile_prog
"" "$xen_libs" ; then
2674 if test "$xen" = "yes" ; then
2675 feature_not_found
"xen" "Install xen devel"
2681 cat > $TMPC <<EOF &&
2682 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2683 #define __XEN_TOOLS__
2684 #include <xendevicemodel.h>
2685 #include <xenforeignmemory.h>
2687 xendevicemodel_handle *xd;
2688 xenforeignmemory_handle *xfmem;
2690 xd = xendevicemodel_open(0, 0);
2691 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2693 xfmem = xenforeignmemory_open(0, 0);
2694 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2699 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2701 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2702 xen_ctrl_version
=41100
2705 cat > $TMPC <<EOF &&
2706 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2707 #include <xenforeignmemory.h>
2708 #include <xentoolcore.h>
2710 xenforeignmemory_handle *xfmem;
2712 xfmem = xenforeignmemory_open(0, 0);
2713 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2714 xentoolcore_restrict_all(0);
2719 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2721 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2722 xen_ctrl_version
=41000
2725 cat > $TMPC <<EOF &&
2726 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2727 #define __XEN_TOOLS__
2728 #include <xendevicemodel.h>
2730 xendevicemodel_handle *xd;
2732 xd = xendevicemodel_open(0, 0);
2733 xendevicemodel_close(xd);
2738 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2740 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2741 xen_ctrl_version
=40900
2744 cat > $TMPC <<EOF &&
2746 * If we have stable libs the we don't want the libxc compat
2747 * layers, regardless of what CFLAGS we may have been given.
2749 * Also, check if xengnttab_grant_copy_segment_t is defined and
2750 * grant copy operation is implemented.
2752 #undef XC_WANT_COMPAT_EVTCHN_API
2753 #undef XC_WANT_COMPAT_GNTTAB_API
2754 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2755 #include <xenctrl.h>
2756 #include <xenstore.h>
2757 #include <xenevtchn.h>
2758 #include <xengnttab.h>
2759 #include <xenforeignmemory.h>
2761 #include <xen/hvm/hvm_info_table.h>
2762 #if !defined(HVM_MAX_VCPUS)
2763 # error HVM_MAX_VCPUS not defined
2766 xc_interface *xc = NULL;
2767 xenforeignmemory_handle *xfmem;
2768 xenevtchn_handle *xe;
2769 xengnttab_handle *xg;
2770 xengnttab_grant_copy_segment_t* seg = NULL;
2774 xc = xc_interface_open(0, 0, 0);
2775 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2776 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2777 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2778 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2780 xfmem = xenforeignmemory_open(0, 0);
2781 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2783 xe = xenevtchn_open(0, 0);
2786 xg = xengnttab_open(0, 0);
2787 xengnttab_grant_copy(xg, 0, seg);
2792 compile_prog
"" "$xen_libs $xen_stable_libs"
2794 xen_ctrl_version
=40800
2797 cat > $TMPC <<EOF &&
2799 * If we have stable libs the we don't want the libxc compat
2800 * layers, regardless of what CFLAGS we may have been given.
2802 #undef XC_WANT_COMPAT_EVTCHN_API
2803 #undef XC_WANT_COMPAT_GNTTAB_API
2804 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2805 #include <xenctrl.h>
2806 #include <xenstore.h>
2807 #include <xenevtchn.h>
2808 #include <xengnttab.h>
2809 #include <xenforeignmemory.h>
2811 #include <xen/hvm/hvm_info_table.h>
2812 #if !defined(HVM_MAX_VCPUS)
2813 # error HVM_MAX_VCPUS not defined
2816 xc_interface *xc = NULL;
2817 xenforeignmemory_handle *xfmem;
2818 xenevtchn_handle *xe;
2819 xengnttab_handle *xg;
2823 xc = xc_interface_open(0, 0, 0);
2824 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2825 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2826 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2827 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2829 xfmem = xenforeignmemory_open(0, 0);
2830 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2832 xe = xenevtchn_open(0, 0);
2835 xg = xengnttab_open(0, 0);
2836 xengnttab_map_grant_ref(xg, 0, 0, 0);
2841 compile_prog
"" "$xen_libs $xen_stable_libs"
2843 xen_ctrl_version
=40701
2848 cat > $TMPC <<EOF &&
2849 #include <xenctrl.h>
2850 #include <xenstore.h>
2852 #include <xen/hvm/hvm_info_table.h>
2853 #if !defined(HVM_MAX_VCPUS)
2854 # error HVM_MAX_VCPUS not defined
2859 xc = xc_interface_open(0, 0, 0);
2860 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2861 xc_gnttab_open(NULL, 0);
2862 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2863 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2864 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2865 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2869 compile_prog
"" "$xen_libs"
2871 xen_ctrl_version
=40600
2876 cat > $TMPC <<EOF &&
2877 #include <xenctrl.h>
2878 #include <xenstore.h>
2880 #include <xen/hvm/hvm_info_table.h>
2881 #if !defined(HVM_MAX_VCPUS)
2882 # error HVM_MAX_VCPUS not defined
2887 xc = xc_interface_open(0, 0, 0);
2888 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2889 xc_gnttab_open(NULL, 0);
2890 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2891 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2892 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2896 compile_prog
"" "$xen_libs"
2898 xen_ctrl_version
=40500
2902 cat > $TMPC <<EOF &&
2903 #include <xenctrl.h>
2904 #include <xenstore.h>
2906 #include <xen/hvm/hvm_info_table.h>
2907 #if !defined(HVM_MAX_VCPUS)
2908 # error HVM_MAX_VCPUS not defined
2913 xc = xc_interface_open(0, 0, 0);
2914 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2915 xc_gnttab_open(NULL, 0);
2916 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2917 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2921 compile_prog
"" "$xen_libs"
2923 xen_ctrl_version
=40200
2927 if test "$xen" = "yes" ; then
2928 feature_not_found
"xen (unsupported version)" \
2929 "Install a supported xen (xen 4.2 or newer)"
2934 if test "$xen" = yes; then
2935 if test $xen_ctrl_version -ge 40701 ; then
2936 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2938 libs_softmmu
="$xen_libs $libs_softmmu"
2943 if test "$xen_pci_passthrough" != "no"; then
2944 if test "$xen" = "yes" && test "$linux" = "yes"; then
2945 xen_pci_passthrough
=yes
2947 if test "$xen_pci_passthrough" = "yes"; then
2948 error_exit
"User requested feature Xen PCI Passthrough" \
2949 " but this feature requires /sys from Linux"
2951 xen_pci_passthrough
=no
2955 ##########################################
2956 # Windows Hypervisor Platform accelerator (WHPX) check
2957 if test "$whpx" != "no" ; then
2958 if check_include
"WinHvPlatform.h" && check_include
"WinHvEmulation.h"; then
2961 if test "$whpx" = "yes"; then
2962 feature_not_found
"WinHvPlatform" "WinHvEmulation is not installed"
2968 ##########################################
2970 if test "$sparse" != "no" ; then
2974 if test "$sparse" = "yes" ; then
2975 feature_not_found
"sparse" "Install sparse binary"
2981 ##########################################
2983 if $pkg_config --exists "x11"; then
2985 x11_cflags
=$
($pkg_config --cflags x11
)
2986 x11_libs
=$
($pkg_config --libs x11
)
2989 ##########################################
2992 if test "$gtk" != "no"; then
2993 gtkpackage
="gtk+-3.0"
2994 gtkx11package
="gtk+-x11-3.0"
2996 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2997 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2998 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2999 gtk_version
=$
($pkg_config --modversion $gtkpackage)
3000 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
3002 gtk_cflags
="$gtk_cflags $x11_cflags"
3003 gtk_libs
="$gtk_libs $x11_libs"
3006 elif test "$gtk" = "yes"; then
3007 feature_not_found
"gtk" "Install gtk3-devel"
3014 ##########################################
3017 if test "$gnutls" != "no"; then
3019 if $pkg_config --exists "gnutls >= 3.1.18"; then
3020 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
3021 gnutls_libs
=$
($pkg_config --libs gnutls
)
3022 # Packaging for the static libraries is not always correct.
3023 # At least ubuntu 18.04 ships only shared libraries.
3025 if compile_prog
"" "$gnutls_libs" ; then
3026 LIBS
="$gnutls_libs $LIBS"
3027 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
3031 if test "$pass" = "no" && test "$gnutls" = "yes"; then
3032 feature_not_found
"gnutls" "Install gnutls devel >= 3.1.18"
3039 # If user didn't give a --disable/enable-gcrypt flag,
3040 # then mark as disabled if user requested nettle
3042 if test -z "$gcrypt"
3044 if test "$nettle" = "yes"
3050 # If user didn't give a --disable/enable-nettle flag,
3051 # then mark as disabled if user requested gcrypt
3053 if test -z "$nettle"
3055 if test "$gcrypt" = "yes"
3062 if ! has
"libgcrypt-config"
3067 if test -n "$cross_prefix"
3069 host=$
(libgcrypt-config
--host)
3070 if test "$host-" != $cross_prefix
3076 maj
=`libgcrypt-config --version | awk -F . '{print $1}'`
3077 min
=`libgcrypt-config --version | awk -F . '{print $2}'`
3079 if test $maj != 1 ||
test $min -lt 5
3088 if test "$nettle" != "no"; then
3090 if $pkg_config --exists "nettle >= 2.7.1"; then
3091 nettle_cflags
=$
($pkg_config --cflags nettle
)
3092 nettle_libs
=$
($pkg_config --libs nettle
)
3093 nettle_version
=$
($pkg_config --modversion nettle
)
3094 # Link test to make sure the given libraries work (e.g for static).
3096 if compile_prog
"" "$nettle_libs" ; then
3097 LIBS
="$nettle_libs $LIBS"
3098 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
3099 if test -z "$gcrypt"; then
3105 if test "$pass" = "yes"
3108 #include <nettle/xts.h>
3113 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
3118 if test "$pass" = "no" && test "$nettle" = "yes"; then
3119 feature_not_found
"nettle" "Install nettle devel >= 2.7.1"
3125 if test "$gcrypt" != "no"; then
3127 if has_libgcrypt
; then
3128 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
3129 gcrypt_libs
=$
(libgcrypt-config
--libs)
3130 # Debian has removed -lgpg-error from libgcrypt-config
3131 # as it "spreads unnecessary dependencies" which in
3132 # turn breaks static builds...
3133 if test "$static" = "yes"
3135 gcrypt_libs
="$gcrypt_libs -lgpg-error"
3138 # Link test to make sure the given libraries work (e.g for static).
3140 if compile_prog
"" "$gcrypt_libs" ; then
3141 LIBS
="$gcrypt_libs $LIBS"
3142 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
3146 if test "$pass" = "yes"; then
3151 gcry_mac_hd_t handle;
3152 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
3153 GCRY_MAC_FLAG_SECURE, NULL);
3157 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
3163 gcry_cipher_hd_t handle;
3164 gcry_cipher_open(&handle, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_XTS, 0);
3168 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
3172 elif test "$gcrypt" = "yes"; then
3173 feature_not_found
"gcrypt" "Install gcrypt devel >= 1.5.0"
3180 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
3182 error_exit
"Only one of gcrypt & nettle can be enabled"
3185 ##########################################
3186 # libtasn1 - only for the TLS creds/session test suite
3191 if $pkg_config --exists "libtasn1"; then
3192 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
3193 tasn1_libs
=$
($pkg_config --libs libtasn1
)
3199 ##########################################
3202 if test "$auth_pam" != "no"; then
3204 #include <security/pam_appl.h>
3207 const char *service_name = "qemu";
3208 const char *user = "frank";
3209 const struct pam_conv pam_conv = { 0 };
3210 pam_handle_t *pamh = NULL;
3211 pam_start(service_name, user, &pam_conv, &pamh);
3215 if compile_prog
"" "-lpam" ; then
3218 if test "$auth_pam" = "yes"; then
3219 feature_not_found
"PAM" "Install PAM development package"
3226 ##########################################
3227 # getifaddrs (for tests/test-io-channel-socket )
3230 if ! check_include
"ifaddrs.h" ; then
3234 #########################################
3237 if check_include
"libdrm/drm.h" ; then
3241 #########################################
3242 # sys/signal.h check
3243 have_sys_signal_h
=no
3244 if check_include
"sys/signal.h" ; then
3245 have_sys_signal_h
=yes
3248 ##########################################
3251 if test "$vte" != "no"; then
3252 vteminversion
="0.32.0"
3253 if $pkg_config --exists "vte-2.91"; then
3254 vtepackage
="vte-2.91"
3256 vtepackage
="vte-2.90"
3258 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
3259 vte_cflags
=$
($pkg_config --cflags $vtepackage)
3260 vte_libs
=$
($pkg_config --libs $vtepackage)
3261 vteversion
=$
($pkg_config --modversion $vtepackage)
3263 elif test "$vte" = "yes"; then
3264 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
3270 ##########################################
3273 # Look for sdl configuration program (pkg-config or sdl2-config). Try
3274 # sdl2-config even without cross prefix, and favour pkg-config over sdl2-config.
3278 if $pkg_config sdl2
--exists; then
3279 sdlconfig
="$pkg_config sdl2"
3280 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
3281 elif has
"$sdl2_config"; then
3282 sdlconfig
="$sdl2_config"
3283 sdlversion
=$
($sdlconfig --version)
3285 if test "$sdl" = "yes" ; then
3286 feature_not_found
"sdl" "Install SDL2-devel"
3289 # no need to do the rest
3292 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl2-config
; then
3293 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
3298 #undef main /* We don't want SDL to override our main() */
3299 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
3301 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
3302 sdl_cflags
="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
3303 if test "$static" = "yes" ; then
3304 if $pkg_config sdl2
--exists; then
3305 sdl_libs
=$
($pkg_config sdl2
--static --libs 2>/dev
/null
)
3307 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
3310 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
3312 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
3315 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
3316 if test "$sdl" = "yes" && test "$static" = "yes" ; then
3317 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
3318 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
3319 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
3321 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
3327 else # sdl not found
3328 if test "$sdl" = "yes" ; then
3329 feature_not_found
"sdl" "Install SDL2 devel"
3332 fi # sdl compile test
3337 if test "$sdl_image" != "no" ; then
3338 if $pkg_config SDL2_image
--exists; then
3339 if test "$static" = "yes"; then
3340 sdl_image_libs
=$
($pkg_config SDL2_image
--libs --static 2>/dev
/null
)
3342 sdl_image_libs
=$
($pkg_config SDL2_image
--libs 2>/dev
/null
)
3344 sdl_image_cflags
=$
($pkg_config SDL2_image
--cflags 2>/dev
/null
)
3347 sdl_cflags
="$sdl_cflags $sdl_image_cflags"
3348 sdl_libs
="$sdl_libs $sdl_image_libs"
3350 if test "$sdl_image" = "yes" ; then
3351 feature_not_found
"sdl_image" "Install SDL Image devel"
3359 if test "$sdl" != "no" ; then
3363 if test "$sdl" = "yes" ; then
3366 if test "$sdl_image" = "yes"; then
3367 echo "warning: SDL Image requested, but SDL is not available, disabling"
3372 if test "$sdl" = "yes" ; then
3375 #if defined(SDL_VIDEO_DRIVER_X11)
3376 #include <X11/XKBlib.h>
3378 #error No x11 support
3380 int main(void) { return 0; }
3382 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
3384 sdl_cflags
="$sdl_cflags $x11_cflags"
3385 sdl_libs
="$sdl_libs $x11_libs"
3389 ##########################################
3390 # RDMA needs OpenFabrics libraries
3391 if test "$rdma" != "no" ; then
3393 #include <rdma/rdma_cma.h>
3394 int main(void) { return 0; }
3396 rdma_libs
="-lrdmacm -libverbs -libumad"
3397 if compile_prog
"" "$rdma_libs" ; then
3399 libs_softmmu
="$libs_softmmu $rdma_libs"
3401 if test "$rdma" = "yes" ; then
3403 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
3405 " (1) Fast: Install infiniband packages (devel) from your distro." \
3406 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3407 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3413 ##########################################
3416 cat > $TMPC <<EOF &&
3417 #include <sys/mman.h>
3424 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3430 if test "$rdma" = "yes" ; then
3433 if compile_prog
"" ""; then
3440 if ! compile_prog
"" ""; then
3441 error_exit
"PVRDMA is not supported since mremap is not implemented"
3450 if test "$pvrdma" = "yes" ; then
3451 error_exit
"PVRDMA requires rdma suppport"
3456 # Let's see if enhanced reg_mr is supported
3457 if test "$pvrdma" = "yes" ; then
3459 cat > $TMPC <<EOF &&
3460 #include <infiniband/verbs.h>
3466 struct ibv_pd *pd = NULL;
3472 mr = ibv_reg_mr_iova(pd, addr, length, iova, access);
3479 if ! compile_prog
"" "-libverbs"; then
3480 QEMU_CFLAGS
="$QEMU_CFLAGS -DLEGACY_RDMA_REG_MR"
3484 ##########################################
3485 # VNC SASL detection
3486 if test "$vnc" = "yes" && test "$vnc_sasl" != "no" ; then
3488 #include <sasl/sasl.h>
3490 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3492 # Assuming Cyrus-SASL installed in /usr prefix
3493 # QEMU defines struct iovec in "qemu/osdep.h",
3494 # we don't want libsasl to redefine it in <sasl/sasl.h>.
3495 vnc_sasl_cflags
="-DSTRUCT_IOVEC_DEFINED"
3496 vnc_sasl_libs
="-lsasl2"
3497 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3499 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
3500 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
3502 if test "$vnc_sasl" = "yes" ; then
3503 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
3509 ##########################################
3510 # VNC JPEG detection
3511 if test "$vnc" = "yes" && test "$vnc_jpeg" != "no" ; then
3514 #include <jpeglib.h>
3515 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3518 vnc_jpeg_libs
="-ljpeg"
3519 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3521 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
3522 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
3524 if test "$vnc_jpeg" = "yes" ; then
3525 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
3531 ##########################################
3533 if test "$vnc" = "yes" && test "$vnc_png" != "no" ; then
3535 //#include <stdio.h>
3539 png_structp png_ptr;
3540 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
3541 return png_ptr != 0;
3544 if $pkg_config libpng
--exists; then
3545 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
3546 vnc_png_libs
=$
($pkg_config libpng
--libs)
3549 vnc_png_libs
="-lpng"
3551 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
3553 libs_softmmu
="$vnc_png_libs $libs_softmmu"
3554 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
3556 if test "$vnc_png" = "yes" ; then
3557 feature_not_found
"vnc-png" "Install libpng devel"
3563 ##########################################
3565 if test "$xkbcommon" != "no" ; then
3566 if $pkg_config xkbcommon
--exists; then
3567 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
3568 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
3571 if test "$xkbcommon" = "yes" ; then
3572 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
3579 ##########################################
3580 # xfsctl() probe, used for file-posix.c
3581 if test "$xfs" != "no" ; then
3583 #include <stddef.h> /* NULL */
3584 #include <xfs/xfs.h>
3587 xfsctl(NULL, 0, 0, NULL);
3591 if compile_prog
"" "" ; then
3594 if test "$xfs" = "yes" ; then
3595 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3601 ##########################################
3602 # vde libraries probe
3603 if test "$vde" != "no" ; then
3604 vde_libs
="-lvdeplug"
3606 #include <libvdeplug.h>
3609 struct vde_open_args a = {0, 0, 0};
3615 if compile_prog
"" "$vde_libs" ; then
3618 if test "$vde" = "yes" ; then
3619 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3625 ##########################################
3626 # netmap support probe
3627 # Apart from looking for netmap headers, we make sure that the host API version
3628 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3629 # a minor/major version number. Minor new features will be marked with values up
3630 # to 15, and if something happens that requires a change to the backend we will
3631 # move above 15, submit the backend fixes and modify this two bounds.
3632 if test "$netmap" != "no" ; then
3634 #include <inttypes.h>
3636 #include <net/netmap.h>
3637 #include <net/netmap_user.h>
3638 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3641 int main(void) { return 0; }
3643 if compile_prog
"" "" ; then
3646 if test "$netmap" = "yes" ; then
3647 feature_not_found
"netmap"
3653 ############################################
3655 # Check for efi files needed by aarch64 VMs.
3656 # By default we will use the efi included with QEMU.
3657 # Allow user to override the path for efi also.
3658 if ! test -f "$efi_aarch64"; then
3659 if test -f $source_path/pc-bios
/edk2-aarch64-code.fd.bz2
; then
3661 efi_aarch64
=$PWD/pc-bios
/edk2-aarch64-code.fd
3667 ##########################################
3668 # libcap-ng library probe
3669 if test "$cap_ng" != "no" ; then
3675 capng_capability_to_name(CAPNG_EFFECTIVE);
3679 if compile_prog
"" "$cap_libs" ; then
3681 libs_tools
="$cap_libs $libs_tools"
3683 if test "$cap_ng" = "yes" ; then
3684 feature_not_found
"cap_ng" "Install libcap-ng devel"
3690 ##########################################
3691 # Sound support libraries probe
3693 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3694 for drv
in $audio_drv_list; do
3697 if $pkg_config alsa
--exists; then
3698 alsa_libs
=$
($pkg_config alsa
--libs)
3699 if test "$drv" = "try-alsa"; then
3700 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-alsa/alsa/')
3703 if test "$drv" = "try-alsa"; then
3704 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-alsa//')
3706 error_exit
"$drv check failed" \
3707 "Make sure to have the $drv libs and headers installed."
3713 if $pkg_config libpulse
--exists; then
3714 pulse_libs
=$
($pkg_config libpulse
--libs)
3715 if test "$drv" = "try-pa"; then
3716 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-pa/pa/')
3719 if test "$drv" = "try-pa"; then
3720 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-pa//')
3722 error_exit
"$drv check failed" \
3723 "Make sure to have the $drv libs and headers installed."
3729 if test "$sdl" = "no"; then
3730 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3735 if test "$sdl" = "no"; then
3736 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-sdl//')
3738 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-sdl/sdl/')
3743 coreaudio_libs
="-framework CoreAudio"
3747 dsound_libs
="-lole32 -ldxguid"
3756 if $pkg_config jack
--exists; then
3757 jack_libs
=$
($pkg_config jack
--libs)
3758 if test "$drv" = "try-jack"; then
3759 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-jack/jack/')
3762 if test "$drv" = "try-jack"; then
3763 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-jack//')
3765 error_exit
"$drv check failed" \
3766 "Make sure to have the $drv libs and headers installed."
3772 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3773 error_exit
"Unknown driver '$drv' selected" \
3774 "Possible drivers are: $audio_possible_drivers"
3780 ##########################################
3783 if test "$brlapi" != "no" ; then
3784 brlapi_libs
="-lbrlapi"
3788 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3790 if compile_prog
"" "$brlapi_libs" ; then
3793 if test "$brlapi" = "yes" ; then
3794 feature_not_found
"brlapi" "Install brlapi devel"
3800 ##########################################
3802 if test "$iconv" != "no" ; then
3806 iconv_t conv = iconv_open("WCHAR_T", "UCS-2");
3807 return conv != (iconv_t) -1;
3810 iconv_prefix_list
="/usr/local:/usr"
3811 iconv_lib_list
=":-liconv"
3813 for iconv_prefix
in $iconv_prefix_list; do
3815 iconv_cflags
="-I$iconv_prefix/include"
3816 iconv_ldflags
="-L$iconv_prefix/lib"
3817 for iconv_link
in $iconv_lib_list; do
3819 iconv_lib
="$iconv_ldflags $iconv_link"
3820 echo "looking at iconv in '$iconv_cflags' '$iconv_lib'" >> config.log
3821 if compile_prog
"$iconv_cflags" "$iconv_lib" ; then
3826 if test "$iconv_found" = yes ; then
3830 if test "$iconv_found" = "yes" ; then
3833 if test "$iconv" = "yes" ; then
3834 feature_not_found
"iconv" "Install iconv devel"
3840 ##########################################
3842 if test "$iconv" = "no" ; then
3843 # curses will need iconv
3846 if test "$curses" != "no" ; then
3847 if test "$mingw32" = "yes" ; then
3848 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3849 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3851 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3852 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3859 #include <langinfo.h>
3861 const char *codeset;
3863 setlocale(LC_ALL, "");
3865 addwstr(L"wide chars\n");
3867 add_wch(WACS_DEGREE);
3868 codeset = nl_langinfo(CODESET);
3869 return codeset != 0;
3873 for curses_inc
in $curses_inc_list; do
3874 # Make sure we get the wide character prototypes
3875 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3877 for curses_lib
in $curses_lib_list; do
3879 if compile_prog
"$curses_inc" "$curses_lib" ; then
3884 if test "$curses_found" = yes ; then
3889 if test "$curses_found" = "yes" ; then
3892 if test "$curses" = "yes" ; then
3893 feature_not_found
"curses" "Install ncurses devel"
3899 ##########################################
3901 if test "$curl" != "no" ; then
3902 if $pkg_config libcurl
--exists; then
3903 curlconfig
="$pkg_config libcurl"
3905 curlconfig
=curl-config
3908 #include <curl/curl.h>
3909 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3911 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3912 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3913 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3916 if test "$curl" = "yes" ; then
3917 feature_not_found
"curl" "Install libcurl devel"
3923 ##########################################
3924 # glib support probe
3927 glib_modules
=gthread-2.0
3928 if test "$modules" = yes; then
3929 glib_modules
="$glib_modules gmodule-export-2.0"
3931 if test "$plugins" = yes; then
3932 glib_modules
="$glib_modules gmodule-2.0"
3935 # This workaround is required due to a bug in pkg-config file for glib as it
3936 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3938 if test "$static" = yes && test "$mingw32" = yes; then
3939 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3942 for i
in $glib_modules; do
3943 if $pkg_config --atleast-version=$glib_req_ver $i; then
3944 glib_cflags
=$
($pkg_config --cflags $i)
3945 glib_libs
=$
($pkg_config --libs $i)
3946 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3947 LIBS
="$glib_libs $LIBS"
3948 libs_qga
="$glib_libs $libs_qga"
3950 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3954 if $pkg_config --atleast-version=$glib_req_ver gio-2.0
; then
3956 gio_cflags
=$
($pkg_config --cflags gio-2.0
)
3957 gio_libs
=$
($pkg_config --libs gio-2.0
)
3958 gdbus_codegen
=$
($pkg_config --variable=gdbus_codegen gio-2.0
)
3959 if [ ! -x "$gdbus_codegen" ]; then
3966 if $pkg_config --atleast-version=$glib_req_ver gio-unix-2.0
; then
3967 gio_cflags
="$gio_cflags $($pkg_config --cflags gio-unix-2.0)"
3968 gio_libs
="$gio_libs $($pkg_config --libs gio-unix-2.0)"
3971 # Sanity check that the current size_t matches the
3972 # size that glib thinks it should be. This catches
3973 # problems on multi-arch where people try to build
3974 # 32-bit QEMU while pointing at 64-bit glib headers
3979 #define QEMU_BUILD_BUG_ON(x) \
3980 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3983 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3988 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3989 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3990 "You probably need to set PKG_CONFIG_LIBDIR"\
3991 "to point to the right pkg-config files for your"\
3995 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3998 int main(void) { return 0; }
4000 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
4001 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
4002 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
4003 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
4007 # Silence clang warnings triggered by glib < 2.57.2
4010 typedef struct Foo {
4013 static void foo_free(Foo *f)
4017 G_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free);
4018 int main(void) { return 0; }
4020 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
4021 if cc_has_warning_flag
"-Wno-unused-function"; then
4022 glib_cflags
="$glib_cflags -Wno-unused-function"
4023 CFLAGS
="$CFLAGS -Wno-unused-function"
4027 #########################################
4030 if test "$zlib" != "no" ; then
4031 if $pkg_config --exists zlib
; then
4032 zlib_cflags
=$
($pkg_config --cflags zlib
)
4033 zlib_libs
=$
($pkg_config --libs zlib
)
4034 QEMU_CFLAGS
="$zlib_cflags $QEMU_CFLAGS"
4035 LIBS
="$zlib_libs $LIBS"
4039 int main(void) { zlibVersion(); return 0; }
4041 if compile_prog
"" "-lz" ; then
4044 error_exit
"zlib check failed" \
4045 "Make sure to have the zlib libs and headers installed."
4050 ##########################################
4051 # SHA command probe for modules
4052 if test "$modules" = yes; then
4053 shacmd_probe
="sha1sum sha1 shasum"
4054 for c
in $shacmd_probe; do
4060 if test "$shacmd" = ""; then
4061 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
4065 ##########################################
4066 # pixman support probe
4068 if test "$want_tools" = "no" && test "$softmmu" = "no"; then
4071 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
4072 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
4073 pixman_libs
=$
($pkg_config --libs pixman-1
)
4075 error_exit
"pixman >= 0.21.8 not present." \
4076 "Please install the pixman devel package."
4079 ##########################################
4080 # libmpathpersist probe
4082 if test "$mpath" != "no" ; then
4083 # probe for the new API
4085 #include <libudev.h>
4086 #include <mpath_persist.h>
4087 unsigned mpath_mx_alloc_len = 1024;
4089 static struct config *multipath_conf;
4090 extern struct udev *udev;
4091 extern struct config *get_multipath_config(void);
4092 extern void put_multipath_config(struct config *conf);
4094 struct config *get_multipath_config(void) { return multipath_conf; }
4095 void put_multipath_config(struct config *conf) { }
4099 multipath_conf = mpath_lib_init();
4103 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
4105 mpathpersist_new_api
=yes
4107 # probe for the old API
4109 #include <libudev.h>
4110 #include <mpath_persist.h>
4111 unsigned mpath_mx_alloc_len = 1024;
4114 struct udev *udev = udev_new();
4115 mpath_lib_init(udev);
4119 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
4121 mpathpersist_new_api
=no
4130 ##########################################
4132 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
4136 #include <pthread.h>
4137 static void *f(void *p) { return NULL; }
4140 pthread_create(&thread, 0, f, 0);
4144 if compile_prog
"" "" ; then
4147 for pthread_lib
in $PTHREADLIBS_LIST; do
4148 if compile_prog
"" "$pthread_lib" ; then
4151 for lib_entry
in $LIBS; do
4152 if test "$lib_entry" = "$pthread_lib"; then
4157 if test "$found" = "no"; then
4158 LIBS
="$pthread_lib $LIBS"
4159 libs_qga
="$pthread_lib $libs_qga"
4161 PTHREAD_LIB
="$pthread_lib"
4167 if test "$mingw32" != yes && test "$pthread" = no
; then
4168 error_exit
"pthread check failed" \
4169 "Make sure to have the pthread libs and headers installed."
4172 # check for pthread_setname_np with thread id
4173 pthread_setname_np_w_tid
=no
4175 #include <pthread.h>
4177 static void *f(void *p) { return NULL; }
4181 pthread_create(&thread, 0, f, 0);
4182 pthread_setname_np(thread, "QEMU");
4186 if compile_prog
"" "$pthread_lib" ; then
4187 pthread_setname_np_w_tid
=yes
4190 # check for pthread_setname_np without thread id
4191 pthread_setname_np_wo_tid
=no
4193 #include <pthread.h>
4195 static void *f(void *p) { pthread_setname_np("QEMU"); }
4199 pthread_create(&thread, 0, f, 0);
4203 if compile_prog
"" "$pthread_lib" ; then
4204 pthread_setname_np_wo_tid
=yes
4207 ##########################################
4209 if test "$rbd" != "no" ; then
4212 #include <rbd/librbd.h>
4215 rados_create(&cluster, NULL);
4219 rbd_libs
="-lrbd -lrados"
4220 if compile_prog
"" "$rbd_libs" ; then
4223 if test "$rbd" = "yes" ; then
4224 feature_not_found
"rados block device" "Install librbd/ceph devel"
4230 ##########################################
4232 if test "$libssh" != "no" ; then
4233 if $pkg_config --exists libssh
; then
4234 libssh_cflags
=$
($pkg_config libssh
--cflags)
4235 libssh_libs
=$
($pkg_config libssh
--libs)
4238 if test "$libssh" = "yes" ; then
4239 error_exit
"libssh required for --enable-libssh"
4245 ##########################################
4246 # Check for libssh 0.8
4247 # This is done like this instead of using the LIBSSH_VERSION_* and
4248 # SSH_VERSION_* macros because some distributions in the past shipped
4249 # snapshots of the future 0.8 from Git, and those snapshots did not
4250 # have updated version numbers (still referring to 0.7.0).
4252 if test "$libssh" = "yes"; then
4254 #include <libssh/libssh.h>
4255 int main(void) { return ssh_get_server_publickey(NULL, NULL); }
4257 if compile_prog
"$libssh_cflags" "$libssh_libs"; then
4258 libssh_cflags
="-DHAVE_LIBSSH_0_8 $libssh_cflags"
4262 ##########################################
4265 if test "$linux_aio" != "no" ; then
4268 #include <sys/eventfd.h>
4270 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
4272 if compile_prog
"" "-laio" ; then
4275 if test "$linux_aio" = "yes" ; then
4276 feature_not_found
"linux AIO" "Install libaio devel"
4281 ##########################################
4282 # linux-io-uring probe
4284 if test "$linux_io_uring" != "no" ; then
4285 if $pkg_config liburing
; then
4286 linux_io_uring_cflags
=$
($pkg_config --cflags liburing
)
4287 linux_io_uring_libs
=$
($pkg_config --libs liburing
)
4290 # io_uring is used in libqemuutil.a where per-file -libs variables are not
4291 # seen by programs linking the archive. It's not ideal, but just add the
4292 # library dependency globally.
4293 LIBS
="$linux_io_uring_libs $LIBS"
4295 if test "$linux_io_uring" = "yes" ; then
4296 feature_not_found
"linux io_uring" "Install liburing devel"
4302 ##########################################
4303 # TPM emulation is only on POSIX
4305 if test "$tpm" = ""; then
4306 if test "$mingw32" = "yes"; then
4311 elif test "$tpm" = "yes"; then
4312 if test "$mingw32" = "yes" ; then
4313 error_exit
"TPM emulation only available on POSIX systems"
4317 ##########################################
4320 if test "$attr" != "no" ; then
4323 #include <sys/types.h>
4324 #ifdef CONFIG_LIBATTR
4325 #include <attr/xattr.h>
4327 #include <sys/xattr.h>
4329 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
4331 if compile_prog
"" "" ; then
4333 # Older distros have <attr/xattr.h>, and need -lattr:
4334 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
4339 if test "$attr" = "yes" ; then
4340 feature_not_found
"ATTR" "Install libc6 or libattr devel"
4346 ##########################################
4349 #include <sys/types.h>
4350 #include <sys/uio.h>
4352 int main(void) { return sizeof(struct iovec); }
4355 if compile_prog
"" "" ; then
4359 ##########################################
4362 #include <sys/types.h>
4363 #include <sys/uio.h>
4365 int main(void) { return preadv(0, 0, 0, 0); }
4368 if compile_prog
"" "" ; then
4372 ##########################################
4374 # fdt support is mandatory for at least some target architectures,
4375 # so insist on it if we're building those system emulators.
4377 for target
in $target_list; do
4379 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu|riscv
*-softmmu|rx-softmmu
)
4385 if test "$fdt_required" = "yes"; then
4386 if test "$fdt" = "no"; then
4387 error_exit
"fdt disabled but some requested targets require it." \
4388 "You can turn off fdt only if you also disable all the system emulation" \
4389 "targets which need it (by specifying a cut down --target-list)."
4392 elif test "$fdt" != "yes" ; then
4396 # fdt is only required when building softmmu targets
4397 if test -z "$fdt" -a "$softmmu" != "yes" ; then
4401 if test "$fdt" != "no" ; then
4403 # explicitly check for libfdt_env.h as it is missing in some stable installs
4404 # and test for required functions to make sure we are on a version >= 1.4.2
4407 #include <libfdt_env.h>
4408 int main(void) { fdt_check_full(NULL, 0); return 0; }
4410 if compile_prog
"" "$fdt_libs" ; then
4411 # system DTC is good - use it
4414 # have GIT checkout, so activate dtc submodule
4415 if test -e "${source_path}/.git" ; then
4416 git_submodules
="${git_submodules} dtc"
4418 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
4421 if [ "$pwd_is_source_path" != "y" ] ; then
4422 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
4424 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
4425 fdt_ldflags
="-L\$(BUILD_DIR)/dtc/libfdt"
4426 fdt_libs
="$fdt_libs"
4427 elif test "$fdt" = "yes" ; then
4428 # Not a git build & no libfdt found, prompt for system install
4429 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
4430 "Please install the DTC (libfdt) devel package"
4432 # don't have and don't want
4439 libs_softmmu
="$libs_softmmu $fdt_libs"
4441 ##########################################
4442 # opengl probe (for sdl2, gtk, milkymist-tmu2)
4445 if $pkg_config gbm
; then
4446 gbm_cflags
="$($pkg_config --cflags gbm)"
4447 gbm_libs
="$($pkg_config --libs gbm)"
4451 if test "$opengl" != "no" ; then
4452 opengl_pkgs
="epoxy gbm"
4453 if $pkg_config $opengl_pkgs; then
4454 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs)"
4455 opengl_libs
="$($pkg_config --libs $opengl_pkgs)"
4457 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
4460 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
4462 if test "$opengl" = "yes" ; then
4463 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
4471 if test "$opengl" = "yes"; then
4473 #include <epoxy/egl.h>
4474 #ifndef EGL_MESA_image_dma_buf_export
4475 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
4477 int main(void) { return 0; }
4479 if compile_prog
"" "" ; then
4484 if test "$opengl" = "yes" && test "$have_x11" = "yes"; then
4485 for target
in $target_list; do
4487 lm32-softmmu
) # milkymist-tmu2 requires X11 and OpenGL
4494 ##########################################
4496 if test "$libxml2" != "no" ; then
4497 if $pkg_config --exists libxml-2.0
; then
4499 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
4500 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
4502 if test "$libxml2" = "yes"; then
4503 feature_not_found
"libxml2" "Install libxml2 devel"
4509 ##########################################
4511 if test "$glusterfs" != "no" ; then
4512 if $pkg_config --atleast-version=3 glusterfs-api
; then
4514 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
4515 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
4516 if $pkg_config --atleast-version=4 glusterfs-api
; then
4517 glusterfs_xlator_opt
="yes"
4519 if $pkg_config --atleast-version=5 glusterfs-api
; then
4520 glusterfs_discard
="yes"
4522 if $pkg_config --atleast-version=6 glusterfs-api
; then
4523 glusterfs_fallocate
="yes"
4524 glusterfs_zerofill
="yes"
4527 #include <glusterfs/api/glfs.h>
4532 /* new glfs_ftruncate() passes two additional args */
4533 return glfs_ftruncate(NULL, 0, NULL, NULL);
4536 if compile_prog
"$glusterfs_cflags" "$glusterfs_libs" ; then
4537 glusterfs_ftruncate_has_stat
="yes"
4540 #include <glusterfs/api/glfs.h>
4542 /* new glfs_io_cbk() passes two additional glfs_stat structs */
4544 glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
4550 glfs_io_cbk iocb = &glusterfs_iocb;
4551 iocb(NULL, 0 , NULL, NULL, NULL);
4555 if compile_prog
"$glusterfs_cflags" "$glusterfs_libs" ; then
4556 glusterfs_iocb_has_stat
="yes"
4559 if test "$glusterfs" = "yes" ; then
4560 feature_not_found
"GlusterFS backend support" \
4561 "Install glusterfs-api devel >= 3"
4567 # Check for inotify functions when we are building linux-user
4568 # emulator. This is done because older glibc versions don't
4569 # have syscall stubs for these implemented. In that case we
4570 # don't provide them even if kernel supports them.
4574 #include <sys/inotify.h>
4579 /* try to start inotify */
4580 return inotify_init();
4583 if compile_prog
"" "" ; then
4589 #include <sys/inotify.h>
4594 /* try to start inotify */
4595 return inotify_init1(0);
4598 if compile_prog
"" "" ; then
4602 # check if pipe2 is there
4611 return pipe2(pipefd, O_CLOEXEC);
4614 if compile_prog
"" "" ; then
4618 # check if accept4 is there
4621 #include <sys/socket.h>
4626 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4630 if compile_prog
"" "" ; then
4634 # check if tee/splice is there. vmsplice was added same time.
4644 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4645 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4649 if compile_prog
"" "" ; then
4653 ##########################################
4656 if test "$numa" != "no" ; then
4659 int main(void) { return numa_available(); }
4662 if compile_prog
"" "-lnuma" ; then
4664 libs_softmmu
="-lnuma $libs_softmmu"
4666 if test "$numa" = "yes" ; then
4667 feature_not_found
"numa" "install numactl devel"
4673 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4674 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4678 # Even if malloc_trim() is available, these non-libc memory allocators
4679 # do not support it.
4680 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
4681 if test "$malloc_trim" = "yes" ; then
4682 echo "Disabling malloc_trim with non-libc memory allocator"
4687 #######################################
4690 if test "$malloc_trim" != "no" ; then
4693 int main(void) { malloc_trim(0); return 0; }
4695 if compile_prog
"" "" ; then
4702 ##########################################
4705 if test "$tcmalloc" = "yes" ; then
4709 void *tmp = malloc(1);
4717 if compile_prog
"" "-ltcmalloc" ; then
4718 LIBS
="-ltcmalloc $LIBS"
4720 feature_not_found
"tcmalloc" "install gperftools devel"
4724 ##########################################
4727 if test "$jemalloc" = "yes" ; then
4731 void *tmp = malloc(1);
4739 if compile_prog
"" "-ljemalloc" ; then
4740 LIBS
="-ljemalloc $LIBS"
4742 feature_not_found
"jemalloc" "install jemalloc devel"
4746 ##########################################
4751 #include <sys/syscall.h>
4753 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4756 if compile_prog
"" "" ; then
4760 # check if optreset global is declared by <getopt.h>
4764 int main(void) { return optreset; }
4767 if compile_prog
"" "" ; then
4771 # check if eventfd is supported
4774 #include <sys/eventfd.h>
4778 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
4781 if compile_prog
"" "" ; then
4785 # check if memfd is supported
4788 #include <sys/mman.h>
4792 return memfd_create("foo", MFD_ALLOW_SEALING);
4795 if compile_prog
"" "" ; then
4801 if test "$linux_user" = "yes"; then
4803 #include <linux/usbdevice_fs.h>
4805 #ifndef USBDEVFS_GET_CAPABILITIES
4806 #error "USBDEVFS_GET_CAPABILITIES undefined"
4809 #ifndef USBDEVFS_DISCONNECT_CLAIM
4810 #error "USBDEVFS_DISCONNECT_CLAIM undefined"
4818 if compile_prog
"" ""; then
4823 # check for fallocate
4830 fallocate(0, 0, 0, 0);
4834 if compile_prog
"" "" ; then
4838 # check for fallocate hole punching
4839 fallocate_punch_hole
=no
4842 #include <linux/falloc.h>
4846 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4850 if compile_prog
"" "" ; then
4851 fallocate_punch_hole
=yes
4854 # check that fallocate supports range zeroing inside the file
4855 fallocate_zero_range
=no
4858 #include <linux/falloc.h>
4862 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4866 if compile_prog
"" "" ; then
4867 fallocate_zero_range
=yes
4870 # check for posix_fallocate
4877 posix_fallocate(0, 0, 0);
4881 if compile_prog
"" "" ; then
4885 # check for sync_file_range
4892 sync_file_range(0, 0, 0, 0);
4896 if compile_prog
"" "" ; then
4900 # check for linux/fiemap.h and FS_IOC_FIEMAP
4903 #include <sys/ioctl.h>
4904 #include <linux/fs.h>
4905 #include <linux/fiemap.h>
4909 ioctl(0, FS_IOC_FIEMAP, 0);
4913 if compile_prog
"" "" ; then
4928 if compile_prog
"" "" ; then
4932 # check for ppoll support
4939 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4940 ppoll(&pfd, 1, 0, 0);
4944 if compile_prog
"" "" ; then
4948 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4949 prctl_pr_set_timerslack
=no
4951 #include <sys/prctl.h>
4955 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4959 if compile_prog
"" "" ; then
4960 prctl_pr_set_timerslack
=yes
4963 # check for epoll support
4966 #include <sys/epoll.h>
4974 if compile_prog
"" "" ; then
4978 # epoll_create1 is a later addition
4979 # so we must check separately for its presence
4982 #include <sys/epoll.h>
4986 /* Note that we use epoll_create1 as a value, not as
4987 * a function being called. This is necessary so that on
4988 * old SPARC glibc versions where the function was present in
4989 * the library but not declared in the header file we will
4990 * fail the configure check. (Otherwise we will get a compiler
4991 * warning but not an error, and will proceed to fail the
4992 * qemu compile where we compile with -Werror.)
4994 return (int)(uintptr_t)&epoll_create1;
4997 if compile_prog
"" "" ; then
5001 # check for sendfile support
5004 #include <sys/sendfile.h>
5008 return sendfile(0, 0, 0, 0);
5011 if compile_prog
"" "" ; then
5015 # check for timerfd support (glibc 2.8 and newer)
5018 #include <sys/timerfd.h>
5022 return(timerfd_create(CLOCK_REALTIME, 0));
5025 if compile_prog
"" "" ; then
5029 # check for setns and unshare support
5042 if compile_prog
"" "" ; then
5046 # clock_adjtime probe
5053 return clock_adjtime(0, 0);
5057 if compile_prog
"" "" ; then
5072 if compile_prog
"" "" ; then
5076 # check for kcov support (kernel must be 4.4+, compiled with certain options)
5078 if check_include sys
/kcov.h
; then
5082 # If we're making warnings fatal, apply this to Sphinx runs as well
5084 if test "$werror" = "yes"; then
5088 # Check we have a new enough version of sphinx-build
5089 has_sphinx_build
() {
5090 # This is a bit awkward but works: create a trivial document and
5091 # try to run it with our configuration file (which enforces a
5092 # version requirement). This will fail if either
5093 # sphinx-build doesn't exist at all or if it is too old.
5094 mkdir
-p "$TMPDIR1/sphinx"
5095 touch "$TMPDIR1/sphinx/index.rst"
5096 "$sphinx_build" $sphinx_werror -c "$source_path/docs" \
5097 -b html
"$TMPDIR1/sphinx" \
5098 "$TMPDIR1/sphinx/out" >> config.log
2>&1
5101 # Check if tools are available to build documentation.
5102 if test "$docs" != "no" ; then
5103 if has_sphinx_build
; then
5108 if has makeinfo
&& has pod2man
&& test "$sphinx_ok" = "yes"; then
5111 if test "$docs" = "yes" ; then
5112 if has
$sphinx_build && test "$sphinx_ok" != "yes"; then
5113 echo "Warning: $sphinx_build exists but it is either too old or uses too old a Python version" >&2
5115 feature_not_found
"docs" "Install texinfo, Perl/perl-podlators and a Python 3 version of python-sphinx"
5121 # Search for bswap_32 function
5124 #include <byteswap.h>
5125 int main(void) { return bswap_32(0); }
5127 if compile_prog
"" "" ; then
5131 # Search for bswap32 function
5134 #include <sys/endian.h>
5135 #include <sys/types.h>
5136 #include <machine/bswap.h>
5137 int main(void) { return bswap32(0); }
5139 if compile_prog
"" "" ; then
5143 ##########################################
5144 # Do we have libiscsi >= 1.9.0
5145 if test "$libiscsi" != "no" ; then
5146 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
5148 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
5149 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
5151 if test "$libiscsi" = "yes" ; then
5152 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
5158 ##########################################
5162 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
5164 if compile_prog
"" "" ; then
5166 elif compile_prog
"" "-lm" ; then
5168 libs_qga
="-lm $libs_qga"
5170 error_exit
"libm check failed"
5173 ##########################################
5175 # uClibc provides 2 versions of clock_gettime(), one with realtime
5176 # support and one without. This means that the clock_gettime() don't
5177 # need -lrt. We still need it for timer_create() so we check for this
5178 # function in addition.
5183 timer_create(CLOCK_REALTIME, NULL, NULL);
5184 return clock_gettime(CLOCK_REALTIME, NULL);
5188 if compile_prog
"" "" ; then
5190 # we need pthread for static linking. use previous pthread test result
5191 elif compile_prog
"" "$pthread_lib -lrt" ; then
5193 libs_qga
="$libs_qga -lrt"
5196 # Check whether we need to link libutil for openpty()
5198 extern int openpty(int *am, int *as, char *name, void *termp, void *winp);
5199 int main(void) { return openpty(0, 0, 0, 0, 0); }
5203 if compile_prog
"" "" ; then
5206 if compile_prog
"" "-lutil" ; then
5207 libs_softmmu
="-lutil $libs_softmmu"
5208 libs_tools
="-lutil $libs_tools"
5213 ##########################################
5215 if test "$spice" != "no" ; then
5218 int main(void) { spice_server_new(); return 0; }
5220 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
5221 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
5222 if $pkg_config --atleast-version=0.12.5 spice-server
&& \
5223 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
5224 compile_prog
"$spice_cflags" "$spice_libs" ; then
5226 libs_softmmu
="$libs_softmmu $spice_libs"
5227 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
5228 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
5229 spice_server_version
=$
($pkg_config --modversion spice-server
)
5231 if test "$spice" = "yes" ; then
5232 feature_not_found
"spice" \
5233 "Install spice-server(>=0.12.5) and spice-protocol(>=0.12.3) devel"
5239 # check for smartcard support
5240 if test "$smartcard" != "no"; then
5241 if $pkg_config --atleast-version=2.5.1 libcacard
; then
5242 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
5243 libcacard_libs
=$
($pkg_config --libs libcacard
)
5246 if test "$smartcard" = "yes"; then
5247 feature_not_found
"smartcard" "Install libcacard devel"
5254 if test "$libusb" != "no" ; then
5255 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
5257 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
5258 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
5260 if test "$libusb" = "yes"; then
5261 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
5267 # check for usbredirparser for usb network redirection support
5268 if test "$usb_redir" != "no" ; then
5269 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
5271 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
5272 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
5274 if test "$usb_redir" = "yes"; then
5275 feature_not_found
"usb-redir" "Install usbredir devel"
5281 ##########################################
5282 # check if we have VSS SDK headers for win
5284 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
5285 test "$vss_win32_sdk" != "no" ; then
5286 case "$vss_win32_sdk" in
5287 "") vss_win32_include
="-isystem $source_path" ;;
5288 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
5289 # handle path with spaces. So we symlink the headers into ".sdk/vss".
5290 vss_win32_include
="-isystem $source_path/.sdk/vss"
5291 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
5293 *) vss_win32_include
="-isystem $vss_win32_sdk"
5296 #define __MIDL_user_allocate_free_DEFINED__
5297 #include <inc/win2003/vss.h>
5298 int main(void) { return VSS_CTX_BACKUP; }
5300 if compile_prog
"$vss_win32_include" "" ; then
5301 guest_agent_with_vss
="yes"
5302 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
5303 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
5304 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
5306 if test "$vss_win32_sdk" != "" ; then
5307 echo "ERROR: Please download and install Microsoft VSS SDK:"
5308 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
5309 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
5310 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
5311 echo "ERROR: The headers are extracted in the directory \`inc'."
5312 feature_not_found
"VSS support"
5314 guest_agent_with_vss
="no"
5318 ##########################################
5319 # lookup Windows platform SDK (if not specified)
5320 # The SDK is needed only to build .tlb (type library) file of guest agent
5321 # VSS provider from the source. It is usually unnecessary because the
5322 # pre-compiled .tlb file is included.
5324 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
5325 test "$guest_agent_with_vss" = "yes" ; then
5326 if test -z "$win_sdk"; then
5327 programfiles
="$PROGRAMFILES"
5328 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
5329 if test -n "$programfiles"; then
5330 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
5332 feature_not_found
"Windows SDK"
5334 elif test "$win_sdk" = "no"; then
5339 ##########################################
5340 # check if mingw environment provides a recent ntddscsi.h
5341 if test "$mingw32" = "yes" && test "$guest_agent" != "no"; then
5343 #include <windows.h>
5344 #include <ntddscsi.h>
5346 #if !defined(IOCTL_SCSI_GET_ADDRESS)
5347 #error Missing required ioctl definitions
5349 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
5353 if compile_prog
"" "" ; then
5354 guest_agent_ntddscsi
=yes
5355 libs_qga
="-lsetupapi -lcfgmgr32 $libs_qga"
5359 ##########################################
5360 # virgl renderer probe
5362 if test "$virglrenderer" != "no" ; then
5364 #include <virglrenderer.h>
5365 int main(void) { virgl_renderer_poll(); return 0; }
5367 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
5368 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
5369 virgl_version
=$
($pkg_config --modversion virglrenderer
2>/dev
/null
)
5370 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
5371 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
5374 if test "$virglrenderer" = "yes" ; then
5375 feature_not_found
"virglrenderer"
5381 ##########################################
5386 if $pkg_config capstone
; then
5388 elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
5390 elif test -e "${source_path}/capstone/Makefile" ; then
5392 elif test -z "$capstone" ; then
5395 feature_not_found
"capstone" "Install capstone devel or git submodule"
5400 if ! $pkg_config capstone
; then
5401 feature_not_found
"capstone" "Install capstone devel"
5408 if test "$capstone" = git
; then
5409 git_submodules
="${git_submodules} capstone"
5412 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
5413 if test "$mingw32" = "yes"; then
5414 LIBCAPSTONE
=capstone.lib
5416 LIBCAPSTONE
=libcapstone.a
5418 libs_cpu
="-L\$(BUILD_DIR)/capstone -lcapstone $libs_cpu"
5422 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
5423 libs_cpu
="$($pkg_config --libs capstone) $libs_cpu"
5429 error_exit
"Unknown state for capstone: $capstone"
5433 ##########################################
5434 # check if we have fdatasync
5440 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
5441 return fdatasync(0);
5443 #error Not supported
5447 if compile_prog
"" "" ; then
5451 ##########################################
5452 # check if we have madvise
5456 #include <sys/types.h>
5457 #include <sys/mman.h>
5459 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
5461 if compile_prog
"" "" ; then
5465 ##########################################
5466 # check if we have posix_madvise
5470 #include <sys/mman.h>
5472 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
5474 if compile_prog
"" "" ; then
5478 ##########################################
5479 # check if we have posix_memalign()
5486 return posix_memalign(&p, 8, 8);
5489 if compile_prog
"" "" ; then
5493 ##########################################
5494 # check if we have posix_syslog
5499 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
5501 if compile_prog
"" "" ; then
5505 ##########################################
5506 # check if we have sem_timedwait
5510 #include <semaphore.h>
5511 int main(void) { sem_t s; struct timespec t = {0}; return sem_timedwait(&s, &t); }
5513 if compile_prog
"" "" ; then
5517 ##########################################
5518 # check if we have strchrnul
5524 // Use a haystack that the compiler shouldn't be able to constant fold
5525 char *haystack = (char*)&main;
5526 int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
5528 if compile_prog
"" "" ; then
5532 #########################################
5533 # check if we have st_atim
5537 #include <sys/stat.h>
5539 int main(void) { return offsetof(struct stat, st_atim); }
5541 if compile_prog
"" "" ; then
5545 ##########################################
5546 # check if trace backend exists
5548 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
5549 if test "$?" -ne 0 ; then
5550 error_exit
"invalid trace backends" \
5551 "Please choose supported trace backends."
5554 ##########################################
5555 # For 'ust' backend, test if ust headers are present
5556 if have_backend
"ust"; then
5558 #include <lttng/tracepoint.h>
5559 int main(void) { return 0; }
5561 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
5562 if $pkg_config lttng-ust
--exists; then
5563 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
5565 lttng_ust_libs
="-llttng-ust -ldl"
5567 if $pkg_config liburcu-bp
--exists; then
5568 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
5570 urcu_bp_libs
="-lurcu-bp"
5573 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
5574 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
5576 error_exit
"Trace backend 'ust' missing lttng-ust header files"
5580 ##########################################
5581 # For 'dtrace' backend, test if 'dtrace' command is present
5582 if have_backend
"dtrace"; then
5583 if ! has
'dtrace' ; then
5584 error_exit
"dtrace command is not found in PATH $PATH"
5586 trace_backend_stap
="no"
5587 if has
'stap' ; then
5588 trace_backend_stap
="yes"
5592 ##########################################
5593 # check and set a backend for coroutine
5595 # We prefer ucontext, but it's not always possible. The fallback
5596 # is sigcontext. On Windows the only valid backend is the Windows
5600 if test "$darwin" != "yes"; then
5602 #include <ucontext.h>
5603 #ifdef __stub_makecontext
5604 #error Ignoring glibc stub makecontext which will always fail
5606 int main(void) { makecontext(0, 0, 0); return 0; }
5608 if compile_prog
"" "" ; then
5613 if test "$coroutine" = ""; then
5614 if test "$mingw32" = "yes"; then
5616 elif test "$ucontext_works" = "yes"; then
5619 coroutine
=sigaltstack
5624 if test "$mingw32" != "yes"; then
5625 error_exit
"'windows' coroutine backend only valid for Windows"
5627 # Unfortunately the user visible backend name doesn't match the
5628 # coroutine-*.c filename for this case, so we have to adjust it here.
5632 if test "$ucontext_works" != "yes"; then
5633 feature_not_found
"ucontext"
5637 if test "$mingw32" = "yes"; then
5638 error_exit
"only the 'windows' coroutine backend is valid for Windows"
5642 error_exit
"unknown coroutine backend $coroutine"
5647 if test "$coroutine_pool" = ""; then
5651 if test "$debug_stack_usage" = "yes"; then
5652 if test "$coroutine_pool" = "yes"; then
5653 echo "WARN: disabling coroutine pool for stack usage debugging"
5658 ##################################################
5662 if test "$safe_stack" = "yes"; then
5664 int main(int argc, char *argv[])
5666 #if ! __has_feature(safe_stack)
5667 #error SafeStack Disabled
5672 flag
="-fsanitize=safe-stack"
5673 # Check that safe-stack is supported and enabled.
5674 if compile_prog
"-Werror $flag" "$flag"; then
5675 # Flag needed both at compilation and at linking
5676 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
5677 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
5679 error_exit
"SafeStack not supported by your compiler"
5681 if test "$coroutine" != "ucontext"; then
5682 error_exit
"SafeStack is only supported by the coroutine backend ucontext"
5686 int main(int argc, char *argv[])
5688 #if defined(__has_feature)
5689 #if __has_feature(safe_stack)
5690 #error SafeStack Enabled
5696 if test "$safe_stack" = "no"; then
5697 # Make sure that safe-stack is disabled
5698 if ! compile_prog
"-Werror" ""; then
5699 # SafeStack was already enabled, try to explicitly remove the feature
5700 flag
="-fno-sanitize=safe-stack"
5701 if ! compile_prog
"-Werror $flag" "$flag"; then
5702 error_exit
"Configure cannot disable SafeStack"
5704 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
5705 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
5707 else # "$safe_stack" = ""
5708 # Set safe_stack to yes or no based on pre-existing flags
5709 if compile_prog
"-Werror" ""; then
5713 if test "$coroutine" != "ucontext"; then
5714 error_exit
"SafeStack is only supported by the coroutine backend ucontext"
5720 ##########################################
5721 # check if we have open_by_handle_at
5723 open_by_handle_at
=no
5726 #if !defined(AT_EMPTY_PATH)
5727 # error missing definition
5729 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
5732 if compile_prog
"" "" ; then
5733 open_by_handle_at
=yes
5736 ########################################
5737 # check if we have linux/magic.h
5741 #include <linux/magic.h>
5746 if compile_prog
"" "" ; then
5750 ########################################
5751 # check if we have valgrind/valgrind.h
5755 #include <valgrind/valgrind.h>
5760 if compile_prog
"" "" ; then
5764 ########################################
5765 # check if environ is declared
5775 if compile_prog
"" "" ; then
5779 ########################################
5780 # check if cpuid.h is usable.
5785 unsigned a, b, c, d;
5786 int max = __get_cpuid_max(0, 0);
5789 __cpuid(1, a, b, c, d);
5793 __cpuid_count(7, 0, a, b, c, d);
5799 if compile_prog
"" "" ; then
5803 ##########################################
5804 # avx2 optimization requirement check
5806 # There is no point enabling this if cpuid.h is not usable,
5807 # since we won't be able to select the new routines.
5809 if test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then
5811 #pragma GCC push_options
5812 #pragma GCC target("avx2")
5814 #include <immintrin.h>
5815 static int bar(void *a) {
5816 __m256i x = *(__m256i *)a;
5817 return _mm256_testz_si256(x, x);
5819 int main(int argc, char *argv[]) { return bar(argv[0]); }
5821 if compile_object
"" ; then
5828 ##########################################
5829 # avx512f optimization requirement check
5831 # There is no point enabling this if cpuid.h is not usable,
5832 # since we won't be able to select the new routines.
5833 # by default, it is turned off.
5834 # if user explicitly want to enable it, check environment
5836 if test "$cpuid_h" = "yes" && test "$avx512f_opt" = "yes"; then
5838 #pragma GCC push_options
5839 #pragma GCC target("avx512f")
5841 #include <immintrin.h>
5842 static int bar(void *a) {
5843 __m512i x = *(__m512i *)a;
5844 return _mm512_test_epi64_mask(x, x);
5846 int main(int argc, char *argv[])
5848 return bar(argv[0]);
5851 if ! compile_object
"" ; then
5858 ########################################
5859 # check if __[u]int128_t is usable.
5872 if compile_prog
"" "" ; then
5876 #########################################
5877 # See if 128-bit atomic operations are supported.
5880 if test "$int128" = "yes"; then
5884 unsigned __int128 x = 0, y = 0;
5885 y = __atomic_load_16(&x, 0);
5886 __atomic_store_16(&x, y, 0);
5887 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5891 if compile_prog
"" "" ; then
5897 if test "$int128" = yes && test "$atomic128" = no
; then
5901 unsigned __int128 x = 0, y = 0;
5902 __sync_val_compare_and_swap_16(&x, y, x);
5906 if compile_prog
"" "" ; then
5911 #########################################
5912 # See if 64-bit atomic operations are supported.
5913 # Note that without __atomic builtins, we can only
5914 # assume atomic loads/stores max at pointer size.
5920 uint64_t x = 0, y = 0;
5921 #ifdef __ATOMIC_RELAXED
5922 y = __atomic_load_8(&x, 0);
5923 __atomic_store_8(&x, y, 0);
5924 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5925 __atomic_exchange_8(&x, y, 0);
5926 __atomic_fetch_add_8(&x, y, 0);
5928 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5929 __sync_lock_test_and_set(&x, y);
5930 __sync_val_compare_and_swap(&x, y, 0);
5931 __sync_fetch_and_add(&x, y);
5936 if compile_prog
"" "" ; then
5940 #########################################
5941 # See if --dynamic-list is supported by the linker
5942 ld_dynamic_list
="no"
5943 if test "$static" = "no" ; then
5966 if compile_prog
"" "-Wl,--dynamic-list=$TMPTXT" ; then
5967 ld_dynamic_list
="yes"
5971 #########################################
5972 # See if -exported_symbols_list is supported by the linker
5974 ld_exported_symbols_list
="no"
5975 if test "$static" = "no" ; then
5980 if compile_prog
"" "-Wl,-exported_symbols_list,$TMPTXT" ; then
5981 ld_exported_symbols_list
="yes"
5985 if test "$plugins" = "yes" &&
5986 test "$ld_dynamic_list" = "no" &&
5987 test "$ld_exported_symbols_list" = "no" ; then
5989 "Plugin support requires dynamic linking and specifying a set of symbols " \
5990 "that are exported to plugins. Unfortunately your linker doesn't " \
5991 "support the flag (--dynamic-list or -exported_symbols_list) used " \
5992 "for this purpose. You can't build with --static."
5995 ########################################
5996 # See if __attribute__((alias)) is supported.
5997 # This false for Xcode 9, but has been remedied for Xcode 10.
5998 # Unfortunately, travis uses Xcode 9 by default.
6003 extern const int y __attribute__((alias("x")));
6004 int main(void) { return 0; }
6006 if compile_prog
"" "" ; then
6010 ########################################
6011 # check if getauxval is available.
6015 #include <sys/auxv.h>
6017 return getauxval(AT_HWCAP) == 0;
6020 if compile_prog
"" "" ; then
6024 ########################################
6025 # check if ccache is interfering with
6026 # semantic analysis of macros
6031 static const int Z = 1;
6032 #define fn() ({ Z; })
6033 #define TAUT(X) ((X) == Z)
6034 #define PAREN(X, Y) (X == Y)
6036 int main(int argc, char *argv[])
6042 if (PAREN(x, y)) return 0;
6043 if (TAUT(Z)) return 0;
6048 if ! compile_object
"-Werror"; then
6052 #################################################
6053 # clang does not support glibc + FORTIFY_SOURCE.
6055 if test "$fortify_source" != "no"; then
6056 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
6057 fortify_source
="no";
6058 elif test -n "$cxx" && has
$cxx &&
6059 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
6060 fortify_source
="no";
6062 fortify_source
="yes"
6066 ###############################################
6067 # Check if copy_file_range is provided by glibc
6068 have_copy_file_range
=no
6072 copy_file_range(0, NULL, 0, NULL, 0, 0);
6076 if compile_prog
"" "" ; then
6077 have_copy_file_range
=yes
6080 ##########################################
6081 # check if struct fsxattr is available via linux/fs.h
6085 #include <linux/fs.h>
6091 if compile_prog
"" "" ; then
6095 ##########################################
6096 # check for usable membarrier system call
6097 if test "$membarrier" = "yes"; then
6099 if test "$mingw32" = "yes" ; then
6101 elif test "$linux" = "yes" ; then
6103 #include <linux/membarrier.h>
6104 #include <sys/syscall.h>
6108 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
6109 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
6113 if compile_prog
"" "" ; then
6117 if test "$have_membarrier" = "no"; then
6118 feature_not_found
"membarrier" "membarrier system call not available"
6121 # Do not enable it by default even for Mingw32, because it doesn't
6126 ##########################################
6127 # check if rtnetlink.h exists and is useful
6130 #include <linux/rtnetlink.h>
6132 return IFLA_PROTO_DOWN;
6135 if compile_prog
"" "" ; then
6139 ##########################################
6140 # check for usable AF_VSOCK environment
6144 #include <sys/types.h>
6145 #include <sys/socket.h>
6146 #if !defined(AF_VSOCK)
6147 # error missing AF_VSOCK flag
6149 #include <linux/vm_sockets.h>
6152 struct sockaddr_vm svm;
6153 socklen_t len = sizeof(svm);
6154 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
6155 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
6156 if ((ret == -1) && (errno == ENOTCONN)) {
6162 if compile_prog
"" "" ; then
6166 ##########################################
6167 # check for usable AF_ALG environment
6171 #include <sys/types.h>
6172 #include <sys/socket.h>
6173 #include <linux/if_alg.h>
6176 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
6180 if compile_prog
"" "" ; then
6183 if test "$crypto_afalg" = "yes"
6185 if test "$have_afalg" != "yes"
6187 error_exit
"AF_ALG requested but could not be detected"
6192 #################################################
6193 # Check to see if we have the Hypervisor framework
6194 if [ "$darwin" = "yes" ] ; then
6196 #include <Hypervisor/hv.h>
6197 int main() { return 0;}
6199 if ! compile_object
""; then
6203 QEMU_LDFLAGS
="-framework Hypervisor $QEMU_LDFLAGS"
6207 #################################################
6208 # Sparc implicitly links with --relax, which is
6209 # incompatible with -r, so --no-relax should be
6210 # given. It does no harm to give it on other
6213 # Note: the prototype is needed since QEMU_CFLAGS
6214 # contains -Wmissing-prototypes
6216 extern int foo(void);
6217 int foo(void) { return 0; }
6219 if ! compile_object
""; then
6220 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
6222 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
6223 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
6228 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
6229 feature_not_found
"modules" "Cannot find how to build relocatable objects"
6232 ##########################################
6233 # check for sysmacros.h
6237 #include <sys/sysmacros.h>
6239 return makedev(0, 0);
6242 if compile_prog
"" "" ; then
6246 ##########################################
6247 # check for _Static_assert()
6249 have_static_assert
=no
6251 _Static_assert(1, "success");
6256 if compile_prog
"" "" ; then
6257 have_static_assert
=yes
6260 ##########################################
6261 # check for utmpx.h, it is missing e.g. on OpenBSD
6266 struct utmpx user_info;
6271 if compile_prog
"" "" ; then
6275 ##########################################
6276 # check for getrandom()
6280 #include <sys/random.h>
6282 return getrandom(0, 0, GRND_NONBLOCK);
6285 if compile_prog
"" "" ; then
6289 ##########################################
6290 # checks for sanitizers
6294 have_asan_iface_h
=no
6295 have_asan_iface_fiber
=no
6297 if test "$sanitizers" = "yes" ; then
6299 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
6303 # we could use a simple skeleton for flags checks, but this also
6304 # detect the static linking issue of ubsan, see also:
6305 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
6309 void *tmp = malloc(10);
6311 return *(int *)(tmp + 2);
6316 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
6320 if check_include
"sanitizer/asan_interface.h" ; then
6321 have_asan_iface_h
=yes
6325 #include <sanitizer/asan_interface.h>
6327 __sanitizer_start_switch_fiber(0, 0, 0);
6331 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
6332 have_asan_iface_fiber
=yes
6336 ##########################################
6338 if test "$fuzzing" = "yes" ; then
6339 write_c_fuzzer_skeleton
6340 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address,fuzzer" ""; then
6345 # Thread sanitizer is, for now, much noisier than the other sanitizers;
6346 # keep it separate until that is not the case.
6347 if test "$tsan" = "yes" && test "$sanitizers" = "yes"; then
6348 error_exit
"TSAN is not supported with other sanitiziers."
6351 have_tsan_iface_fiber
=no
6352 if test "$tsan" = "yes" ; then
6354 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then
6358 #include <sanitizer/tsan_interface.h>
6360 __tsan_create_fiber(0);
6364 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then
6365 have_tsan_iface_fiber
=yes
6369 ##########################################
6372 if test "$libpmem" != "no"; then
6373 if $pkg_config --exists "libpmem"; then
6375 libpmem_libs
=$
($pkg_config --libs libpmem
)
6376 libpmem_cflags
=$
($pkg_config --cflags libpmem
)
6377 libs_softmmu
="$libs_softmmu $libpmem_libs"
6378 QEMU_CFLAGS
="$QEMU_CFLAGS $libpmem_cflags"
6380 if test "$libpmem" = "yes" ; then
6381 feature_not_found
"libpmem" "Install nvml or pmdk"
6387 ##########################################
6388 # check for libdaxctl
6390 if test "$libdaxctl" != "no"; then
6391 if $pkg_config --atleast-version=57 "libdaxctl"; then
6393 libdaxctl_libs
=$
($pkg_config --libs libdaxctl
)
6394 libdaxctl_cflags
=$
($pkg_config --cflags libdaxctl
)
6395 libs_softmmu
="$libs_softmmu $libdaxctl_libs"
6396 QEMU_CFLAGS
="$QEMU_CFLAGS $libdaxctl_cflags"
6398 if test "$libdaxctl" = "yes" ; then
6399 feature_not_found
"libdaxctl" "Install libdaxctl"
6405 ##########################################
6408 # slirp is only required when building softmmu targets
6409 if test -z "$slirp" -a "$softmmu" != "yes" ; then
6415 if $pkg_config slirp
; then
6417 elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
6419 elif test -e "${source_path}/slirp/Makefile" ; then
6421 elif test -z "$slirp" ; then
6424 feature_not_found
"slirp" "Install slirp devel or git submodule"
6429 if ! $pkg_config slirp
; then
6430 feature_not_found
"slirp" "Install slirp devel"
6437 if test "$slirp" = git
; then
6438 git_submodules
="${git_submodules} slirp"
6441 slirp_cflags
="-I\$(SRC_PATH)/slirp/src -I\$(BUILD_DIR)/slirp/src"
6442 slirp_libs
="-L\$(BUILD_DIR)/slirp -lslirp"
6443 if test "$mingw32" = "yes" ; then
6444 slirp_libs
="$slirp_libs -lws2_32 -liphlpapi"
6449 slirp_version
=$
($pkg_config --modversion slirp
2>/dev
/null
)
6450 slirp_cflags
=$
($pkg_config --cflags slirp
2>/dev
/null
)
6451 slirp_libs
=$
($pkg_config --libs slirp
2>/dev
/null
)
6457 error_exit
"Unknown state for slirp: $slirp"
6461 ##########################################
6462 # check for usable __NR_keyctl syscall
6464 if test "$linux" = "yes" ; then
6469 #include <asm/unistd.h>
6470 #include <linux/keyctl.h>
6473 return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0);
6476 if compile_prog
"" "" ; then
6480 if test "$secret_keyring" != "no"
6482 if test "$have_keyring" = "yes"
6486 if test "$secret_keyring" = "yes"
6488 error_exit
"syscall __NR_keyctl requested, \
6489 but not implemented on your system"
6496 ##########################################
6497 # check for usable keyutils.h
6499 if test "$linux" = "yes" ; then
6504 #include <asm/unistd.h>
6506 #include <sys/types.h>
6507 #include <keyutils.h>
6509 return request_key("user", NULL, NULL, 0);
6512 if compile_prog
"" "-lkeyutils"; then
6518 ##########################################
6520 # After here, no more $cc or $ld runs
6524 if test "$gcov" = "yes" ; then
6525 QEMU_CFLAGS
="-fprofile-arcs -ftest-coverage -g $QEMU_CFLAGS"
6526 QEMU_LDFLAGS
="-fprofile-arcs -ftest-coverage $QEMU_LDFLAGS"
6527 elif test "$fortify_source" = "yes" ; then
6528 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
6529 elif test "$debug" = "no"; then
6530 CFLAGS
="-O2 $CFLAGS"
6533 if test "$have_asan" = "yes"; then
6534 QEMU_CFLAGS
="-fsanitize=address $QEMU_CFLAGS"
6535 QEMU_LDFLAGS
="-fsanitize=address $QEMU_LDFLAGS"
6536 if test "$have_asan_iface_h" = "no" ; then
6537 echo "ASAN build enabled, but ASAN header missing." \
6538 "Without code annotation, the report may be inferior."
6539 elif test "$have_asan_iface_fiber" = "no" ; then
6540 echo "ASAN build enabled, but ASAN header is too old." \
6541 "Without code annotation, the report may be inferior."
6544 if test "$have_tsan" = "yes" ; then
6545 if test "$have_tsan_iface_fiber" = "yes" ; then
6546 QEMU_CFLAGS
="-fsanitize=thread $QEMU_CFLAGS"
6547 QEMU_LDFLAGS
="-fsanitize=thread $QEMU_LDFLAGS"
6549 error_exit
"Cannot enable TSAN due to missing fiber annotation interface."
6551 elif test "$tsan" = "yes" ; then
6552 error_exit
"Cannot enable TSAN due to missing sanitize thread interface."
6554 if test "$have_ubsan" = "yes"; then
6555 QEMU_CFLAGS
="-fsanitize=undefined $QEMU_CFLAGS"
6556 QEMU_LDFLAGS
="-fsanitize=undefined $QEMU_LDFLAGS"
6559 ##########################################
6561 if test "$libnfs" != "no" ; then
6562 if $pkg_config --atleast-version=1.9.3 libnfs
; then
6564 libnfs_libs
=$
($pkg_config --libs libnfs
)
6566 if test "$libnfs" = "yes" ; then
6567 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
6573 ##########################################
6574 # Do we have libudev
6575 if test "$libudev" != "no" ; then
6576 if $pkg_config libudev
&& test "$static" != "yes"; then
6578 libudev_libs
=$
($pkg_config --libs libudev
)
6584 # Now we've finished running tests it's OK to add -Werror to the compiler flags
6585 if test "$werror" = "yes"; then
6586 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
6589 # Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
6590 if test "$solaris" = "no" && test "$tsan" = "no"; then
6591 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
6592 QEMU_LDFLAGS
="-Wl,--warn-common $QEMU_LDFLAGS"
6596 # test if pod2man has --utf8 option
6597 if pod2man
--help |
grep -q utf8
; then
6598 POD2MAN
="pod2man --utf8"
6603 # Use ASLR, no-SEH and DEP if available
6604 if test "$mingw32" = "yes" ; then
6605 for flag
in --dynamicbase --no-seh --nxcompat; do
6606 if ld_has
$flag ; then
6607 QEMU_LDFLAGS
="-Wl,$flag $QEMU_LDFLAGS"
6612 # Disable OpenBSD W^X if available
6613 if test "$tcg" = "yes" && test "$targetos" = "OpenBSD"; then
6615 int main(void) { return 0; }
6617 wx_ldflags
="-Wl,-z,wxneeded"
6618 if compile_prog
"" "$wx_ldflags"; then
6619 QEMU_LDFLAGS
="$QEMU_LDFLAGS $wx_ldflags"
6623 qemu_confdir
=$sysconfdir$confsuffix
6624 qemu_moddir
=$libdir$confsuffix
6625 qemu_datadir
=$datadir$confsuffix
6626 qemu_localedir
="$datadir/locale"
6627 qemu_icondir
="$datadir/icons"
6628 qemu_desktopdir
="$datadir/applications"
6630 # We can only support ivshmem if we have eventfd
6631 if [ "$eventfd" = "yes" ]; then
6636 if test "$want_tools" = "yes" ; then
6637 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools"
6638 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
6639 tools
="qemu-nbd\$(EXESUF) qemu-storage-daemon\$(EXESUF) $tools"
6641 if [ "$ivshmem" = "yes" ]; then
6642 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
6644 if [ "$curl" = "yes" ]; then
6645 tools
="elf2dmp\$(EXESUF) $tools"
6648 if test "$softmmu" = yes ; then
6649 if test "$linux" = yes; then
6650 if test "$virtfs" != no
&& test "$cap_ng" = yes && test "$attr" = yes ; then
6652 helpers
="$helpers fsdev/virtfs-proxy-helper\$(EXESUF)"
6654 if test "$virtfs" = yes; then
6655 error_exit
"VirtFS requires libcap-ng devel and libattr devel"
6659 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
6662 if test "$mpath" = yes; then
6663 error_exit
"Multipath requires libmpathpersist devel"
6667 helpers
="$helpers scsi/qemu-pr-helper\$(EXESUF)"
6669 if test "$virtfs" = yes; then
6670 error_exit
"VirtFS is supported only on Linux"
6673 if test "$mpath" = yes; then
6674 error_exit
"Multipath is supported only on Linux"
6678 if test "$xkbcommon" = "yes"; then
6679 tools
="qemu-keymap\$(EXESUF) $tools"
6683 # Probe for guest agent support/options
6685 if [ "$guest_agent" != "no" ]; then
6686 if [ "$softmmu" = no
-a "$want_tools" = no
] ; then
6688 elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
6689 tools
="qemu-ga\$(EXESUF) $tools"
6691 elif [ "$guest_agent" != yes ]; then
6694 error_exit
"Guest agent is not supported on this platform"
6698 # Guest agent Window MSI package
6700 if test "$guest_agent" != yes; then
6701 if test "$guest_agent_msi" = yes; then
6702 error_exit
"MSI guest agent package requires guest agent enabled"
6705 elif test "$mingw32" != "yes"; then
6706 if test "$guest_agent_msi" = "yes"; then
6707 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
6710 elif ! has wixl
; then
6711 if test "$guest_agent_msi" = "yes"; then
6712 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
6716 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
6717 # disabled explicitly
6718 if test "$guest_agent_msi" != "no"; then
6723 if test "$guest_agent_msi" = "yes"; then
6724 if test "$guest_agent_with_vss" = "yes"; then
6725 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
6728 if test "$QEMU_GA_MANUFACTURER" = ""; then
6729 QEMU_GA_MANUFACTURER
=QEMU
6732 if test "$QEMU_GA_DISTRO" = ""; then
6733 QEMU_GA_DISTRO
=Linux
6736 if test "$QEMU_GA_VERSION" = ""; then
6737 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
6740 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
6744 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
6747 QEMU_GA_MSI_ARCH
="-D Arch=32"
6750 error_exit
"CPU $cpu not supported for building installation package"
6755 # Mac OS X ships with a broken assembler
6757 if { test "$cpu" = "i386" ||
test "$cpu" = "x86_64"; } && \
6758 test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \
6759 test "$softmmu" = yes ; then
6760 # Different host OS linkers have different ideas about the name of the ELF
6761 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
6762 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
6763 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
6764 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
6765 ld_i386_emulation
="$emu"
6772 # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
6773 if test "$cpu" = "s390x" ; then
6775 if compile_prog
"-march=z900" ""; then
6776 roms
="$roms s390-ccw"
6777 # SLOF is required for building the s390-ccw firmware on s390x,
6778 # since it is using the libnet code from SLOF for network booting.
6779 if test -e "${source_path}/.git" ; then
6780 git_submodules
="${git_submodules} roms/SLOF"
6785 # Check that the C++ compiler exists and works with the C compiler.
6786 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
6789 int c_function(void);
6790 int main(void) { return c_function(); }
6797 int c_function(void);
6799 int c_function(void) { return 42; }
6804 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
6805 # C++ compiler $cxx works ok with C compiler $cc
6808 echo "C++ compiler $cxx does not work with C compiler $cc"
6809 echo "Disabling C++ specific optional code"
6813 echo "No C++ compiler available; disabling C++ specific optional code"
6818 if test "$1" = "yes" ; then
6823 # prepend pixman and ftd flags after all config tests are done
6824 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
6825 QEMU_LDFLAGS
="$fdt_ldflags $QEMU_LDFLAGS"
6826 libs_softmmu
="$pixman_libs $libs_softmmu"
6828 echo "Install prefix $prefix"
6829 echo "BIOS directory $(eval echo $qemu_datadir)"
6830 echo "firmware path $(eval echo $firmwarepath)"
6831 echo "binary directory $(eval echo $bindir)"
6832 echo "library directory $(eval echo $libdir)"
6833 echo "module directory $(eval echo $qemu_moddir)"
6834 echo "libexec directory $(eval echo $libexecdir)"
6835 echo "include directory $(eval echo $includedir)"
6836 echo "config directory $(eval echo $sysconfdir)"
6837 if test "$mingw32" = "no" ; then
6838 echo "local state directory $(eval echo $local_statedir)"
6839 echo "Manual directory $(eval echo $mandir)"
6840 echo "ELF interp prefix $interp_prefix"
6842 echo "local state directory queried at runtime"
6843 echo "Windows SDK $win_sdk"
6845 echo "Build directory $(pwd)"
6846 echo "Source path $source_path"
6847 echo "GIT binary $git"
6848 echo "GIT submodules $git_submodules"
6849 echo "C compiler $cc"
6850 echo "Host C compiler $host_cc"
6851 echo "C++ compiler $cxx"
6852 echo "Objective-C compiler $objcc"
6853 echo "ARFLAGS $ARFLAGS"
6854 echo "CFLAGS $CFLAGS"
6855 echo "QEMU_CFLAGS $QEMU_CFLAGS"
6856 echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
6858 echo "install $install"
6859 echo "python $python ($python_version)"
6860 if test "$docs" != "no"; then
6861 echo "sphinx-build $sphinx_build"
6863 echo "genisoimage $genisoimage"
6864 echo "efi_aarch64 $efi_aarch64"
6865 echo "python_yaml $python_yaml"
6866 echo "slirp support $slirp $(echo_version $slirp $slirp_version)"
6867 if test "$slirp" != "no" ; then
6870 echo "module support $modules"
6871 echo "alt path mod load $module_upgrades"
6872 echo "host CPU $cpu"
6873 echo "host big endian $bigendian"
6874 echo "target list $target_list"
6875 echo "gprof enabled $gprof"
6876 echo "sparse enabled $sparse"
6877 echo "strip binaries $strip_opt"
6878 echo "profiler $profiler"
6879 echo "static build $static"
6880 echo "safe stack $safe_stack"
6881 if test "$darwin" = "yes" ; then
6882 echo "Cocoa support $cocoa"
6884 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
6885 echo "SDL image support $sdl_image"
6886 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
6887 echo "GTK GL support $gtk_gl"
6888 echo "VTE support $vte $(echo_version $vte $vteversion)"
6889 echo "TLS priority $tls_priority"
6890 echo "GNUTLS support $gnutls"
6891 echo "libgcrypt $gcrypt"
6892 if test "$gcrypt" = "yes"
6894 echo " hmac $gcrypt_hmac"
6895 echo " XTS $gcrypt_xts"
6897 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
6898 if test "$nettle" = "yes"
6900 echo " XTS $nettle_xts"
6902 echo "libtasn1 $tasn1"
6903 echo "PAM $auth_pam"
6904 echo "iconv support $iconv"
6905 echo "curses support $curses"
6906 echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
6907 echo "curl support $curl"
6908 echo "mingw32 support $mingw32"
6909 echo "Audio drivers $audio_drv_list"
6910 echo "Block whitelist (rw) $block_drv_rw_whitelist"
6911 echo "Block whitelist (ro) $block_drv_ro_whitelist"
6912 echo "VirtFS support $virtfs"
6913 echo "Multipath support $mpath"
6914 echo "VNC support $vnc"
6915 if test "$vnc" = "yes" ; then
6916 echo "VNC SASL support $vnc_sasl"
6917 echo "VNC JPEG support $vnc_jpeg"
6918 echo "VNC PNG support $vnc_png"
6920 echo "xen support $xen"
6921 if test "$xen" = "yes" ; then
6922 echo "xen ctrl version $xen_ctrl_version"
6924 echo "brlapi support $brlapi"
6925 echo "Documentation $docs"
6927 echo "vde support $vde"
6928 echo "netmap support $netmap"
6929 echo "Linux AIO support $linux_aio"
6930 echo "Linux io_uring support $linux_io_uring"
6931 echo "ATTR/XATTR support $attr"
6932 echo "Install blobs $blobs"
6933 echo "KVM support $kvm"
6934 echo "HAX support $hax"
6935 echo "HVF support $hvf"
6936 echo "WHPX support $whpx"
6937 echo "TCG support $tcg"
6938 if test "$tcg" = "yes" ; then
6939 echo "TCG debug enabled $debug_tcg"
6940 echo "TCG interpreter $tcg_interpreter"
6942 echo "malloc trim support $malloc_trim"
6943 echo "RDMA support $rdma"
6944 echo "PVRDMA support $pvrdma"
6945 echo "fdt support $fdt"
6946 echo "membarrier $membarrier"
6947 echo "preadv support $preadv"
6948 echo "fdatasync $fdatasync"
6949 echo "madvise $madvise"
6950 echo "posix_madvise $posix_madvise"
6951 echo "posix_memalign $posix_memalign"
6952 echo "libcap-ng support $cap_ng"
6953 echo "vhost-net support $vhost_net"
6954 echo "vhost-crypto support $vhost_crypto"
6955 echo "vhost-scsi support $vhost_scsi"
6956 echo "vhost-vsock support $vhost_vsock"
6957 echo "vhost-user support $vhost_user"
6958 echo "vhost-user-fs support $vhost_user_fs"
6959 echo "vhost-vdpa support $vhost_vdpa"
6960 echo "Trace backends $trace_backends"
6961 if have_backend
"simple"; then
6962 echo "Trace output file $trace_file-<pid>"
6964 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
6965 echo "rbd support $rbd"
6966 echo "xfsctl support $xfs"
6967 echo "smartcard support $smartcard"
6968 echo "libusb $libusb"
6969 echo "usb net redir $usb_redir"
6970 echo "OpenGL support $opengl"
6971 echo "OpenGL dmabufs $opengl_dmabuf"
6972 echo "libiscsi support $libiscsi"
6973 echo "libnfs support $libnfs"
6974 echo "build guest agent $guest_agent"
6975 echo "QGA VSS support $guest_agent_with_vss"
6976 echo "QGA w32 disk info $guest_agent_ntddscsi"
6977 echo "QGA MSI support $guest_agent_msi"
6978 echo "seccomp support $seccomp"
6979 echo "coroutine backend $coroutine"
6980 echo "coroutine pool $coroutine_pool"
6981 echo "debug stack usage $debug_stack_usage"
6982 echo "mutex debugging $debug_mutex"
6983 echo "crypto afalg $crypto_afalg"
6984 echo "GlusterFS support $glusterfs"
6985 echo "gcov $gcov_tool"
6986 echo "gcov enabled $gcov"
6987 echo "TPM support $tpm"
6988 echo "libssh support $libssh"
6989 echo "QOM debugging $qom_cast_debug"
6990 echo "Live block migration $live_block_migration"
6991 echo "lzo support $lzo"
6992 echo "snappy support $snappy"
6993 echo "bzip2 support $bzip2"
6994 echo "lzfse support $lzfse"
6995 echo "zstd support $zstd"
6996 echo "NUMA host support $numa"
6997 echo "libxml2 $libxml2"
6998 echo "tcmalloc support $tcmalloc"
6999 echo "jemalloc support $jemalloc"
7000 echo "avx2 optimization $avx2_opt"
7001 echo "avx512f optimization $avx512f_opt"
7002 echo "replication support $replication"
7003 echo "bochs support $bochs"
7004 echo "cloop support $cloop"
7005 echo "dmg support $dmg"
7006 echo "qcow v1 support $qcow1"
7007 echo "vdi support $vdi"
7008 echo "vvfat support $vvfat"
7009 echo "qed support $qed"
7010 echo "parallels support $parallels"
7011 echo "sheepdog support $sheepdog"
7012 echo "capstone $capstone"
7013 echo "libpmem support $libpmem"
7014 echo "libdaxctl support $libdaxctl"
7015 echo "libudev $libudev"
7016 echo "default devices $default_devices"
7017 echo "plugin support $plugins"
7018 echo "fuzzing support $fuzzing"
7020 echo "rng-none $rng_none"
7021 echo "Linux keyring $secret_keyring"
7023 if test "$supported_cpu" = "no"; then
7025 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
7027 echo "CPU host architecture $cpu support is not currently maintained."
7028 echo "The QEMU project intends to remove support for this host CPU in"
7029 echo "a future release if nobody volunteers to maintain it and to"
7030 echo "provide a build host for our continuous integration setup."
7031 echo "configure has succeeded and you can continue to build, but"
7032 echo "if you care about QEMU on this platform you should contact"
7033 echo "us upstream at qemu-devel@nongnu.org."
7036 if test "$supported_os" = "no"; then
7038 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
7040 echo "Host OS $targetos support is not currently maintained."
7041 echo "The QEMU project intends to remove support for this host OS in"
7042 echo "a future release if nobody volunteers to maintain it and to"
7043 echo "provide a build host for our continuous integration setup."
7044 echo "configure has succeeded and you can continue to build, but"
7045 echo "if you care about QEMU on this platform you should contact"
7046 echo "us upstream at qemu-devel@nongnu.org."
7049 config_host_mak
="config-host.mak"
7051 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
7053 echo "# Automatically generated by configure - do not modify" > $config_host_mak
7054 echo >> $config_host_mak
7056 echo all
: >> $config_host_mak
7057 echo "prefix=$prefix" >> $config_host_mak
7058 echo "bindir=$bindir" >> $config_host_mak
7059 echo "libdir=$libdir" >> $config_host_mak
7060 echo "libexecdir=$libexecdir" >> $config_host_mak
7061 echo "includedir=$includedir" >> $config_host_mak
7062 echo "mandir=$mandir" >> $config_host_mak
7063 echo "sysconfdir=$sysconfdir" >> $config_host_mak
7064 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
7065 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
7066 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
7067 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
7068 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
7069 if test "$mingw32" = "no" ; then
7070 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
7072 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
7073 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
7074 echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
7075 echo "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak
7076 echo "libs_cpu=$libs_cpu" >> $config_host_mak
7077 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
7078 echo "GIT=$git" >> $config_host_mak
7079 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
7080 echo "GIT_UPDATE=$git_update" >> $config_host_mak
7082 echo "ARCH=$ARCH" >> $config_host_mak
7084 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
7085 echo "GLIB_LDFLAGS=$glib_ldflags" >> $config_host_mak
7087 if test "$default_devices" = "yes" ; then
7088 echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak
7090 echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak
7092 if test "$debug_tcg" = "yes" ; then
7093 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
7095 if test "$strip_opt" = "yes" ; then
7096 echo "STRIP=${strip}" >> $config_host_mak
7098 if test "$bigendian" = "yes" ; then
7099 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
7101 if test "$mingw32" = "yes" ; then
7102 echo "CONFIG_WIN32=y" >> $config_host_mak
7103 rc_version
=$
(cat $source_path/VERSION
)
7104 version_major
=${rc_version%%.*}
7105 rc_version
=${rc_version#*.}
7106 version_minor
=${rc_version%%.*}
7107 rc_version
=${rc_version#*.}
7108 version_subminor
=${rc_version%%.*}
7110 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
7111 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
7112 if test "$guest_agent_with_vss" = "yes" ; then
7113 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
7114 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
7115 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
7117 if test "$guest_agent_ntddscsi" = "yes" ; then
7118 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
7120 if test "$guest_agent_msi" = "yes"; then
7121 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
7122 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
7123 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
7124 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
7125 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
7126 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
7127 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
7130 echo "CONFIG_POSIX=y" >> $config_host_mak
7133 if test "$linux" = "yes" ; then
7134 echo "CONFIG_LINUX=y" >> $config_host_mak
7137 if test "$darwin" = "yes" ; then
7138 echo "CONFIG_DARWIN=y" >> $config_host_mak
7141 if test "$solaris" = "yes" ; then
7142 echo "CONFIG_SOLARIS=y" >> $config_host_mak
7144 if test "$haiku" = "yes" ; then
7145 echo "CONFIG_HAIKU=y" >> $config_host_mak
7147 if test "$static" = "yes" ; then
7148 echo "CONFIG_STATIC=y" >> $config_host_mak
7150 if test "$profiler" = "yes" ; then
7151 echo "CONFIG_PROFILER=y" >> $config_host_mak
7153 if test "$want_tools" = "yes" ; then
7154 echo "CONFIG_TOOLS=y" >> $config_host_mak
7156 if test "$slirp" != "no"; then
7157 echo "CONFIG_SLIRP=y" >> $config_host_mak
7158 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
7159 echo "SLIRP_CFLAGS=$slirp_cflags" >> $config_host_mak
7160 echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak
7162 if [ "$slirp" = "git" -o "$slirp" = "internal" ]; then
7163 echo "config-host.h: slirp/all" >> $config_host_mak
7165 if test "$vde" = "yes" ; then
7166 echo "CONFIG_VDE=y" >> $config_host_mak
7167 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
7169 if test "$netmap" = "yes" ; then
7170 echo "CONFIG_NETMAP=y" >> $config_host_mak
7172 if test "$l2tpv3" = "yes" ; then
7173 echo "CONFIG_L2TPV3=y" >> $config_host_mak
7175 if test "$gprof" = "yes" ; then
7176 echo "CONFIG_GPROF=y" >> $config_host_mak
7178 if test "$cap_ng" = "yes" ; then
7179 echo "CONFIG_LIBCAP_NG=y" >> $config_host_mak
7181 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
7182 for drv
in $audio_drv_list; do
7183 def
=CONFIG_AUDIO_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
7185 alsa | oss | pa | sdl
)
7186 echo "$def=m" >> $config_host_mak ;;
7188 echo "$def=y" >> $config_host_mak ;;
7191 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
7192 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
7193 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
7194 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
7195 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
7196 echo "JACK_LIBS=$jack_libs" >> $config_host_mak
7197 if test "$audio_win_int" = "yes" ; then
7198 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
7200 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
7201 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
7202 if test "$vnc" = "yes" ; then
7203 echo "CONFIG_VNC=y" >> $config_host_mak
7205 if test "$vnc_sasl" = "yes" ; then
7206 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
7208 if test "$vnc_jpeg" = "yes" ; then
7209 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
7211 if test "$vnc_png" = "yes" ; then
7212 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
7214 if test "$xkbcommon" = "yes" ; then
7215 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
7216 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
7218 if test "$xfs" = "yes" ; then
7219 echo "CONFIG_XFS=y" >> $config_host_mak
7221 qemu_version
=$
(head $source_path/VERSION
)
7222 echo "VERSION=$qemu_version" >>$config_host_mak
7223 echo "PKGVERSION=$pkgversion" >>$config_host_mak
7224 echo "SRC_PATH=$source_path" >> $config_host_mak
7225 echo "TARGET_DIRS=$target_list" >> $config_host_mak
7226 if [ "$docs" = "yes" ] ; then
7227 echo "BUILD_DOCS=yes" >> $config_host_mak
7229 if test "$modules" = "yes"; then
7230 # $shacmd can generate a hash started with digit, which the compiler doesn't
7231 # like as an symbol. So prefix it with an underscore
7232 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
7233 echo "CONFIG_MODULES=y" >> $config_host_mak
7235 if test "$module_upgrades" = "yes"; then
7236 echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak
7238 if test "$have_x11" = "yes" && test "$need_x11" = "yes"; then
7239 echo "CONFIG_X11=y" >> $config_host_mak
7240 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
7241 echo "X11_LIBS=$x11_libs" >> $config_host_mak
7243 if test "$sdl" = "yes" ; then
7244 echo "CONFIG_SDL=m" >> $config_host_mak
7245 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
7246 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
7247 if test "$sdl_image" = "yes" ; then
7248 echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak
7251 if test "$cocoa" = "yes" ; then
7252 echo "CONFIG_COCOA=y" >> $config_host_mak
7254 if test "$iconv" = "yes" ; then
7255 echo "CONFIG_ICONV=y" >> $config_host_mak
7256 echo "ICONV_CFLAGS=$iconv_cflags" >> $config_host_mak
7257 echo "ICONV_LIBS=$iconv_lib" >> $config_host_mak
7259 if test "$curses" = "yes" ; then
7260 echo "CONFIG_CURSES=m" >> $config_host_mak
7261 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
7262 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
7264 if test "$pipe2" = "yes" ; then
7265 echo "CONFIG_PIPE2=y" >> $config_host_mak
7267 if test "$accept4" = "yes" ; then
7268 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
7270 if test "$splice" = "yes" ; then
7271 echo "CONFIG_SPLICE=y" >> $config_host_mak
7273 if test "$eventfd" = "yes" ; then
7274 echo "CONFIG_EVENTFD=y" >> $config_host_mak
7276 if test "$memfd" = "yes" ; then
7277 echo "CONFIG_MEMFD=y" >> $config_host_mak
7279 if test "$have_usbfs" = "yes" ; then
7280 echo "CONFIG_USBFS=y" >> $config_host_mak
7282 if test "$fallocate" = "yes" ; then
7283 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
7285 if test "$fallocate_punch_hole" = "yes" ; then
7286 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
7288 if test "$fallocate_zero_range" = "yes" ; then
7289 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
7291 if test "$posix_fallocate" = "yes" ; then
7292 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
7294 if test "$sync_file_range" = "yes" ; then
7295 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
7297 if test "$fiemap" = "yes" ; then
7298 echo "CONFIG_FIEMAP=y" >> $config_host_mak
7300 if test "$dup3" = "yes" ; then
7301 echo "CONFIG_DUP3=y" >> $config_host_mak
7303 if test "$ppoll" = "yes" ; then
7304 echo "CONFIG_PPOLL=y" >> $config_host_mak
7306 if test "$prctl_pr_set_timerslack" = "yes" ; then
7307 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
7309 if test "$epoll" = "yes" ; then
7310 echo "CONFIG_EPOLL=y" >> $config_host_mak
7312 if test "$epoll_create1" = "yes" ; then
7313 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
7315 if test "$sendfile" = "yes" ; then
7316 echo "CONFIG_SENDFILE=y" >> $config_host_mak
7318 if test "$timerfd" = "yes" ; then
7319 echo "CONFIG_TIMERFD=y" >> $config_host_mak
7321 if test "$setns" = "yes" ; then
7322 echo "CONFIG_SETNS=y" >> $config_host_mak
7324 if test "$clock_adjtime" = "yes" ; then
7325 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
7327 if test "$syncfs" = "yes" ; then
7328 echo "CONFIG_SYNCFS=y" >> $config_host_mak
7330 if test "$kcov" = "yes" ; then
7331 echo "CONFIG_KCOV=y" >> $config_host_mak
7333 if test "$inotify" = "yes" ; then
7334 echo "CONFIG_INOTIFY=y" >> $config_host_mak
7336 if test "$inotify1" = "yes" ; then
7337 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
7339 if test "$sem_timedwait" = "yes" ; then
7340 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
7342 if test "$strchrnul" = "yes" ; then
7343 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
7345 if test "$st_atim" = "yes" ; then
7346 echo "HAVE_STRUCT_STAT_ST_ATIM=y" >> $config_host_mak
7348 if test "$byteswap_h" = "yes" ; then
7349 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
7351 if test "$bswap_h" = "yes" ; then
7352 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
7354 if test "$curl" = "yes" ; then
7355 echo "CONFIG_CURL=m" >> $config_host_mak
7356 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
7357 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
7359 if test "$brlapi" = "yes" ; then
7360 echo "CONFIG_BRLAPI=y" >> $config_host_mak
7361 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
7363 if test "$gtk" = "yes" ; then
7364 echo "CONFIG_GTK=m" >> $config_host_mak
7365 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
7366 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
7367 if test "$gtk_gl" = "yes" ; then
7368 echo "CONFIG_GTK_GL=y" >> $config_host_mak
7371 if test "$gio" = "yes" ; then
7372 echo "CONFIG_GIO=y" >> $config_host_mak
7373 echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
7374 echo "GIO_LIBS=$gio_libs" >> $config_host_mak
7375 echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak
7377 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
7378 if test "$gnutls" = "yes" ; then
7379 echo "CONFIG_GNUTLS=y" >> $config_host_mak
7381 if test "$gcrypt" = "yes" ; then
7382 echo "CONFIG_GCRYPT=y" >> $config_host_mak
7383 if test "$gcrypt_hmac" = "yes" ; then
7384 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
7387 if test "$nettle" = "yes" ; then
7388 echo "CONFIG_NETTLE=y" >> $config_host_mak
7389 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
7391 if test "$qemu_private_xts" = "yes" ; then
7392 echo "CONFIG_QEMU_PRIVATE_XTS=y" >> $config_host_mak
7394 if test "$tasn1" = "yes" ; then
7395 echo "CONFIG_TASN1=y" >> $config_host_mak
7397 if test "$auth_pam" = "yes" ; then
7398 echo "CONFIG_AUTH_PAM=y" >> $config_host_mak
7400 if test "$have_ifaddrs_h" = "yes" ; then
7401 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
7403 if test "$have_drm_h" = "yes" ; then
7404 echo "HAVE_DRM_H=y" >> $config_host_mak
7406 if test "$have_broken_size_max" = "yes" ; then
7407 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
7409 if test "$have_openpty" = "yes" ; then
7410 echo "HAVE_OPENPTY=y" >> $config_host_mak
7412 if test "$have_sys_signal_h" = "yes" ; then
7413 echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak
7416 # Work around a system header bug with some kernel/XFS header
7417 # versions where they both try to define 'struct fsxattr':
7418 # xfs headers will not try to redefine structs from linux headers
7419 # if this macro is set.
7420 if test "$have_fsxattr" = "yes" ; then
7421 echo "HAVE_FSXATTR=y" >> $config_host_mak
7423 if test "$have_copy_file_range" = "yes" ; then
7424 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
7426 if test "$vte" = "yes" ; then
7427 echo "CONFIG_VTE=y" >> $config_host_mak
7428 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
7429 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
7431 if test "$virglrenderer" = "yes" ; then
7432 echo "CONFIG_VIRGL=y" >> $config_host_mak
7433 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
7434 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
7436 if test "$xen" = "yes" ; then
7437 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
7438 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
7440 if test "$linux_aio" = "yes" ; then
7441 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
7443 if test "$linux_io_uring" = "yes" ; then
7444 echo "CONFIG_LINUX_IO_URING=y" >> $config_host_mak
7445 echo "LINUX_IO_URING_CFLAGS=$linux_io_uring_cflags" >> $config_host_mak
7446 echo "LINUX_IO_URING_LIBS=$linux_io_uring_libs" >> $config_host_mak
7448 if test "$attr" = "yes" ; then
7449 echo "CONFIG_ATTR=y" >> $config_host_mak
7451 if test "$libattr" = "yes" ; then
7452 echo "CONFIG_LIBATTR=y" >> $config_host_mak
7454 if test "$virtfs" = "yes" ; then
7455 echo "CONFIG_VIRTFS=y" >> $config_host_mak
7457 if test "$mpath" = "yes" ; then
7458 echo "CONFIG_MPATH=y" >> $config_host_mak
7459 if test "$mpathpersist_new_api" = "yes"; then
7460 echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
7463 if test "$vhost_scsi" = "yes" ; then
7464 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
7466 if test "$vhost_net" = "yes" ; then
7467 echo "CONFIG_VHOST_NET=y" >> $config_host_mak
7469 if test "$vhost_net_user" = "yes" ; then
7470 echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak
7472 if test "$vhost_net_vdpa" = "yes" ; then
7473 echo "CONFIG_VHOST_NET_VDPA=y" >> $config_host_mak
7475 if test "$vhost_crypto" = "yes" ; then
7476 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
7478 if test "$vhost_vsock" = "yes" ; then
7479 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
7480 if test "$vhost_user" = "yes" ; then
7481 echo "CONFIG_VHOST_USER_VSOCK=y" >> $config_host_mak
7484 if test "$vhost_kernel" = "yes" ; then
7485 echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak
7487 if test "$vhost_user" = "yes" ; then
7488 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
7490 if test "$vhost_vdpa" = "yes" ; then
7491 echo "CONFIG_VHOST_VDPA=y" >> $config_host_mak
7493 if test "$vhost_user_fs" = "yes" ; then
7494 echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
7496 if test "$blobs" = "yes" ; then
7497 echo "INSTALL_BLOBS=yes" >> $config_host_mak
7499 if test "$iovec" = "yes" ; then
7500 echo "CONFIG_IOVEC=y" >> $config_host_mak
7502 if test "$preadv" = "yes" ; then
7503 echo "CONFIG_PREADV=y" >> $config_host_mak
7505 if test "$fdt" != "no" ; then
7506 echo "CONFIG_FDT=y" >> $config_host_mak
7508 if test "$membarrier" = "yes" ; then
7509 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
7511 if test "$signalfd" = "yes" ; then
7512 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
7514 if test "$optreset" = "yes" ; then
7515 echo "HAVE_OPTRESET=y" >> $config_host_mak
7517 if test "$tcg" = "yes"; then
7518 echo "CONFIG_TCG=y" >> $config_host_mak
7519 if test "$tcg_interpreter" = "yes" ; then
7520 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
7523 if test "$fdatasync" = "yes" ; then
7524 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
7526 if test "$madvise" = "yes" ; then
7527 echo "CONFIG_MADVISE=y" >> $config_host_mak
7529 if test "$posix_madvise" = "yes" ; then
7530 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
7532 if test "$posix_memalign" = "yes" ; then
7533 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
7536 if test "$spice" = "yes" ; then
7537 echo "CONFIG_SPICE=y" >> $config_host_mak
7540 if test "$smartcard" = "yes" ; then
7541 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
7542 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
7543 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
7546 if test "$libusb" = "yes" ; then
7547 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
7548 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
7549 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
7552 if test "$usb_redir" = "yes" ; then
7553 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
7554 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
7555 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
7558 if test "$opengl" = "yes" ; then
7559 echo "CONFIG_OPENGL=y" >> $config_host_mak
7560 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
7561 if test "$opengl_dmabuf" = "yes" ; then
7562 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
7566 if test "$gbm" = "yes" ; then
7567 echo "CONFIG_GBM=y" >> $config_host_mak
7568 echo "GBM_LIBS=$gbm_libs" >> $config_host_mak
7569 echo "GBM_CFLAGS=$gbm_cflags" >> $config_host_mak
7573 if test "$malloc_trim" = "yes" ; then
7574 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
7577 if test "$avx2_opt" = "yes" ; then
7578 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
7581 if test "$avx512f_opt" = "yes" ; then
7582 echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
7585 if test "$lzo" = "yes" ; then
7586 echo "CONFIG_LZO=y" >> $config_host_mak
7589 if test "$snappy" = "yes" ; then
7590 echo "CONFIG_SNAPPY=y" >> $config_host_mak
7593 if test "$bzip2" = "yes" ; then
7594 echo "CONFIG_BZIP2=y" >> $config_host_mak
7595 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
7598 if test "$lzfse" = "yes" ; then
7599 echo "CONFIG_LZFSE=y" >> $config_host_mak
7600 echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
7603 if test "$zstd" = "yes" ; then
7604 echo "CONFIG_ZSTD=y" >> $config_host_mak
7607 if test "$libiscsi" = "yes" ; then
7608 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
7609 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
7610 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
7613 if test "$libnfs" = "yes" ; then
7614 echo "CONFIG_LIBNFS=m" >> $config_host_mak
7615 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
7618 if test "$seccomp" = "yes"; then
7619 echo "CONFIG_SECCOMP=y" >> $config_host_mak
7620 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
7621 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
7624 # XXX: suppress that
7625 if [ "$bsd" = "yes" ] ; then
7626 echo "CONFIG_BSD=y" >> $config_host_mak
7629 if test "$localtime_r" = "yes" ; then
7630 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
7632 if test "$qom_cast_debug" = "yes" ; then
7633 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
7635 if test "$rbd" = "yes" ; then
7636 echo "CONFIG_RBD=m" >> $config_host_mak
7637 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
7638 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
7641 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
7642 if test "$coroutine_pool" = "yes" ; then
7643 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
7645 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
7648 if test "$debug_stack_usage" = "yes" ; then
7649 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
7652 if test "$crypto_afalg" = "yes" ; then
7653 echo "CONFIG_AF_ALG=y" >> $config_host_mak
7656 if test "$open_by_handle_at" = "yes" ; then
7657 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
7660 if test "$linux_magic_h" = "yes" ; then
7661 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
7664 if test "$valgrind_h" = "yes" ; then
7665 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
7668 if test "$have_asan_iface_fiber" = "yes" ; then
7669 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
7672 if test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then
7673 echo "CONFIG_TSAN=y" >> $config_host_mak
7676 if test "$has_environ" = "yes" ; then
7677 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
7680 if test "$cpuid_h" = "yes" ; then
7681 echo "CONFIG_CPUID_H=y" >> $config_host_mak
7684 if test "$int128" = "yes" ; then
7685 echo "CONFIG_INT128=y" >> $config_host_mak
7688 if test "$atomic128" = "yes" ; then
7689 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
7692 if test "$cmpxchg128" = "yes" ; then
7693 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
7696 if test "$atomic64" = "yes" ; then
7697 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
7700 if test "$attralias" = "yes" ; then
7701 echo "CONFIG_ATTRIBUTE_ALIAS=y" >> $config_host_mak
7704 if test "$getauxval" = "yes" ; then
7705 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
7708 if test "$glusterfs" = "yes" ; then
7709 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
7710 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
7711 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
7714 if test "$glusterfs_xlator_opt" = "yes" ; then
7715 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
7718 if test "$glusterfs_discard" = "yes" ; then
7719 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
7722 if test "$glusterfs_fallocate" = "yes" ; then
7723 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
7726 if test "$glusterfs_zerofill" = "yes" ; then
7727 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
7730 if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
7731 echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
7734 if test "$glusterfs_iocb_has_stat" = "yes" ; then
7735 echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak
7738 if test "$libssh" = "yes" ; then
7739 echo "CONFIG_LIBSSH=m" >> $config_host_mak
7740 echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
7741 echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak
7744 if test "$live_block_migration" = "yes" ; then
7745 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
7748 if test "$tpm" = "yes"; then
7749 echo 'CONFIG_TPM=y' >> $config_host_mak
7752 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
7753 if have_backend
"nop"; then
7754 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
7756 if have_backend
"simple"; then
7757 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
7758 # Set the appropriate trace file.
7759 trace_file
="\"$trace_file-\" FMT_pid"
7761 if have_backend
"log"; then
7762 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
7764 if have_backend
"ust"; then
7765 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
7767 if have_backend
"dtrace"; then
7768 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
7769 if test "$trace_backend_stap" = "yes" ; then
7770 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
7773 if have_backend
"ftrace"; then
7774 if test "$linux" = "yes" ; then
7775 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
7777 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
7780 if have_backend
"syslog"; then
7781 if test "$posix_syslog" = "yes" ; then
7782 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
7784 feature_not_found
"syslog(trace backend)" "syslog not available"
7787 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
7789 if test "$rdma" = "yes" ; then
7790 echo "CONFIG_RDMA=y" >> $config_host_mak
7791 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
7794 if test "$pvrdma" = "yes" ; then
7795 echo "CONFIG_PVRDMA=y" >> $config_host_mak
7798 if test "$have_rtnetlink" = "yes" ; then
7799 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
7802 if test "$libxml2" = "yes" ; then
7803 echo "CONFIG_LIBXML2=y" >> $config_host_mak
7804 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
7805 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
7808 if test "$replication" = "yes" ; then
7809 echo "CONFIG_REPLICATION=y" >> $config_host_mak
7812 if test "$have_af_vsock" = "yes" ; then
7813 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
7816 if test "$have_sysmacros" = "yes" ; then
7817 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
7820 if test "$have_static_assert" = "yes" ; then
7821 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
7824 if test "$have_utmpx" = "yes" ; then
7825 echo "HAVE_UTMPX=y" >> $config_host_mak
7827 if test "$have_getrandom" = "yes" ; then
7828 echo "CONFIG_GETRANDOM=y" >> $config_host_mak
7830 if test "$ivshmem" = "yes" ; then
7831 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
7833 if test "$capstone" != "no" ; then
7834 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
7836 if test "$debug_mutex" = "yes" ; then
7837 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
7840 # Hold two types of flag:
7841 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
7842 # a thread we have a handle to
7843 # CONFIG_PTHREAD_SETNAME_NP_W_TID - A way of doing it on a particular
7845 if test "$pthread_setname_np_w_tid" = "yes" ; then
7846 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
7847 echo "CONFIG_PTHREAD_SETNAME_NP_W_TID=y" >> $config_host_mak
7848 elif test "$pthread_setname_np_wo_tid" = "yes" ; then
7849 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
7850 echo "CONFIG_PTHREAD_SETNAME_NP_WO_TID=y" >> $config_host_mak
7853 if test "$libpmem" = "yes" ; then
7854 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
7857 if test "$libdaxctl" = "yes" ; then
7858 echo "CONFIG_LIBDAXCTL=y" >> $config_host_mak
7861 if test "$bochs" = "yes" ; then
7862 echo "CONFIG_BOCHS=y" >> $config_host_mak
7864 if test "$cloop" = "yes" ; then
7865 echo "CONFIG_CLOOP=y" >> $config_host_mak
7867 if test "$dmg" = "yes" ; then
7868 echo "CONFIG_DMG=y" >> $config_host_mak
7870 if test "$qcow1" = "yes" ; then
7871 echo "CONFIG_QCOW1=y" >> $config_host_mak
7873 if test "$vdi" = "yes" ; then
7874 echo "CONFIG_VDI=y" >> $config_host_mak
7876 if test "$vvfat" = "yes" ; then
7877 echo "CONFIG_VVFAT=y" >> $config_host_mak
7879 if test "$qed" = "yes" ; then
7880 echo "CONFIG_QED=y" >> $config_host_mak
7882 if test "$parallels" = "yes" ; then
7883 echo "CONFIG_PARALLELS=y" >> $config_host_mak
7885 if test "$sheepdog" = "yes" ; then
7886 echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
7888 if test "$pty_h" = "yes" ; then
7889 echo "HAVE_PTY_H=y" >> $config_host_mak
7891 if test "$have_mlockall" = "yes" ; then
7892 echo "HAVE_MLOCKALL=y" >> $config_host_mak
7894 if test "$fuzzing" = "yes" ; then
7895 if test "$have_fuzzer" = "yes"; then
7896 FUZZ_LDFLAGS
=" -fsanitize=address,fuzzer"
7897 FUZZ_CFLAGS
=" -fsanitize=address,fuzzer"
7898 CFLAGS
="$CFLAGS -fsanitize=address,fuzzer-no-link"
7900 error_exit
"Your compiler doesn't support -fsanitize=address,fuzzer"
7905 if test "$plugins" = "yes" ; then
7906 echo "CONFIG_PLUGIN=y" >> $config_host_mak
7908 # Copy the export object list to the build dir
7909 if test "$ld_dynamic_list" = "yes" ; then
7910 echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak
7911 ld_symbols
=qemu-plugins-ld.symbols
7912 cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols
7913 elif test "$ld_exported_symbols_list" = "yes" ; then
7914 echo "CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST=yes" >> $config_host_mak
7915 ld64_symbols
=qemu-plugins-ld64.symbols
7916 echo "# Automatically generated by configure - do not modify" > $ld64_symbols
7917 grep 'qemu_' "$source_path/plugins/qemu-plugins.symbols" |
sed 's/;//g' | \
7918 sed -E 's/^[[:space:]]*(.*)/_\1/' >> $ld64_symbols
7921 "If \$plugins=yes, either \$ld_dynamic_list or " \
7922 "\$ld_exported_symbols_list should have been set to 'yes'."
7926 if test -n "$gdb_bin" ; then
7927 echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak
7930 if test "$secret_keyring" = "yes" ; then
7931 echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak
7932 if test "$have_keyutils" = "yes" ; then
7933 echo "CONFIG_TEST_SECRET_KEYRING=y" >> $config_host_mak
7937 if test "$tcg_interpreter" = "yes"; then
7938 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
7939 elif test "$ARCH" = "sparc64" ; then
7940 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
7941 elif test "$ARCH" = "s390x" ; then
7942 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
7943 elif test "$ARCH" = "x86_64" ||
test "$ARCH" = "x32" ; then
7944 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
7945 elif test "$ARCH" = "ppc64" ; then
7946 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
7947 elif test "$ARCH" = "riscv32" ||
test "$ARCH" = "riscv64" ; then
7948 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/riscv $QEMU_INCLUDES"
7950 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
7953 echo "HELPERS=$helpers" >> $config_host_mak
7954 echo "TOOLS=$tools" >> $config_host_mak
7955 echo "ROMS=$roms" >> $config_host_mak
7956 echo "MAKE=$make" >> $config_host_mak
7957 echo "INSTALL=$install" >> $config_host_mak
7958 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
7959 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
7960 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
7961 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
7962 echo "PYTHON=$python" >> $config_host_mak
7963 echo "SPHINX_BUILD=$sphinx_build" >> $config_host_mak
7964 echo "SPHINX_WERROR=$sphinx_werror" >> $config_host_mak
7965 echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
7966 echo "EFI_AARCH64=$efi_aarch64" >> $config_host_mak
7967 echo "PYTHON_YAML=$python_yaml" >> $config_host_mak
7968 echo "CC=$cc" >> $config_host_mak
7969 if $iasl -h > /dev
/null
2>&1; then
7970 echo "IASL=$iasl" >> $config_host_mak
7972 echo "HOST_CC=$host_cc" >> $config_host_mak
7973 echo "CXX=$cxx" >> $config_host_mak
7974 echo "OBJCC=$objcc" >> $config_host_mak
7975 echo "AR=$ar" >> $config_host_mak
7976 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
7977 echo "AS=$as" >> $config_host_mak
7978 echo "CCAS=$ccas" >> $config_host_mak
7979 echo "CPP=$cpp" >> $config_host_mak
7980 echo "OBJCOPY=$objcopy" >> $config_host_mak
7981 echo "LD=$ld" >> $config_host_mak
7982 echo "RANLIB=$ranlib" >> $config_host_mak
7983 echo "NM=$nm" >> $config_host_mak
7984 echo "PKG_CONFIG=$pkg_config_exe" >> $config_host_mak
7985 echo "WINDRES=$windres" >> $config_host_mak
7986 echo "CFLAGS=$CFLAGS" >> $config_host_mak
7987 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
7988 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
7989 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
7990 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
7991 if test "$sparse" = "yes" ; then
7992 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
7993 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
7994 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
7995 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
7996 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
7998 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
7999 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
8000 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
8001 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
8002 echo "LIBS+=$LIBS" >> $config_host_mak
8003 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
8004 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
8005 echo "EXESUF=$EXESUF" >> $config_host_mak
8006 echo "DSOSUF=$DSOSUF" >> $config_host_mak
8007 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
8008 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
8009 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
8010 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
8011 echo "POD2MAN=$POD2MAN" >> $config_host_mak
8012 if test "$gcov" = "yes" ; then
8013 echo "CONFIG_GCOV=y" >> $config_host_mak
8014 echo "GCOV=$gcov_tool" >> $config_host_mak
8017 if test "$libudev" != "no"; then
8018 echo "CONFIG_LIBUDEV=y" >> $config_host_mak
8019 echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak
8021 if test "$fuzzing" != "no"; then
8022 echo "CONFIG_FUZZ=y" >> $config_host_mak
8023 echo "FUZZ_CFLAGS=$FUZZ_CFLAGS" >> $config_host_mak
8024 echo "FUZZ_LDFLAGS=$FUZZ_LDFLAGS" >> $config_host_mak
8027 if test "$edk2_blobs" = "yes" ; then
8028 echo "DECOMPRESS_EDK2_BLOBS=y" >> $config_host_mak
8031 if test "$rng_none" = "yes"; then
8032 echo "CONFIG_RNG_NONE=y" >> $config_host_mak
8035 # use included Linux headers
8036 if test "$linux" = "yes" ; then
8037 mkdir
-p linux-headers
8055 # For most CPUs the kernel architecture name and QEMU CPU name match.
8059 # For non-KVM architectures we will not have asm headers
8060 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
8061 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
8065 for target
in $target_list; do
8066 target_dir
="$target"
8067 config_target_mak
=$target_dir/config-target.mak
8068 target_name
=$
(echo $target | cut
-d '-' -f 1)
8069 target_aligned_only
="no"
8070 case "$target_name" in
8071 alpha|hppa|mips64el|mips64|mipsel|mips|mipsn32|mipsn32el|sh4|sh4eb|sparc|sparc64|sparc32plus|xtensa|xtensaeb
)
8072 target_aligned_only
="yes"
8075 target_bigendian
="no"
8076 case "$target_name" in
8077 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
8078 target_bigendian
="yes"
8082 target_user_only
="no"
8083 target_linux_user
="no"
8084 target_bsd_user
="no"
8086 ${target_name}-softmmu)
8087 target_softmmu
="yes"
8089 ${target_name}-linux-user)
8090 target_user_only
="yes"
8091 target_linux_user
="yes"
8093 ${target_name}-bsd-user)
8094 target_user_only
="yes"
8095 target_bsd_user
="yes"
8098 error_exit
"Target '$target' not recognised"
8103 mkdir
-p $target_dir
8104 echo "# Automatically generated by configure - do not modify" > $config_target_mak
8108 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
8111 TARGET_ARCH
="$target_name"
8115 case "$target_name" in
8118 gdb_xml_files
="i386-32bit.xml"
8119 TARGET_SYSTBL_ABI
=i386
8122 TARGET_BASE_ARCH
=i386
8123 TARGET_SYSTBL_ABI
=common
,64
8125 gdb_xml_files
="i386-64bit.xml"
8129 TARGET_SYSTBL_ABI
=common
8133 TARGET_SYSTBL_ABI
=common
,oabi
8136 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml arm-m-profile.xml"
8140 TARGET_BASE_ARCH
=arm
8143 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml arm-m-profile.xml"
8146 gdb_xml_files
="avr-cpu.xml"
8147 target_compiler
=$cross_cc_avr
8153 TARGET_SYSTBL_ABI
=common
,32
8159 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-core.xml m68k-fp.xml"
8160 TARGET_SYSTBL_ABI
=common
8162 microblaze|microblazeel
)
8163 TARGET_ARCH
=microblaze
8164 TARGET_SYSTBL_ABI
=common
8166 echo "TARGET_ABI32=y" >> $config_target_mak
8171 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
8172 TARGET_SYSTBL_ABI
=o32
8177 TARGET_BASE_ARCH
=mips
8178 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
8179 echo "TARGET_ABI32=y" >> $config_target_mak
8180 TARGET_SYSTBL_ABI
=n32
8185 TARGET_BASE_ARCH
=mips
8186 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
8187 TARGET_SYSTBL_ABI
=n64
8194 TARGET_ARCH
=openrisc
8195 TARGET_BASE_ARCH
=openrisc
8198 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
8199 TARGET_SYSTBL_ABI
=common
,nospu
,32
8202 TARGET_BASE_ARCH
=ppc
8204 TARGET_SYSTBL_ABI
=common
,nospu
,64
8206 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
8210 TARGET_BASE_ARCH
=ppc
8212 TARGET_SYSTBL_ABI
=common
,nospu
,64
8214 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
8218 TARGET_BASE_ARCH
=ppc
8220 TARGET_SYSTBL_ABI
=common
,nospu
,32
8221 echo "TARGET_ABI32=y" >> $config_target_mak
8222 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
8225 TARGET_BASE_ARCH
=riscv
8226 TARGET_ABI_DIR
=riscv
8228 gdb_xml_files
="riscv-32bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-32bit-csr.xml riscv-32bit-virtual.xml"
8231 TARGET_BASE_ARCH
=riscv
8232 TARGET_ABI_DIR
=riscv
8234 gdb_xml_files
="riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-csr.xml riscv-64bit-virtual.xml"
8239 target_compiler
=$cross_cc_rx
8240 gdb_xml_files
="rx-core.xml"
8244 TARGET_SYSTBL_ABI
=common
8248 TARGET_SYSTBL_ABI
=common
,32
8251 TARGET_BASE_ARCH
=sparc
8252 TARGET_SYSTBL_ABI
=common
,64
8256 TARGET_BASE_ARCH
=sparc
8257 TARGET_ABI_DIR
=sparc
8258 TARGET_SYSTBL_ABI
=common
,32
8259 echo "TARGET_ABI32=y" >> $config_target_mak
8262 TARGET_SYSTBL_ABI
=common
,64
8264 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
8274 TARGET_SYSTBL_ABI
=common
8279 error_exit
"Unsupported target CPU"
8282 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
8283 if [ "$TARGET_BASE_ARCH" = "" ]; then
8284 TARGET_BASE_ARCH
=$TARGET_ARCH
8287 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
8290 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
8293 target_arch_name
="$(upper $TARGET_ARCH)"
8294 echo "TARGET_$target_arch_name=y" >> $config_target_mak
8295 echo "TARGET_NAME=$target_name" >> $config_target_mak
8296 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
8297 if [ "$TARGET_ABI_DIR" = "" ]; then
8298 TARGET_ABI_DIR
=$TARGET_ARCH
8300 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
8301 if [ "$HOST_VARIANT_DIR" != "" ]; then
8302 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
8304 if [ "$TARGET_SYSTBL_ABI" != "" ]; then
8305 echo "TARGET_SYSTBL_ABI=$TARGET_SYSTBL_ABI" >> $config_target_mak
8308 if supported_xen_target
$target; then
8309 echo "CONFIG_XEN=y" >> $config_target_mak
8310 echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak
8311 if test "$xen_pci_passthrough" = yes; then
8312 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
8315 echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak
8317 if supported_kvm_target
$target; then
8318 echo "CONFIG_KVM=y" >> $config_target_mak
8319 echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak
8321 echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak
8323 if supported_hax_target
$target; then
8324 echo "CONFIG_HAX=y" >> $config_target_mak
8326 if supported_hvf_target
$target; then
8327 echo "CONFIG_HVF=y" >> $config_target_mak
8329 if supported_whpx_target
$target; then
8330 echo "CONFIG_WHPX=y" >> $config_target_mak
8332 if test "$target_aligned_only" = "yes" ; then
8333 echo "TARGET_ALIGNED_ONLY=y" >> $config_target_mak
8335 if test "$target_bigendian" = "yes" ; then
8336 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
8338 if test "$target_softmmu" = "yes" ; then
8339 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
8340 if test "$mttcg" = "yes" ; then
8341 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
8344 if test "$target_user_only" = "yes" ; then
8345 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
8346 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
8348 if test "$target_linux_user" = "yes" ; then
8349 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
8352 if test ! -z "$gdb_xml_files" ; then
8353 for x
in $gdb_xml_files; do
8354 list
="$list $source_path/gdb-xml/$x"
8356 echo "TARGET_XML_FILES=$list" >> $config_target_mak
8359 if test "$target_user_only" = "yes" && test "$bflt" = "yes"; then
8360 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
8362 if test "$target_bsd_user" = "yes" ; then
8363 echo "CONFIG_BSD_USER=y" >> $config_target_mak
8367 # generate QEMU_CFLAGS/QEMU_LDFLAGS for targets
8373 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
8374 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
8377 for i
in $ARCH $TARGET_BASE_ARCH ; do
8380 disas_config
"ALPHA"
8383 if test -n "${cxx}"; then
8384 disas_config
"ARM_A64"
8389 if test -n "${cxx}"; then
8390 disas_config
"ARM_A64"
8412 disas_config
"MICROBLAZE"
8416 if test -n "${cxx}"; then
8417 disas_config
"NANOMIPS"
8421 disas_config
"MOXIE"
8424 disas_config
"NIOS2"
8427 disas_config
"OPENRISC"
8433 disas_config
"RISCV"
8445 disas_config
"SPARC"
8448 disas_config
"XTENSA"
8452 if test "$tcg_interpreter" = "yes" ; then
8458 # Ensure there's only a single GP
8459 cflags
="-msmall-data $cflags"
8463 if test "$gprof" = "yes" ; then
8464 if test "$target_linux_user" = "yes" ; then
8466 ldflags
="-p $ldflags"
8468 if test "$target_softmmu" = "yes" ; then
8469 ldflags
="-p $ldflags"
8470 echo "GPROF_CFLAGS=-p" >> $config_target_mak
8474 # Newer kernels on s390 check for an S390_PGSTE program header and
8475 # enable the pgste page table extensions in that case. This makes
8476 # the vm.allocate_pgste sysctl unnecessary. We enable this program
8478 # - we build on s390x
8479 # - we build the system emulation for s390x (qemu-system-s390x)
8481 # - the linker supports --s390-pgste
8482 if test "$TARGET_ARCH" = "s390x" && test "$target_softmmu" = "yes" && \
8483 test "$ARCH" = "s390x" && test "$kvm" = "yes"; then
8484 if ld_has
--s390-pgste ; then
8485 ldflags
="-Wl,--s390-pgste $ldflags"
8489 echo "QEMU_LDFLAGS+=$ldflags" >> $config_target_mak
8490 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
8492 done # for target in $targets
8494 echo "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak
8495 echo "PIXMAN_LIBS=$pixman_libs" >> $config_host_mak
8497 if [ "$fdt" = "git" ]; then
8498 echo "config-host.h: dtc/all" >> $config_host_mak
8500 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
8501 echo "config-host.h: capstone/all" >> $config_host_mak
8503 if test -n "$LIBCAPSTONE"; then
8504 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
8507 if test "$numa" = "yes"; then
8508 echo "CONFIG_NUMA=y" >> $config_host_mak
8511 if test "$ccache_cpp2" = "yes"; then
8512 echo "export CCACHE_CPP2=y" >> $config_host_mak
8515 if test "$safe_stack" = "yes"; then
8516 echo "CONFIG_SAFESTACK=y" >> $config_host_mak
8519 # If we're using a separate build tree, set it up now.
8520 # DIRS are directories which we simply mkdir in the build tree;
8521 # LINKS are things to symlink back into the source tree
8522 # (these can be both files and directories).
8523 # Caution: do not add files or directories here using wildcards. This
8524 # will result in problems later if a new file matching the wildcard is
8525 # added to the source tree -- nothing will cause configure to be rerun
8526 # so the build tree will be missing the link back to the new file, and
8527 # tests might fail. Prefer to keep the relevant files in their own
8528 # directory and symlink the directory instead.
8529 DIRS
="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos"
8530 DIRS
="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
8531 DIRS
="$DIRS docs docs/interop fsdev scsi"
8532 DIRS
="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
8533 DIRS
="$DIRS roms/seabios"
8535 LINKS
="$LINKS tests/tcg/lm32/Makefile po/Makefile"
8536 LINKS
="$LINKS tests/tcg/Makefile.target tests/fp/Makefile"
8537 LINKS
="$LINKS tests/plugin/Makefile"
8538 LINKS
="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
8539 LINKS
="$LINKS pc-bios/s390-ccw/Makefile"
8540 LINKS
="$LINKS roms/seabios/Makefile"
8541 LINKS
="$LINKS pc-bios/qemu-icon.bmp"
8542 LINKS
="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
8543 LINKS
="$LINKS tests/acceptance tests/data"
8544 LINKS
="$LINKS tests/qemu-iotests/check"
8545 LINKS
="$LINKS python"
8547 $source_path/pc-bios
/*.bin \
8548 $source_path/pc-bios
/*.lid \
8549 $source_path/pc-bios
/*.rom \
8550 $source_path/pc-bios
/*.dtb \
8551 $source_path/pc-bios
/*.img \
8552 $source_path/pc-bios
/openbios-
* \
8553 $source_path/pc-bios
/u-boot.
* \
8554 $source_path/pc-bios
/edk2-
*.fd.bz2 \
8555 $source_path/pc-bios
/palcode-
*
8557 LINKS
="$LINKS pc-bios/$(basename $bios_file)"
8560 for f
in $LINKS ; do
8561 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
8562 symlink
"$source_path/$f" "$f"
8566 (for i
in $cross_cc_vars; do
8569 export target_list source_path use_containers
8570 $source_path/tests
/tcg
/configure.sh
)
8572 # temporary config to build submodules
8573 for rom
in seabios
; do
8574 config_mak
=roms
/$rom/config.mak
8575 echo "# Automatically generated by configure - do not modify" > $config_mak
8576 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
8577 echo "AS=$as" >> $config_mak
8578 echo "CCAS=$ccas" >> $config_mak
8579 echo "CC=$cc" >> $config_mak
8580 echo "BCC=bcc" >> $config_mak
8581 echo "CPP=$cpp" >> $config_mak
8582 echo "OBJCOPY=objcopy" >> $config_mak
8583 echo "IASL=$iasl" >> $config_mak
8584 echo "LD=$ld" >> $config_mak
8585 echo "RANLIB=$ranlib" >> $config_mak
8588 # set up qemu-iotests in this build directory
8589 iotests_common_env
="tests/qemu-iotests/common.env"
8591 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
8592 echo >> "$iotests_common_env"
8593 echo "export PYTHON='$python'" >> "$iotests_common_env"
8595 # Save the configure command line for later reuse.
8596 cat <<EOD >config.status
8598 # Generated by configure.
8599 # Run this file to recreate the current configuration.
8600 # Compiler output produced by configure, useful for debugging
8601 # configure, is in config.log if it exists.
8607 eval envval
=\$
$envname
8609 if test -n "$envval"
8611 echo "$envname='$envval'" >> config.status
8612 echo "export $envname" >> config.status
8614 echo "unset $envname" >> config.status
8618 # Preserve various env variables that influence what
8619 # features/build target configure will detect
8625 preserve_env INSTALL
8627 preserve_env LD_LIBRARY_PATH
8628 preserve_env LIBTOOL
8631 preserve_env OBJCOPY
8633 preserve_env PKG_CONFIG
8634 preserve_env PKG_CONFIG_LIBDIR
8635 preserve_env PKG_CONFIG_PATH
8637 preserve_env SDL2_CONFIG
8640 preserve_env WINDRES
8642 printf "exec" >>config.status
8643 printf " '%s'" "$0" "$@" >>config.status
8644 echo ' "$@"' >>config.status
8645 chmod +x config.status