3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE
= GREP_OPTIONS
=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE
=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC
="${TMPDIR1}/${TMPB}.c"
29 TMPO
="${TMPDIR1}/${TMPB}.o"
30 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
31 TMPE
="${TMPDIR1}/${TMPB}.exe"
32 TMPMO
="${TMPDIR1}/${TMPB}.mo"
36 # Print a helpful header at the top of config.log
37 echo "# QEMU configure log $(date)" >> config.log
38 printf "# Configured with:" >> config.log
39 printf " '%s'" "$0" "$@" >> config.log
41 echo "#" >> config.log
46 while test -n "$2"; do
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
63 if test -n "$BASH_VERSION"; then eval '
66 lines: ${BASH_LINENO[*]}"
68 echo $compiler "$@" >> config.log
69 $compiler "$@" >> config.log
2>&1 ||
return $?
70 # Test passed. If this is an --enable-werror build, rerun
71 # the test with -Werror and bail out if it fails. This
72 # makes warning-generating-errors in configure test code
73 # obvious to developers.
74 if test "$werror" != "yes"; then
77 # Don't bother rerunning the compile if we were already using -Werror
83 echo $compiler -Werror "$@" >> config.log
84 $compiler -Werror "$@" >> config.log
2>&1 && return $?
85 error_exit
"configure test passed without -Werror but failed with -Werror." \
86 "This is probably a bug in the configure script. The failing command" \
87 "will be at the bottom of config.log." \
88 "You can run configure with --disable-werror to bypass this check."
92 do_compiler
"$cc" "$@"
96 do_compiler
"$cxx" "$@"
100 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
101 # options which some versions of GCC's C++ compiler complain about
102 # because they only make sense for C programs.
103 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
105 for arg
in $QEMU_CFLAGS; do
108 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
109 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
112 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
120 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
126 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
129 # symbolically link $1 to $2. Portable version of "ln -sf".
132 mkdir
-p "$(dirname "$2")"
136 # check whether a command is available to this shell (may be either an
137 # executable or a builtin)
139 type "$1" >/dev
/null
2>&1
142 # search for an executable in PATH
148 # pathname has a dir component?
149 if [ "${local_command#*/}" != "$local_command" ]; then
150 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
151 echo "$local_command"
155 if [ -z "$local_command" ]; then
160 for local_dir
in $PATH; do
161 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
162 echo "$local_dir/$local_command"
163 IFS
="${local_ifs:-$(printf ' \t\n')}"
168 IFS
="${local_ifs:-$(printf ' \t\n')}"
173 echo "$trace_backends" |
grep "$1" >/dev
/null
177 eval test -z '"${1#'"$2"'}"'
180 supported_hax_target
() {
181 test "$hax" = "yes" ||
return 1
182 glob
"$1" "*-softmmu" ||
return 1
183 case "${1%-softmmu}" in
191 supported_kvm_target
() {
192 test "$kvm" = "yes" ||
return 1
193 glob
"$1" "*-softmmu" ||
return 1
194 case "${1%-softmmu}:$cpu" in
195 arm
:arm | aarch64
:aarch64 | \
196 i386
:i386 | i386
:x86_64 | i386
:x32 | \
197 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
198 mips
:mips | mipsel
:mips | \
199 ppc
:ppc | ppc64
:ppc | ppc
:ppc64 | ppc64
:ppc64 | \
207 supported_xen_target
() {
208 test "$xen" = "yes" ||
return 1
209 glob
"$1" "*-softmmu" ||
return 1
210 # Only i386 and x86_64 provide the xenpv machine.
211 case "${1%-softmmu}" in
219 supported_hvf_target
() {
220 test "$hvf" = "yes" ||
return 1
221 glob
"$1" "*-softmmu" ||
return 1
222 case "${1%-softmmu}" in
230 supported_whpx_target
() {
231 test "$whpx" = "yes" ||
return 1
232 glob
"$1" "*-softmmu" ||
return 1
233 case "${1%-softmmu}" in
246 if test "$linux" != "yes"; then
247 print_error
"Target '$target' is only available on a Linux host"
252 if test "$bsd" != "yes"; then
253 print_error
"Target '$target' is only available on a BSD host"
258 print_error
"Invalid target name '$target'"
262 test "$tcg" = "yes" && return 0
263 supported_kvm_target
"$1" && return 0
264 supported_xen_target
"$1" && return 0
265 supported_hax_target
"$1" && return 0
266 supported_hvf_target
"$1" && return 0
267 supported_whpx_target
"$1" && return 0
268 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
274 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
278 source_path
=$
(dirname "$0")
281 interp_prefix
="/usr/gnemul/qemu-%M"
285 block_drv_rw_whitelist
=""
286 block_drv_ro_whitelist
=""
296 if test -e "$source_path/.git"
299 git_submodules
="ui/keycodemapdb"
300 git_submodules
="$git_submodules tests/fp/berkeley-testfloat-3"
301 git_submodules
="$git_submodules tests/fp/berkeley-softfloat-3"
306 if ! test -f "$source_path/ui/keycodemapdb/README"
309 echo "ERROR: missing file $source_path/ui/keycodemapdb/README"
311 echo "This is not a GIT checkout but module content appears to"
312 echo "be missing. Do not use 'git archive' or GitHub download links"
313 echo "to acquire QEMU source archives. Non-GIT builds are only"
314 echo "supported with source archives linked from:"
316 echo " https://www.qemu.org/download/"
318 echo "Developers working with GIT can use scripts/archive-source.sh"
319 echo "if they need to create valid source archives."
326 # Don't accept a target_list environment variable.
329 # Default value for a variable defining feature "foo".
330 # * foo="no" feature will only be used if --enable-foo arg is given
331 # * foo="" feature will be searched for, and if found, will be used
332 # unless --disable-foo is given
333 # * foo="yes" this value will only be set by --enable-foo flag.
334 # feature will searched for,
335 # if not found, configure exits with error
337 # Always add --enable-foo and --disable-foo command line args.
338 # Distributions want to ensure that several features are compiled in, and it
339 # is impossible without a --enable-foo that exits if a feature is not found.
361 xen_pv_domain_build
="no"
362 xen_pci_passthrough
=""
394 LDFLAGS_SHARED
="-shared"
397 mandir
="\${prefix}/share/man"
398 datadir
="\${prefix}/share"
399 firmwarepath
="\${prefix}/share/qemu-firmware"
400 qemu_docdir
="\${prefix}/share/doc/qemu"
401 bindir
="\${prefix}/bin"
402 libdir
="\${prefix}/lib"
403 libexecdir
="\${prefix}/libexec"
404 includedir
="\${prefix}/include"
405 sysconfdir
="\${prefix}/etc"
406 local_statedir
="\${prefix}/var"
440 guest_agent_with_vss
="no"
441 guest_agent_ntddscsi
="no"
450 debug_stack_usage
="no"
454 glusterfs_xlator_opt
="no"
455 glusterfs_discard
="no"
456 glusterfs_fallocate
="no"
457 glusterfs_zerofill
="no"
460 tls_priority
="NORMAL"
469 live_block_migration
="yes"
490 # cross compilers defaults, can be overridden with --cross-cc-ARCH
491 cross_cc_aarch64
="aarch64-linux-gnu-gcc"
492 cross_cc_aarch64_be
="$cross_cc_aarch64"
493 cross_cc_cflags_aarch64_be
="-mbig-endian"
494 cross_cc_arm
="arm-linux-gnueabihf-gcc"
495 cross_cc_cflags_armeb
="-mbig-endian"
496 cross_cc_i386
="i386-pc-linux-gnu-gcc"
497 cross_cc_cflags_i386
=""
498 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
499 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
501 enabled_cross_compilers
=""
508 # parse CC options first
510 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
512 --cross-prefix=*) cross_prefix
="$optarg"
516 --cxx=*) CXX
="$optarg"
518 --source-path=*) source_path
="$optarg"
520 --cpu=*) cpu
="$optarg"
522 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
524 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
526 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
527 EXTRA_LDFLAGS
="$optarg"
529 --enable-debug-info) debug_info
="yes"
531 --disable-debug-info) debug_info
="no"
533 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
535 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
536 eval "cross_cc_cflags_${cc_arch}=\$optarg"
538 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
539 eval "cross_cc_${cc_arch}=\$optarg"
544 # Using uname is really, really broken. Once we have the right set of checks
545 # we can eliminate its usage altogether.
547 # Preferred compiler:
549 # ${cross_prefix}gcc (if cross-prefix specified)
551 if test -z "${CC}${cross_prefix}"; then
554 cc
="${CC-${cross_prefix}gcc}"
557 if test -z "${CXX}${cross_prefix}"; then
560 cxx
="${CXX-${cross_prefix}g++}"
563 ar="${AR-${cross_prefix}ar}"
564 as
="${AS-${cross_prefix}as}"
567 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
568 ld
="${LD-${cross_prefix}ld}"
569 ranlib
="${RANLIB-${cross_prefix}ranlib}"
570 nm
="${NM-${cross_prefix}nm}"
571 strip
="${STRIP-${cross_prefix}strip}"
572 windres
="${WINDRES-${cross_prefix}windres}"
573 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
575 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
577 pkg_config
=query_pkg_config
578 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
579 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
581 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
582 ARFLAGS
="${ARFLAGS-rv}"
584 # default flags for all hosts
585 # We use -fwrapv to tell the compiler that we require a C dialect where
586 # left shift of signed integers is well defined and has the expected
587 # 2s-complement style results. (Both clang and gcc agree that it
588 # provides these semantics.)
589 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
590 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
591 QEMU_CFLAGS
="-Wmissing-format-attribute $QEMU_CFLAGS"
592 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
593 QEMU_CFLAGS
="-Wno-unused-parameter $QEMU_CFLAGS"
594 QEMU_CFLAGS
="-Wno-missing-field-initializers $QEMU_CFLAGS"
595 QEMU_CFLAGS
="-Wno-sign-compare $QEMU_CFLAGS"
596 QEMU_CFLAGS
="-Wno-override-init $QEMU_CFLAGS"
597 QEMU_CFLAGS
="-Wno-error=format $QEMU_CFLAGS"
598 QEMU_CFLAGS
="-Wno-error=format-extra-args $QEMU_CFLAGS"
599 QEMU_CFLAGS
="-Wno-error=parentheses $QEMU_CFLAGS"
600 QEMU_CFLAGS
="-Wextra $QEMU_CFLAGS"
601 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
602 QEMU_INCLUDES
="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
603 if test "$debug_info" = "yes"; then
605 LDFLAGS
="-g $LDFLAGS"
608 # make source path absolute
609 source_path
=$
(cd "$source_path"; pwd)
611 cc_macros
=$
($cc $QEMU_CFLAGS -E -dD - </dev
/null
)
613 # running configure in the source tree?
614 # we know that's the case if configure is there.
615 if test -f "./configure"; then
616 pwd_is_source_path
="y"
618 pwd_is_source_path
="n"
625 #error $1 not defined
627 int main(void) { return 0; }
635 int main(void) { return 0; }
642 int main(void) { return 0; }
646 if check_define __linux__
; then
648 elif check_define _WIN32
; then
650 elif check_define __OpenBSD__
; then
652 elif check_define __sun__
; then
654 elif check_define __HAIKU__
; then
656 elif check_define __FreeBSD__
; then
658 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
659 targetos
='GNU/kFreeBSD'
660 elif check_define __DragonFly__
; then
662 elif check_define __NetBSD__
; then
664 elif check_define __APPLE__
; then
667 # This is a fatal error, but don't report it yet, because we
668 # might be going to just print the --help text, or it might
669 # be the result of a missing compiler.
674 # Some host OSes need non-standard checks for which CPU to use.
675 # Note that these checks are broken for cross-compilation: if you're
676 # cross-compiling to one of these OSes then you'll need to specify
677 # the correct CPU with the --cpu option.
680 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
681 # run 64-bit userspace code.
682 # If the user didn't specify a CPU explicitly and the kernel says this is
683 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
684 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
689 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
690 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
695 if test ! -z "$cpu" ; then
696 # command line argument
698 elif check_define __i386__
; then
700 elif check_define __x86_64__
; then
701 if check_define __ILP32__
; then
706 elif check_define __sparc__
; then
707 if check_define __arch64__
; then
712 elif check_define _ARCH_PPC
; then
713 if check_define _ARCH_PPC64
; then
718 elif check_define __mips__
; then
719 if check_define __mips64
; then
724 elif check_define __s390__
; then
725 if check_define __s390x__
; then
730 elif check_define __arm__
; then
732 elif check_define __aarch64__
; then
739 # Normalise host CPU name and set ARCH.
740 # Note that this case should only have supported host CPUs, not guests.
742 ppc|ppc64|s390|s390x|sparc64|x32
)
745 eval "cross_cc_${cpu}=\$host_cc"
747 i386|i486|i586|i686|i86pc|BePC
)
750 cross_cc_i386
=$host_cc
755 cross_cc_x86_64
=$host_cc
760 cross_cc_arm
=$host_cc
765 cross_cc_aarch64
=$host_cc
769 if check_define __MIPSEL__
; then
773 cross_cc_mips
=$host_cc
778 cross_cc_sparc
=$host_cc
784 # This will result in either an error or falling back to TCI later
788 if test -z "$ARCH"; then
794 # host *BSD for user mode
801 audio_possible_drivers
="dsound sdl"
802 if check_include dsound.h
; then
803 audio_drv_list
="dsound"
812 audio_possible_drivers
="oss sdl pa"
818 audio_possible_drivers
="oss sdl pa"
819 # needed for kinfo_getvmmap(3) in libutil.h
821 # needed for kinfo_getproc
822 libs_qga
="-lutil $libs_qga"
823 netmap
="" # enable netmap autodetect
824 HOST_VARIANT_DIR
="freebsd"
831 audio_possible_drivers
="oss sdl pa"
832 HOST_VARIANT_DIR
="dragonfly"
838 audio_possible_drivers
="oss sdl"
840 HOST_VARIANT_DIR
="netbsd"
847 audio_possible_drivers
="sdl"
848 HOST_VARIANT_DIR
="openbsd"
856 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
857 if [ "$cpu" = "x86_64" ] ; then
858 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
859 LDFLAGS
="-arch x86_64 $LDFLAGS"
862 audio_drv_list
="coreaudio"
863 audio_possible_drivers
="coreaudio sdl"
864 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
865 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
866 # Disable attempts to use ObjectiveC features in os/object.h since they
867 # won't work when we're compiling with gcc as a C compiler.
868 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
869 HOST_VARIANT_DIR
="darwin"
875 install="${INSTALL-ginstall}"
876 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
877 if test -f /usr
/include
/sys
/soundcard.h
; then
880 audio_possible_drivers
="oss sdl"
881 # needed for CMSG_ macros in sys/socket.h
882 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
883 # needed for TIOCWIN* defines in termios.h
884 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
885 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
886 solarisnetlibs
="-lsocket -lnsl -lresolv"
887 LIBS
="$solarisnetlibs $LIBS"
888 libs_qga
="$solarisnetlibs $libs_qga"
892 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
893 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
897 audio_possible_drivers
="oss alsa sdl pa"
905 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES"
911 if [ "$bsd" = "yes" ] ; then
912 if [ "$darwin" != "yes" ] ; then
917 : ${make=${MAKE-make}}
918 : ${install=${INSTALL-install}}
919 : ${python=${PYTHON-python}}
920 : ${smbd=${SMBD-/usr/sbin/smbd}}
922 # Default objcc to clang if available, otherwise use CC
929 if test "$mingw32" = "yes" ; then
932 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
933 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
934 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
935 # MinGW-w64 needs _POSIX defined.
936 QEMU_CFLAGS
="-D_POSIX=1 $QEMU_CFLAGS"
937 # MinGW needs -mthreads for TLS and macro _MT.
938 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
939 QEMU_CFLAGS
="-I\$(SRC_PATH)/hosts/w32/include $QEMU_CFLAGS"
940 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
942 if compile_prog
"" "-liberty" ; then
943 LIBS
="-liberty $LIBS"
945 prefix
="c:/Program Files/QEMU"
948 qemu_docdir
="\${prefix}"
950 sysconfdir
="\${prefix}"
953 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
959 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
961 --help|
-h) show_help
=yes
963 --version|
-V) exec cat $source_path/VERSION
965 --prefix=*) prefix
="$optarg"
967 --interp-prefix=*) interp_prefix
="$optarg"
975 --host-cc=*) host_cc
="$optarg"
979 --iasl=*) iasl
="$optarg"
981 --objcc=*) objcc
="$optarg"
983 --make=*) make="$optarg"
985 --install=*) install="$optarg"
987 --python=*) python
="$optarg"
989 --gcov=*) gcov_tool
="$optarg"
991 --smbd=*) smbd
="$optarg"
1001 --disable-debug-info)
1013 --target-list=*) target_list
="$optarg"
1015 --enable-trace-backends=*) trace_backends
="$optarg"
1017 # XXX: backwards compatibility
1018 --enable-trace-backend=*) trace_backends
="$optarg"
1020 --with-trace-file=*) trace_file
="$optarg"
1022 --enable-gprof) gprof
="yes"
1024 --enable-gcov) gcov
="yes"
1028 LDFLAGS
="-static $LDFLAGS"
1029 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
1031 --mandir=*) mandir
="$optarg"
1033 --bindir=*) bindir
="$optarg"
1035 --libdir=*) libdir
="$optarg"
1037 --libexecdir=*) libexecdir
="$optarg"
1039 --includedir=*) includedir
="$optarg"
1041 --datadir=*) datadir
="$optarg"
1043 --with-confsuffix=*) confsuffix
="$optarg"
1045 --docdir=*) qemu_docdir
="$optarg"
1047 --sysconfdir=*) sysconfdir
="$optarg"
1049 --localstatedir=*) local_statedir
="$optarg"
1051 --firmwarepath=*) firmwarepath
="$optarg"
1053 --host=*|
--build=*|\
1054 --disable-dependency-tracking|\
1055 --sbindir=*|
--sharedstatedir=*|\
1056 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
1057 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
1058 # These switches are silently ignored, for compatibility with
1059 # autoconf-generated configure scripts. This allows QEMU's
1060 # configure to be used by RPM and similar macros that set
1061 # lots of directory switches by default.
1063 --disable-sdl) sdl
="no"
1065 --enable-sdl) sdl
="yes"
1067 --with-sdlabi=*) sdlabi
="$optarg"
1069 --disable-qom-cast-debug) qom_cast_debug
="no"
1071 --enable-qom-cast-debug) qom_cast_debug
="yes"
1073 --disable-virtfs) virtfs
="no"
1075 --enable-virtfs) virtfs
="yes"
1077 --disable-mpath) mpath
="no"
1079 --enable-mpath) mpath
="yes"
1081 --disable-vnc) vnc
="no"
1083 --enable-vnc) vnc
="yes"
1085 --oss-lib=*) oss_lib
="$optarg"
1087 --audio-drv-list=*) audio_drv_list
="$optarg"
1089 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1091 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1093 --enable-debug-tcg) debug_tcg
="yes"
1095 --disable-debug-tcg) debug_tcg
="no"
1098 # Enable debugging options that aren't excessively noisy
1105 --enable-sanitizers) sanitizers
="yes"
1107 --disable-sanitizers) sanitizers
="no"
1109 --enable-sparse) sparse
="yes"
1111 --disable-sparse) sparse
="no"
1113 --disable-strip) strip_opt
="no"
1115 --disable-vnc-sasl) vnc_sasl
="no"
1117 --enable-vnc-sasl) vnc_sasl
="yes"
1119 --disable-vnc-jpeg) vnc_jpeg
="no"
1121 --enable-vnc-jpeg) vnc_jpeg
="yes"
1123 --disable-vnc-png) vnc_png
="no"
1125 --enable-vnc-png) vnc_png
="yes"
1127 --disable-slirp) slirp
="no"
1129 --disable-vde) vde
="no"
1131 --enable-vde) vde
="yes"
1133 --disable-netmap) netmap
="no"
1135 --enable-netmap) netmap
="yes"
1137 --disable-xen) xen
="no"
1139 --enable-xen) xen
="yes"
1141 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1143 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1145 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
1147 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
1149 --disable-brlapi) brlapi
="no"
1151 --enable-brlapi) brlapi
="yes"
1153 --disable-bluez) bluez
="no"
1155 --enable-bluez) bluez
="yes"
1157 --disable-kvm) kvm
="no"
1159 --enable-kvm) kvm
="yes"
1161 --disable-hax) hax
="no"
1163 --enable-hax) hax
="yes"
1165 --disable-hvf) hvf
="no"
1167 --enable-hvf) hvf
="yes"
1169 --disable-whpx) whpx
="no"
1171 --enable-whpx) whpx
="yes"
1173 --disable-tcg-interpreter) tcg_interpreter
="no"
1175 --enable-tcg-interpreter) tcg_interpreter
="yes"
1177 --disable-cap-ng) cap_ng
="no"
1179 --enable-cap-ng) cap_ng
="yes"
1181 --disable-tcg) tcg
="no"
1183 --enable-tcg) tcg
="yes"
1185 --disable-malloc-trim) malloc_trim
="no"
1187 --enable-malloc-trim) malloc_trim
="yes"
1189 --disable-spice) spice
="no"
1191 --enable-spice) spice
="yes"
1193 --disable-libiscsi) libiscsi
="no"
1195 --enable-libiscsi) libiscsi
="yes"
1197 --disable-libnfs) libnfs
="no"
1199 --enable-libnfs) libnfs
="yes"
1201 --enable-profiler) profiler
="yes"
1203 --disable-cocoa) cocoa
="no"
1207 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1209 --disable-system) softmmu
="no"
1211 --enable-system) softmmu
="yes"
1218 --disable-linux-user) linux_user
="no"
1220 --enable-linux-user) linux_user
="yes"
1222 --disable-bsd-user) bsd_user
="no"
1224 --enable-bsd-user) bsd_user
="yes"
1226 --enable-pie) pie
="yes"
1228 --disable-pie) pie
="no"
1230 --enable-werror) werror
="yes"
1232 --disable-werror) werror
="no"
1234 --enable-stack-protector) stack_protector
="yes"
1236 --disable-stack-protector) stack_protector
="no"
1238 --disable-curses) curses
="no"
1240 --enable-curses) curses
="yes"
1242 --disable-curl) curl
="no"
1244 --enable-curl) curl
="yes"
1246 --disable-fdt) fdt
="no"
1248 --enable-fdt) fdt
="yes"
1250 --disable-linux-aio) linux_aio
="no"
1252 --enable-linux-aio) linux_aio
="yes"
1254 --disable-attr) attr
="no"
1256 --enable-attr) attr
="yes"
1258 --disable-membarrier) membarrier
="no"
1260 --enable-membarrier) membarrier
="yes"
1262 --disable-blobs) blobs
="no"
1264 --with-pkgversion=*) pkgversion
="$optarg"
1266 --with-coroutine=*) coroutine
="$optarg"
1268 --disable-coroutine-pool) coroutine_pool
="no"
1270 --enable-coroutine-pool) coroutine_pool
="yes"
1272 --enable-debug-stack-usage) debug_stack_usage
="yes"
1274 --enable-crypto-afalg) crypto_afalg
="yes"
1276 --disable-crypto-afalg) crypto_afalg
="no"
1278 --disable-docs) docs
="no"
1280 --enable-docs) docs
="yes"
1282 --disable-vhost-net) vhost_net
="no"
1284 --enable-vhost-net) vhost_net
="yes"
1286 --disable-vhost-crypto) vhost_crypto
="no"
1288 --enable-vhost-crypto)
1290 if test "$mingw32" = "yes"; then
1291 error_exit
"vhost-crypto isn't available on win32"
1294 --disable-vhost-scsi) vhost_scsi
="no"
1296 --enable-vhost-scsi) vhost_scsi
="yes"
1298 --disable-vhost-vsock) vhost_vsock
="no"
1300 --enable-vhost-vsock) vhost_vsock
="yes"
1302 --disable-opengl) opengl
="no"
1304 --enable-opengl) opengl
="yes"
1306 --disable-rbd) rbd
="no"
1308 --enable-rbd) rbd
="yes"
1310 --disable-xfsctl) xfs
="no"
1312 --enable-xfsctl) xfs
="yes"
1314 --disable-smartcard) smartcard
="no"
1316 --enable-smartcard) smartcard
="yes"
1318 --disable-libusb) libusb
="no"
1320 --enable-libusb) libusb
="yes"
1322 --disable-usb-redir) usb_redir
="no"
1324 --enable-usb-redir) usb_redir
="yes"
1326 --disable-zlib-test) zlib
="no"
1328 --disable-lzo) lzo
="no"
1330 --enable-lzo) lzo
="yes"
1332 --disable-snappy) snappy
="no"
1334 --enable-snappy) snappy
="yes"
1336 --disable-bzip2) bzip2="no"
1338 --enable-bzip2) bzip2="yes"
1340 --enable-guest-agent) guest_agent
="yes"
1342 --disable-guest-agent) guest_agent
="no"
1344 --enable-guest-agent-msi) guest_agent_msi
="yes"
1346 --disable-guest-agent-msi) guest_agent_msi
="no"
1348 --with-vss-sdk) vss_win32_sdk
=""
1350 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1352 --without-vss-sdk) vss_win32_sdk
="no"
1354 --with-win-sdk) win_sdk
=""
1356 --with-win-sdk=*) win_sdk
="$optarg"
1358 --without-win-sdk) win_sdk
="no"
1360 --enable-tools) want_tools
="yes"
1362 --disable-tools) want_tools
="no"
1364 --enable-seccomp) seccomp
="yes"
1366 --disable-seccomp) seccomp
="no"
1368 --disable-glusterfs) glusterfs
="no"
1370 --disable-avx2) avx2_opt
="no"
1372 --enable-avx2) avx2_opt
="yes"
1374 --enable-glusterfs) glusterfs
="yes"
1376 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1377 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1379 --enable-vhdx|
--disable-vhdx)
1380 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1382 --enable-uuid|
--disable-uuid)
1383 echo "$0: $opt is obsolete, UUID support is always built" >&2
1385 --disable-gtk) gtk
="no"
1387 --enable-gtk) gtk
="yes"
1389 --tls-priority=*) tls_priority
="$optarg"
1391 --disable-gnutls) gnutls
="no"
1393 --enable-gnutls) gnutls
="yes"
1395 --disable-nettle) nettle
="no"
1397 --enable-nettle) nettle
="yes"
1399 --disable-gcrypt) gcrypt
="no"
1401 --enable-gcrypt) gcrypt
="yes"
1403 --enable-rdma) rdma
="yes"
1405 --disable-rdma) rdma
="no"
1407 --enable-pvrdma) pvrdma
="yes"
1409 --disable-pvrdma) pvrdma
="no"
1411 --disable-vte) vte
="no"
1413 --enable-vte) vte
="yes"
1415 --disable-virglrenderer) virglrenderer
="no"
1417 --enable-virglrenderer) virglrenderer
="yes"
1419 --disable-tpm) tpm
="no"
1421 --enable-tpm) tpm
="yes"
1423 --disable-libssh2) libssh2
="no"
1425 --enable-libssh2) libssh2
="yes"
1427 --disable-live-block-migration) live_block_migration
="no"
1429 --enable-live-block-migration) live_block_migration
="yes"
1431 --disable-numa) numa
="no"
1433 --enable-numa) numa
="yes"
1435 --disable-libxml2) libxml2
="no"
1437 --enable-libxml2) libxml2
="yes"
1439 --disable-tcmalloc) tcmalloc
="no"
1441 --enable-tcmalloc) tcmalloc
="yes"
1443 --disable-jemalloc) jemalloc
="no"
1445 --enable-jemalloc) jemalloc
="yes"
1447 --disable-replication) replication
="no"
1449 --enable-replication) replication
="yes"
1451 --disable-vxhs) vxhs
="no"
1453 --enable-vxhs) vxhs
="yes"
1455 --disable-bochs) bochs
="no"
1457 --enable-bochs) bochs
="yes"
1459 --disable-cloop) cloop
="no"
1461 --enable-cloop) cloop
="yes"
1463 --disable-dmg) dmg
="no"
1465 --enable-dmg) dmg
="yes"
1467 --disable-qcow1) qcow1
="no"
1469 --enable-qcow1) qcow1
="yes"
1471 --disable-vdi) vdi
="no"
1473 --enable-vdi) vdi
="yes"
1475 --disable-vvfat) vvfat
="no"
1477 --enable-vvfat) vvfat
="yes"
1479 --disable-qed) qed
="no"
1481 --enable-qed) qed
="yes"
1483 --disable-parallels) parallels
="no"
1485 --enable-parallels) parallels
="yes"
1487 --disable-sheepdog) sheepdog
="no"
1489 --enable-sheepdog) sheepdog
="yes"
1491 --disable-vhost-user) vhost_user
="no"
1493 --enable-vhost-user)
1495 if test "$mingw32" = "yes"; then
1496 error_exit
"vhost-user isn't available on win32"
1499 --disable-capstone) capstone
="no"
1501 --enable-capstone) capstone
="yes"
1503 --enable-capstone=git
) capstone
="git"
1505 --enable-capstone=system
) capstone
="system"
1507 --with-git=*) git
="$optarg"
1509 --enable-git-update) git_update
=yes
1511 --disable-git-update) git_update
=no
1513 --enable-debug-mutex) debug_mutex
=yes
1515 --disable-debug-mutex) debug_mutex
=no
1517 --enable-libpmem) libpmem
=yes
1519 --disable-libpmem) libpmem
=no
1522 echo "ERROR: unknown option $opt"
1523 echo "Try '$0 --help' for more information"
1529 if test "$vhost_user" = ""; then
1530 if test "$mingw32" = "yes"; then
1540 LDFLAGS
="-m32 $LDFLAGS"
1541 cross_cc_powerpc
=$cc
1542 cross_cc_cflags_powerpc
=$CPU_CFLAGS
1546 LDFLAGS
="-m64 $LDFLAGS"
1548 cross_cc_cflags_ppc64
=$CPU_CFLAGS
1551 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1552 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1554 cross_cc_cflags_sparc
=$CPU_CFLAGS
1557 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1558 LDFLAGS
="-m64 $LDFLAGS"
1559 cross_cc_sparc64
=$cc
1560 cross_cc_cflags_sparc64
=$CPU_CFLAGS
1564 LDFLAGS
="-m31 $LDFLAGS"
1566 cross_cc_cflags_s390
=$CPU_CFLAGS
1570 LDFLAGS
="-m64 $LDFLAGS"
1572 cross_cc_cflags_s390x
=$CPU_CFLAGS
1576 LDFLAGS
="-m32 $LDFLAGS"
1578 cross_cc_cflags_i386
=$CPU_CFLAGS
1581 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1582 # If we truly care, we should simply detect this case at
1583 # runtime and generate the fallback to serial emulation.
1584 CPU_CFLAGS
="-m64 -mcx16"
1585 LDFLAGS
="-m64 $LDFLAGS"
1587 cross_cc_cflags_x86_64
=$CPU_CFLAGS
1591 LDFLAGS
="-mx32 $LDFLAGS"
1593 cross_cc_cflags_i386
=$CPU_CFLAGS
1595 # No special flags required for other host CPUs
1598 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1600 # For user-mode emulation the host arch has to be one we explicitly
1601 # support, even if we're using TCI.
1602 if [ "$ARCH" = "unknown" ]; then
1607 default_target_list
=""
1611 if [ "$softmmu" = "yes" ]; then
1612 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1614 if [ "$linux_user" = "yes" ]; then
1615 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1617 if [ "$bsd_user" = "yes" ]; then
1618 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1621 for config
in $mak_wilds; do
1622 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1625 # Enumerate public trace backends for --help output
1626 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1628 if test x
"$show_help" = x
"yes" ; then
1631 Usage: configure [options]
1632 Options: [defaults in brackets after descriptions]
1635 --help print this message
1636 --prefix=PREFIX install in PREFIX [$prefix]
1637 --interp-prefix=PREFIX where to find shared libraries, etc.
1638 use %M for cpu name [$interp_prefix]
1639 --target-list=LIST set target list (default: build everything)
1640 $(echo Available targets: $default_target_list | \
1641 fold -s -w 53 | sed -e 's/^/ /')
1643 Advanced options (experts only):
1644 --source-path=PATH path of source code [$source_path]
1645 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1646 --cc=CC use C compiler CC [$cc]
1647 --iasl=IASL use ACPI compiler IASL [$iasl]
1648 --host-cc=CC use C compiler CC [$host_cc] for code run at
1650 --cxx=CXX use C++ compiler CXX [$cxx]
1651 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1652 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1653 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1654 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1655 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1656 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1657 --make=MAKE use specified make [$make]
1658 --install=INSTALL use specified install [$install]
1659 --python=PYTHON use specified python [$python]
1660 --smbd=SMBD use specified smbd [$smbd]
1661 --with-git=GIT use specified git [$git]
1662 --static enable static build [$static]
1663 --mandir=PATH install man pages in PATH
1664 --datadir=PATH install firmware in PATH$confsuffix
1665 --docdir=PATH install documentation in PATH$confsuffix
1666 --bindir=PATH install binaries in PATH
1667 --libdir=PATH install libraries in PATH
1668 --libexecdir=PATH install helper binaries in PATH
1669 --sysconfdir=PATH install config in PATH$confsuffix
1670 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1671 --firmwarepath=PATH search PATH for firmware files
1672 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1673 --with-pkgversion=VERS use specified string as sub-version of the package
1674 --enable-debug enable common debug build options
1675 --enable-sanitizers enable default sanitizers
1676 --disable-strip disable stripping binaries
1677 --disable-werror disable compilation abort on warning
1678 --disable-stack-protector disable compiler-provided stack protection
1679 --audio-drv-list=LIST set audio drivers list:
1680 Available drivers: $audio_possible_drivers
1681 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1682 --block-drv-rw-whitelist=L
1683 set block driver read-write whitelist
1684 (affects only QEMU, not qemu-img)
1685 --block-drv-ro-whitelist=L
1686 set block driver read-only whitelist
1687 (affects only QEMU, not qemu-img)
1688 --enable-trace-backends=B Set trace backend
1689 Available backends: $trace_backend_list
1690 --with-trace-file=NAME Full PATH,NAME of file to store traces
1692 --disable-slirp disable SLIRP userspace network connectivity
1693 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1694 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1695 --oss-lib path to OSS library
1696 --cpu=CPU Build for host CPU [$cpu]
1697 --with-coroutine=BACKEND coroutine backend. Supported options:
1698 ucontext, sigaltstack, windows
1699 --enable-gcov enable test coverage analysis with gcov
1700 --gcov=GCOV use specified gcov [$gcov_tool]
1701 --disable-blobs disable installing provided firmware blobs
1702 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1703 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1704 --tls-priority default TLS protocol/cipher priority string
1705 --enable-gprof QEMU profiling with gprof
1706 --enable-profiler profiler support
1707 --enable-xen-pv-domain-build
1708 xen pv domain builder
1709 --enable-debug-stack-usage
1710 track the maximum stack usage of stacks created by qemu_alloc_stack
1712 Optional features, enabled with --enable-FEATURE and
1713 disabled with --disable-FEATURE, default is enabled if available:
1715 system all system emulation targets
1716 user supported user emulation targets
1717 linux-user all linux usermode emulation targets
1718 bsd-user all BSD usermode emulation targets
1719 docs build documentation
1720 guest-agent build the QEMU Guest Agent
1721 guest-agent-msi build guest agent Windows MSI installation package
1722 pie Position Independent Executables
1723 modules modules support
1724 debug-tcg TCG debugging (default is disabled)
1725 debug-info debugging information
1726 sparse sparse checker
1728 gnutls GNUTLS cryptography support
1729 nettle nettle cryptography support
1730 gcrypt libgcrypt cryptography support
1732 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1734 vte vte support for the gtk UI
1737 vnc-sasl SASL encryption for VNC server
1738 vnc-jpeg JPEG lossy compression for VNC server
1739 vnc-png PNG compression for VNC server
1740 cocoa Cocoa UI (Mac OS X only)
1742 mpath Multipath persistent reservation passthrough
1743 xen xen backend driver support
1744 xen-pci-passthrough PCI passthrough support for Xen
1745 brlapi BrlAPI (Braile)
1746 curl curl connectivity
1747 membarrier membarrier system call (for Linux 4.14+ or Windows)
1749 bluez bluez stack connectivity
1750 kvm KVM acceleration support
1751 hax HAX acceleration support
1752 hvf Hypervisor.framework acceleration support
1753 whpx Windows Hypervisor Platform acceleration support
1754 rdma Enable RDMA-based migration
1755 pvrdma Enable PVRDMA support
1756 vde support for vde network
1757 netmap support for netmap network
1758 linux-aio Linux AIO support
1759 cap-ng libcap-ng support
1760 attr attr and xattr support
1761 vhost-net vhost-net acceleration support
1762 vhost-crypto vhost-crypto acceleration support
1764 rbd rados block device (rbd)
1765 libiscsi iscsi support
1767 smartcard smartcard support (libcacard)
1768 libusb libusb (for usb passthrough)
1769 live-block-migration Block migration in the main migration stream
1770 usb-redir usb network redirection support
1771 lzo support of lzo compression library
1772 snappy support of snappy compression library
1773 bzip2 support of bzip2 compression library
1774 (for reading bzip2-compressed dmg images)
1775 seccomp seccomp support
1776 coroutine-pool coroutine freelist (better performance)
1777 glusterfs GlusterFS backend
1779 libssh2 ssh block device support
1780 numa libnuma support
1781 libxml2 for Parallels image format
1782 tcmalloc tcmalloc support
1783 jemalloc jemalloc support
1784 avx2 AVX2 optimization support
1785 replication replication support
1786 vhost-vsock virtio sockets device support
1787 opengl opengl support
1788 virglrenderer virgl rendering support
1789 xfsctl xfsctl support
1790 qom-cast-debug cast debugging support
1791 tools build qemu-io, qemu-nbd and qemu-image tools
1792 vxhs Veritas HyperScale vDisk backend support
1793 bochs bochs image format support
1794 cloop cloop image format support
1795 dmg dmg image format support
1796 qcow1 qcow v1 image format support
1797 vdi vdi image format support
1798 vvfat vvfat image format support
1799 qed qed image format support
1800 parallels parallels image format support
1801 sheepdog sheepdog block driver support
1802 crypto-afalg Linux AF_ALG crypto backend driver
1803 vhost-user vhost-user support
1804 capstone capstone disassembler support
1805 debug-mutex mutex debugging support
1806 libpmem libpmem support
1808 NOTE: The object files are built at the place where configure is launched
1813 if ! has
$python; then
1814 error_exit
"Python not found. Use --python=/path/to/python"
1817 # Note that if the Python conditional here evaluates True we will exit
1818 # with status 1 which is a shell 'false' value.
1819 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then
1820 error_exit
"Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \
1821 "Use --python=/path/to/python to specify a supported Python."
1824 # Suppress writing compiled files
1827 # Check that the C compiler works. Doing this here before testing
1828 # the host CPU ensures that we had a valid CC to autodetect the
1829 # $cpu var (and we should bail right here if that's not the case).
1830 # It also allows the help message to be printed without a CC.
1832 if compile_object
; then
1833 : C compiler works ok
1835 error_exit
"\"$cc\" either does not exist or does not work"
1837 if ! compile_prog
; then
1838 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1841 # Now we have handled --enable-tcg-interpreter and know we're not just
1842 # printing the help message, bail out if the host CPU isn't supported.
1843 if test "$ARCH" = "unknown"; then
1844 if test "$tcg_interpreter" = "yes" ; then
1845 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1847 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1851 # Consult white-list to determine whether to enable werror
1852 # by default. Only enable by default for git builds
1853 if test -z "$werror" ; then
1854 if test -d "$source_path/.git" -a \
1855 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1862 if test "$bogus_os" = "yes"; then
1863 # Now that we know that we're not printing the help and that
1864 # the compiler works (so the results of the check_defines we used
1865 # to identify the OS are reliable), if we didn't recognize the
1866 # host OS we should stop now.
1867 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1870 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1871 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1872 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1873 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1874 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1875 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1876 gcc_flags
="-Wno-error=address-of-packed-member $gcc_flags"
1877 # Note that we do not add -Werror to gcc_flags here, because that would
1878 # enable it for all configure tests. If a configure test failed due
1879 # to -Werror this would just silently disable some features,
1880 # so it's too error prone.
1882 cc_has_warning_flag
() {
1885 # Use the positive sense of the flag when testing for -Wno-wombat
1886 # support (gcc will happily accept the -Wno- form of unknown
1888 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1889 compile_prog
"-Werror $optflag" ""
1892 for flag
in $gcc_flags; do
1893 if cc_has_warning_flag
$flag ; then
1894 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1898 if test "$mingw32" = "yes"; then
1899 stack_protector
="no"
1901 if test "$stack_protector" != "no"; then
1903 int main(int argc, char *argv[])
1905 char arr[64], *p = arr, *c = argv[0];
1912 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1914 for flag
in $gcc_flags; do
1915 # We need to check both a compile and a link, since some compiler
1916 # setups fail only on a .c->.o compile and some only at link time
1917 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1918 compile_prog
"-Werror $flag" ""; then
1919 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1924 if test "$stack_protector" = yes; then
1925 if test $sp_on = 0; then
1926 error_exit
"Stack protector not supported"
1931 # Disable -Wmissing-braces on older compilers that warn even for
1932 # the "universal" C zero initializer {0}.
1938 if compile_object
"-Werror" "" ; then
1941 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1944 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1945 # large functions that use global variables. The bug is in all releases of
1946 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1947 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1949 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1950 int main(void) { return 0; }
1952 #error No bug in this compiler.
1955 if compile_prog
"-Werror -fno-gcse" "" ; then
1956 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1959 if test "$static" = "yes" ; then
1960 if test "$modules" = "yes" ; then
1961 error_exit
"static and modules are mutually incompatible"
1963 if test "$pie" = "yes" ; then
1964 error_exit
"static and pie are mutually incompatible"
1970 # Unconditional check for compiler __thread support
1972 static __thread int tls_var;
1973 int main(void) { return tls_var; }
1976 if ! compile_prog
"-Werror" "" ; then
1977 error_exit
"Your compiler does not support the __thread specifier for " \
1978 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1981 if test "$pie" = ""; then
1982 case "$cpu-$targetos" in
1983 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1991 if test "$pie" != "no" ; then
1995 # define THREAD __thread
2000 static THREAD int tls_var;
2002 int main(void) { return tls_var; }
2005 if compile_prog
"-fPIE -DPIE" "-pie"; then
2006 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
2007 LDFLAGS
="-pie $LDFLAGS"
2009 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
2010 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
2013 if test "$pie" = "yes"; then
2014 error_exit
"PIE not available due to missing toolchain support"
2016 echo "Disabling PIE due to missing toolchain support"
2021 if compile_prog
"-Werror -fno-pie" "-nopie"; then
2022 CFLAGS_NOPIE
="-fno-pie"
2023 LDFLAGS_NOPIE
="-nopie"
2027 ##########################################
2028 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
2029 # use i686 as default anyway, but for those that don't, an explicit
2030 # specification is necessary
2032 if test "$cpu" = "i386"; then
2034 static int sfaa(int *ptr)
2036 return __sync_fetch_and_and(ptr, 0);
2042 val = __sync_val_compare_and_swap(&val, 0, 1);
2047 if ! compile_prog
"" "" ; then
2048 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
2052 #########################################
2053 # Solaris specific configure tool chain decisions
2055 if test "$solaris" = "yes" ; then
2056 if has
$install; then
2059 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
2060 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
2061 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
2063 if test "$(path_of $install)" = "/usr/sbin/install" ; then
2064 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
2065 "try ginstall from the GNU fileutils available from www.blastwave.org" \
2066 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
2071 if test -f /usr
/ccs
/bin
/ar ; then
2072 error_exit
"No path includes ar" \
2073 "Add /usr/ccs/bin to your path and rerun configure"
2075 error_exit
"No path includes ar"
2079 if test -z "${target_list+xxx}" ; then
2080 for target
in $default_target_list; do
2081 supported_target
$target 2>/dev
/null
&& \
2082 target_list
="$target_list $target"
2084 target_list
="${target_list# }"
2086 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
2087 for target
in $target_list; do
2088 # Check that we recognised the target name; this allows a more
2089 # friendly error message than if we let it fall through.
2090 case " $default_target_list " in
2094 error_exit
"Unknown target name '$target'"
2097 supported_target
$target ||
exit 1
2101 # see if system emulation was really requested
2102 case " $target_list " in
2103 *"-softmmu "*) softmmu
=yes
2109 feature_not_found
() {
2113 error_exit
"User requested feature $feature" \
2114 "configure was not able to find it." \
2119 # big/little endian test
2121 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2122 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2123 extern int foo(short *, short *);
2124 int main(int argc, char *argv[]) {
2125 return foo(big_endian, little_endian);
2129 if compile_object
; then
2130 if strings -a $TMPO |
grep -q BiGeNdIaN
; then
2132 elif strings -a $TMPO |
grep -q LiTtLeEnDiAn
; then
2135 echo big
/little
test failed
2138 echo big
/little
test failed
2141 ##########################################
2142 # cocoa implies not SDL or GTK
2143 # (the cocoa UI code currently assumes it is always the active UI
2144 # and doesn't interact well with other UI frontend code)
2145 if test "$cocoa" = "yes"; then
2146 if test "$sdl" = "yes"; then
2147 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
2149 if test "$gtk" = "yes"; then
2150 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
2156 # Some versions of Mac OS X incorrectly define SIZE_MAX
2160 int main(int argc, char *argv[]) {
2161 return printf("%zu", SIZE_MAX);
2164 have_broken_size_max
=no
2165 if ! compile_object
-Werror ; then
2166 have_broken_size_max
=yes
2169 ##########################################
2173 #include <sys/socket.h>
2174 #include <linux/ip.h>
2175 int main(void) { return sizeof(struct mmsghdr); }
2177 if compile_prog
"" "" ; then
2183 ##########################################
2184 # MinGW / Mingw-w64 localtime_r/gmtime_r check
2186 if test "$mingw32" = "yes"; then
2187 # Some versions of MinGW / Mingw-w64 lack localtime_r
2188 # and gmtime_r entirely.
2190 # Some versions of Mingw-w64 define a macro for
2191 # localtime_r/gmtime_r.
2193 # Some versions of Mingw-w64 will define functions
2194 # for localtime_r/gmtime_r, but only if you have
2195 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2196 # though, unistd.h and pthread.h both define
2199 # So this #undef localtime_r and #include <unistd.h>
2200 # are not in fact redundant.
2205 int main(void) { localtime_r(NULL, NULL); return 0; }
2207 if compile_prog
"" "" ; then
2214 ##########################################
2217 if ! has
"$pkg_config_exe"; then
2218 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2221 ##########################################
2224 if test "$linux_user" = "yes"; then
2227 #include <linux/futex.h>
2229 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2235 if ! compile_object
; then
2236 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2240 ##########################################
2243 if test "$lzo" != "no" ; then
2245 #include <lzo/lzo1x.h>
2246 int main(void) { lzo_version(); return 0; }
2248 if compile_prog
"" "-llzo2" ; then
2249 libs_softmmu
="$libs_softmmu -llzo2"
2252 if test "$lzo" = "yes"; then
2253 feature_not_found
"liblzo2" "Install liblzo2 devel"
2259 ##########################################
2262 if test "$snappy" != "no" ; then
2264 #include <snappy-c.h>
2265 int main(void) { snappy_max_compressed_length(4096); return 0; }
2267 if compile_prog
"" "-lsnappy" ; then
2268 libs_softmmu
="$libs_softmmu -lsnappy"
2271 if test "$snappy" = "yes"; then
2272 feature_not_found
"libsnappy" "Install libsnappy devel"
2278 ##########################################
2281 if test "$bzip2" != "no" ; then
2284 int main(void) { BZ2_bzlibVersion(); return 0; }
2286 if compile_prog
"" "-lbz2" ; then
2289 if test "$bzip2" = "yes"; then
2290 feature_not_found
"libbzip2" "Install libbzip2 devel"
2296 ##########################################
2299 libseccomp_minver
="2.2.0"
2300 if test "$seccomp" != "no" ; then
2305 libseccomp_minver
="2.2.3"
2308 libseccomp_minver
="2.3.0"
2311 libseccomp_minver
=""
2315 if test "$libseccomp_minver" != "" &&
2316 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2317 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2318 seccomp_libs
="$($pkg_config --libs libseccomp)"
2321 if test "$seccomp" = "yes" ; then
2322 if test "$libseccomp_minver" != "" ; then
2323 feature_not_found
"libseccomp" \
2324 "Install libseccomp devel >= $libseccomp_minver"
2326 feature_not_found
"libseccomp" \
2327 "libseccomp is not supported for host cpu $cpu"
2333 ##########################################
2336 if test "$xen" != "no" ; then
2337 # Check whether Xen library path is specified via --extra-ldflags to avoid
2338 # overriding this setting with pkg-config output. If not, try pkg-config
2339 # to obtain all needed flags.
2341 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2342 $pkg_config --exists xencontrol
; then
2343 xen_ctrl_version
="$(printf '%d%02d%02d' \
2344 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2346 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2347 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2348 if $pkg_config --exists xentoolcore
; then
2349 xen_pc
="$xen_pc xentoolcore"
2351 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2352 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2353 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2356 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2357 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2359 # First we test whether Xen headers and libraries are available.
2360 # If no, we are done and there is no Xen support.
2361 # If yes, more tests are run to detect the Xen version.
2365 #include <xenctrl.h>
2370 if ! compile_prog
"" "$xen_libs" ; then
2372 if test "$xen" = "yes" ; then
2373 feature_not_found
"xen" "Install xen devel"
2379 cat > $TMPC <<EOF &&
2380 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2381 #define __XEN_TOOLS__
2382 #include <xendevicemodel.h>
2383 #include <xenforeignmemory.h>
2385 xendevicemodel_handle *xd;
2386 xenforeignmemory_handle *xfmem;
2388 xd = xendevicemodel_open(0, 0);
2389 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2391 xfmem = xenforeignmemory_open(0, 0);
2392 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2397 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2399 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2400 xen_ctrl_version
=41100
2403 cat > $TMPC <<EOF &&
2404 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2405 #include <xenforeignmemory.h>
2406 #include <xentoolcore.h>
2408 xenforeignmemory_handle *xfmem;
2410 xfmem = xenforeignmemory_open(0, 0);
2411 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2412 xentoolcore_restrict_all(0);
2417 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2419 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2420 xen_ctrl_version
=41000
2423 cat > $TMPC <<EOF &&
2424 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2425 #define __XEN_TOOLS__
2426 #include <xendevicemodel.h>
2428 xendevicemodel_handle *xd;
2430 xd = xendevicemodel_open(0, 0);
2431 xendevicemodel_close(xd);
2436 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2438 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2439 xen_ctrl_version
=40900
2442 cat > $TMPC <<EOF &&
2444 * If we have stable libs the we don't want the libxc compat
2445 * layers, regardless of what CFLAGS we may have been given.
2447 * Also, check if xengnttab_grant_copy_segment_t is defined and
2448 * grant copy operation is implemented.
2450 #undef XC_WANT_COMPAT_EVTCHN_API
2451 #undef XC_WANT_COMPAT_GNTTAB_API
2452 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2453 #include <xenctrl.h>
2454 #include <xenstore.h>
2455 #include <xenevtchn.h>
2456 #include <xengnttab.h>
2457 #include <xenforeignmemory.h>
2459 #include <xen/hvm/hvm_info_table.h>
2460 #if !defined(HVM_MAX_VCPUS)
2461 # error HVM_MAX_VCPUS not defined
2464 xc_interface *xc = NULL;
2465 xenforeignmemory_handle *xfmem;
2466 xenevtchn_handle *xe;
2467 xengnttab_handle *xg;
2468 xen_domain_handle_t handle;
2469 xengnttab_grant_copy_segment_t* seg = NULL;
2473 xc = xc_interface_open(0, 0, 0);
2474 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2475 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2476 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2477 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2478 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2480 xfmem = xenforeignmemory_open(0, 0);
2481 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2483 xe = xenevtchn_open(0, 0);
2486 xg = xengnttab_open(0, 0);
2487 xengnttab_grant_copy(xg, 0, seg);
2492 compile_prog
"" "$xen_libs $xen_stable_libs"
2494 xen_ctrl_version
=40800
2497 cat > $TMPC <<EOF &&
2499 * If we have stable libs the we don't want the libxc compat
2500 * layers, regardless of what CFLAGS we may have been given.
2502 #undef XC_WANT_COMPAT_EVTCHN_API
2503 #undef XC_WANT_COMPAT_GNTTAB_API
2504 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2505 #include <xenctrl.h>
2506 #include <xenstore.h>
2507 #include <xenevtchn.h>
2508 #include <xengnttab.h>
2509 #include <xenforeignmemory.h>
2511 #include <xen/hvm/hvm_info_table.h>
2512 #if !defined(HVM_MAX_VCPUS)
2513 # error HVM_MAX_VCPUS not defined
2516 xc_interface *xc = NULL;
2517 xenforeignmemory_handle *xfmem;
2518 xenevtchn_handle *xe;
2519 xengnttab_handle *xg;
2520 xen_domain_handle_t handle;
2524 xc = xc_interface_open(0, 0, 0);
2525 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2526 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2527 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2528 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2529 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2531 xfmem = xenforeignmemory_open(0, 0);
2532 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2534 xe = xenevtchn_open(0, 0);
2537 xg = xengnttab_open(0, 0);
2538 xengnttab_map_grant_ref(xg, 0, 0, 0);
2543 compile_prog
"" "$xen_libs $xen_stable_libs"
2545 xen_ctrl_version
=40701
2548 cat > $TMPC <<EOF &&
2549 #include <xenctrl.h>
2552 xc_interface *xc = NULL;
2553 xen_domain_handle_t handle;
2554 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2558 compile_prog
"" "$xen_libs"
2560 xen_ctrl_version
=40700
2565 cat > $TMPC <<EOF &&
2566 #include <xenctrl.h>
2567 #include <xenstore.h>
2569 #include <xen/hvm/hvm_info_table.h>
2570 #if !defined(HVM_MAX_VCPUS)
2571 # error HVM_MAX_VCPUS not defined
2576 xc = xc_interface_open(0, 0, 0);
2577 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2578 xc_gnttab_open(NULL, 0);
2579 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2580 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2581 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2582 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2586 compile_prog
"" "$xen_libs"
2588 xen_ctrl_version
=40600
2593 cat > $TMPC <<EOF &&
2594 #include <xenctrl.h>
2595 #include <xenstore.h>
2597 #include <xen/hvm/hvm_info_table.h>
2598 #if !defined(HVM_MAX_VCPUS)
2599 # error HVM_MAX_VCPUS not defined
2604 xc = xc_interface_open(0, 0, 0);
2605 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2606 xc_gnttab_open(NULL, 0);
2607 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2608 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2609 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2613 compile_prog
"" "$xen_libs"
2615 xen_ctrl_version
=40500
2619 cat > $TMPC <<EOF &&
2620 #include <xenctrl.h>
2621 #include <xenstore.h>
2623 #include <xen/hvm/hvm_info_table.h>
2624 #if !defined(HVM_MAX_VCPUS)
2625 # error HVM_MAX_VCPUS not defined
2630 xc = xc_interface_open(0, 0, 0);
2631 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2632 xc_gnttab_open(NULL, 0);
2633 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2634 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2638 compile_prog
"" "$xen_libs"
2640 xen_ctrl_version
=40200
2644 if test "$xen" = "yes" ; then
2645 feature_not_found
"xen (unsupported version)" \
2646 "Install a supported xen (xen 4.2 or newer)"
2651 if test "$xen" = yes; then
2652 if test $xen_ctrl_version -ge 40701 ; then
2653 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2655 libs_softmmu
="$xen_libs $libs_softmmu"
2660 if test "$xen_pci_passthrough" != "no"; then
2661 if test "$xen" = "yes" && test "$linux" = "yes"; then
2662 xen_pci_passthrough
=yes
2664 if test "$xen_pci_passthrough" = "yes"; then
2665 error_exit
"User requested feature Xen PCI Passthrough" \
2666 " but this feature requires /sys from Linux"
2668 xen_pci_passthrough
=no
2672 if test "$xen_pv_domain_build" = "yes" &&
2673 test "$xen" != "yes"; then
2674 error_exit
"User requested Xen PV domain builder support" \
2675 "which requires Xen support."
2678 ##########################################
2679 # Windows Hypervisor Platform accelerator (WHPX) check
2680 if test "$whpx" != "no" ; then
2681 if check_include
"WinHvPlatform.h" && check_include
"WinHvEmulation.h"; then
2684 if test "$whpx" = "yes"; then
2685 feature_not_found
"WinHvPlatform" "WinHvEmulation is not installed"
2691 ##########################################
2693 if test "$sparse" != "no" ; then
2697 if test "$sparse" = "yes" ; then
2698 feature_not_found
"sparse" "Install sparse binary"
2704 ##########################################
2706 if $pkg_config --exists "x11"; then
2708 x11_cflags
=$
($pkg_config --cflags x11
)
2709 x11_libs
=$
($pkg_config --libs x11
)
2712 ##########################################
2715 if test "$gtk" != "no"; then
2716 gtkpackage
="gtk+-3.0"
2717 gtkx11package
="gtk+-x11-3.0"
2719 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2720 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2721 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2722 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2723 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2725 gtk_cflags
="$gtk_cflags $x11_cflags"
2726 gtk_libs
="$gtk_libs $x11_libs"
2729 elif test "$gtk" = "yes"; then
2730 feature_not_found
"gtk" "Install gtk3-devel"
2737 ##########################################
2740 if test "$gnutls" != "no"; then
2741 if $pkg_config --exists "gnutls >= 3.1.18"; then
2742 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2743 gnutls_libs
=$
($pkg_config --libs gnutls
)
2744 libs_softmmu
="$gnutls_libs $libs_softmmu"
2745 libs_tools
="$gnutls_libs $libs_tools"
2746 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2748 elif test "$gnutls" = "yes"; then
2749 feature_not_found
"gnutls" "Install gnutls devel >= 3.1.18"
2756 # If user didn't give a --disable/enable-gcrypt flag,
2757 # then mark as disabled if user requested nettle
2759 if test -z "$gcrypt"
2761 if test "$nettle" = "yes"
2767 # If user didn't give a --disable/enable-nettle flag,
2768 # then mark as disabled if user requested gcrypt
2770 if test -z "$nettle"
2772 if test "$gcrypt" = "yes"
2779 if ! has
"libgcrypt-config"
2784 if test -n "$cross_prefix"
2786 host=$
(libgcrypt-config
--host)
2787 if test "$host-" != $cross_prefix
2793 maj
=`libgcrypt-config --version | awk -F . '{print $1}'`
2794 min
=`libgcrypt-config --version | awk -F . '{print $2}'`
2796 if test $maj != 1 ||
test $min -lt 5
2805 if test "$nettle" != "no"; then
2806 if $pkg_config --exists "nettle >= 2.7.1"; then
2807 nettle_cflags
=$
($pkg_config --cflags nettle
)
2808 nettle_libs
=$
($pkg_config --libs nettle
)
2809 nettle_version
=$
($pkg_config --modversion nettle
)
2810 libs_softmmu
="$nettle_libs $libs_softmmu"
2811 libs_tools
="$nettle_libs $libs_tools"
2812 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2815 if test -z "$gcrypt"; then
2819 if test "$nettle" = "yes"; then
2820 feature_not_found
"nettle" "Install nettle devel >= 2.7.1"
2827 if test "$gcrypt" != "no"; then
2828 if has_libgcrypt
; then
2829 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2830 gcrypt_libs
=$
(libgcrypt-config
--libs)
2831 # Debian has remove -lgpg-error from libgcrypt-config
2832 # as it "spreads unnecessary dependencies" which in
2833 # turn breaks static builds...
2834 if test "$static" = "yes"
2836 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2838 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2839 libs_tools
="$gcrypt_libs $libs_tools"
2840 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2846 gcry_mac_hd_t handle;
2847 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2848 GCRY_MAC_FLAG_SECURE, NULL);
2852 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2856 if test "$gcrypt" = "yes"; then
2857 feature_not_found
"gcrypt" "Install gcrypt devel >= 1.5.0"
2865 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2867 error_exit
"Only one of gcrypt & nettle can be enabled"
2870 ##########################################
2871 # libtasn1 - only for the TLS creds/session test suite
2876 if $pkg_config --exists "libtasn1"; then
2877 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2878 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2884 ##########################################
2885 # getifaddrs (for tests/test-io-channel-socket )
2888 if ! check_include
"ifaddrs.h" ; then
2892 ##########################################
2895 if test "$vte" != "no"; then
2896 vteminversion
="0.32.0"
2897 if $pkg_config --exists "vte-2.91"; then
2898 vtepackage
="vte-2.91"
2900 vtepackage
="vte-2.90"
2902 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2903 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2904 vte_libs
=$
($pkg_config --libs $vtepackage)
2905 vteversion
=$
($pkg_config --modversion $vtepackage)
2907 elif test "$vte" = "yes"; then
2908 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2914 ##########################################
2917 # Look for sdl configuration program (pkg-config or sdl-config). Try
2918 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2923 if test "$sdlabi" = ""; then
2924 if $pkg_config --exists "sdl2"; then
2926 elif $pkg_config --exists "sdl"; then
2933 if test $sdlabi = "2.0"; then
2934 sdl_config
=$sdl2_config
2936 sdlconfigname
=sdl2_config
2937 elif test $sdlabi = "1.2"; then
2939 sdlconfigname
=sdl_config
2941 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2944 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2945 sdl_config
=$sdlconfigname
2948 if $pkg_config $sdlname --exists; then
2949 sdlconfig
="$pkg_config $sdlname"
2950 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2951 elif has
${sdl_config}; then
2952 sdlconfig
="$sdl_config"
2953 sdlversion
=$
($sdlconfig --version)
2955 if test "$sdl" = "yes" ; then
2956 feature_not_found
"sdl" "Install SDL2-devel"
2959 # no need to do the rest
2962 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2963 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2968 #undef main /* We don't want SDL to override our main() */
2969 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2971 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2972 sdl_cflags
="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
2973 if test "$static" = "yes" ; then
2974 if $pkg_config $sdlname --exists; then
2975 sdl_libs
=$
($pkg_config $sdlname --static --libs 2>/dev
/null
)
2977 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2980 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2982 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2983 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2989 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2990 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2991 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2992 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2993 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2995 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
3001 else # sdl not found
3002 if test "$sdl" = "yes" ; then
3003 feature_not_found
"sdl" "Install SDL devel"
3006 fi # sdl compile test
3009 if test "$sdl" != "no" ; then
3013 if test "$sdl" = "yes" ; then
3016 #if defined(SDL_VIDEO_DRIVER_X11)
3017 #include <X11/XKBlib.h>
3019 #error No x11 support
3021 int main(void) { return 0; }
3023 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
3025 sdl_cflags
="$sdl_cflags $x11_cflags"
3026 sdl_libs
="$sdl_libs $x11_libs"
3030 ##########################################
3031 # RDMA needs OpenFabrics libraries
3032 if test "$rdma" != "no" ; then
3034 #include <rdma/rdma_cma.h>
3035 int main(void) { return 0; }
3037 rdma_libs
="-lrdmacm -libverbs -libumad"
3038 if compile_prog
"" "$rdma_libs" ; then
3040 libs_softmmu
="$libs_softmmu $rdma_libs"
3042 if test "$rdma" = "yes" ; then
3044 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
3046 " (1) Fast: Install infiniband packages (devel) from your distro." \
3047 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3048 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3054 ##########################################
3057 cat > $TMPC <<EOF &&
3058 #include <sys/mman.h>
3065 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3071 if test "$rdma" = "yes" ; then
3074 if compile_prog
"" ""; then
3081 if ! compile_prog
"" ""; then
3082 error_exit
"PVRDMA is not supported since mremap is not implemented"
3091 if test "$pvrdma" = "yes" ; then
3092 error_exit
"PVRDMA requires rdma suppport"
3097 ##########################################
3098 # VNC SASL detection
3099 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
3101 #include <sasl/sasl.h>
3103 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3105 # Assuming Cyrus-SASL installed in /usr prefix
3107 vnc_sasl_libs
="-lsasl2"
3108 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3110 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
3111 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
3113 if test "$vnc_sasl" = "yes" ; then
3114 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
3120 ##########################################
3121 # VNC JPEG detection
3122 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
3123 if $pkg_config --exists libjpeg
; then
3125 libs_softmmu
="$libs_softmmu $($pkg_config --libs libjpeg)"
3126 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags libjpeg)"
3130 #include <jpeglib.h>
3131 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3134 vnc_jpeg_libs
="-ljpeg"
3135 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3137 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
3138 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
3140 if test "$vnc_jpeg" = "yes" ; then
3141 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
3148 ##########################################
3150 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
3152 //#include <stdio.h>
3156 png_structp png_ptr;
3157 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
3158 return png_ptr != 0;
3161 if $pkg_config libpng
--exists; then
3162 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
3163 vnc_png_libs
=$
($pkg_config libpng
--libs)
3166 vnc_png_libs
="-lpng"
3168 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
3170 libs_softmmu
="$vnc_png_libs $libs_softmmu"
3171 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
3173 if test "$vnc_png" = "yes" ; then
3174 feature_not_found
"vnc-png" "Install libpng devel"
3180 ##########################################
3182 if test "$xkbcommon" != "no" ; then
3183 if $pkg_config xkbcommon
--exists; then
3184 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
3185 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
3188 if test "$xkbcommon" = "yes" ; then
3189 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
3195 ##########################################
3196 # fnmatch() probe, used for ACL routines
3199 #include <fnmatch.h>
3202 fnmatch("foo", "foo", 0);
3206 if compile_prog
"" "" ; then
3210 ##########################################
3211 # xfsctl() probe, used for file-posix.c
3212 if test "$xfs" != "no" ; then
3214 #include <stddef.h> /* NULL */
3215 #include <xfs/xfs.h>
3218 xfsctl(NULL, 0, 0, NULL);
3222 if compile_prog
"" "" ; then
3225 if test "$xfs" = "yes" ; then
3226 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3232 ##########################################
3233 # vde libraries probe
3234 if test "$vde" != "no" ; then
3235 vde_libs
="-lvdeplug"
3238 #include <libvdeplug.h>
3241 struct vde_open_args a = {0, 0, 0};
3247 if compile_prog
"" "$vde_libs" ; then
3250 if test "$vde" = "yes" ; then
3251 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3257 ##########################################
3258 # netmap support probe
3259 # Apart from looking for netmap headers, we make sure that the host API version
3260 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3261 # a minor/major version number. Minor new features will be marked with values up
3262 # to 15, and if something happens that requires a change to the backend we will
3263 # move above 15, submit the backend fixes and modify this two bounds.
3264 if test "$netmap" != "no" ; then
3266 #include <inttypes.h>
3268 #include <net/netmap.h>
3269 #include <net/netmap_user.h>
3270 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3273 int main(void) { return 0; }
3275 if compile_prog
"" "" ; then
3278 if test "$netmap" = "yes" ; then
3279 feature_not_found
"netmap"
3285 ##########################################
3286 # libcap-ng library probe
3287 if test "$cap_ng" != "no" ; then
3293 capng_capability_to_name(CAPNG_EFFECTIVE);
3297 if compile_prog
"" "$cap_libs" ; then
3299 libs_tools
="$cap_libs $libs_tools"
3301 if test "$cap_ng" = "yes" ; then
3302 feature_not_found
"cap_ng" "Install libcap-ng devel"
3308 ##########################################
3309 # Sound support libraries probe
3320 int main(void) { $exp }
3322 if compile_prog
"$cfl" "$lib" ; then
3325 error_exit
"$drv check failed" \
3326 "Make sure to have the $drv libs and headers installed."
3330 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3331 for drv
in $audio_drv_list; do
3334 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
3335 "return snd_pcm_close((snd_pcm_t *)0);"
3336 alsa_libs
="-lasound"
3340 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
3341 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3342 pulse_libs
="-lpulse"
3347 if test "$sdl" = "no"; then
3348 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3353 coreaudio_libs
="-framework CoreAudio"
3357 dsound_libs
="-lole32 -ldxguid"
3366 # XXX: Probes for CoreAudio, DirectSound
3370 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3371 error_exit
"Unknown driver '$drv' selected" \
3372 "Possible drivers are: $audio_possible_drivers"
3378 ##########################################
3381 if test "$brlapi" != "no" ; then
3382 brlapi_libs
="-lbrlapi"
3386 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3388 if compile_prog
"" "$brlapi_libs" ; then
3391 if test "$brlapi" = "yes" ; then
3392 feature_not_found
"brlapi" "Install brlapi devel"
3398 ##########################################
3400 if test "$curses" != "no" ; then
3401 if test "$mingw32" = "yes" ; then
3402 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3403 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3405 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3406 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3415 setlocale(LC_ALL, "");
3417 addwstr(L"wide chars\n");
3419 add_wch(WACS_DEGREE);
3424 for curses_inc
in $curses_inc_list; do
3425 # Make sure we get the wide character prototypes
3426 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3428 for curses_lib
in $curses_lib_list; do
3430 if compile_prog
"$curses_inc" "$curses_lib" ; then
3435 if test "$curses_found" = yes ; then
3440 if test "$curses_found" = "yes" ; then
3443 if test "$curses" = "yes" ; then
3444 feature_not_found
"curses" "Install ncurses devel"
3450 ##########################################
3452 if test "$curl" != "no" ; then
3453 if $pkg_config libcurl
--exists; then
3454 curlconfig
="$pkg_config libcurl"
3456 curlconfig
=curl-config
3459 #include <curl/curl.h>
3460 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3462 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3463 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3464 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3467 if test "$curl" = "yes" ; then
3468 feature_not_found
"curl" "Install libcurl devel"
3474 ##########################################
3475 # bluez support probe
3476 if test "$bluez" != "no" ; then
3478 #include <bluetooth/bluetooth.h>
3479 int main(void) { return bt_error(0); }
3481 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3482 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3483 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3485 libs_softmmu
="$bluez_libs $libs_softmmu"
3487 if test "$bluez" = "yes" ; then
3488 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3494 ##########################################
3495 # glib support probe
3498 glib_modules
=gthread-2.0
3499 if test "$modules" = yes; then
3500 glib_modules
="$glib_modules gmodule-export-2.0"
3503 # This workaround is required due to a bug in pkg-config file for glib as it
3504 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3506 if test "$static" = yes -a "$mingw32" = yes; then
3507 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3510 for i
in $glib_modules; do
3511 if $pkg_config --atleast-version=$glib_req_ver $i; then
3512 glib_cflags
=$
($pkg_config --cflags $i)
3513 glib_libs
=$
($pkg_config --libs $i)
3514 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3515 LIBS
="$glib_libs $LIBS"
3516 libs_qga
="$glib_libs $libs_qga"
3518 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3522 # Sanity check that the current size_t matches the
3523 # size that glib thinks it should be. This catches
3524 # problems on multi-arch where people try to build
3525 # 32-bit QEMU while pointing at 64-bit glib headers
3530 #define QEMU_BUILD_BUG_ON(x) \
3531 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3534 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3539 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3540 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3541 "You probably need to set PKG_CONFIG_LIBDIR"\
3542 "to point to the right pkg-config files for your"\
3546 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3549 int main(void) { return 0; }
3551 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3552 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3553 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3554 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3558 #########################################
3561 if test "$zlib" != "no" ; then
3562 if $pkg_config --exists zlib
; then
3563 zlib_cflags
=$
($pkg_config --cflags zlib
)
3564 zlib_libs
=$
($pkg_config --libs zlib
)
3565 QEMU_CFLAGS
="$zlib_cflags $QEMU_CFLAGS"
3566 LIBS
="$zlib_libs $LIBS"
3570 int main(void) { zlibVersion(); return 0; }
3572 if compile_prog
"" "-lz" ; then
3575 error_exit
"zlib check failed" \
3576 "Make sure to have the zlib libs and headers installed."
3581 ##########################################
3582 # SHA command probe for modules
3583 if test "$modules" = yes; then
3584 shacmd_probe
="sha1sum sha1 shasum"
3585 for c
in $shacmd_probe; do
3591 if test "$shacmd" = ""; then
3592 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3596 ##########################################
3597 # pixman support probe
3599 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3602 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3603 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3604 pixman_libs
=$
($pkg_config --libs pixman-1
)
3606 error_exit
"pixman >= 0.21.8 not present." \
3607 "Please install the pixman devel package."
3610 ##########################################
3611 # libmpathpersist probe
3613 if test "$mpath" != "no" ; then
3614 # probe for the new API
3616 #include <libudev.h>
3617 #include <mpath_persist.h>
3618 unsigned mpath_mx_alloc_len = 1024;
3620 static struct config *multipath_conf;
3621 extern struct udev *udev;
3622 extern struct config *get_multipath_config(void);
3623 extern void put_multipath_config(struct config *conf);
3625 struct config *get_multipath_config(void) { return multipath_conf; }
3626 void put_multipath_config(struct config *conf) { }
3630 multipath_conf = mpath_lib_init();
3634 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3636 mpathpersist_new_api
=yes
3638 # probe for the old API
3640 #include <libudev.h>
3641 #include <mpath_persist.h>
3642 unsigned mpath_mx_alloc_len = 1024;
3645 struct udev *udev = udev_new();
3646 mpath_lib_init(udev);
3650 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3652 mpathpersist_new_api
=no
3661 ##########################################
3664 if test "$cap" != "no" ; then
3667 #include <sys/capability.h>
3668 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3670 if compile_prog
"" "-lcap" ; then
3677 ##########################################
3679 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3683 #include <pthread.h>
3684 static void *f(void *p) { return NULL; }
3687 pthread_create(&thread, 0, f, 0);
3691 if compile_prog
"" "" ; then
3694 for pthread_lib
in $PTHREADLIBS_LIST; do
3695 if compile_prog
"" "$pthread_lib" ; then
3698 for lib_entry
in $LIBS; do
3699 if test "$lib_entry" = "$pthread_lib"; then
3704 if test "$found" = "no"; then
3705 LIBS
="$pthread_lib $LIBS"
3706 libs_qga
="$pthread_lib $libs_qga"
3708 PTHREAD_LIB
="$pthread_lib"
3714 if test "$mingw32" != yes -a "$pthread" = no
; then
3715 error_exit
"pthread check failed" \
3716 "Make sure to have the pthread libs and headers installed."
3719 # check for pthread_setname_np
3720 pthread_setname_np
=no
3722 #include <pthread.h>
3724 static void *f(void *p) { return NULL; }
3728 pthread_create(&thread, 0, f, 0);
3729 pthread_setname_np(thread, "QEMU");
3733 if compile_prog
"" "$pthread_lib" ; then
3734 pthread_setname_np
=yes
3737 ##########################################
3739 if test "$rbd" != "no" ; then
3742 #include <rbd/librbd.h>
3745 rados_create(&cluster, NULL);
3749 rbd_libs
="-lrbd -lrados"
3750 if compile_prog
"" "$rbd_libs" ; then
3753 if test "$rbd" = "yes" ; then
3754 feature_not_found
"rados block device" "Install librbd/ceph devel"
3760 ##########################################
3762 min_libssh2_version
=1.2.8
3763 if test "$libssh2" != "no" ; then
3764 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3765 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3766 libssh2_libs
=$
($pkg_config libssh2
--libs)
3769 if test "$libssh2" = "yes" ; then
3770 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3776 ##########################################
3777 # libssh2_sftp_fsync probe
3779 if test "$libssh2" = "yes"; then
3782 #include <libssh2.h>
3783 #include <libssh2_sftp.h>
3785 LIBSSH2_SESSION *session;
3787 LIBSSH2_SFTP_HANDLE *sftp_handle;
3788 session = libssh2_session_init ();
3789 sftp = libssh2_sftp_init (session);
3790 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3791 libssh2_sftp_fsync (sftp_handle);
3795 # libssh2_cflags/libssh2_libs defined in previous test.
3796 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3797 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3801 ##########################################
3804 if test "$linux_aio" != "no" ; then
3807 #include <sys/eventfd.h>
3809 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3811 if compile_prog
"" "-laio" ; then
3814 if test "$linux_aio" = "yes" ; then
3815 feature_not_found
"linux AIO" "Install libaio devel"
3821 ##########################################
3822 # TPM passthrough is only on x86 Linux
3824 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3825 tpm_passthrough
=$tpm
3830 # TPM emulator is for all posix systems
3831 if test "$mingw32" != "yes"; then
3836 ##########################################
3839 if test "$attr" != "no" ; then
3842 #include <sys/types.h>
3843 #ifdef CONFIG_LIBATTR
3844 #include <attr/xattr.h>
3846 #include <sys/xattr.h>
3848 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3850 if compile_prog
"" "" ; then
3852 # Older distros have <attr/xattr.h>, and need -lattr:
3853 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3858 if test "$attr" = "yes" ; then
3859 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3865 ##########################################
3868 #include <sys/types.h>
3869 #include <sys/uio.h>
3871 int main(void) { return sizeof(struct iovec); }
3874 if compile_prog
"" "" ; then
3878 ##########################################
3881 #include <sys/types.h>
3882 #include <sys/uio.h>
3884 int main(void) { return preadv(0, 0, 0, 0); }
3887 if compile_prog
"" "" ; then
3891 ##########################################
3893 # fdt support is mandatory for at least some target architectures,
3894 # so insist on it if we're building those system emulators.
3896 for target
in $target_list; do
3898 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu|riscv
*-softmmu)
3904 if test "$fdt_required" = "yes"; then
3905 if test "$fdt" = "no"; then
3906 error_exit
"fdt disabled but some requested targets require it." \
3907 "You can turn off fdt only if you also disable all the system emulation" \
3908 "targets which need it (by specifying a cut down --target-list)."
3913 if test "$fdt" != "no" ; then
3915 # explicitly check for libfdt_env.h as it is missing in some stable installs
3916 # and test for required functions to make sure we are on a version >= 1.4.2
3919 #include <libfdt_env.h>
3920 int main(void) { fdt_first_subnode(0, 0); return 0; }
3922 if compile_prog
"" "$fdt_libs" ; then
3923 # system DTC is good - use it
3926 # have GIT checkout, so activate dtc submodule
3927 if test -e "${source_path}/.git" ; then
3928 git_submodules
="${git_submodules} dtc"
3930 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
3933 if [ "$pwd_is_source_path" != "y" ] ; then
3934 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3935 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3937 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3938 fdt_ldflags
="-L\$(BUILD_DIR)/dtc/libfdt"
3939 fdt_libs
="$fdt_libs"
3940 elif test "$fdt" = "yes" ; then
3941 # Not a git build & no libfdt found, prompt for system install
3942 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
3943 "Please install the DTC (libfdt) devel package"
3945 # don't have and don't want
3952 libs_softmmu
="$libs_softmmu $fdt_libs"
3954 ##########################################
3955 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3957 if test "$opengl" != "no" ; then
3958 opengl_pkgs
="epoxy gbm"
3959 if $pkg_config $opengl_pkgs; then
3960 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs)"
3961 opengl_libs
="$($pkg_config --libs $opengl_pkgs)"
3963 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3966 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3968 if test "$opengl" = "yes" ; then
3969 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3977 if test "$opengl" = "yes"; then
3979 #include <epoxy/egl.h>
3980 #ifndef EGL_MESA_image_dma_buf_export
3981 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3983 int main(void) { return 0; }
3985 if compile_prog
"" "" ; then
3990 ##########################################
3992 if test "$libxml2" != "no" ; then
3993 if $pkg_config --exists libxml-2.0
; then
3995 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
3996 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
3998 if test "$libxml2" = "yes"; then
3999 feature_not_found
"libxml2" "Install libxml2 devel"
4005 ##########################################
4007 if test "$glusterfs" != "no" ; then
4008 if $pkg_config --atleast-version=3 glusterfs-api
; then
4010 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
4011 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
4012 if $pkg_config --atleast-version=4 glusterfs-api
; then
4013 glusterfs_xlator_opt
="yes"
4015 if $pkg_config --atleast-version=5 glusterfs-api
; then
4016 glusterfs_discard
="yes"
4018 if $pkg_config --atleast-version=6 glusterfs-api
; then
4019 glusterfs_fallocate
="yes"
4020 glusterfs_zerofill
="yes"
4023 if test "$glusterfs" = "yes" ; then
4024 feature_not_found
"GlusterFS backend support" \
4025 "Install glusterfs-api devel >= 3"
4031 # Check for inotify functions when we are building linux-user
4032 # emulator. This is done because older glibc versions don't
4033 # have syscall stubs for these implemented. In that case we
4034 # don't provide them even if kernel supports them.
4038 #include <sys/inotify.h>
4043 /* try to start inotify */
4044 return inotify_init();
4047 if compile_prog
"" "" ; then
4053 #include <sys/inotify.h>
4058 /* try to start inotify */
4059 return inotify_init1(0);
4062 if compile_prog
"" "" ; then
4066 # check if pipe2 is there
4075 return pipe2(pipefd, O_CLOEXEC);
4078 if compile_prog
"" "" ; then
4082 # check if accept4 is there
4085 #include <sys/socket.h>
4090 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4094 if compile_prog
"" "" ; then
4098 # check if tee/splice is there. vmsplice was added same time.
4108 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4109 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4113 if compile_prog
"" "" ; then
4117 ##########################################
4120 if test "$numa" != "no" ; then
4123 int main(void) { return numa_available(); }
4126 if compile_prog
"" "-lnuma" ; then
4128 libs_softmmu
="-lnuma $libs_softmmu"
4130 if test "$numa" = "yes" ; then
4131 feature_not_found
"numa" "install numactl devel"
4137 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4138 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4142 # Even if malloc_trim() is available, these non-libc memory allocators
4143 # do not support it.
4144 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
4145 if test "$malloc_trim" = "yes" ; then
4146 echo "Disabling malloc_trim with non-libc memory allocator"
4151 #######################################
4154 if test "$malloc_trim" != "no" ; then
4157 int main(void) { malloc_trim(0); return 0; }
4159 if compile_prog
"" "" ; then
4166 ##########################################
4169 if test "$tcmalloc" = "yes" ; then
4172 int main(void) { malloc(1); return 0; }
4175 if compile_prog
"" "-ltcmalloc" ; then
4176 LIBS
="-ltcmalloc $LIBS"
4178 feature_not_found
"tcmalloc" "install gperftools devel"
4182 ##########################################
4185 if test "$jemalloc" = "yes" ; then
4188 int main(void) { malloc(1); return 0; }
4191 if compile_prog
"" "-ljemalloc" ; then
4192 LIBS
="-ljemalloc $LIBS"
4194 feature_not_found
"jemalloc" "install jemalloc devel"
4198 ##########################################
4203 #include <sys/syscall.h>
4205 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4208 if compile_prog
"" "" ; then
4212 # check if eventfd is supported
4215 #include <sys/eventfd.h>
4219 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
4222 if compile_prog
"" "" ; then
4226 # check if memfd is supported
4229 #include <sys/mman.h>
4233 return memfd_create("foo", MFD_ALLOW_SEALING);
4236 if compile_prog
"" "" ; then
4242 if test "$linux_user" = "yes"; then
4243 if check_include linux
/usbdevice_fs.h
; then
4249 # check for fallocate
4256 fallocate(0, 0, 0, 0);
4260 if compile_prog
"" "" ; then
4264 # check for fallocate hole punching
4265 fallocate_punch_hole
=no
4268 #include <linux/falloc.h>
4272 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4276 if compile_prog
"" "" ; then
4277 fallocate_punch_hole
=yes
4280 # check that fallocate supports range zeroing inside the file
4281 fallocate_zero_range
=no
4284 #include <linux/falloc.h>
4288 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4292 if compile_prog
"" "" ; then
4293 fallocate_zero_range
=yes
4296 # check for posix_fallocate
4303 posix_fallocate(0, 0, 0);
4307 if compile_prog
"" "" ; then
4311 # check for sync_file_range
4318 sync_file_range(0, 0, 0, 0);
4322 if compile_prog
"" "" ; then
4326 # check for linux/fiemap.h and FS_IOC_FIEMAP
4329 #include <sys/ioctl.h>
4330 #include <linux/fs.h>
4331 #include <linux/fiemap.h>
4335 ioctl(0, FS_IOC_FIEMAP, 0);
4339 if compile_prog
"" "" ; then
4354 if compile_prog
"" "" ; then
4358 # check for ppoll support
4365 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4366 ppoll(&pfd, 1, 0, 0);
4370 if compile_prog
"" "" ; then
4374 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4375 prctl_pr_set_timerslack
=no
4377 #include <sys/prctl.h>
4381 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4385 if compile_prog
"" "" ; then
4386 prctl_pr_set_timerslack
=yes
4389 # check for epoll support
4392 #include <sys/epoll.h>
4400 if compile_prog
"" "" ; then
4404 # epoll_create1 is a later addition
4405 # so we must check separately for its presence
4408 #include <sys/epoll.h>
4412 /* Note that we use epoll_create1 as a value, not as
4413 * a function being called. This is necessary so that on
4414 * old SPARC glibc versions where the function was present in
4415 * the library but not declared in the header file we will
4416 * fail the configure check. (Otherwise we will get a compiler
4417 * warning but not an error, and will proceed to fail the
4418 * qemu compile where we compile with -Werror.)
4420 return (int)(uintptr_t)&epoll_create1;
4423 if compile_prog
"" "" ; then
4427 # check for sendfile support
4430 #include <sys/sendfile.h>
4434 return sendfile(0, 0, 0, 0);
4437 if compile_prog
"" "" ; then
4441 # check for timerfd support (glibc 2.8 and newer)
4444 #include <sys/timerfd.h>
4448 return(timerfd_create(CLOCK_REALTIME, 0));
4451 if compile_prog
"" "" ; then
4455 # check for setns and unshare support
4468 if compile_prog
"" "" ; then
4472 # clock_adjtime probe
4479 return clock_adjtime(0, 0);
4483 if compile_prog
"" "" ; then
4498 if compile_prog
"" "" ; then
4502 # Check if tools are available to build documentation.
4503 if test "$docs" != "no" ; then
4504 if has makeinfo
&& has pod2man
; then
4507 if test "$docs" = "yes" ; then
4508 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4514 # Search for bswap_32 function
4517 #include <byteswap.h>
4518 int main(void) { return bswap_32(0); }
4520 if compile_prog
"" "" ; then
4524 # Search for bswap32 function
4527 #include <sys/endian.h>
4528 #include <sys/types.h>
4529 #include <machine/bswap.h>
4530 int main(void) { return bswap32(0); }
4532 if compile_prog
"" "" ; then
4536 ##########################################
4537 # Do we have libiscsi >= 1.9.0
4538 if test "$libiscsi" != "no" ; then
4539 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4541 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4542 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4544 if test "$libiscsi" = "yes" ; then
4545 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4551 ##########################################
4555 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4557 if compile_prog
"" "" ; then
4559 elif compile_prog
"" "-lm" ; then
4561 libs_qga
="-lm $libs_qga"
4563 error_exit
"libm check failed"
4566 ##########################################
4568 # uClibc provides 2 versions of clock_gettime(), one with realtime
4569 # support and one without. This means that the clock_gettime() don't
4570 # need -lrt. We still need it for timer_create() so we check for this
4571 # function in addition.
4576 timer_create(CLOCK_REALTIME, NULL, NULL);
4577 return clock_gettime(CLOCK_REALTIME, NULL);
4581 if compile_prog
"" "" ; then
4583 # we need pthread for static linking. use previous pthread test result
4584 elif compile_prog
"" "$pthread_lib -lrt" ; then
4586 libs_qga
="$libs_qga -lrt"
4589 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4590 "$haiku" != "yes" ; then
4591 libs_softmmu
="-lutil $libs_softmmu"
4594 ##########################################
4596 if test "$spice" != "no" ; then
4599 int main(void) { spice_server_new(); return 0; }
4601 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4602 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4603 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4604 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4605 compile_prog
"$spice_cflags" "$spice_libs" ; then
4607 libs_softmmu
="$libs_softmmu $spice_libs"
4608 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4609 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4610 spice_server_version
=$
($pkg_config --modversion spice-server
)
4612 if test "$spice" = "yes" ; then
4613 feature_not_found
"spice" \
4614 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4620 # check for smartcard support
4621 if test "$smartcard" != "no"; then
4622 if $pkg_config --atleast-version=2.5.1 libcacard
; then
4623 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4624 libcacard_libs
=$
($pkg_config --libs libcacard
)
4627 if test "$smartcard" = "yes"; then
4628 feature_not_found
"smartcard" "Install libcacard devel"
4635 if test "$libusb" != "no" ; then
4636 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4638 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4639 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4641 if test "$libusb" = "yes"; then
4642 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4648 # check for usbredirparser for usb network redirection support
4649 if test "$usb_redir" != "no" ; then
4650 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4652 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4653 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4655 if test "$usb_redir" = "yes"; then
4656 feature_not_found
"usb-redir" "Install usbredir devel"
4662 ##########################################
4663 # check if we have VSS SDK headers for win
4665 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4666 case "$vss_win32_sdk" in
4667 "") vss_win32_include
="-isystem $source_path" ;;
4668 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4669 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4670 vss_win32_include
="-isystem $source_path/.sdk/vss"
4671 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4673 *) vss_win32_include
="-isystem $vss_win32_sdk"
4676 #define __MIDL_user_allocate_free_DEFINED__
4677 #include <inc/win2003/vss.h>
4678 int main(void) { return VSS_CTX_BACKUP; }
4680 if compile_prog
"$vss_win32_include" "" ; then
4681 guest_agent_with_vss
="yes"
4682 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4683 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4684 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4686 if test "$vss_win32_sdk" != "" ; then
4687 echo "ERROR: Please download and install Microsoft VSS SDK:"
4688 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4689 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4690 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4691 echo "ERROR: The headers are extracted in the directory \`inc'."
4692 feature_not_found
"VSS support"
4694 guest_agent_with_vss
="no"
4698 ##########################################
4699 # lookup Windows platform SDK (if not specified)
4700 # The SDK is needed only to build .tlb (type library) file of guest agent
4701 # VSS provider from the source. It is usually unnecessary because the
4702 # pre-compiled .tlb file is included.
4704 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4705 if test -z "$win_sdk"; then
4706 programfiles
="$PROGRAMFILES"
4707 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4708 if test -n "$programfiles"; then
4709 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4711 feature_not_found
"Windows SDK"
4713 elif test "$win_sdk" = "no"; then
4718 ##########################################
4719 # check if mingw environment provides a recent ntddscsi.h
4720 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4722 #include <windows.h>
4723 #include <ntddscsi.h>
4725 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4726 #error Missing required ioctl definitions
4728 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4732 if compile_prog
"" "" ; then
4733 guest_agent_ntddscsi
=yes
4734 libs_qga
="-lsetupapi $libs_qga"
4738 ##########################################
4739 # virgl renderer probe
4741 if test "$virglrenderer" != "no" ; then
4743 #include <virglrenderer.h>
4744 int main(void) { virgl_renderer_poll(); return 0; }
4746 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4747 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4748 virgl_version
=$
($pkg_config --modversion virglrenderer
2>/dev
/null
)
4749 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4750 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4753 if test "$virglrenderer" = "yes" ; then
4754 feature_not_found
"virglrenderer"
4760 ##########################################
4765 if $pkg_config capstone
; then
4767 elif test -e "${source_path}/.git" -a $git_update = 'yes' ; then
4769 elif test -e "${source_path}/capstone/Makefile" ; then
4771 elif test -z "$capstone" ; then
4774 feature_not_found
"capstone" "Install capstone devel or git submodule"
4779 if ! $pkg_config capstone
; then
4780 feature_not_found
"capstone" "Install capstone devel"
4787 if test "$capstone" = git
; then
4788 git_submodules
="${git_submodules} capstone"
4791 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4792 if test "$mingw32" = "yes"; then
4793 LIBCAPSTONE
=capstone.lib
4795 LIBCAPSTONE
=libcapstone.a
4797 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4801 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4802 LIBS
="$($pkg_config --libs capstone) $LIBS"
4808 error_exit
"Unknown state for capstone: $capstone"
4812 ##########################################
4813 # check if we have fdatasync
4819 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4820 return fdatasync(0);
4822 #error Not supported
4826 if compile_prog
"" "" ; then
4830 ##########################################
4831 # check if we have madvise
4835 #include <sys/types.h>
4836 #include <sys/mman.h>
4838 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4840 if compile_prog
"" "" ; then
4844 ##########################################
4845 # check if we have posix_madvise
4849 #include <sys/mman.h>
4851 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4853 if compile_prog
"" "" ; then
4857 ##########################################
4858 # check if we have posix_memalign()
4865 return posix_memalign(&p, 8, 8);
4868 if compile_prog
"" "" ; then
4872 ##########################################
4873 # check if we have posix_syslog
4878 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4880 if compile_prog
"" "" ; then
4884 ##########################################
4885 # check if we have sem_timedwait
4889 #include <semaphore.h>
4890 int main(void) { return sem_timedwait(0, 0); }
4892 if compile_prog
"" "" ; then
4896 ##########################################
4897 # check if we have strchrnul
4903 // Use a haystack that the compiler shouldn't be able to constant fold
4904 char *haystack = (char*)&main;
4905 int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
4907 if compile_prog
"" "" ; then
4911 ##########################################
4912 # check if trace backend exists
4914 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4915 if test "$?" -ne 0 ; then
4916 error_exit
"invalid trace backends" \
4917 "Please choose supported trace backends."
4920 ##########################################
4921 # For 'ust' backend, test if ust headers are present
4922 if have_backend
"ust"; then
4924 #include <lttng/tracepoint.h>
4925 int main(void) { return 0; }
4927 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4928 if $pkg_config lttng-ust
--exists; then
4929 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4931 lttng_ust_libs
="-llttng-ust -ldl"
4933 if $pkg_config liburcu-bp
--exists; then
4934 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4936 urcu_bp_libs
="-lurcu-bp"
4939 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4940 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4942 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4946 ##########################################
4947 # For 'dtrace' backend, test if 'dtrace' command is present
4948 if have_backend
"dtrace"; then
4949 if ! has
'dtrace' ; then
4950 error_exit
"dtrace command is not found in PATH $PATH"
4952 trace_backend_stap
="no"
4953 if has
'stap' ; then
4954 trace_backend_stap
="yes"
4958 ##########################################
4959 # check and set a backend for coroutine
4961 # We prefer ucontext, but it's not always possible. The fallback
4962 # is sigcontext. On Windows the only valid backend is the Windows
4966 if test "$darwin" != "yes"; then
4968 #include <ucontext.h>
4969 #ifdef __stub_makecontext
4970 #error Ignoring glibc stub makecontext which will always fail
4972 int main(void) { makecontext(0, 0, 0); return 0; }
4974 if compile_prog
"" "" ; then
4979 if test "$coroutine" = ""; then
4980 if test "$mingw32" = "yes"; then
4982 elif test "$ucontext_works" = "yes"; then
4985 coroutine
=sigaltstack
4990 if test "$mingw32" != "yes"; then
4991 error_exit
"'windows' coroutine backend only valid for Windows"
4993 # Unfortunately the user visible backend name doesn't match the
4994 # coroutine-*.c filename for this case, so we have to adjust it here.
4998 if test "$ucontext_works" != "yes"; then
4999 feature_not_found
"ucontext"
5003 if test "$mingw32" = "yes"; then
5004 error_exit
"only the 'windows' coroutine backend is valid for Windows"
5008 error_exit
"unknown coroutine backend $coroutine"
5013 if test "$coroutine_pool" = ""; then
5014 if test "$coroutine" = "gthread" -o "$coroutine" = "win32"; then
5020 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
5021 error_exit
"'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
5024 if test "$debug_stack_usage" = "yes"; then
5025 if test "$coroutine_pool" = "yes"; then
5026 echo "WARN: disabling coroutine pool for stack usage debugging"
5032 ##########################################
5033 # check if we have open_by_handle_at
5035 open_by_handle_at
=no
5038 #if !defined(AT_EMPTY_PATH)
5039 # error missing definition
5041 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
5044 if compile_prog
"" "" ; then
5045 open_by_handle_at
=yes
5048 ########################################
5049 # check if we have linux/magic.h
5053 #include <linux/magic.h>
5058 if compile_prog
"" "" ; then
5062 ########################################
5063 # check whether we can disable warning option with a pragma (this is needed
5064 # to silence warnings in the headers of some versions of external libraries).
5065 # This test has to be compiled with -Werror as otherwise an unknown pragma is
5068 # If we can't selectively disable warning in the code, disable -Werror so that
5069 # the build doesn't fail anyway.
5071 pragma_disable_unused_but_set
=no
5073 #pragma GCC diagnostic push
5074 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
5075 #pragma GCC diagnostic pop
5081 if compile_prog
"-Werror" "" ; then
5082 pragma_diagnostic_available
=yes
5085 ########################################
5086 # check if we have valgrind/valgrind.h
5090 #include <valgrind/valgrind.h>
5095 if compile_prog
"" "" ; then
5099 ########################################
5100 # check if environ is declared
5110 if compile_prog
"" "" ; then
5114 ########################################
5115 # check if cpuid.h is usable.
5120 unsigned a, b, c, d;
5121 int max = __get_cpuid_max(0, 0);
5124 __cpuid(1, a, b, c, d);
5128 __cpuid_count(7, 0, a, b, c, d);
5134 if compile_prog
"" "" ; then
5138 ##########################################
5139 # avx2 optimization requirement check
5141 # There is no point enabling this if cpuid.h is not usable,
5142 # since we won't be able to select the new routines.
5144 if test "$cpuid_h" = "yes" -a "$avx2_opt" != "no"; then
5146 #pragma GCC push_options
5147 #pragma GCC target("avx2")
5149 #include <immintrin.h>
5150 static int bar(void *a) {
5151 __m256i x = *(__m256i *)a;
5152 return _mm256_testz_si256(x, x);
5154 int main(int argc, char *argv[]) { return bar(argv[0]); }
5156 if compile_object
"" ; then
5163 ########################################
5164 # check if __[u]int128_t is usable.
5168 #if defined(__clang_major__) && defined(__clang_minor__)
5169 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
5170 # error __int128_t does not work in CLANG before 3.2
5182 if compile_prog
"" "" ; then
5186 #########################################
5187 # See if 128-bit atomic operations are supported.
5190 if test "$int128" = "yes"; then
5194 unsigned __int128 x = 0, y = 0;
5195 y = __atomic_load_16(&x, 0);
5196 __atomic_store_16(&x, y, 0);
5197 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5201 if compile_prog
"" "" ; then
5207 if test "$int128" = yes -a "$atomic128" = no
; then
5211 unsigned __int128 x = 0, y = 0;
5212 __sync_val_compare_and_swap_16(&x, y, x);
5216 if compile_prog
"" "" ; then
5221 #########################################
5222 # See if 64-bit atomic operations are supported.
5223 # Note that without __atomic builtins, we can only
5224 # assume atomic loads/stores max at pointer size.
5230 uint64_t x = 0, y = 0;
5231 #ifdef __ATOMIC_RELAXED
5232 y = __atomic_load_8(&x, 0);
5233 __atomic_store_8(&x, y, 0);
5234 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5235 __atomic_exchange_8(&x, y, 0);
5236 __atomic_fetch_add_8(&x, y, 0);
5238 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5239 __sync_lock_test_and_set(&x, y);
5240 __sync_val_compare_and_swap(&x, y, 0);
5241 __sync_fetch_and_add(&x, y);
5246 if compile_prog
"" "" ; then
5250 ########################################
5251 # See if 16-byte vector operations are supported.
5252 # Even without a vector unit the compiler may expand these.
5253 # There is a bug in old GCC for PPC that crashes here.
5254 # Unfortunately it's the system compiler for Centos 7.
5257 typedef unsigned char U1 __attribute__((vector_size(16)));
5258 typedef unsigned short U2 __attribute__((vector_size(16)));
5259 typedef unsigned int U4 __attribute__((vector_size(16)));
5260 typedef unsigned long long U8 __attribute__((vector_size(16)));
5261 typedef signed char S1 __attribute__((vector_size(16)));
5262 typedef signed short S2 __attribute__((vector_size(16)));
5263 typedef signed int S4 __attribute__((vector_size(16)));
5264 typedef signed long long S8 __attribute__((vector_size(16)));
5274 void helper(void *d, void *a, int shift, int i);
5275 void helper(void *d, void *a, int shift, int i)
5277 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5278 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5279 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5280 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5284 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5285 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5286 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5287 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5288 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5289 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5290 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5291 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5292 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5298 if compile_prog
"" "" ; then
5302 ########################################
5303 # check if getauxval is available.
5307 #include <sys/auxv.h>
5309 return getauxval(AT_HWCAP) == 0;
5312 if compile_prog
"" "" ; then
5316 ########################################
5317 # check if ccache is interfering with
5318 # semantic analysis of macros
5323 static const int Z = 1;
5324 #define fn() ({ Z; })
5325 #define TAUT(X) ((X) == Z)
5326 #define PAREN(X, Y) (X == Y)
5328 int main(int argc, char *argv[])
5334 if (PAREN(x, y)) return 0;
5335 if (TAUT(Z)) return 0;
5340 if ! compile_object
"-Werror"; then
5344 #################################################
5345 # clang does not support glibc + FORTIFY_SOURCE.
5347 if test "$fortify_source" != "no"; then
5348 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
5349 fortify_source
="no";
5350 elif test -n "$cxx" && has
$cxx &&
5351 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
5352 fortify_source
="no";
5354 fortify_source
="yes"
5358 ###############################################
5359 # Check if copy_file_range is provided by glibc
5360 have_copy_file_range
=no
5364 copy_file_range(0, NULL, 0, NULL, 0, 0);
5368 if compile_prog
"" "" ; then
5369 have_copy_file_range
=yes
5372 ##########################################
5373 # check if struct fsxattr is available via linux/fs.h
5377 #include <linux/fs.h>
5383 if compile_prog
"" "" ; then
5387 ##########################################
5388 # check for usable membarrier system call
5389 if test "$membarrier" = "yes"; then
5391 if test "$mingw32" = "yes" ; then
5393 elif test "$linux" = "yes" ; then
5395 #include <linux/membarrier.h>
5396 #include <sys/syscall.h>
5400 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5401 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5405 if compile_prog
"" "" ; then
5409 if test "$have_membarrier" = "no"; then
5410 feature_not_found
"membarrier" "membarrier system call not available"
5413 # Do not enable it by default even for Mingw32, because it doesn't
5418 ##########################################
5419 # check if rtnetlink.h exists and is useful
5422 #include <linux/rtnetlink.h>
5424 return IFLA_PROTO_DOWN;
5427 if compile_prog
"" "" ; then
5431 ##########################################
5432 # check for usable AF_VSOCK environment
5436 #include <sys/types.h>
5437 #include <sys/socket.h>
5438 #if !defined(AF_VSOCK)
5439 # error missing AF_VSOCK flag
5441 #include <linux/vm_sockets.h>
5444 struct sockaddr_vm svm;
5445 socklen_t len = sizeof(svm);
5446 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5447 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5448 if ((ret == -1) && (errno == ENOTCONN)) {
5454 if compile_prog
"" "" ; then
5458 ##########################################
5459 # check for usable AF_ALG environment
5463 #include <sys/types.h>
5464 #include <sys/socket.h>
5465 #include <linux/if_alg.h>
5468 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5472 if compile_prog
"" "" ; then
5475 if test "$crypto_afalg" = "yes"
5477 if test "$have_afalg" != "yes"
5479 error_exit
"AF_ALG requested but could not be detected"
5484 #################################################
5485 # Check to see if we have the Hypervisor framework
5486 if [ "$darwin" = "yes" ] ; then
5488 #include <Hypervisor/hv.h>
5489 int main() { return 0;}
5491 if ! compile_object
""; then
5495 LDFLAGS
="-framework Hypervisor $LDFLAGS"
5499 #################################################
5500 # Sparc implicitly links with --relax, which is
5501 # incompatible with -r, so --no-relax should be
5502 # given. It does no harm to give it on other
5505 # Note: the prototype is needed since QEMU_CFLAGS
5506 # contains -Wmissing-prototypes
5508 extern int foo(void);
5509 int foo(void) { return 0; }
5511 if ! compile_object
""; then
5512 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5514 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5515 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5520 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5521 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5524 ##########################################
5525 # check for sysmacros.h
5529 #include <sys/sysmacros.h>
5531 return makedev(0, 0);
5534 if compile_prog
"" "" ; then
5538 ##########################################
5539 # Veritas HyperScale block driver VxHS
5540 # Check if libvxhs is installed
5542 if test "$vxhs" != "no" ; then
5545 #include <qnio/qnio_api.h>
5547 void *vxhs_callback;
5550 iio_init(QNIO_VERSION, vxhs_callback);
5554 vxhs_libs
="-lvxhs -lssl"
5555 if compile_prog
"" "$vxhs_libs" ; then
5558 if test "$vxhs" = "yes" ; then
5559 feature_not_found
"vxhs block device" "Install libvxhs See github"
5565 ##########################################
5566 # check for _Static_assert()
5568 have_static_assert
=no
5570 _Static_assert(1, "success");
5575 if compile_prog
"" "" ; then
5576 have_static_assert
=yes
5579 ##########################################
5580 # check for utmpx.h, it is missing e.g. on OpenBSD
5585 struct utmpx user_info;
5590 if compile_prog
"" "" ; then
5594 ##########################################
5595 # checks for sanitizers
5599 have_asan_iface_h
=no
5600 have_asan_iface_fiber
=no
5602 if test "$sanitizers" = "yes" ; then
5604 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5608 # we could use a simple skeleton for flags checks, but this also
5609 # detect the static linking issue of ubsan, see also:
5610 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5614 void *tmp = malloc(10);
5615 return *(int *)(tmp + 2);
5618 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5622 if check_include
"sanitizer/asan_interface.h" ; then
5623 have_asan_iface_h
=yes
5627 #include <sanitizer/asan_interface.h>
5629 __sanitizer_start_switch_fiber(0, 0, 0);
5633 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5634 have_asan_iface_fiber
=yes
5638 ##########################################
5639 # Docker and cross-compiler support
5641 # This is specifically for building test
5642 # cases for foreign architectures, not
5643 # cross-compiling QEMU itself.
5645 if has
"docker"; then
5646 docker
=$
($python $source_path/tests
/docker
/docker.py probe
)
5649 ##########################################
5652 if test "$libpmem" != "no"; then
5653 if $pkg_config --exists "libpmem"; then
5655 libpmem_libs
=$
($pkg_config --libs libpmem
)
5656 libpmem_cflags
=$
($pkg_config --cflags libpmem
)
5657 libs_softmmu
="$libs_softmmu $libpmem_libs"
5658 QEMU_CFLAGS
="$QEMU_CFLAGS $libpmem_cflags"
5660 if test "$libpmem" = "yes" ; then
5661 feature_not_found
"libpmem" "Install nvml or pmdk"
5667 ##########################################
5669 # After here, no more $cc or $ld runs
5673 if test "$gcov" = "yes" ; then
5674 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5675 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5676 elif test "$fortify_source" = "yes" ; then
5677 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5678 elif test "$debug" = "no"; then
5679 CFLAGS
="-O2 $CFLAGS"
5682 if test "$have_asan" = "yes"; then
5683 CFLAGS
="-fsanitize=address $CFLAGS"
5684 if test "$have_asan_iface_h" = "no" ; then
5685 echo "ASAN build enabled, but ASAN header missing." \
5686 "Without code annotation, the report may be inferior."
5687 elif test "$have_asan_iface_fiber" = "no" ; then
5688 echo "ASAN build enabled, but ASAN header is too old." \
5689 "Without code annotation, the report may be inferior."
5692 if test "$have_ubsan" = "yes"; then
5693 CFLAGS
="-fsanitize=undefined $CFLAGS"
5696 ##########################################
5698 if test "$libnfs" != "no" ; then
5699 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5701 libnfs_libs
=$
($pkg_config --libs libnfs
)
5703 if test "$libnfs" = "yes" ; then
5704 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5710 ##########################################
5711 # Do we have libudev
5712 if test "$libudev" != "no" ; then
5713 if $pkg_config libudev
&& test "$static" != "yes"; then
5715 libudev_libs
=$
($pkg_config --libs libudev
)
5721 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5722 if test "$werror" = "yes"; then
5723 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5726 if test "$solaris" = "no" ; then
5727 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5728 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5732 # test if pod2man has --utf8 option
5733 if pod2man
--help |
grep -q utf8
; then
5734 POD2MAN
="pod2man --utf8"
5739 # Use large addresses, ASLR, no-SEH and DEP if available.
5740 if test "$mingw32" = "yes" ; then
5741 if test "$cpu" = i386
; then
5742 LDFLAGS
="-Wl,--large-address-aware $LDFLAGS"
5744 for flag
in --dynamicbase --no-seh --nxcompat; do
5745 if ld_has
$flag ; then
5746 LDFLAGS
="-Wl,$flag $LDFLAGS"
5751 qemu_confdir
=$sysconfdir$confsuffix
5752 qemu_moddir
=$libdir$confsuffix
5753 qemu_datadir
=$datadir$confsuffix
5754 qemu_localedir
="$datadir/locale"
5756 # We can only support ivshmem if we have eventfd
5757 if [ "$eventfd" = "yes" ]; then
5762 if test "$want_tools" = "yes" ; then
5763 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools"
5764 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5765 tools
="qemu-nbd\$(EXESUF) $tools"
5767 if [ "$ivshmem" = "yes" ]; then
5768 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5770 if [ "$posix" = "yes" ] && [ "$curl" = "yes" ]; then
5771 tools
="elf2dmp $tools"
5774 if test "$softmmu" = yes ; then
5775 if test "$linux" = yes; then
5776 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5778 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5780 if test "$virtfs" = yes; then
5781 error_exit
"VirtFS requires libcap devel and libattr devel"
5785 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
5788 if test "$mpath" = yes; then
5789 error_exit
"Multipath requires libmpathpersist devel"
5793 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
5795 if test "$virtfs" = yes; then
5796 error_exit
"VirtFS is supported only on Linux"
5799 if test "$mpath" = yes; then
5800 error_exit
"Multipath is supported only on Linux"
5804 if test "$xkbcommon" = "yes"; then
5805 tools
="qemu-keymap\$(EXESUF) $tools"
5809 # Probe for guest agent support/options
5811 if [ "$guest_agent" != "no" ]; then
5812 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5813 tools
="qemu-ga $tools"
5815 elif [ "$guest_agent" != yes ]; then
5818 error_exit
"Guest agent is not supported on this platform"
5822 # Guest agent Window MSI package
5824 if test "$guest_agent" != yes; then
5825 if test "$guest_agent_msi" = yes; then
5826 error_exit
"MSI guest agent package requires guest agent enabled"
5829 elif test "$mingw32" != "yes"; then
5830 if test "$guest_agent_msi" = "yes"; then
5831 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5834 elif ! has wixl
; then
5835 if test "$guest_agent_msi" = "yes"; then
5836 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5840 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5841 # disabled explicitly
5842 if test "$guest_agent_msi" != "no"; then
5847 if test "$guest_agent_msi" = "yes"; then
5848 if test "$guest_agent_with_vss" = "yes"; then
5849 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5852 if test "$QEMU_GA_MANUFACTURER" = ""; then
5853 QEMU_GA_MANUFACTURER
=QEMU
5856 if test "$QEMU_GA_DISTRO" = ""; then
5857 QEMU_GA_DISTRO
=Linux
5860 if test "$QEMU_GA_VERSION" = ""; then
5861 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5864 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5868 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5871 QEMU_GA_MSI_ARCH
="-D Arch=32"
5874 error_exit
"CPU $cpu not supported for building installation package"
5879 # Mac OS X ships with a broken assembler
5881 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5882 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5883 "$softmmu" = yes ; then
5884 # Different host OS linkers have different ideas about the name of the ELF
5885 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5886 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5887 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
5888 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5889 ld_i386_emulation
="$emu"
5895 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5896 roms
="$roms spapr-rtas"
5899 if test "$cpu" = "s390x" ; then
5900 roms
="$roms s390-ccw"
5903 # Probe for the need for relocating the user-only binary.
5904 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5907 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5908 # ??? Rationale for choosing this address
5909 textseg_addr
=0x60000000
5912 # A 256M aligned address, high in the address space, with enough
5913 # room for the code_gen_buffer above it before the stack.
5914 textseg_addr
=0x60000000
5917 if [ -n "$textseg_addr" ]; then
5919 int main(void) { return 0; }
5921 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5922 if ! compile_prog
"" "$textseg_ldflags"; then
5923 # In case ld does not support -Ttext-segment, edit the default linker
5924 # script via sed to set the .text start addr. This is needed on FreeBSD
5926 if ! $ld --verbose >/dev
/null
2>&1; then
5928 "We need to link the QEMU user mode binaries at a" \
5929 "specific text address. Unfortunately your linker" \
5930 "doesn't support either the -Ttext-segment option or" \
5931 "printing the default linker script with --verbose." \
5932 "If you don't want the user mode binaries, pass the" \
5933 "--disable-user option to configure."
5936 $ld --verbose |
sed \
5937 -e '1,/==================================================/d' \
5938 -e '/==================================================/,$d' \
5939 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5940 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5941 textseg_ldflags
="-Wl,-T../config-host.ld"
5946 # Check that the C++ compiler exists and works with the C compiler.
5947 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5950 int c_function(void);
5951 int main(void) { return c_function(); }
5958 int c_function(void);
5960 int c_function(void) { return 42; }
5965 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5966 # C++ compiler $cxx works ok with C compiler $cc
5969 echo "C++ compiler $cxx does not work with C compiler $cc"
5970 echo "Disabling C++ specific optional code"
5974 echo "No C++ compiler available; disabling C++ specific optional code"
5979 if test "$1" = "yes" ; then
5984 # prepend pixman and ftd flags after all config tests are done
5985 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5986 QEMU_LDFLAGS
="$fdt_ldflags $QEMU_LDFLAGS"
5987 libs_softmmu
="$pixman_libs $libs_softmmu"
5989 echo "Install prefix $prefix"
5990 echo "BIOS directory $(eval echo $qemu_datadir)"
5991 echo "firmware path $(eval echo $firmwarepath)"
5992 echo "binary directory $(eval echo $bindir)"
5993 echo "library directory $(eval echo $libdir)"
5994 echo "module directory $(eval echo $qemu_moddir)"
5995 echo "libexec directory $(eval echo $libexecdir)"
5996 echo "include directory $(eval echo $includedir)"
5997 echo "config directory $(eval echo $sysconfdir)"
5998 if test "$mingw32" = "no" ; then
5999 echo "local state directory $(eval echo $local_statedir)"
6000 echo "Manual directory $(eval echo $mandir)"
6001 echo "ELF interp prefix $interp_prefix"
6003 echo "local state directory queried at runtime"
6004 echo "Windows SDK $win_sdk"
6006 echo "Source path $source_path"
6007 echo "GIT binary $git"
6008 echo "GIT submodules $git_submodules"
6009 echo "C compiler $cc"
6010 echo "Host C compiler $host_cc"
6011 echo "C++ compiler $cxx"
6012 echo "Objective-C compiler $objcc"
6013 echo "ARFLAGS $ARFLAGS"
6014 echo "CFLAGS $CFLAGS"
6015 echo "QEMU_CFLAGS $QEMU_CFLAGS"
6016 echo "LDFLAGS $LDFLAGS"
6017 echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
6019 echo "install $install"
6020 echo "python $python"
6021 if test "$slirp" = "yes" ; then
6024 echo "module support $modules"
6025 echo "host CPU $cpu"
6026 echo "host big endian $bigendian"
6027 echo "target list $target_list"
6028 echo "gprof enabled $gprof"
6029 echo "sparse enabled $sparse"
6030 echo "strip binaries $strip_opt"
6031 echo "profiler $profiler"
6032 echo "static build $static"
6033 if test "$darwin" = "yes" ; then
6034 echo "Cocoa support $cocoa"
6036 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
6037 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
6038 echo "GTK GL support $gtk_gl"
6039 echo "VTE support $vte $(echo_version $vte $vteversion)"
6040 echo "TLS priority $tls_priority"
6041 echo "GNUTLS support $gnutls"
6042 echo "libgcrypt $gcrypt"
6043 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
6044 echo "libtasn1 $tasn1"
6045 echo "curses support $curses"
6046 echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
6047 echo "curl support $curl"
6048 echo "mingw32 support $mingw32"
6049 echo "Audio drivers $audio_drv_list"
6050 echo "Block whitelist (rw) $block_drv_rw_whitelist"
6051 echo "Block whitelist (ro) $block_drv_ro_whitelist"
6052 echo "VirtFS support $virtfs"
6053 echo "Multipath support $mpath"
6054 echo "VNC support $vnc"
6055 if test "$vnc" = "yes" ; then
6056 echo "VNC SASL support $vnc_sasl"
6057 echo "VNC JPEG support $vnc_jpeg"
6058 echo "VNC PNG support $vnc_png"
6060 if test -n "$sparc_cpu"; then
6061 echo "Target Sparc Arch $sparc_cpu"
6063 echo "xen support $xen"
6064 if test "$xen" = "yes" ; then
6065 echo "xen ctrl version $xen_ctrl_version"
6066 echo "pv dom build $xen_pv_domain_build"
6068 echo "brlapi support $brlapi"
6069 echo "bluez support $bluez"
6070 echo "Documentation $docs"
6073 echo "vde support $vde"
6074 echo "netmap support $netmap"
6075 echo "Linux AIO support $linux_aio"
6076 echo "(X)ATTR support $attr"
6077 echo "Install blobs $blobs"
6078 echo "KVM support $kvm"
6079 echo "HAX support $hax"
6080 echo "HVF support $hvf"
6081 echo "WHPX support $whpx"
6082 echo "TCG support $tcg"
6083 if test "$tcg" = "yes" ; then
6084 echo "TCG debug enabled $debug_tcg"
6085 echo "TCG interpreter $tcg_interpreter"
6087 echo "malloc trim support $malloc_trim"
6088 echo "RDMA support $rdma"
6089 echo "PVRDMA support $pvrdma"
6090 echo "fdt support $fdt"
6091 echo "membarrier $membarrier"
6092 echo "preadv support $preadv"
6093 echo "fdatasync $fdatasync"
6094 echo "madvise $madvise"
6095 echo "posix_madvise $posix_madvise"
6096 echo "posix_memalign $posix_memalign"
6097 echo "libcap-ng support $cap_ng"
6098 echo "vhost-net support $vhost_net"
6099 echo "vhost-crypto support $vhost_crypto"
6100 echo "vhost-scsi support $vhost_scsi"
6101 echo "vhost-vsock support $vhost_vsock"
6102 echo "vhost-user support $vhost_user"
6103 echo "Trace backends $trace_backends"
6104 if have_backend
"simple"; then
6105 echo "Trace output file $trace_file-<pid>"
6107 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
6108 echo "rbd support $rbd"
6109 echo "xfsctl support $xfs"
6110 echo "smartcard support $smartcard"
6111 echo "libusb $libusb"
6112 echo "usb net redir $usb_redir"
6113 echo "OpenGL support $opengl"
6114 echo "OpenGL dmabufs $opengl_dmabuf"
6115 echo "libiscsi support $libiscsi"
6116 echo "libnfs support $libnfs"
6117 echo "build guest agent $guest_agent"
6118 echo "QGA VSS support $guest_agent_with_vss"
6119 echo "QGA w32 disk info $guest_agent_ntddscsi"
6120 echo "QGA MSI support $guest_agent_msi"
6121 echo "seccomp support $seccomp"
6122 echo "coroutine backend $coroutine"
6123 echo "coroutine pool $coroutine_pool"
6124 echo "debug stack usage $debug_stack_usage"
6125 echo "mutex debugging $debug_mutex"
6126 echo "crypto afalg $crypto_afalg"
6127 echo "GlusterFS support $glusterfs"
6128 echo "gcov $gcov_tool"
6129 echo "gcov enabled $gcov"
6130 echo "TPM support $tpm"
6131 echo "libssh2 support $libssh2"
6132 echo "TPM passthrough $tpm_passthrough"
6133 echo "TPM emulator $tpm_emulator"
6134 echo "QOM debugging $qom_cast_debug"
6135 echo "Live block migration $live_block_migration"
6136 echo "lzo support $lzo"
6137 echo "snappy support $snappy"
6138 echo "bzip2 support $bzip2"
6139 echo "NUMA host support $numa"
6140 echo "libxml2 $libxml2"
6141 echo "tcmalloc support $tcmalloc"
6142 echo "jemalloc support $jemalloc"
6143 echo "avx2 optimization $avx2_opt"
6144 echo "replication support $replication"
6145 echo "VxHS block device $vxhs"
6146 echo "bochs support $bochs"
6147 echo "cloop support $cloop"
6148 echo "dmg support $dmg"
6149 echo "qcow v1 support $qcow1"
6150 echo "vdi support $vdi"
6151 echo "vvfat support $vvfat"
6152 echo "qed support $qed"
6153 echo "parallels support $parallels"
6154 echo "sheepdog support $sheepdog"
6155 echo "capstone $capstone"
6156 echo "docker $docker"
6157 echo "libpmem support $libpmem"
6158 echo "libudev $libudev"
6160 if test "$sdl_too_old" = "yes"; then
6161 echo "-> Your SDL version is too old - please upgrade to have SDL support"
6164 if test "$sdlabi" = "1.2"; then
6166 echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
6167 echo "WARNING: future releases. Please switch to using SDL 2.0"
6170 if test "$supported_cpu" = "no"; then
6172 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
6174 echo "CPU host architecture $cpu support is not currently maintained."
6175 echo "The QEMU project intends to remove support for this host CPU in"
6176 echo "a future release if nobody volunteers to maintain it and to"
6177 echo "provide a build host for our continuous integration setup."
6178 echo "configure has succeeded and you can continue to build, but"
6179 echo "if you care about QEMU on this platform you should contact"
6180 echo "us upstream at qemu-devel@nongnu.org."
6183 if test "$supported_os" = "no"; then
6185 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
6187 echo "Host OS $targetos support is not currently maintained."
6188 echo "The QEMU project intends to remove support for this host OS in"
6189 echo "a future release if nobody volunteers to maintain it and to"
6190 echo "provide a build host for our continuous integration setup."
6191 echo "configure has succeeded and you can continue to build, but"
6192 echo "if you care about QEMU on this platform you should contact"
6193 echo "us upstream at qemu-devel@nongnu.org."
6196 config_host_mak
="config-host.mak"
6198 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
6200 echo "# Automatically generated by configure - do not modify" > $config_host_mak
6201 echo >> $config_host_mak
6203 echo all
: >> $config_host_mak
6204 echo "prefix=$prefix" >> $config_host_mak
6205 echo "bindir=$bindir" >> $config_host_mak
6206 echo "libdir=$libdir" >> $config_host_mak
6207 echo "libexecdir=$libexecdir" >> $config_host_mak
6208 echo "includedir=$includedir" >> $config_host_mak
6209 echo "mandir=$mandir" >> $config_host_mak
6210 echo "sysconfdir=$sysconfdir" >> $config_host_mak
6211 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
6212 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
6213 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
6214 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
6215 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
6216 if test "$mingw32" = "no" ; then
6217 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
6219 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
6220 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
6221 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
6222 echo "GIT=$git" >> $config_host_mak
6223 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
6224 echo "GIT_UPDATE=$git_update" >> $config_host_mak
6226 echo "ARCH=$ARCH" >> $config_host_mak
6228 if test "$debug_tcg" = "yes" ; then
6229 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
6231 if test "$strip_opt" = "yes" ; then
6232 echo "STRIP=${strip}" >> $config_host_mak
6234 if test "$bigendian" = "yes" ; then
6235 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
6237 if test "$mingw32" = "yes" ; then
6238 echo "CONFIG_WIN32=y" >> $config_host_mak
6239 echo "CONFIG_INSTALLER=y" >> $config_host_mak
6240 rc_version
=$
(cat $source_path/VERSION
)
6241 version_major
=${rc_version%%.*}
6242 rc_version
=${rc_version#*.}
6243 version_minor
=${rc_version%%.*}
6244 rc_version
=${rc_version#*.}
6245 version_subminor
=${rc_version%%.*}
6247 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6248 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6249 if test "$guest_agent_with_vss" = "yes" ; then
6250 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
6251 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
6252 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
6254 if test "$guest_agent_ntddscsi" = "yes" ; then
6255 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
6257 if test "$guest_agent_msi" = "yes"; then
6258 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
6259 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6260 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6261 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6262 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6263 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6264 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6267 echo "CONFIG_POSIX=y" >> $config_host_mak
6270 if test "$linux" = "yes" ; then
6271 echo "CONFIG_LINUX=y" >> $config_host_mak
6274 if test "$darwin" = "yes" ; then
6275 echo "CONFIG_DARWIN=y" >> $config_host_mak
6278 if test "$solaris" = "yes" ; then
6279 echo "CONFIG_SOLARIS=y" >> $config_host_mak
6281 if test "$haiku" = "yes" ; then
6282 echo "CONFIG_HAIKU=y" >> $config_host_mak
6284 if test "$static" = "yes" ; then
6285 echo "CONFIG_STATIC=y" >> $config_host_mak
6287 if test "$profiler" = "yes" ; then
6288 echo "CONFIG_PROFILER=y" >> $config_host_mak
6290 if test "$slirp" = "yes" ; then
6291 echo "CONFIG_SLIRP=y" >> $config_host_mak
6292 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
6294 if test "$vde" = "yes" ; then
6295 echo "CONFIG_VDE=y" >> $config_host_mak
6296 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
6298 if test "$netmap" = "yes" ; then
6299 echo "CONFIG_NETMAP=y" >> $config_host_mak
6301 if test "$l2tpv3" = "yes" ; then
6302 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6304 if test "$cap_ng" = "yes" ; then
6305 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6307 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
6308 for drv
in $audio_drv_list; do
6309 def
=CONFIG_AUDIO_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
6311 alsa | oss | pa | sdl
)
6312 echo "$def=m" >> $config_host_mak ;;
6314 echo "$def=y" >> $config_host_mak ;;
6317 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6318 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6319 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6320 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6321 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
6322 if test "$audio_pt_int" = "yes" ; then
6323 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6325 if test "$audio_win_int" = "yes" ; then
6326 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6328 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6329 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
6330 if test "$vnc" = "yes" ; then
6331 echo "CONFIG_VNC=y" >> $config_host_mak
6333 if test "$vnc_sasl" = "yes" ; then
6334 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
6336 if test "$vnc_jpeg" = "yes" ; then
6337 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
6339 if test "$vnc_png" = "yes" ; then
6340 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
6342 if test "$xkbcommon" = "yes" ; then
6343 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6344 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6346 if test "$fnmatch" = "yes" ; then
6347 echo "CONFIG_FNMATCH=y" >> $config_host_mak
6349 if test "$xfs" = "yes" ; then
6350 echo "CONFIG_XFS=y" >> $config_host_mak
6352 qemu_version
=$
(head $source_path/VERSION
)
6353 echo "VERSION=$qemu_version" >>$config_host_mak
6354 echo "PKGVERSION=$pkgversion" >>$config_host_mak
6355 echo "SRC_PATH=$source_path" >> $config_host_mak
6356 echo "TARGET_DIRS=$target_list" >> $config_host_mak
6357 if [ "$docs" = "yes" ] ; then
6358 echo "BUILD_DOCS=yes" >> $config_host_mak
6360 if [ "$want_tools" = "yes" ] ; then
6361 echo "BUILD_TOOLS=yes" >> $config_host_mak
6363 if test "$modules" = "yes"; then
6364 # $shacmd can generate a hash started with digit, which the compiler doesn't
6365 # like as an symbol. So prefix it with an underscore
6366 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
6367 echo "CONFIG_MODULES=y" >> $config_host_mak
6369 if test "$have_x11" = "yes" -a "$need_x11" = "yes"; then
6370 echo "CONFIG_X11=y" >> $config_host_mak
6371 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6372 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6374 if test "$sdl" = "yes" ; then
6375 echo "CONFIG_SDL=m" >> $config_host_mak
6376 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
6377 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
6378 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
6380 if test "$cocoa" = "yes" ; then
6381 echo "CONFIG_COCOA=y" >> $config_host_mak
6383 if test "$curses" = "yes" ; then
6384 echo "CONFIG_CURSES=m" >> $config_host_mak
6385 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6386 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
6388 if test "$pipe2" = "yes" ; then
6389 echo "CONFIG_PIPE2=y" >> $config_host_mak
6391 if test "$accept4" = "yes" ; then
6392 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6394 if test "$splice" = "yes" ; then
6395 echo "CONFIG_SPLICE=y" >> $config_host_mak
6397 if test "$eventfd" = "yes" ; then
6398 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6400 if test "$memfd" = "yes" ; then
6401 echo "CONFIG_MEMFD=y" >> $config_host_mak
6403 if test "$have_usbfs" = "yes" ; then
6404 echo "CONFIG_USBFS=y" >> $config_host_mak
6406 if test "$fallocate" = "yes" ; then
6407 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6409 if test "$fallocate_punch_hole" = "yes" ; then
6410 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6412 if test "$fallocate_zero_range" = "yes" ; then
6413 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6415 if test "$posix_fallocate" = "yes" ; then
6416 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6418 if test "$sync_file_range" = "yes" ; then
6419 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6421 if test "$fiemap" = "yes" ; then
6422 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6424 if test "$dup3" = "yes" ; then
6425 echo "CONFIG_DUP3=y" >> $config_host_mak
6427 if test "$ppoll" = "yes" ; then
6428 echo "CONFIG_PPOLL=y" >> $config_host_mak
6430 if test "$prctl_pr_set_timerslack" = "yes" ; then
6431 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6433 if test "$epoll" = "yes" ; then
6434 echo "CONFIG_EPOLL=y" >> $config_host_mak
6436 if test "$epoll_create1" = "yes" ; then
6437 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6439 if test "$sendfile" = "yes" ; then
6440 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6442 if test "$timerfd" = "yes" ; then
6443 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6445 if test "$setns" = "yes" ; then
6446 echo "CONFIG_SETNS=y" >> $config_host_mak
6448 if test "$clock_adjtime" = "yes" ; then
6449 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6451 if test "$syncfs" = "yes" ; then
6452 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6454 if test "$inotify" = "yes" ; then
6455 echo "CONFIG_INOTIFY=y" >> $config_host_mak
6457 if test "$inotify1" = "yes" ; then
6458 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6460 if test "$sem_timedwait" = "yes" ; then
6461 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6463 if test "$strchrnul" = "yes" ; then
6464 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
6466 if test "$byteswap_h" = "yes" ; then
6467 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6469 if test "$bswap_h" = "yes" ; then
6470 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6472 if test "$curl" = "yes" ; then
6473 echo "CONFIG_CURL=m" >> $config_host_mak
6474 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
6475 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
6477 if test "$brlapi" = "yes" ; then
6478 echo "CONFIG_BRLAPI=y" >> $config_host_mak
6479 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
6481 if test "$bluez" = "yes" ; then
6482 echo "CONFIG_BLUEZ=y" >> $config_host_mak
6483 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
6485 if test "$gtk" = "yes" ; then
6486 echo "CONFIG_GTK=m" >> $config_host_mak
6487 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
6488 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
6489 if test "$gtk_gl" = "yes" ; then
6490 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6493 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
6494 if test "$gnutls" = "yes" ; then
6495 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6497 if test "$gcrypt" = "yes" ; then
6498 echo "CONFIG_GCRYPT=y" >> $config_host_mak
6499 if test "$gcrypt_hmac" = "yes" ; then
6500 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6503 if test "$nettle" = "yes" ; then
6504 echo "CONFIG_NETTLE=y" >> $config_host_mak
6505 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
6507 if test "$tasn1" = "yes" ; then
6508 echo "CONFIG_TASN1=y" >> $config_host_mak
6510 if test "$have_ifaddrs_h" = "yes" ; then
6511 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6513 if test "$have_broken_size_max" = "yes" ; then
6514 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6517 # Work around a system header bug with some kernel/XFS header
6518 # versions where they both try to define 'struct fsxattr':
6519 # xfs headers will not try to redefine structs from linux headers
6520 # if this macro is set.
6521 if test "$have_fsxattr" = "yes" ; then
6522 echo "HAVE_FSXATTR=y" >> $config_host_mak
6524 if test "$have_copy_file_range" = "yes" ; then
6525 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
6527 if test "$vte" = "yes" ; then
6528 echo "CONFIG_VTE=y" >> $config_host_mak
6529 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6530 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
6532 if test "$virglrenderer" = "yes" ; then
6533 echo "CONFIG_VIRGL=y" >> $config_host_mak
6534 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6535 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6537 if test "$xen" = "yes" ; then
6538 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
6539 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
6540 if test "$xen_pv_domain_build" = "yes" ; then
6541 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6544 if test "$linux_aio" = "yes" ; then
6545 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6547 if test "$attr" = "yes" ; then
6548 echo "CONFIG_ATTR=y" >> $config_host_mak
6550 if test "$libattr" = "yes" ; then
6551 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6553 if test "$virtfs" = "yes" ; then
6554 echo "CONFIG_VIRTFS=y" >> $config_host_mak
6556 if test "$mpath" = "yes" ; then
6557 echo "CONFIG_MPATH=y" >> $config_host_mak
6558 if test "$mpathpersist_new_api" = "yes"; then
6559 echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
6562 if test "$vhost_scsi" = "yes" ; then
6563 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6565 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
6566 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6568 if test "$vhost_crypto" = "yes" ; then
6569 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6571 if test "$vhost_vsock" = "yes" ; then
6572 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6574 if test "$vhost_user" = "yes" ; then
6575 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6577 if test "$blobs" = "yes" ; then
6578 echo "INSTALL_BLOBS=yes" >> $config_host_mak
6580 if test "$iovec" = "yes" ; then
6581 echo "CONFIG_IOVEC=y" >> $config_host_mak
6583 if test "$preadv" = "yes" ; then
6584 echo "CONFIG_PREADV=y" >> $config_host_mak
6586 if test "$fdt" != "no" ; then
6587 echo "CONFIG_FDT=y" >> $config_host_mak
6589 if test "$membarrier" = "yes" ; then
6590 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6592 if test "$signalfd" = "yes" ; then
6593 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6595 if test "$tcg" = "yes"; then
6596 echo "CONFIG_TCG=y" >> $config_host_mak
6597 if test "$tcg_interpreter" = "yes" ; then
6598 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6601 if test "$fdatasync" = "yes" ; then
6602 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6604 if test "$madvise" = "yes" ; then
6605 echo "CONFIG_MADVISE=y" >> $config_host_mak
6607 if test "$posix_madvise" = "yes" ; then
6608 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6610 if test "$posix_memalign" = "yes" ; then
6611 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6614 if test "$spice" = "yes" ; then
6615 echo "CONFIG_SPICE=y" >> $config_host_mak
6618 if test "$smartcard" = "yes" ; then
6619 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6620 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6621 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6624 if test "$libusb" = "yes" ; then
6625 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6626 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6627 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6630 if test "$usb_redir" = "yes" ; then
6631 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6632 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6633 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6636 if test "$opengl" = "yes" ; then
6637 echo "CONFIG_OPENGL=y" >> $config_host_mak
6638 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6639 if test "$opengl_dmabuf" = "yes" ; then
6640 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6644 if test "$malloc_trim" = "yes" ; then
6645 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6648 if test "$avx2_opt" = "yes" ; then
6649 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6652 if test "$lzo" = "yes" ; then
6653 echo "CONFIG_LZO=y" >> $config_host_mak
6656 if test "$snappy" = "yes" ; then
6657 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6660 if test "$bzip2" = "yes" ; then
6661 echo "CONFIG_BZIP2=y" >> $config_host_mak
6662 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6665 if test "$libiscsi" = "yes" ; then
6666 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6667 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6668 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6671 if test "$libnfs" = "yes" ; then
6672 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6673 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6676 if test "$seccomp" = "yes"; then
6677 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6678 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6679 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6682 # XXX: suppress that
6683 if [ "$bsd" = "yes" ] ; then
6684 echo "CONFIG_BSD=y" >> $config_host_mak
6687 if test "$localtime_r" = "yes" ; then
6688 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6690 if test "$qom_cast_debug" = "yes" ; then
6691 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6693 if test "$rbd" = "yes" ; then
6694 echo "CONFIG_RBD=m" >> $config_host_mak
6695 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6696 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6699 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6700 if test "$coroutine_pool" = "yes" ; then
6701 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6703 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6706 if test "$debug_stack_usage" = "yes" ; then
6707 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6710 if test "$crypto_afalg" = "yes" ; then
6711 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6714 if test "$open_by_handle_at" = "yes" ; then
6715 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6718 if test "$linux_magic_h" = "yes" ; then
6719 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6722 if test "$pragma_diagnostic_available" = "yes" ; then
6723 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6726 if test "$valgrind_h" = "yes" ; then
6727 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6730 if test "$have_asan_iface_fiber" = "yes" ; then
6731 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6734 if test "$has_environ" = "yes" ; then
6735 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6738 if test "$cpuid_h" = "yes" ; then
6739 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6742 if test "$int128" = "yes" ; then
6743 echo "CONFIG_INT128=y" >> $config_host_mak
6746 if test "$atomic128" = "yes" ; then
6747 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6750 if test "$cmpxchg128" = "yes" ; then
6751 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
6754 if test "$atomic64" = "yes" ; then
6755 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6758 if test "$vector16" = "yes" ; then
6759 echo "CONFIG_VECTOR16=y" >> $config_host_mak
6762 if test "$getauxval" = "yes" ; then
6763 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6766 if test "$glusterfs" = "yes" ; then
6767 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6768 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6769 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6772 if test "$glusterfs_xlator_opt" = "yes" ; then
6773 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6776 if test "$glusterfs_discard" = "yes" ; then
6777 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6780 if test "$glusterfs_fallocate" = "yes" ; then
6781 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6784 if test "$glusterfs_zerofill" = "yes" ; then
6785 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6788 if test "$libssh2" = "yes" ; then
6789 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6790 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6791 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6794 if test "$live_block_migration" = "yes" ; then
6795 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6798 if test "$tpm" = "yes"; then
6799 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6800 # TPM passthrough support?
6801 if test "$tpm_passthrough" = "yes"; then
6802 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6804 # TPM emulator support?
6805 if test "$tpm_emulator" = "yes"; then
6806 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6810 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6811 if have_backend
"nop"; then
6812 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6814 if have_backend
"simple"; then
6815 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6816 # Set the appropriate trace file.
6817 trace_file
="\"$trace_file-\" FMT_pid"
6819 if have_backend
"log"; then
6820 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6822 if have_backend
"ust"; then
6823 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6825 if have_backend
"dtrace"; then
6826 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6827 if test "$trace_backend_stap" = "yes" ; then
6828 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6831 if have_backend
"ftrace"; then
6832 if test "$linux" = "yes" ; then
6833 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6835 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6838 if have_backend
"syslog"; then
6839 if test "$posix_syslog" = "yes" ; then
6840 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6842 feature_not_found
"syslog(trace backend)" "syslog not available"
6845 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6847 if test "$rdma" = "yes" ; then
6848 echo "CONFIG_RDMA=y" >> $config_host_mak
6849 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6852 if test "$pvrdma" = "yes" ; then
6853 echo "CONFIG_PVRDMA=y" >> $config_host_mak
6856 if test "$have_rtnetlink" = "yes" ; then
6857 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6860 if test "$libxml2" = "yes" ; then
6861 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6862 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6863 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6866 if test "$replication" = "yes" ; then
6867 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6870 if test "$have_af_vsock" = "yes" ; then
6871 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6874 if test "$have_sysmacros" = "yes" ; then
6875 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6878 if test "$have_static_assert" = "yes" ; then
6879 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6882 if test "$have_utmpx" = "yes" ; then
6883 echo "HAVE_UTMPX=y" >> $config_host_mak
6886 if test "$ivshmem" = "yes" ; then
6887 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6889 if test "$capstone" != "no" ; then
6890 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6892 if test "$debug_mutex" = "yes" ; then
6893 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
6896 # Hold two types of flag:
6897 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6898 # a thread we have a handle to
6899 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6901 if test "$pthread_setname_np" = "yes" ; then
6902 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6903 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6906 if test "$vxhs" = "yes" ; then
6907 echo "CONFIG_VXHS=y" >> $config_host_mak
6908 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6911 if test "$libpmem" = "yes" ; then
6912 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
6915 if test "$bochs" = "yes" ; then
6916 echo "CONFIG_BOCHS=y" >> $config_host_mak
6918 if test "$cloop" = "yes" ; then
6919 echo "CONFIG_CLOOP=y" >> $config_host_mak
6921 if test "$dmg" = "yes" ; then
6922 echo "CONFIG_DMG=y" >> $config_host_mak
6924 if test "$qcow1" = "yes" ; then
6925 echo "CONFIG_QCOW1=y" >> $config_host_mak
6927 if test "$vdi" = "yes" ; then
6928 echo "CONFIG_VDI=y" >> $config_host_mak
6930 if test "$vvfat" = "yes" ; then
6931 echo "CONFIG_VVFAT=y" >> $config_host_mak
6933 if test "$qed" = "yes" ; then
6934 echo "CONFIG_QED=y" >> $config_host_mak
6936 if test "$parallels" = "yes" ; then
6937 echo "CONFIG_PARALLELS=y" >> $config_host_mak
6939 if test "$sheepdog" = "yes" ; then
6940 echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
6943 if test "$tcg_interpreter" = "yes"; then
6944 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6945 elif test "$ARCH" = "sparc64" ; then
6946 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6947 elif test "$ARCH" = "s390x" ; then
6948 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6949 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6950 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6951 elif test "$ARCH" = "ppc64" ; then
6952 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6954 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6956 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
6958 echo "TOOLS=$tools" >> $config_host_mak
6959 echo "ROMS=$roms" >> $config_host_mak
6960 echo "MAKE=$make" >> $config_host_mak
6961 echo "INSTALL=$install" >> $config_host_mak
6962 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6963 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6964 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6965 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6966 echo "PYTHON=$python" >> $config_host_mak
6967 echo "CC=$cc" >> $config_host_mak
6968 if $iasl -h > /dev
/null
2>&1; then
6969 echo "IASL=$iasl" >> $config_host_mak
6971 echo "HOST_CC=$host_cc" >> $config_host_mak
6972 echo "CXX=$cxx" >> $config_host_mak
6973 echo "OBJCC=$objcc" >> $config_host_mak
6974 echo "AR=$ar" >> $config_host_mak
6975 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6976 echo "AS=$as" >> $config_host_mak
6977 echo "CCAS=$ccas" >> $config_host_mak
6978 echo "CPP=$cpp" >> $config_host_mak
6979 echo "OBJCOPY=$objcopy" >> $config_host_mak
6980 echo "LD=$ld" >> $config_host_mak
6981 echo "RANLIB=$ranlib" >> $config_host_mak
6982 echo "NM=$nm" >> $config_host_mak
6983 echo "WINDRES=$windres" >> $config_host_mak
6984 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6985 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6986 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6987 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6988 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6989 if test "$sparse" = "yes" ; then
6990 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6991 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6992 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6993 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6994 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6996 if test "$cross_prefix" != ""; then
6997 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6999 echo "AUTOCONF_HOST := " >> $config_host_mak
7001 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
7002 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
7003 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
7004 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
7005 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
7006 echo "LIBS+=$LIBS" >> $config_host_mak
7007 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
7008 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
7009 echo "EXESUF=$EXESUF" >> $config_host_mak
7010 echo "DSOSUF=$DSOSUF" >> $config_host_mak
7011 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
7012 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
7013 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
7014 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
7015 echo "POD2MAN=$POD2MAN" >> $config_host_mak
7016 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
7017 if test "$gcov" = "yes" ; then
7018 echo "CONFIG_GCOV=y" >> $config_host_mak
7019 echo "GCOV=$gcov_tool" >> $config_host_mak
7022 if test "$docker" != "no"; then
7023 echo "HAVE_USER_DOCKER=y" >> $config_host_mak
7026 if test "$libudev" != "no"; then
7027 echo "CONFIG_LIBUDEV=y" >> $config_host_mak
7028 echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak
7031 # use included Linux headers
7032 if test "$linux" = "yes" ; then
7033 mkdir
-p linux-headers
7051 # For most CPUs the kernel architecture name and QEMU CPU name match.
7055 # For non-KVM architectures we will not have asm headers
7056 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
7057 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
7061 for target
in $target_list; do
7062 target_dir
="$target"
7063 config_target_mak
=$target_dir/config-target.mak
7064 target_name
=$
(echo $target | cut
-d '-' -f 1)
7065 target_bigendian
="no"
7067 case "$target_name" in
7068 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
7069 target_bigendian
=yes
7073 target_user_only
="no"
7074 target_linux_user
="no"
7075 target_bsd_user
="no"
7077 ${target_name}-softmmu)
7078 target_softmmu
="yes"
7080 ${target_name}-linux-user)
7081 target_user_only
="yes"
7082 target_linux_user
="yes"
7084 ${target_name}-bsd-user)
7085 target_user_only
="yes"
7086 target_bsd_user
="yes"
7089 error_exit
"Target '$target' not recognised"
7095 target_compiler_static
=""
7096 target_compiler_cflags
=""
7098 mkdir
-p $target_dir
7099 echo "# Automatically generated by configure - do not modify" > $config_target_mak
7103 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
7106 TARGET_ARCH
="$target_name"
7110 case "$target_name" in
7113 gdb_xml_files
="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
7114 target_compiler
=$cross_cc_i386
7115 target_compiler_cflags
=$cross_cc_ccflags_i386
7118 TARGET_BASE_ARCH
=i386
7120 gdb_xml_files
="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
7121 target_compiler
=$cross_cc_x86_64
7125 target_compiler
=$cross_cc_alpha
7131 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
7132 target_compiler
=$cross_cc_arm
7133 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
7137 TARGET_BASE_ARCH
=arm
7140 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
7141 target_compiler
=$cross_cc_aarch64
7142 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
7145 target_compiler
=$cross_cc_cris
7149 target_compiler
=$cross_cc_hppa
7152 target_compiler
=$cross_cc_lm32
7156 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
7157 target_compiler
=$cross_cc_m68k
7159 microblaze|microblazeel
)
7160 TARGET_ARCH
=microblaze
7162 echo "TARGET_ABI32=y" >> $config_target_mak
7163 target_compiler
=$cross_cc_microblaze
7167 target_compiler
=$cross_cc_mips
7168 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
7172 TARGET_BASE_ARCH
=mips
7173 target_compiler
=$cross_cc_mipsn32
7174 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
7175 echo "TARGET_ABI32=y" >> $config_target_mak
7179 TARGET_BASE_ARCH
=mips
7180 target_compiler
=$cross_cc_mips64
7181 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
7184 target_compiler
=$cross_cc_moxie
7187 target_compiler
=$cross_cc_nios2
7190 target_compiler
=$cross_cc_or1k
7191 TARGET_ARCH
=openrisc
7192 TARGET_BASE_ARCH
=openrisc
7195 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
7196 target_compiler
=$cross_cc_powerpc
7199 TARGET_BASE_ARCH
=ppc
7202 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7203 target_compiler
=$cross_cc_ppc64
7207 TARGET_BASE_ARCH
=ppc
7210 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7211 target_compiler
=$cross_cc_ppc64le
7215 TARGET_BASE_ARCH
=ppc
7217 echo "TARGET_ABI32=y" >> $config_target_mak
7218 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7219 target_compiler
=$cross_cc_ppc64abi32
7222 TARGET_BASE_ARCH
=riscv
7223 TARGET_ABI_DIR
=riscv
7225 target_compiler
=$cross_cc_riscv32
7228 TARGET_BASE_ARCH
=riscv
7229 TARGET_ABI_DIR
=riscv
7231 target_compiler
=$cross_cc_riscv64
7236 target_compiler
=$cross_cc_sh4
7239 target_compiler
=$cross_cc_sparc
7242 TARGET_BASE_ARCH
=sparc
7243 target_compiler
=$cross_cc_sparc64
7247 TARGET_BASE_ARCH
=sparc
7248 TARGET_ABI_DIR
=sparc
7249 target_compiler
=$cross_cc_sparc32plus
7250 echo "TARGET_ABI32=y" >> $config_target_mak
7254 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
7255 target_compiler
=$cross_cc_s390x
7258 target_compiler
=$cross_cc_tilegx
7261 target_compiler
=$cross_cc_tricore
7264 target_compiler
=$cross_cc_unicore32
7270 target_compiler
=$cross_cc_xtensa
7273 error_exit
"Unsupported target CPU"
7276 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
7277 if [ "$TARGET_BASE_ARCH" = "" ]; then
7278 TARGET_BASE_ARCH
=$TARGET_ARCH
7281 # Do we have a cross compiler for this target?
7282 if has
$target_compiler; then
7286 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then
7287 # For host systems we might get away with building without -static
7288 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then
7291 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7292 target_compiler_static
="n"
7295 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7296 target_compiler_static
="y"
7302 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
7305 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
7308 target_arch_name
="$(upper $TARGET_ARCH)"
7309 echo "TARGET_$target_arch_name=y" >> $config_target_mak
7310 echo "TARGET_NAME=$target_name" >> $config_target_mak
7311 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
7312 if [ "$TARGET_ABI_DIR" = "" ]; then
7313 TARGET_ABI_DIR
=$TARGET_ARCH
7315 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
7316 if [ "$HOST_VARIANT_DIR" != "" ]; then
7317 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
7320 if supported_xen_target
$target; then
7321 echo "CONFIG_XEN=y" >> $config_target_mak
7322 if test "$xen_pci_passthrough" = yes; then
7323 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
7326 if supported_kvm_target
$target; then
7327 echo "CONFIG_KVM=y" >> $config_target_mak
7328 if test "$vhost_net" = "yes" ; then
7329 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
7330 if test "$vhost_user" = "yes" ; then
7331 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
7335 if supported_hax_target
$target; then
7336 echo "CONFIG_HAX=y" >> $config_target_mak
7338 if supported_hvf_target
$target; then
7339 echo "CONFIG_HVF=y" >> $config_target_mak
7341 if supported_whpx_target
$target; then
7342 echo "CONFIG_WHPX=y" >> $config_target_mak
7344 if test "$target_bigendian" = "yes" ; then
7345 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
7347 if test "$target_softmmu" = "yes" ; then
7348 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
7349 if test "$mttcg" = "yes" ; then
7350 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
7353 if test "$target_user_only" = "yes" ; then
7354 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
7355 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
7357 if test "$target_linux_user" = "yes" ; then
7358 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
7361 if test ! -z "$gdb_xml_files" ; then
7362 for x
in $gdb_xml_files; do
7363 list
="$list $source_path/gdb-xml/$x"
7365 echo "TARGET_XML_FILES=$list" >> $config_target_mak
7368 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
7369 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
7371 if test "$target_bsd_user" = "yes" ; then
7372 echo "CONFIG_BSD_USER=y" >> $config_target_mak
7375 if test -n "$target_compiler"; then
7376 echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak
7378 if test -n "$target_compiler_static"; then
7379 echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak
7382 if test -n "$target_compiler_cflags"; then
7383 echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
7388 # generate QEMU_CFLAGS/LDFLAGS for targets
7394 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7395 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7398 for i
in $ARCH $TARGET_BASE_ARCH ; do
7401 disas_config
"ALPHA"
7404 if test -n "${cxx}"; then
7405 disas_config
"ARM_A64"
7410 if test -n "${cxx}"; then
7411 disas_config
"ARM_A64"
7430 disas_config
"MICROBLAZE"
7434 if test -n "${cxx}"; then
7435 disas_config
"NANOMIPS"
7439 disas_config
"MOXIE"
7442 disas_config
"NIOS2"
7445 disas_config
"OPENRISC"
7451 disas_config
"RISCV"
7460 disas_config
"SPARC"
7463 disas_config
"XTENSA"
7467 if test "$tcg_interpreter" = "yes" ; then
7473 # Ensure there's only a single GP
7474 cflags
="-msmall-data $cflags"
7478 if test "$gprof" = "yes" ; then
7479 echo "TARGET_GPROF=yes" >> $config_target_mak
7480 if test "$target_linux_user" = "yes" ; then
7482 ldflags
="-p $ldflags"
7484 if test "$target_softmmu" = "yes" ; then
7485 ldflags
="-p $ldflags"
7486 echo "GPROF_CFLAGS=-p" >> $config_target_mak
7490 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
7491 ldflags
="$ldflags $textseg_ldflags"
7494 # Newer kernels on s390 check for an S390_PGSTE program header and
7495 # enable the pgste page table extensions in that case. This makes
7496 # the vm.allocate_pgste sysctl unnecessary. We enable this program
7498 # - we build on s390x
7499 # - we build the system emulation for s390x (qemu-system-s390x)
7501 # - the linker supports --s390-pgste
7502 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
7503 if ld_has
--s390-pgste ; then
7504 ldflags
="-Wl,--s390-pgste $ldflags"
7508 echo "LDFLAGS+=$ldflags" >> $config_target_mak
7509 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
7511 done # for target in $targets
7513 if test -n "$enabled_cross_compilers"; then
7515 echo "NOTE: cross-compilers enabled: $enabled_cross_compilers"
7518 if [ "$fdt" = "git" ]; then
7519 echo "config-host.h: subdir-dtc" >> $config_host_mak
7521 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7522 echo "config-host.h: subdir-capstone" >> $config_host_mak
7524 if test -n "$LIBCAPSTONE"; then
7525 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7528 if test "$numa" = "yes"; then
7529 echo "CONFIG_NUMA=y" >> $config_host_mak
7532 if test "$ccache_cpp2" = "yes"; then
7533 echo "export CCACHE_CPP2=y" >> $config_host_mak
7536 # If we're using a separate build tree, set it up now.
7537 # DIRS are directories which we simply mkdir in the build tree;
7538 # LINKS are things to symlink back into the source tree
7539 # (these can be both files and directories).
7540 # Caution: do not add files or directories here using wildcards. This
7541 # will result in problems later if a new file matching the wildcard is
7542 # added to the source tree -- nothing will cause configure to be rerun
7543 # so the build tree will be missing the link back to the new file, and
7544 # tests might fail. Prefer to keep the relevant files in their own
7545 # directory and symlink the directory instead.
7546 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
7547 DIRS
="$DIRS tests/fp"
7548 DIRS
="$DIRS docs docs/interop fsdev scsi"
7549 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
7550 DIRS
="$DIRS roms/seabios roms/vgabios"
7551 LINKS
="Makefile tests/tcg/Makefile qdict-test-data.txt"
7552 LINKS
="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
7553 LINKS
="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
7554 LINKS
="$LINKS tests/fp/Makefile"
7555 LINKS
="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
7556 LINKS
="$LINKS pc-bios/spapr-rtas/Makefile"
7557 LINKS
="$LINKS pc-bios/s390-ccw/Makefile"
7558 LINKS
="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
7559 LINKS
="$LINKS pc-bios/qemu-icon.bmp"
7560 LINKS
="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
7561 LINKS
="$LINKS tests/acceptance tests/data"
7562 LINKS
="$LINKS tests/qemu-iotests/check"
7564 $source_path/pc-bios
/*.bin \
7565 $source_path/pc-bios
/*.lid \
7566 $source_path/pc-bios
/*.rom \
7567 $source_path/pc-bios
/*.dtb \
7568 $source_path/pc-bios
/*.img \
7569 $source_path/pc-bios
/openbios-
* \
7570 $source_path/pc-bios
/u-boot.
* \
7571 $source_path/pc-bios
/palcode-
*
7573 LINKS
="$LINKS pc-bios/$(basename $bios_file)"
7576 for f
in $LINKS ; do
7577 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
7578 symlink
"$source_path/$f" "$f"
7582 # temporary config to build submodules
7583 for rom
in seabios vgabios
; do
7584 config_mak
=roms
/$rom/config.mak
7585 echo "# Automatically generated by configure - do not modify" > $config_mak
7586 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
7587 echo "AS=$as" >> $config_mak
7588 echo "CCAS=$ccas" >> $config_mak
7589 echo "CC=$cc" >> $config_mak
7590 echo "BCC=bcc" >> $config_mak
7591 echo "CPP=$cpp" >> $config_mak
7592 echo "OBJCOPY=objcopy" >> $config_mak
7593 echo "IASL=$iasl" >> $config_mak
7594 echo "LD=$ld" >> $config_mak
7595 echo "RANLIB=$ranlib" >> $config_mak
7598 # set up qemu-iotests in this build directory
7599 iotests_common_env
="tests/qemu-iotests/common.env"
7601 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7602 echo >> "$iotests_common_env"
7603 echo "export PYTHON='$python'" >> "$iotests_common_env"
7605 # Save the configure command line for later reuse.
7606 cat <<EOD >config.status
7608 # Generated by configure.
7609 # Run this file to recreate the current configuration.
7610 # Compiler output produced by configure, useful for debugging
7611 # configure, is in config.log if it exists.
7617 eval envval
=\$
$envname
7619 if test -n "$envval"
7621 echo "$envname='$envval'" >> config.status
7622 echo "export $envname" >> config.status
7624 echo "unset $envname" >> config.status
7628 # Preserve various env variables that influence what
7629 # features/build target configure will detect
7635 preserve_env INSTALL
7637 preserve_env LD_LIBRARY_PATH
7638 preserve_env LIBTOOL
7641 preserve_env OBJCOPY
7643 preserve_env PKG_CONFIG
7644 preserve_env PKG_CONFIG_LIBDIR
7645 preserve_env PKG_CONFIG_PATH
7647 preserve_env SDL_CONFIG
7648 preserve_env SDL2_CONFIG
7651 preserve_env WINDRES
7653 printf "exec" >>config.status
7654 printf " '%s'" "$0" "$@" >>config.status
7655 echo ' "$@"' >>config.status
7656 chmod +x config.status