3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE
= GREP_OPTIONS
=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE
=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC
="${TMPDIR1}/${TMPB}.c"
29 TMPO
="${TMPDIR1}/${TMPB}.o"
30 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
31 TMPE
="${TMPDIR1}/${TMPB}.exe"
32 TMPMO
="${TMPDIR1}/${TMPB}.mo"
36 # Print a helpful header at the top of config.log
37 echo "# QEMU configure log $(date)" >> config.log
38 printf "# Configured with:" >> config.log
39 printf " '%s'" "$0" "$@" >> config.log
41 echo "#" >> config.log
46 while test -n "$2"; do
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
63 if test -n "$BASH_VERSION"; then eval '
66 lines: ${BASH_LINENO[*]}"
68 echo $compiler "$@" >> config.log
69 $compiler "$@" >> config.log
2>&1 ||
return $?
70 # Test passed. If this is an --enable-werror build, rerun
71 # the test with -Werror and bail out if it fails. This
72 # makes warning-generating-errors in configure test code
73 # obvious to developers.
74 if test "$werror" != "yes"; then
77 # Don't bother rerunning the compile if we were already using -Werror
83 echo $compiler -Werror "$@" >> config.log
84 $compiler -Werror "$@" >> config.log
2>&1 && return $?
85 error_exit
"configure test passed without -Werror but failed with -Werror." \
86 "This is probably a bug in the configure script. The failing command" \
87 "will be at the bottom of config.log." \
88 "You can run configure with --disable-werror to bypass this check."
92 do_compiler
"$cc" "$@"
96 do_compiler
"$cxx" "$@"
100 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
101 # options which some versions of GCC's C++ compiler complain about
102 # because they only make sense for C programs.
103 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
105 for arg
in $QEMU_CFLAGS; do
107 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
108 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
111 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
119 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
125 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
128 # symbolically link $1 to $2. Portable version of "ln -sf".
131 mkdir
-p "$(dirname "$2")"
135 # check whether a command is available to this shell (may be either an
136 # executable or a builtin)
138 type "$1" >/dev
/null
2>&1
141 # search for an executable in PATH
147 # pathname has a dir component?
148 if [ "${local_command#*/}" != "$local_command" ]; then
149 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
150 echo "$local_command"
154 if [ -z "$local_command" ]; then
159 for local_dir
in $PATH; do
160 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
161 echo "$local_dir/$local_command"
162 IFS
="${local_ifs:-$(printf ' \t\n')}"
167 IFS
="${local_ifs:-$(printf ' \t\n')}"
172 echo "$trace_backends" |
grep "$1" >/dev
/null
176 eval test -z '"${1#'"$2"'}"'
179 supported_hax_target
() {
180 test "$hax" = "yes" ||
return 1
181 glob
"$1" "*-softmmu" ||
return 1
182 case "${1%-softmmu}" in
190 supported_kvm_target
() {
191 test "$kvm" = "yes" ||
return 1
192 glob
"$1" "*-softmmu" ||
return 1
193 case "${1%-softmmu}:$cpu" in
194 arm
:arm | aarch64
:aarch64 | \
195 i386
:i386 | i386
:x86_64 | i386
:x32 | \
196 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
197 mips
:mips | mipsel
:mips | \
198 ppc
:ppc | ppcemb
:ppc | ppc64
:ppc | \
199 ppc
:ppc64 | ppcemb
:ppc64 | ppc64
:ppc64 | \
207 supported_xen_target
() {
208 test "$xen" = "yes" ||
return 1
209 glob
"$1" "*-softmmu" ||
return 1
210 # Only i386 and x86_64 provide the xenpv machine.
211 case "${1%-softmmu}" in
219 supported_hvf_target
() {
220 test "$hvf" = "yes" ||
return 1
221 glob
"$1" "*-softmmu" ||
return 1
222 case "${1%-softmmu}" in
230 supported_whpx_target
() {
231 test "$whpx" = "yes" ||
return 1
232 glob
"$1" "*-softmmu" ||
return 1
233 case "${1%-softmmu}" in
246 if test "$linux" != "yes"; then
247 print_error
"Target '$target' is only available on a Linux host"
252 if test "$bsd" != "yes"; then
253 print_error
"Target '$target' is only available on a BSD host"
258 print_error
"Invalid target name '$target'"
262 test "$tcg" = "yes" && return 0
263 supported_kvm_target
"$1" && return 0
264 supported_xen_target
"$1" && return 0
265 supported_hax_target
"$1" && return 0
266 supported_hvf_target
"$1" && return 0
267 supported_whpx_target
"$1" && return 0
268 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
274 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
278 source_path
=$
(dirname "$0")
281 interp_prefix
="/usr/gnemul/qemu-%M"
285 block_drv_rw_whitelist
=""
286 block_drv_ro_whitelist
=""
296 if test -e "$source_path/.git"
299 git_submodules
="ui/keycodemapdb"
304 if ! test -f "$source_path/ui/keycodemapdb/README"
307 echo "ERROR: missing file $source_path/ui/keycodemapdb/README"
309 echo "This is not a GIT checkout but module content appears to"
310 echo "be missing. Do not use 'git archive' or GitHub download links"
311 echo "to acquire QEMU source archives. Non-GIT builds are only"
312 echo "supported with source archives linked from:"
314 echo " https://www.qemu.org/download/"
316 echo "Developers working with GIT can use scripts/archive-source.sh"
317 echo "if they need to create valid source archives."
324 # Don't accept a target_list environment variable.
327 # Default value for a variable defining feature "foo".
328 # * foo="no" feature will only be used if --enable-foo arg is given
329 # * foo="" feature will be searched for, and if found, will be used
330 # unless --disable-foo is given
331 # * foo="yes" this value will only be set by --enable-foo flag.
332 # feature will searched for,
333 # if not found, configure exits with error
335 # Always add --enable-foo and --disable-foo command line args.
336 # Distributions want to ensure that several features are compiled in, and it
337 # is impossible without a --enable-foo that exits if a feature is not found.
359 xen_pv_domain_build
="no"
360 xen_pci_passthrough
=""
392 LDFLAGS_SHARED
="-shared"
395 mandir
="\${prefix}/share/man"
396 datadir
="\${prefix}/share"
397 firmwarepath
="\${prefix}/share/qemu-firmware"
398 qemu_docdir
="\${prefix}/share/doc/qemu"
399 bindir
="\${prefix}/bin"
400 libdir
="\${prefix}/lib"
401 libexecdir
="\${prefix}/libexec"
402 includedir
="\${prefix}/include"
403 sysconfdir
="\${prefix}/etc"
404 local_statedir
="\${prefix}/var"
437 guest_agent_with_vss
="no"
438 guest_agent_ntddscsi
="no"
447 debug_stack_usage
="no"
451 glusterfs_xlator_opt
="no"
452 glusterfs_discard
="no"
453 glusterfs_fallocate
="no"
454 glusterfs_zerofill
="no"
458 tls_priority
="NORMAL"
470 live_block_migration
="yes"
481 # cross compilers defaults, can be overridden with --cross-cc-ARCH
482 cross_cc_aarch64
="aarch64-linux-gnu-gcc"
483 cross_cc_aarch64_be
="$cross_cc_aarch64"
484 cross_cc_cflags_aarch64_be
="-mbig-endian"
485 cross_cc_arm
="arm-linux-gnueabihf-gcc"
486 cross_cc_cflags_armeb
="-mbig-endian"
487 cross_cc_i386
="i386-pc-linux-gnu-gcc"
488 cross_cc_cflags_i386
=""
489 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
490 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
492 enabled_cross_compilers
=""
499 # parse CC options first
501 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
503 --cross-prefix=*) cross_prefix
="$optarg"
507 --cxx=*) CXX
="$optarg"
509 --source-path=*) source_path
="$optarg"
511 --cpu=*) cpu
="$optarg"
513 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
515 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
517 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
518 EXTRA_LDFLAGS
="$optarg"
520 --enable-debug-info) debug_info
="yes"
522 --disable-debug-info) debug_info
="no"
524 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
526 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
527 eval "cross_cc_cflags_${cc_arch}=\$optarg"
529 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
530 eval "cross_cc_${cc_arch}=\$optarg"
535 # Using uname is really, really broken. Once we have the right set of checks
536 # we can eliminate its usage altogether.
538 # Preferred compiler:
540 # ${cross_prefix}gcc (if cross-prefix specified)
542 if test -z "${CC}${cross_prefix}"; then
545 cc
="${CC-${cross_prefix}gcc}"
548 if test -z "${CXX}${cross_prefix}"; then
551 cxx
="${CXX-${cross_prefix}g++}"
554 ar="${AR-${cross_prefix}ar}"
555 as
="${AS-${cross_prefix}as}"
558 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
559 ld
="${LD-${cross_prefix}ld}"
560 ranlib
="${RANLIB-${cross_prefix}ranlib}"
561 nm
="${NM-${cross_prefix}nm}"
562 strip
="${STRIP-${cross_prefix}strip}"
563 windres
="${WINDRES-${cross_prefix}windres}"
564 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
566 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
568 pkg_config
=query_pkg_config
569 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
570 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
572 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
573 ARFLAGS
="${ARFLAGS-rv}"
575 # default flags for all hosts
576 # We use -fwrapv to tell the compiler that we require a C dialect where
577 # left shift of signed integers is well defined and has the expected
578 # 2s-complement style results. (Both clang and gcc agree that it
579 # provides these semantics.)
580 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
581 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
582 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
583 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
584 QEMU_INCLUDES
="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
585 if test "$debug_info" = "yes"; then
587 LDFLAGS
="-g $LDFLAGS"
590 # make source path absolute
591 source_path
=$
(cd "$source_path"; pwd)
593 # running configure in the source tree?
594 # we know that's the case if configure is there.
595 if test -f "./configure"; then
596 pwd_is_source_path
="y"
598 pwd_is_source_path
="n"
604 #error $1 not defined
606 int main(void) { return 0; }
614 int main(void) { return 0; }
621 int main(void) { return 0; }
625 if check_define __linux__
; then
627 elif check_define _WIN32
; then
629 elif check_define __OpenBSD__
; then
631 elif check_define __sun__
; then
633 elif check_define __HAIKU__
; then
635 elif check_define __FreeBSD__
; then
637 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
638 targetos
='GNU/kFreeBSD'
639 elif check_define __DragonFly__
; then
641 elif check_define __NetBSD__
; then
643 elif check_define __APPLE__
; then
646 # This is a fatal error, but don't report it yet, because we
647 # might be going to just print the --help text, or it might
648 # be the result of a missing compiler.
653 # Some host OSes need non-standard checks for which CPU to use.
654 # Note that these checks are broken for cross-compilation: if you're
655 # cross-compiling to one of these OSes then you'll need to specify
656 # the correct CPU with the --cpu option.
659 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
660 # run 64-bit userspace code.
661 # If the user didn't specify a CPU explicitly and the kernel says this is
662 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
663 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
668 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
669 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
674 if test ! -z "$cpu" ; then
675 # command line argument
677 elif check_define __i386__
; then
679 elif check_define __x86_64__
; then
680 if check_define __ILP32__
; then
685 elif check_define __sparc__
; then
686 if check_define __arch64__
; then
691 elif check_define _ARCH_PPC
; then
692 if check_define _ARCH_PPC64
; then
697 elif check_define __mips__
; then
699 elif check_define __s390__
; then
700 if check_define __s390x__
; then
705 elif check_define __arm__
; then
707 elif check_define __aarch64__
; then
714 # Normalise host CPU name and set ARCH.
715 # Note that this case should only have supported host CPUs, not guests.
717 ppc|ppc64|s390|s390x|sparc64|x32
)
720 eval "cross_cc_${cpu}=\$host_cc"
722 i386|i486|i586|i686|i86pc|BePC
)
725 cross_cc_i386
=$host_cc
730 cross_cc_x86_64
=$host_cc
735 cross_cc_arm
=$host_cc
740 cross_cc_aarch64
=$host_cc
745 cross_cc_mips
=$host_cc
750 cross_cc_sparc
=$host_cc
753 # This will result in either an error or falling back to TCI later
757 if test -z "$ARCH"; then
763 # host *BSD for user mode
770 audio_possible_drivers
="dsound sdl"
771 if check_include dsound.h
; then
772 audio_drv_list
="dsound"
781 audio_possible_drivers
="oss sdl pa"
787 audio_possible_drivers
="oss sdl pa"
788 # needed for kinfo_getvmmap(3) in libutil.h
790 # needed for kinfo_getproc
791 libs_qga
="-lutil $libs_qga"
792 netmap
="" # enable netmap autodetect
793 HOST_VARIANT_DIR
="freebsd"
800 audio_possible_drivers
="oss sdl pa"
801 HOST_VARIANT_DIR
="dragonfly"
807 audio_possible_drivers
="oss sdl"
809 HOST_VARIANT_DIR
="netbsd"
816 audio_possible_drivers
="sdl"
817 HOST_VARIANT_DIR
="openbsd"
825 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
826 if [ "$cpu" = "x86_64" ] ; then
827 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
828 LDFLAGS
="-arch x86_64 $LDFLAGS"
831 audio_drv_list
="coreaudio"
832 audio_possible_drivers
="coreaudio sdl"
833 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
834 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
835 # Disable attempts to use ObjectiveC features in os/object.h since they
836 # won't work when we're compiling with gcc as a C compiler.
837 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
838 HOST_VARIANT_DIR
="darwin"
844 install="${INSTALL-ginstall}"
845 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
846 if test -f /usr
/include
/sys
/soundcard.h
; then
849 audio_possible_drivers
="oss sdl"
850 # needed for CMSG_ macros in sys/socket.h
851 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
852 # needed for TIOCWIN* defines in termios.h
853 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
854 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
855 solarisnetlibs
="-lsocket -lnsl -lresolv"
856 LIBS
="$solarisnetlibs $LIBS"
857 libs_qga
="$solarisnetlibs $libs_qga"
861 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
862 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
866 audio_possible_drivers
="oss alsa sdl pa"
874 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
879 if [ "$bsd" = "yes" ] ; then
880 if [ "$darwin" != "yes" ] ; then
885 : ${make=${MAKE-make}}
886 : ${install=${INSTALL-install}}
887 : ${python=${PYTHON-python}}
888 : ${smbd=${SMBD-/usr/sbin/smbd}}
890 # Default objcc to clang if available, otherwise use CC
897 if test "$mingw32" = "yes" ; then
900 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
901 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
902 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
903 # MinGW needs -mthreads for TLS and macro _MT.
904 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
905 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
907 if compile_prog
"" "-liberty" ; then
908 LIBS
="-liberty $LIBS"
910 prefix
="c:/Program Files/QEMU"
913 qemu_docdir
="\${prefix}"
915 sysconfdir
="\${prefix}"
918 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
924 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
926 --help|
-h) show_help
=yes
928 --version|
-V) exec cat $source_path/VERSION
930 --prefix=*) prefix
="$optarg"
932 --interp-prefix=*) interp_prefix
="$optarg"
940 --host-cc=*) host_cc
="$optarg"
944 --iasl=*) iasl
="$optarg"
946 --objcc=*) objcc
="$optarg"
948 --make=*) make="$optarg"
950 --install=*) install="$optarg"
952 --python=*) python
="$optarg"
954 --gcov=*) gcov_tool
="$optarg"
956 --smbd=*) smbd
="$optarg"
966 --disable-debug-info)
978 --target-list=*) target_list
="$optarg"
980 --enable-trace-backends=*) trace_backends
="$optarg"
982 # XXX: backwards compatibility
983 --enable-trace-backend=*) trace_backends
="$optarg"
985 --with-trace-file=*) trace_file
="$optarg"
987 --enable-gprof) gprof
="yes"
989 --enable-gcov) gcov
="yes"
993 LDFLAGS
="-static $LDFLAGS"
994 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
996 --mandir=*) mandir
="$optarg"
998 --bindir=*) bindir
="$optarg"
1000 --libdir=*) libdir
="$optarg"
1002 --libexecdir=*) libexecdir
="$optarg"
1004 --includedir=*) includedir
="$optarg"
1006 --datadir=*) datadir
="$optarg"
1008 --with-confsuffix=*) confsuffix
="$optarg"
1010 --docdir=*) qemu_docdir
="$optarg"
1012 --sysconfdir=*) sysconfdir
="$optarg"
1014 --localstatedir=*) local_statedir
="$optarg"
1016 --firmwarepath=*) firmwarepath
="$optarg"
1018 --host=*|
--build=*|\
1019 --disable-dependency-tracking|\
1020 --sbindir=*|
--sharedstatedir=*|\
1021 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
1022 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
1023 # These switches are silently ignored, for compatibility with
1024 # autoconf-generated configure scripts. This allows QEMU's
1025 # configure to be used by RPM and similar macros that set
1026 # lots of directory switches by default.
1028 --disable-sdl) sdl
="no"
1030 --enable-sdl) sdl
="yes"
1032 --with-sdlabi=*) sdlabi
="$optarg"
1034 --disable-qom-cast-debug) qom_cast_debug
="no"
1036 --enable-qom-cast-debug) qom_cast_debug
="yes"
1038 --disable-virtfs) virtfs
="no"
1040 --enable-virtfs) virtfs
="yes"
1042 --disable-mpath) mpath
="no"
1044 --enable-mpath) mpath
="yes"
1046 --disable-vnc) vnc
="no"
1048 --enable-vnc) vnc
="yes"
1050 --oss-lib=*) oss_lib
="$optarg"
1052 --audio-drv-list=*) audio_drv_list
="$optarg"
1054 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1056 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1058 --enable-debug-tcg) debug_tcg
="yes"
1060 --disable-debug-tcg) debug_tcg
="no"
1063 # Enable debugging options that aren't excessively noisy
1070 --enable-sanitizers) sanitizers
="yes"
1072 --disable-sanitizers) sanitizers
="no"
1074 --enable-sparse) sparse
="yes"
1076 --disable-sparse) sparse
="no"
1078 --disable-strip) strip_opt
="no"
1080 --disable-vnc-sasl) vnc_sasl
="no"
1082 --enable-vnc-sasl) vnc_sasl
="yes"
1084 --disable-vnc-jpeg) vnc_jpeg
="no"
1086 --enable-vnc-jpeg) vnc_jpeg
="yes"
1088 --disable-vnc-png) vnc_png
="no"
1090 --enable-vnc-png) vnc_png
="yes"
1092 --disable-slirp) slirp
="no"
1094 --disable-vde) vde
="no"
1096 --enable-vde) vde
="yes"
1098 --disable-netmap) netmap
="no"
1100 --enable-netmap) netmap
="yes"
1102 --disable-xen) xen
="no"
1104 --enable-xen) xen
="yes"
1106 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1108 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1110 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
1112 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
1114 --disable-brlapi) brlapi
="no"
1116 --enable-brlapi) brlapi
="yes"
1118 --disable-bluez) bluez
="no"
1120 --enable-bluez) bluez
="yes"
1122 --disable-kvm) kvm
="no"
1124 --enable-kvm) kvm
="yes"
1126 --disable-hax) hax
="no"
1128 --enable-hax) hax
="yes"
1130 --disable-hvf) hvf
="no"
1132 --enable-hvf) hvf
="yes"
1134 --disable-whpx) whpx
="no"
1136 --enable-whpx) whpx
="yes"
1138 --disable-tcg-interpreter) tcg_interpreter
="no"
1140 --enable-tcg-interpreter) tcg_interpreter
="yes"
1142 --disable-cap-ng) cap_ng
="no"
1144 --enable-cap-ng) cap_ng
="yes"
1146 --disable-tcg) tcg
="no"
1148 --enable-tcg) tcg
="yes"
1150 --disable-malloc-trim) malloc_trim
="no"
1152 --enable-malloc-trim) malloc_trim
="yes"
1154 --disable-spice) spice
="no"
1156 --enable-spice) spice
="yes"
1158 --disable-libiscsi) libiscsi
="no"
1160 --enable-libiscsi) libiscsi
="yes"
1162 --disable-libnfs) libnfs
="no"
1164 --enable-libnfs) libnfs
="yes"
1166 --enable-profiler) profiler
="yes"
1168 --disable-cocoa) cocoa
="no"
1172 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1174 --disable-system) softmmu
="no"
1176 --enable-system) softmmu
="yes"
1183 --disable-linux-user) linux_user
="no"
1185 --enable-linux-user) linux_user
="yes"
1187 --disable-bsd-user) bsd_user
="no"
1189 --enable-bsd-user) bsd_user
="yes"
1191 --enable-pie) pie
="yes"
1193 --disable-pie) pie
="no"
1195 --enable-werror) werror
="yes"
1197 --disable-werror) werror
="no"
1199 --enable-stack-protector) stack_protector
="yes"
1201 --disable-stack-protector) stack_protector
="no"
1203 --disable-curses) curses
="no"
1205 --enable-curses) curses
="yes"
1207 --disable-curl) curl
="no"
1209 --enable-curl) curl
="yes"
1211 --disable-fdt) fdt
="no"
1213 --enable-fdt) fdt
="yes"
1215 --disable-linux-aio) linux_aio
="no"
1217 --enable-linux-aio) linux_aio
="yes"
1219 --disable-attr) attr
="no"
1221 --enable-attr) attr
="yes"
1223 --disable-membarrier) membarrier
="no"
1225 --enable-membarrier) membarrier
="yes"
1227 --disable-blobs) blobs
="no"
1229 --with-pkgversion=*) pkgversion
="$optarg"
1231 --with-coroutine=*) coroutine
="$optarg"
1233 --disable-coroutine-pool) coroutine_pool
="no"
1235 --enable-coroutine-pool) coroutine_pool
="yes"
1237 --enable-debug-stack-usage) debug_stack_usage
="yes"
1239 --enable-crypto-afalg) crypto_afalg
="yes"
1241 --disable-crypto-afalg) crypto_afalg
="no"
1243 --disable-docs) docs
="no"
1245 --enable-docs) docs
="yes"
1247 --disable-vhost-net) vhost_net
="no"
1249 --enable-vhost-net) vhost_net
="yes"
1251 --disable-vhost-crypto) vhost_crypto
="no"
1253 --enable-vhost-crypto)
1255 if test "$mingw32" = "yes"; then
1256 error_exit
"vhost-crypto isn't available on win32"
1259 --disable-vhost-scsi) vhost_scsi
="no"
1261 --enable-vhost-scsi) vhost_scsi
="yes"
1263 --disable-vhost-vsock) vhost_vsock
="no"
1265 --enable-vhost-vsock) vhost_vsock
="yes"
1267 --disable-opengl) opengl
="no"
1269 --enable-opengl) opengl
="yes"
1271 --disable-rbd) rbd
="no"
1273 --enable-rbd) rbd
="yes"
1275 --disable-xfsctl) xfs
="no"
1277 --enable-xfsctl) xfs
="yes"
1279 --disable-smartcard) smartcard
="no"
1281 --enable-smartcard) smartcard
="yes"
1283 --disable-libusb) libusb
="no"
1285 --enable-libusb) libusb
="yes"
1287 --disable-usb-redir) usb_redir
="no"
1289 --enable-usb-redir) usb_redir
="yes"
1291 --disable-zlib-test) zlib
="no"
1293 --disable-lzo) lzo
="no"
1295 --enable-lzo) lzo
="yes"
1297 --disable-snappy) snappy
="no"
1299 --enable-snappy) snappy
="yes"
1301 --disable-bzip2) bzip2="no"
1303 --enable-bzip2) bzip2="yes"
1305 --enable-guest-agent) guest_agent
="yes"
1307 --disable-guest-agent) guest_agent
="no"
1309 --enable-guest-agent-msi) guest_agent_msi
="yes"
1311 --disable-guest-agent-msi) guest_agent_msi
="no"
1313 --with-vss-sdk) vss_win32_sdk
=""
1315 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1317 --without-vss-sdk) vss_win32_sdk
="no"
1319 --with-win-sdk) win_sdk
=""
1321 --with-win-sdk=*) win_sdk
="$optarg"
1323 --without-win-sdk) win_sdk
="no"
1325 --enable-tools) want_tools
="yes"
1327 --disable-tools) want_tools
="no"
1329 --enable-seccomp) seccomp
="yes"
1331 --disable-seccomp) seccomp
="no"
1333 --disable-glusterfs) glusterfs
="no"
1335 --enable-glusterfs) glusterfs
="yes"
1337 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1338 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1340 --enable-vhdx|
--disable-vhdx)
1341 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1343 --enable-uuid|
--disable-uuid)
1344 echo "$0: $opt is obsolete, UUID support is always built" >&2
1346 --disable-gtk) gtk
="no"
1348 --enable-gtk) gtk
="yes"
1350 --tls-priority=*) tls_priority
="$optarg"
1352 --disable-gnutls) gnutls
="no"
1354 --enable-gnutls) gnutls
="yes"
1356 --disable-nettle) nettle
="no"
1358 --enable-nettle) nettle
="yes"
1360 --disable-gcrypt) gcrypt
="no"
1362 --enable-gcrypt) gcrypt
="yes"
1364 --enable-rdma) rdma
="yes"
1366 --disable-rdma) rdma
="no"
1368 --enable-pvrdma) pvrdma
="yes"
1370 --disable-pvrdma) pvrdma
="no"
1372 --with-gtkabi=*) gtkabi
="$optarg"
1374 --disable-vte) vte
="no"
1376 --enable-vte) vte
="yes"
1378 --disable-virglrenderer) virglrenderer
="no"
1380 --enable-virglrenderer) virglrenderer
="yes"
1382 --disable-tpm) tpm
="no"
1384 --enable-tpm) tpm
="yes"
1386 --disable-libssh2) libssh2
="no"
1388 --enable-libssh2) libssh2
="yes"
1390 --disable-live-block-migration) live_block_migration
="no"
1392 --enable-live-block-migration) live_block_migration
="yes"
1394 --disable-numa) numa
="no"
1396 --enable-numa) numa
="yes"
1398 --disable-libxml2) libxml2
="no"
1400 --enable-libxml2) libxml2
="yes"
1402 --disable-tcmalloc) tcmalloc
="no"
1404 --enable-tcmalloc) tcmalloc
="yes"
1406 --disable-jemalloc) jemalloc
="no"
1408 --enable-jemalloc) jemalloc
="yes"
1410 --disable-replication) replication
="no"
1412 --enable-replication) replication
="yes"
1414 --disable-vxhs) vxhs
="no"
1416 --enable-vxhs) vxhs
="yes"
1418 --disable-vhost-user) vhost_user
="no"
1420 --enable-vhost-user)
1422 if test "$mingw32" = "yes"; then
1423 error_exit
"vhost-user isn't available on win32"
1426 --disable-capstone) capstone
="no"
1428 --enable-capstone) capstone
="yes"
1430 --enable-capstone=git
) capstone
="git"
1432 --enable-capstone=system
) capstone
="system"
1434 --with-git=*) git
="$optarg"
1436 --enable-git-update) git_update
=yes
1438 --disable-git-update) git_update
=no
1440 --enable-debug-mutex) debug_mutex
=yes
1442 --disable-debug-mutex) debug_mutex
=no
1444 --enable-libpmem) libpmem
=yes
1446 --disable-libpmem) libpmem
=no
1449 echo "ERROR: unknown option $opt"
1450 echo "Try '$0 --help' for more information"
1456 if test "$vhost_user" = ""; then
1457 if test "$mingw32" = "yes"; then
1467 LDFLAGS
="-m32 $LDFLAGS"
1468 cross_cc_powerpc
=$cc
1469 cross_cc_cflags_powerpc
=$CPU_CFLAGS
1473 LDFLAGS
="-m64 $LDFLAGS"
1475 cross_cc_cflags_ppc64
=$CPU_CFLAGS
1478 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1479 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1481 cross_cc_cflags_sparc
=$CPU_CFLAGS
1484 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1485 LDFLAGS
="-m64 $LDFLAGS"
1486 cross_cc_sparc64
=$cc
1487 cross_cc_cflags_sparc64
=$CPU_CFLAGS
1491 LDFLAGS
="-m31 $LDFLAGS"
1493 cross_cc_cflags_s390
=$CPU_CFLAGS
1497 LDFLAGS
="-m64 $LDFLAGS"
1499 cross_cc_cflags_s390x
=$CPU_CFLAGS
1503 LDFLAGS
="-m32 $LDFLAGS"
1505 cross_cc_cflags_i386
=$CPU_CFLAGS
1508 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1509 # If we truly care, we should simply detect this case at
1510 # runtime and generate the fallback to serial emulation.
1511 CPU_CFLAGS
="-m64 -mcx16"
1512 LDFLAGS
="-m64 $LDFLAGS"
1514 cross_cc_cflags_x86_64
=$CPU_CFLAGS
1518 LDFLAGS
="-mx32 $LDFLAGS"
1520 cross_cc_cflags_i386
=$CPU_CFLAGS
1522 # No special flags required for other host CPUs
1525 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1527 # For user-mode emulation the host arch has to be one we explicitly
1528 # support, even if we're using TCI.
1529 if [ "$ARCH" = "unknown" ]; then
1534 default_target_list
=""
1538 if [ "$softmmu" = "yes" ]; then
1539 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1541 if [ "$linux_user" = "yes" ]; then
1542 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1544 if [ "$bsd_user" = "yes" ]; then
1545 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1548 for config
in $mak_wilds; do
1549 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1552 # Enumerate public trace backends for --help output
1553 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1555 if test x
"$show_help" = x
"yes" ; then
1558 Usage: configure [options]
1559 Options: [defaults in brackets after descriptions]
1562 --help print this message
1563 --prefix=PREFIX install in PREFIX [$prefix]
1564 --interp-prefix=PREFIX where to find shared libraries, etc.
1565 use %M for cpu name [$interp_prefix]
1566 --target-list=LIST set target list (default: build everything)
1567 $(echo Available targets: $default_target_list | \
1568 fold -s -w 53 | sed -e 's/^/ /')
1570 Advanced options (experts only):
1571 --source-path=PATH path of source code [$source_path]
1572 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1573 --cc=CC use C compiler CC [$cc]
1574 --iasl=IASL use ACPI compiler IASL [$iasl]
1575 --host-cc=CC use C compiler CC [$host_cc] for code run at
1577 --cxx=CXX use C++ compiler CXX [$cxx]
1578 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1579 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1580 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1581 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1582 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1583 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1584 --make=MAKE use specified make [$make]
1585 --install=INSTALL use specified install [$install]
1586 --python=PYTHON use specified python [$python]
1587 --smbd=SMBD use specified smbd [$smbd]
1588 --with-git=GIT use specified git [$git]
1589 --static enable static build [$static]
1590 --mandir=PATH install man pages in PATH
1591 --datadir=PATH install firmware in PATH$confsuffix
1592 --docdir=PATH install documentation in PATH$confsuffix
1593 --bindir=PATH install binaries in PATH
1594 --libdir=PATH install libraries in PATH
1595 --libexecdir=PATH install helper binaries in PATH
1596 --sysconfdir=PATH install config in PATH$confsuffix
1597 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1598 --firmwarepath=PATH search PATH for firmware files
1599 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1600 --with-pkgversion=VERS use specified string as sub-version of the package
1601 --enable-debug enable common debug build options
1602 --enable-sanitizers enable default sanitizers
1603 --disable-strip disable stripping binaries
1604 --disable-werror disable compilation abort on warning
1605 --disable-stack-protector disable compiler-provided stack protection
1606 --audio-drv-list=LIST set audio drivers list:
1607 Available drivers: $audio_possible_drivers
1608 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1609 --block-drv-rw-whitelist=L
1610 set block driver read-write whitelist
1611 (affects only QEMU, not qemu-img)
1612 --block-drv-ro-whitelist=L
1613 set block driver read-only whitelist
1614 (affects only QEMU, not qemu-img)
1615 --enable-trace-backends=B Set trace backend
1616 Available backends: $trace_backend_list
1617 --with-trace-file=NAME Full PATH,NAME of file to store traces
1619 --disable-slirp disable SLIRP userspace network connectivity
1620 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1621 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1622 --oss-lib path to OSS library
1623 --cpu=CPU Build for host CPU [$cpu]
1624 --with-coroutine=BACKEND coroutine backend. Supported options:
1625 ucontext, sigaltstack, windows
1626 --enable-gcov enable test coverage analysis with gcov
1627 --gcov=GCOV use specified gcov [$gcov_tool]
1628 --disable-blobs disable installing provided firmware blobs
1629 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1630 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1631 --tls-priority default TLS protocol/cipher priority string
1632 --enable-gprof QEMU profiling with gprof
1633 --enable-profiler profiler support
1634 --enable-xen-pv-domain-build
1635 xen pv domain builder
1636 --enable-debug-stack-usage
1637 track the maximum stack usage of stacks created by qemu_alloc_stack
1639 Optional features, enabled with --enable-FEATURE and
1640 disabled with --disable-FEATURE, default is enabled if available:
1642 system all system emulation targets
1643 user supported user emulation targets
1644 linux-user all linux usermode emulation targets
1645 bsd-user all BSD usermode emulation targets
1646 docs build documentation
1647 guest-agent build the QEMU Guest Agent
1648 guest-agent-msi build guest agent Windows MSI installation package
1649 pie Position Independent Executables
1650 modules modules support
1651 debug-tcg TCG debugging (default is disabled)
1652 debug-info debugging information
1653 sparse sparse checker
1655 gnutls GNUTLS cryptography support
1656 nettle nettle cryptography support
1657 gcrypt libgcrypt cryptography support
1659 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1661 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1662 vte vte support for the gtk UI
1665 vnc-sasl SASL encryption for VNC server
1666 vnc-jpeg JPEG lossy compression for VNC server
1667 vnc-png PNG compression for VNC server
1668 cocoa Cocoa UI (Mac OS X only)
1670 mpath Multipath persistent reservation passthrough
1671 xen xen backend driver support
1672 xen-pci-passthrough PCI passthrough support for Xen
1673 brlapi BrlAPI (Braile)
1674 curl curl connectivity
1675 membarrier membarrier system call (for Linux 4.14+ or Windows)
1677 bluez bluez stack connectivity
1678 kvm KVM acceleration support
1679 hax HAX acceleration support
1680 hvf Hypervisor.framework acceleration support
1681 whpx Windows Hypervisor Platform acceleration support
1682 rdma Enable RDMA-based migration
1683 pvrdma Enable PVRDMA support
1684 vde support for vde network
1685 netmap support for netmap network
1686 linux-aio Linux AIO support
1687 cap-ng libcap-ng support
1688 attr attr and xattr support
1689 vhost-net vhost-net acceleration support
1690 vhost-crypto vhost-crypto acceleration support
1692 rbd rados block device (rbd)
1693 libiscsi iscsi support
1695 smartcard smartcard support (libcacard)
1696 libusb libusb (for usb passthrough)
1697 live-block-migration Block migration in the main migration stream
1698 usb-redir usb network redirection support
1699 lzo support of lzo compression library
1700 snappy support of snappy compression library
1701 bzip2 support of bzip2 compression library
1702 (for reading bzip2-compressed dmg images)
1703 seccomp seccomp support
1704 coroutine-pool coroutine freelist (better performance)
1705 glusterfs GlusterFS backend
1707 libssh2 ssh block device support
1708 numa libnuma support
1709 libxml2 for Parallels image format
1710 tcmalloc tcmalloc support
1711 jemalloc jemalloc support
1712 replication replication support
1713 vhost-vsock virtio sockets device support
1714 opengl opengl support
1715 virglrenderer virgl rendering support
1716 xfsctl xfsctl support
1717 qom-cast-debug cast debugging support
1718 tools build qemu-io, qemu-nbd and qemu-image tools
1719 vxhs Veritas HyperScale vDisk backend support
1720 crypto-afalg Linux AF_ALG crypto backend driver
1721 vhost-user vhost-user support
1722 capstone capstone disassembler support
1723 debug-mutex mutex debugging support
1724 libpmem libpmem support
1726 NOTE: The object files are built at the place where configure is launched
1731 if ! has
$python; then
1732 error_exit
"Python not found. Use --python=/path/to/python"
1735 # Note that if the Python conditional here evaluates True we will exit
1736 # with status 1 which is a shell 'false' value.
1737 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then
1738 error_exit
"Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \
1739 "Use --python=/path/to/python to specify a supported Python."
1742 # Suppress writing compiled files
1745 # Check that the C compiler works. Doing this here before testing
1746 # the host CPU ensures that we had a valid CC to autodetect the
1747 # $cpu var (and we should bail right here if that's not the case).
1748 # It also allows the help message to be printed without a CC.
1750 if compile_object
; then
1751 : C compiler works ok
1753 error_exit
"\"$cc\" either does not exist or does not work"
1755 if ! compile_prog
; then
1756 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1759 # Now we have handled --enable-tcg-interpreter and know we're not just
1760 # printing the help message, bail out if the host CPU isn't supported.
1761 if test "$ARCH" = "unknown"; then
1762 if test "$tcg_interpreter" = "yes" ; then
1763 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1765 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1769 # Consult white-list to determine whether to enable werror
1770 # by default. Only enable by default for git builds
1771 if test -z "$werror" ; then
1772 if test -d "$source_path/.git" -a \
1773 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1780 if test "$bogus_os" = "yes"; then
1781 # Now that we know that we're not printing the help and that
1782 # the compiler works (so the results of the check_defines we used
1783 # to identify the OS are reliable), if we didn't recognize the
1784 # host OS we should stop now.
1785 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1788 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1789 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1790 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1791 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1792 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1793 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1794 gcc_flags
="-Wno-error=address-of-packed-member $gcc_flags"
1795 # Note that we do not add -Werror to gcc_flags here, because that would
1796 # enable it for all configure tests. If a configure test failed due
1797 # to -Werror this would just silently disable some features,
1798 # so it's too error prone.
1800 cc_has_warning_flag
() {
1803 # Use the positive sense of the flag when testing for -Wno-wombat
1804 # support (gcc will happily accept the -Wno- form of unknown
1806 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1807 compile_prog
"-Werror $optflag" ""
1810 for flag
in $gcc_flags; do
1811 if cc_has_warning_flag
$flag ; then
1812 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1816 if test "$stack_protector" != "no"; then
1818 int main(int argc, char *argv[])
1820 char arr[64], *p = arr, *c = argv[0];
1827 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1829 for flag
in $gcc_flags; do
1830 # We need to check both a compile and a link, since some compiler
1831 # setups fail only on a .c->.o compile and some only at link time
1832 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1833 compile_prog
"-Werror $flag" ""; then
1834 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1839 if test "$stack_protector" = yes; then
1840 if test $sp_on = 0; then
1841 error_exit
"Stack protector not supported"
1846 # Disable -Wmissing-braces on older compilers that warn even for
1847 # the "universal" C zero initializer {0}.
1853 if compile_object
"-Werror" "" ; then
1856 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1859 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1860 # large functions that use global variables. The bug is in all releases of
1861 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1862 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1864 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1865 int main(void) { return 0; }
1867 #error No bug in this compiler.
1870 if compile_prog
"-Werror -fno-gcse" "" ; then
1871 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1874 if test "$static" = "yes" ; then
1875 if test "$modules" = "yes" ; then
1876 error_exit
"static and modules are mutually incompatible"
1878 if test "$pie" = "yes" ; then
1879 error_exit
"static and pie are mutually incompatible"
1885 # Unconditional check for compiler __thread support
1887 static __thread int tls_var;
1888 int main(void) { return tls_var; }
1891 if ! compile_prog
"-Werror" "" ; then
1892 error_exit
"Your compiler does not support the __thread specifier for " \
1893 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1896 if test "$pie" = ""; then
1897 case "$cpu-$targetos" in
1898 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1906 if test "$pie" != "no" ; then
1910 # define THREAD __thread
1915 static THREAD int tls_var;
1917 int main(void) { return tls_var; }
1920 if compile_prog
"-fPIE -DPIE" "-pie"; then
1921 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1922 LDFLAGS
="-pie $LDFLAGS"
1924 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1925 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1928 if test "$pie" = "yes"; then
1929 error_exit
"PIE not available due to missing toolchain support"
1931 echo "Disabling PIE due to missing toolchain support"
1936 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1937 CFLAGS_NOPIE
="-fno-pie"
1938 LDFLAGS_NOPIE
="-nopie"
1942 ##########################################
1943 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1944 # use i686 as default anyway, but for those that don't, an explicit
1945 # specification is necessary
1947 if test "$cpu" = "i386"; then
1949 static int sfaa(int *ptr)
1951 return __sync_fetch_and_and(ptr, 0);
1957 val = __sync_val_compare_and_swap(&val, 0, 1);
1962 if ! compile_prog
"" "" ; then
1963 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1967 #########################################
1968 # Solaris specific configure tool chain decisions
1970 if test "$solaris" = "yes" ; then
1971 if has
$install; then
1974 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1975 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1976 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1978 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1979 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1980 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1981 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1986 if test -f /usr
/ccs
/bin
/ar ; then
1987 error_exit
"No path includes ar" \
1988 "Add /usr/ccs/bin to your path and rerun configure"
1990 error_exit
"No path includes ar"
1994 if test -z "${target_list+xxx}" ; then
1995 for target
in $default_target_list; do
1996 supported_target
$target 2>/dev
/null
&& \
1997 target_list
="$target_list $target"
1999 target_list
="${target_list# }"
2001 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
2002 for target
in $target_list; do
2003 # Check that we recognised the target name; this allows a more
2004 # friendly error message than if we let it fall through.
2005 case " $default_target_list " in
2009 error_exit
"Unknown target name '$target'"
2012 supported_target
$target ||
exit 1
2016 # see if system emulation was really requested
2017 case " $target_list " in
2018 *"-softmmu "*) softmmu
=yes
2024 feature_not_found
() {
2028 error_exit
"User requested feature $feature" \
2029 "configure was not able to find it." \
2034 # big/little endian test
2036 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2037 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2038 extern int foo(short *, short *);
2039 int main(int argc, char *argv[]) {
2040 return foo(big_endian, little_endian);
2044 if compile_object
; then
2045 if strings -a $TMPO |
grep -q BiGeNdIaN
; then
2047 elif strings -a $TMPO |
grep -q LiTtLeEnDiAn
; then
2050 echo big
/little
test failed
2053 echo big
/little
test failed
2056 ##########################################
2057 # cocoa implies not SDL or GTK
2058 # (the cocoa UI code currently assumes it is always the active UI
2059 # and doesn't interact well with other UI frontend code)
2060 if test "$cocoa" = "yes"; then
2061 if test "$sdl" = "yes"; then
2062 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
2064 if test "$gtk" = "yes"; then
2065 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
2071 # Some versions of Mac OS X incorrectly define SIZE_MAX
2075 int main(int argc, char *argv[]) {
2076 return printf("%zu", SIZE_MAX);
2079 have_broken_size_max
=no
2080 if ! compile_object
-Werror ; then
2081 have_broken_size_max
=yes
2084 ##########################################
2088 #include <sys/socket.h>
2089 #include <linux/ip.h>
2090 int main(void) { return sizeof(struct mmsghdr); }
2092 if compile_prog
"" "" ; then
2098 ##########################################
2099 # MinGW / Mingw-w64 localtime_r/gmtime_r check
2101 if test "$mingw32" = "yes"; then
2102 # Some versions of MinGW / Mingw-w64 lack localtime_r
2103 # and gmtime_r entirely.
2105 # Some versions of Mingw-w64 define a macro for
2106 # localtime_r/gmtime_r.
2108 # Some versions of Mingw-w64 will define functions
2109 # for localtime_r/gmtime_r, but only if you have
2110 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2111 # though, unistd.h and pthread.h both define
2114 # So this #undef localtime_r and #include <unistd.h>
2115 # are not in fact redundant.
2120 int main(void) { localtime_r(NULL, NULL); return 0; }
2122 if compile_prog
"" "" ; then
2129 ##########################################
2132 if ! has
"$pkg_config_exe"; then
2133 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2136 ##########################################
2139 if test "$linux_user" = "yes"; then
2142 #include <linux/futex.h>
2144 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2150 if ! compile_object
; then
2151 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2155 #########################################
2158 if test "$zlib" != "no" ; then
2161 int main(void) { zlibVersion(); return 0; }
2163 if compile_prog
"" "-lz" ; then
2166 error_exit
"zlib check failed" \
2167 "Make sure to have the zlib libs and headers installed."
2172 ##########################################
2175 if test "$lzo" != "no" ; then
2177 #include <lzo/lzo1x.h>
2178 int main(void) { lzo_version(); return 0; }
2180 if compile_prog
"" "-llzo2" ; then
2181 libs_softmmu
="$libs_softmmu -llzo2"
2184 if test "$lzo" = "yes"; then
2185 feature_not_found
"liblzo2" "Install liblzo2 devel"
2191 ##########################################
2194 if test "$snappy" != "no" ; then
2196 #include <snappy-c.h>
2197 int main(void) { snappy_max_compressed_length(4096); return 0; }
2199 if compile_prog
"" "-lsnappy" ; then
2200 libs_softmmu
="$libs_softmmu -lsnappy"
2203 if test "$snappy" = "yes"; then
2204 feature_not_found
"libsnappy" "Install libsnappy devel"
2210 ##########################################
2213 if test "$bzip2" != "no" ; then
2216 int main(void) { BZ2_bzlibVersion(); return 0; }
2218 if compile_prog
"" "-lbz2" ; then
2221 if test "$bzip2" = "yes"; then
2222 feature_not_found
"libbzip2" "Install libbzip2 devel"
2228 ##########################################
2231 if test "$seccomp" != "no" ; then
2234 libseccomp_minver
="2.1.0"
2237 libseccomp_minver
="2.2.0"
2240 libseccomp_minver
="2.2.3"
2243 libseccomp_minver
="2.3.0"
2246 libseccomp_minver
=""
2250 if test "$libseccomp_minver" != "" &&
2251 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2252 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2253 seccomp_libs
="$($pkg_config --libs libseccomp)"
2256 if test "$seccomp" = "yes" ; then
2257 if test "$libseccomp_minver" != "" ; then
2258 feature_not_found
"libseccomp" \
2259 "Install libseccomp devel >= $libseccomp_minver"
2261 feature_not_found
"libseccomp" \
2262 "libseccomp is not supported for host cpu $cpu"
2268 ##########################################
2271 if test "$xen" != "no" ; then
2272 # Check whether Xen library path is specified via --extra-ldflags to avoid
2273 # overriding this setting with pkg-config output. If not, try pkg-config
2274 # to obtain all needed flags.
2276 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2277 $pkg_config --exists xencontrol
; then
2278 xen_ctrl_version
="$(printf '%d%02d%02d' \
2279 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2281 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2282 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2283 if $pkg_config --exists xentoolcore
; then
2284 xen_pc
="$xen_pc xentoolcore"
2286 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2287 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2288 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2291 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2292 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2294 # First we test whether Xen headers and libraries are available.
2295 # If no, we are done and there is no Xen support.
2296 # If yes, more tests are run to detect the Xen version.
2300 #include <xenctrl.h>
2305 if ! compile_prog
"" "$xen_libs" ; then
2307 if test "$xen" = "yes" ; then
2308 feature_not_found
"xen" "Install xen devel"
2314 cat > $TMPC <<EOF &&
2315 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2316 #define __XEN_TOOLS__
2317 #include <xendevicemodel.h>
2318 #include <xenforeignmemory.h>
2320 xendevicemodel_handle *xd;
2321 xenforeignmemory_handle *xfmem;
2323 xd = xendevicemodel_open(0, 0);
2324 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2326 xfmem = xenforeignmemory_open(0, 0);
2327 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2332 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2334 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2335 xen_ctrl_version
=41100
2338 cat > $TMPC <<EOF &&
2339 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2340 #include <xenforeignmemory.h>
2341 #include <xentoolcore.h>
2343 xenforeignmemory_handle *xfmem;
2345 xfmem = xenforeignmemory_open(0, 0);
2346 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2347 xentoolcore_restrict_all(0);
2352 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2354 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2355 xen_ctrl_version
=41000
2358 cat > $TMPC <<EOF &&
2359 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2360 #define __XEN_TOOLS__
2361 #include <xendevicemodel.h>
2363 xendevicemodel_handle *xd;
2365 xd = xendevicemodel_open(0, 0);
2366 xendevicemodel_close(xd);
2371 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2373 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2374 xen_ctrl_version
=40900
2377 cat > $TMPC <<EOF &&
2379 * If we have stable libs the we don't want the libxc compat
2380 * layers, regardless of what CFLAGS we may have been given.
2382 * Also, check if xengnttab_grant_copy_segment_t is defined and
2383 * grant copy operation is implemented.
2385 #undef XC_WANT_COMPAT_EVTCHN_API
2386 #undef XC_WANT_COMPAT_GNTTAB_API
2387 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2388 #include <xenctrl.h>
2389 #include <xenstore.h>
2390 #include <xenevtchn.h>
2391 #include <xengnttab.h>
2392 #include <xenforeignmemory.h>
2394 #include <xen/hvm/hvm_info_table.h>
2395 #if !defined(HVM_MAX_VCPUS)
2396 # error HVM_MAX_VCPUS not defined
2399 xc_interface *xc = NULL;
2400 xenforeignmemory_handle *xfmem;
2401 xenevtchn_handle *xe;
2402 xengnttab_handle *xg;
2403 xen_domain_handle_t handle;
2404 xengnttab_grant_copy_segment_t* seg = NULL;
2408 xc = xc_interface_open(0, 0, 0);
2409 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2410 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2411 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2412 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2413 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2415 xfmem = xenforeignmemory_open(0, 0);
2416 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2418 xe = xenevtchn_open(0, 0);
2421 xg = xengnttab_open(0, 0);
2422 xengnttab_grant_copy(xg, 0, seg);
2427 compile_prog
"" "$xen_libs $xen_stable_libs"
2429 xen_ctrl_version
=40800
2432 cat > $TMPC <<EOF &&
2434 * If we have stable libs the we don't want the libxc compat
2435 * layers, regardless of what CFLAGS we may have been given.
2437 #undef XC_WANT_COMPAT_EVTCHN_API
2438 #undef XC_WANT_COMPAT_GNTTAB_API
2439 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2440 #include <xenctrl.h>
2441 #include <xenstore.h>
2442 #include <xenevtchn.h>
2443 #include <xengnttab.h>
2444 #include <xenforeignmemory.h>
2446 #include <xen/hvm/hvm_info_table.h>
2447 #if !defined(HVM_MAX_VCPUS)
2448 # error HVM_MAX_VCPUS not defined
2451 xc_interface *xc = NULL;
2452 xenforeignmemory_handle *xfmem;
2453 xenevtchn_handle *xe;
2454 xengnttab_handle *xg;
2455 xen_domain_handle_t handle;
2459 xc = xc_interface_open(0, 0, 0);
2460 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2461 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2462 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2463 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2464 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2466 xfmem = xenforeignmemory_open(0, 0);
2467 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2469 xe = xenevtchn_open(0, 0);
2472 xg = xengnttab_open(0, 0);
2473 xengnttab_map_grant_ref(xg, 0, 0, 0);
2478 compile_prog
"" "$xen_libs $xen_stable_libs"
2480 xen_ctrl_version
=40701
2483 cat > $TMPC <<EOF &&
2484 #include <xenctrl.h>
2487 xc_interface *xc = NULL;
2488 xen_domain_handle_t handle;
2489 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2493 compile_prog
"" "$xen_libs"
2495 xen_ctrl_version
=40700
2500 cat > $TMPC <<EOF &&
2501 #include <xenctrl.h>
2502 #include <xenstore.h>
2504 #include <xen/hvm/hvm_info_table.h>
2505 #if !defined(HVM_MAX_VCPUS)
2506 # error HVM_MAX_VCPUS not defined
2511 xc = xc_interface_open(0, 0, 0);
2512 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2513 xc_gnttab_open(NULL, 0);
2514 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2515 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2516 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2517 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2521 compile_prog
"" "$xen_libs"
2523 xen_ctrl_version
=40600
2528 cat > $TMPC <<EOF &&
2529 #include <xenctrl.h>
2530 #include <xenstore.h>
2532 #include <xen/hvm/hvm_info_table.h>
2533 #if !defined(HVM_MAX_VCPUS)
2534 # error HVM_MAX_VCPUS not defined
2539 xc = xc_interface_open(0, 0, 0);
2540 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2541 xc_gnttab_open(NULL, 0);
2542 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2543 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2544 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2548 compile_prog
"" "$xen_libs"
2550 xen_ctrl_version
=40500
2554 cat > $TMPC <<EOF &&
2555 #include <xenctrl.h>
2556 #include <xenstore.h>
2558 #include <xen/hvm/hvm_info_table.h>
2559 #if !defined(HVM_MAX_VCPUS)
2560 # error HVM_MAX_VCPUS not defined
2565 xc = xc_interface_open(0, 0, 0);
2566 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2567 xc_gnttab_open(NULL, 0);
2568 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2569 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2573 compile_prog
"" "$xen_libs"
2575 xen_ctrl_version
=40200
2579 if test "$xen" = "yes" ; then
2580 feature_not_found
"xen (unsupported version)" \
2581 "Install a supported xen (xen 4.2 or newer)"
2586 if test "$xen" = yes; then
2587 if test $xen_ctrl_version -ge 40701 ; then
2588 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2590 libs_softmmu
="$xen_libs $libs_softmmu"
2595 if test "$xen_pci_passthrough" != "no"; then
2596 if test "$xen" = "yes" && test "$linux" = "yes"; then
2597 xen_pci_passthrough
=yes
2599 if test "$xen_pci_passthrough" = "yes"; then
2600 error_exit
"User requested feature Xen PCI Passthrough" \
2601 " but this feature requires /sys from Linux"
2603 xen_pci_passthrough
=no
2607 if test "$xen_pv_domain_build" = "yes" &&
2608 test "$xen" != "yes"; then
2609 error_exit
"User requested Xen PV domain builder support" \
2610 "which requires Xen support."
2613 ##########################################
2614 # Windows Hypervisor Platform accelerator (WHPX) check
2615 if test "$whpx" != "no" ; then
2616 if check_include
"WinHvPlatform.h" && check_include
"WinHvEmulation.h"; then
2619 if test "$whpx" = "yes"; then
2620 feature_not_found
"WinHvPlatform" "WinHvEmulation is not installed"
2626 ##########################################
2628 if test "$sparse" != "no" ; then
2632 if test "$sparse" = "yes" ; then
2633 feature_not_found
"sparse" "Install sparse binary"
2639 ##########################################
2641 if $pkg_config --exists "x11"; then
2643 x11_cflags
=$
($pkg_config --cflags x11
)
2644 x11_libs
=$
($pkg_config --libs x11
)
2647 ##########################################
2650 if test "$gtk" != "no"; then
2651 if test "$gtkabi" = ""; then
2652 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2653 # Use 2.0 as a fallback if that is available.
2654 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2656 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2662 gtkpackage
="gtk+-$gtkabi"
2663 gtkx11package
="gtk+-x11-$gtkabi"
2664 if test "$gtkabi" = "3.0" ; then
2669 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2670 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2671 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2672 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2673 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2675 gtk_cflags
="$gtk_cflags $x11_cflags"
2676 gtk_libs
="$gtk_libs $x11_libs"
2679 elif test "$gtk" = "yes"; then
2680 feature_not_found
"gtk" "Install gtk3-devel"
2687 ##########################################
2691 # Unfortunately some distros have bad pkg-config information for gnutls
2692 # such that it claims to exist but you get a compiler error if you try
2693 # to use the options returned by --libs. Specifically, Ubuntu for --static
2694 # builds doesn't work:
2695 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2697 # So sanity check the cflags/libs before assuming gnutls can be used.
2698 if ! $pkg_config --exists "gnutls"; then
2703 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2708 if test "$gnutls" != "no"; then
2709 if gnutls_works
; then
2710 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2711 gnutls_libs
=$
($pkg_config --libs gnutls
)
2712 libs_softmmu
="$gnutls_libs $libs_softmmu"
2713 libs_tools
="$gnutls_libs $libs_tools"
2714 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2717 # gnutls_rnd requires >= 2.11.0
2718 if $pkg_config --exists "gnutls >= 2.11.0"; then
2724 if $pkg_config --exists 'gnutls >= 3.0'; then
2727 elif $pkg_config --exists 'gnutls >= 2.12'; then
2728 case $
($pkg_config --libs --static gnutls
) in
2746 elif test "$gnutls" = "yes"; then
2747 feature_not_found
"gnutls" "Install gnutls devel"
2757 # If user didn't give a --disable/enable-gcrypt flag,
2758 # then mark as disabled if user requested nettle
2759 # explicitly, or if gnutls links to nettle
2760 if test -z "$gcrypt"
2762 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2768 # If user didn't give a --disable/enable-nettle flag,
2769 # then mark as disabled if user requested gcrypt
2770 # explicitly, or if gnutls links to gcrypt
2771 if test -z "$nettle"
2773 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2779 has_libgcrypt_config
() {
2780 if ! has
"libgcrypt-config"
2785 if test -n "$cross_prefix"
2787 host=$
(libgcrypt-config
--host)
2788 if test "$host-" != $cross_prefix
2797 if test "$gcrypt" != "no"; then
2798 if has_libgcrypt_config
; then
2799 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2800 gcrypt_libs
=$
(libgcrypt-config
--libs)
2801 # Debian has remove -lgpg-error from libgcrypt-config
2802 # as it "spreads unnecessary dependencies" which in
2803 # turn breaks static builds...
2804 if test "$static" = "yes"
2806 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2808 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2809 libs_tools
="$gcrypt_libs $libs_tools"
2810 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2812 if test -z "$nettle"; then
2819 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2821 NULL, 0, 0, 0, NULL);
2825 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2832 gcry_mac_hd_t handle;
2833 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2834 GCRY_MAC_FLAG_SECURE, NULL);
2838 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2842 if test "$gcrypt" = "yes"; then
2843 feature_not_found
"gcrypt" "Install gcrypt devel"
2851 if test "$nettle" != "no"; then
2852 if $pkg_config --exists "nettle"; then
2853 nettle_cflags
=$
($pkg_config --cflags nettle
)
2854 nettle_libs
=$
($pkg_config --libs nettle
)
2855 nettle_version
=$
($pkg_config --modversion nettle
)
2856 libs_softmmu
="$nettle_libs $libs_softmmu"
2857 libs_tools
="$nettle_libs $libs_tools"
2858 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2863 #include <nettle/pbkdf2.h>
2865 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2869 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2873 if test "$nettle" = "yes"; then
2874 feature_not_found
"nettle" "Install nettle devel"
2881 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2883 error_exit
"Only one of gcrypt & nettle can be enabled"
2886 ##########################################
2887 # libtasn1 - only for the TLS creds/session test suite
2892 if $pkg_config --exists "libtasn1"; then
2893 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2894 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2900 ##########################################
2901 # getifaddrs (for tests/test-io-channel-socket )
2904 if ! check_include
"ifaddrs.h" ; then
2908 ##########################################
2911 if test "$vte" != "no"; then
2912 if test "$gtkabi" = "3.0"; then
2913 vteminversion
="0.32.0"
2914 if $pkg_config --exists "vte-2.91"; then
2915 vtepackage
="vte-2.91"
2917 vtepackage
="vte-2.90"
2921 vteminversion
="0.24.0"
2923 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2924 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2925 vte_libs
=$
($pkg_config --libs $vtepackage)
2926 vteversion
=$
($pkg_config --modversion $vtepackage)
2928 elif test "$vte" = "yes"; then
2929 if test "$gtkabi" = "3.0"; then
2930 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2932 feature_not_found
"vte" "Install libvte devel"
2939 ##########################################
2942 # Look for sdl configuration program (pkg-config or sdl-config). Try
2943 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2948 if test "$sdlabi" = ""; then
2949 if $pkg_config --exists "sdl2"; then
2951 elif $pkg_config --exists "sdl"; then
2958 if test $sdlabi = "2.0"; then
2959 sdl_config
=$sdl2_config
2961 sdlconfigname
=sdl2_config
2962 elif test $sdlabi = "1.2"; then
2964 sdlconfigname
=sdl_config
2966 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2969 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2970 sdl_config
=$sdlconfigname
2973 if $pkg_config $sdlname --exists; then
2974 sdlconfig
="$pkg_config $sdlname"
2975 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2976 elif has
${sdl_config}; then
2977 sdlconfig
="$sdl_config"
2978 sdlversion
=$
($sdlconfig --version)
2980 if test "$sdl" = "yes" ; then
2981 feature_not_found
"sdl" "Install SDL2-devel"
2984 # no need to do the rest
2987 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2988 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2993 #undef main /* We don't want SDL to override our main() */
2994 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2996 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2997 sdl_cflags
="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
2998 if test "$static" = "yes" ; then
2999 if $pkg_config $sdlname --exists; then
3000 sdl_libs
=$
($pkg_config $sdlname --static --libs 2>/dev
/null
)
3002 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
3005 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
3007 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
3008 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
3014 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
3015 if test "$sdl" = "yes" -a "$static" = "yes" ; then
3016 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
3017 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
3018 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
3020 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
3026 else # sdl not found
3027 if test "$sdl" = "yes" ; then
3028 feature_not_found
"sdl" "Install SDL devel"
3031 fi # sdl compile test
3034 if test "$sdl" != "no" ; then
3038 if test "$sdl" = "yes" ; then
3041 #if defined(SDL_VIDEO_DRIVER_X11)
3042 #include <X11/XKBlib.h>
3044 #error No x11 support
3046 int main(void) { return 0; }
3048 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
3050 sdl_cflags
="$sdl_cflags $x11_cflags"
3051 sdl_libs
="$sdl_libs $x11_libs"
3055 ##########################################
3056 # RDMA needs OpenFabrics libraries
3057 if test "$rdma" != "no" ; then
3059 #include <rdma/rdma_cma.h>
3060 int main(void) { return 0; }
3062 rdma_libs
="-lrdmacm -libverbs -libumad"
3063 if compile_prog
"" "$rdma_libs" ; then
3065 libs_softmmu
="$libs_softmmu $rdma_libs"
3067 if test "$rdma" = "yes" ; then
3069 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
3071 " (1) Fast: Install infiniband packages (devel) from your distro." \
3072 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3073 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3079 ##########################################
3082 cat > $TMPC <<EOF &&
3083 #include <sys/mman.h>
3090 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3096 if test "$rdma" = "yes" ; then
3099 if compile_prog
"" ""; then
3106 if ! compile_prog
"" ""; then
3107 error_exit
"PVRDMA is not supported since mremap is not implemented"
3116 if test "$pvrdma" = "yes" ; then
3117 error_exit
"PVRDMA requires rdma suppport"
3122 ##########################################
3123 # VNC SASL detection
3124 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
3126 #include <sasl/sasl.h>
3128 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3130 # Assuming Cyrus-SASL installed in /usr prefix
3132 vnc_sasl_libs
="-lsasl2"
3133 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3135 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
3136 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
3138 if test "$vnc_sasl" = "yes" ; then
3139 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
3145 ##########################################
3146 # VNC JPEG detection
3147 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
3150 #include <jpeglib.h>
3151 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3154 vnc_jpeg_libs
="-ljpeg"
3155 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3157 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
3158 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
3160 if test "$vnc_jpeg" = "yes" ; then
3161 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
3167 ##########################################
3169 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
3171 //#include <stdio.h>
3175 png_structp png_ptr;
3176 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
3177 return png_ptr != 0;
3180 if $pkg_config libpng
--exists; then
3181 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
3182 vnc_png_libs
=$
($pkg_config libpng
--libs)
3185 vnc_png_libs
="-lpng"
3187 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
3189 libs_softmmu
="$vnc_png_libs $libs_softmmu"
3190 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
3192 if test "$vnc_png" = "yes" ; then
3193 feature_not_found
"vnc-png" "Install libpng devel"
3199 ##########################################
3201 if test "$xkbcommon" != "no" ; then
3202 if $pkg_config xkbcommon
--exists; then
3203 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
3204 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
3207 if test "$xkbcommon" = "yes" ; then
3208 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
3214 ##########################################
3215 # fnmatch() probe, used for ACL routines
3218 #include <fnmatch.h>
3221 fnmatch("foo", "foo", 0);
3225 if compile_prog
"" "" ; then
3229 ##########################################
3230 # xfsctl() probe, used for file-posix.c
3231 if test "$xfs" != "no" ; then
3233 #include <stddef.h> /* NULL */
3234 #include <xfs/xfs.h>
3237 xfsctl(NULL, 0, 0, NULL);
3241 if compile_prog
"" "" ; then
3244 if test "$xfs" = "yes" ; then
3245 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3251 ##########################################
3252 # vde libraries probe
3253 if test "$vde" != "no" ; then
3254 vde_libs
="-lvdeplug"
3256 #include <libvdeplug.h>
3259 struct vde_open_args a = {0, 0, 0};
3265 if compile_prog
"" "$vde_libs" ; then
3268 if test "$vde" = "yes" ; then
3269 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3275 ##########################################
3276 # netmap support probe
3277 # Apart from looking for netmap headers, we make sure that the host API version
3278 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3279 # a minor/major version number. Minor new features will be marked with values up
3280 # to 15, and if something happens that requires a change to the backend we will
3281 # move above 15, submit the backend fixes and modify this two bounds.
3282 if test "$netmap" != "no" ; then
3284 #include <inttypes.h>
3286 #include <net/netmap.h>
3287 #include <net/netmap_user.h>
3288 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3291 int main(void) { return 0; }
3293 if compile_prog
"" "" ; then
3296 if test "$netmap" = "yes" ; then
3297 feature_not_found
"netmap"
3303 ##########################################
3304 # libcap-ng library probe
3305 if test "$cap_ng" != "no" ; then
3311 capng_capability_to_name(CAPNG_EFFECTIVE);
3315 if compile_prog
"" "$cap_libs" ; then
3317 libs_tools
="$cap_libs $libs_tools"
3319 if test "$cap_ng" = "yes" ; then
3320 feature_not_found
"cap_ng" "Install libcap-ng devel"
3326 ##########################################
3327 # Sound support libraries probe
3338 int main(void) { $exp }
3340 if compile_prog
"$cfl" "$lib" ; then
3343 error_exit
"$drv check failed" \
3344 "Make sure to have the $drv libs and headers installed."
3348 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3349 for drv
in $audio_drv_list; do
3352 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
3353 "return snd_pcm_close((snd_pcm_t *)0);"
3354 alsa_libs
="-lasound"
3358 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
3359 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3360 pulse_libs
="-lpulse"
3365 if test "$sdl" = "no"; then
3366 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3371 coreaudio_libs
="-framework CoreAudio"
3375 dsound_libs
="-lole32 -ldxguid"
3384 # XXX: Probes for CoreAudio, DirectSound
3388 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3389 error_exit
"Unknown driver '$drv' selected" \
3390 "Possible drivers are: $audio_possible_drivers"
3396 ##########################################
3399 if test "$brlapi" != "no" ; then
3400 brlapi_libs
="-lbrlapi"
3404 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3406 if compile_prog
"" "$brlapi_libs" ; then
3409 if test "$brlapi" = "yes" ; then
3410 feature_not_found
"brlapi" "Install brlapi devel"
3416 ##########################################
3418 if test "$curses" != "no" ; then
3419 if test "$mingw32" = "yes" ; then
3420 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3421 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3423 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3424 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3433 setlocale(LC_ALL, "");
3435 addwstr(L"wide chars\n");
3437 add_wch(WACS_DEGREE);
3442 for curses_inc
in $curses_inc_list; do
3443 # Make sure we get the wide character prototypes
3444 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3446 for curses_lib
in $curses_lib_list; do
3448 if compile_prog
"$curses_inc" "$curses_lib" ; then
3453 if test "$curses_found" = yes ; then
3458 if test "$curses_found" = "yes" ; then
3461 if test "$curses" = "yes" ; then
3462 feature_not_found
"curses" "Install ncurses devel"
3468 ##########################################
3470 if test "$curl" != "no" ; then
3471 if $pkg_config libcurl
--exists; then
3472 curlconfig
="$pkg_config libcurl"
3474 curlconfig
=curl-config
3477 #include <curl/curl.h>
3478 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3480 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3481 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3482 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3485 if test "$curl" = "yes" ; then
3486 feature_not_found
"curl" "Install libcurl devel"
3492 ##########################################
3493 # bluez support probe
3494 if test "$bluez" != "no" ; then
3496 #include <bluetooth/bluetooth.h>
3497 int main(void) { return bt_error(0); }
3499 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3500 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3501 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3503 libs_softmmu
="$bluez_libs $libs_softmmu"
3505 if test "$bluez" = "yes" ; then
3506 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3512 ##########################################
3513 # glib support probe
3516 glib_modules
=gthread-2.0
3517 if test "$modules" = yes; then
3518 glib_modules
="$glib_modules gmodule-export-2.0"
3521 # This workaround is required due to a bug in pkg-config file for glib as it
3522 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3524 if test "$static" = yes -a "$mingw32" = yes; then
3525 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3528 for i
in $glib_modules; do
3529 if $pkg_config --atleast-version=$glib_req_ver $i; then
3530 glib_cflags
=$
($pkg_config --cflags $i)
3531 glib_libs
=$
($pkg_config --libs $i)
3532 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3533 LIBS
="$glib_libs $LIBS"
3534 libs_qga
="$glib_libs $libs_qga"
3536 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3540 # Sanity check that the current size_t matches the
3541 # size that glib thinks it should be. This catches
3542 # problems on multi-arch where people try to build
3543 # 32-bit QEMU while pointing at 64-bit glib headers
3548 #define QEMU_BUILD_BUG_ON(x) \
3549 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3552 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3557 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3558 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3559 "You probably need to set PKG_CONFIG_LIBDIR"\
3560 "to point to the right pkg-config files for your"\
3564 # g_test_trap_subprocess added in 2.38. Used by some tests.
3566 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
3570 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3573 int main(void) { return 0; }
3575 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3576 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3577 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3578 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3582 ##########################################
3583 # SHA command probe for modules
3584 if test "$modules" = yes; then
3585 shacmd_probe
="sha1sum sha1 shasum"
3586 for c
in $shacmd_probe; do
3592 if test "$shacmd" = ""; then
3593 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3597 ##########################################
3598 # pixman support probe
3600 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3603 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3604 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3605 pixman_libs
=$
($pkg_config --libs pixman-1
)
3607 error_exit
"pixman >= 0.21.8 not present." \
3608 "Please install the pixman devel package."
3611 ##########################################
3612 # libmpathpersist probe
3614 if test "$mpath" != "no" ; then
3615 # probe for the new API
3617 #include <libudev.h>
3618 #include <mpath_persist.h>
3619 unsigned mpath_mx_alloc_len = 1024;
3621 static struct config *multipath_conf;
3622 extern struct udev *udev;
3623 extern struct config *get_multipath_config(void);
3624 extern void put_multipath_config(struct config *conf);
3626 struct config *get_multipath_config(void) { return multipath_conf; }
3627 void put_multipath_config(struct config *conf) { }
3631 multipath_conf = mpath_lib_init();
3635 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3637 mpathpersist_new_api
=yes
3639 # probe for the old API
3641 #include <libudev.h>
3642 #include <mpath_persist.h>
3643 unsigned mpath_mx_alloc_len = 1024;
3646 struct udev *udev = udev_new();
3647 mpath_lib_init(udev);
3651 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3653 mpathpersist_new_api
=no
3662 ##########################################
3665 if test "$cap" != "no" ; then
3668 #include <sys/capability.h>
3669 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3671 if compile_prog
"" "-lcap" ; then
3678 ##########################################
3680 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3684 #include <pthread.h>
3685 static void *f(void *p) { return NULL; }
3688 pthread_create(&thread, 0, f, 0);
3692 if compile_prog
"" "" ; then
3695 for pthread_lib
in $PTHREADLIBS_LIST; do
3696 if compile_prog
"" "$pthread_lib" ; then
3699 for lib_entry
in $LIBS; do
3700 if test "$lib_entry" = "$pthread_lib"; then
3705 if test "$found" = "no"; then
3706 LIBS
="$pthread_lib $LIBS"
3707 libs_qga
="$pthread_lib $libs_qga"
3709 PTHREAD_LIB
="$pthread_lib"
3715 if test "$mingw32" != yes -a "$pthread" = no
; then
3716 error_exit
"pthread check failed" \
3717 "Make sure to have the pthread libs and headers installed."
3720 # check for pthread_setname_np
3721 pthread_setname_np
=no
3723 #include <pthread.h>
3725 static void *f(void *p) { return NULL; }
3729 pthread_create(&thread, 0, f, 0);
3730 pthread_setname_np(thread, "QEMU");
3734 if compile_prog
"" "$pthread_lib" ; then
3735 pthread_setname_np
=yes
3738 ##########################################
3740 if test "$rbd" != "no" ; then
3743 #include <rbd/librbd.h>
3746 rados_create(&cluster, NULL);
3750 rbd_libs
="-lrbd -lrados"
3751 if compile_prog
"" "$rbd_libs" ; then
3754 if test "$rbd" = "yes" ; then
3755 feature_not_found
"rados block device" "Install librbd/ceph devel"
3761 ##########################################
3763 min_libssh2_version
=1.2.8
3764 if test "$libssh2" != "no" ; then
3765 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3766 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3767 libssh2_libs
=$
($pkg_config libssh2
--libs)
3770 if test "$libssh2" = "yes" ; then
3771 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3777 ##########################################
3778 # libssh2_sftp_fsync probe
3780 if test "$libssh2" = "yes"; then
3783 #include <libssh2.h>
3784 #include <libssh2_sftp.h>
3786 LIBSSH2_SESSION *session;
3788 LIBSSH2_SFTP_HANDLE *sftp_handle;
3789 session = libssh2_session_init ();
3790 sftp = libssh2_sftp_init (session);
3791 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3792 libssh2_sftp_fsync (sftp_handle);
3796 # libssh2_cflags/libssh2_libs defined in previous test.
3797 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3798 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3802 ##########################################
3805 if test "$linux_aio" != "no" ; then
3808 #include <sys/eventfd.h>
3810 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3812 if compile_prog
"" "-laio" ; then
3815 if test "$linux_aio" = "yes" ; then
3816 feature_not_found
"linux AIO" "Install libaio devel"
3822 ##########################################
3823 # TPM passthrough is only on x86 Linux
3825 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3826 tpm_passthrough
=$tpm
3831 # TPM emulator is for all posix systems
3832 if test "$mingw32" != "yes"; then
3837 ##########################################
3840 if test "$attr" != "no" ; then
3843 #include <sys/types.h>
3844 #ifdef CONFIG_LIBATTR
3845 #include <attr/xattr.h>
3847 #include <sys/xattr.h>
3849 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3851 if compile_prog
"" "" ; then
3853 # Older distros have <attr/xattr.h>, and need -lattr:
3854 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3859 if test "$attr" = "yes" ; then
3860 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3866 ##########################################
3869 #include <sys/types.h>
3870 #include <sys/uio.h>
3872 int main(void) { return sizeof(struct iovec); }
3875 if compile_prog
"" "" ; then
3879 ##########################################
3882 #include <sys/types.h>
3883 #include <sys/uio.h>
3885 int main(void) { return preadv(0, 0, 0, 0); }
3888 if compile_prog
"" "" ; then
3892 ##########################################
3894 # fdt support is mandatory for at least some target architectures,
3895 # so insist on it if we're building those system emulators.
3897 for target
in $target_list; do
3899 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu|riscv
*-softmmu)
3905 if test "$fdt_required" = "yes"; then
3906 if test "$fdt" = "no"; then
3907 error_exit
"fdt disabled but some requested targets require it." \
3908 "You can turn off fdt only if you also disable all the system emulation" \
3909 "targets which need it (by specifying a cut down --target-list)."
3914 if test "$fdt" != "no" ; then
3916 # explicitly check for libfdt_env.h as it is missing in some stable installs
3917 # and test for required functions to make sure we are on a version >= 1.4.2
3920 #include <libfdt_env.h>
3921 int main(void) { fdt_first_subnode(0, 0); return 0; }
3923 if compile_prog
"" "$fdt_libs" ; then
3924 # system DTC is good - use it
3927 # have GIT checkout, so activate dtc submodule
3928 if test -e "${source_path}/.git" ; then
3929 git_submodules
="${git_submodules} dtc"
3931 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
3934 if [ "$pwd_is_source_path" != "y" ] ; then
3935 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3936 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3938 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3939 fdt_ldflags
="-L\$(BUILD_DIR)/dtc/libfdt"
3940 fdt_libs
="$fdt_libs"
3941 elif test "$fdt" = "yes" ; then
3942 # Not a git build & no libfdt found, prompt for system install
3943 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
3944 "Please install the DTC (libfdt) devel package"
3946 # don't have and don't want
3953 libs_softmmu
="$libs_softmmu $fdt_libs"
3955 ##########################################
3956 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3958 if test "$opengl" != "no" ; then
3959 opengl_pkgs
="epoxy gbm"
3960 if $pkg_config $opengl_pkgs; then
3961 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs)"
3962 opengl_libs
="$($pkg_config --libs $opengl_pkgs)"
3964 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3967 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3969 if test "$opengl" = "yes" ; then
3970 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3978 if test "$opengl" = "yes"; then
3980 #include <epoxy/egl.h>
3981 #ifndef EGL_MESA_image_dma_buf_export
3982 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3984 int main(void) { return 0; }
3986 if compile_prog
"" "" ; then
3991 ##########################################
3993 if test "$libxml2" != "no" ; then
3994 if $pkg_config --exists libxml-2.0
; then
3996 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
3997 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
3999 if test "$libxml2" = "yes"; then
4000 feature_not_found
"libxml2" "Install libxml2 devel"
4006 ##########################################
4008 if test "$glusterfs" != "no" ; then
4009 if $pkg_config --atleast-version=3 glusterfs-api
; then
4011 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
4012 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
4013 if $pkg_config --atleast-version=4 glusterfs-api
; then
4014 glusterfs_xlator_opt
="yes"
4016 if $pkg_config --atleast-version=5 glusterfs-api
; then
4017 glusterfs_discard
="yes"
4019 if $pkg_config --atleast-version=6 glusterfs-api
; then
4020 glusterfs_fallocate
="yes"
4021 glusterfs_zerofill
="yes"
4024 if test "$glusterfs" = "yes" ; then
4025 feature_not_found
"GlusterFS backend support" \
4026 "Install glusterfs-api devel >= 3"
4032 # Check for inotify functions when we are building linux-user
4033 # emulator. This is done because older glibc versions don't
4034 # have syscall stubs for these implemented. In that case we
4035 # don't provide them even if kernel supports them.
4039 #include <sys/inotify.h>
4044 /* try to start inotify */
4045 return inotify_init();
4048 if compile_prog
"" "" ; then
4054 #include <sys/inotify.h>
4059 /* try to start inotify */
4060 return inotify_init1(0);
4063 if compile_prog
"" "" ; then
4067 # check if pipe2 is there
4076 return pipe2(pipefd, O_CLOEXEC);
4079 if compile_prog
"" "" ; then
4083 # check if accept4 is there
4086 #include <sys/socket.h>
4091 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4095 if compile_prog
"" "" ; then
4099 # check if tee/splice is there. vmsplice was added same time.
4109 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4110 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4114 if compile_prog
"" "" ; then
4118 ##########################################
4121 if test "$numa" != "no" ; then
4124 int main(void) { return numa_available(); }
4127 if compile_prog
"" "-lnuma" ; then
4129 libs_softmmu
="-lnuma $libs_softmmu"
4131 if test "$numa" = "yes" ; then
4132 feature_not_found
"numa" "install numactl devel"
4138 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4139 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4143 # Even if malloc_trim() is available, these non-libc memory allocators
4144 # do not support it.
4145 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
4146 if test "$malloc_trim" = "yes" ; then
4147 echo "Disabling malloc_trim with non-libc memory allocator"
4152 #######################################
4155 if test "$malloc_trim" != "no" ; then
4158 int main(void) { malloc_trim(0); return 0; }
4160 if compile_prog
"" "" ; then
4167 ##########################################
4170 if test "$tcmalloc" = "yes" ; then
4173 int main(void) { malloc(1); return 0; }
4176 if compile_prog
"" "-ltcmalloc" ; then
4177 LIBS
="-ltcmalloc $LIBS"
4179 feature_not_found
"tcmalloc" "install gperftools devel"
4183 ##########################################
4186 if test "$jemalloc" = "yes" ; then
4189 int main(void) { malloc(1); return 0; }
4192 if compile_prog
"" "-ljemalloc" ; then
4193 LIBS
="-ljemalloc $LIBS"
4195 feature_not_found
"jemalloc" "install jemalloc devel"
4199 ##########################################
4204 #include <sys/syscall.h>
4206 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4209 if compile_prog
"" "" ; then
4213 # check if eventfd is supported
4216 #include <sys/eventfd.h>
4220 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
4223 if compile_prog
"" "" ; then
4227 # check if memfd is supported
4230 #include <sys/mman.h>
4234 return memfd_create("foo", MFD_ALLOW_SEALING);
4237 if compile_prog
"" "" ; then
4243 # check for fallocate
4250 fallocate(0, 0, 0, 0);
4254 if compile_prog
"" "" ; then
4258 # check for fallocate hole punching
4259 fallocate_punch_hole
=no
4262 #include <linux/falloc.h>
4266 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4270 if compile_prog
"" "" ; then
4271 fallocate_punch_hole
=yes
4274 # check that fallocate supports range zeroing inside the file
4275 fallocate_zero_range
=no
4278 #include <linux/falloc.h>
4282 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4286 if compile_prog
"" "" ; then
4287 fallocate_zero_range
=yes
4290 # check for posix_fallocate
4297 posix_fallocate(0, 0, 0);
4301 if compile_prog
"" "" ; then
4305 # check for sync_file_range
4312 sync_file_range(0, 0, 0, 0);
4316 if compile_prog
"" "" ; then
4320 # check for linux/fiemap.h and FS_IOC_FIEMAP
4323 #include <sys/ioctl.h>
4324 #include <linux/fs.h>
4325 #include <linux/fiemap.h>
4329 ioctl(0, FS_IOC_FIEMAP, 0);
4333 if compile_prog
"" "" ; then
4348 if compile_prog
"" "" ; then
4352 # check for ppoll support
4359 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4360 ppoll(&pfd, 1, 0, 0);
4364 if compile_prog
"" "" ; then
4368 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4369 prctl_pr_set_timerslack
=no
4371 #include <sys/prctl.h>
4375 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4379 if compile_prog
"" "" ; then
4380 prctl_pr_set_timerslack
=yes
4383 # check for epoll support
4386 #include <sys/epoll.h>
4394 if compile_prog
"" "" ; then
4398 # epoll_create1 is a later addition
4399 # so we must check separately for its presence
4402 #include <sys/epoll.h>
4406 /* Note that we use epoll_create1 as a value, not as
4407 * a function being called. This is necessary so that on
4408 * old SPARC glibc versions where the function was present in
4409 * the library but not declared in the header file we will
4410 * fail the configure check. (Otherwise we will get a compiler
4411 * warning but not an error, and will proceed to fail the
4412 * qemu compile where we compile with -Werror.)
4414 return (int)(uintptr_t)&epoll_create1;
4417 if compile_prog
"" "" ; then
4421 # check for sendfile support
4424 #include <sys/sendfile.h>
4428 return sendfile(0, 0, 0, 0);
4431 if compile_prog
"" "" ; then
4435 # check for timerfd support (glibc 2.8 and newer)
4438 #include <sys/timerfd.h>
4442 return(timerfd_create(CLOCK_REALTIME, 0));
4445 if compile_prog
"" "" ; then
4449 # check for setns and unshare support
4462 if compile_prog
"" "" ; then
4466 # clock_adjtime probe
4473 return clock_adjtime(0, 0);
4477 if compile_prog
"" "" ; then
4492 if compile_prog
"" "" ; then
4496 # Check if tools are available to build documentation.
4497 if test "$docs" != "no" ; then
4498 if has makeinfo
&& has pod2man
; then
4501 if test "$docs" = "yes" ; then
4502 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4508 # Search for bswap_32 function
4511 #include <byteswap.h>
4512 int main(void) { return bswap_32(0); }
4514 if compile_prog
"" "" ; then
4518 # Search for bswap32 function
4521 #include <sys/endian.h>
4522 #include <sys/types.h>
4523 #include <machine/bswap.h>
4524 int main(void) { return bswap32(0); }
4526 if compile_prog
"" "" ; then
4530 ##########################################
4531 # Do we have libiscsi >= 1.9.0
4532 if test "$libiscsi" != "no" ; then
4533 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4535 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4536 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4538 if test "$libiscsi" = "yes" ; then
4539 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4545 ##########################################
4549 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4551 if compile_prog
"" "" ; then
4553 elif compile_prog
"" "-lm" ; then
4555 libs_qga
="-lm $libs_qga"
4557 error_exit
"libm check failed"
4560 ##########################################
4562 # uClibc provides 2 versions of clock_gettime(), one with realtime
4563 # support and one without. This means that the clock_gettime() don't
4564 # need -lrt. We still need it for timer_create() so we check for this
4565 # function in addition.
4570 timer_create(CLOCK_REALTIME, NULL, NULL);
4571 return clock_gettime(CLOCK_REALTIME, NULL);
4575 if compile_prog
"" "" ; then
4577 # we need pthread for static linking. use previous pthread test result
4578 elif compile_prog
"" "$pthread_lib -lrt" ; then
4580 libs_qga
="$libs_qga -lrt"
4583 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4584 "$haiku" != "yes" ; then
4585 libs_softmmu
="-lutil $libs_softmmu"
4588 ##########################################
4590 if test "$spice" != "no" ; then
4593 int main(void) { spice_server_new(); return 0; }
4595 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4596 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4597 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4598 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4599 compile_prog
"$spice_cflags" "$spice_libs" ; then
4601 libs_softmmu
="$libs_softmmu $spice_libs"
4602 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4603 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4604 spice_server_version
=$
($pkg_config --modversion spice-server
)
4606 if test "$spice" = "yes" ; then
4607 feature_not_found
"spice" \
4608 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4614 # check for smartcard support
4615 if test "$smartcard" != "no"; then
4616 if $pkg_config --atleast-version=2.5.1 libcacard
; then
4617 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4618 libcacard_libs
=$
($pkg_config --libs libcacard
)
4621 if test "$smartcard" = "yes"; then
4622 feature_not_found
"smartcard" "Install libcacard devel"
4629 if test "$libusb" != "no" ; then
4630 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4632 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4633 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4635 if test "$libusb" = "yes"; then
4636 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4642 # check for usbredirparser for usb network redirection support
4643 if test "$usb_redir" != "no" ; then
4644 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4646 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4647 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4649 if test "$usb_redir" = "yes"; then
4650 feature_not_found
"usb-redir" "Install usbredir devel"
4656 ##########################################
4657 # check if we have VSS SDK headers for win
4659 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4660 case "$vss_win32_sdk" in
4661 "") vss_win32_include
="-isystem $source_path" ;;
4662 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4663 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4664 vss_win32_include
="-isystem $source_path/.sdk/vss"
4665 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4667 *) vss_win32_include
="-isystem $vss_win32_sdk"
4670 #define __MIDL_user_allocate_free_DEFINED__
4671 #include <inc/win2003/vss.h>
4672 int main(void) { return VSS_CTX_BACKUP; }
4674 if compile_prog
"$vss_win32_include" "" ; then
4675 guest_agent_with_vss
="yes"
4676 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4677 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4678 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4680 if test "$vss_win32_sdk" != "" ; then
4681 echo "ERROR: Please download and install Microsoft VSS SDK:"
4682 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4683 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4684 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4685 echo "ERROR: The headers are extracted in the directory \`inc'."
4686 feature_not_found
"VSS support"
4688 guest_agent_with_vss
="no"
4692 ##########################################
4693 # lookup Windows platform SDK (if not specified)
4694 # The SDK is needed only to build .tlb (type library) file of guest agent
4695 # VSS provider from the source. It is usually unnecessary because the
4696 # pre-compiled .tlb file is included.
4698 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4699 if test -z "$win_sdk"; then
4700 programfiles
="$PROGRAMFILES"
4701 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4702 if test -n "$programfiles"; then
4703 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4705 feature_not_found
"Windows SDK"
4707 elif test "$win_sdk" = "no"; then
4712 ##########################################
4713 # check if mingw environment provides a recent ntddscsi.h
4714 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4716 #include <windows.h>
4717 #include <ntddscsi.h>
4719 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4720 #error Missing required ioctl definitions
4722 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4726 if compile_prog
"" "" ; then
4727 guest_agent_ntddscsi
=yes
4728 libs_qga
="-lsetupapi $libs_qga"
4732 ##########################################
4733 # virgl renderer probe
4735 if test "$virglrenderer" != "no" ; then
4737 #include <virglrenderer.h>
4738 int main(void) { virgl_renderer_poll(); return 0; }
4740 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4741 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4742 virgl_version
=$
($pkg_config --modversion virglrenderer
2>/dev
/null
)
4743 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4744 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4747 if test "$virglrenderer" = "yes" ; then
4748 feature_not_found
"virglrenderer"
4754 ##########################################
4759 if $pkg_config capstone
; then
4761 elif test -e "${source_path}/.git" -a $git_update = 'yes' ; then
4763 elif test -e "${source_path}/capstone/Makefile" ; then
4765 elif test -z "$capstone" ; then
4768 feature_not_found
"capstone" "Install capstone devel or git submodule"
4773 if ! $pkg_config capstone
; then
4774 feature_not_found
"capstone" "Install capstone devel"
4781 if test "$capstone" = git
; then
4782 git_submodules
="${git_submodules} capstone"
4785 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4786 if test "$mingw32" = "yes"; then
4787 LIBCAPSTONE
=capstone.lib
4789 LIBCAPSTONE
=libcapstone.a
4791 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4795 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4796 LIBS
="$($pkg_config --libs capstone) $LIBS"
4802 error_exit
"Unknown state for capstone: $capstone"
4806 ##########################################
4807 # check if we have fdatasync
4813 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4814 return fdatasync(0);
4816 #error Not supported
4820 if compile_prog
"" "" ; then
4824 ##########################################
4825 # check if we have madvise
4829 #include <sys/types.h>
4830 #include <sys/mman.h>
4832 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4834 if compile_prog
"" "" ; then
4838 ##########################################
4839 # check if we have posix_madvise
4843 #include <sys/mman.h>
4845 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4847 if compile_prog
"" "" ; then
4851 ##########################################
4852 # check if we have posix_memalign()
4859 return posix_memalign(&p, 8, 8);
4862 if compile_prog
"" "" ; then
4866 ##########################################
4867 # check if we have posix_syslog
4872 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4874 if compile_prog
"" "" ; then
4878 ##########################################
4879 # check if we have sem_timedwait
4883 #include <semaphore.h>
4884 int main(void) { return sem_timedwait(0, 0); }
4886 if compile_prog
"" "" ; then
4890 ##########################################
4891 # check if we have strchrnul
4897 // Use a haystack that the compiler shouldn't be able to constant fold
4898 char *haystack = (char*)&main;
4899 int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
4901 if compile_prog
"" "" ; then
4905 ##########################################
4906 # check if trace backend exists
4908 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4909 if test "$?" -ne 0 ; then
4910 error_exit
"invalid trace backends" \
4911 "Please choose supported trace backends."
4914 ##########################################
4915 # For 'ust' backend, test if ust headers are present
4916 if have_backend
"ust"; then
4918 #include <lttng/tracepoint.h>
4919 int main(void) { return 0; }
4921 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4922 if $pkg_config lttng-ust
--exists; then
4923 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4925 lttng_ust_libs
="-llttng-ust -ldl"
4927 if $pkg_config liburcu-bp
--exists; then
4928 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4930 urcu_bp_libs
="-lurcu-bp"
4933 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4934 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4936 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4940 ##########################################
4941 # For 'dtrace' backend, test if 'dtrace' command is present
4942 if have_backend
"dtrace"; then
4943 if ! has
'dtrace' ; then
4944 error_exit
"dtrace command is not found in PATH $PATH"
4946 trace_backend_stap
="no"
4947 if has
'stap' ; then
4948 trace_backend_stap
="yes"
4952 ##########################################
4953 # check and set a backend for coroutine
4955 # We prefer ucontext, but it's not always possible. The fallback
4956 # is sigcontext. On Windows the only valid backend is the Windows
4960 if test "$darwin" != "yes"; then
4962 #include <ucontext.h>
4963 #ifdef __stub_makecontext
4964 #error Ignoring glibc stub makecontext which will always fail
4966 int main(void) { makecontext(0, 0, 0); return 0; }
4968 if compile_prog
"" "" ; then
4973 if test "$coroutine" = ""; then
4974 if test "$mingw32" = "yes"; then
4976 elif test "$ucontext_works" = "yes"; then
4979 coroutine
=sigaltstack
4984 if test "$mingw32" != "yes"; then
4985 error_exit
"'windows' coroutine backend only valid for Windows"
4987 # Unfortunately the user visible backend name doesn't match the
4988 # coroutine-*.c filename for this case, so we have to adjust it here.
4992 if test "$ucontext_works" != "yes"; then
4993 feature_not_found
"ucontext"
4997 if test "$mingw32" = "yes"; then
4998 error_exit
"only the 'windows' coroutine backend is valid for Windows"
5002 error_exit
"unknown coroutine backend $coroutine"
5007 if test "$coroutine_pool" = ""; then
5011 if test "$debug_stack_usage" = "yes"; then
5012 if test "$coroutine_pool" = "yes"; then
5013 echo "WARN: disabling coroutine pool for stack usage debugging"
5019 ##########################################
5020 # check if we have open_by_handle_at
5022 open_by_handle_at
=no
5025 #if !defined(AT_EMPTY_PATH)
5026 # error missing definition
5028 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
5031 if compile_prog
"" "" ; then
5032 open_by_handle_at
=yes
5035 ########################################
5036 # check if we have linux/magic.h
5040 #include <linux/magic.h>
5045 if compile_prog
"" "" ; then
5049 ########################################
5050 # check whether we can disable warning option with a pragma (this is needed
5051 # to silence warnings in the headers of some versions of external libraries).
5052 # This test has to be compiled with -Werror as otherwise an unknown pragma is
5055 # If we can't selectively disable warning in the code, disable -Werror so that
5056 # the build doesn't fail anyway.
5058 pragma_disable_unused_but_set
=no
5060 #pragma GCC diagnostic push
5061 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
5062 #pragma GCC diagnostic pop
5068 if compile_prog
"-Werror" "" ; then
5069 pragma_diagnostic_available
=yes
5074 ########################################
5075 # check if we have valgrind/valgrind.h
5079 #include <valgrind/valgrind.h>
5084 if compile_prog
"" "" ; then
5088 ########################################
5089 # check if environ is declared
5099 if compile_prog
"" "" ; then
5103 ########################################
5104 # check if cpuid.h is usable.
5109 unsigned a, b, c, d;
5110 int max = __get_cpuid_max(0, 0);
5113 __cpuid(1, a, b, c, d);
5117 __cpuid_count(7, 0, a, b, c, d);
5123 if compile_prog
"" "" ; then
5127 ##########################################
5128 # avx2 optimization requirement check
5130 # There is no point enabling this if cpuid.h is not usable,
5131 # since we won't be able to select the new routines.
5133 if test $cpuid_h = yes; then
5135 #pragma GCC push_options
5136 #pragma GCC target("avx2")
5138 #include <immintrin.h>
5139 static int bar(void *a) {
5140 __m256i x = *(__m256i *)a;
5141 return _mm256_testz_si256(x, x);
5143 int main(int argc, char *argv[]) { return bar(argv[0]); }
5145 if compile_object
"" ; then
5150 ########################################
5151 # check if __[u]int128_t is usable.
5155 #if defined(__clang_major__) && defined(__clang_minor__)
5156 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
5157 # error __int128_t does not work in CLANG before 3.2
5169 if compile_prog
"" "" ; then
5173 #########################################
5174 # See if 128-bit atomic operations are supported.
5177 if test "$int128" = "yes"; then
5181 unsigned __int128 x = 0, y = 0;
5182 y = __atomic_load_16(&x, 0);
5183 __atomic_store_16(&x, y, 0);
5184 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5188 if compile_prog
"" "" ; then
5193 #########################################
5194 # See if 64-bit atomic operations are supported.
5195 # Note that without __atomic builtins, we can only
5196 # assume atomic loads/stores max at pointer size.
5202 uint64_t x = 0, y = 0;
5203 #ifdef __ATOMIC_RELAXED
5204 y = __atomic_load_8(&x, 0);
5205 __atomic_store_8(&x, y, 0);
5206 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5207 __atomic_exchange_8(&x, y, 0);
5208 __atomic_fetch_add_8(&x, y, 0);
5210 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5211 __sync_lock_test_and_set(&x, y);
5212 __sync_val_compare_and_swap(&x, y, 0);
5213 __sync_fetch_and_add(&x, y);
5218 if compile_prog
"" "" ; then
5222 ########################################
5223 # See if 16-byte vector operations are supported.
5224 # Even without a vector unit the compiler may expand these.
5225 # There is a bug in old GCC for PPC that crashes here.
5226 # Unfortunately it's the system compiler for Centos 7.
5229 typedef unsigned char U1 __attribute__((vector_size(16)));
5230 typedef unsigned short U2 __attribute__((vector_size(16)));
5231 typedef unsigned int U4 __attribute__((vector_size(16)));
5232 typedef unsigned long long U8 __attribute__((vector_size(16)));
5233 typedef signed char S1 __attribute__((vector_size(16)));
5234 typedef signed short S2 __attribute__((vector_size(16)));
5235 typedef signed int S4 __attribute__((vector_size(16)));
5236 typedef signed long long S8 __attribute__((vector_size(16)));
5246 void helper(void *d, void *a, int shift, int i);
5247 void helper(void *d, void *a, int shift, int i)
5249 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5250 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5251 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5252 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5256 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5257 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5258 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5259 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5260 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5261 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5262 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5263 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5264 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5270 if compile_prog
"" "" ; then
5274 ########################################
5275 # check if getauxval is available.
5279 #include <sys/auxv.h>
5281 return getauxval(AT_HWCAP) == 0;
5284 if compile_prog
"" "" ; then
5288 ########################################
5289 # check if ccache is interfering with
5290 # semantic analysis of macros
5295 static const int Z = 1;
5296 #define fn() ({ Z; })
5297 #define TAUT(X) ((X) == Z)
5298 #define PAREN(X, Y) (X == Y)
5300 int main(int argc, char *argv[])
5306 if (PAREN(x, y)) return 0;
5307 if (TAUT(Z)) return 0;
5312 if ! compile_object
"-Werror"; then
5316 #################################################
5317 # clang does not support glibc + FORTIFY_SOURCE.
5319 if test "$fortify_source" != "no"; then
5320 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
5321 fortify_source
="no";
5322 elif test -n "$cxx" && has
$cxx &&
5323 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
5324 fortify_source
="no";
5326 fortify_source
="yes"
5330 ###############################################
5331 # Check if copy_file_range is provided by glibc
5332 have_copy_file_range
=no
5336 copy_file_range(0, NULL, 0, NULL, 0, 0);
5340 if compile_prog
"" "" ; then
5341 have_copy_file_range
=yes
5344 ##########################################
5345 # check if struct fsxattr is available via linux/fs.h
5349 #include <linux/fs.h>
5355 if compile_prog
"" "" ; then
5359 ##########################################
5360 # check for usable membarrier system call
5361 if test "$membarrier" = "yes"; then
5363 if test "$mingw32" = "yes" ; then
5365 elif test "$linux" = "yes" ; then
5367 #include <linux/membarrier.h>
5368 #include <sys/syscall.h>
5372 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5373 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5377 if compile_prog
"" "" ; then
5381 if test "$have_membarrier" = "no"; then
5382 feature_not_found
"membarrier" "membarrier system call not available"
5385 # Do not enable it by default even for Mingw32, because it doesn't
5390 ##########################################
5391 # check if rtnetlink.h exists and is useful
5394 #include <linux/rtnetlink.h>
5396 return IFLA_PROTO_DOWN;
5399 if compile_prog
"" "" ; then
5403 ##########################################
5404 # check for usable AF_VSOCK environment
5408 #include <sys/types.h>
5409 #include <sys/socket.h>
5410 #if !defined(AF_VSOCK)
5411 # error missing AF_VSOCK flag
5413 #include <linux/vm_sockets.h>
5416 struct sockaddr_vm svm;
5417 socklen_t len = sizeof(svm);
5418 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5419 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5420 if ((ret == -1) && (errno == ENOTCONN)) {
5426 if compile_prog
"" "" ; then
5430 ##########################################
5431 # check for usable AF_ALG environment
5435 #include <sys/types.h>
5436 #include <sys/socket.h>
5437 #include <linux/if_alg.h>
5440 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5444 if compile_prog
"" "" ; then
5447 if test "$crypto_afalg" = "yes"
5449 if test "$have_afalg" != "yes"
5451 error_exit
"AF_ALG requested but could not be detected"
5456 #################################################
5457 # Check to see if we have the Hypervisor framework
5458 if [ "$darwin" = "yes" ] ; then
5460 #include <Hypervisor/hv.h>
5461 int main() { return 0;}
5463 if ! compile_object
""; then
5467 LDFLAGS
="-framework Hypervisor $LDFLAGS"
5471 #################################################
5472 # Sparc implicitly links with --relax, which is
5473 # incompatible with -r, so --no-relax should be
5474 # given. It does no harm to give it on other
5477 # Note: the prototype is needed since QEMU_CFLAGS
5478 # contains -Wmissing-prototypes
5480 extern int foo(void);
5481 int foo(void) { return 0; }
5483 if ! compile_object
""; then
5484 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5486 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5487 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5492 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5493 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5496 ##########################################
5497 # check for sysmacros.h
5501 #include <sys/sysmacros.h>
5503 return makedev(0, 0);
5506 if compile_prog
"" "" ; then
5510 ##########################################
5511 # Veritas HyperScale block driver VxHS
5512 # Check if libvxhs is installed
5514 if test "$vxhs" != "no" ; then
5517 #include <qnio/qnio_api.h>
5519 void *vxhs_callback;
5522 iio_init(QNIO_VERSION, vxhs_callback);
5526 vxhs_libs
="-lvxhs -lssl"
5527 if compile_prog
"" "$vxhs_libs" ; then
5530 if test "$vxhs" = "yes" ; then
5531 feature_not_found
"vxhs block device" "Install libvxhs See github"
5537 ##########################################
5538 # check for _Static_assert()
5540 have_static_assert
=no
5542 _Static_assert(1, "success");
5547 if compile_prog
"" "" ; then
5548 have_static_assert
=yes
5551 ##########################################
5552 # check for utmpx.h, it is missing e.g. on OpenBSD
5557 struct utmpx user_info;
5562 if compile_prog
"" "" ; then
5566 ##########################################
5567 # checks for sanitizers
5571 have_asan_iface_h
=no
5572 have_asan_iface_fiber
=no
5574 if test "$sanitizers" = "yes" ; then
5576 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5580 # we could use a simple skeleton for flags checks, but this also
5581 # detect the static linking issue of ubsan, see also:
5582 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5586 void *tmp = malloc(10);
5587 return *(int *)(tmp + 2);
5590 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5594 if check_include
"sanitizer/asan_interface.h" ; then
5595 have_asan_iface_h
=yes
5599 #include <sanitizer/asan_interface.h>
5601 __sanitizer_start_switch_fiber(0, 0, 0);
5605 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5606 have_asan_iface_fiber
=yes
5610 ##########################################
5611 # Docker and cross-compiler support
5613 # This is specifically for building test
5614 # cases for foreign architectures, not
5615 # cross-compiling QEMU itself.
5617 if has
"docker"; then
5618 docker
=$
($python $source_path/tests
/docker
/docker.py probe
)
5621 ##########################################
5624 if test "$libpmem" != "no"; then
5625 if $pkg_config --exists "libpmem"; then
5627 libpmem_libs
=$
($pkg_config --libs libpmem
)
5628 libpmem_cflags
=$
($pkg_config --cflags libpmem
)
5629 libs_softmmu
="$libs_softmmu $libpmem_libs"
5630 QEMU_CFLAGS
="$QEMU_CFLAGS $libpmem_cflags"
5632 if test "$libpmem" = "yes" ; then
5633 feature_not_found
"libpmem" "Install nvml or pmdk"
5639 ##########################################
5641 # After here, no more $cc or $ld runs
5645 if test "$gcov" = "yes" ; then
5646 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5647 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5648 elif test "$fortify_source" = "yes" ; then
5649 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5650 elif test "$debug" = "no"; then
5651 CFLAGS
="-O2 $CFLAGS"
5654 if test "$have_asan" = "yes"; then
5655 CFLAGS
="-fsanitize=address $CFLAGS"
5656 if test "$have_asan_iface_h" = "no" ; then
5657 echo "ASAN build enabled, but ASAN header missing." \
5658 "Without code annotation, the report may be inferior."
5659 elif test "$have_asan_iface_fiber" = "no" ; then
5660 echo "ASAN build enabled, but ASAN header is too old." \
5661 "Without code annotation, the report may be inferior."
5664 if test "$have_ubsan" = "yes"; then
5665 CFLAGS
="-fsanitize=undefined $CFLAGS"
5668 ##########################################
5670 if test "$libnfs" != "no" ; then
5671 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5673 libnfs_libs
=$
($pkg_config --libs libnfs
)
5675 if test "$libnfs" = "yes" ; then
5676 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5682 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5683 if test "$werror" = "yes"; then
5684 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5687 if test "$solaris" = "no" ; then
5688 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5689 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5693 # test if pod2man has --utf8 option
5694 if pod2man
--help |
grep -q utf8
; then
5695 POD2MAN
="pod2man --utf8"
5700 # Use ASLR, no-SEH and DEP if available
5701 if test "$mingw32" = "yes" ; then
5702 for flag
in --dynamicbase --no-seh --nxcompat; do
5703 if ld_has
$flag ; then
5704 LDFLAGS
="-Wl,$flag $LDFLAGS"
5709 qemu_confdir
=$sysconfdir$confsuffix
5710 qemu_moddir
=$libdir$confsuffix
5711 qemu_datadir
=$datadir$confsuffix
5712 qemu_localedir
="$datadir/locale"
5714 # We can only support ivshmem if we have eventfd
5715 if [ "$eventfd" = "yes" ]; then
5720 if test "$want_tools" = "yes" ; then
5721 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
5722 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5723 tools
="qemu-nbd\$(EXESUF) $tools"
5725 if [ "$ivshmem" = "yes" ]; then
5726 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5729 if test "$softmmu" = yes ; then
5730 if test "$linux" = yes; then
5731 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5733 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5735 if test "$virtfs" = yes; then
5736 error_exit
"VirtFS requires libcap devel and libattr devel"
5740 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
5743 if test "$mpath" = yes; then
5744 error_exit
"Multipath requires libmpathpersist devel"
5748 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
5750 if test "$virtfs" = yes; then
5751 error_exit
"VirtFS is supported only on Linux"
5754 if test "$mpath" = yes; then
5755 error_exit
"Multipath is supported only on Linux"
5759 if test "$xkbcommon" = "yes"; then
5760 tools
="qemu-keymap\$(EXESUF) $tools"
5764 # Probe for guest agent support/options
5766 if [ "$guest_agent" != "no" ]; then
5767 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5768 tools
="qemu-ga $tools"
5770 elif [ "$guest_agent" != yes ]; then
5773 error_exit
"Guest agent is not supported on this platform"
5777 # Guest agent Window MSI package
5779 if test "$guest_agent" != yes; then
5780 if test "$guest_agent_msi" = yes; then
5781 error_exit
"MSI guest agent package requires guest agent enabled"
5784 elif test "$mingw32" != "yes"; then
5785 if test "$guest_agent_msi" = "yes"; then
5786 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5789 elif ! has wixl
; then
5790 if test "$guest_agent_msi" = "yes"; then
5791 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5795 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5796 # disabled explicitly
5797 if test "$guest_agent_msi" != "no"; then
5802 if test "$guest_agent_msi" = "yes"; then
5803 if test "$guest_agent_with_vss" = "yes"; then
5804 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5807 if test "$QEMU_GA_MANUFACTURER" = ""; then
5808 QEMU_GA_MANUFACTURER
=QEMU
5811 if test "$QEMU_GA_DISTRO" = ""; then
5812 QEMU_GA_DISTRO
=Linux
5815 if test "$QEMU_GA_VERSION" = ""; then
5816 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5819 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5823 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5826 QEMU_GA_MSI_ARCH
="-D Arch=32"
5829 error_exit
"CPU $cpu not supported for building installation package"
5834 # Mac OS X ships with a broken assembler
5836 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5837 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5838 "$softmmu" = yes ; then
5839 # Different host OS linkers have different ideas about the name of the ELF
5840 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5841 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5842 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
5843 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5844 ld_i386_emulation
="$emu"
5850 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5851 roms
="$roms spapr-rtas"
5854 if test "$cpu" = "s390x" ; then
5855 roms
="$roms s390-ccw"
5858 # Probe for the need for relocating the user-only binary.
5859 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5862 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5863 # ??? Rationale for choosing this address
5864 textseg_addr
=0x60000000
5867 # A 256M aligned address, high in the address space, with enough
5868 # room for the code_gen_buffer above it before the stack.
5869 textseg_addr
=0x60000000
5872 if [ -n "$textseg_addr" ]; then
5874 int main(void) { return 0; }
5876 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5877 if ! compile_prog
"" "$textseg_ldflags"; then
5878 # In case ld does not support -Ttext-segment, edit the default linker
5879 # script via sed to set the .text start addr. This is needed on FreeBSD
5881 if ! $ld --verbose >/dev
/null
2>&1; then
5883 "We need to link the QEMU user mode binaries at a" \
5884 "specific text address. Unfortunately your linker" \
5885 "doesn't support either the -Ttext-segment option or" \
5886 "printing the default linker script with --verbose." \
5887 "If you don't want the user mode binaries, pass the" \
5888 "--disable-user option to configure."
5891 $ld --verbose |
sed \
5892 -e '1,/==================================================/d' \
5893 -e '/==================================================/,$d' \
5894 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5895 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5896 textseg_ldflags
="-Wl,-T../config-host.ld"
5901 # Check that the C++ compiler exists and works with the C compiler.
5902 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5905 int c_function(void);
5906 int main(void) { return c_function(); }
5913 int c_function(void);
5915 int c_function(void) { return 42; }
5920 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5921 # C++ compiler $cxx works ok with C compiler $cc
5924 echo "C++ compiler $cxx does not work with C compiler $cc"
5925 echo "Disabling C++ specific optional code"
5929 echo "No C++ compiler available; disabling C++ specific optional code"
5934 if test "$1" = "yes" ; then
5939 # prepend pixman and ftd flags after all config tests are done
5940 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5941 QEMU_LDFLAGS
="$fdt_ldflags $QEMU_LDFLAGS"
5942 libs_softmmu
="$pixman_libs $libs_softmmu"
5944 echo "Install prefix $prefix"
5945 echo "BIOS directory $(eval echo $qemu_datadir)"
5946 echo "firmware path $(eval echo $firmwarepath)"
5947 echo "binary directory $(eval echo $bindir)"
5948 echo "library directory $(eval echo $libdir)"
5949 echo "module directory $(eval echo $qemu_moddir)"
5950 echo "libexec directory $(eval echo $libexecdir)"
5951 echo "include directory $(eval echo $includedir)"
5952 echo "config directory $(eval echo $sysconfdir)"
5953 if test "$mingw32" = "no" ; then
5954 echo "local state directory $(eval echo $local_statedir)"
5955 echo "Manual directory $(eval echo $mandir)"
5956 echo "ELF interp prefix $interp_prefix"
5958 echo "local state directory queried at runtime"
5959 echo "Windows SDK $win_sdk"
5961 echo "Source path $source_path"
5962 echo "GIT binary $git"
5963 echo "GIT submodules $git_submodules"
5964 echo "C compiler $cc"
5965 echo "Host C compiler $host_cc"
5966 echo "C++ compiler $cxx"
5967 echo "Objective-C compiler $objcc"
5968 echo "ARFLAGS $ARFLAGS"
5969 echo "CFLAGS $CFLAGS"
5970 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5971 echo "LDFLAGS $LDFLAGS"
5972 echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
5974 echo "install $install"
5975 echo "python $python"
5976 if test "$slirp" = "yes" ; then
5979 echo "module support $modules"
5980 echo "host CPU $cpu"
5981 echo "host big endian $bigendian"
5982 echo "target list $target_list"
5983 echo "gprof enabled $gprof"
5984 echo "sparse enabled $sparse"
5985 echo "strip binaries $strip_opt"
5986 echo "profiler $profiler"
5987 echo "static build $static"
5988 if test "$darwin" = "yes" ; then
5989 echo "Cocoa support $cocoa"
5991 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5992 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5993 echo "GTK GL support $gtk_gl"
5994 echo "VTE support $vte $(echo_version $vte $vteversion)"
5995 echo "TLS priority $tls_priority"
5996 echo "GNUTLS support $gnutls"
5997 echo "GNUTLS rnd $gnutls_rnd"
5998 echo "libgcrypt $gcrypt"
5999 echo "libgcrypt kdf $gcrypt_kdf"
6000 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
6001 echo "nettle kdf $nettle_kdf"
6002 echo "libtasn1 $tasn1"
6003 echo "curses support $curses"
6004 echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
6005 echo "curl support $curl"
6006 echo "mingw32 support $mingw32"
6007 echo "Audio drivers $audio_drv_list"
6008 echo "Block whitelist (rw) $block_drv_rw_whitelist"
6009 echo "Block whitelist (ro) $block_drv_ro_whitelist"
6010 echo "VirtFS support $virtfs"
6011 echo "Multipath support $mpath"
6012 echo "VNC support $vnc"
6013 if test "$vnc" = "yes" ; then
6014 echo "VNC SASL support $vnc_sasl"
6015 echo "VNC JPEG support $vnc_jpeg"
6016 echo "VNC PNG support $vnc_png"
6018 if test -n "$sparc_cpu"; then
6019 echo "Target Sparc Arch $sparc_cpu"
6021 echo "xen support $xen"
6022 if test "$xen" = "yes" ; then
6023 echo "xen ctrl version $xen_ctrl_version"
6024 echo "pv dom build $xen_pv_domain_build"
6026 echo "brlapi support $brlapi"
6027 echo "bluez support $bluez"
6028 echo "Documentation $docs"
6030 echo "vde support $vde"
6031 echo "netmap support $netmap"
6032 echo "Linux AIO support $linux_aio"
6033 echo "ATTR/XATTR support $attr"
6034 echo "Install blobs $blobs"
6035 echo "KVM support $kvm"
6036 echo "HAX support $hax"
6037 echo "HVF support $hvf"
6038 echo "WHPX support $whpx"
6039 echo "TCG support $tcg"
6040 if test "$tcg" = "yes" ; then
6041 echo "TCG debug enabled $debug_tcg"
6042 echo "TCG interpreter $tcg_interpreter"
6044 echo "malloc trim support $malloc_trim"
6045 echo "RDMA support $rdma"
6046 echo "PVRDMA support $pvrdma"
6047 echo "fdt support $fdt"
6048 echo "membarrier $membarrier"
6049 echo "preadv support $preadv"
6050 echo "fdatasync $fdatasync"
6051 echo "madvise $madvise"
6052 echo "posix_madvise $posix_madvise"
6053 echo "posix_memalign $posix_memalign"
6054 echo "libcap-ng support $cap_ng"
6055 echo "vhost-net support $vhost_net"
6056 echo "vhost-crypto support $vhost_crypto"
6057 echo "vhost-scsi support $vhost_scsi"
6058 echo "vhost-vsock support $vhost_vsock"
6059 echo "vhost-user support $vhost_user"
6060 echo "Trace backends $trace_backends"
6061 if have_backend
"simple"; then
6062 echo "Trace output file $trace_file-<pid>"
6064 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
6065 echo "rbd support $rbd"
6066 echo "xfsctl support $xfs"
6067 echo "smartcard support $smartcard"
6068 echo "libusb $libusb"
6069 echo "usb net redir $usb_redir"
6070 echo "OpenGL support $opengl"
6071 echo "OpenGL dmabufs $opengl_dmabuf"
6072 echo "libiscsi support $libiscsi"
6073 echo "libnfs support $libnfs"
6074 echo "build guest agent $guest_agent"
6075 echo "QGA VSS support $guest_agent_with_vss"
6076 echo "QGA w32 disk info $guest_agent_ntddscsi"
6077 echo "QGA MSI support $guest_agent_msi"
6078 echo "seccomp support $seccomp"
6079 echo "coroutine backend $coroutine"
6080 echo "coroutine pool $coroutine_pool"
6081 echo "debug stack usage $debug_stack_usage"
6082 echo "mutex debugging $debug_mutex"
6083 echo "crypto afalg $crypto_afalg"
6084 echo "GlusterFS support $glusterfs"
6085 echo "gcov $gcov_tool"
6086 echo "gcov enabled $gcov"
6087 echo "TPM support $tpm"
6088 echo "libssh2 support $libssh2"
6089 echo "TPM passthrough $tpm_passthrough"
6090 echo "TPM emulator $tpm_emulator"
6091 echo "QOM debugging $qom_cast_debug"
6092 echo "Live block migration $live_block_migration"
6093 echo "lzo support $lzo"
6094 echo "snappy support $snappy"
6095 echo "bzip2 support $bzip2"
6096 echo "NUMA host support $numa"
6097 echo "libxml2 $libxml2"
6098 echo "tcmalloc support $tcmalloc"
6099 echo "jemalloc support $jemalloc"
6100 echo "avx2 optimization $avx2_opt"
6101 echo "replication support $replication"
6102 echo "VxHS block device $vxhs"
6103 echo "capstone $capstone"
6104 echo "docker $docker"
6105 echo "libpmem support $libpmem"
6107 if test "$sdl_too_old" = "yes"; then
6108 echo "-> Your SDL version is too old - please upgrade to have SDL support"
6111 if test "$gtkabi" = "2.0"; then
6113 echo "WARNING: Use of GTK 2.0 is deprecated and will be removed in"
6114 echo "WARNING: future releases. Please switch to using GTK 3.0"
6117 if test "$sdlabi" = "1.2"; then
6119 echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
6120 echo "WARNING: future releases. Please switch to using SDL 2.0"
6123 if test "$supported_cpu" = "no"; then
6125 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
6127 echo "CPU host architecture $cpu support is not currently maintained."
6128 echo "The QEMU project intends to remove support for this host CPU in"
6129 echo "a future release if nobody volunteers to maintain it and to"
6130 echo "provide a build host for our continuous integration setup."
6131 echo "configure has succeeded and you can continue to build, but"
6132 echo "if you care about QEMU on this platform you should contact"
6133 echo "us upstream at qemu-devel@nongnu.org."
6136 if test "$supported_os" = "no"; then
6138 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
6140 echo "Host OS $targetos support is not currently maintained."
6141 echo "The QEMU project intends to remove support for this host OS in"
6142 echo "a future release if nobody volunteers to maintain it and to"
6143 echo "provide a build host for our continuous integration setup."
6144 echo "configure has succeeded and you can continue to build, but"
6145 echo "if you care about QEMU on this platform you should contact"
6146 echo "us upstream at qemu-devel@nongnu.org."
6149 config_host_mak
="config-host.mak"
6151 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
6153 echo "# Automatically generated by configure - do not modify" > $config_host_mak
6154 echo >> $config_host_mak
6156 echo all
: >> $config_host_mak
6157 echo "prefix=$prefix" >> $config_host_mak
6158 echo "bindir=$bindir" >> $config_host_mak
6159 echo "libdir=$libdir" >> $config_host_mak
6160 echo "libexecdir=$libexecdir" >> $config_host_mak
6161 echo "includedir=$includedir" >> $config_host_mak
6162 echo "mandir=$mandir" >> $config_host_mak
6163 echo "sysconfdir=$sysconfdir" >> $config_host_mak
6164 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
6165 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
6166 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
6167 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
6168 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
6169 if test "$mingw32" = "no" ; then
6170 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
6172 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
6173 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
6174 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
6175 echo "GIT=$git" >> $config_host_mak
6176 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
6177 echo "GIT_UPDATE=$git_update" >> $config_host_mak
6179 echo "ARCH=$ARCH" >> $config_host_mak
6181 if test "$debug_tcg" = "yes" ; then
6182 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
6184 if test "$strip_opt" = "yes" ; then
6185 echo "STRIP=${strip}" >> $config_host_mak
6187 if test "$bigendian" = "yes" ; then
6188 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
6190 if test "$mingw32" = "yes" ; then
6191 echo "CONFIG_WIN32=y" >> $config_host_mak
6192 rc_version
=$
(cat $source_path/VERSION
)
6193 version_major
=${rc_version%%.*}
6194 rc_version
=${rc_version#*.}
6195 version_minor
=${rc_version%%.*}
6196 rc_version
=${rc_version#*.}
6197 version_subminor
=${rc_version%%.*}
6199 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6200 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6201 if test "$guest_agent_with_vss" = "yes" ; then
6202 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
6203 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
6204 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
6206 if test "$guest_agent_ntddscsi" = "yes" ; then
6207 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
6209 if test "$guest_agent_msi" = "yes"; then
6210 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
6211 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6212 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6213 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6214 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6215 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6216 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6219 echo "CONFIG_POSIX=y" >> $config_host_mak
6222 if test "$linux" = "yes" ; then
6223 echo "CONFIG_LINUX=y" >> $config_host_mak
6226 if test "$darwin" = "yes" ; then
6227 echo "CONFIG_DARWIN=y" >> $config_host_mak
6230 if test "$solaris" = "yes" ; then
6231 echo "CONFIG_SOLARIS=y" >> $config_host_mak
6233 if test "$haiku" = "yes" ; then
6234 echo "CONFIG_HAIKU=y" >> $config_host_mak
6236 if test "$static" = "yes" ; then
6237 echo "CONFIG_STATIC=y" >> $config_host_mak
6239 if test "$profiler" = "yes" ; then
6240 echo "CONFIG_PROFILER=y" >> $config_host_mak
6242 if test "$slirp" = "yes" ; then
6243 echo "CONFIG_SLIRP=y" >> $config_host_mak
6244 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
6246 if test "$vde" = "yes" ; then
6247 echo "CONFIG_VDE=y" >> $config_host_mak
6248 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
6250 if test "$netmap" = "yes" ; then
6251 echo "CONFIG_NETMAP=y" >> $config_host_mak
6253 if test "$l2tpv3" = "yes" ; then
6254 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6256 if test "$cap_ng" = "yes" ; then
6257 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6259 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
6260 for drv
in $audio_drv_list; do
6261 def
=CONFIG_AUDIO_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
6263 alsa | oss | pa | sdl
)
6264 echo "$def=m" >> $config_host_mak ;;
6266 echo "$def=y" >> $config_host_mak ;;
6269 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6270 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6271 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6272 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6273 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
6274 if test "$audio_pt_int" = "yes" ; then
6275 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6277 if test "$audio_win_int" = "yes" ; then
6278 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6280 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6281 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
6282 if test "$vnc" = "yes" ; then
6283 echo "CONFIG_VNC=y" >> $config_host_mak
6285 if test "$vnc_sasl" = "yes" ; then
6286 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
6288 if test "$vnc_jpeg" = "yes" ; then
6289 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
6291 if test "$vnc_png" = "yes" ; then
6292 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
6294 if test "$xkbcommon" = "yes" ; then
6295 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6296 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6298 if test "$fnmatch" = "yes" ; then
6299 echo "CONFIG_FNMATCH=y" >> $config_host_mak
6301 if test "$xfs" = "yes" ; then
6302 echo "CONFIG_XFS=y" >> $config_host_mak
6304 qemu_version
=$
(head $source_path/VERSION
)
6305 echo "VERSION=$qemu_version" >>$config_host_mak
6306 echo "PKGVERSION=$pkgversion" >>$config_host_mak
6307 echo "SRC_PATH=$source_path" >> $config_host_mak
6308 echo "TARGET_DIRS=$target_list" >> $config_host_mak
6309 if [ "$docs" = "yes" ] ; then
6310 echo "BUILD_DOCS=yes" >> $config_host_mak
6312 if test "$modules" = "yes"; then
6313 # $shacmd can generate a hash started with digit, which the compiler doesn't
6314 # like as an symbol. So prefix it with an underscore
6315 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
6316 echo "CONFIG_MODULES=y" >> $config_host_mak
6318 if test "$have_x11" = "yes" -a "$need_x11" = "yes"; then
6319 echo "CONFIG_X11=y" >> $config_host_mak
6320 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6321 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6323 if test "$sdl" = "yes" ; then
6324 echo "CONFIG_SDL=m" >> $config_host_mak
6325 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
6326 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
6327 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
6329 if test "$cocoa" = "yes" ; then
6330 echo "CONFIG_COCOA=y" >> $config_host_mak
6332 if test "$curses" = "yes" ; then
6333 echo "CONFIG_CURSES=m" >> $config_host_mak
6334 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6335 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
6337 if test "$pipe2" = "yes" ; then
6338 echo "CONFIG_PIPE2=y" >> $config_host_mak
6340 if test "$accept4" = "yes" ; then
6341 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6343 if test "$splice" = "yes" ; then
6344 echo "CONFIG_SPLICE=y" >> $config_host_mak
6346 if test "$eventfd" = "yes" ; then
6347 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6349 if test "$memfd" = "yes" ; then
6350 echo "CONFIG_MEMFD=y" >> $config_host_mak
6352 if test "$fallocate" = "yes" ; then
6353 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6355 if test "$fallocate_punch_hole" = "yes" ; then
6356 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6358 if test "$fallocate_zero_range" = "yes" ; then
6359 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6361 if test "$posix_fallocate" = "yes" ; then
6362 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6364 if test "$sync_file_range" = "yes" ; then
6365 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6367 if test "$fiemap" = "yes" ; then
6368 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6370 if test "$dup3" = "yes" ; then
6371 echo "CONFIG_DUP3=y" >> $config_host_mak
6373 if test "$ppoll" = "yes" ; then
6374 echo "CONFIG_PPOLL=y" >> $config_host_mak
6376 if test "$prctl_pr_set_timerslack" = "yes" ; then
6377 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6379 if test "$epoll" = "yes" ; then
6380 echo "CONFIG_EPOLL=y" >> $config_host_mak
6382 if test "$epoll_create1" = "yes" ; then
6383 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6385 if test "$sendfile" = "yes" ; then
6386 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6388 if test "$timerfd" = "yes" ; then
6389 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6391 if test "$setns" = "yes" ; then
6392 echo "CONFIG_SETNS=y" >> $config_host_mak
6394 if test "$clock_adjtime" = "yes" ; then
6395 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6397 if test "$syncfs" = "yes" ; then
6398 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6400 if test "$inotify" = "yes" ; then
6401 echo "CONFIG_INOTIFY=y" >> $config_host_mak
6403 if test "$inotify1" = "yes" ; then
6404 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6406 if test "$sem_timedwait" = "yes" ; then
6407 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6409 if test "$strchrnul" = "yes" ; then
6410 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
6412 if test "$byteswap_h" = "yes" ; then
6413 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6415 if test "$bswap_h" = "yes" ; then
6416 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6418 if test "$curl" = "yes" ; then
6419 echo "CONFIG_CURL=m" >> $config_host_mak
6420 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
6421 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
6423 if test "$brlapi" = "yes" ; then
6424 echo "CONFIG_BRLAPI=y" >> $config_host_mak
6425 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
6427 if test "$bluez" = "yes" ; then
6428 echo "CONFIG_BLUEZ=y" >> $config_host_mak
6429 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
6431 if test "$gtk" = "yes" ; then
6432 echo "CONFIG_GTK=m" >> $config_host_mak
6433 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
6434 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
6435 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
6436 if test "$gtk_gl" = "yes" ; then
6437 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6440 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
6441 if test "$gnutls" = "yes" ; then
6442 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6444 if test "$gnutls_rnd" = "yes" ; then
6445 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
6447 if test "$gcrypt" = "yes" ; then
6448 echo "CONFIG_GCRYPT=y" >> $config_host_mak
6449 if test "$gcrypt_hmac" = "yes" ; then
6450 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6452 if test "$gcrypt_kdf" = "yes" ; then
6453 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
6456 if test "$nettle" = "yes" ; then
6457 echo "CONFIG_NETTLE=y" >> $config_host_mak
6458 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
6459 if test "$nettle_kdf" = "yes" ; then
6460 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
6463 if test "$tasn1" = "yes" ; then
6464 echo "CONFIG_TASN1=y" >> $config_host_mak
6466 if test "$have_ifaddrs_h" = "yes" ; then
6467 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6469 if test "$have_broken_size_max" = "yes" ; then
6470 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6473 # Work around a system header bug with some kernel/XFS header
6474 # versions where they both try to define 'struct fsxattr':
6475 # xfs headers will not try to redefine structs from linux headers
6476 # if this macro is set.
6477 if test "$have_fsxattr" = "yes" ; then
6478 echo "HAVE_FSXATTR=y" >> $config_host_mak
6480 if test "$have_copy_file_range" = "yes" ; then
6481 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
6483 if test "$vte" = "yes" ; then
6484 echo "CONFIG_VTE=y" >> $config_host_mak
6485 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6486 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
6488 if test "$virglrenderer" = "yes" ; then
6489 echo "CONFIG_VIRGL=y" >> $config_host_mak
6490 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6491 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6493 if test "$xen" = "yes" ; then
6494 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
6495 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
6496 if test "$xen_pv_domain_build" = "yes" ; then
6497 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6500 if test "$linux_aio" = "yes" ; then
6501 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6503 if test "$attr" = "yes" ; then
6504 echo "CONFIG_ATTR=y" >> $config_host_mak
6506 if test "$libattr" = "yes" ; then
6507 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6509 if test "$virtfs" = "yes" ; then
6510 echo "CONFIG_VIRTFS=y" >> $config_host_mak
6512 if test "$mpath" = "yes" ; then
6513 echo "CONFIG_MPATH=y" >> $config_host_mak
6514 if test "$mpathpersist_new_api" = "yes"; then
6515 echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
6518 if test "$vhost_scsi" = "yes" ; then
6519 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6521 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
6522 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6524 if test "$vhost_crypto" = "yes" ; then
6525 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6527 if test "$vhost_vsock" = "yes" ; then
6528 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6530 if test "$vhost_user" = "yes" ; then
6531 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6533 if test "$blobs" = "yes" ; then
6534 echo "INSTALL_BLOBS=yes" >> $config_host_mak
6536 if test "$iovec" = "yes" ; then
6537 echo "CONFIG_IOVEC=y" >> $config_host_mak
6539 if test "$preadv" = "yes" ; then
6540 echo "CONFIG_PREADV=y" >> $config_host_mak
6542 if test "$fdt" != "no" ; then
6543 echo "CONFIG_FDT=y" >> $config_host_mak
6545 if test "$membarrier" = "yes" ; then
6546 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6548 if test "$signalfd" = "yes" ; then
6549 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6551 if test "$tcg" = "yes"; then
6552 echo "CONFIG_TCG=y" >> $config_host_mak
6553 if test "$tcg_interpreter" = "yes" ; then
6554 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6557 if test "$fdatasync" = "yes" ; then
6558 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6560 if test "$madvise" = "yes" ; then
6561 echo "CONFIG_MADVISE=y" >> $config_host_mak
6563 if test "$posix_madvise" = "yes" ; then
6564 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6566 if test "$posix_memalign" = "yes" ; then
6567 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6570 if test "$spice" = "yes" ; then
6571 echo "CONFIG_SPICE=y" >> $config_host_mak
6574 if test "$smartcard" = "yes" ; then
6575 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6576 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6577 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6580 if test "$libusb" = "yes" ; then
6581 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6582 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6583 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6586 if test "$usb_redir" = "yes" ; then
6587 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6588 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6589 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6592 if test "$opengl" = "yes" ; then
6593 echo "CONFIG_OPENGL=y" >> $config_host_mak
6594 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6595 if test "$opengl_dmabuf" = "yes" ; then
6596 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6600 if test "$malloc_trim" = "yes" ; then
6601 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6604 if test "$avx2_opt" = "yes" ; then
6605 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6608 if test "$lzo" = "yes" ; then
6609 echo "CONFIG_LZO=y" >> $config_host_mak
6612 if test "$snappy" = "yes" ; then
6613 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6616 if test "$bzip2" = "yes" ; then
6617 echo "CONFIG_BZIP2=y" >> $config_host_mak
6618 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6621 if test "$libiscsi" = "yes" ; then
6622 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6623 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6624 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6627 if test "$libnfs" = "yes" ; then
6628 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6629 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6632 if test "$seccomp" = "yes"; then
6633 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6634 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6635 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6638 # XXX: suppress that
6639 if [ "$bsd" = "yes" ] ; then
6640 echo "CONFIG_BSD=y" >> $config_host_mak
6643 if test "$localtime_r" = "yes" ; then
6644 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6646 if test "$qom_cast_debug" = "yes" ; then
6647 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6649 if test "$rbd" = "yes" ; then
6650 echo "CONFIG_RBD=m" >> $config_host_mak
6651 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6652 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6655 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6656 if test "$coroutine_pool" = "yes" ; then
6657 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6659 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6662 if test "$debug_stack_usage" = "yes" ; then
6663 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6666 if test "$crypto_afalg" = "yes" ; then
6667 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6670 if test "$open_by_handle_at" = "yes" ; then
6671 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6674 if test "$linux_magic_h" = "yes" ; then
6675 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6678 if test "$pragma_diagnostic_available" = "yes" ; then
6679 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6682 if test "$valgrind_h" = "yes" ; then
6683 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6686 if test "$have_asan_iface_fiber" = "yes" ; then
6687 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6690 if test "$has_environ" = "yes" ; then
6691 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6694 if test "$cpuid_h" = "yes" ; then
6695 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6698 if test "$int128" = "yes" ; then
6699 echo "CONFIG_INT128=y" >> $config_host_mak
6702 if test "$atomic128" = "yes" ; then
6703 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6706 if test "$atomic64" = "yes" ; then
6707 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6710 if test "$vector16" = "yes" ; then
6711 echo "CONFIG_VECTOR16=y" >> $config_host_mak
6714 if test "$getauxval" = "yes" ; then
6715 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6718 if test "$glusterfs" = "yes" ; then
6719 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6720 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6721 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6724 if test "$glusterfs_xlator_opt" = "yes" ; then
6725 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6728 if test "$glusterfs_discard" = "yes" ; then
6729 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6732 if test "$glusterfs_fallocate" = "yes" ; then
6733 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6736 if test "$glusterfs_zerofill" = "yes" ; then
6737 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6740 if test "$libssh2" = "yes" ; then
6741 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6742 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6743 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6746 if test "$live_block_migration" = "yes" ; then
6747 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6750 if test "$tpm" = "yes"; then
6751 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6752 # TPM passthrough support?
6753 if test "$tpm_passthrough" = "yes"; then
6754 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6756 # TPM emulator support?
6757 if test "$tpm_emulator" = "yes"; then
6758 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6762 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6763 if have_backend
"nop"; then
6764 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6766 if have_backend
"simple"; then
6767 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6768 # Set the appropriate trace file.
6769 trace_file
="\"$trace_file-\" FMT_pid"
6771 if have_backend
"log"; then
6772 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6774 if have_backend
"ust"; then
6775 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6777 if have_backend
"dtrace"; then
6778 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6779 if test "$trace_backend_stap" = "yes" ; then
6780 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6783 if have_backend
"ftrace"; then
6784 if test "$linux" = "yes" ; then
6785 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6787 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6790 if have_backend
"syslog"; then
6791 if test "$posix_syslog" = "yes" ; then
6792 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6794 feature_not_found
"syslog(trace backend)" "syslog not available"
6797 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6799 if test "$rdma" = "yes" ; then
6800 echo "CONFIG_RDMA=y" >> $config_host_mak
6801 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6804 if test "$pvrdma" = "yes" ; then
6805 echo "CONFIG_PVRDMA=y" >> $config_host_mak
6808 if test "$have_rtnetlink" = "yes" ; then
6809 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6812 if test "$libxml2" = "yes" ; then
6813 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6814 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6815 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6818 if test "$replication" = "yes" ; then
6819 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6822 if test "$have_af_vsock" = "yes" ; then
6823 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6826 if test "$have_sysmacros" = "yes" ; then
6827 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6830 if test "$have_static_assert" = "yes" ; then
6831 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6834 if test "$have_utmpx" = "yes" ; then
6835 echo "HAVE_UTMPX=y" >> $config_host_mak
6838 if test "$ivshmem" = "yes" ; then
6839 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6841 if test "$capstone" != "no" ; then
6842 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6844 if test "$debug_mutex" = "yes" ; then
6845 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
6848 # Hold two types of flag:
6849 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6850 # a thread we have a handle to
6851 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6853 if test "$pthread_setname_np" = "yes" ; then
6854 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6855 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6858 if test "$vxhs" = "yes" ; then
6859 echo "CONFIG_VXHS=y" >> $config_host_mak
6860 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6863 if test "$libpmem" = "yes" ; then
6864 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
6867 if test "$tcg_interpreter" = "yes"; then
6868 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6869 elif test "$ARCH" = "sparc64" ; then
6870 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6871 elif test "$ARCH" = "s390x" ; then
6872 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6873 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6874 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6875 elif test "$ARCH" = "ppc64" ; then
6876 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6878 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6880 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
6882 echo "TOOLS=$tools" >> $config_host_mak
6883 echo "ROMS=$roms" >> $config_host_mak
6884 echo "MAKE=$make" >> $config_host_mak
6885 echo "INSTALL=$install" >> $config_host_mak
6886 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6887 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6888 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6889 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6890 echo "PYTHON=$python" >> $config_host_mak
6891 echo "CC=$cc" >> $config_host_mak
6892 if $iasl -h > /dev
/null
2>&1; then
6893 echo "IASL=$iasl" >> $config_host_mak
6895 echo "HOST_CC=$host_cc" >> $config_host_mak
6896 echo "CXX=$cxx" >> $config_host_mak
6897 echo "OBJCC=$objcc" >> $config_host_mak
6898 echo "AR=$ar" >> $config_host_mak
6899 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6900 echo "AS=$as" >> $config_host_mak
6901 echo "CCAS=$ccas" >> $config_host_mak
6902 echo "CPP=$cpp" >> $config_host_mak
6903 echo "OBJCOPY=$objcopy" >> $config_host_mak
6904 echo "LD=$ld" >> $config_host_mak
6905 echo "RANLIB=$ranlib" >> $config_host_mak
6906 echo "NM=$nm" >> $config_host_mak
6907 echo "WINDRES=$windres" >> $config_host_mak
6908 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6909 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6910 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6911 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6912 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6913 if test "$sparse" = "yes" ; then
6914 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6915 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6916 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6917 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6918 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6920 if test "$cross_prefix" != ""; then
6921 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6923 echo "AUTOCONF_HOST := " >> $config_host_mak
6925 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6926 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6927 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
6928 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6929 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6930 echo "LIBS+=$LIBS" >> $config_host_mak
6931 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6932 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6933 echo "EXESUF=$EXESUF" >> $config_host_mak
6934 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6935 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6936 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6937 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6938 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6939 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6940 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6941 if test "$gcov" = "yes" ; then
6942 echo "CONFIG_GCOV=y" >> $config_host_mak
6943 echo "GCOV=$gcov_tool" >> $config_host_mak
6946 if test "$docker" != "no"; then
6947 echo "HAVE_USER_DOCKER=y" >> $config_host_mak
6950 # use included Linux headers
6951 if test "$linux" = "yes" ; then
6952 mkdir
-p linux-headers
6970 # For most CPUs the kernel architecture name and QEMU CPU name match.
6974 # For non-KVM architectures we will not have asm headers
6975 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6976 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
6980 for target
in $target_list; do
6981 target_dir
="$target"
6982 config_target_mak
=$target_dir/config-target.mak
6983 target_name
=$
(echo $target | cut
-d '-' -f 1)
6984 target_bigendian
="no"
6986 case "$target_name" in
6987 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
6988 target_bigendian
=yes
6992 target_user_only
="no"
6993 target_linux_user
="no"
6994 target_bsd_user
="no"
6996 ${target_name}-softmmu)
6997 target_softmmu
="yes"
6999 ${target_name}-linux-user)
7000 target_user_only
="yes"
7001 target_linux_user
="yes"
7003 ${target_name}-bsd-user)
7004 target_user_only
="yes"
7005 target_bsd_user
="yes"
7008 error_exit
"Target '$target' not recognised"
7014 target_compiler_static
=""
7015 target_compiler_cflags
=""
7017 mkdir
-p $target_dir
7018 echo "# Automatically generated by configure - do not modify" > $config_target_mak
7022 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
7025 TARGET_ARCH
="$target_name"
7029 case "$target_name" in
7031 gdb_xml_files
="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
7032 target_compiler
=$cross_cc_i386
7033 target_compiler_cflags
=$cross_cc_ccflags_i386
7036 TARGET_BASE_ARCH
=i386
7037 gdb_xml_files
="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
7038 target_compiler
=$cross_cc_x86_64
7042 target_compiler
=$cross_cc_alpha
7048 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
7049 target_compiler
=$cross_cc_arm
7050 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
7054 TARGET_BASE_ARCH
=arm
7057 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
7058 target_compiler
=$cross_cc_aarch64
7059 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
7062 target_compiler
=$cross_cc_cris
7066 target_compiler
=$cross_cc_hppa
7069 target_compiler
=$cross_cc_lm32
7073 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
7074 target_compiler
=$cross_cc_m68k
7076 microblaze|microblazeel
)
7077 TARGET_ARCH
=microblaze
7079 echo "TARGET_ABI32=y" >> $config_target_mak
7080 target_compiler
=$cross_cc_microblaze
7084 target_compiler
=$cross_cc_mips
7085 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
7089 TARGET_BASE_ARCH
=mips
7090 target_compiler
=$cross_cc_mipsn32
7091 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
7092 echo "TARGET_ABI32=y" >> $config_target_mak
7096 TARGET_BASE_ARCH
=mips
7097 target_compiler
=$cross_cc_mips64
7098 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
7101 target_compiler
=$cross_cc_moxie
7104 target_compiler
=$cross_cc_nios2
7107 target_compiler
=$cross_cc_or1k
7108 TARGET_ARCH
=openrisc
7109 TARGET_BASE_ARCH
=openrisc
7112 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
7113 target_compiler
=$cross_cc_powerpc
7116 TARGET_BASE_ARCH
=ppc
7118 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
7119 target_compiler
=$cross_cc_ppcemb
7122 TARGET_BASE_ARCH
=ppc
7125 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7126 target_compiler
=$cross_cc_ppc64
7130 TARGET_BASE_ARCH
=ppc
7133 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7134 target_compiler
=$cross_cc_ppc64le
7138 TARGET_BASE_ARCH
=ppc
7140 echo "TARGET_ABI32=y" >> $config_target_mak
7141 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7142 target_compiler
=$cross_cc_ppc64abi32
7145 TARGET_BASE_ARCH
=riscv
7146 TARGET_ABI_DIR
=riscv
7148 target_compiler
=$cross_cc_riscv32
7151 TARGET_BASE_ARCH
=riscv
7152 TARGET_ABI_DIR
=riscv
7154 target_compiler
=$cross_cc_riscv64
7159 target_compiler
=$cross_cc_sh4
7162 target_compiler
=$cross_cc_sparc
7165 TARGET_BASE_ARCH
=sparc
7166 target_compiler
=$cross_cc_sparc64
7170 TARGET_BASE_ARCH
=sparc
7171 TARGET_ABI_DIR
=sparc
7172 target_compiler
=$cross_cc_sparc32plus
7173 echo "TARGET_ABI32=y" >> $config_target_mak
7177 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
7178 target_compiler
=$cross_cc_s390x
7181 target_compiler
=$cross_cc_tilegx
7184 target_compiler
=$cross_cc_tricore
7187 target_compiler
=$cross_cc_unicore32
7192 target_compiler
=$cross_cc_xtensa
7195 error_exit
"Unsupported target CPU"
7198 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
7199 if [ "$TARGET_BASE_ARCH" = "" ]; then
7200 TARGET_BASE_ARCH
=$TARGET_ARCH
7203 # Do we have a cross compiler for this target?
7204 if has
$target_compiler; then
7208 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then
7209 # For host systems we might get away with building without -static
7210 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then
7213 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7214 target_compiler_static
="n"
7217 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7218 target_compiler_static
="y"
7224 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
7227 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
7230 target_arch_name
="$(upper $TARGET_ARCH)"
7231 echo "TARGET_$target_arch_name=y" >> $config_target_mak
7232 echo "TARGET_NAME=$target_name" >> $config_target_mak
7233 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
7234 if [ "$TARGET_ABI_DIR" = "" ]; then
7235 TARGET_ABI_DIR
=$TARGET_ARCH
7237 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
7238 if [ "$HOST_VARIANT_DIR" != "" ]; then
7239 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
7242 if supported_xen_target
$target; then
7243 echo "CONFIG_XEN=y" >> $config_target_mak
7244 if test "$xen_pci_passthrough" = yes; then
7245 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
7248 if supported_kvm_target
$target; then
7249 echo "CONFIG_KVM=y" >> $config_target_mak
7250 if test "$vhost_net" = "yes" ; then
7251 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
7252 if test "$vhost_user" = "yes" ; then
7253 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
7257 if supported_hax_target
$target; then
7258 echo "CONFIG_HAX=y" >> $config_target_mak
7260 if supported_hvf_target
$target; then
7261 echo "CONFIG_HVF=y" >> $config_target_mak
7263 if supported_whpx_target
$target; then
7264 echo "CONFIG_WHPX=y" >> $config_target_mak
7266 if test "$target_bigendian" = "yes" ; then
7267 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
7269 if test "$target_softmmu" = "yes" ; then
7270 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
7271 if test "$mttcg" = "yes" ; then
7272 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
7275 if test "$target_user_only" = "yes" ; then
7276 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
7277 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
7279 if test "$target_linux_user" = "yes" ; then
7280 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
7283 if test ! -z "$gdb_xml_files" ; then
7284 for x
in $gdb_xml_files; do
7285 list
="$list $source_path/gdb-xml/$x"
7287 echo "TARGET_XML_FILES=$list" >> $config_target_mak
7290 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
7291 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
7293 if test "$target_bsd_user" = "yes" ; then
7294 echo "CONFIG_BSD_USER=y" >> $config_target_mak
7297 if test -n "$target_compiler"; then
7298 echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak
7300 if test -n "$target_compiler_static"; then
7301 echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak
7304 if test -n "$target_compiler_cflags"; then
7305 echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
7310 # generate QEMU_CFLAGS/LDFLAGS for targets
7316 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7317 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7320 for i
in $ARCH $TARGET_BASE_ARCH ; do
7323 disas_config
"ALPHA"
7326 if test -n "${cxx}"; then
7327 disas_config
"ARM_A64"
7332 if test -n "${cxx}"; then
7333 disas_config
"ARM_A64"
7352 disas_config
"MICROBLAZE"
7358 disas_config
"MOXIE"
7361 disas_config
"NIOS2"
7364 disas_config
"OPENRISC"
7370 disas_config
"RISCV"
7379 disas_config
"SPARC"
7382 disas_config
"XTENSA"
7386 if test "$tcg_interpreter" = "yes" ; then
7392 # Ensure there's only a single GP
7393 cflags
="-msmall-data $cflags"
7397 if test "$gprof" = "yes" ; then
7398 echo "TARGET_GPROF=yes" >> $config_target_mak
7399 if test "$target_linux_user" = "yes" ; then
7401 ldflags
="-p $ldflags"
7403 if test "$target_softmmu" = "yes" ; then
7404 ldflags
="-p $ldflags"
7405 echo "GPROF_CFLAGS=-p" >> $config_target_mak
7409 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
7410 ldflags
="$ldflags $textseg_ldflags"
7413 # Newer kernels on s390 check for an S390_PGSTE program header and
7414 # enable the pgste page table extensions in that case. This makes
7415 # the vm.allocate_pgste sysctl unnecessary. We enable this program
7417 # - we build on s390x
7418 # - we build the system emulation for s390x (qemu-system-s390x)
7420 # - the linker supports --s390-pgste
7421 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
7422 if ld_has
--s390-pgste ; then
7423 ldflags
="-Wl,--s390-pgste $ldflags"
7427 echo "LDFLAGS+=$ldflags" >> $config_target_mak
7428 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
7430 done # for target in $targets
7432 if test -n "$enabled_cross_compilers"; then
7434 echo "NOTE: cross-compilers enabled: $enabled_cross_compilers"
7437 if [ "$fdt" = "git" ]; then
7438 echo "config-host.h: subdir-dtc" >> $config_host_mak
7440 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7441 echo "config-host.h: subdir-capstone" >> $config_host_mak
7443 if test -n "$LIBCAPSTONE"; then
7444 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7447 if test "$numa" = "yes"; then
7448 echo "CONFIG_NUMA=y" >> $config_host_mak
7451 if test "$ccache_cpp2" = "yes"; then
7452 echo "export CCACHE_CPP2=y" >> $config_host_mak
7455 # build tree in object directory in case the source is not in the current directory
7456 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
7457 DIRS
="$DIRS docs docs/interop fsdev scsi"
7458 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
7459 DIRS
="$DIRS roms/seabios roms/vgabios"
7460 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
7461 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
7462 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
7463 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
7464 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
7465 FILES
="$FILES pc-bios/s390-ccw/Makefile"
7466 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
7467 FILES
="$FILES pc-bios/qemu-icon.bmp"
7468 FILES
="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
7470 $source_path/pc-bios
/*.bin \
7471 $source_path/pc-bios
/*.lid \
7472 $source_path/pc-bios
/*.aml \
7473 $source_path/pc-bios
/*.rom \
7474 $source_path/pc-bios
/*.dtb \
7475 $source_path/pc-bios
/*.img \
7476 $source_path/pc-bios
/openbios-
* \
7477 $source_path/pc-bios
/u-boot.
* \
7478 $source_path/pc-bios
/palcode-
*
7480 FILES
="$FILES pc-bios/$(basename $bios_file)"
7482 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
7484 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
7486 for test_file
in $
(find $source_path/tests
/hex-loader-check-data
-type f
)
7488 FILES
="$FILES tests/hex-loader-check-data$(echo $test_file | sed -e 's/.*hex-loader-check-data//')"
7491 for f
in $FILES ; do
7492 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
7493 symlink
"$source_path/$f" "$f"
7497 # temporary config to build submodules
7498 for rom
in seabios vgabios
; do
7499 config_mak
=roms
/$rom/config.mak
7500 echo "# Automatically generated by configure - do not modify" > $config_mak
7501 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
7502 echo "AS=$as" >> $config_mak
7503 echo "CCAS=$ccas" >> $config_mak
7504 echo "CC=$cc" >> $config_mak
7505 echo "BCC=bcc" >> $config_mak
7506 echo "CPP=$cpp" >> $config_mak
7507 echo "OBJCOPY=objcopy" >> $config_mak
7508 echo "IASL=$iasl" >> $config_mak
7509 echo "LD=$ld" >> $config_mak
7510 echo "RANLIB=$ranlib" >> $config_mak
7513 # set up tests data directory
7514 for tests_subdir
in acceptance data
; do
7515 if [ ! -e tests
/$tests_subdir ]; then
7516 symlink
"$source_path/tests/$tests_subdir" tests
/$tests_subdir
7520 # set up qemu-iotests in this build directory
7521 iotests_common_env
="tests/qemu-iotests/common.env"
7522 iotests_check
="tests/qemu-iotests/check"
7524 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7525 echo >> "$iotests_common_env"
7526 echo "export PYTHON='$python'" >> "$iotests_common_env"
7528 if [ ! -e "$iotests_check" ]; then
7529 symlink
"$source_path/$iotests_check" "$iotests_check"
7532 # Save the configure command line for later reuse.
7533 cat <<EOD >config.status
7535 # Generated by configure.
7536 # Run this file to recreate the current configuration.
7537 # Compiler output produced by configure, useful for debugging
7538 # configure, is in config.log if it exists.
7540 printf "exec" >>config.status
7541 printf " '%s'" "$0" "$@" >>config.status
7542 echo ' "$@"' >>config.status
7543 chmod +x config.status