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 echo $compiler "$@" >> config.log
64 $compiler "$@" >> config.log
2>&1 ||
return $?
65 # Test passed. If this is an --enable-werror build, rerun
66 # the test with -Werror and bail out if it fails. This
67 # makes warning-generating-errors in configure test code
68 # obvious to developers.
69 if test "$werror" != "yes"; then
72 # Don't bother rerunning the compile if we were already using -Werror
78 echo $compiler -Werror "$@" >> config.log
79 $compiler -Werror "$@" >> config.log
2>&1 && return $?
80 error_exit
"configure test passed without -Werror but failed with -Werror." \
81 "This is probably a bug in the configure script. The failing command" \
82 "will be at the bottom of config.log." \
83 "You can run configure with --disable-werror to bypass this check."
87 do_compiler
"$cc" "$@"
91 do_compiler
"$cxx" "$@"
95 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
96 # options which some versions of GCC's C++ compiler complain about
97 # because they only make sense for C programs.
98 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
100 for arg
in $QEMU_CFLAGS; do
102 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
103 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
106 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
114 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
120 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
123 # symbolically link $1 to $2. Portable version of "ln -sf".
126 mkdir
-p "$(dirname "$2")"
130 # check whether a command is available to this shell (may be either an
131 # executable or a builtin)
133 type "$1" >/dev
/null
2>&1
136 # search for an executable in PATH
142 # pathname has a dir component?
143 if [ "${local_command#*/}" != "$local_command" ]; then
144 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
145 echo "$local_command"
149 if [ -z "$local_command" ]; then
154 for local_dir
in $PATH; do
155 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
156 echo "$local_dir/$local_command"
157 IFS
="${local_ifs:-$(printf ' \t\n')}"
162 IFS
="${local_ifs:-$(printf ' \t\n')}"
167 echo "$trace_backends" |
grep "$1" >/dev
/null
171 eval test -z '"${1#'"$2"'}"'
174 supported_hax_target
() {
175 test "$hax" = "yes" ||
return 1
176 glob
"$1" "*-softmmu" ||
return 1
177 case "${1%-softmmu}" in
185 supported_kvm_target
() {
186 test "$kvm" = "yes" ||
return 1
187 glob
"$1" "*-softmmu" ||
return 1
188 case "${1%-softmmu}:$cpu" in
189 arm
:arm | aarch64
:aarch64 | \
190 i386
:i386 | i386
:x86_64 | i386
:x32 | \
191 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
192 mips
:mips | mipsel
:mips | \
193 ppc
:ppc | ppcemb
:ppc | ppc64
:ppc | \
194 ppc
:ppc64 | ppcemb
:ppc64 | ppc64
:ppc64 | \
202 supported_xen_target
() {
203 test "$xen" = "yes" ||
return 1
204 glob
"$1" "*-softmmu" ||
return 1
205 # Only i386 and x86_64 provide the xenpv machine.
206 case "${1%-softmmu}" in
219 if test "$linux" != "yes"; then
220 print_error
"Target '$target' is only available on a Linux host"
225 if test "$bsd" != "yes"; then
226 print_error
"Target '$target' is only available on a BSD host"
231 print_error
"Invalid target name '$target'"
235 test "$tcg" = "yes" && return 0
236 supported_kvm_target
"$1" && return 0
237 supported_xen_target
"$1" && return 0
238 supported_hax_target
"$1" && return 0
239 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
245 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
249 source_path
=$
(dirname "$0")
252 interp_prefix
="/usr/gnemul/qemu-%M"
256 block_drv_rw_whitelist
=""
257 block_drv_ro_whitelist
=""
263 cc_i386
=i386-pc-linux-gnu-gcc
268 if test -e "$source_path/.git"
271 git_submodules
="ui/keycodemapdb"
278 # Don't accept a target_list environment variable.
281 # Default value for a variable defining feature "foo".
282 # * foo="no" feature will only be used if --enable-foo arg is given
283 # * foo="" feature will be searched for, and if found, will be used
284 # unless --disable-foo is given
285 # * foo="yes" this value will only be set by --enable-foo flag.
286 # feature will searched for,
287 # if not found, configure exits with error
289 # Always add --enable-foo and --disable-foo command line args.
290 # Distributions want to ensure that several features are compiled in, and it
291 # is impossible without a --enable-foo that exits if a feature is not found.
313 xen_pv_domain_build
="no"
314 xen_pci_passthrough
=""
341 LDFLAGS_SHARED
="-shared"
344 mandir
="\${prefix}/share/man"
345 datadir
="\${prefix}/share"
346 firmwarepath
="\${prefix}/share/qemu-firmware"
347 qemu_docdir
="\${prefix}/share/doc/qemu"
348 bindir
="\${prefix}/bin"
349 libdir
="\${prefix}/lib"
350 libexecdir
="\${prefix}/libexec"
351 includedir
="\${prefix}/include"
352 sysconfdir
="\${prefix}/etc"
353 local_statedir
="\${prefix}/var"
386 guest_agent_with_vss
="no"
387 guest_agent_ntddscsi
="no"
396 debug_stack_usage
="no"
400 glusterfs_xlator_opt
="no"
401 glusterfs_discard
="no"
402 glusterfs_fallocate
="no"
403 glusterfs_zerofill
="no"
407 tls_priority
="NORMAL"
419 live_block_migration
="yes"
431 # parse CC options first
433 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
435 --cross-prefix=*) cross_prefix
="$optarg"
439 --cxx=*) CXX
="$optarg"
441 --source-path=*) source_path
="$optarg"
443 --cpu=*) cpu
="$optarg"
445 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
446 EXTRA_CFLAGS
="$optarg"
448 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
449 EXTRA_CXXFLAGS
="$optarg"
451 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
452 EXTRA_LDFLAGS
="$optarg"
454 --enable-debug-info) debug_info
="yes"
456 --disable-debug-info) debug_info
="no"
461 # Using uname is really, really broken. Once we have the right set of checks
462 # we can eliminate its usage altogether.
464 # Preferred compiler:
466 # ${cross_prefix}gcc (if cross-prefix specified)
468 if test -z "${CC}${cross_prefix}"; then
471 cc
="${CC-${cross_prefix}gcc}"
474 if test -z "${CXX}${cross_prefix}"; then
477 cxx
="${CXX-${cross_prefix}g++}"
480 ar="${AR-${cross_prefix}ar}"
481 as
="${AS-${cross_prefix}as}"
484 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
485 ld
="${LD-${cross_prefix}ld}"
486 ranlib
="${RANLIB-${cross_prefix}ranlib}"
487 nm
="${NM-${cross_prefix}nm}"
488 strip
="${STRIP-${cross_prefix}strip}"
489 windres
="${WINDRES-${cross_prefix}windres}"
490 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
492 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
494 pkg_config
=query_pkg_config
495 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
496 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
498 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
499 ARFLAGS
="${ARFLAGS-rv}"
501 # default flags for all hosts
502 # We use -fwrapv to tell the compiler that we require a C dialect where
503 # left shift of signed integers is well defined and has the expected
504 # 2s-complement style results. (Both clang and gcc agree that it
505 # provides these semantics.)
506 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
507 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
508 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
509 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
510 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include"
511 if test "$debug_info" = "yes"; then
513 LDFLAGS
="-g $LDFLAGS"
516 # make source path absolute
517 source_path
=$
(cd "$source_path"; pwd)
519 # running configure in the source tree?
520 # we know that's the case if configure is there.
521 if test -f "./configure"; then
522 pwd_is_source_path
="y"
524 pwd_is_source_path
="n"
530 #error $1 not defined
532 int main(void) { return 0; }
540 int main(void) { return 0; }
547 int main(void) { return 0; }
551 if check_define __linux__
; then
553 elif check_define _WIN32
; then
555 elif check_define __OpenBSD__
; then
557 elif check_define __sun__
; then
559 elif check_define __HAIKU__
; then
561 elif check_define __FreeBSD__
; then
563 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
564 targetos
='GNU/kFreeBSD'
565 elif check_define __DragonFly__
; then
567 elif check_define __NetBSD__
; then
569 elif check_define __APPLE__
; then
572 # This is a fatal error, but don't report it yet, because we
573 # might be going to just print the --help text, or it might
574 # be the result of a missing compiler.
579 # Some host OSes need non-standard checks for which CPU to use.
580 # Note that these checks are broken for cross-compilation: if you're
581 # cross-compiling to one of these OSes then you'll need to specify
582 # the correct CPU with the --cpu option.
585 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
586 # run 64-bit userspace code.
587 # If the user didn't specify a CPU explicitly and the kernel says this is
588 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
589 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
594 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
595 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
600 if test ! -z "$cpu" ; then
601 # command line argument
603 elif check_define __i386__
; then
605 elif check_define __x86_64__
; then
606 if check_define __ILP32__
; then
611 elif check_define __sparc__
; then
612 if check_define __arch64__
; then
617 elif check_define _ARCH_PPC
; then
618 if check_define _ARCH_PPC64
; then
623 elif check_define __mips__
; then
625 elif check_define __ia64__
; then
627 elif check_define __s390__
; then
628 if check_define __s390x__
; then
633 elif check_define __arm__
; then
635 elif check_define __aarch64__
; then
642 # Normalise host CPU name and set ARCH.
643 # Note that this case should only have supported host CPUs, not guests.
645 ppc|ppc64|s390|s390x|sparc64|x32
)
649 i386|i486|i586|i686|i86pc|BePC
)
674 # This will result in either an error or falling back to TCI later
678 if test -z "$ARCH"; then
684 # host *BSD for user mode
691 audio_possible_drivers
="dsound sdl"
692 if check_include dsound.h
; then
693 audio_drv_list
="dsound"
702 audio_possible_drivers
="oss sdl pa"
708 audio_possible_drivers
="oss sdl pa"
709 # needed for kinfo_getvmmap(3) in libutil.h
711 # needed for kinfo_getproc
712 libs_qga
="-lutil $libs_qga"
713 netmap
="" # enable netmap autodetect
714 HOST_VARIANT_DIR
="freebsd"
721 audio_possible_drivers
="oss sdl pa"
722 HOST_VARIANT_DIR
="dragonfly"
728 audio_possible_drivers
="oss sdl"
730 HOST_VARIANT_DIR
="netbsd"
737 audio_possible_drivers
="sdl"
738 HOST_VARIANT_DIR
="openbsd"
744 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
745 if [ "$cpu" = "x86_64" ] ; then
746 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
747 LDFLAGS
="-arch x86_64 $LDFLAGS"
750 audio_drv_list
="coreaudio"
751 audio_possible_drivers
="coreaudio sdl"
752 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
753 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
754 # Disable attempts to use ObjectiveC features in os/object.h since they
755 # won't work when we're compiling with gcc as a C compiler.
756 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
757 HOST_VARIANT_DIR
="darwin"
763 install="${INSTALL-ginstall}"
764 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
765 if test -f /usr
/include
/sys
/soundcard.h
; then
768 audio_possible_drivers
="oss sdl"
769 # needed for CMSG_ macros in sys/socket.h
770 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
771 # needed for TIOCWIN* defines in termios.h
772 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
773 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
774 solarisnetlibs
="-lsocket -lnsl -lresolv"
775 LIBS
="$solarisnetlibs $LIBS"
776 libs_qga
="$solarisnetlibs $libs_qga"
780 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
781 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
785 audio_possible_drivers
="oss alsa sdl pa"
792 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
797 if [ "$bsd" = "yes" ] ; then
798 if [ "$darwin" != "yes" ] ; then
803 : ${make=${MAKE-make}}
804 : ${install=${INSTALL-install}}
805 : ${python=${PYTHON-python}}
806 : ${smbd=${SMBD-/usr/sbin/smbd}}
808 # Default objcc to clang if available, otherwise use CC
815 if test "$mingw32" = "yes" ; then
818 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
819 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
820 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
821 # MinGW needs -mthreads for TLS and macro _MT.
822 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
823 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
825 if compile_prog
"" "-liberty" ; then
826 LIBS
="-liberty $LIBS"
828 prefix
="c:/Program Files/QEMU"
831 qemu_docdir
="\${prefix}"
833 sysconfdir
="\${prefix}"
836 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
842 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
844 --help|
-h) show_help
=yes
846 --version|
-V) exec cat $source_path/VERSION
848 --prefix=*) prefix
="$optarg"
850 --interp-prefix=*) interp_prefix
="$optarg"
858 --host-cc=*) host_cc
="$optarg"
862 --iasl=*) iasl
="$optarg"
864 --objcc=*) objcc
="$optarg"
866 --make=*) make="$optarg"
868 --install=*) install="$optarg"
870 --python=*) python
="$optarg"
872 --gcov=*) gcov_tool
="$optarg"
874 --smbd=*) smbd
="$optarg"
884 --disable-debug-info)
894 --target-list=*) target_list
="$optarg"
896 --enable-trace-backends=*) trace_backends
="$optarg"
898 # XXX: backwards compatibility
899 --enable-trace-backend=*) trace_backends
="$optarg"
901 --with-trace-file=*) trace_file
="$optarg"
903 --enable-gprof) gprof
="yes"
905 --enable-gcov) gcov
="yes"
909 LDFLAGS
="-static $LDFLAGS"
910 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
912 --mandir=*) mandir
="$optarg"
914 --bindir=*) bindir
="$optarg"
916 --libdir=*) libdir
="$optarg"
918 --libexecdir=*) libexecdir
="$optarg"
920 --includedir=*) includedir
="$optarg"
922 --datadir=*) datadir
="$optarg"
924 --with-confsuffix=*) confsuffix
="$optarg"
926 --docdir=*) qemu_docdir
="$optarg"
928 --sysconfdir=*) sysconfdir
="$optarg"
930 --localstatedir=*) local_statedir
="$optarg"
932 --firmwarepath=*) firmwarepath
="$optarg"
934 --sbindir=*|
--sharedstatedir=*|\
935 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
936 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
937 # These switches are silently ignored, for compatibility with
938 # autoconf-generated configure scripts. This allows QEMU's
939 # configure to be used by RPM and similar macros that set
940 # lots of directory switches by default.
942 --disable-sdl) sdl
="no"
944 --enable-sdl) sdl
="yes"
946 --with-sdlabi=*) sdlabi
="$optarg"
948 --disable-qom-cast-debug) qom_cast_debug
="no"
950 --enable-qom-cast-debug) qom_cast_debug
="yes"
952 --disable-virtfs) virtfs
="no"
954 --enable-virtfs) virtfs
="yes"
956 --disable-mpath) mpath
="no"
958 --enable-mpath) mpath
="yes"
960 --disable-vnc) vnc
="no"
962 --enable-vnc) vnc
="yes"
964 --oss-lib=*) oss_lib
="$optarg"
966 --audio-drv-list=*) audio_drv_list
="$optarg"
968 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
970 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
972 --enable-debug-tcg) debug_tcg
="yes"
974 --disable-debug-tcg) debug_tcg
="no"
977 # Enable debugging options that aren't excessively noisy
983 --enable-sparse) sparse
="yes"
985 --disable-sparse) sparse
="no"
987 --disable-strip) strip_opt
="no"
989 --disable-vnc-sasl) vnc_sasl
="no"
991 --enable-vnc-sasl) vnc_sasl
="yes"
993 --disable-vnc-jpeg) vnc_jpeg
="no"
995 --enable-vnc-jpeg) vnc_jpeg
="yes"
997 --disable-vnc-png) vnc_png
="no"
999 --enable-vnc-png) vnc_png
="yes"
1001 --disable-slirp) slirp
="no"
1003 --disable-vde) vde
="no"
1005 --enable-vde) vde
="yes"
1007 --disable-netmap) netmap
="no"
1009 --enable-netmap) netmap
="yes"
1011 --disable-xen) xen
="no"
1013 --enable-xen) xen
="yes"
1015 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1017 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1019 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
1021 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
1023 --disable-brlapi) brlapi
="no"
1025 --enable-brlapi) brlapi
="yes"
1027 --disable-bluez) bluez
="no"
1029 --enable-bluez) bluez
="yes"
1031 --disable-kvm) kvm
="no"
1033 --enable-kvm) kvm
="yes"
1035 --disable-hax) hax
="no"
1037 --enable-hax) hax
="yes"
1039 --disable-tcg-interpreter) tcg_interpreter
="no"
1041 --enable-tcg-interpreter) tcg_interpreter
="yes"
1043 --disable-cap-ng) cap_ng
="no"
1045 --enable-cap-ng) cap_ng
="yes"
1047 --disable-tcg) tcg
="no"
1049 --enable-tcg) tcg
="yes"
1051 --disable-malloc-trim) malloc_trim
="no"
1053 --enable-malloc-trim) malloc_trim
="yes"
1055 --disable-spice) spice
="no"
1057 --enable-spice) spice
="yes"
1059 --disable-libiscsi) libiscsi
="no"
1061 --enable-libiscsi) libiscsi
="yes"
1063 --disable-libnfs) libnfs
="no"
1065 --enable-libnfs) libnfs
="yes"
1067 --enable-profiler) profiler
="yes"
1069 --disable-cocoa) cocoa
="no"
1073 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1075 --disable-system) softmmu
="no"
1077 --enable-system) softmmu
="yes"
1084 --disable-linux-user) linux_user
="no"
1086 --enable-linux-user) linux_user
="yes"
1088 --disable-bsd-user) bsd_user
="no"
1090 --enable-bsd-user) bsd_user
="yes"
1092 --enable-pie) pie
="yes"
1094 --disable-pie) pie
="no"
1096 --enable-werror) werror
="yes"
1098 --disable-werror) werror
="no"
1100 --enable-stack-protector) stack_protector
="yes"
1102 --disable-stack-protector) stack_protector
="no"
1104 --disable-curses) curses
="no"
1106 --enable-curses) curses
="yes"
1108 --disable-curl) curl
="no"
1110 --enable-curl) curl
="yes"
1112 --disable-fdt) fdt
="no"
1114 --enable-fdt) fdt
="yes"
1116 --disable-linux-aio) linux_aio
="no"
1118 --enable-linux-aio) linux_aio
="yes"
1120 --disable-attr) attr
="no"
1122 --enable-attr) attr
="yes"
1124 --disable-blobs) blobs
="no"
1126 --with-pkgversion=*) pkgversion
=" ($optarg)"
1128 --with-coroutine=*) coroutine
="$optarg"
1130 --disable-coroutine-pool) coroutine_pool
="no"
1132 --enable-coroutine-pool) coroutine_pool
="yes"
1134 --enable-debug-stack-usage) debug_stack_usage
="yes"
1136 --enable-crypto-afalg) crypto_afalg
="yes"
1138 --disable-crypto-afalg) crypto_afalg
="no"
1140 --disable-docs) docs
="no"
1142 --enable-docs) docs
="yes"
1144 --disable-vhost-net) vhost_net
="no"
1146 --enable-vhost-net) vhost_net
="yes"
1148 --disable-vhost-scsi) vhost_scsi
="no"
1150 --enable-vhost-scsi) vhost_scsi
="yes"
1152 --disable-vhost-vsock) vhost_vsock
="no"
1154 --enable-vhost-vsock) vhost_vsock
="yes"
1156 --disable-opengl) opengl
="no"
1158 --enable-opengl) opengl
="yes"
1160 --disable-rbd) rbd
="no"
1162 --enable-rbd) rbd
="yes"
1164 --disable-xfsctl) xfs
="no"
1166 --enable-xfsctl) xfs
="yes"
1168 --disable-smartcard) smartcard
="no"
1170 --enable-smartcard) smartcard
="yes"
1172 --disable-libusb) libusb
="no"
1174 --enable-libusb) libusb
="yes"
1176 --disable-usb-redir) usb_redir
="no"
1178 --enable-usb-redir) usb_redir
="yes"
1180 --disable-zlib-test) zlib
="no"
1182 --disable-lzo) lzo
="no"
1184 --enable-lzo) lzo
="yes"
1186 --disable-snappy) snappy
="no"
1188 --enable-snappy) snappy
="yes"
1190 --disable-bzip2) bzip2="no"
1192 --enable-bzip2) bzip2="yes"
1194 --enable-guest-agent) guest_agent
="yes"
1196 --disable-guest-agent) guest_agent
="no"
1198 --enable-guest-agent-msi) guest_agent_msi
="yes"
1200 --disable-guest-agent-msi) guest_agent_msi
="no"
1202 --with-vss-sdk) vss_win32_sdk
=""
1204 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1206 --without-vss-sdk) vss_win32_sdk
="no"
1208 --with-win-sdk) win_sdk
=""
1210 --with-win-sdk=*) win_sdk
="$optarg"
1212 --without-win-sdk) win_sdk
="no"
1214 --enable-tools) want_tools
="yes"
1216 --disable-tools) want_tools
="no"
1218 --enable-seccomp) seccomp
="yes"
1220 --disable-seccomp) seccomp
="no"
1222 --disable-glusterfs) glusterfs
="no"
1224 --enable-glusterfs) glusterfs
="yes"
1226 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1227 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1229 --enable-vhdx|
--disable-vhdx)
1230 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1232 --enable-uuid|
--disable-uuid)
1233 echo "$0: $opt is obsolete, UUID support is always built" >&2
1235 --disable-gtk) gtk
="no"
1237 --enable-gtk) gtk
="yes"
1239 --tls-priority=*) tls_priority
="$optarg"
1241 --disable-gnutls) gnutls
="no"
1243 --enable-gnutls) gnutls
="yes"
1245 --disable-nettle) nettle
="no"
1247 --enable-nettle) nettle
="yes"
1249 --disable-gcrypt) gcrypt
="no"
1251 --enable-gcrypt) gcrypt
="yes"
1253 --enable-rdma) rdma
="yes"
1255 --disable-rdma) rdma
="no"
1257 --with-gtkabi=*) gtkabi
="$optarg"
1259 --disable-vte) vte
="no"
1261 --enable-vte) vte
="yes"
1263 --disable-virglrenderer) virglrenderer
="no"
1265 --enable-virglrenderer) virglrenderer
="yes"
1267 --disable-tpm) tpm
="no"
1269 --enable-tpm) tpm
="yes"
1271 --disable-libssh2) libssh2
="no"
1273 --enable-libssh2) libssh2
="yes"
1275 --disable-live-block-migration) live_block_migration
="no"
1277 --enable-live-block-migration) live_block_migration
="yes"
1279 --disable-numa) numa
="no"
1281 --enable-numa) numa
="yes"
1283 --disable-tcmalloc) tcmalloc
="no"
1285 --enable-tcmalloc) tcmalloc
="yes"
1287 --disable-jemalloc) jemalloc
="no"
1289 --enable-jemalloc) jemalloc
="yes"
1291 --disable-replication) replication
="no"
1293 --enable-replication) replication
="yes"
1295 --disable-vxhs) vxhs
="no"
1297 --enable-vxhs) vxhs
="yes"
1299 --disable-vhost-user) vhost_user
="no"
1301 --enable-vhost-user)
1303 if test "$mingw32" = "yes"; then
1304 error_exit
"vhost-user isn't available on win32"
1307 --disable-capstone) capstone
="no"
1309 --enable-capstone) capstone
="yes"
1311 --enable-capstone=git
) capstone
="git"
1313 --enable-capstone=system
) capstone
="system"
1315 --with-git=*) git
="$optarg"
1317 --enable-git-update) git_update
=yes
1319 --disable-git-update) git_update
=no
1322 echo "ERROR: unknown option $opt"
1323 echo "Try '$0 --help' for more information"
1329 if test "$vhost_user" = ""; then
1330 if test "$mingw32" = "yes"; then
1340 LDFLAGS
="-m32 $LDFLAGS"
1344 LDFLAGS
="-m64 $LDFLAGS"
1347 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1348 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1351 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1352 LDFLAGS
="-m64 $LDFLAGS"
1356 LDFLAGS
="-m31 $LDFLAGS"
1360 LDFLAGS
="-m64 $LDFLAGS"
1364 LDFLAGS
="-m32 $LDFLAGS"
1365 cc_i386
='$(CC) -m32'
1368 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1369 # If we truly care, we should simply detect this case at
1370 # runtime and generate the fallback to serial emulation.
1371 CPU_CFLAGS
="-m64 -mcx16"
1372 LDFLAGS
="-m64 $LDFLAGS"
1373 cc_i386
='$(CC) -m32'
1377 LDFLAGS
="-mx32 $LDFLAGS"
1378 cc_i386
='$(CC) -m32'
1380 # No special flags required for other host CPUs
1383 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1384 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1386 # For user-mode emulation the host arch has to be one we explicitly
1387 # support, even if we're using TCI.
1388 if [ "$ARCH" = "unknown" ]; then
1393 default_target_list
=""
1397 if [ "$softmmu" = "yes" ]; then
1398 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1400 if [ "$linux_user" = "yes" ]; then
1401 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1403 if [ "$bsd_user" = "yes" ]; then
1404 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1407 for config
in $mak_wilds; do
1408 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1411 # Enumerate public trace backends for --help output
1412 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1414 if test x
"$show_help" = x
"yes" ; then
1417 Usage: configure [options]
1418 Options: [defaults in brackets after descriptions]
1421 --help print this message
1422 --prefix=PREFIX install in PREFIX [$prefix]
1423 --interp-prefix=PREFIX where to find shared libraries, etc.
1424 use %M for cpu name [$interp_prefix]
1425 --target-list=LIST set target list (default: build everything)
1426 $(echo Available targets: $default_target_list | \
1427 fold -s -w 53 | sed -e 's/^/ /')
1429 Advanced options (experts only):
1430 --source-path=PATH path of source code [$source_path]
1431 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1432 --cc=CC use C compiler CC [$cc]
1433 --iasl=IASL use ACPI compiler IASL [$iasl]
1434 --host-cc=CC use C compiler CC [$host_cc] for code run at
1436 --cxx=CXX use C++ compiler CXX [$cxx]
1437 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1438 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1439 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1440 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1441 --make=MAKE use specified make [$make]
1442 --install=INSTALL use specified install [$install]
1443 --python=PYTHON use specified python [$python]
1444 --smbd=SMBD use specified smbd [$smbd]
1445 --static enable static build [$static]
1446 --mandir=PATH install man pages in PATH
1447 --datadir=PATH install firmware in PATH$confsuffix
1448 --docdir=PATH install documentation in PATH$confsuffix
1449 --bindir=PATH install binaries in PATH
1450 --libdir=PATH install libraries in PATH
1451 --sysconfdir=PATH install config in PATH$confsuffix
1452 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1453 --firmwarepath=PATH search PATH for firmware files
1454 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1455 --enable-debug enable common debug build options
1456 --disable-strip disable stripping binaries
1457 --disable-werror disable compilation abort on warning
1458 --disable-stack-protector disable compiler-provided stack protection
1459 --audio-drv-list=LIST set audio drivers list:
1460 Available drivers: $audio_possible_drivers
1461 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1462 --block-drv-rw-whitelist=L
1463 set block driver read-write whitelist
1464 (affects only QEMU, not qemu-img)
1465 --block-drv-ro-whitelist=L
1466 set block driver read-only whitelist
1467 (affects only QEMU, not qemu-img)
1468 --enable-trace-backends=B Set trace backend
1469 Available backends: $trace_backend_list
1470 --with-trace-file=NAME Full PATH,NAME of file to store traces
1472 --disable-slirp disable SLIRP userspace network connectivity
1473 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1474 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1475 --oss-lib path to OSS library
1476 --cpu=CPU Build for host CPU [$cpu]
1477 --with-coroutine=BACKEND coroutine backend. Supported options:
1478 ucontext, sigaltstack, windows
1479 --enable-gcov enable test coverage analysis with gcov
1480 --gcov=GCOV use specified gcov [$gcov_tool]
1481 --disable-blobs disable installing provided firmware blobs
1482 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1483 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1484 --tls-priority default TLS protocol/cipher priority string
1485 --enable-gprof QEMU profiling with gprof
1486 --enable-profiler profiler support
1487 --enable-xen-pv-domain-build
1488 xen pv domain builder
1489 --enable-debug-stack-usage
1490 track the maximum stack usage of stacks created by qemu_alloc_stack
1492 Optional features, enabled with --enable-FEATURE and
1493 disabled with --disable-FEATURE, default is enabled if available:
1495 system all system emulation targets
1496 user supported user emulation targets
1497 linux-user all linux usermode emulation targets
1498 bsd-user all BSD usermode emulation targets
1499 docs build documentation
1500 guest-agent build the QEMU Guest Agent
1501 guest-agent-msi build guest agent Windows MSI installation package
1502 pie Position Independent Executables
1503 modules modules support
1504 debug-tcg TCG debugging (default is disabled)
1505 debug-info debugging information
1506 sparse sparse checker
1508 gnutls GNUTLS cryptography support
1509 nettle nettle cryptography support
1510 gcrypt libgcrypt cryptography support
1512 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1514 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1515 vte vte support for the gtk UI
1518 vnc-sasl SASL encryption for VNC server
1519 vnc-jpeg JPEG lossy compression for VNC server
1520 vnc-png PNG compression for VNC server
1521 cocoa Cocoa UI (Mac OS X only)
1523 mpath Multipath persistent reservation passthrough
1524 xen xen backend driver support
1526 brlapi BrlAPI (Braile)
1527 curl curl connectivity
1529 bluez bluez stack connectivity
1530 kvm KVM acceleration support
1531 hax HAX acceleration support
1532 rdma RDMA-based migration support
1533 vde support for vde network
1534 netmap support for netmap network
1535 linux-aio Linux AIO support
1536 cap-ng libcap-ng support
1537 attr attr and xattr support
1538 vhost-net vhost-net acceleration support
1540 rbd rados block device (rbd)
1541 libiscsi iscsi support
1543 smartcard smartcard support (libcacard)
1544 libusb libusb (for usb passthrough)
1545 live-block-migration Block migration in the main migration stream
1546 usb-redir usb network redirection support
1547 lzo support of lzo compression library
1548 snappy support of snappy compression library
1549 bzip2 support of bzip2 compression library
1550 (for reading bzip2-compressed dmg images)
1551 seccomp seccomp support
1552 coroutine-pool coroutine freelist (better performance)
1553 glusterfs GlusterFS backend
1555 libssh2 ssh block device support
1556 numa libnuma support
1557 tcmalloc tcmalloc support
1558 jemalloc jemalloc support
1559 replication replication support
1560 vhost-vsock virtio sockets device support
1561 opengl opengl support
1562 virglrenderer virgl rendering support
1563 xfsctl xfsctl support
1564 qom-cast-debug cast debugging support
1565 tools build qemu-io, qemu-nbd and qemu-image tools
1566 vxhs Veritas HyperScale vDisk backend support
1567 crypto-afalg Linux AF_ALG crypto backend driver
1568 vhost-user vhost-user support
1569 capstone capstone disassembler support
1571 NOTE: The object files are built at the place where configure is launched
1576 if ! has
$python; then
1577 error_exit
"Python not found. Use --python=/path/to/python"
1580 # Note that if the Python conditional here evaluates True we will exit
1581 # with status 1 which is a shell 'false' value.
1582 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1583 error_exit
"Cannot use '$python', Python 2.6 or later is required." \
1584 "Note that Python 3 or later is not yet supported." \
1585 "Use --python=/path/to/python to specify a supported Python."
1588 # Suppress writing compiled files
1591 # Check that the C compiler works. Doing this here before testing
1592 # the host CPU ensures that we had a valid CC to autodetect the
1593 # $cpu var (and we should bail right here if that's not the case).
1594 # It also allows the help message to be printed without a CC.
1596 if compile_object
; then
1597 : C compiler works ok
1599 error_exit
"\"$cc\" either does not exist or does not work"
1601 if ! compile_prog
; then
1602 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1605 # Now we have handled --enable-tcg-interpreter and know we're not just
1606 # printing the help message, bail out if the host CPU isn't supported.
1607 if test "$ARCH" = "unknown"; then
1608 if test "$tcg_interpreter" = "yes" ; then
1609 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1611 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1615 # Consult white-list to determine whether to enable werror
1616 # by default. Only enable by default for git builds
1617 if test -z "$werror" ; then
1618 if test -d "$source_path/.git" -a \
1619 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1626 if test "$bogus_os" = "yes"; then
1627 # Now that we know that we're not printing the help and that
1628 # the compiler works (so the results of the check_defines we used
1629 # to identify the OS are reliable), if we didn't recognize the
1630 # host OS we should stop now.
1631 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1634 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1635 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1636 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1637 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1638 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1639 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1640 # Note that we do not add -Werror to gcc_flags here, because that would
1641 # enable it for all configure tests. If a configure test failed due
1642 # to -Werror this would just silently disable some features,
1643 # so it's too error prone.
1645 cc_has_warning_flag
() {
1648 # Use the positive sense of the flag when testing for -Wno-wombat
1649 # support (gcc will happily accept the -Wno- form of unknown
1651 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1652 compile_prog
"-Werror $optflag" ""
1655 for flag
in $gcc_flags; do
1656 if cc_has_warning_flag
$flag ; then
1657 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1661 if test "$stack_protector" != "no"; then
1663 int main(int argc, char *argv[])
1665 char arr[64], *p = arr, *c = argv[0];
1672 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1674 for flag
in $gcc_flags; do
1675 # We need to check both a compile and a link, since some compiler
1676 # setups fail only on a .c->.o compile and some only at link time
1677 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1678 compile_prog
"-Werror $flag" ""; then
1679 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1684 if test "$stack_protector" = yes; then
1685 if test $sp_on = 0; then
1686 error_exit
"Stack protector not supported"
1691 # Disable -Wmissing-braces on older compilers that warn even for
1692 # the "universal" C zero initializer {0}.
1698 if compile_object
"-Werror" "" ; then
1701 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1704 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1705 # large functions that use global variables. The bug is in all releases of
1706 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1707 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1709 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1710 int main(void) { return 0; }
1712 #error No bug in this compiler.
1715 if compile_prog
"-Werror -fno-gcse" "" ; then
1716 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1719 if test "$static" = "yes" ; then
1720 if test "$modules" = "yes" ; then
1721 error_exit
"static and modules are mutually incompatible"
1723 if test "$pie" = "yes" ; then
1724 error_exit
"static and pie are mutually incompatible"
1730 # Unconditional check for compiler __thread support
1732 static __thread int tls_var;
1733 int main(void) { return tls_var; }
1736 if ! compile_prog
"-Werror" "" ; then
1737 error_exit
"Your compiler does not support the __thread specifier for " \
1738 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1741 if test "$pie" = ""; then
1742 case "$cpu-$targetos" in
1743 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1751 if test "$pie" != "no" ; then
1755 # define THREAD __thread
1760 static THREAD int tls_var;
1762 int main(void) { return tls_var; }
1765 if compile_prog
"-fPIE -DPIE" "-pie"; then
1766 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1767 LDFLAGS
="-pie $LDFLAGS"
1769 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1770 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1773 if test "$pie" = "yes"; then
1774 error_exit
"PIE not available due to missing toolchain support"
1776 echo "Disabling PIE due to missing toolchain support"
1781 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1782 CFLAGS_NOPIE
="-fno-pie"
1783 LDFLAGS_NOPIE
="-nopie"
1787 ##########################################
1788 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1789 # use i686 as default anyway, but for those that don't, an explicit
1790 # specification is necessary
1792 if test "$cpu" = "i386"; then
1794 static int sfaa(int *ptr)
1796 return __sync_fetch_and_and(ptr, 0);
1802 val = __sync_val_compare_and_swap(&val, 0, 1);
1807 if ! compile_prog
"" "" ; then
1808 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1812 #########################################
1813 # Solaris specific configure tool chain decisions
1815 if test "$solaris" = "yes" ; then
1816 if has
$install; then
1819 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1820 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1821 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1823 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1824 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1825 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1826 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1831 if test -f /usr
/ccs
/bin
/ar ; then
1832 error_exit
"No path includes ar" \
1833 "Add /usr/ccs/bin to your path and rerun configure"
1835 error_exit
"No path includes ar"
1839 if test -z "${target_list+xxx}" ; then
1840 for target
in $default_target_list; do
1841 supported_target
$target 2>/dev
/null
&& \
1842 target_list
="$target_list $target"
1844 target_list
="${target_list# }"
1846 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1847 for target
in $target_list; do
1848 # Check that we recognised the target name; this allows a more
1849 # friendly error message than if we let it fall through.
1850 case " $default_target_list " in
1854 error_exit
"Unknown target name '$target'"
1857 supported_target
$target ||
exit 1
1861 # see if system emulation was really requested
1862 case " $target_list " in
1863 *"-softmmu "*) softmmu
=yes
1869 feature_not_found
() {
1873 error_exit
"User requested feature $feature" \
1874 "configure was not able to find it." \
1879 # big/little endian test
1881 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1882 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1883 extern int foo(short *, short *);
1884 int main(int argc, char *argv[]) {
1885 return foo(big_endian, little_endian);
1889 if compile_object
; then
1890 if grep -q BiGeNdIaN
$TMPO ; then
1892 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1895 echo big
/little
test failed
1898 echo big
/little
test failed
1901 ##########################################
1902 # cocoa implies not SDL or GTK
1903 # (the cocoa UI code currently assumes it is always the active UI
1904 # and doesn't interact well with other UI frontend code)
1905 if test "$cocoa" = "yes"; then
1906 if test "$sdl" = "yes"; then
1907 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1909 if test "$gtk" = "yes"; then
1910 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1916 # Some versions of Mac OS X incorrectly define SIZE_MAX
1920 int main(int argc, char *argv[]) {
1921 return printf("%zu", SIZE_MAX);
1924 have_broken_size_max
=no
1925 if ! compile_object
-Werror ; then
1926 have_broken_size_max
=yes
1929 ##########################################
1933 #include <sys/socket.h>
1934 #include <linux/ip.h>
1935 int main(void) { return sizeof(struct mmsghdr); }
1937 if compile_prog
"" "" ; then
1943 ##########################################
1944 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1946 if test "$mingw32" = "yes"; then
1947 # Some versions of MinGW / Mingw-w64 lack localtime_r
1948 # and gmtime_r entirely.
1950 # Some versions of Mingw-w64 define a macro for
1951 # localtime_r/gmtime_r.
1953 # Some versions of Mingw-w64 will define functions
1954 # for localtime_r/gmtime_r, but only if you have
1955 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1956 # though, unistd.h and pthread.h both define
1959 # So this #undef localtime_r and #include <unistd.h>
1960 # are not in fact redundant.
1965 int main(void) { localtime_r(NULL, NULL); return 0; }
1967 if compile_prog
"" "" ; then
1974 ##########################################
1977 if ! has
"$pkg_config_exe"; then
1978 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1981 ##########################################
1984 if test "$linux_user" = "yes"; then
1987 #include <linux/futex.h>
1989 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1995 if ! compile_object
; then
1996 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2000 #########################################
2003 if test "$zlib" != "no" ; then
2006 int main(void) { zlibVersion(); return 0; }
2008 if compile_prog
"" "-lz" ; then
2011 error_exit
"zlib check failed" \
2012 "Make sure to have the zlib libs and headers installed."
2017 ##########################################
2020 if test "$lzo" != "no" ; then
2022 #include <lzo/lzo1x.h>
2023 int main(void) { lzo_version(); return 0; }
2025 if compile_prog
"" "-llzo2" ; then
2026 libs_softmmu
="$libs_softmmu -llzo2"
2029 if test "$lzo" = "yes"; then
2030 feature_not_found
"liblzo2" "Install liblzo2 devel"
2036 ##########################################
2039 if test "$snappy" != "no" ; then
2041 #include <snappy-c.h>
2042 int main(void) { snappy_max_compressed_length(4096); return 0; }
2044 if compile_prog
"" "-lsnappy" ; then
2045 libs_softmmu
="$libs_softmmu -lsnappy"
2048 if test "$snappy" = "yes"; then
2049 feature_not_found
"libsnappy" "Install libsnappy devel"
2055 ##########################################
2058 if test "$bzip2" != "no" ; then
2061 int main(void) { BZ2_bzlibVersion(); return 0; }
2063 if compile_prog
"" "-lbz2" ; then
2066 if test "$bzip2" = "yes"; then
2067 feature_not_found
"libbzip2" "Install libbzip2 devel"
2073 ##########################################
2076 if test "$seccomp" != "no" ; then
2079 libseccomp_minver
="2.1.0"
2082 libseccomp_minver
="2.2.0"
2085 libseccomp_minver
="2.2.3"
2088 libseccomp_minver
="2.3.0"
2091 libseccomp_minver
=""
2095 if test "$libseccomp_minver" != "" &&
2096 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2097 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2098 seccomp_libs
="$($pkg_config --libs libseccomp)"
2101 if test "$seccomp" = "yes" ; then
2102 if test "$libseccomp_minver" != "" ; then
2103 feature_not_found
"libseccomp" \
2104 "Install libseccomp devel >= $libseccomp_minver"
2106 feature_not_found
"libseccomp" \
2107 "libseccomp is not supported for host cpu $cpu"
2113 ##########################################
2116 if test "$xen" != "no" ; then
2117 # Check whether Xen library path is specified via --extra-ldflags to avoid
2118 # overriding this setting with pkg-config output. If not, try pkg-config
2119 # to obtain all needed flags.
2121 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2122 $pkg_config --exists xencontrol
; then
2123 xen_ctrl_version
="$(printf '%d%02d%02d' \
2124 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2126 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2127 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2128 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2129 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2130 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2133 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2134 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2136 # First we test whether Xen headers and libraries are available.
2137 # If no, we are done and there is no Xen support.
2138 # If yes, more tests are run to detect the Xen version.
2142 #include <xenctrl.h>
2147 if ! compile_prog
"" "$xen_libs" ; then
2149 if test "$xen" = "yes" ; then
2150 feature_not_found
"xen" "Install xen devel"
2156 cat > $TMPC <<EOF &&
2157 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2158 #include <xenforeignmemory.h>
2160 xenforeignmemory_handle *xfmem;
2162 xfmem = xenforeignmemory_open(0, 0);
2163 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2168 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2170 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2171 xen_ctrl_version
=41000
2174 cat > $TMPC <<EOF &&
2175 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2176 #define __XEN_TOOLS__
2177 #include <xendevicemodel.h>
2179 xendevicemodel_handle *xd;
2181 xd = xendevicemodel_open(0, 0);
2182 xendevicemodel_close(xd);
2187 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2189 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2190 xen_ctrl_version
=40900
2193 cat > $TMPC <<EOF &&
2195 * If we have stable libs the we don't want the libxc compat
2196 * layers, regardless of what CFLAGS we may have been given.
2198 * Also, check if xengnttab_grant_copy_segment_t is defined and
2199 * grant copy operation is implemented.
2201 #undef XC_WANT_COMPAT_EVTCHN_API
2202 #undef XC_WANT_COMPAT_GNTTAB_API
2203 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2204 #include <xenctrl.h>
2205 #include <xenstore.h>
2206 #include <xenevtchn.h>
2207 #include <xengnttab.h>
2208 #include <xenforeignmemory.h>
2210 #include <xen/hvm/hvm_info_table.h>
2211 #if !defined(HVM_MAX_VCPUS)
2212 # error HVM_MAX_VCPUS not defined
2215 xc_interface *xc = NULL;
2216 xenforeignmemory_handle *xfmem;
2217 xenevtchn_handle *xe;
2218 xengnttab_handle *xg;
2219 xen_domain_handle_t handle;
2220 xengnttab_grant_copy_segment_t* seg = NULL;
2224 xc = xc_interface_open(0, 0, 0);
2225 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2226 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2227 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2228 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2229 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2231 xfmem = xenforeignmemory_open(0, 0);
2232 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2234 xe = xenevtchn_open(0, 0);
2237 xg = xengnttab_open(0, 0);
2238 xengnttab_grant_copy(xg, 0, seg);
2243 compile_prog
"" "$xen_libs $xen_stable_libs"
2245 xen_ctrl_version
=40800
2248 cat > $TMPC <<EOF &&
2250 * If we have stable libs the we don't want the libxc compat
2251 * layers, regardless of what CFLAGS we may have been given.
2253 #undef XC_WANT_COMPAT_EVTCHN_API
2254 #undef XC_WANT_COMPAT_GNTTAB_API
2255 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2256 #include <xenctrl.h>
2257 #include <xenstore.h>
2258 #include <xenevtchn.h>
2259 #include <xengnttab.h>
2260 #include <xenforeignmemory.h>
2262 #include <xen/hvm/hvm_info_table.h>
2263 #if !defined(HVM_MAX_VCPUS)
2264 # error HVM_MAX_VCPUS not defined
2267 xc_interface *xc = NULL;
2268 xenforeignmemory_handle *xfmem;
2269 xenevtchn_handle *xe;
2270 xengnttab_handle *xg;
2271 xen_domain_handle_t handle;
2275 xc = xc_interface_open(0, 0, 0);
2276 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2277 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2278 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2279 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2280 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2282 xfmem = xenforeignmemory_open(0, 0);
2283 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2285 xe = xenevtchn_open(0, 0);
2288 xg = xengnttab_open(0, 0);
2289 xengnttab_map_grant_ref(xg, 0, 0, 0);
2294 compile_prog
"" "$xen_libs $xen_stable_libs"
2296 xen_ctrl_version
=40701
2299 cat > $TMPC <<EOF &&
2300 #include <xenctrl.h>
2303 xc_interface *xc = NULL;
2304 xen_domain_handle_t handle;
2305 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2309 compile_prog
"" "$xen_libs"
2311 xen_ctrl_version
=40700
2316 cat > $TMPC <<EOF &&
2317 #include <xenctrl.h>
2318 #include <xenstore.h>
2320 #include <xen/hvm/hvm_info_table.h>
2321 #if !defined(HVM_MAX_VCPUS)
2322 # error HVM_MAX_VCPUS not defined
2327 xc = xc_interface_open(0, 0, 0);
2328 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2329 xc_gnttab_open(NULL, 0);
2330 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2331 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2332 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2333 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2337 compile_prog
"" "$xen_libs"
2339 xen_ctrl_version
=40600
2344 cat > $TMPC <<EOF &&
2345 #include <xenctrl.h>
2346 #include <xenstore.h>
2348 #include <xen/hvm/hvm_info_table.h>
2349 #if !defined(HVM_MAX_VCPUS)
2350 # error HVM_MAX_VCPUS not defined
2355 xc = xc_interface_open(0, 0, 0);
2356 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2357 xc_gnttab_open(NULL, 0);
2358 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2359 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2360 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2364 compile_prog
"" "$xen_libs"
2366 xen_ctrl_version
=40500
2370 cat > $TMPC <<EOF &&
2371 #include <xenctrl.h>
2372 #include <xenstore.h>
2374 #include <xen/hvm/hvm_info_table.h>
2375 #if !defined(HVM_MAX_VCPUS)
2376 # error HVM_MAX_VCPUS not defined
2381 xc = xc_interface_open(0, 0, 0);
2382 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2383 xc_gnttab_open(NULL, 0);
2384 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2385 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2389 compile_prog
"" "$xen_libs"
2391 xen_ctrl_version
=40200
2395 if test "$xen" = "yes" ; then
2396 feature_not_found
"xen (unsupported version)" \
2397 "Install a supported xen (xen 4.2 or newer)"
2402 if test "$xen" = yes; then
2403 if test $xen_ctrl_version -ge 40701 ; then
2404 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2406 libs_softmmu
="$xen_libs $libs_softmmu"
2411 if test "$xen_pci_passthrough" != "no"; then
2412 if test "$xen" = "yes" && test "$linux" = "yes"; then
2413 xen_pci_passthrough
=yes
2415 if test "$xen_pci_passthrough" = "yes"; then
2416 error_exit
"User requested feature Xen PCI Passthrough" \
2417 " but this feature requires /sys from Linux"
2419 xen_pci_passthrough
=no
2423 if test "$xen_pv_domain_build" = "yes" &&
2424 test "$xen" != "yes"; then
2425 error_exit
"User requested Xen PV domain builder support" \
2426 "which requires Xen support."
2429 ##########################################
2431 if test "$sparse" != "no" ; then
2435 if test "$sparse" = "yes" ; then
2436 feature_not_found
"sparse" "Install sparse binary"
2442 ##########################################
2446 if $pkg_config --exists "x11"; then
2447 x11_cflags
=$
($pkg_config --cflags x11
)
2448 x11_libs
=$
($pkg_config --libs x11
)
2451 ##########################################
2454 if test "$gtkabi" = ""; then
2455 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2456 # Use 2.0 as a fallback if that is available.
2457 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2459 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2466 if test "$gtk" != "no"; then
2467 gtkpackage
="gtk+-$gtkabi"
2468 gtkx11package
="gtk+-x11-$gtkabi"
2469 if test "$gtkabi" = "3.0" ; then
2474 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2475 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2476 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2477 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2478 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2479 gtk_cflags
="$gtk_cflags $x11_cflags"
2480 gtk_libs
="$gtk_libs $x11_libs"
2482 libs_softmmu
="$gtk_libs $libs_softmmu"
2484 elif test "$gtk" = "yes"; then
2485 feature_not_found
"gtk" "Install gtk3-devel"
2492 ##########################################
2496 # Unfortunately some distros have bad pkg-config information for gnutls
2497 # such that it claims to exist but you get a compiler error if you try
2498 # to use the options returned by --libs. Specifically, Ubuntu for --static
2499 # builds doesn't work:
2500 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2502 # So sanity check the cflags/libs before assuming gnutls can be used.
2503 if ! $pkg_config --exists "gnutls"; then
2508 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2513 if test "$gnutls" != "no"; then
2514 if gnutls_works
; then
2515 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2516 gnutls_libs
=$
($pkg_config --libs gnutls
)
2517 libs_softmmu
="$gnutls_libs $libs_softmmu"
2518 libs_tools
="$gnutls_libs $libs_tools"
2519 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2522 # gnutls_rnd requires >= 2.11.0
2523 if $pkg_config --exists "gnutls >= 2.11.0"; then
2529 if $pkg_config --exists 'gnutls >= 3.0'; then
2532 elif $pkg_config --exists 'gnutls >= 2.12'; then
2533 case $
($pkg_config --libs --static gnutls
) in
2551 elif test "$gnutls" = "yes"; then
2552 feature_not_found
"gnutls" "Install gnutls devel"
2562 # If user didn't give a --disable/enable-gcrypt flag,
2563 # then mark as disabled if user requested nettle
2564 # explicitly, or if gnutls links to nettle
2565 if test -z "$gcrypt"
2567 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2573 # If user didn't give a --disable/enable-nettle flag,
2574 # then mark as disabled if user requested gcrypt
2575 # explicitly, or if gnutls links to gcrypt
2576 if test -z "$nettle"
2578 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2584 has_libgcrypt_config
() {
2585 if ! has
"libgcrypt-config"
2590 if test -n "$cross_prefix"
2592 host=$
(libgcrypt-config
--host)
2593 if test "$host-" != $cross_prefix
2602 if test "$gcrypt" != "no"; then
2603 if has_libgcrypt_config
; then
2604 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2605 gcrypt_libs
=$
(libgcrypt-config
--libs)
2606 # Debian has remove -lgpg-error from libgcrypt-config
2607 # as it "spreads unnecessary dependencies" which in
2608 # turn breaks static builds...
2609 if test "$static" = "yes"
2611 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2613 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2614 libs_tools
="$gcrypt_libs $libs_tools"
2615 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2617 if test -z "$nettle"; then
2624 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2626 NULL, 0, 0, 0, NULL);
2630 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2637 gcry_mac_hd_t handle;
2638 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2639 GCRY_MAC_FLAG_SECURE, NULL);
2643 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2647 if test "$gcrypt" = "yes"; then
2648 feature_not_found
"gcrypt" "Install gcrypt devel"
2656 if test "$nettle" != "no"; then
2657 if $pkg_config --exists "nettle"; then
2658 nettle_cflags
=$
($pkg_config --cflags nettle
)
2659 nettle_libs
=$
($pkg_config --libs nettle
)
2660 nettle_version
=$
($pkg_config --modversion nettle
)
2661 libs_softmmu
="$nettle_libs $libs_softmmu"
2662 libs_tools
="$nettle_libs $libs_tools"
2663 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2668 #include <nettle/pbkdf2.h>
2670 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2674 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2678 if test "$nettle" = "yes"; then
2679 feature_not_found
"nettle" "Install nettle devel"
2686 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2688 error_exit
"Only one of gcrypt & nettle can be enabled"
2691 ##########################################
2692 # libtasn1 - only for the TLS creds/session test suite
2697 if $pkg_config --exists "libtasn1"; then
2698 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2699 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2705 ##########################################
2706 # getifaddrs (for tests/test-io-channel-socket )
2709 if ! check_include
"ifaddrs.h" ; then
2713 ##########################################
2716 if test "$vte" != "no"; then
2717 if test "$gtkabi" = "3.0"; then
2718 vteminversion
="0.32.0"
2719 if $pkg_config --exists "vte-2.91"; then
2720 vtepackage
="vte-2.91"
2722 vtepackage
="vte-2.90"
2726 vteminversion
="0.24.0"
2728 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2729 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2730 vte_libs
=$
($pkg_config --libs $vtepackage)
2731 vteversion
=$
($pkg_config --modversion $vtepackage)
2732 libs_softmmu
="$vte_libs $libs_softmmu"
2734 elif test "$vte" = "yes"; then
2735 if test "$gtkabi" = "3.0"; then
2736 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2738 feature_not_found
"vte" "Install libvte devel"
2745 ##########################################
2748 # Look for sdl configuration program (pkg-config or sdl-config). Try
2749 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2751 if test "$sdlabi" = ""; then
2752 if $pkg_config --exists "sdl2"; then
2754 elif $pkg_config --exists "sdl"; then
2761 if test $sdlabi = "2.0"; then
2762 sdl_config
=$sdl2_config
2764 sdlconfigname
=sdl2_config
2765 elif test $sdlabi = "1.2"; then
2767 sdlconfigname
=sdl_config
2769 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2772 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2773 sdl_config
=$sdlconfigname
2776 if $pkg_config $sdlname --exists; then
2777 sdlconfig
="$pkg_config $sdlname"
2778 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2779 elif has
${sdl_config}; then
2780 sdlconfig
="$sdl_config"
2781 sdlversion
=$
($sdlconfig --version)
2783 if test "$sdl" = "yes" ; then
2784 feature_not_found
"sdl" "Install SDL2-devel"
2788 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2789 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2793 if test "$sdl" != "no" ; then
2796 #undef main /* We don't want SDL to override our main() */
2797 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2799 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2800 if test "$static" = "yes" ; then
2801 if $pkg_config $sdlname --exists; then
2802 sdl_libs
=$
($pkg_config $sdlname --static --libs 2>/dev
/null
)
2804 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2807 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2809 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2810 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2816 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2817 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2818 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2819 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2820 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2822 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2828 else # sdl not found
2829 if test "$sdl" = "yes" ; then
2830 feature_not_found
"sdl" "Install SDL devel"
2833 fi # sdl compile test
2836 if test "$sdl" = "yes" ; then
2839 #if defined(SDL_VIDEO_DRIVER_X11)
2840 #include <X11/XKBlib.h>
2842 #error No x11 support
2844 int main(void) { return 0; }
2846 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2847 sdl_cflags
="$sdl_cflags $x11_cflags"
2848 sdl_libs
="$sdl_libs $x11_libs"
2852 ##########################################
2853 # RDMA needs OpenFabrics libraries
2854 if test "$rdma" != "no" ; then
2856 #include <rdma/rdma_cma.h>
2857 int main(void) { return 0; }
2859 rdma_libs
="-lrdmacm -libverbs"
2860 if compile_prog
"" "$rdma_libs" ; then
2863 if test "$rdma" = "yes" ; then
2865 " OpenFabrics librdmacm/libibverbs not present." \
2867 " (1) Fast: Install infiniband packages from your distro." \
2868 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2869 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2876 ##########################################
2877 # VNC SASL detection
2878 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2880 #include <sasl/sasl.h>
2882 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2884 # Assuming Cyrus-SASL installed in /usr prefix
2886 vnc_sasl_libs
="-lsasl2"
2887 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2889 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2890 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2892 if test "$vnc_sasl" = "yes" ; then
2893 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2899 ##########################################
2900 # VNC JPEG detection
2901 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2904 #include <jpeglib.h>
2905 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2908 vnc_jpeg_libs
="-ljpeg"
2909 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2911 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2912 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2914 if test "$vnc_jpeg" = "yes" ; then
2915 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2921 ##########################################
2923 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2925 //#include <stdio.h>
2929 png_structp png_ptr;
2930 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2931 return png_ptr != 0;
2934 if $pkg_config libpng
--exists; then
2935 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2936 vnc_png_libs
=$
($pkg_config libpng
--libs)
2939 vnc_png_libs
="-lpng"
2941 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2943 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2944 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2946 if test "$vnc_png" = "yes" ; then
2947 feature_not_found
"vnc-png" "Install libpng devel"
2953 ##########################################
2955 if test "$xkbcommon" != "no" ; then
2956 if $pkg_config xkbcommon
--exists; then
2957 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
2958 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
2961 if test "$xkbcommon" = "yes" ; then
2962 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
2968 ##########################################
2969 # fnmatch() probe, used for ACL routines
2972 #include <fnmatch.h>
2975 fnmatch("foo", "foo", 0);
2979 if compile_prog
"" "" ; then
2983 ##########################################
2984 # xfsctl() probe, used for file-posix.c
2985 if test "$xfs" != "no" ; then
2987 #include <stddef.h> /* NULL */
2988 #include <xfs/xfs.h>
2991 xfsctl(NULL, 0, 0, NULL);
2995 if compile_prog
"" "" ; then
2998 if test "$xfs" = "yes" ; then
2999 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3005 ##########################################
3006 # vde libraries probe
3007 if test "$vde" != "no" ; then
3008 vde_libs
="-lvdeplug"
3010 #include <libvdeplug.h>
3013 struct vde_open_args a = {0, 0, 0};
3019 if compile_prog
"" "$vde_libs" ; then
3022 if test "$vde" = "yes" ; then
3023 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3029 ##########################################
3030 # netmap support probe
3031 # Apart from looking for netmap headers, we make sure that the host API version
3032 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3033 # a minor/major version number. Minor new features will be marked with values up
3034 # to 15, and if something happens that requires a change to the backend we will
3035 # move above 15, submit the backend fixes and modify this two bounds.
3036 if test "$netmap" != "no" ; then
3038 #include <inttypes.h>
3040 #include <net/netmap.h>
3041 #include <net/netmap_user.h>
3042 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3045 int main(void) { return 0; }
3047 if compile_prog
"" "" ; then
3050 if test "$netmap" = "yes" ; then
3051 feature_not_found
"netmap"
3057 ##########################################
3058 # libcap-ng library probe
3059 if test "$cap_ng" != "no" ; then
3065 capng_capability_to_name(CAPNG_EFFECTIVE);
3069 if compile_prog
"" "$cap_libs" ; then
3071 libs_tools
="$cap_libs $libs_tools"
3073 if test "$cap_ng" = "yes" ; then
3074 feature_not_found
"cap_ng" "Install libcap-ng devel"
3080 ##########################################
3081 # Sound support libraries probe
3092 int main(void) { $exp }
3094 if compile_prog
"$cfl" "$lib" ; then
3097 error_exit
"$drv check failed" \
3098 "Make sure to have the $drv libs and headers installed."
3102 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3103 for drv
in $audio_drv_list; do
3106 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
3107 "return snd_pcm_close((snd_pcm_t *)0);"
3108 alsa_libs
="-lasound"
3112 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
3113 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3114 pulse_libs
="-lpulse"
3119 if test "$sdl" = "no"; then
3120 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3125 coreaudio_libs
="-framework CoreAudio"
3129 dsound_libs
="-lole32 -ldxguid"
3138 # XXX: Probes for CoreAudio, DirectSound
3142 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3143 error_exit
"Unknown driver '$drv' selected" \
3144 "Possible drivers are: $audio_possible_drivers"
3150 ##########################################
3153 if test "$brlapi" != "no" ; then
3154 brlapi_libs
="-lbrlapi"
3158 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3160 if compile_prog
"" "$brlapi_libs" ; then
3163 if test "$brlapi" = "yes" ; then
3164 feature_not_found
"brlapi" "Install brlapi devel"
3170 ##########################################
3172 if test "$curses" != "no" ; then
3173 if test "$mingw32" = "yes" ; then
3174 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3175 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3177 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3178 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3187 setlocale(LC_ALL, "");
3189 addwstr(L"wide chars\n");
3191 add_wch(WACS_DEGREE);
3196 for curses_inc
in $curses_inc_list; do
3197 # Make sure we get the wide character prototypes
3198 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3200 for curses_lib
in $curses_lib_list; do
3202 if compile_prog
"$curses_inc" "$curses_lib" ; then
3204 QEMU_CFLAGS
="$curses_inc $QEMU_CFLAGS"
3205 libs_softmmu
="$curses_lib $libs_softmmu"
3209 if test "$curses_found" = yes ; then
3214 if test "$curses_found" = "yes" ; then
3217 if test "$curses" = "yes" ; then
3218 feature_not_found
"curses" "Install ncurses devel"
3224 ##########################################
3226 if test "$curl" != "no" ; then
3227 if $pkg_config libcurl
--exists; then
3228 curlconfig
="$pkg_config libcurl"
3230 curlconfig
=curl-config
3233 #include <curl/curl.h>
3234 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3236 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3237 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3238 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3241 if test "$curl" = "yes" ; then
3242 feature_not_found
"curl" "Install libcurl devel"
3248 ##########################################
3249 # bluez support probe
3250 if test "$bluez" != "no" ; then
3252 #include <bluetooth/bluetooth.h>
3253 int main(void) { return bt_error(0); }
3255 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3256 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3257 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3259 libs_softmmu
="$bluez_libs $libs_softmmu"
3261 if test "$bluez" = "yes" ; then
3262 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3268 ##########################################
3269 # glib support probe
3271 if test "$mingw32" = yes; then
3276 glib_modules
=gthread-2.0
3277 if test "$modules" = yes; then
3278 glib_modules
="$glib_modules gmodule-2.0"
3281 # This workaround is required due to a bug in pkg-config file for glib as it
3282 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3284 if test "$static" = yes -a "$mingw32" = yes; then
3285 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3288 for i
in $glib_modules; do
3289 if $pkg_config --atleast-version=$glib_req_ver $i; then
3290 glib_cflags
=$
($pkg_config --cflags $i)
3291 glib_libs
=$
($pkg_config --libs $i)
3292 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3293 LIBS
="$glib_libs $LIBS"
3294 libs_qga
="$glib_libs $libs_qga"
3296 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3300 # Sanity check that the current size_t matches the
3301 # size that glib thinks it should be. This catches
3302 # problems on multi-arch where people try to build
3303 # 32-bit QEMU while pointing at 64-bit glib headers
3308 #define QEMU_BUILD_BUG_ON(x) \
3309 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3312 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3317 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3318 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3319 "You probably need to set PKG_CONFIG_LIBDIR"\
3320 "to point to the right pkg-config files for your"\
3324 # g_test_trap_subprocess added in 2.38. Used by some tests.
3326 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
3330 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3333 int main(void) { return 0; }
3335 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3336 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3337 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3338 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3342 ##########################################
3343 # SHA command probe for modules
3344 if test "$modules" = yes; then
3345 shacmd_probe
="sha1sum sha1 shasum"
3346 for c
in $shacmd_probe; do
3352 if test "$shacmd" = ""; then
3353 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3357 ##########################################
3358 # pixman support probe
3360 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3363 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3364 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3365 pixman_libs
=$
($pkg_config --libs pixman-1
)
3367 error_exit
"pixman >= 0.21.8 not present." \
3368 "Please install the pixman devel package."
3371 ##########################################
3372 # libmpathpersist probe
3374 if test "$mpath" != "no" ; then
3376 #include <libudev.h>
3377 #include <mpath_persist.h>
3378 unsigned mpath_mx_alloc_len = 1024;
3380 static struct config *multipath_conf;
3381 extern struct udev *udev;
3382 extern struct config *get_multipath_config(void);
3383 extern void put_multipath_config(struct config *conf);
3385 struct config *get_multipath_config(void) { return multipath_conf; }
3386 void put_multipath_config(struct config *conf) { }
3390 multipath_conf = mpath_lib_init();
3394 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3403 ##########################################
3406 if test "$cap" != "no" ; then
3409 #include <sys/capability.h>
3410 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3412 if compile_prog
"" "-lcap" ; then
3419 ##########################################
3421 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3425 #include <pthread.h>
3426 static void *f(void *p) { return NULL; }
3429 pthread_create(&thread, 0, f, 0);
3433 if compile_prog
"" "" ; then
3436 for pthread_lib
in $PTHREADLIBS_LIST; do
3437 if compile_prog
"" "$pthread_lib" ; then
3440 for lib_entry
in $LIBS; do
3441 if test "$lib_entry" = "$pthread_lib"; then
3446 if test "$found" = "no"; then
3447 LIBS
="$pthread_lib $LIBS"
3449 PTHREAD_LIB
="$pthread_lib"
3455 if test "$mingw32" != yes -a "$pthread" = no
; then
3456 error_exit
"pthread check failed" \
3457 "Make sure to have the pthread libs and headers installed."
3460 # check for pthread_setname_np
3461 pthread_setname_np
=no
3463 #include <pthread.h>
3465 static void *f(void *p) { return NULL; }
3469 pthread_create(&thread, 0, f, 0);
3470 pthread_setname_np(thread, "QEMU");
3474 if compile_prog
"" "$pthread_lib" ; then
3475 pthread_setname_np
=yes
3478 ##########################################
3480 if test "$rbd" != "no" ; then
3483 #include <rbd/librbd.h>
3486 rados_create(&cluster, NULL);
3490 rbd_libs
="-lrbd -lrados"
3491 if compile_prog
"" "$rbd_libs" ; then
3494 if test "$rbd" = "yes" ; then
3495 feature_not_found
"rados block device" "Install librbd/ceph devel"
3501 ##########################################
3503 min_libssh2_version
=1.2.8
3504 if test "$libssh2" != "no" ; then
3505 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3506 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3507 libssh2_libs
=$
($pkg_config libssh2
--libs)
3510 if test "$libssh2" = "yes" ; then
3511 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3517 ##########################################
3518 # libssh2_sftp_fsync probe
3520 if test "$libssh2" = "yes"; then
3523 #include <libssh2.h>
3524 #include <libssh2_sftp.h>
3526 LIBSSH2_SESSION *session;
3528 LIBSSH2_SFTP_HANDLE *sftp_handle;
3529 session = libssh2_session_init ();
3530 sftp = libssh2_sftp_init (session);
3531 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3532 libssh2_sftp_fsync (sftp_handle);
3536 # libssh2_cflags/libssh2_libs defined in previous test.
3537 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3538 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3542 ##########################################
3545 if test "$linux_aio" != "no" ; then
3548 #include <sys/eventfd.h>
3550 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3552 if compile_prog
"" "-laio" ; then
3555 if test "$linux_aio" = "yes" ; then
3556 feature_not_found
"linux AIO" "Install libaio devel"
3562 ##########################################
3563 # TPM passthrough is only on x86 Linux
3565 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3566 tpm_passthrough
=$tpm
3571 # TPM emulator is for all posix systems
3572 if test "$mingw32" != "yes"; then
3577 ##########################################
3580 if test "$attr" != "no" ; then
3583 #include <sys/types.h>
3584 #ifdef CONFIG_LIBATTR
3585 #include <attr/xattr.h>
3587 #include <sys/xattr.h>
3589 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3591 if compile_prog
"" "" ; then
3593 # Older distros have <attr/xattr.h>, and need -lattr:
3594 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3599 if test "$attr" = "yes" ; then
3600 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3606 ##########################################
3609 #include <sys/types.h>
3610 #include <sys/uio.h>
3612 int main(void) { return sizeof(struct iovec); }
3615 if compile_prog
"" "" ; then
3619 ##########################################
3622 #include <sys/types.h>
3623 #include <sys/uio.h>
3625 int main(void) { return preadv(0, 0, 0, 0); }
3628 if compile_prog
"" "" ; then
3632 ##########################################
3634 # fdt support is mandatory for at least some target architectures,
3635 # so insist on it if we're building those system emulators.
3637 for target
in $target_list; do
3639 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu
)
3645 if test "$fdt_required" = "yes"; then
3646 if test "$fdt" = "no"; then
3647 error_exit
"fdt disabled but some requested targets require it." \
3648 "You can turn off fdt only if you also disable all the system emulation" \
3649 "targets which need it (by specifying a cut down --target-list)."
3654 if test "$fdt" != "no" ; then
3656 # explicitly check for libfdt_env.h as it is missing in some stable installs
3657 # and test for required functions to make sure we are on a version >= 1.4.2
3660 #include <libfdt_env.h>
3661 int main(void) { fdt_first_subnode(0, 0); return 0; }
3663 if compile_prog
"" "$fdt_libs" ; then
3664 # system DTC is good - use it
3667 # have GIT checkout, so activate dtc submodule
3668 if test -e "${source_path}/.git" ; then
3669 git_submodules
="${git_submodules} dtc"
3671 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
3675 if [ "$pwd_is_source_path" != "y" ] ; then
3676 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3677 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3679 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3680 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3681 elif test "$fdt" = "yes" ; then
3682 # Not a git build & no libfdt found, prompt for system install
3683 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
3684 "Please install the DTC (libfdt) devel package"
3686 # don't have and don't want
3693 libs_softmmu
="$libs_softmmu $fdt_libs"
3695 ##########################################
3696 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3698 if test "$opengl" != "no" ; then
3699 opengl_pkgs
="epoxy libdrm gbm"
3700 if $pkg_config $opengl_pkgs x11
; then
3701 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3702 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3704 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3707 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3709 if test "$opengl" = "yes" ; then
3710 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3718 if test "$opengl" = "yes"; then
3720 #include <epoxy/egl.h>
3721 #ifndef EGL_MESA_image_dma_buf_export
3722 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3724 int main(void) { return 0; }
3726 if compile_prog
"" "" ; then
3732 ##########################################
3734 if test "$glusterfs" != "no" ; then
3735 if $pkg_config --atleast-version=3 glusterfs-api
; then
3737 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3738 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3739 if $pkg_config --atleast-version=4 glusterfs-api
; then
3740 glusterfs_xlator_opt
="yes"
3742 if $pkg_config --atleast-version=5 glusterfs-api
; then
3743 glusterfs_discard
="yes"
3745 if $pkg_config --atleast-version=6 glusterfs-api
; then
3746 glusterfs_fallocate
="yes"
3747 glusterfs_zerofill
="yes"
3750 if test "$glusterfs" = "yes" ; then
3751 feature_not_found
"GlusterFS backend support" \
3752 "Install glusterfs-api devel >= 3"
3758 # Check for inotify functions when we are building linux-user
3759 # emulator. This is done because older glibc versions don't
3760 # have syscall stubs for these implemented. In that case we
3761 # don't provide them even if kernel supports them.
3765 #include <sys/inotify.h>
3770 /* try to start inotify */
3771 return inotify_init();
3774 if compile_prog
"" "" ; then
3780 #include <sys/inotify.h>
3785 /* try to start inotify */
3786 return inotify_init1(0);
3789 if compile_prog
"" "" ; then
3793 # check if pipe2 is there
3802 return pipe2(pipefd, O_CLOEXEC);
3805 if compile_prog
"" "" ; then
3809 # check if accept4 is there
3812 #include <sys/socket.h>
3817 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3821 if compile_prog
"" "" ; then
3825 # check if tee/splice is there. vmsplice was added same time.
3835 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3836 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3840 if compile_prog
"" "" ; then
3844 ##########################################
3847 if test "$numa" != "no" ; then
3850 int main(void) { return numa_available(); }
3853 if compile_prog
"" "-lnuma" ; then
3855 libs_softmmu
="-lnuma $libs_softmmu"
3857 if test "$numa" = "yes" ; then
3858 feature_not_found
"numa" "install numactl devel"
3864 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3865 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3869 # Even if malloc_trim() is available, these non-libc memory allocators
3870 # do not support it.
3871 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
3872 if test "$malloc_trim" = "yes" ; then
3873 echo "Disabling malloc_trim with non-libc memory allocator"
3878 #######################################
3881 if test "$malloc_trim" != "no" ; then
3884 int main(void) { malloc_trim(0); return 0; }
3886 if compile_prog
"" "" ; then
3893 ##########################################
3896 if test "$tcmalloc" = "yes" ; then
3899 int main(void) { malloc(1); return 0; }
3902 if compile_prog
"" "-ltcmalloc" ; then
3903 LIBS
="-ltcmalloc $LIBS"
3905 feature_not_found
"tcmalloc" "install gperftools devel"
3909 ##########################################
3912 if test "$jemalloc" = "yes" ; then
3915 int main(void) { malloc(1); return 0; }
3918 if compile_prog
"" "-ljemalloc" ; then
3919 LIBS
="-ljemalloc $LIBS"
3921 feature_not_found
"jemalloc" "install jemalloc devel"
3925 ##########################################
3930 #include <sys/syscall.h>
3932 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3935 if compile_prog
"" "" ; then
3939 # check if eventfd is supported
3942 #include <sys/eventfd.h>
3946 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3949 if compile_prog
"" "" ; then
3953 # check if memfd is supported
3956 #include <sys/mman.h>
3960 return memfd_create("foo", MFD_ALLOW_SEALING);
3963 if compile_prog
"" "" ; then
3969 # check for fallocate
3976 fallocate(0, 0, 0, 0);
3980 if compile_prog
"" "" ; then
3984 # check for fallocate hole punching
3985 fallocate_punch_hole
=no
3988 #include <linux/falloc.h>
3992 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3996 if compile_prog
"" "" ; then
3997 fallocate_punch_hole
=yes
4000 # check that fallocate supports range zeroing inside the file
4001 fallocate_zero_range
=no
4004 #include <linux/falloc.h>
4008 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4012 if compile_prog
"" "" ; then
4013 fallocate_zero_range
=yes
4016 # check for posix_fallocate
4023 posix_fallocate(0, 0, 0);
4027 if compile_prog
"" "" ; then
4031 # check for sync_file_range
4038 sync_file_range(0, 0, 0, 0);
4042 if compile_prog
"" "" ; then
4046 # check for linux/fiemap.h and FS_IOC_FIEMAP
4049 #include <sys/ioctl.h>
4050 #include <linux/fs.h>
4051 #include <linux/fiemap.h>
4055 ioctl(0, FS_IOC_FIEMAP, 0);
4059 if compile_prog
"" "" ; then
4074 if compile_prog
"" "" ; then
4078 # check for ppoll support
4085 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4086 ppoll(&pfd, 1, 0, 0);
4090 if compile_prog
"" "" ; then
4094 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4095 prctl_pr_set_timerslack
=no
4097 #include <sys/prctl.h>
4101 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4105 if compile_prog
"" "" ; then
4106 prctl_pr_set_timerslack
=yes
4109 # check for epoll support
4112 #include <sys/epoll.h>
4120 if compile_prog
"" "" ; then
4124 # epoll_create1 is a later addition
4125 # so we must check separately for its presence
4128 #include <sys/epoll.h>
4132 /* Note that we use epoll_create1 as a value, not as
4133 * a function being called. This is necessary so that on
4134 * old SPARC glibc versions where the function was present in
4135 * the library but not declared in the header file we will
4136 * fail the configure check. (Otherwise we will get a compiler
4137 * warning but not an error, and will proceed to fail the
4138 * qemu compile where we compile with -Werror.)
4140 return (int)(uintptr_t)&epoll_create1;
4143 if compile_prog
"" "" ; then
4147 # check for sendfile support
4150 #include <sys/sendfile.h>
4154 return sendfile(0, 0, 0, 0);
4157 if compile_prog
"" "" ; then
4161 # check for timerfd support (glibc 2.8 and newer)
4164 #include <sys/timerfd.h>
4168 return(timerfd_create(CLOCK_REALTIME, 0));
4171 if compile_prog
"" "" ; then
4175 # check for setns and unshare support
4188 if compile_prog
"" "" ; then
4192 # clock_adjtime probe
4199 return clock_adjtime(0, 0);
4203 if compile_prog
"" "" ; then
4218 if compile_prog
"" "" ; then
4222 # Check if tools are available to build documentation.
4223 if test "$docs" != "no" ; then
4224 if has makeinfo
&& has pod2man
; then
4227 if test "$docs" = "yes" ; then
4228 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4234 # Search for bswap_32 function
4237 #include <byteswap.h>
4238 int main(void) { return bswap_32(0); }
4240 if compile_prog
"" "" ; then
4244 # Search for bswap32 function
4247 #include <sys/endian.h>
4248 #include <sys/types.h>
4249 #include <machine/bswap.h>
4250 int main(void) { return bswap32(0); }
4252 if compile_prog
"" "" ; then
4256 ##########################################
4257 # Do we have libiscsi >= 1.9.0
4258 if test "$libiscsi" != "no" ; then
4259 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4261 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4262 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4264 if test "$libiscsi" = "yes" ; then
4265 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4271 ##########################################
4275 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4277 if compile_prog
"" "" ; then
4279 elif compile_prog
"" "-lm" ; then
4281 libs_qga
="-lm $libs_qga"
4283 error_exit
"libm check failed"
4286 ##########################################
4288 # uClibc provides 2 versions of clock_gettime(), one with realtime
4289 # support and one without. This means that the clock_gettime() don't
4290 # need -lrt. We still need it for timer_create() so we check for this
4291 # function in addition.
4296 timer_create(CLOCK_REALTIME, NULL, NULL);
4297 return clock_gettime(CLOCK_REALTIME, NULL);
4301 if compile_prog
"" "" ; then
4303 # we need pthread for static linking. use previous pthread test result
4304 elif compile_prog
"" "$pthread_lib -lrt" ; then
4306 libs_qga
="$libs_qga -lrt"
4309 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4310 "$haiku" != "yes" ; then
4311 libs_softmmu
="-lutil $libs_softmmu"
4314 ##########################################
4316 if test "$spice" != "no" ; then
4319 int main(void) { spice_server_new(); return 0; }
4321 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4322 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4323 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4324 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4325 compile_prog
"$spice_cflags" "$spice_libs" ; then
4327 libs_softmmu
="$libs_softmmu $spice_libs"
4328 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4329 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4330 spice_server_version
=$
($pkg_config --modversion spice-server
)
4332 if test "$spice" = "yes" ; then
4333 feature_not_found
"spice" \
4334 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4340 # check for smartcard support
4341 if test "$smartcard" != "no"; then
4342 if $pkg_config libcacard
; then
4343 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4344 libcacard_libs
=$
($pkg_config --libs libcacard
)
4347 if test "$smartcard" = "yes"; then
4348 feature_not_found
"smartcard" "Install libcacard devel"
4355 if test "$libusb" != "no" ; then
4356 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4358 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4359 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4361 if test "$libusb" = "yes"; then
4362 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4368 # check for usbredirparser for usb network redirection support
4369 if test "$usb_redir" != "no" ; then
4370 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4372 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4373 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4375 if test "$usb_redir" = "yes"; then
4376 feature_not_found
"usb-redir" "Install usbredir devel"
4382 ##########################################
4383 # check if we have VSS SDK headers for win
4385 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4386 case "$vss_win32_sdk" in
4387 "") vss_win32_include
="-isystem $source_path" ;;
4388 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4389 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4390 vss_win32_include
="-isystem $source_path/.sdk/vss"
4391 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4393 *) vss_win32_include
="-isystem $vss_win32_sdk"
4396 #define __MIDL_user_allocate_free_DEFINED__
4397 #include <inc/win2003/vss.h>
4398 int main(void) { return VSS_CTX_BACKUP; }
4400 if compile_prog
"$vss_win32_include" "" ; then
4401 guest_agent_with_vss
="yes"
4402 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4403 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4404 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4406 if test "$vss_win32_sdk" != "" ; then
4407 echo "ERROR: Please download and install Microsoft VSS SDK:"
4408 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4409 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4410 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4411 echo "ERROR: The headers are extracted in the directory \`inc'."
4412 feature_not_found
"VSS support"
4414 guest_agent_with_vss
="no"
4418 ##########################################
4419 # lookup Windows platform SDK (if not specified)
4420 # The SDK is needed only to build .tlb (type library) file of guest agent
4421 # VSS provider from the source. It is usually unnecessary because the
4422 # pre-compiled .tlb file is included.
4424 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4425 if test -z "$win_sdk"; then
4426 programfiles
="$PROGRAMFILES"
4427 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4428 if test -n "$programfiles"; then
4429 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4431 feature_not_found
"Windows SDK"
4433 elif test "$win_sdk" = "no"; then
4438 ##########################################
4439 # check if mingw environment provides a recent ntddscsi.h
4440 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4442 #include <windows.h>
4443 #include <ntddscsi.h>
4445 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4446 #error Missing required ioctl definitions
4448 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4452 if compile_prog
"" "" ; then
4453 guest_agent_ntddscsi
=yes
4454 libs_qga
="-lsetupapi $libs_qga"
4458 ##########################################
4459 # virgl renderer probe
4461 if test "$virglrenderer" != "no" ; then
4463 #include <virglrenderer.h>
4464 int main(void) { virgl_renderer_poll(); return 0; }
4466 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4467 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4468 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4469 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4472 if test "$virglrenderer" = "yes" ; then
4473 feature_not_found
"virglrenderer"
4479 ##########################################
4484 if $pkg_config capstone
; then
4486 elif test -e "${source_path}/.git" ; then
4488 elif test -e "${source_path}/capstone/Makefile" ; then
4490 elif test -z "$capstone" ; then
4493 feature_not_found
"capstone" "Install capstone devel or git submodule"
4498 if ! $pkg_config capstone
; then
4499 feature_not_found
"capstone" "Install capstone devel"
4506 if test "$capstone" = git
; then
4507 git_submodules
="${git_submodules} capstone"
4510 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4511 if test "$mingw32" = "yes"; then
4512 LIBCAPSTONE
=capstone.lib
4514 LIBCAPSTONE
=libcapstone.a
4516 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4520 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4521 LIBS
="$($pkg_config --libs capstone) $LIBS"
4527 error_exit
"Unknown state for capstone: $capstone"
4531 ##########################################
4532 # check if we have fdatasync
4538 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4539 return fdatasync(0);
4541 #error Not supported
4545 if compile_prog
"" "" ; then
4549 ##########################################
4550 # check if we have madvise
4554 #include <sys/types.h>
4555 #include <sys/mman.h>
4557 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4559 if compile_prog
"" "" ; then
4563 ##########################################
4564 # check if we have posix_madvise
4568 #include <sys/mman.h>
4570 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4572 if compile_prog
"" "" ; then
4576 ##########################################
4577 # check if we have posix_syslog
4582 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4584 if compile_prog
"" "" ; then
4588 ##########################################
4589 # check if we have sem_timedwait
4593 #include <semaphore.h>
4594 int main(void) { return sem_timedwait(0, 0); }
4596 if compile_prog
"" "" ; then
4600 ##########################################
4601 # check if trace backend exists
4603 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4604 if test "$?" -ne 0 ; then
4605 error_exit
"invalid trace backends" \
4606 "Please choose supported trace backends."
4609 ##########################################
4610 # For 'ust' backend, test if ust headers are present
4611 if have_backend
"ust"; then
4613 #include <lttng/tracepoint.h>
4614 int main(void) { return 0; }
4616 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4617 if $pkg_config lttng-ust
--exists; then
4618 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4620 lttng_ust_libs
="-llttng-ust -ldl"
4622 if $pkg_config liburcu-bp
--exists; then
4623 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4625 urcu_bp_libs
="-lurcu-bp"
4628 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4629 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4631 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4635 ##########################################
4636 # For 'dtrace' backend, test if 'dtrace' command is present
4637 if have_backend
"dtrace"; then
4638 if ! has
'dtrace' ; then
4639 error_exit
"dtrace command is not found in PATH $PATH"
4641 trace_backend_stap
="no"
4642 if has
'stap' ; then
4643 trace_backend_stap
="yes"
4647 ##########################################
4648 # check and set a backend for coroutine
4650 # We prefer ucontext, but it's not always possible. The fallback
4651 # is sigcontext. On Windows the only valid backend is the Windows
4655 if test "$darwin" != "yes"; then
4657 #include <ucontext.h>
4658 #ifdef __stub_makecontext
4659 #error Ignoring glibc stub makecontext which will always fail
4661 int main(void) { makecontext(0, 0, 0); return 0; }
4663 if compile_prog
"" "" ; then
4668 if test "$coroutine" = ""; then
4669 if test "$mingw32" = "yes"; then
4671 elif test "$ucontext_works" = "yes"; then
4674 coroutine
=sigaltstack
4679 if test "$mingw32" != "yes"; then
4680 error_exit
"'windows' coroutine backend only valid for Windows"
4682 # Unfortunately the user visible backend name doesn't match the
4683 # coroutine-*.c filename for this case, so we have to adjust it here.
4687 if test "$ucontext_works" != "yes"; then
4688 feature_not_found
"ucontext"
4692 if test "$mingw32" = "yes"; then
4693 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4697 error_exit
"unknown coroutine backend $coroutine"
4702 if test "$coroutine_pool" = ""; then
4706 if test "$debug_stack_usage" = "yes"; then
4707 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4708 error_exit
"stack usage debugging is not supported for $cpu"
4710 if test "$coroutine_pool" = "yes"; then
4711 echo "WARN: disabling coroutine pool for stack usage debugging"
4717 ##########################################
4718 # check if we have open_by_handle_at
4720 open_by_handle_at
=no
4723 #if !defined(AT_EMPTY_PATH)
4724 # error missing definition
4726 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4729 if compile_prog
"" "" ; then
4730 open_by_handle_at
=yes
4733 ########################################
4734 # check if we have linux/magic.h
4738 #include <linux/magic.h>
4743 if compile_prog
"" "" ; then
4747 ########################################
4748 # check whether we can disable warning option with a pragma (this is needed
4749 # to silence warnings in the headers of some versions of external libraries).
4750 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4753 # If we can't selectively disable warning in the code, disable -Werror so that
4754 # the build doesn't fail anyway.
4756 pragma_disable_unused_but_set
=no
4758 #pragma GCC diagnostic push
4759 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4760 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4761 #pragma GCC diagnostic pop
4767 if compile_prog
"-Werror" "" ; then
4768 pragma_diagnostic_available
=yes
4773 ########################################
4774 # check if we have valgrind/valgrind.h
4778 #include <valgrind/valgrind.h>
4783 if compile_prog
"" "" ; then
4787 ########################################
4788 # check if environ is declared
4798 if compile_prog
"" "" ; then
4802 ########################################
4803 # check if cpuid.h is usable.
4808 unsigned a, b, c, d;
4809 int max = __get_cpuid_max(0, 0);
4812 __cpuid(1, a, b, c, d);
4816 __cpuid_count(7, 0, a, b, c, d);
4822 if compile_prog
"" "" ; then
4826 ##########################################
4827 # avx2 optimization requirement check
4829 # There is no point enabling this if cpuid.h is not usable,
4830 # since we won't be able to select the new routines.
4832 if test $cpuid_h = yes; then
4834 #pragma GCC push_options
4835 #pragma GCC target("avx2")
4837 #include <immintrin.h>
4838 static int bar(void *a) {
4839 __m256i x = *(__m256i *)a;
4840 return _mm256_testz_si256(x, x);
4842 int main(int argc, char *argv[]) { return bar(argv[0]); }
4844 if compile_object
"" ; then
4849 ########################################
4850 # check if __[u]int128_t is usable.
4854 #if defined(__clang_major__) && defined(__clang_minor__)
4855 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4856 # error __int128_t does not work in CLANG before 3.2
4868 if compile_prog
"" "" ; then
4872 #########################################
4873 # See if 128-bit atomic operations are supported.
4876 if test "$int128" = "yes"; then
4880 unsigned __int128 x = 0, y = 0;
4881 y = __atomic_load_16(&x, 0);
4882 __atomic_store_16(&x, y, 0);
4883 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4887 if compile_prog
"" "" ; then
4892 #########################################
4893 # See if 64-bit atomic operations are supported.
4894 # Note that without __atomic builtins, we can only
4895 # assume atomic loads/stores max at pointer size.
4901 uint64_t x = 0, y = 0;
4902 #ifdef __ATOMIC_RELAXED
4903 y = __atomic_load_8(&x, 0);
4904 __atomic_store_8(&x, y, 0);
4905 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4906 __atomic_exchange_8(&x, y, 0);
4907 __atomic_fetch_add_8(&x, y, 0);
4909 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4910 __sync_lock_test_and_set(&x, y);
4911 __sync_val_compare_and_swap(&x, y, 0);
4912 __sync_fetch_and_add(&x, y);
4917 if compile_prog
"" "" ; then
4921 ########################################
4922 # check if getauxval is available.
4926 #include <sys/auxv.h>
4928 return getauxval(AT_HWCAP) == 0;
4931 if compile_prog
"" "" ; then
4935 ########################################
4936 # check if ccache is interfering with
4937 # semantic analysis of macros
4942 static const int Z = 1;
4943 #define fn() ({ Z; })
4944 #define TAUT(X) ((X) == Z)
4945 #define PAREN(X, Y) (X == Y)
4947 int main(int argc, char *argv[])
4953 if (PAREN(x, y)) return 0;
4954 if (TAUT(Z)) return 0;
4959 if ! compile_object
"-Werror"; then
4963 #################################################
4964 # clang does not support glibc + FORTIFY_SOURCE.
4966 if test "$fortify_source" != "no"; then
4967 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
4968 fortify_source
="no";
4969 elif test -n "$cxx" && has
$cxx &&
4970 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
4971 fortify_source
="no";
4973 fortify_source
="yes"
4977 ##########################################
4978 # check if struct fsxattr is available via linux/fs.h
4982 #include <linux/fs.h>
4988 if compile_prog
"" "" ; then
4992 ##########################################
4993 # check if rtnetlink.h exists and is useful
4996 #include <linux/rtnetlink.h>
4998 return IFLA_PROTO_DOWN;
5001 if compile_prog
"" "" ; then
5005 ##########################################
5006 # check for usable AF_VSOCK environment
5010 #include <sys/types.h>
5011 #include <sys/socket.h>
5012 #if !defined(AF_VSOCK)
5013 # error missing AF_VSOCK flag
5015 #include <linux/vm_sockets.h>
5018 struct sockaddr_vm svm;
5019 socklen_t len = sizeof(svm);
5020 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5021 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5022 if ((ret == -1) && (errno == ENOTCONN)) {
5028 if compile_prog
"" "" ; then
5032 ##########################################
5033 # check for usable AF_ALG environment
5037 #include <sys/types.h>
5038 #include <sys/socket.h>
5039 #include <linux/if_alg.h>
5042 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5046 if compile_prog
"" "" ; then
5049 if test "$crypto_afalg" = "yes"
5051 if test "$have_afalg" != "yes"
5053 error_exit
"AF_ALG requested but could not be detected"
5058 #################################################
5059 # Sparc implicitly links with --relax, which is
5060 # incompatible with -r, so --no-relax should be
5061 # given. It does no harm to give it on other
5064 # Note: the prototype is needed since QEMU_CFLAGS
5065 # contains -Wmissing-prototypes
5067 extern int foo(void);
5068 int foo(void) { return 0; }
5070 if ! compile_object
""; then
5071 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5073 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5074 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5079 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5080 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5083 ##########################################
5084 # check for sysmacros.h
5088 #include <sys/sysmacros.h>
5090 return makedev(0, 0);
5093 if compile_prog
"" "" ; then
5097 ##########################################
5098 # Veritas HyperScale block driver VxHS
5099 # Check if libvxhs is installed
5101 if test "$vxhs" != "no" ; then
5104 #include <qnio/qnio_api.h>
5106 void *vxhs_callback;
5109 iio_init(QNIO_VERSION, vxhs_callback);
5113 vxhs_libs
="-lvxhs -lssl"
5114 if compile_prog
"" "$vxhs_libs" ; then
5117 if test "$vxhs" = "yes" ; then
5118 feature_not_found
"vxhs block device" "Install libvxhs See github"
5124 ##########################################
5125 # check for _Static_assert()
5127 have_static_assert
=no
5129 _Static_assert(1, "success");
5134 if compile_prog
"" "" ; then
5135 have_static_assert
=yes
5138 ##########################################
5139 # check for utmpx.h, it is missing e.g. on OpenBSD
5144 struct utmpx user_info;
5149 if compile_prog
"" "" ; then
5153 ##########################################
5155 # After here, no more $cc or $ld runs
5157 if test "$gcov" = "yes" ; then
5158 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5159 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5160 elif test "$fortify_source" = "yes" ; then
5161 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5162 elif test "$debug" = "no"; then
5163 CFLAGS
="-O2 $CFLAGS"
5166 ##########################################
5168 if test "$libnfs" != "no" ; then
5169 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5171 libnfs_libs
=$
($pkg_config --libs libnfs
)
5173 if test "$libnfs" = "yes" ; then
5174 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5180 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5181 if test "$werror" = "yes"; then
5182 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5185 if test "$solaris" = "no" ; then
5186 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5187 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5191 # test if pod2man has --utf8 option
5192 if pod2man
--help |
grep -q utf8
; then
5193 POD2MAN
="pod2man --utf8"
5198 # Use ASLR, no-SEH and DEP if available
5199 if test "$mingw32" = "yes" ; then
5200 for flag
in --dynamicbase --no-seh --nxcompat; do
5201 if ld_has
$flag ; then
5202 LDFLAGS
="-Wl,$flag $LDFLAGS"
5207 qemu_confdir
=$sysconfdir$confsuffix
5208 qemu_moddir
=$libdir$confsuffix
5209 qemu_datadir
=$datadir$confsuffix
5210 qemu_localedir
="$datadir/locale"
5212 # We can only support ivshmem if we have eventfd
5213 if [ "$eventfd" = "yes" ]; then
5218 if test "$want_tools" = "yes" ; then
5219 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
5220 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5221 tools
="qemu-nbd\$(EXESUF) $tools"
5223 if [ "$ivshmem" = "yes" ]; then
5224 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5227 if test "$softmmu" = yes ; then
5228 if test "$linux" = yes; then
5229 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5231 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5233 if test "$virtfs" = yes; then
5234 error_exit
"VirtFS requires libcap devel and libattr devel"
5238 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
5241 if test "$mpath" = yes; then
5242 error_exit
"Multipath requires libmpathpersist devel"
5246 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
5248 if test "$virtfs" = yes; then
5249 error_exit
"VirtFS is supported only on Linux"
5252 if test "$mpath" = yes; then
5253 error_exit
"Multipath is supported only on Linux"
5257 if test "$xkbcommon" = "yes"; then
5258 tools
="qemu-keymap\$(EXESUF) $tools"
5262 # Probe for guest agent support/options
5264 if [ "$guest_agent" != "no" ]; then
5265 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5266 tools
="qemu-ga $tools"
5268 elif [ "$guest_agent" != yes ]; then
5271 error_exit
"Guest agent is not supported on this platform"
5275 # Guest agent Window MSI package
5277 if test "$guest_agent" != yes; then
5278 if test "$guest_agent_msi" = yes; then
5279 error_exit
"MSI guest agent package requires guest agent enabled"
5282 elif test "$mingw32" != "yes"; then
5283 if test "$guest_agent_msi" = "yes"; then
5284 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5287 elif ! has wixl
; then
5288 if test "$guest_agent_msi" = "yes"; then
5289 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5293 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5294 # disabled explicitly
5295 if test "$guest_agent_msi" != "no"; then
5300 if test "$guest_agent_msi" = "yes"; then
5301 if test "$guest_agent_with_vss" = "yes"; then
5302 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5305 if test "$QEMU_GA_MANUFACTURER" = ""; then
5306 QEMU_GA_MANUFACTURER
=QEMU
5309 if test "$QEMU_GA_DISTRO" = ""; then
5310 QEMU_GA_DISTRO
=Linux
5313 if test "$QEMU_GA_VERSION" = ""; then
5314 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5317 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5321 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5324 QEMU_GA_MSI_ARCH
="-D Arch=32"
5327 error_exit
"CPU $cpu not supported for building installation package"
5332 # Mac OS X ships with a broken assembler
5334 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5335 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5336 "$softmmu" = yes ; then
5337 # Different host OS linkers have different ideas about the name of the ELF
5338 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5339 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5340 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
5341 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5342 ld_i386_emulation
="$emu"
5348 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5349 roms
="$roms spapr-rtas"
5352 if test "$cpu" = "s390x" ; then
5353 roms
="$roms s390-ccw"
5356 # Probe for the need for relocating the user-only binary.
5357 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5360 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5361 # ??? Rationale for choosing this address
5362 textseg_addr
=0x60000000
5365 # A 256M aligned address, high in the address space, with enough
5366 # room for the code_gen_buffer above it before the stack.
5367 textseg_addr
=0x60000000
5370 if [ -n "$textseg_addr" ]; then
5372 int main(void) { return 0; }
5374 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5375 if ! compile_prog
"" "$textseg_ldflags"; then
5376 # In case ld does not support -Ttext-segment, edit the default linker
5377 # script via sed to set the .text start addr. This is needed on FreeBSD
5379 if ! $ld --verbose >/dev
/null
2>&1; then
5381 "We need to link the QEMU user mode binaries at a" \
5382 "specific text address. Unfortunately your linker" \
5383 "doesn't support either the -Ttext-segment option or" \
5384 "printing the default linker script with --verbose." \
5385 "If you don't want the user mode binaries, pass the" \
5386 "--disable-user option to configure."
5389 $ld --verbose |
sed \
5390 -e '1,/==================================================/d' \
5391 -e '/==================================================/,$d' \
5392 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5393 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5394 textseg_ldflags
="-Wl,-T../config-host.ld"
5399 # Check that the C++ compiler exists and works with the C compiler.
5400 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5403 int c_function(void);
5404 int main(void) { return c_function(); }
5411 int c_function(void);
5413 int c_function(void) { return 42; }
5418 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5419 # C++ compiler $cxx works ok with C compiler $cc
5422 echo "C++ compiler $cxx does not work with C compiler $cc"
5423 echo "Disabling C++ specific optional code"
5427 echo "No C++ compiler available; disabling C++ specific optional code"
5432 if test "$1" = "yes" ; then
5437 # prepend pixman and ftd flags after all config tests are done
5438 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5439 libs_softmmu
="$pixman_libs $libs_softmmu"
5441 echo "Install prefix $prefix"
5442 echo "BIOS directory $(eval echo $qemu_datadir)"
5443 echo "firmware path $(eval echo $firmwarepath)"
5444 echo "binary directory $(eval echo $bindir)"
5445 echo "library directory $(eval echo $libdir)"
5446 echo "module directory $(eval echo $qemu_moddir)"
5447 echo "libexec directory $(eval echo $libexecdir)"
5448 echo "include directory $(eval echo $includedir)"
5449 echo "config directory $(eval echo $sysconfdir)"
5450 if test "$mingw32" = "no" ; then
5451 echo "local state directory $(eval echo $local_statedir)"
5452 echo "Manual directory $(eval echo $mandir)"
5453 echo "ELF interp prefix $interp_prefix"
5455 echo "local state directory queried at runtime"
5456 echo "Windows SDK $win_sdk"
5458 echo "Source path $source_path"
5459 echo "GIT binary $git"
5460 echo "GIT submodules $git_submodules"
5461 echo "C compiler $cc"
5462 echo "Host C compiler $host_cc"
5463 echo "C++ compiler $cxx"
5464 echo "Objective-C compiler $objcc"
5465 echo "ARFLAGS $ARFLAGS"
5466 echo "CFLAGS $CFLAGS"
5467 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5468 echo "LDFLAGS $LDFLAGS"
5470 echo "install $install"
5471 echo "python $python"
5472 if test "$slirp" = "yes" ; then
5475 echo "module support $modules"
5476 echo "host CPU $cpu"
5477 echo "host big endian $bigendian"
5478 echo "target list $target_list"
5479 echo "gprof enabled $gprof"
5480 echo "sparse enabled $sparse"
5481 echo "strip binaries $strip_opt"
5482 echo "profiler $profiler"
5483 echo "static build $static"
5484 if test "$darwin" = "yes" ; then
5485 echo "Cocoa support $cocoa"
5487 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5488 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5489 echo "GTK GL support $gtk_gl"
5490 echo "VTE support $vte $(echo_version $vte $vteversion)"
5491 echo "TLS priority $tls_priority"
5492 echo "GNUTLS support $gnutls"
5493 echo "GNUTLS rnd $gnutls_rnd"
5494 echo "libgcrypt $gcrypt"
5495 echo "libgcrypt kdf $gcrypt_kdf"
5496 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5497 echo "nettle kdf $nettle_kdf"
5498 echo "libtasn1 $tasn1"
5499 echo "curses support $curses"
5500 echo "virgl support $virglrenderer"
5501 echo "curl support $curl"
5502 echo "mingw32 support $mingw32"
5503 echo "Audio drivers $audio_drv_list"
5504 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5505 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5506 echo "VirtFS support $virtfs"
5507 echo "Multipath support $mpath"
5508 echo "VNC support $vnc"
5509 if test "$vnc" = "yes" ; then
5510 echo "VNC SASL support $vnc_sasl"
5511 echo "VNC JPEG support $vnc_jpeg"
5512 echo "VNC PNG support $vnc_png"
5514 if test -n "$sparc_cpu"; then
5515 echo "Target Sparc Arch $sparc_cpu"
5517 echo "xen support $xen"
5518 if test "$xen" = "yes" ; then
5519 echo "xen ctrl version $xen_ctrl_version"
5520 echo "pv dom build $xen_pv_domain_build"
5522 echo "brlapi support $brlapi"
5523 echo "bluez support $bluez"
5524 echo "Documentation $docs"
5526 echo "vde support $vde"
5527 echo "netmap support $netmap"
5528 echo "Linux AIO support $linux_aio"
5529 echo "ATTR/XATTR support $attr"
5530 echo "Install blobs $blobs"
5531 echo "KVM support $kvm"
5532 echo "HAX support $hax"
5533 echo "TCG support $tcg"
5534 if test "$tcg" = "yes" ; then
5535 echo "TCG debug enabled $debug_tcg"
5536 echo "TCG interpreter $tcg_interpreter"
5538 echo "malloc trim support $malloc_trim"
5539 echo "RDMA support $rdma"
5540 echo "fdt support $fdt"
5541 echo "preadv support $preadv"
5542 echo "fdatasync $fdatasync"
5543 echo "madvise $madvise"
5544 echo "posix_madvise $posix_madvise"
5545 echo "libcap-ng support $cap_ng"
5546 echo "vhost-net support $vhost_net"
5547 echo "vhost-scsi support $vhost_scsi"
5548 echo "vhost-vsock support $vhost_vsock"
5549 echo "vhost-user support $vhost_user"
5550 echo "Trace backends $trace_backends"
5551 if have_backend
"simple"; then
5552 echo "Trace output file $trace_file-<pid>"
5554 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5555 echo "rbd support $rbd"
5556 echo "xfsctl support $xfs"
5557 echo "smartcard support $smartcard"
5558 echo "libusb $libusb"
5559 echo "usb net redir $usb_redir"
5560 echo "OpenGL support $opengl"
5561 echo "OpenGL dmabufs $opengl_dmabuf"
5562 echo "libiscsi support $libiscsi"
5563 echo "libnfs support $libnfs"
5564 echo "build guest agent $guest_agent"
5565 echo "QGA VSS support $guest_agent_with_vss"
5566 echo "QGA w32 disk info $guest_agent_ntddscsi"
5567 echo "QGA MSI support $guest_agent_msi"
5568 echo "seccomp support $seccomp"
5569 echo "coroutine backend $coroutine"
5570 echo "coroutine pool $coroutine_pool"
5571 echo "debug stack usage $debug_stack_usage"
5572 echo "crypto afalg $crypto_afalg"
5573 echo "GlusterFS support $glusterfs"
5574 echo "gcov $gcov_tool"
5575 echo "gcov enabled $gcov"
5576 echo "TPM support $tpm"
5577 echo "libssh2 support $libssh2"
5578 echo "TPM passthrough $tpm_passthrough"
5579 echo "TPM emulator $tpm_emulator"
5580 echo "QOM debugging $qom_cast_debug"
5581 echo "Live block migration $live_block_migration"
5582 echo "lzo support $lzo"
5583 echo "snappy support $snappy"
5584 echo "bzip2 support $bzip2"
5585 echo "NUMA host support $numa"
5586 echo "tcmalloc support $tcmalloc"
5587 echo "jemalloc support $jemalloc"
5588 echo "avx2 optimization $avx2_opt"
5589 echo "replication support $replication"
5590 echo "VxHS block device $vxhs"
5591 echo "capstone $capstone"
5593 if test "$sdl_too_old" = "yes"; then
5594 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5597 if test "$supported_cpu" = "no"; then
5599 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5601 echo "CPU host architecture $cpu support is not currently maintained."
5602 echo "The QEMU project intends to remove support for this host CPU in"
5603 echo "a future release if nobody volunteers to maintain it and to"
5604 echo "provide a build host for our continuous integration setup."
5605 echo "configure has succeeded and you can continue to build, but"
5606 echo "if you care about QEMU on this platform you should contact"
5607 echo "us upstream at qemu-devel@nongnu.org."
5610 if test "$supported_os" = "no"; then
5612 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5614 echo "Host OS $targetos support is not currently maintained."
5615 echo "The QEMU project intends to remove support for this host OS in"
5616 echo "a future release if nobody volunteers to maintain it and to"
5617 echo "provide a build host for our continuous integration setup."
5618 echo "configure has succeeded and you can continue to build, but"
5619 echo "if you care about QEMU on this platform you should contact"
5620 echo "us upstream at qemu-devel@nongnu.org."
5623 config_host_mak
="config-host.mak"
5625 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5627 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5628 echo >> $config_host_mak
5630 echo all
: >> $config_host_mak
5631 echo "prefix=$prefix" >> $config_host_mak
5632 echo "bindir=$bindir" >> $config_host_mak
5633 echo "libdir=$libdir" >> $config_host_mak
5634 echo "libexecdir=$libexecdir" >> $config_host_mak
5635 echo "includedir=$includedir" >> $config_host_mak
5636 echo "mandir=$mandir" >> $config_host_mak
5637 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5638 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5639 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5640 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
5641 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5642 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5643 if test "$mingw32" = "no" ; then
5644 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5646 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5647 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5648 echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
5649 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5650 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5651 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5652 echo "GIT=$git" >> $config_host_mak
5653 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
5654 echo "GIT_UPDATE=$git_update" >> $config_host_mak
5656 echo "ARCH=$ARCH" >> $config_host_mak
5658 if test "$debug_tcg" = "yes" ; then
5659 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5661 if test "$strip_opt" = "yes" ; then
5662 echo "STRIP=${strip}" >> $config_host_mak
5664 if test "$bigendian" = "yes" ; then
5665 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5667 if test "$mingw32" = "yes" ; then
5668 echo "CONFIG_WIN32=y" >> $config_host_mak
5669 rc_version
=$
(cat $source_path/VERSION
)
5670 version_major
=${rc_version%%.*}
5671 rc_version
=${rc_version#*.}
5672 version_minor
=${rc_version%%.*}
5673 rc_version
=${rc_version#*.}
5674 version_subminor
=${rc_version%%.*}
5676 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5677 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5678 if test "$guest_agent_with_vss" = "yes" ; then
5679 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5680 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5681 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5683 if test "$guest_agent_ntddscsi" = "yes" ; then
5684 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5686 if test "$guest_agent_msi" = "yes"; then
5687 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5688 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5689 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5690 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5691 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5692 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5693 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5696 echo "CONFIG_POSIX=y" >> $config_host_mak
5699 if test "$linux" = "yes" ; then
5700 echo "CONFIG_LINUX=y" >> $config_host_mak
5703 if test "$darwin" = "yes" ; then
5704 echo "CONFIG_DARWIN=y" >> $config_host_mak
5707 if test "$solaris" = "yes" ; then
5708 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5710 if test "$haiku" = "yes" ; then
5711 echo "CONFIG_HAIKU=y" >> $config_host_mak
5713 if test "$static" = "yes" ; then
5714 echo "CONFIG_STATIC=y" >> $config_host_mak
5716 if test "$profiler" = "yes" ; then
5717 echo "CONFIG_PROFILER=y" >> $config_host_mak
5719 if test "$slirp" = "yes" ; then
5720 echo "CONFIG_SLIRP=y" >> $config_host_mak
5721 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5723 if test "$vde" = "yes" ; then
5724 echo "CONFIG_VDE=y" >> $config_host_mak
5725 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
5727 if test "$netmap" = "yes" ; then
5728 echo "CONFIG_NETMAP=y" >> $config_host_mak
5730 if test "$l2tpv3" = "yes" ; then
5731 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5733 if test "$cap_ng" = "yes" ; then
5734 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5736 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5737 for drv
in $audio_drv_list; do
5738 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5739 echo "$def=y" >> $config_host_mak
5741 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
5742 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
5743 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
5744 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
5745 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
5746 if test "$audio_pt_int" = "yes" ; then
5747 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5749 if test "$audio_win_int" = "yes" ; then
5750 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5752 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5753 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5754 if test "$vnc" = "yes" ; then
5755 echo "CONFIG_VNC=y" >> $config_host_mak
5757 if test "$vnc_sasl" = "yes" ; then
5758 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5760 if test "$vnc_jpeg" = "yes" ; then
5761 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5763 if test "$vnc_png" = "yes" ; then
5764 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5766 if test "$xkbcommon" = "yes" ; then
5767 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
5768 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
5770 if test "$fnmatch" = "yes" ; then
5771 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5773 if test "$xfs" = "yes" ; then
5774 echo "CONFIG_XFS=y" >> $config_host_mak
5776 qemu_version
=$
(head $source_path/VERSION
)
5777 echo "VERSION=$qemu_version" >>$config_host_mak
5778 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5779 echo "SRC_PATH=$source_path" >> $config_host_mak
5780 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5781 if [ "$docs" = "yes" ] ; then
5782 echo "BUILD_DOCS=yes" >> $config_host_mak
5784 if test "$modules" = "yes"; then
5785 # $shacmd can generate a hash started with digit, which the compiler doesn't
5786 # like as an symbol. So prefix it with an underscore
5787 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5788 echo "CONFIG_MODULES=y" >> $config_host_mak
5790 if test "$sdl" = "yes" ; then
5791 echo "CONFIG_SDL=y" >> $config_host_mak
5792 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5793 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5794 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
5796 if test "$cocoa" = "yes" ; then
5797 echo "CONFIG_COCOA=y" >> $config_host_mak
5799 if test "$curses" = "yes" ; then
5800 echo "CONFIG_CURSES=y" >> $config_host_mak
5802 if test "$pipe2" = "yes" ; then
5803 echo "CONFIG_PIPE2=y" >> $config_host_mak
5805 if test "$accept4" = "yes" ; then
5806 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5808 if test "$splice" = "yes" ; then
5809 echo "CONFIG_SPLICE=y" >> $config_host_mak
5811 if test "$eventfd" = "yes" ; then
5812 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5814 if test "$memfd" = "yes" ; then
5815 echo "CONFIG_MEMFD=y" >> $config_host_mak
5817 if test "$fallocate" = "yes" ; then
5818 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5820 if test "$fallocate_punch_hole" = "yes" ; then
5821 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5823 if test "$fallocate_zero_range" = "yes" ; then
5824 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5826 if test "$posix_fallocate" = "yes" ; then
5827 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5829 if test "$sync_file_range" = "yes" ; then
5830 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5832 if test "$fiemap" = "yes" ; then
5833 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5835 if test "$dup3" = "yes" ; then
5836 echo "CONFIG_DUP3=y" >> $config_host_mak
5838 if test "$ppoll" = "yes" ; then
5839 echo "CONFIG_PPOLL=y" >> $config_host_mak
5841 if test "$prctl_pr_set_timerslack" = "yes" ; then
5842 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5844 if test "$epoll" = "yes" ; then
5845 echo "CONFIG_EPOLL=y" >> $config_host_mak
5847 if test "$epoll_create1" = "yes" ; then
5848 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5850 if test "$sendfile" = "yes" ; then
5851 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5853 if test "$timerfd" = "yes" ; then
5854 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5856 if test "$setns" = "yes" ; then
5857 echo "CONFIG_SETNS=y" >> $config_host_mak
5859 if test "$clock_adjtime" = "yes" ; then
5860 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5862 if test "$syncfs" = "yes" ; then
5863 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5865 if test "$inotify" = "yes" ; then
5866 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5868 if test "$inotify1" = "yes" ; then
5869 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5871 if test "$sem_timedwait" = "yes" ; then
5872 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
5874 if test "$byteswap_h" = "yes" ; then
5875 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5877 if test "$bswap_h" = "yes" ; then
5878 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5880 if test "$curl" = "yes" ; then
5881 echo "CONFIG_CURL=m" >> $config_host_mak
5882 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5883 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5885 if test "$brlapi" = "yes" ; then
5886 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5887 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
5889 if test "$bluez" = "yes" ; then
5890 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5891 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5893 if test "$glib_subprocess" = "yes" ; then
5894 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5896 if test "$gtk" = "yes" ; then
5897 echo "CONFIG_GTK=y" >> $config_host_mak
5898 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5899 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5900 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5901 if test "$gtk_gl" = "yes" ; then
5902 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5905 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5906 if test "$gnutls" = "yes" ; then
5907 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5909 if test "$gnutls_rnd" = "yes" ; then
5910 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5912 if test "$gcrypt" = "yes" ; then
5913 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5914 if test "$gcrypt_hmac" = "yes" ; then
5915 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5917 if test "$gcrypt_kdf" = "yes" ; then
5918 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5921 if test "$nettle" = "yes" ; then
5922 echo "CONFIG_NETTLE=y" >> $config_host_mak
5923 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5924 if test "$nettle_kdf" = "yes" ; then
5925 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5928 if test "$tasn1" = "yes" ; then
5929 echo "CONFIG_TASN1=y" >> $config_host_mak
5931 if test "$have_ifaddrs_h" = "yes" ; then
5932 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5934 if test "$have_broken_size_max" = "yes" ; then
5935 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5938 # Work around a system header bug with some kernel/XFS header
5939 # versions where they both try to define 'struct fsxattr':
5940 # xfs headers will not try to redefine structs from linux headers
5941 # if this macro is set.
5942 if test "$have_fsxattr" = "yes" ; then
5943 echo "HAVE_FSXATTR=y" >> $config_host_mak
5945 if test "$vte" = "yes" ; then
5946 echo "CONFIG_VTE=y" >> $config_host_mak
5947 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5949 if test "$virglrenderer" = "yes" ; then
5950 echo "CONFIG_VIRGL=y" >> $config_host_mak
5951 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5952 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5954 if test "$xen" = "yes" ; then
5955 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5956 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5957 if test "$xen_pv_domain_build" = "yes" ; then
5958 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5961 if test "$linux_aio" = "yes" ; then
5962 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5964 if test "$attr" = "yes" ; then
5965 echo "CONFIG_ATTR=y" >> $config_host_mak
5967 if test "$libattr" = "yes" ; then
5968 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5970 if test "$virtfs" = "yes" ; then
5971 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5973 if test "$mpath" = "yes" ; then
5974 echo "CONFIG_MPATH=y" >> $config_host_mak
5976 if test "$vhost_scsi" = "yes" ; then
5977 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5979 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
5980 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5982 if test "$vhost_vsock" = "yes" ; then
5983 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5985 if test "$vhost_user" = "yes" ; then
5986 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
5988 if test "$blobs" = "yes" ; then
5989 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5991 if test "$iovec" = "yes" ; then
5992 echo "CONFIG_IOVEC=y" >> $config_host_mak
5994 if test "$preadv" = "yes" ; then
5995 echo "CONFIG_PREADV=y" >> $config_host_mak
5997 if test "$fdt" = "yes" ; then
5998 echo "CONFIG_FDT=y" >> $config_host_mak
6000 if test "$signalfd" = "yes" ; then
6001 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6003 if test "$tcg" = "yes"; then
6004 echo "CONFIG_TCG=y" >> $config_host_mak
6005 if test "$tcg_interpreter" = "yes" ; then
6006 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6009 if test "$fdatasync" = "yes" ; then
6010 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6012 if test "$madvise" = "yes" ; then
6013 echo "CONFIG_MADVISE=y" >> $config_host_mak
6015 if test "$posix_madvise" = "yes" ; then
6016 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6019 if test "$spice" = "yes" ; then
6020 echo "CONFIG_SPICE=y" >> $config_host_mak
6023 if test "$smartcard" = "yes" ; then
6024 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6025 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6026 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6029 if test "$libusb" = "yes" ; then
6030 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6031 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6032 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6035 if test "$usb_redir" = "yes" ; then
6036 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6037 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6038 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6041 if test "$opengl" = "yes" ; then
6042 echo "CONFIG_OPENGL=y" >> $config_host_mak
6043 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6044 if test "$opengl_dmabuf" = "yes" ; then
6045 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6049 if test "$malloc_trim" = "yes" ; then
6050 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6053 if test "$avx2_opt" = "yes" ; then
6054 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6057 if test "$lzo" = "yes" ; then
6058 echo "CONFIG_LZO=y" >> $config_host_mak
6061 if test "$snappy" = "yes" ; then
6062 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6065 if test "$bzip2" = "yes" ; then
6066 echo "CONFIG_BZIP2=y" >> $config_host_mak
6067 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6070 if test "$libiscsi" = "yes" ; then
6071 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6072 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6073 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6076 if test "$libnfs" = "yes" ; then
6077 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6078 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6081 if test "$seccomp" = "yes"; then
6082 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6083 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6084 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6087 # XXX: suppress that
6088 if [ "$bsd" = "yes" ] ; then
6089 echo "CONFIG_BSD=y" >> $config_host_mak
6092 if test "$localtime_r" = "yes" ; then
6093 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6095 if test "$qom_cast_debug" = "yes" ; then
6096 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6098 if test "$rbd" = "yes" ; then
6099 echo "CONFIG_RBD=m" >> $config_host_mak
6100 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6101 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6104 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6105 if test "$coroutine_pool" = "yes" ; then
6106 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6108 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6111 if test "$debug_stack_usage" = "yes" ; then
6112 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6115 if test "$crypto_afalg" = "yes" ; then
6116 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6119 if test "$open_by_handle_at" = "yes" ; then
6120 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6123 if test "$linux_magic_h" = "yes" ; then
6124 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6127 if test "$pragma_diagnostic_available" = "yes" ; then
6128 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6131 if test "$valgrind_h" = "yes" ; then
6132 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6135 if test "$has_environ" = "yes" ; then
6136 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6139 if test "$cpuid_h" = "yes" ; then
6140 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6143 if test "$int128" = "yes" ; then
6144 echo "CONFIG_INT128=y" >> $config_host_mak
6147 if test "$atomic128" = "yes" ; then
6148 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6151 if test "$atomic64" = "yes" ; then
6152 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6155 if test "$getauxval" = "yes" ; then
6156 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6159 if test "$glusterfs" = "yes" ; then
6160 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6161 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6162 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6165 if test "$glusterfs_xlator_opt" = "yes" ; then
6166 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6169 if test "$glusterfs_discard" = "yes" ; then
6170 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6173 if test "$glusterfs_fallocate" = "yes" ; then
6174 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6177 if test "$glusterfs_zerofill" = "yes" ; then
6178 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6181 if test "$libssh2" = "yes" ; then
6182 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6183 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6184 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6187 if test "$live_block_migration" = "yes" ; then
6188 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6191 if test "$tpm" = "yes"; then
6192 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6193 # TPM passthrough support?
6194 if test "$tpm_passthrough" = "yes"; then
6195 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6197 # TPM emulator support?
6198 if test "$tpm_emulator" = "yes"; then
6199 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6203 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6204 if have_backend
"nop"; then
6205 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6207 if have_backend
"simple"; then
6208 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6209 # Set the appropriate trace file.
6210 trace_file
="\"$trace_file-\" FMT_pid"
6212 if have_backend
"log"; then
6213 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6215 if have_backend
"ust"; then
6216 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6218 if have_backend
"dtrace"; then
6219 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6220 if test "$trace_backend_stap" = "yes" ; then
6221 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6224 if have_backend
"ftrace"; then
6225 if test "$linux" = "yes" ; then
6226 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6228 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6231 if have_backend
"syslog"; then
6232 if test "$posix_syslog" = "yes" ; then
6233 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6235 feature_not_found
"syslog(trace backend)" "syslog not available"
6238 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6240 if test "$rdma" = "yes" ; then
6241 echo "CONFIG_RDMA=y" >> $config_host_mak
6242 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6245 if test "$have_rtnetlink" = "yes" ; then
6246 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6249 if test "$replication" = "yes" ; then
6250 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6253 if test "$have_af_vsock" = "yes" ; then
6254 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6257 if test "$have_sysmacros" = "yes" ; then
6258 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6261 if test "$have_static_assert" = "yes" ; then
6262 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6265 if test "$have_utmpx" = "yes" ; then
6266 echo "HAVE_UTMPX=y" >> $config_host_mak
6269 if test "$ivshmem" = "yes" ; then
6270 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6272 if test "$capstone" != "no" ; then
6273 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6276 # Hold two types of flag:
6277 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6278 # a thread we have a handle to
6279 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6281 if test "$pthread_setname_np" = "yes" ; then
6282 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6283 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6286 if test "$vxhs" = "yes" ; then
6287 echo "CONFIG_VXHS=y" >> $config_host_mak
6288 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6291 if test "$tcg_interpreter" = "yes"; then
6292 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6293 elif test "$ARCH" = "sparc64" ; then
6294 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6295 elif test "$ARCH" = "s390x" ; then
6296 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6297 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6298 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6299 elif test "$ARCH" = "ppc64" ; then
6300 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6302 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6304 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6306 echo "TOOLS=$tools" >> $config_host_mak
6307 echo "ROMS=$roms" >> $config_host_mak
6308 echo "MAKE=$make" >> $config_host_mak
6309 echo "INSTALL=$install" >> $config_host_mak
6310 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6311 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6312 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6313 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6314 echo "PYTHON=$python" >> $config_host_mak
6315 echo "CC=$cc" >> $config_host_mak
6316 if $iasl -h > /dev
/null
2>&1; then
6317 echo "IASL=$iasl" >> $config_host_mak
6319 echo "CC_I386=$cc_i386" >> $config_host_mak
6320 echo "HOST_CC=$host_cc" >> $config_host_mak
6321 echo "CXX=$cxx" >> $config_host_mak
6322 echo "OBJCC=$objcc" >> $config_host_mak
6323 echo "AR=$ar" >> $config_host_mak
6324 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6325 echo "AS=$as" >> $config_host_mak
6326 echo "CCAS=$ccas" >> $config_host_mak
6327 echo "CPP=$cpp" >> $config_host_mak
6328 echo "OBJCOPY=$objcopy" >> $config_host_mak
6329 echo "LD=$ld" >> $config_host_mak
6330 echo "RANLIB=$ranlib" >> $config_host_mak
6331 echo "NM=$nm" >> $config_host_mak
6332 echo "WINDRES=$windres" >> $config_host_mak
6333 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6334 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6335 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6336 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6337 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6338 if test "$sparse" = "yes" ; then
6339 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6340 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6341 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6342 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6343 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6345 if test "$cross_prefix" != ""; then
6346 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6348 echo "AUTOCONF_HOST := " >> $config_host_mak
6350 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6351 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6352 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6353 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6354 echo "LIBS+=$LIBS" >> $config_host_mak
6355 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6356 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6357 echo "EXESUF=$EXESUF" >> $config_host_mak
6358 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6359 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6360 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6361 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6362 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6363 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6364 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6365 if test "$gcov" = "yes" ; then
6366 echo "CONFIG_GCOV=y" >> $config_host_mak
6367 echo "GCOV=$gcov_tool" >> $config_host_mak
6370 # use included Linux headers
6371 if test "$linux" = "yes" ; then
6372 mkdir
-p linux-headers
6390 # For most CPUs the kernel architecture name and QEMU CPU name match.
6394 # For non-KVM architectures we will not have asm headers
6395 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6396 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
6400 for target
in $target_list; do
6401 target_dir
="$target"
6402 config_target_mak
=$target_dir/config-target.mak
6403 target_name
=$
(echo $target | cut
-d '-' -f 1)
6404 target_bigendian
="no"
6406 case "$target_name" in
6407 armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
6408 target_bigendian
=yes
6412 target_user_only
="no"
6413 target_linux_user
="no"
6414 target_bsd_user
="no"
6416 ${target_name}-softmmu)
6417 target_softmmu
="yes"
6419 ${target_name}-linux-user)
6420 target_user_only
="yes"
6421 target_linux_user
="yes"
6423 ${target_name}-bsd-user)
6424 target_user_only
="yes"
6425 target_bsd_user
="yes"
6428 error_exit
"Target '$target' not recognised"
6433 mkdir
-p $target_dir
6434 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6438 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
6441 TARGET_ARCH
="$target_name"
6445 case "$target_name" in
6447 gdb_xml_files
="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
6450 TARGET_BASE_ARCH
=i386
6451 gdb_xml_files
="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
6460 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6463 TARGET_BASE_ARCH
=arm
6466 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6476 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
6478 microblaze|microblazeel
)
6479 TARGET_ARCH
=microblaze
6484 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6488 TARGET_BASE_ARCH
=mips
6489 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6490 echo "TARGET_ABI32=y" >> $config_target_mak
6494 TARGET_BASE_ARCH
=mips
6495 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6502 TARGET_ARCH
=openrisc
6503 TARGET_BASE_ARCH
=openrisc
6506 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6509 TARGET_BASE_ARCH
=ppc
6511 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6514 TARGET_BASE_ARCH
=ppc
6517 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6521 TARGET_BASE_ARCH
=ppc
6524 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6528 TARGET_BASE_ARCH
=ppc
6530 echo "TARGET_ABI32=y" >> $config_target_mak
6531 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6540 TARGET_BASE_ARCH
=sparc
6544 TARGET_BASE_ARCH
=sparc
6545 TARGET_ABI_DIR
=sparc
6546 echo "TARGET_ABI32=y" >> $config_target_mak
6549 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
6561 error_exit
"Unsupported target CPU"
6564 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6565 if [ "$TARGET_BASE_ARCH" = "" ]; then
6566 TARGET_BASE_ARCH
=$TARGET_ARCH
6569 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
6572 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
6575 target_arch_name
="$(upper $TARGET_ARCH)"
6576 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6577 echo "TARGET_NAME=$target_name" >> $config_target_mak
6578 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6579 if [ "$TARGET_ABI_DIR" = "" ]; then
6580 TARGET_ABI_DIR
=$TARGET_ARCH
6582 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6583 if [ "$HOST_VARIANT_DIR" != "" ]; then
6584 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6587 if supported_xen_target
$target; then
6588 echo "CONFIG_XEN=y" >> $config_target_mak
6589 if test "$xen_pci_passthrough" = yes; then
6590 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6593 if supported_kvm_target
$target; then
6594 echo "CONFIG_KVM=y" >> $config_target_mak
6595 if test "$vhost_net" = "yes" ; then
6596 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6597 if test "$vhost_user" = "yes" ; then
6598 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6602 if supported_hax_target
$target; then
6603 echo "CONFIG_HAX=y" >> $config_target_mak
6605 if test "$target_bigendian" = "yes" ; then
6606 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6608 if test "$target_softmmu" = "yes" ; then
6609 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6610 if test "$mttcg" = "yes" ; then
6611 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6614 if test "$target_user_only" = "yes" ; then
6615 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6616 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6618 if test "$target_linux_user" = "yes" ; then
6619 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6622 if test ! -z "$gdb_xml_files" ; then
6623 for x
in $gdb_xml_files; do
6624 list
="$list $source_path/gdb-xml/$x"
6626 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6629 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6630 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6632 if test "$target_bsd_user" = "yes" ; then
6633 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6636 # generate QEMU_CFLAGS/LDFLAGS for targets
6642 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6643 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6646 for i
in $ARCH $TARGET_BASE_ARCH ; do
6649 disas_config
"ALPHA"
6652 if test -n "${cxx}"; then
6653 disas_config
"ARM_A64"
6658 if test -n "${cxx}"; then
6659 disas_config
"ARM_A64"
6678 disas_config
"MICROBLAZE"
6684 disas_config
"MOXIE"
6687 disas_config
"NIOS2"
6690 disas_config
"OPENRISC"
6702 disas_config
"SPARC"
6705 disas_config
"XTENSA"
6709 if test "$tcg_interpreter" = "yes" ; then
6715 # Ensure there's only a single GP
6716 cflags
="-msmall-data $cflags"
6720 if test "$gprof" = "yes" ; then
6721 echo "TARGET_GPROF=yes" >> $config_target_mak
6722 if test "$target_linux_user" = "yes" ; then
6724 ldflags
="-p $ldflags"
6726 if test "$target_softmmu" = "yes" ; then
6727 ldflags
="-p $ldflags"
6728 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6732 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6733 ldflags
="$ldflags $textseg_ldflags"
6736 # Newer kernels on s390 check for an S390_PGSTE program header and
6737 # enable the pgste page table extensions in that case. This makes
6738 # the vm.allocate_pgste sysctl unnecessary. We enable this program
6740 # - we build on s390x
6741 # - we build the system emulation for s390x (qemu-system-s390x)
6743 # - the linker supports --s390-pgste
6744 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
6745 if ld_has
--s390-pgste ; then
6746 ldflags
="-Wl,--s390-pgste $ldflags"
6750 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6751 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6753 done # for target in $targets
6755 if [ "$dtc_internal" = "yes" ]; then
6756 echo "config-host.h: subdir-dtc" >> $config_host_mak
6758 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
6759 echo "config-host.h: subdir-capstone" >> $config_host_mak
6761 if test -n "$LIBCAPSTONE"; then
6762 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
6765 if test "$numa" = "yes"; then
6766 echo "CONFIG_NUMA=y" >> $config_host_mak
6769 if test "$ccache_cpp2" = "yes"; then
6770 echo "export CCACHE_CPP2=y" >> $config_host_mak
6773 # build tree in object directory in case the source is not in the current directory
6774 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
6775 DIRS
="$DIRS docs docs/interop fsdev scsi"
6776 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6777 DIRS
="$DIRS roms/seabios roms/vgabios"
6778 DIRS
="$DIRS qapi-generated"
6779 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6780 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6781 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6782 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6783 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6784 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6785 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6786 FILES
="$FILES pc-bios/qemu-icon.bmp"
6787 FILES
="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
6789 $source_path/pc-bios
/*.bin \
6790 $source_path/pc-bios
/*.lid \
6791 $source_path/pc-bios
/*.aml \
6792 $source_path/pc-bios
/*.rom \
6793 $source_path/pc-bios
/*.dtb \
6794 $source_path/pc-bios
/*.img \
6795 $source_path/pc-bios
/openbios-
* \
6796 $source_path/pc-bios
/u-boot.
* \
6797 $source_path/pc-bios
/palcode-
*
6799 FILES
="$FILES pc-bios/$(basename $bios_file)"
6801 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6803 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6806 for f
in $FILES ; do
6807 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6808 symlink
"$source_path/$f" "$f"
6812 # temporary config to build submodules
6813 for rom
in seabios vgabios
; do
6814 config_mak
=roms
/$rom/config.mak
6815 echo "# Automatically generated by configure - do not modify" > $config_mak
6816 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6817 echo "AS=$as" >> $config_mak
6818 echo "CCAS=$ccas" >> $config_mak
6819 echo "CC=$cc" >> $config_mak
6820 echo "BCC=bcc" >> $config_mak
6821 echo "CPP=$cpp" >> $config_mak
6822 echo "OBJCOPY=objcopy" >> $config_mak
6823 echo "IASL=$iasl" >> $config_mak
6824 echo "LD=$ld" >> $config_mak
6825 echo "RANLIB=$ranlib" >> $config_mak
6828 # set up tests data directory
6829 if [ ! -e tests
/data
]; then
6830 symlink
"$source_path/tests/data" tests
/data
6833 # set up qemu-iotests in this build directory
6834 iotests_common_env
="tests/qemu-iotests/common.env"
6835 iotests_check
="tests/qemu-iotests/check"
6837 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6838 echo >> "$iotests_common_env"
6839 echo "export PYTHON='$python'" >> "$iotests_common_env"
6841 if [ ! -e "$iotests_check" ]; then
6842 symlink
"$source_path/$iotests_check" "$iotests_check"
6845 # Save the configure command line for later reuse.
6846 cat <<EOD >config.status
6848 # Generated by configure.
6849 # Run this file to recreate the current configuration.
6850 # Compiler output produced by configure, useful for debugging
6851 # configure, is in config.log if it exists.
6853 printf "exec" >>config.status
6854 printf " '%s'" "$0" "$@" >>config.status
6855 echo ' "$@"' >>config.status
6856 chmod +x config.status