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 }"-std=gnu++98"
114 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
122 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
128 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
131 # symbolically link $1 to $2. Portable version of "ln -sf".
134 mkdir
-p "$(dirname "$2")"
138 # check whether a command is available to this shell (may be either an
139 # executable or a builtin)
141 type "$1" >/dev
/null
2>&1
144 # search for an executable in PATH
150 # pathname has a dir component?
151 if [ "${local_command#*/}" != "$local_command" ]; then
152 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
153 echo "$local_command"
157 if [ -z "$local_command" ]; then
162 for local_dir
in $PATH; do
163 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
164 echo "$local_dir/$local_command"
165 IFS
="${local_ifs:-$(printf ' \t\n')}"
170 IFS
="${local_ifs:-$(printf ' \t\n')}"
175 echo "$trace_backends" |
grep "$1" >/dev
/null
179 eval test -z '"${1#'"$2"'}"'
182 supported_hax_target
() {
183 test "$hax" = "yes" ||
return 1
184 glob
"$1" "*-softmmu" ||
return 1
185 case "${1%-softmmu}" in
193 supported_kvm_target
() {
194 test "$kvm" = "yes" ||
return 1
195 glob
"$1" "*-softmmu" ||
return 1
196 case "${1%-softmmu}:$cpu" in
197 arm
:arm | aarch64
:aarch64 | \
198 i386
:i386 | i386
:x86_64 | i386
:x32 | \
199 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
200 mips
:mips | mipsel
:mips | \
201 ppc
:ppc | ppc64
:ppc | ppc
:ppc64 | ppc64
:ppc64 | \
209 supported_xen_target
() {
210 test "$xen" = "yes" ||
return 1
211 glob
"$1" "*-softmmu" ||
return 1
212 # Only i386 and x86_64 provide the xenpv machine.
213 case "${1%-softmmu}" in
221 supported_hvf_target
() {
222 test "$hvf" = "yes" ||
return 1
223 glob
"$1" "*-softmmu" ||
return 1
224 case "${1%-softmmu}" in
232 supported_whpx_target
() {
233 test "$whpx" = "yes" ||
return 1
234 glob
"$1" "*-softmmu" ||
return 1
235 case "${1%-softmmu}" in
248 if test "$linux" != "yes"; then
249 print_error
"Target '$target' is only available on a Linux host"
254 if test "$bsd" != "yes"; then
255 print_error
"Target '$target' is only available on a BSD host"
260 print_error
"Invalid target name '$target'"
264 test "$tcg" = "yes" && return 0
265 supported_kvm_target
"$1" && return 0
266 supported_xen_target
"$1" && return 0
267 supported_hax_target
"$1" && return 0
268 supported_hvf_target
"$1" && return 0
269 supported_whpx_target
"$1" && return 0
270 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
276 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
280 source_path
=$
(dirname "$0")
283 interp_prefix
="/usr/gnemul/qemu-%M"
287 block_drv_rw_whitelist
=""
288 block_drv_ro_whitelist
=""
298 if test -e "$source_path/.git"
301 git_submodules
="ui/keycodemapdb"
302 git_submodules
="$git_submodules tests/fp/berkeley-testfloat-3"
303 git_submodules
="$git_submodules tests/fp/berkeley-softfloat-3"
308 if ! test -f "$source_path/ui/keycodemapdb/README"
311 echo "ERROR: missing file $source_path/ui/keycodemapdb/README"
313 echo "This is not a GIT checkout but module content appears to"
314 echo "be missing. Do not use 'git archive' or GitHub download links"
315 echo "to acquire QEMU source archives. Non-GIT builds are only"
316 echo "supported with source archives linked from:"
318 echo " https://www.qemu.org/download/"
320 echo "Developers working with GIT can use scripts/archive-source.sh"
321 echo "if they need to create valid source archives."
328 # Don't accept a target_list environment variable.
331 # Default value for a variable defining feature "foo".
332 # * foo="no" feature will only be used if --enable-foo arg is given
333 # * foo="" feature will be searched for, and if found, will be used
334 # unless --disable-foo is given
335 # * foo="yes" this value will only be set by --enable-foo flag.
336 # feature will searched for,
337 # if not found, configure exits with error
339 # Always add --enable-foo and --disable-foo command line args.
340 # Distributions want to ensure that several features are compiled in, and it
341 # is impossible without a --enable-foo that exits if a feature is not found.
363 xen_pci_passthrough
=""
395 LDFLAGS_SHARED
="-shared"
398 mandir
="\${prefix}/share/man"
399 datadir
="\${prefix}/share"
400 firmwarepath
="\${prefix}/share/qemu-firmware"
401 qemu_docdir
="\${prefix}/share/doc/qemu"
402 bindir
="\${prefix}/bin"
403 libdir
="\${prefix}/lib"
404 libexecdir
="\${prefix}/libexec"
405 includedir
="\${prefix}/include"
406 sysconfdir
="\${prefix}/etc"
407 local_statedir
="\${prefix}/var"
441 guest_agent_with_vss
="no"
442 guest_agent_ntddscsi
="no"
451 debug_stack_usage
="no"
455 glusterfs_xlator_opt
="no"
456 glusterfs_discard
="no"
457 glusterfs_fallocate
="no"
458 glusterfs_zerofill
="no"
461 tls_priority
="NORMAL"
471 live_block_migration
="yes"
490 default_devices
="yes"
492 # cross compilers defaults, can be overridden with --cross-cc-ARCH
493 cross_cc_aarch64
="aarch64-linux-gnu-gcc"
494 cross_cc_aarch64_be
="$cross_cc_aarch64"
495 cross_cc_cflags_aarch64_be
="-mbig-endian"
496 cross_cc_arm
="arm-linux-gnueabihf-gcc"
497 cross_cc_cflags_armeb
="-mbig-endian"
498 cross_cc_i386
="i386-pc-linux-gnu-gcc"
499 cross_cc_cflags_i386
=""
500 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
501 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
503 enabled_cross_compilers
=""
510 # parse CC options first
512 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
514 --cross-prefix=*) cross_prefix
="$optarg"
518 --cxx=*) CXX
="$optarg"
520 --source-path=*) source_path
="$optarg"
522 --cpu=*) cpu
="$optarg"
524 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
526 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
528 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
529 EXTRA_LDFLAGS
="$optarg"
531 --enable-debug-info) debug_info
="yes"
533 --disable-debug-info) debug_info
="no"
535 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
537 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
538 eval "cross_cc_cflags_${cc_arch}=\$optarg"
540 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
541 eval "cross_cc_${cc_arch}=\$optarg"
546 # Using uname is really, really broken. Once we have the right set of checks
547 # we can eliminate its usage altogether.
549 # Preferred compiler:
551 # ${cross_prefix}gcc (if cross-prefix specified)
553 if test -z "${CC}${cross_prefix}"; then
556 cc
="${CC-${cross_prefix}gcc}"
559 if test -z "${CXX}${cross_prefix}"; then
562 cxx
="${CXX-${cross_prefix}g++}"
565 ar="${AR-${cross_prefix}ar}"
566 as
="${AS-${cross_prefix}as}"
569 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
570 ld
="${LD-${cross_prefix}ld}"
571 ranlib
="${RANLIB-${cross_prefix}ranlib}"
572 nm
="${NM-${cross_prefix}nm}"
573 strip
="${STRIP-${cross_prefix}strip}"
574 windres
="${WINDRES-${cross_prefix}windres}"
575 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
577 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
579 pkg_config
=query_pkg_config
580 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
582 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
583 ARFLAGS
="${ARFLAGS-rv}"
585 # default flags for all hosts
586 # We use -fwrapv to tell the compiler that we require a C dialect where
587 # left shift of signed integers is well defined and has the expected
588 # 2s-complement style results. (Both clang and gcc agree that it
589 # provides these semantics.)
590 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv -std=gnu99 $QEMU_CFLAGS"
591 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
592 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
593 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
594 QEMU_INCLUDES
="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
595 if test "$debug_info" = "yes"; then
597 LDFLAGS
="-g $LDFLAGS"
600 # make source path absolute
601 source_path
=$
(cd "$source_path"; pwd)
603 # running configure in the source tree?
604 # we know that's the case if configure is there.
605 if test -f "./configure"; then
606 pwd_is_source_path
="y"
608 pwd_is_source_path
="n"
614 #error $1 not defined
616 int main(void) { return 0; }
624 int main(void) { return 0; }
631 int main(void) { return 0; }
635 if check_define __linux__
; then
637 elif check_define _WIN32
; then
639 elif check_define __OpenBSD__
; then
641 elif check_define __sun__
; then
643 elif check_define __HAIKU__
; then
645 elif check_define __FreeBSD__
; then
647 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
648 targetos
='GNU/kFreeBSD'
649 elif check_define __DragonFly__
; then
651 elif check_define __NetBSD__
; then
653 elif check_define __APPLE__
; then
656 # This is a fatal error, but don't report it yet, because we
657 # might be going to just print the --help text, or it might
658 # be the result of a missing compiler.
663 # Some host OSes need non-standard checks for which CPU to use.
664 # Note that these checks are broken for cross-compilation: if you're
665 # cross-compiling to one of these OSes then you'll need to specify
666 # the correct CPU with the --cpu option.
669 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
670 # run 64-bit userspace code.
671 # If the user didn't specify a CPU explicitly and the kernel says this is
672 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
673 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
678 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
679 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
684 if test ! -z "$cpu" ; then
685 # command line argument
687 elif check_define __i386__
; then
689 elif check_define __x86_64__
; then
690 if check_define __ILP32__
; then
695 elif check_define __sparc__
; then
696 if check_define __arch64__
; then
701 elif check_define _ARCH_PPC
; then
702 if check_define _ARCH_PPC64
; then
707 elif check_define __mips__
; then
709 elif check_define __s390__
; then
710 if check_define __s390x__
; then
715 elif check_define __riscv
; then
716 if check_define _LP64
; then
721 elif check_define __arm__
; then
723 elif check_define __aarch64__
; then
730 # Normalise host CPU name and set ARCH.
731 # Note that this case should only have supported host CPUs, not guests.
733 ppc|ppc64|s390|s390x|sparc64|x32|riscv32|riscv64
)
736 eval "cross_cc_${cpu}=\$host_cc"
738 i386|i486|i586|i686|i86pc|BePC
)
741 cross_cc_i386
=$host_cc
746 cross_cc_x86_64
=$host_cc
751 cross_cc_arm
=$host_cc
756 cross_cc_aarch64
=$host_cc
761 cross_cc_mips
=$host_cc
766 cross_cc_sparc
=$host_cc
769 # This will result in either an error or falling back to TCI later
773 if test -z "$ARCH"; then
779 # host *BSD for user mode
787 audio_possible_drivers
="dsound sdl"
788 if check_include dsound.h
; then
789 audio_drv_list
="dsound"
797 audio_drv_list
="oss try-sdl"
798 audio_possible_drivers
="oss sdl pa"
803 audio_drv_list
="oss try-sdl"
804 audio_possible_drivers
="oss sdl pa"
805 # needed for kinfo_getvmmap(3) in libutil.h
807 # needed for kinfo_getproc
808 libs_qga
="-lutil $libs_qga"
809 netmap
="" # enable netmap autodetect
810 HOST_VARIANT_DIR
="freebsd"
816 audio_drv_list
="oss try-sdl"
817 audio_possible_drivers
="oss sdl pa"
818 HOST_VARIANT_DIR
="dragonfly"
824 audio_drv_list
="oss try-sdl"
825 audio_possible_drivers
="oss sdl"
827 HOST_VARIANT_DIR
="netbsd"
833 audio_drv_list
="try-sdl"
834 audio_possible_drivers
="sdl"
835 HOST_VARIANT_DIR
="openbsd"
843 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
844 if [ "$cpu" = "x86_64" ] ; then
845 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
846 LDFLAGS
="-arch x86_64 $LDFLAGS"
849 audio_drv_list
="coreaudio try-sdl"
850 audio_possible_drivers
="coreaudio sdl"
851 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
852 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
853 # Disable attempts to use ObjectiveC features in os/object.h since they
854 # won't work when we're compiling with gcc as a C compiler.
855 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
856 HOST_VARIANT_DIR
="darwin"
862 install="${INSTALL-ginstall}"
863 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
864 if test -f /usr
/include
/sys
/soundcard.h
; then
865 audio_drv_list
="oss try-sdl"
867 audio_possible_drivers
="oss sdl"
868 # needed for CMSG_ macros in sys/socket.h
869 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
870 # needed for TIOCWIN* defines in termios.h
871 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
872 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
873 solarisnetlibs
="-lsocket -lnsl -lresolv"
874 LIBS
="$solarisnetlibs $LIBS"
875 libs_qga
="$solarisnetlibs $libs_qga"
879 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
880 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
883 audio_drv_list
="try-pa oss"
884 audio_possible_drivers
="oss alsa sdl pa"
888 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES"
894 if [ "$bsd" = "yes" ] ; then
895 if [ "$darwin" != "yes" ] ; then
900 : ${make=${MAKE-make}}
901 : ${install=${INSTALL-install}}
902 : ${python=${PYTHON-python}}
903 : ${smbd=${SMBD-/usr/sbin/smbd}}
905 # Default objcc to clang if available, otherwise use CC
912 if test "$mingw32" = "yes" ; then
915 # MinGW needs -mthreads for TLS and macro _MT.
916 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
917 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
919 if compile_prog
"" "-liberty" ; then
920 LIBS
="-liberty $LIBS"
922 prefix
="c:/Program Files/QEMU"
925 qemu_docdir
="\${prefix}"
927 sysconfdir
="\${prefix}"
930 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
936 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
938 --help|
-h) show_help
=yes
940 --version|
-V) exec cat $source_path/VERSION
942 --prefix=*) prefix
="$optarg"
944 --interp-prefix=*) interp_prefix
="$optarg"
952 --host-cc=*) host_cc
="$optarg"
956 --iasl=*) iasl
="$optarg"
958 --objcc=*) objcc
="$optarg"
960 --make=*) make="$optarg"
962 --install=*) install="$optarg"
964 --python=*) python
="$optarg"
966 --gcov=*) gcov_tool
="$optarg"
968 --smbd=*) smbd
="$optarg"
978 --disable-debug-info)
990 --target-list=*) target_list
="$optarg"
992 --enable-trace-backends=*) trace_backends
="$optarg"
994 # XXX: backwards compatibility
995 --enable-trace-backend=*) trace_backends
="$optarg"
997 --with-trace-file=*) trace_file
="$optarg"
999 --with-default-devices) default_devices
="yes"
1001 --without-default-devices) default_devices
="no"
1003 --enable-gprof) gprof
="yes"
1005 --enable-gcov) gcov
="yes"
1009 LDFLAGS
="-static $LDFLAGS"
1010 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
1012 --mandir=*) mandir
="$optarg"
1014 --bindir=*) bindir
="$optarg"
1016 --libdir=*) libdir
="$optarg"
1018 --libexecdir=*) libexecdir
="$optarg"
1020 --includedir=*) includedir
="$optarg"
1022 --datadir=*) datadir
="$optarg"
1024 --with-confsuffix=*) confsuffix
="$optarg"
1026 --docdir=*) qemu_docdir
="$optarg"
1028 --sysconfdir=*) sysconfdir
="$optarg"
1030 --localstatedir=*) local_statedir
="$optarg"
1032 --firmwarepath=*) firmwarepath
="$optarg"
1034 --host=*|
--build=*|\
1035 --disable-dependency-tracking|\
1036 --sbindir=*|
--sharedstatedir=*|\
1037 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
1038 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
1039 # These switches are silently ignored, for compatibility with
1040 # autoconf-generated configure scripts. This allows QEMU's
1041 # configure to be used by RPM and similar macros that set
1042 # lots of directory switches by default.
1044 --disable-sdl) sdl
="no"
1046 --enable-sdl) sdl
="yes"
1048 --disable-sdl-image) sdl_image
="no"
1050 --enable-sdl-image) sdl_image
="yes"
1052 --disable-qom-cast-debug) qom_cast_debug
="no"
1054 --enable-qom-cast-debug) qom_cast_debug
="yes"
1056 --disable-virtfs) virtfs
="no"
1058 --enable-virtfs) virtfs
="yes"
1060 --disable-mpath) mpath
="no"
1062 --enable-mpath) mpath
="yes"
1064 --disable-vnc) vnc
="no"
1066 --enable-vnc) vnc
="yes"
1068 --oss-lib=*) oss_lib
="$optarg"
1070 --audio-drv-list=*) audio_drv_list
="$optarg"
1072 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1074 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1076 --enable-debug-tcg) debug_tcg
="yes"
1078 --disable-debug-tcg) debug_tcg
="no"
1081 # Enable debugging options that aren't excessively noisy
1088 --enable-sanitizers) sanitizers
="yes"
1090 --disable-sanitizers) sanitizers
="no"
1092 --enable-sparse) sparse
="yes"
1094 --disable-sparse) sparse
="no"
1096 --disable-strip) strip_opt
="no"
1098 --disable-vnc-sasl) vnc_sasl
="no"
1100 --enable-vnc-sasl) vnc_sasl
="yes"
1102 --disable-vnc-jpeg) vnc_jpeg
="no"
1104 --enable-vnc-jpeg) vnc_jpeg
="yes"
1106 --disable-vnc-png) vnc_png
="no"
1108 --enable-vnc-png) vnc_png
="yes"
1110 --disable-slirp) slirp
="no"
1112 --enable-slirp=git
) slirp
="git"
1114 --enable-slirp=system
) slirp
="system"
1116 --disable-vde) vde
="no"
1118 --enable-vde) vde
="yes"
1120 --disable-netmap) netmap
="no"
1122 --enable-netmap) netmap
="yes"
1124 --disable-xen) xen
="no"
1126 --enable-xen) xen
="yes"
1128 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1130 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1132 --disable-brlapi) brlapi
="no"
1134 --enable-brlapi) brlapi
="yes"
1136 --disable-bluez) bluez
="no"
1138 --enable-bluez) bluez
="yes"
1140 --disable-kvm) kvm
="no"
1142 --enable-kvm) kvm
="yes"
1144 --disable-hax) hax
="no"
1146 --enable-hax) hax
="yes"
1148 --disable-hvf) hvf
="no"
1150 --enable-hvf) hvf
="yes"
1152 --disable-whpx) whpx
="no"
1154 --enable-whpx) whpx
="yes"
1156 --disable-tcg-interpreter) tcg_interpreter
="no"
1158 --enable-tcg-interpreter) tcg_interpreter
="yes"
1160 --disable-cap-ng) cap_ng
="no"
1162 --enable-cap-ng) cap_ng
="yes"
1164 --disable-tcg) tcg
="no"
1166 --enable-tcg) tcg
="yes"
1168 --disable-malloc-trim) malloc_trim
="no"
1170 --enable-malloc-trim) malloc_trim
="yes"
1172 --disable-spice) spice
="no"
1174 --enable-spice) spice
="yes"
1176 --disable-libiscsi) libiscsi
="no"
1178 --enable-libiscsi) libiscsi
="yes"
1180 --disable-libnfs) libnfs
="no"
1182 --enable-libnfs) libnfs
="yes"
1184 --enable-profiler) profiler
="yes"
1186 --disable-cocoa) cocoa
="no"
1190 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1192 --disable-system) softmmu
="no"
1194 --enable-system) softmmu
="yes"
1201 --disable-linux-user) linux_user
="no"
1203 --enable-linux-user) linux_user
="yes"
1205 --disable-bsd-user) bsd_user
="no"
1207 --enable-bsd-user) bsd_user
="yes"
1209 --enable-pie) pie
="yes"
1211 --disable-pie) pie
="no"
1213 --enable-werror) werror
="yes"
1215 --disable-werror) werror
="no"
1217 --enable-stack-protector) stack_protector
="yes"
1219 --disable-stack-protector) stack_protector
="no"
1221 --disable-curses) curses
="no"
1223 --enable-curses) curses
="yes"
1225 --disable-iconv) iconv="no"
1227 --enable-iconv) iconv="yes"
1229 --disable-curl) curl
="no"
1231 --enable-curl) curl
="yes"
1233 --disable-fdt) fdt
="no"
1235 --enable-fdt) fdt
="yes"
1237 --disable-linux-aio) linux_aio
="no"
1239 --enable-linux-aio) linux_aio
="yes"
1241 --disable-attr) attr
="no"
1243 --enable-attr) attr
="yes"
1245 --disable-membarrier) membarrier
="no"
1247 --enable-membarrier) membarrier
="yes"
1249 --disable-blobs) blobs
="no"
1251 --with-pkgversion=*) pkgversion
="$optarg"
1253 --with-coroutine=*) coroutine
="$optarg"
1255 --disable-coroutine-pool) coroutine_pool
="no"
1257 --enable-coroutine-pool) coroutine_pool
="yes"
1259 --enable-debug-stack-usage) debug_stack_usage
="yes"
1261 --enable-crypto-afalg) crypto_afalg
="yes"
1263 --disable-crypto-afalg) crypto_afalg
="no"
1265 --disable-docs) docs
="no"
1267 --enable-docs) docs
="yes"
1269 --disable-vhost-net) vhost_net
="no"
1271 --enable-vhost-net) vhost_net
="yes"
1273 --disable-vhost-crypto) vhost_crypto
="no"
1275 --enable-vhost-crypto) vhost_crypto
="yes"
1277 --disable-vhost-scsi) vhost_scsi
="no"
1279 --enable-vhost-scsi) vhost_scsi
="yes"
1281 --disable-vhost-vsock) vhost_vsock
="no"
1283 --enable-vhost-vsock) vhost_vsock
="yes"
1285 --disable-opengl) opengl
="no"
1287 --enable-opengl) opengl
="yes"
1289 --disable-rbd) rbd
="no"
1291 --enable-rbd) rbd
="yes"
1293 --disable-xfsctl) xfs
="no"
1295 --enable-xfsctl) xfs
="yes"
1297 --disable-smartcard) smartcard
="no"
1299 --enable-smartcard) smartcard
="yes"
1301 --disable-libusb) libusb
="no"
1303 --enable-libusb) libusb
="yes"
1305 --disable-usb-redir) usb_redir
="no"
1307 --enable-usb-redir) usb_redir
="yes"
1309 --disable-zlib-test) zlib
="no"
1311 --disable-lzo) lzo
="no"
1313 --enable-lzo) lzo
="yes"
1315 --disable-snappy) snappy
="no"
1317 --enable-snappy) snappy
="yes"
1319 --disable-bzip2) bzip2="no"
1321 --enable-bzip2) bzip2="yes"
1323 --enable-lzfse) lzfse
="yes"
1325 --disable-lzfse) lzfse
="no"
1327 --enable-guest-agent) guest_agent
="yes"
1329 --disable-guest-agent) guest_agent
="no"
1331 --enable-guest-agent-msi) guest_agent_msi
="yes"
1333 --disable-guest-agent-msi) guest_agent_msi
="no"
1335 --with-vss-sdk) vss_win32_sdk
=""
1337 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1339 --without-vss-sdk) vss_win32_sdk
="no"
1341 --with-win-sdk) win_sdk
=""
1343 --with-win-sdk=*) win_sdk
="$optarg"
1345 --without-win-sdk) win_sdk
="no"
1347 --enable-tools) want_tools
="yes"
1349 --disable-tools) want_tools
="no"
1351 --enable-seccomp) seccomp
="yes"
1353 --disable-seccomp) seccomp
="no"
1355 --disable-glusterfs) glusterfs
="no"
1357 --disable-avx2) avx2_opt
="no"
1359 --enable-avx2) avx2_opt
="yes"
1361 --enable-glusterfs) glusterfs
="yes"
1363 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1364 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1366 --enable-vhdx|
--disable-vhdx)
1367 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1369 --enable-uuid|
--disable-uuid)
1370 echo "$0: $opt is obsolete, UUID support is always built" >&2
1372 --disable-gtk) gtk
="no"
1374 --enable-gtk) gtk
="yes"
1376 --tls-priority=*) tls_priority
="$optarg"
1378 --disable-gnutls) gnutls
="no"
1380 --enable-gnutls) gnutls
="yes"
1382 --disable-nettle) nettle
="no"
1384 --enable-nettle) nettle
="yes"
1386 --disable-gcrypt) gcrypt
="no"
1388 --enable-gcrypt) gcrypt
="yes"
1390 --disable-auth-pam) auth_pam
="no"
1392 --enable-auth-pam) auth_pam
="yes"
1394 --enable-rdma) rdma
="yes"
1396 --disable-rdma) rdma
="no"
1398 --enable-pvrdma) pvrdma
="yes"
1400 --disable-pvrdma) pvrdma
="no"
1402 --disable-vte) vte
="no"
1404 --enable-vte) vte
="yes"
1406 --disable-virglrenderer) virglrenderer
="no"
1408 --enable-virglrenderer) virglrenderer
="yes"
1410 --disable-tpm) tpm
="no"
1412 --enable-tpm) tpm
="yes"
1414 --disable-libssh2) libssh2
="no"
1416 --enable-libssh2) libssh2
="yes"
1418 --disable-live-block-migration) live_block_migration
="no"
1420 --enable-live-block-migration) live_block_migration
="yes"
1422 --disable-numa) numa
="no"
1424 --enable-numa) numa
="yes"
1426 --disable-libxml2) libxml2
="no"
1428 --enable-libxml2) libxml2
="yes"
1430 --disable-tcmalloc) tcmalloc
="no"
1432 --enable-tcmalloc) tcmalloc
="yes"
1434 --disable-jemalloc) jemalloc
="no"
1436 --enable-jemalloc) jemalloc
="yes"
1438 --disable-replication) replication
="no"
1440 --enable-replication) replication
="yes"
1442 --disable-vxhs) vxhs
="no"
1444 --enable-vxhs) vxhs
="yes"
1446 --disable-bochs) bochs
="no"
1448 --enable-bochs) bochs
="yes"
1450 --disable-cloop) cloop
="no"
1452 --enable-cloop) cloop
="yes"
1454 --disable-dmg) dmg
="no"
1456 --enable-dmg) dmg
="yes"
1458 --disable-qcow1) qcow1
="no"
1460 --enable-qcow1) qcow1
="yes"
1462 --disable-vdi) vdi
="no"
1464 --enable-vdi) vdi
="yes"
1466 --disable-vvfat) vvfat
="no"
1468 --enable-vvfat) vvfat
="yes"
1470 --disable-qed) qed
="no"
1472 --enable-qed) qed
="yes"
1474 --disable-parallels) parallels
="no"
1476 --enable-parallels) parallels
="yes"
1478 --disable-sheepdog) sheepdog
="no"
1480 --enable-sheepdog) sheepdog
="yes"
1482 --disable-vhost-user) vhost_user
="no"
1484 --enable-vhost-user) vhost_user
="yes"
1486 --disable-vhost-kernel) vhost_kernel
="no"
1488 --enable-vhost-kernel) vhost_kernel
="yes"
1490 --disable-capstone) capstone
="no"
1492 --enable-capstone) capstone
="yes"
1494 --enable-capstone=git
) capstone
="git"
1496 --enable-capstone=system
) capstone
="system"
1498 --with-git=*) git
="$optarg"
1500 --enable-git-update) git_update
=yes
1502 --disable-git-update) git_update
=no
1504 --enable-debug-mutex) debug_mutex
=yes
1506 --disable-debug-mutex) debug_mutex
=no
1508 --enable-libpmem) libpmem
=yes
1510 --disable-libpmem) libpmem
=no
1513 echo "ERROR: unknown option $opt"
1514 echo "Try '$0 --help' for more information"
1523 LDFLAGS
="-m32 $LDFLAGS"
1524 cross_cc_powerpc
=$cc
1525 cross_cc_cflags_powerpc
=$CPU_CFLAGS
1529 LDFLAGS
="-m64 $LDFLAGS"
1531 cross_cc_cflags_ppc64
=$CPU_CFLAGS
1534 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1535 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1537 cross_cc_cflags_sparc
=$CPU_CFLAGS
1540 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1541 LDFLAGS
="-m64 $LDFLAGS"
1542 cross_cc_sparc64
=$cc
1543 cross_cc_cflags_sparc64
=$CPU_CFLAGS
1547 LDFLAGS
="-m31 $LDFLAGS"
1549 cross_cc_cflags_s390
=$CPU_CFLAGS
1553 LDFLAGS
="-m64 $LDFLAGS"
1555 cross_cc_cflags_s390x
=$CPU_CFLAGS
1559 LDFLAGS
="-m32 $LDFLAGS"
1561 cross_cc_cflags_i386
=$CPU_CFLAGS
1564 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1565 # If we truly care, we should simply detect this case at
1566 # runtime and generate the fallback to serial emulation.
1567 CPU_CFLAGS
="-m64 -mcx16"
1568 LDFLAGS
="-m64 $LDFLAGS"
1570 cross_cc_cflags_x86_64
=$CPU_CFLAGS
1574 LDFLAGS
="-mx32 $LDFLAGS"
1576 cross_cc_cflags_i386
=$CPU_CFLAGS
1578 # No special flags required for other host CPUs
1581 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1583 # For user-mode emulation the host arch has to be one we explicitly
1584 # support, even if we're using TCI.
1585 if [ "$ARCH" = "unknown" ]; then
1590 default_target_list
=""
1594 if [ "$softmmu" = "yes" ]; then
1595 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1597 if [ "$linux_user" = "yes" ]; then
1598 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1600 if [ "$bsd_user" = "yes" ]; then
1601 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1604 for config
in $mak_wilds; do
1605 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1608 # Enumerate public trace backends for --help output
1609 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1611 if test x
"$show_help" = x
"yes" ; then
1614 Usage: configure [options]
1615 Options: [defaults in brackets after descriptions]
1618 --help print this message
1619 --prefix=PREFIX install in PREFIX [$prefix]
1620 --interp-prefix=PREFIX where to find shared libraries, etc.
1621 use %M for cpu name [$interp_prefix]
1622 --target-list=LIST set target list (default: build everything)
1623 $(echo Available targets: $default_target_list | \
1624 fold -s -w 53 | sed -e 's/^/ /')
1626 Advanced options (experts only):
1627 --source-path=PATH path of source code [$source_path]
1628 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1629 --cc=CC use C compiler CC [$cc]
1630 --iasl=IASL use ACPI compiler IASL [$iasl]
1631 --host-cc=CC use C compiler CC [$host_cc] for code run at
1633 --cxx=CXX use C++ compiler CXX [$cxx]
1634 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1635 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1636 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1637 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1638 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1639 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1640 --make=MAKE use specified make [$make]
1641 --install=INSTALL use specified install [$install]
1642 --python=PYTHON use specified python [$python]
1643 --smbd=SMBD use specified smbd [$smbd]
1644 --with-git=GIT use specified git [$git]
1645 --static enable static build [$static]
1646 --mandir=PATH install man pages in PATH
1647 --datadir=PATH install firmware in PATH$confsuffix
1648 --docdir=PATH install documentation in PATH$confsuffix
1649 --bindir=PATH install binaries in PATH
1650 --libdir=PATH install libraries in PATH
1651 --libexecdir=PATH install helper binaries in PATH
1652 --sysconfdir=PATH install config in PATH$confsuffix
1653 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1654 --firmwarepath=PATH search PATH for firmware files
1655 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1656 --with-pkgversion=VERS use specified string as sub-version of the package
1657 --enable-debug enable common debug build options
1658 --enable-sanitizers enable default sanitizers
1659 --disable-strip disable stripping binaries
1660 --disable-werror disable compilation abort on warning
1661 --disable-stack-protector disable compiler-provided stack protection
1662 --audio-drv-list=LIST set audio drivers list:
1663 Available drivers: $audio_possible_drivers
1664 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1665 --block-drv-rw-whitelist=L
1666 set block driver read-write whitelist
1667 (affects only QEMU, not qemu-img)
1668 --block-drv-ro-whitelist=L
1669 set block driver read-only whitelist
1670 (affects only QEMU, not qemu-img)
1671 --enable-trace-backends=B Set trace backend
1672 Available backends: $trace_backend_list
1673 --with-trace-file=NAME Full PATH,NAME of file to store traces
1675 --disable-slirp disable SLIRP userspace network connectivity
1676 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1677 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1678 --oss-lib path to OSS library
1679 --cpu=CPU Build for host CPU [$cpu]
1680 --with-coroutine=BACKEND coroutine backend. Supported options:
1681 ucontext, sigaltstack, windows
1682 --enable-gcov enable test coverage analysis with gcov
1683 --gcov=GCOV use specified gcov [$gcov_tool]
1684 --disable-blobs disable installing provided firmware blobs
1685 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1686 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1687 --tls-priority default TLS protocol/cipher priority string
1688 --enable-gprof QEMU profiling with gprof
1689 --enable-profiler profiler support
1690 --enable-debug-stack-usage
1691 track the maximum stack usage of stacks created by qemu_alloc_stack
1693 Optional features, enabled with --enable-FEATURE and
1694 disabled with --disable-FEATURE, default is enabled if available:
1696 system all system emulation targets
1697 user supported user emulation targets
1698 linux-user all linux usermode emulation targets
1699 bsd-user all BSD usermode emulation targets
1700 docs build documentation
1701 guest-agent build the QEMU Guest Agent
1702 guest-agent-msi build guest agent Windows MSI installation package
1703 pie Position Independent Executables
1704 modules modules support
1705 debug-tcg TCG debugging (default is disabled)
1706 debug-info debugging information
1707 sparse sparse checker
1709 gnutls GNUTLS cryptography support
1710 nettle nettle cryptography support
1711 gcrypt libgcrypt cryptography support
1712 auth-pam PAM access control
1714 sdl_image SDL Image support for icons
1716 vte vte support for the gtk UI
1718 iconv font glyph conversion support
1720 vnc-sasl SASL encryption for VNC server
1721 vnc-jpeg JPEG lossy compression for VNC server
1722 vnc-png PNG compression for VNC server
1723 cocoa Cocoa UI (Mac OS X only)
1725 mpath Multipath persistent reservation passthrough
1726 xen xen backend driver support
1727 xen-pci-passthrough PCI passthrough support for Xen
1728 brlapi BrlAPI (Braile)
1729 curl curl connectivity
1730 membarrier membarrier system call (for Linux 4.14+ or Windows)
1732 bluez bluez stack connectivity
1733 kvm KVM acceleration support
1734 hax HAX acceleration support
1735 hvf Hypervisor.framework acceleration support
1736 whpx Windows Hypervisor Platform acceleration support
1737 rdma Enable RDMA-based migration
1738 pvrdma Enable PVRDMA support
1739 vde support for vde network
1740 netmap support for netmap network
1741 linux-aio Linux AIO support
1742 cap-ng libcap-ng support
1743 attr attr and xattr support
1744 vhost-net vhost-net kernel acceleration support
1745 vhost-vsock virtio sockets device support
1746 vhost-scsi vhost-scsi kernel target support
1747 vhost-crypto vhost-user-crypto backend support
1748 vhost-kernel vhost kernel backend support
1749 vhost-user vhost-user backend support
1751 rbd rados block device (rbd)
1752 libiscsi iscsi support
1754 smartcard smartcard support (libcacard)
1755 libusb libusb (for usb passthrough)
1756 live-block-migration Block migration in the main migration stream
1757 usb-redir usb network redirection support
1758 lzo support of lzo compression library
1759 snappy support of snappy compression library
1760 bzip2 support of bzip2 compression library
1761 (for reading bzip2-compressed dmg images)
1762 lzfse support of lzfse compression library
1763 (for reading lzfse-compressed dmg images)
1764 seccomp seccomp support
1765 coroutine-pool coroutine freelist (better performance)
1766 glusterfs GlusterFS backend
1768 libssh2 ssh block device support
1769 numa libnuma support
1770 libxml2 for Parallels image format
1771 tcmalloc tcmalloc support
1772 jemalloc jemalloc support
1773 avx2 AVX2 optimization support
1774 replication replication support
1775 opengl opengl support
1776 virglrenderer virgl rendering support
1777 xfsctl xfsctl support
1778 qom-cast-debug cast debugging support
1779 tools build qemu-io, qemu-nbd and qemu-img tools
1780 vxhs Veritas HyperScale vDisk backend support
1781 bochs bochs image format support
1782 cloop cloop image format support
1783 dmg dmg image format support
1784 qcow1 qcow v1 image format support
1785 vdi vdi image format support
1786 vvfat vvfat image format support
1787 qed qed image format support
1788 parallels parallels image format support
1789 sheepdog sheepdog block driver support
1790 crypto-afalg Linux AF_ALG crypto backend driver
1791 capstone capstone disassembler support
1792 debug-mutex mutex debugging support
1793 libpmem libpmem support
1795 NOTE: The object files are built at the place where configure is launched
1800 if ! has
$python; then
1801 error_exit
"Python not found. Use --python=/path/to/python"
1804 # Note that if the Python conditional here evaluates True we will exit
1805 # with status 1 which is a shell 'false' value.
1806 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then
1807 error_exit
"Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \
1808 "Use --python=/path/to/python to specify a supported Python."
1811 # Preserve python version since some functionality is dependent on it
1812 python_version
=$
($python -V 2>&1 |
sed -e 's/Python\ //')
1814 # Suppress writing compiled files
1817 # Check that the C compiler works. Doing this here before testing
1818 # the host CPU ensures that we had a valid CC to autodetect the
1819 # $cpu var (and we should bail right here if that's not the case).
1820 # It also allows the help message to be printed without a CC.
1822 if compile_object
; then
1823 : C compiler works ok
1825 error_exit
"\"$cc\" either does not exist or does not work"
1827 if ! compile_prog
; then
1828 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1831 # Now we have handled --enable-tcg-interpreter and know we're not just
1832 # printing the help message, bail out if the host CPU isn't supported.
1833 if test "$ARCH" = "unknown"; then
1834 if test "$tcg_interpreter" = "yes" ; then
1835 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1837 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1841 # Consult white-list to determine whether to enable werror
1842 # by default. Only enable by default for git builds
1843 if test -z "$werror" ; then
1844 if test -e "$source_path/.git" && \
1845 { test "$linux" = "yes" ||
test "$mingw32" = "yes"; }; then
1852 if test "$bogus_os" = "yes"; then
1853 # Now that we know that we're not printing the help and that
1854 # the compiler works (so the results of the check_defines we used
1855 # to identify the OS are reliable), if we didn't recognize the
1856 # host OS we should stop now.
1857 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1860 # Check whether the compiler matches our minimum requirements:
1862 #if defined(__clang_major__) && defined(__clang_minor__)
1863 # ifdef __apple_build_version__
1864 # if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1)
1865 # error You need at least XCode Clang v5.1 to compile QEMU
1868 # if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
1869 # error You need at least Clang v3.4 to compile QEMU
1872 #elif defined(__GNUC__) && defined(__GNUC_MINOR__)
1873 # if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
1874 # error You need at least GCC v4.8 to compile QEMU
1877 # error You either need GCC or Clang to compiler QEMU
1879 int main (void) { return 0; }
1881 if ! compile_prog
"" "" ; then
1882 error_exit
"You need at least GCC v4.8 or Clang v3.4 (or XCode Clang v5.1)"
1885 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1886 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1887 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1888 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1889 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1890 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1891 # Note that we do not add -Werror to gcc_flags here, because that would
1892 # enable it for all configure tests. If a configure test failed due
1893 # to -Werror this would just silently disable some features,
1894 # so it's too error prone.
1896 cc_has_warning_flag
() {
1899 # Use the positive sense of the flag when testing for -Wno-wombat
1900 # support (gcc will happily accept the -Wno- form of unknown
1902 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1903 compile_prog
"-Werror $optflag" ""
1906 for flag
in $gcc_flags; do
1907 if cc_has_warning_flag
$flag ; then
1908 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1912 if test "$stack_protector" != "no"; then
1914 int main(int argc, char *argv[])
1916 char arr[64], *p = arr, *c = argv[0];
1923 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1925 for flag
in $gcc_flags; do
1926 # We need to check both a compile and a link, since some compiler
1927 # setups fail only on a .c->.o compile and some only at link time
1928 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1929 compile_prog
"-Werror $flag" ""; then
1930 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1935 if test "$stack_protector" = yes; then
1936 if test $sp_on = 0; then
1937 error_exit
"Stack protector not supported"
1942 # Disable -Wmissing-braces on older compilers that warn even for
1943 # the "universal" C zero initializer {0}.
1949 if compile_object
"-Werror" "" ; then
1952 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1955 # Static linking is not possible with modules or PIE
1956 if test "$static" = "yes" ; then
1957 if test "$modules" = "yes" ; then
1958 error_exit
"static and modules are mutually incompatible"
1960 if test "$pie" = "yes" ; then
1961 error_exit
"static and pie are mutually incompatible"
1967 # Unconditional check for compiler __thread support
1969 static __thread int tls_var;
1970 int main(void) { return tls_var; }
1973 if ! compile_prog
"-Werror" "" ; then
1974 error_exit
"Your compiler does not support the __thread specifier for " \
1975 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1978 if test "$pie" = ""; then
1979 case "$cpu-$targetos" in
1980 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1988 if test "$pie" != "no" ; then
1992 # define THREAD __thread
1997 static THREAD int tls_var;
1999 int main(void) { return tls_var; }
2002 if compile_prog
"-fPIE -DPIE" "-pie"; then
2003 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
2004 LDFLAGS
="-pie $LDFLAGS"
2006 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
2007 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
2010 if test "$pie" = "yes"; then
2011 error_exit
"PIE not available due to missing toolchain support"
2013 echo "Disabling PIE due to missing toolchain support"
2018 if compile_prog
"-Werror -fno-pie" "-nopie"; then
2019 CFLAGS_NOPIE
="-fno-pie"
2020 LDFLAGS_NOPIE
="-nopie"
2024 ##########################################
2025 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
2026 # use i686 as default anyway, but for those that don't, an explicit
2027 # specification is necessary
2029 if test "$cpu" = "i386"; then
2031 static int sfaa(int *ptr)
2033 return __sync_fetch_and_and(ptr, 0);
2039 val = __sync_val_compare_and_swap(&val, 0, 1);
2044 if ! compile_prog
"" "" ; then
2045 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
2049 #########################################
2050 # Solaris specific configure tool chain decisions
2052 if test "$solaris" = "yes" ; then
2053 if has
$install; then
2056 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
2057 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
2058 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
2060 if test "$(path_of $install)" = "/usr/sbin/install" ; then
2061 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
2062 "try ginstall from the GNU fileutils available from www.blastwave.org" \
2063 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
2068 if test -f /usr
/ccs
/bin
/ar ; then
2069 error_exit
"No path includes ar" \
2070 "Add /usr/ccs/bin to your path and rerun configure"
2072 error_exit
"No path includes ar"
2076 if test -z "${target_list+xxx}" ; then
2077 for target
in $default_target_list; do
2078 supported_target
$target 2>/dev
/null
&& \
2079 target_list
="$target_list $target"
2081 target_list
="${target_list# }"
2083 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
2084 for target
in $target_list; do
2085 # Check that we recognised the target name; this allows a more
2086 # friendly error message than if we let it fall through.
2087 case " $default_target_list " in
2091 error_exit
"Unknown target name '$target'"
2094 supported_target
$target ||
exit 1
2098 # see if system emulation was really requested
2099 case " $target_list " in
2100 *"-softmmu "*) softmmu
=yes
2106 feature_not_found
() {
2110 error_exit
"User requested feature $feature" \
2111 "configure was not able to find it." \
2116 # big/little endian test
2118 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2119 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2120 extern int foo(short *, short *);
2121 int main(int argc, char *argv[]) {
2122 return foo(big_endian, little_endian);
2126 if compile_object
; then
2127 if strings -a $TMPO |
grep -q BiGeNdIaN
; then
2129 elif strings -a $TMPO |
grep -q LiTtLeEnDiAn
; then
2132 echo big
/little
test failed
2135 echo big
/little
test failed
2138 ##########################################
2139 # cocoa implies not SDL or GTK
2140 # (the cocoa UI code currently assumes it is always the active UI
2141 # and doesn't interact well with other UI frontend code)
2142 if test "$cocoa" = "yes"; then
2143 if test "$sdl" = "yes"; then
2144 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
2146 if test "$gtk" = "yes"; then
2147 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
2153 # Some versions of Mac OS X incorrectly define SIZE_MAX
2157 int main(int argc, char *argv[]) {
2158 return printf("%zu", SIZE_MAX);
2161 have_broken_size_max
=no
2162 if ! compile_object
-Werror ; then
2163 have_broken_size_max
=yes
2166 ##########################################
2170 #include <sys/socket.h>
2171 #include <linux/ip.h>
2172 int main(void) { return sizeof(struct mmsghdr); }
2174 if compile_prog
"" "" ; then
2180 #########################################
2181 # vhost interdependencies and host support
2184 test "$vhost_user" = "" && vhost_user
=yes
2185 if test "$vhost_user" = "yes" && test "$mingw32" = "yes"; then
2186 error_exit
"vhost-user isn't available on win32"
2188 test "$vhost_kernel" = "" && vhost_kernel
=$linux
2189 if test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then
2190 error_exit
"vhost-kernel is only available on Linux"
2193 # vhost-kernel devices
2194 test "$vhost_scsi" = "" && vhost_scsi
=$vhost_kernel
2195 if test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then
2196 error_exit
"--enable-vhost-scsi requires --enable-vhost-kernel"
2198 test "$vhost_vsock" = "" && vhost_vsock
=$vhost_kernel
2199 if test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then
2200 error_exit
"--enable-vhost-vsock requires --enable-vhost-kernel"
2203 # vhost-user backends
2204 test "$vhost_net_user" = "" && vhost_net_user
=$vhost_user
2205 if test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then
2206 error_exit
"--enable-vhost-net-user requires --enable-vhost-user"
2208 test "$vhost_crypto" = "" && vhost_crypto
=$vhost_user
2209 if test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then
2210 error_exit
"--enable-vhost-crypto requires --enable-vhost-user"
2213 # OR the vhost-kernel and vhost-user values for simplicity
2214 if test "$vhost_net" = ""; then
2215 test "$vhost_net_user" = "yes" && vhost_net
=yes
2216 test "$vhost_kernel" = "yes" && vhost_net
=yes
2219 ##########################################
2220 # MinGW / Mingw-w64 localtime_r/gmtime_r check
2222 if test "$mingw32" = "yes"; then
2223 # Some versions of MinGW / Mingw-w64 lack localtime_r
2224 # and gmtime_r entirely.
2226 # Some versions of Mingw-w64 define a macro for
2227 # localtime_r/gmtime_r.
2229 # Some versions of Mingw-w64 will define functions
2230 # for localtime_r/gmtime_r, but only if you have
2231 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2232 # though, unistd.h and pthread.h both define
2235 # So this #undef localtime_r and #include <unistd.h>
2236 # are not in fact redundant.
2241 int main(void) { localtime_r(NULL, NULL); return 0; }
2243 if compile_prog
"" "" ; then
2250 ##########################################
2253 if ! has
"$pkg_config_exe"; then
2254 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2257 ##########################################
2260 if test "$linux_user" = "yes"; then
2263 #include <linux/futex.h>
2265 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2271 if ! compile_object
; then
2272 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2276 ##########################################
2279 if test "$lzo" != "no" ; then
2281 #include <lzo/lzo1x.h>
2282 int main(void) { lzo_version(); return 0; }
2284 if compile_prog
"" "-llzo2" ; then
2285 libs_softmmu
="$libs_softmmu -llzo2"
2288 if test "$lzo" = "yes"; then
2289 feature_not_found
"liblzo2" "Install liblzo2 devel"
2295 ##########################################
2298 if test "$snappy" != "no" ; then
2300 #include <snappy-c.h>
2301 int main(void) { snappy_max_compressed_length(4096); return 0; }
2303 if compile_prog
"" "-lsnappy" ; then
2304 libs_softmmu
="$libs_softmmu -lsnappy"
2307 if test "$snappy" = "yes"; then
2308 feature_not_found
"libsnappy" "Install libsnappy devel"
2314 ##########################################
2317 if test "$bzip2" != "no" ; then
2320 int main(void) { BZ2_bzlibVersion(); return 0; }
2322 if compile_prog
"" "-lbz2" ; then
2325 if test "$bzip2" = "yes"; then
2326 feature_not_found
"libbzip2" "Install libbzip2 devel"
2332 ##########################################
2335 if test "$lzfse" != "no" ; then
2338 int main(void) { lzfse_decode_scratch_size(); return 0; }
2340 if compile_prog
"" "-llzfse" ; then
2343 if test "$lzfse" = "yes"; then
2344 feature_not_found
"lzfse" "Install lzfse devel"
2350 ##########################################
2353 libseccomp_minver
="2.2.0"
2354 if test "$seccomp" != "no" ; then
2359 libseccomp_minver
="2.2.3"
2362 libseccomp_minver
="2.3.0"
2365 libseccomp_minver
=""
2369 if test "$libseccomp_minver" != "" &&
2370 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2371 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2372 seccomp_libs
="$($pkg_config --libs libseccomp)"
2375 if test "$seccomp" = "yes" ; then
2376 if test "$libseccomp_minver" != "" ; then
2377 feature_not_found
"libseccomp" \
2378 "Install libseccomp devel >= $libseccomp_minver"
2380 feature_not_found
"libseccomp" \
2381 "libseccomp is not supported for host cpu $cpu"
2387 ##########################################
2390 if test "$xen" != "no" ; then
2391 # Check whether Xen library path is specified via --extra-ldflags to avoid
2392 # overriding this setting with pkg-config output. If not, try pkg-config
2393 # to obtain all needed flags.
2395 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2396 $pkg_config --exists xencontrol
; then
2397 xen_ctrl_version
="$(printf '%d%02d%02d' \
2398 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2400 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2401 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2402 if $pkg_config --exists xentoolcore
; then
2403 xen_pc
="$xen_pc xentoolcore"
2405 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2406 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2409 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2410 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2412 # First we test whether Xen headers and libraries are available.
2413 # If no, we are done and there is no Xen support.
2414 # If yes, more tests are run to detect the Xen version.
2418 #include <xenctrl.h>
2423 if ! compile_prog
"" "$xen_libs" ; then
2425 if test "$xen" = "yes" ; then
2426 feature_not_found
"xen" "Install xen devel"
2432 cat > $TMPC <<EOF &&
2433 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2434 #define __XEN_TOOLS__
2435 #include <xendevicemodel.h>
2436 #include <xenforeignmemory.h>
2438 xendevicemodel_handle *xd;
2439 xenforeignmemory_handle *xfmem;
2441 xd = xendevicemodel_open(0, 0);
2442 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2444 xfmem = xenforeignmemory_open(0, 0);
2445 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2450 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2452 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2453 xen_ctrl_version
=41100
2456 cat > $TMPC <<EOF &&
2457 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2458 #include <xenforeignmemory.h>
2459 #include <xentoolcore.h>
2461 xenforeignmemory_handle *xfmem;
2463 xfmem = xenforeignmemory_open(0, 0);
2464 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2465 xentoolcore_restrict_all(0);
2470 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2472 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2473 xen_ctrl_version
=41000
2476 cat > $TMPC <<EOF &&
2477 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2478 #define __XEN_TOOLS__
2479 #include <xendevicemodel.h>
2481 xendevicemodel_handle *xd;
2483 xd = xendevicemodel_open(0, 0);
2484 xendevicemodel_close(xd);
2489 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2491 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2492 xen_ctrl_version
=40900
2495 cat > $TMPC <<EOF &&
2497 * If we have stable libs the we don't want the libxc compat
2498 * layers, regardless of what CFLAGS we may have been given.
2500 * Also, check if xengnttab_grant_copy_segment_t is defined and
2501 * grant copy operation is implemented.
2503 #undef XC_WANT_COMPAT_EVTCHN_API
2504 #undef XC_WANT_COMPAT_GNTTAB_API
2505 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2506 #include <xenctrl.h>
2507 #include <xenstore.h>
2508 #include <xenevtchn.h>
2509 #include <xengnttab.h>
2510 #include <xenforeignmemory.h>
2512 #include <xen/hvm/hvm_info_table.h>
2513 #if !defined(HVM_MAX_VCPUS)
2514 # error HVM_MAX_VCPUS not defined
2517 xc_interface *xc = NULL;
2518 xenforeignmemory_handle *xfmem;
2519 xenevtchn_handle *xe;
2520 xengnttab_handle *xg;
2521 xengnttab_grant_copy_segment_t* seg = NULL;
2525 xc = xc_interface_open(0, 0, 0);
2526 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2527 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2528 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2529 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2531 xfmem = xenforeignmemory_open(0, 0);
2532 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2534 xe = xenevtchn_open(0, 0);
2537 xg = xengnttab_open(0, 0);
2538 xengnttab_grant_copy(xg, 0, seg);
2543 compile_prog
"" "$xen_libs $xen_stable_libs"
2545 xen_ctrl_version
=40800
2548 cat > $TMPC <<EOF &&
2550 * If we have stable libs the we don't want the libxc compat
2551 * layers, regardless of what CFLAGS we may have been given.
2553 #undef XC_WANT_COMPAT_EVTCHN_API
2554 #undef XC_WANT_COMPAT_GNTTAB_API
2555 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2556 #include <xenctrl.h>
2557 #include <xenstore.h>
2558 #include <xenevtchn.h>
2559 #include <xengnttab.h>
2560 #include <xenforeignmemory.h>
2562 #include <xen/hvm/hvm_info_table.h>
2563 #if !defined(HVM_MAX_VCPUS)
2564 # error HVM_MAX_VCPUS not defined
2567 xc_interface *xc = NULL;
2568 xenforeignmemory_handle *xfmem;
2569 xenevtchn_handle *xe;
2570 xengnttab_handle *xg;
2574 xc = xc_interface_open(0, 0, 0);
2575 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2576 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2577 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2578 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2580 xfmem = xenforeignmemory_open(0, 0);
2581 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2583 xe = xenevtchn_open(0, 0);
2586 xg = xengnttab_open(0, 0);
2587 xengnttab_map_grant_ref(xg, 0, 0, 0);
2592 compile_prog
"" "$xen_libs $xen_stable_libs"
2594 xen_ctrl_version
=40701
2599 cat > $TMPC <<EOF &&
2600 #include <xenctrl.h>
2601 #include <xenstore.h>
2603 #include <xen/hvm/hvm_info_table.h>
2604 #if !defined(HVM_MAX_VCPUS)
2605 # error HVM_MAX_VCPUS not defined
2610 xc = xc_interface_open(0, 0, 0);
2611 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2612 xc_gnttab_open(NULL, 0);
2613 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2614 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2615 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2616 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2620 compile_prog
"" "$xen_libs"
2622 xen_ctrl_version
=40600
2627 cat > $TMPC <<EOF &&
2628 #include <xenctrl.h>
2629 #include <xenstore.h>
2631 #include <xen/hvm/hvm_info_table.h>
2632 #if !defined(HVM_MAX_VCPUS)
2633 # error HVM_MAX_VCPUS not defined
2638 xc = xc_interface_open(0, 0, 0);
2639 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2640 xc_gnttab_open(NULL, 0);
2641 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2642 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2643 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2647 compile_prog
"" "$xen_libs"
2649 xen_ctrl_version
=40500
2653 cat > $TMPC <<EOF &&
2654 #include <xenctrl.h>
2655 #include <xenstore.h>
2657 #include <xen/hvm/hvm_info_table.h>
2658 #if !defined(HVM_MAX_VCPUS)
2659 # error HVM_MAX_VCPUS not defined
2664 xc = xc_interface_open(0, 0, 0);
2665 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2666 xc_gnttab_open(NULL, 0);
2667 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2668 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2672 compile_prog
"" "$xen_libs"
2674 xen_ctrl_version
=40200
2678 if test "$xen" = "yes" ; then
2679 feature_not_found
"xen (unsupported version)" \
2680 "Install a supported xen (xen 4.2 or newer)"
2685 if test "$xen" = yes; then
2686 if test $xen_ctrl_version -ge 40701 ; then
2687 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2689 libs_softmmu
="$xen_libs $libs_softmmu"
2694 if test "$xen_pci_passthrough" != "no"; then
2695 if test "$xen" = "yes" && test "$linux" = "yes"; then
2696 xen_pci_passthrough
=yes
2698 if test "$xen_pci_passthrough" = "yes"; then
2699 error_exit
"User requested feature Xen PCI Passthrough" \
2700 " but this feature requires /sys from Linux"
2702 xen_pci_passthrough
=no
2706 ##########################################
2707 # Windows Hypervisor Platform accelerator (WHPX) check
2708 if test "$whpx" != "no" ; then
2709 if check_include
"WinHvPlatform.h" && check_include
"WinHvEmulation.h"; then
2712 if test "$whpx" = "yes"; then
2713 feature_not_found
"WinHvPlatform" "WinHvEmulation is not installed"
2719 ##########################################
2721 if test "$sparse" != "no" ; then
2725 if test "$sparse" = "yes" ; then
2726 feature_not_found
"sparse" "Install sparse binary"
2732 ##########################################
2734 if $pkg_config --exists "x11"; then
2736 x11_cflags
=$
($pkg_config --cflags x11
)
2737 x11_libs
=$
($pkg_config --libs x11
)
2740 ##########################################
2743 if test "$gtk" != "no"; then
2744 gtkpackage
="gtk+-3.0"
2745 gtkx11package
="gtk+-x11-3.0"
2747 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2748 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2749 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2750 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2751 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2753 gtk_cflags
="$gtk_cflags $x11_cflags"
2754 gtk_libs
="$gtk_libs $x11_libs"
2757 elif test "$gtk" = "yes"; then
2758 feature_not_found
"gtk" "Install gtk3-devel"
2765 ##########################################
2768 if test "$gnutls" != "no"; then
2769 if $pkg_config --exists "gnutls >= 3.1.18"; then
2770 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2771 gnutls_libs
=$
($pkg_config --libs gnutls
)
2772 libs_softmmu
="$gnutls_libs $libs_softmmu"
2773 libs_tools
="$gnutls_libs $libs_tools"
2774 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2776 elif test "$gnutls" = "yes"; then
2777 feature_not_found
"gnutls" "Install gnutls devel >= 3.1.18"
2784 # If user didn't give a --disable/enable-gcrypt flag,
2785 # then mark as disabled if user requested nettle
2787 if test -z "$gcrypt"
2789 if test "$nettle" = "yes"
2795 # If user didn't give a --disable/enable-nettle flag,
2796 # then mark as disabled if user requested gcrypt
2798 if test -z "$nettle"
2800 if test "$gcrypt" = "yes"
2807 if ! has
"libgcrypt-config"
2812 if test -n "$cross_prefix"
2814 host=$
(libgcrypt-config
--host)
2815 if test "$host-" != $cross_prefix
2821 maj
=`libgcrypt-config --version | awk -F . '{print $1}'`
2822 min
=`libgcrypt-config --version | awk -F . '{print $2}'`
2824 if test $maj != 1 ||
test $min -lt 5
2833 if test "$nettle" != "no"; then
2834 if $pkg_config --exists "nettle >= 2.7.1"; then
2835 nettle_cflags
=$
($pkg_config --cflags nettle
)
2836 nettle_libs
=$
($pkg_config --libs nettle
)
2837 nettle_version
=$
($pkg_config --modversion nettle
)
2838 libs_softmmu
="$nettle_libs $libs_softmmu"
2839 libs_tools
="$nettle_libs $libs_tools"
2840 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2843 if test -z "$gcrypt"; then
2847 if test "$nettle" = "yes"; then
2848 feature_not_found
"nettle" "Install nettle devel >= 2.7.1"
2855 if test "$gcrypt" != "no"; then
2856 if has_libgcrypt
; then
2857 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2858 gcrypt_libs
=$
(libgcrypt-config
--libs)
2859 # Debian has remove -lgpg-error from libgcrypt-config
2860 # as it "spreads unnecessary dependencies" which in
2861 # turn breaks static builds...
2862 if test "$static" = "yes"
2864 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2866 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2867 libs_tools
="$gcrypt_libs $libs_tools"
2868 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2874 gcry_mac_hd_t handle;
2875 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2876 GCRY_MAC_FLAG_SECURE, NULL);
2880 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2884 if test "$gcrypt" = "yes"; then
2885 feature_not_found
"gcrypt" "Install gcrypt devel >= 1.5.0"
2893 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2895 error_exit
"Only one of gcrypt & nettle can be enabled"
2898 ##########################################
2899 # libtasn1 - only for the TLS creds/session test suite
2904 if $pkg_config --exists "libtasn1"; then
2905 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2906 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2912 ##########################################
2915 if test "$auth_pam" != "no"; then
2917 #include <security/pam_appl.h>
2920 const char *service_name = "qemu";
2921 const char *user = "frank";
2922 const struct pam_conv *pam_conv = NULL;
2923 pam_handle_t *pamh = NULL;
2924 pam_start(service_name, user, pam_conv, &pamh);
2928 if compile_prog
"" "-lpam" ; then
2931 if test "$auth_pam" = "yes"; then
2932 feature_not_found
"PAM" "Install PAM development package"
2939 ##########################################
2940 # getifaddrs (for tests/test-io-channel-socket )
2943 if ! check_include
"ifaddrs.h" ; then
2947 ##########################################
2950 if test "$vte" != "no"; then
2951 vteminversion
="0.32.0"
2952 if $pkg_config --exists "vte-2.91"; then
2953 vtepackage
="vte-2.91"
2955 vtepackage
="vte-2.90"
2957 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2958 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2959 vte_libs
=$
($pkg_config --libs $vtepackage)
2960 vteversion
=$
($pkg_config --modversion $vtepackage)
2962 elif test "$vte" = "yes"; then
2963 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2969 ##########################################
2972 # Look for sdl configuration program (pkg-config or sdl-config). Try
2973 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2977 if $pkg_config sdl2
--exists; then
2978 sdlconfig
="$pkg_config sdl2"
2979 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2980 elif has
${sdl_config}; then
2981 sdlconfig
="$sdl2_config"
2982 sdlversion
=$
($sdlconfig --version)
2984 if test "$sdl" = "yes" ; then
2985 feature_not_found
"sdl" "Install SDL2-devel"
2988 # no need to do the rest
2991 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2992 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2997 #undef main /* We don't want SDL to override our main() */
2998 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
3000 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
3001 sdl_cflags
="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
3002 if test "$static" = "yes" ; then
3003 if $pkg_config sdl2
--exists; then
3004 sdl_libs
=$
($pkg_config sdl2
--static --libs 2>/dev
/null
)
3006 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
3009 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
3011 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
3014 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
3015 if test "$sdl" = "yes" && test "$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 SDL2 devel"
3031 fi # sdl compile test
3036 if test "$sdl_image" != "no" ; then
3037 if $pkg_config SDL2_image
--exists; then
3038 if test "$static" = "yes"; then
3039 sdl_image_libs
=$
($pkg_config SDL2_image
--libs --static 2>/dev
/null
)
3041 sdl_image_libs
=$
($pkg_config SDL2_image
--libs 2>/dev
/null
)
3043 sdl_image_cflags
=$
($pkg_config SDL2_image
--cflags 2>/dev
/null
)
3046 sdl_cflags
="$sdl_cflags $sdl_image_cflags"
3047 sdl_libs
="$sdl_libs $sdl_image_libs"
3049 if test "$sdl_image" = "yes" ; then
3050 feature_not_found
"sdl_image" "Install SDL Image devel"
3058 if test "$sdl" != "no" ; then
3062 if test "$sdl" = "yes" ; then
3065 if test "$sdl_image" = "yes"; then
3066 echo "warning: SDL Image requested, but SDL is not available, disabling"
3071 if test "$sdl" = "yes" ; then
3074 #if defined(SDL_VIDEO_DRIVER_X11)
3075 #include <X11/XKBlib.h>
3077 #error No x11 support
3079 int main(void) { return 0; }
3081 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
3083 sdl_cflags
="$sdl_cflags $x11_cflags"
3084 sdl_libs
="$sdl_libs $x11_libs"
3088 ##########################################
3089 # RDMA needs OpenFabrics libraries
3090 if test "$rdma" != "no" ; then
3092 #include <rdma/rdma_cma.h>
3093 int main(void) { return 0; }
3095 rdma_libs
="-lrdmacm -libverbs -libumad"
3096 if compile_prog
"" "$rdma_libs" ; then
3098 libs_softmmu
="$libs_softmmu $rdma_libs"
3100 if test "$rdma" = "yes" ; then
3102 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
3104 " (1) Fast: Install infiniband packages (devel) from your distro." \
3105 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3106 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3112 ##########################################
3115 cat > $TMPC <<EOF &&
3116 #include <sys/mman.h>
3123 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3129 if test "$rdma" = "yes" ; then
3132 if compile_prog
"" ""; then
3139 if ! compile_prog
"" ""; then
3140 error_exit
"PVRDMA is not supported since mremap is not implemented"
3149 if test "$pvrdma" = "yes" ; then
3150 error_exit
"PVRDMA requires rdma suppport"
3155 ##########################################
3156 # VNC SASL detection
3157 if test "$vnc" = "yes" && test "$vnc_sasl" != "no" ; then
3159 #include <sasl/sasl.h>
3161 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3163 # Assuming Cyrus-SASL installed in /usr prefix
3165 vnc_sasl_libs
="-lsasl2"
3166 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3168 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
3169 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
3171 if test "$vnc_sasl" = "yes" ; then
3172 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
3178 ##########################################
3179 # VNC JPEG detection
3180 if test "$vnc" = "yes" && test "$vnc_jpeg" != "no" ; then
3183 #include <jpeglib.h>
3184 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3187 vnc_jpeg_libs
="-ljpeg"
3188 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3190 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
3191 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
3193 if test "$vnc_jpeg" = "yes" ; then
3194 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
3200 ##########################################
3202 if test "$vnc" = "yes" && test "$vnc_png" != "no" ; then
3204 //#include <stdio.h>
3208 png_structp png_ptr;
3209 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
3210 return png_ptr != 0;
3213 if $pkg_config libpng
--exists; then
3214 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
3215 vnc_png_libs
=$
($pkg_config libpng
--libs)
3218 vnc_png_libs
="-lpng"
3220 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
3222 libs_softmmu
="$vnc_png_libs $libs_softmmu"
3223 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
3225 if test "$vnc_png" = "yes" ; then
3226 feature_not_found
"vnc-png" "Install libpng devel"
3232 ##########################################
3234 if test "$xkbcommon" != "no" ; then
3235 if $pkg_config xkbcommon
--exists; then
3236 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
3237 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
3240 if test "$xkbcommon" = "yes" ; then
3241 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
3248 ##########################################
3249 # xfsctl() probe, used for file-posix.c
3250 if test "$xfs" != "no" ; then
3252 #include <stddef.h> /* NULL */
3253 #include <xfs/xfs.h>
3256 xfsctl(NULL, 0, 0, NULL);
3260 if compile_prog
"" "" ; then
3263 if test "$xfs" = "yes" ; then
3264 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3270 ##########################################
3271 # vde libraries probe
3272 if test "$vde" != "no" ; then
3273 vde_libs
="-lvdeplug"
3275 #include <libvdeplug.h>
3278 struct vde_open_args a = {0, 0, 0};
3284 if compile_prog
"" "$vde_libs" ; then
3287 if test "$vde" = "yes" ; then
3288 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3294 ##########################################
3295 # netmap support probe
3296 # Apart from looking for netmap headers, we make sure that the host API version
3297 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3298 # a minor/major version number. Minor new features will be marked with values up
3299 # to 15, and if something happens that requires a change to the backend we will
3300 # move above 15, submit the backend fixes and modify this two bounds.
3301 if test "$netmap" != "no" ; then
3303 #include <inttypes.h>
3305 #include <net/netmap.h>
3306 #include <net/netmap_user.h>
3307 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3310 int main(void) { return 0; }
3312 if compile_prog
"" "" ; then
3315 if test "$netmap" = "yes" ; then
3316 feature_not_found
"netmap"
3322 ##########################################
3323 # libcap-ng library probe
3324 if test "$cap_ng" != "no" ; then
3330 capng_capability_to_name(CAPNG_EFFECTIVE);
3334 if compile_prog
"" "$cap_libs" ; then
3336 libs_tools
="$cap_libs $libs_tools"
3338 if test "$cap_ng" = "yes" ; then
3339 feature_not_found
"cap_ng" "Install libcap-ng devel"
3345 ##########################################
3346 # Sound support libraries probe
3348 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3349 for drv
in $audio_drv_list; do
3352 if $pkg_config alsa
--exists; then
3353 alsa_libs
=$
($pkg_config alsa
--libs)
3354 if test "$drv" = "try-alsa"; then
3355 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-alsa/alsa/')
3358 if test "$drv" = "try-alsa"; then
3359 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-alsa//')
3361 error_exit
"$drv check failed" \
3362 "Make sure to have the $drv libs and headers installed."
3368 if $pkg_config libpulse
--exists; then
3369 pulse_libs
=$
($pkg_config libpulse
--libs)
3371 if test "$drv" = "try-pa"; then
3372 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-pa/pa/')
3375 if test "$drv" = "try-pa"; then
3376 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-pa//')
3378 error_exit
"$drv check failed" \
3379 "Make sure to have the $drv libs and headers installed."
3385 if test "$sdl" = "no"; then
3386 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3391 if test "$sdl" = "no"; then
3392 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-sdl//')
3394 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-sdl/sdl/')
3399 coreaudio_libs
="-framework CoreAudio"
3403 dsound_libs
="-lole32 -ldxguid"
3412 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3413 error_exit
"Unknown driver '$drv' selected" \
3414 "Possible drivers are: $audio_possible_drivers"
3420 ##########################################
3423 if test "$brlapi" != "no" ; then
3424 brlapi_libs
="-lbrlapi"
3428 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3430 if compile_prog
"" "$brlapi_libs" ; then
3433 if test "$brlapi" = "yes" ; then
3434 feature_not_found
"brlapi" "Install brlapi devel"
3440 ##########################################
3442 if test "$iconv" != "no" ; then
3446 iconv_t conv = iconv_open("WCHAR_T", "UCS-2");
3447 return conv != (iconv_t) -1;
3450 iconv_prefix_list
="/usr/local:/usr"
3451 iconv_lib_list
=":-liconv"
3453 for iconv_prefix
in $iconv_prefix_list; do
3455 iconv_cflags
="-I$iconv_prefix/include"
3456 iconv_ldflags
="-L$iconv_prefix/lib"
3457 for iconv_link
in $iconv_lib_list; do
3459 iconv_lib
="$iconv_ldflags $iconv_link"
3460 echo "looking at iconv in '$iconv_cflags' '$iconv_lib'" >> config.log
3461 if compile_prog
"$iconv_cflags" "$iconv_lib" ; then
3466 if test "$iconv_found" = yes ; then
3470 if test "$iconv_found" = "yes" ; then
3473 if test "$iconv" = "yes" ; then
3474 feature_not_found
"iconv" "Install iconv devel"
3480 ##########################################
3482 if test "$iconv" = "no" ; then
3483 # curses will need iconv
3486 if test "$curses" != "no" ; then
3487 if test "$mingw32" = "yes" ; then
3488 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3489 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3491 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3492 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3501 setlocale(LC_ALL, "");
3503 addwstr(L"wide chars\n");
3505 add_wch(WACS_DEGREE);
3510 for curses_inc
in $curses_inc_list; do
3511 # Make sure we get the wide character prototypes
3512 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3514 for curses_lib
in $curses_lib_list; do
3516 if compile_prog
"$curses_inc" "$curses_lib" ; then
3521 if test "$curses_found" = yes ; then
3526 if test "$curses_found" = "yes" ; then
3529 if test "$curses" = "yes" ; then
3530 feature_not_found
"curses" "Install ncurses devel"
3536 ##########################################
3538 if test "$curl" != "no" ; then
3539 if $pkg_config libcurl
--exists; then
3540 curlconfig
="$pkg_config libcurl"
3542 curlconfig
=curl-config
3545 #include <curl/curl.h>
3546 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3548 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3549 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3550 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3553 if test "$curl" = "yes" ; then
3554 feature_not_found
"curl" "Install libcurl devel"
3560 ##########################################
3561 # bluez support probe
3562 if test "$bluez" != "no" ; then
3564 #include <bluetooth/bluetooth.h>
3565 int main(void) { return bt_error(0); }
3567 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3568 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3569 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3571 libs_softmmu
="$bluez_libs $libs_softmmu"
3573 if test "$bluez" = "yes" ; then
3574 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3580 ##########################################
3581 # glib support probe
3584 glib_modules
=gthread-2.0
3585 if test "$modules" = yes; then
3586 glib_modules
="$glib_modules gmodule-export-2.0"
3589 # This workaround is required due to a bug in pkg-config file for glib as it
3590 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3592 if test "$static" = yes && test "$mingw32" = yes; then
3593 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3596 for i
in $glib_modules; do
3597 if $pkg_config --atleast-version=$glib_req_ver $i; then
3598 glib_cflags
=$
($pkg_config --cflags $i)
3599 glib_libs
=$
($pkg_config --libs $i)
3600 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3601 LIBS
="$glib_libs $LIBS"
3602 libs_qga
="$glib_libs $libs_qga"
3604 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3608 if $pkg_config --atleast-version=$glib_req_ver gio-2.0
; then
3610 gio_cflags
=$
($pkg_config --cflags gio-2.0
)
3611 gio_libs
=$
($pkg_config --libs gio-2.0
)
3616 # Sanity check that the current size_t matches the
3617 # size that glib thinks it should be. This catches
3618 # problems on multi-arch where people try to build
3619 # 32-bit QEMU while pointing at 64-bit glib headers
3624 #define QEMU_BUILD_BUG_ON(x) \
3625 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3628 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3633 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3634 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3635 "You probably need to set PKG_CONFIG_LIBDIR"\
3636 "to point to the right pkg-config files for your"\
3640 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3643 int main(void) { return 0; }
3645 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3646 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3647 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3648 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3652 #########################################
3655 if test "$zlib" != "no" ; then
3656 if $pkg_config --exists zlib
; then
3657 zlib_cflags
=$
($pkg_config --cflags zlib
)
3658 zlib_libs
=$
($pkg_config --libs zlib
)
3659 QEMU_CFLAGS
="$zlib_cflags $QEMU_CFLAGS"
3660 LIBS
="$zlib_libs $LIBS"
3664 int main(void) { zlibVersion(); return 0; }
3666 if compile_prog
"" "-lz" ; then
3669 error_exit
"zlib check failed" \
3670 "Make sure to have the zlib libs and headers installed."
3675 ##########################################
3676 # SHA command probe for modules
3677 if test "$modules" = yes; then
3678 shacmd_probe
="sha1sum sha1 shasum"
3679 for c
in $shacmd_probe; do
3685 if test "$shacmd" = ""; then
3686 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3690 ##########################################
3691 # pixman support probe
3693 if test "$want_tools" = "no" && test "$softmmu" = "no"; then
3696 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3697 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3698 pixman_libs
=$
($pkg_config --libs pixman-1
)
3700 error_exit
"pixman >= 0.21.8 not present." \
3701 "Please install the pixman devel package."
3704 ##########################################
3705 # libmpathpersist probe
3707 if test "$mpath" != "no" ; then
3708 # probe for the new API
3710 #include <libudev.h>
3711 #include <mpath_persist.h>
3712 unsigned mpath_mx_alloc_len = 1024;
3714 static struct config *multipath_conf;
3715 extern struct udev *udev;
3716 extern struct config *get_multipath_config(void);
3717 extern void put_multipath_config(struct config *conf);
3719 struct config *get_multipath_config(void) { return multipath_conf; }
3720 void put_multipath_config(struct config *conf) { }
3724 multipath_conf = mpath_lib_init();
3728 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3730 mpathpersist_new_api
=yes
3732 # probe for the old API
3734 #include <libudev.h>
3735 #include <mpath_persist.h>
3736 unsigned mpath_mx_alloc_len = 1024;
3739 struct udev *udev = udev_new();
3740 mpath_lib_init(udev);
3744 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3746 mpathpersist_new_api
=no
3755 ##########################################
3758 if test "$cap" != "no" ; then
3761 #include <sys/capability.h>
3762 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3764 if compile_prog
"" "-lcap" ; then
3771 ##########################################
3773 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3777 #include <pthread.h>
3778 static void *f(void *p) { return NULL; }
3781 pthread_create(&thread, 0, f, 0);
3785 if compile_prog
"" "" ; then
3788 for pthread_lib
in $PTHREADLIBS_LIST; do
3789 if compile_prog
"" "$pthread_lib" ; then
3792 for lib_entry
in $LIBS; do
3793 if test "$lib_entry" = "$pthread_lib"; then
3798 if test "$found" = "no"; then
3799 LIBS
="$pthread_lib $LIBS"
3800 libs_qga
="$pthread_lib $libs_qga"
3802 PTHREAD_LIB
="$pthread_lib"
3808 if test "$mingw32" != yes && test "$pthread" = no
; then
3809 error_exit
"pthread check failed" \
3810 "Make sure to have the pthread libs and headers installed."
3813 # check for pthread_setname_np with thread id
3814 pthread_setname_np_w_tid
=no
3816 #include <pthread.h>
3818 static void *f(void *p) { return NULL; }
3822 pthread_create(&thread, 0, f, 0);
3823 pthread_setname_np(thread, "QEMU");
3827 if compile_prog
"" "$pthread_lib" ; then
3828 pthread_setname_np_w_tid
=yes
3831 # check for pthread_setname_np without thread id
3832 pthread_setname_np_wo_tid
=no
3834 #include <pthread.h>
3836 static void *f(void *p) { pthread_setname_np("QEMU"); }
3840 pthread_create(&thread, 0, f, 0);
3844 if compile_prog
"" "$pthread_lib" ; then
3845 pthread_setname_np_wo_tid
=yes
3848 ##########################################
3850 if test "$rbd" != "no" ; then
3853 #include <rbd/librbd.h>
3856 rados_create(&cluster, NULL);
3860 rbd_libs
="-lrbd -lrados"
3861 if compile_prog
"" "$rbd_libs" ; then
3864 if test "$rbd" = "yes" ; then
3865 feature_not_found
"rados block device" "Install librbd/ceph devel"
3871 ##########################################
3873 min_libssh2_version
=1.2.8
3874 if test "$libssh2" != "no" ; then
3875 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3876 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3877 libssh2_libs
=$
($pkg_config libssh2
--libs)
3880 if test "$libssh2" = "yes" ; then
3881 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3887 ##########################################
3888 # libssh2_sftp_fsync probe
3890 if test "$libssh2" = "yes"; then
3893 #include <libssh2.h>
3894 #include <libssh2_sftp.h>
3896 LIBSSH2_SESSION *session;
3898 LIBSSH2_SFTP_HANDLE *sftp_handle;
3899 session = libssh2_session_init ();
3900 sftp = libssh2_sftp_init (session);
3901 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3902 libssh2_sftp_fsync (sftp_handle);
3906 # libssh2_cflags/libssh2_libs defined in previous test.
3907 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3908 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3912 ##########################################
3915 if test "$linux_aio" != "no" ; then
3918 #include <sys/eventfd.h>
3920 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3922 if compile_prog
"" "-laio" ; then
3925 if test "$linux_aio" = "yes" ; then
3926 feature_not_found
"linux AIO" "Install libaio devel"
3932 ##########################################
3933 # TPM emulation is only on POSIX
3935 if test "$tpm" = ""; then
3936 if test "$mingw32" = "yes"; then
3941 elif test "$tpm" = "yes"; then
3942 if test "$mingw32" = "yes" ; then
3943 error_exit
"TPM emulation only available on POSIX systems"
3947 ##########################################
3950 if test "$attr" != "no" ; then
3953 #include <sys/types.h>
3954 #ifdef CONFIG_LIBATTR
3955 #include <attr/xattr.h>
3957 #include <sys/xattr.h>
3959 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3961 if compile_prog
"" "" ; then
3963 # Older distros have <attr/xattr.h>, and need -lattr:
3964 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3969 if test "$attr" = "yes" ; then
3970 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3976 ##########################################
3979 #include <sys/types.h>
3980 #include <sys/uio.h>
3982 int main(void) { return sizeof(struct iovec); }
3985 if compile_prog
"" "" ; then
3989 ##########################################
3992 #include <sys/types.h>
3993 #include <sys/uio.h>
3995 int main(void) { return preadv(0, 0, 0, 0); }
3998 if compile_prog
"" "" ; then
4002 ##########################################
4004 # fdt support is mandatory for at least some target architectures,
4005 # so insist on it if we're building those system emulators.
4007 for target
in $target_list; do
4009 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu|riscv
*-softmmu)
4015 if test "$fdt_required" = "yes"; then
4016 if test "$fdt" = "no"; then
4017 error_exit
"fdt disabled but some requested targets require it." \
4018 "You can turn off fdt only if you also disable all the system emulation" \
4019 "targets which need it (by specifying a cut down --target-list)."
4024 if test "$fdt" != "no" ; then
4026 # explicitly check for libfdt_env.h as it is missing in some stable installs
4027 # and test for required functions to make sure we are on a version >= 1.4.2
4030 #include <libfdt_env.h>
4031 int main(void) { fdt_check_full(NULL, 0); return 0; }
4033 if compile_prog
"" "$fdt_libs" ; then
4034 # system DTC is good - use it
4037 # have GIT checkout, so activate dtc submodule
4038 if test -e "${source_path}/.git" ; then
4039 git_submodules
="${git_submodules} dtc"
4041 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
4044 if [ "$pwd_is_source_path" != "y" ] ; then
4045 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
4046 symlink
"$source_path/dtc/scripts" "dtc/scripts"
4048 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
4049 fdt_ldflags
="-L\$(BUILD_DIR)/dtc/libfdt"
4050 fdt_libs
="$fdt_libs"
4051 elif test "$fdt" = "yes" ; then
4052 # Not a git build & no libfdt found, prompt for system install
4053 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
4054 "Please install the DTC (libfdt) devel package"
4056 # don't have and don't want
4063 libs_softmmu
="$libs_softmmu $fdt_libs"
4065 ##########################################
4066 # opengl probe (for sdl2, gtk, milkymist-tmu2)
4068 if test "$opengl" != "no" ; then
4069 opengl_pkgs
="epoxy gbm"
4070 if $pkg_config $opengl_pkgs; then
4071 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs)"
4072 opengl_libs
="$($pkg_config --libs $opengl_pkgs)"
4074 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
4077 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
4079 if test "$opengl" = "yes" ; then
4080 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
4088 if test "$opengl" = "yes"; then
4090 #include <epoxy/egl.h>
4091 #ifndef EGL_MESA_image_dma_buf_export
4092 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
4094 int main(void) { return 0; }
4096 if compile_prog
"" "" ; then
4101 if test "$opengl" = "yes" && test "$have_x11" = "yes"; then
4102 for target
in $target_list; do
4104 lm32-softmmu
) # milkymist-tmu2 requires X11 and OpenGL
4111 ##########################################
4113 if test "$libxml2" != "no" ; then
4114 if $pkg_config --exists libxml-2.0
; then
4116 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
4117 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
4119 if test "$libxml2" = "yes"; then
4120 feature_not_found
"libxml2" "Install libxml2 devel"
4126 ##########################################
4128 if test "$glusterfs" != "no" ; then
4129 if $pkg_config --atleast-version=3 glusterfs-api
; then
4131 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
4132 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
4133 if $pkg_config --atleast-version=4 glusterfs-api
; then
4134 glusterfs_xlator_opt
="yes"
4136 if $pkg_config --atleast-version=5 glusterfs-api
; then
4137 glusterfs_discard
="yes"
4139 if $pkg_config --atleast-version=6 glusterfs-api
; then
4140 glusterfs_fallocate
="yes"
4141 glusterfs_zerofill
="yes"
4144 if test "$glusterfs" = "yes" ; then
4145 feature_not_found
"GlusterFS backend support" \
4146 "Install glusterfs-api devel >= 3"
4152 # Check for inotify functions when we are building linux-user
4153 # emulator. This is done because older glibc versions don't
4154 # have syscall stubs for these implemented. In that case we
4155 # don't provide them even if kernel supports them.
4159 #include <sys/inotify.h>
4164 /* try to start inotify */
4165 return inotify_init();
4168 if compile_prog
"" "" ; then
4174 #include <sys/inotify.h>
4179 /* try to start inotify */
4180 return inotify_init1(0);
4183 if compile_prog
"" "" ; then
4187 # check if pipe2 is there
4196 return pipe2(pipefd, O_CLOEXEC);
4199 if compile_prog
"" "" ; then
4203 # check if accept4 is there
4206 #include <sys/socket.h>
4211 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4215 if compile_prog
"" "" ; then
4219 # check if tee/splice is there. vmsplice was added same time.
4229 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4230 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4234 if compile_prog
"" "" ; then
4238 ##########################################
4241 if test "$numa" != "no" ; then
4244 int main(void) { return numa_available(); }
4247 if compile_prog
"" "-lnuma" ; then
4249 libs_softmmu
="-lnuma $libs_softmmu"
4251 if test "$numa" = "yes" ; then
4252 feature_not_found
"numa" "install numactl devel"
4258 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4259 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4263 # Even if malloc_trim() is available, these non-libc memory allocators
4264 # do not support it.
4265 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
4266 if test "$malloc_trim" = "yes" ; then
4267 echo "Disabling malloc_trim with non-libc memory allocator"
4272 #######################################
4275 if test "$malloc_trim" != "no" ; then
4278 int main(void) { malloc_trim(0); return 0; }
4280 if compile_prog
"" "" ; then
4287 ##########################################
4290 if test "$tcmalloc" = "yes" ; then
4293 int main(void) { malloc(1); return 0; }
4296 if compile_prog
"" "-ltcmalloc" ; then
4297 LIBS
="-ltcmalloc $LIBS"
4299 feature_not_found
"tcmalloc" "install gperftools devel"
4303 ##########################################
4306 if test "$jemalloc" = "yes" ; then
4309 int main(void) { malloc(1); return 0; }
4312 if compile_prog
"" "-ljemalloc" ; then
4313 LIBS
="-ljemalloc $LIBS"
4315 feature_not_found
"jemalloc" "install jemalloc devel"
4319 ##########################################
4324 #include <sys/syscall.h>
4326 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4329 if compile_prog
"" "" ; then
4333 # check if optreset global is declared by <getopt.h>
4337 int main(void) { return optreset; }
4340 if compile_prog
"" "" ; then
4344 # check if eventfd is supported
4347 #include <sys/eventfd.h>
4351 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
4354 if compile_prog
"" "" ; then
4358 # check if memfd is supported
4361 #include <sys/mman.h>
4365 return memfd_create("foo", MFD_ALLOW_SEALING);
4368 if compile_prog
"" "" ; then
4374 if test "$linux_user" = "yes"; then
4376 #include <linux/usbdevice_fs.h>
4378 #ifndef USBDEVFS_GET_CAPABILITIES
4379 #error "USBDEVFS_GET_CAPABILITIES undefined"
4382 #ifndef USBDEVFS_DISCONNECT_CLAIM
4383 #error "USBDEVFS_DISCONNECT_CLAIM undefined"
4391 if compile_prog
"" ""; then
4396 # check for fallocate
4403 fallocate(0, 0, 0, 0);
4407 if compile_prog
"" "" ; then
4411 # check for fallocate hole punching
4412 fallocate_punch_hole
=no
4415 #include <linux/falloc.h>
4419 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4423 if compile_prog
"" "" ; then
4424 fallocate_punch_hole
=yes
4427 # check that fallocate supports range zeroing inside the file
4428 fallocate_zero_range
=no
4431 #include <linux/falloc.h>
4435 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4439 if compile_prog
"" "" ; then
4440 fallocate_zero_range
=yes
4443 # check for posix_fallocate
4450 posix_fallocate(0, 0, 0);
4454 if compile_prog
"" "" ; then
4458 # check for sync_file_range
4465 sync_file_range(0, 0, 0, 0);
4469 if compile_prog
"" "" ; then
4473 # check for linux/fiemap.h and FS_IOC_FIEMAP
4476 #include <sys/ioctl.h>
4477 #include <linux/fs.h>
4478 #include <linux/fiemap.h>
4482 ioctl(0, FS_IOC_FIEMAP, 0);
4486 if compile_prog
"" "" ; then
4501 if compile_prog
"" "" ; then
4505 # check for ppoll support
4512 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4513 ppoll(&pfd, 1, 0, 0);
4517 if compile_prog
"" "" ; then
4521 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4522 prctl_pr_set_timerslack
=no
4524 #include <sys/prctl.h>
4528 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4532 if compile_prog
"" "" ; then
4533 prctl_pr_set_timerslack
=yes
4536 # check for epoll support
4539 #include <sys/epoll.h>
4547 if compile_prog
"" "" ; then
4551 # epoll_create1 is a later addition
4552 # so we must check separately for its presence
4555 #include <sys/epoll.h>
4559 /* Note that we use epoll_create1 as a value, not as
4560 * a function being called. This is necessary so that on
4561 * old SPARC glibc versions where the function was present in
4562 * the library but not declared in the header file we will
4563 * fail the configure check. (Otherwise we will get a compiler
4564 * warning but not an error, and will proceed to fail the
4565 * qemu compile where we compile with -Werror.)
4567 return (int)(uintptr_t)&epoll_create1;
4570 if compile_prog
"" "" ; then
4574 # check for sendfile support
4577 #include <sys/sendfile.h>
4581 return sendfile(0, 0, 0, 0);
4584 if compile_prog
"" "" ; then
4588 # check for timerfd support (glibc 2.8 and newer)
4591 #include <sys/timerfd.h>
4595 return(timerfd_create(CLOCK_REALTIME, 0));
4598 if compile_prog
"" "" ; then
4602 # check for setns and unshare support
4615 if compile_prog
"" "" ; then
4619 # clock_adjtime probe
4626 return clock_adjtime(0, 0);
4630 if compile_prog
"" "" ; then
4645 if compile_prog
"" "" ; then
4649 # Check we have a new enough version of sphinx-build
4650 has_sphinx_build
() {
4651 # This is a bit awkward but works: create a trivial document and
4652 # try to run it with our configuration file (which enforces a
4653 # version requirement). This will fail if either
4654 # sphinx-build doesn't exist at all or if it is too old.
4655 mkdir
-p "$TMPDIR1/sphinx"
4656 touch "$TMPDIR1/sphinx/index.rst"
4657 sphinx-build
-c "$source_path/docs" -b html
"$TMPDIR1/sphinx" "$TMPDIR1/sphinx/out" >/dev
/null
2>&1
4660 # Check if tools are available to build documentation.
4661 if test "$docs" != "no" ; then
4662 if has makeinfo
&& has pod2man
&& has_sphinx_build
; then
4665 if test "$docs" = "yes" ; then
4666 feature_not_found
"docs" "Install texinfo, Perl/perl-podlators and python-sphinx"
4672 # Search for bswap_32 function
4675 #include <byteswap.h>
4676 int main(void) { return bswap_32(0); }
4678 if compile_prog
"" "" ; then
4682 # Search for bswap32 function
4685 #include <sys/endian.h>
4686 #include <sys/types.h>
4687 #include <machine/bswap.h>
4688 int main(void) { return bswap32(0); }
4690 if compile_prog
"" "" ; then
4694 ##########################################
4695 # Do we have libiscsi >= 1.9.0
4696 if test "$libiscsi" != "no" ; then
4697 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4699 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4700 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4702 if test "$libiscsi" = "yes" ; then
4703 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4709 ##########################################
4713 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4715 if compile_prog
"" "" ; then
4717 elif compile_prog
"" "-lm" ; then
4719 libs_qga
="-lm $libs_qga"
4721 error_exit
"libm check failed"
4724 ##########################################
4726 # uClibc provides 2 versions of clock_gettime(), one with realtime
4727 # support and one without. This means that the clock_gettime() don't
4728 # need -lrt. We still need it for timer_create() so we check for this
4729 # function in addition.
4734 timer_create(CLOCK_REALTIME, NULL, NULL);
4735 return clock_gettime(CLOCK_REALTIME, NULL);
4739 if compile_prog
"" "" ; then
4741 # we need pthread for static linking. use previous pthread test result
4742 elif compile_prog
"" "$pthread_lib -lrt" ; then
4744 libs_qga
="$libs_qga -lrt"
4747 # Check whether we need to link libutil for openpty()
4749 extern int openpty(int *am, int *as, char *name, void *termp, void *winp);
4750 int main(void) { return openpty(0, 0, 0, 0, 0); }
4753 if ! compile_prog
"" "" ; then
4754 if compile_prog
"" "-lutil" ; then
4755 libs_softmmu
="-lutil $libs_softmmu"
4756 libs_tools
="-lutil $libs_tools"
4760 ##########################################
4762 if test "$spice" != "no" ; then
4765 int main(void) { spice_server_new(); return 0; }
4767 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4768 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4769 if $pkg_config --atleast-version=0.12.5 spice-server
&& \
4770 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4771 compile_prog
"$spice_cflags" "$spice_libs" ; then
4773 libs_softmmu
="$libs_softmmu $spice_libs"
4774 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4775 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4776 spice_server_version
=$
($pkg_config --modversion spice-server
)
4778 if test "$spice" = "yes" ; then
4779 feature_not_found
"spice" \
4780 "Install spice-server(>=0.12.5) and spice-protocol(>=0.12.3) devel"
4786 # check for smartcard support
4787 if test "$smartcard" != "no"; then
4788 if $pkg_config --atleast-version=2.5.1 libcacard
; then
4789 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4790 libcacard_libs
=$
($pkg_config --libs libcacard
)
4793 if test "$smartcard" = "yes"; then
4794 feature_not_found
"smartcard" "Install libcacard devel"
4801 if test "$libusb" != "no" ; then
4802 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4804 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4805 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4807 if test "$libusb" = "yes"; then
4808 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4814 # check for usbredirparser for usb network redirection support
4815 if test "$usb_redir" != "no" ; then
4816 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4818 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4819 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4821 if test "$usb_redir" = "yes"; then
4822 feature_not_found
"usb-redir" "Install usbredir devel"
4828 ##########################################
4829 # check if we have VSS SDK headers for win
4831 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
4832 test "$vss_win32_sdk" != "no" ; then
4833 case "$vss_win32_sdk" in
4834 "") vss_win32_include
="-isystem $source_path" ;;
4835 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4836 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4837 vss_win32_include
="-isystem $source_path/.sdk/vss"
4838 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4840 *) vss_win32_include
="-isystem $vss_win32_sdk"
4843 #define __MIDL_user_allocate_free_DEFINED__
4844 #include <inc/win2003/vss.h>
4845 int main(void) { return VSS_CTX_BACKUP; }
4847 if compile_prog
"$vss_win32_include" "" ; then
4848 guest_agent_with_vss
="yes"
4849 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4850 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4851 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4853 if test "$vss_win32_sdk" != "" ; then
4854 echo "ERROR: Please download and install Microsoft VSS SDK:"
4855 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4856 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4857 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4858 echo "ERROR: The headers are extracted in the directory \`inc'."
4859 feature_not_found
"VSS support"
4861 guest_agent_with_vss
="no"
4865 ##########################################
4866 # lookup Windows platform SDK (if not specified)
4867 # The SDK is needed only to build .tlb (type library) file of guest agent
4868 # VSS provider from the source. It is usually unnecessary because the
4869 # pre-compiled .tlb file is included.
4871 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
4872 test "$guest_agent_with_vss" = "yes" ; then
4873 if test -z "$win_sdk"; then
4874 programfiles
="$PROGRAMFILES"
4875 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4876 if test -n "$programfiles"; then
4877 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4879 feature_not_found
"Windows SDK"
4881 elif test "$win_sdk" = "no"; then
4886 ##########################################
4887 # check if mingw environment provides a recent ntddscsi.h
4888 if test "$mingw32" = "yes" && test "$guest_agent" != "no"; then
4890 #include <windows.h>
4891 #include <ntddscsi.h>
4893 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4894 #error Missing required ioctl definitions
4896 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4900 if compile_prog
"" "" ; then
4901 guest_agent_ntddscsi
=yes
4902 libs_qga
="-lsetupapi $libs_qga"
4906 ##########################################
4907 # virgl renderer probe
4909 if test "$virglrenderer" != "no" ; then
4911 #include <virglrenderer.h>
4912 int main(void) { virgl_renderer_poll(); return 0; }
4914 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4915 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4916 virgl_version
=$
($pkg_config --modversion virglrenderer
2>/dev
/null
)
4917 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4918 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4921 if test "$virglrenderer" = "yes" ; then
4922 feature_not_found
"virglrenderer"
4928 ##########################################
4933 if $pkg_config capstone
; then
4935 elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
4937 elif test -e "${source_path}/capstone/Makefile" ; then
4939 elif test -z "$capstone" ; then
4942 feature_not_found
"capstone" "Install capstone devel or git submodule"
4947 if ! $pkg_config capstone
; then
4948 feature_not_found
"capstone" "Install capstone devel"
4955 if test "$capstone" = git
; then
4956 git_submodules
="${git_submodules} capstone"
4959 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4960 if test "$mingw32" = "yes"; then
4961 LIBCAPSTONE
=capstone.lib
4963 LIBCAPSTONE
=libcapstone.a
4965 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4969 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4970 LIBS
="$($pkg_config --libs capstone) $LIBS"
4976 error_exit
"Unknown state for capstone: $capstone"
4980 ##########################################
4981 # check if we have fdatasync
4987 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4988 return fdatasync(0);
4990 #error Not supported
4994 if compile_prog
"" "" ; then
4998 ##########################################
4999 # check if we have madvise
5003 #include <sys/types.h>
5004 #include <sys/mman.h>
5006 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
5008 if compile_prog
"" "" ; then
5012 ##########################################
5013 # check if we have posix_madvise
5017 #include <sys/mman.h>
5019 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
5021 if compile_prog
"" "" ; then
5025 ##########################################
5026 # check if we have posix_memalign()
5033 return posix_memalign(&p, 8, 8);
5036 if compile_prog
"" "" ; then
5040 ##########################################
5041 # check if we have posix_syslog
5046 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
5048 if compile_prog
"" "" ; then
5052 ##########################################
5053 # check if we have sem_timedwait
5057 #include <semaphore.h>
5058 int main(void) { return sem_timedwait(0, 0); }
5060 if compile_prog
"" "" ; then
5064 ##########################################
5065 # check if we have strchrnul
5071 // Use a haystack that the compiler shouldn't be able to constant fold
5072 char *haystack = (char*)&main;
5073 int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
5075 if compile_prog
"" "" ; then
5079 ##########################################
5080 # check if trace backend exists
5082 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
5083 if test "$?" -ne 0 ; then
5084 error_exit
"invalid trace backends" \
5085 "Please choose supported trace backends."
5088 ##########################################
5089 # For 'ust' backend, test if ust headers are present
5090 if have_backend
"ust"; then
5092 #include <lttng/tracepoint.h>
5093 int main(void) { return 0; }
5095 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
5096 if $pkg_config lttng-ust
--exists; then
5097 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
5099 lttng_ust_libs
="-llttng-ust -ldl"
5101 if $pkg_config liburcu-bp
--exists; then
5102 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
5104 urcu_bp_libs
="-lurcu-bp"
5107 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
5108 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
5110 error_exit
"Trace backend 'ust' missing lttng-ust header files"
5114 ##########################################
5115 # For 'dtrace' backend, test if 'dtrace' command is present
5116 if have_backend
"dtrace"; then
5117 if ! has
'dtrace' ; then
5118 error_exit
"dtrace command is not found in PATH $PATH"
5120 trace_backend_stap
="no"
5121 if has
'stap' ; then
5122 trace_backend_stap
="yes"
5126 ##########################################
5127 # check and set a backend for coroutine
5129 # We prefer ucontext, but it's not always possible. The fallback
5130 # is sigcontext. On Windows the only valid backend is the Windows
5134 if test "$darwin" != "yes"; then
5136 #include <ucontext.h>
5137 #ifdef __stub_makecontext
5138 #error Ignoring glibc stub makecontext which will always fail
5140 int main(void) { makecontext(0, 0, 0); return 0; }
5142 if compile_prog
"" "" ; then
5147 if test "$coroutine" = ""; then
5148 if test "$mingw32" = "yes"; then
5150 elif test "$ucontext_works" = "yes"; then
5153 coroutine
=sigaltstack
5158 if test "$mingw32" != "yes"; then
5159 error_exit
"'windows' coroutine backend only valid for Windows"
5161 # Unfortunately the user visible backend name doesn't match the
5162 # coroutine-*.c filename for this case, so we have to adjust it here.
5166 if test "$ucontext_works" != "yes"; then
5167 feature_not_found
"ucontext"
5171 if test "$mingw32" = "yes"; then
5172 error_exit
"only the 'windows' coroutine backend is valid for Windows"
5176 error_exit
"unknown coroutine backend $coroutine"
5181 if test "$coroutine_pool" = ""; then
5185 if test "$debug_stack_usage" = "yes"; then
5186 if test "$coroutine_pool" = "yes"; then
5187 echo "WARN: disabling coroutine pool for stack usage debugging"
5193 ##########################################
5194 # check if we have open_by_handle_at
5196 open_by_handle_at
=no
5199 #if !defined(AT_EMPTY_PATH)
5200 # error missing definition
5202 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
5205 if compile_prog
"" "" ; then
5206 open_by_handle_at
=yes
5209 ########################################
5210 # check if we have linux/magic.h
5214 #include <linux/magic.h>
5219 if compile_prog
"" "" ; then
5223 ########################################
5224 # check whether we can disable warning option with a pragma (this is needed
5225 # to silence warnings in the headers of some versions of external libraries).
5226 # This test has to be compiled with -Werror as otherwise an unknown pragma is
5229 # If we can't selectively disable warning in the code, disable -Werror so that
5230 # the build doesn't fail anyway.
5232 pragma_disable_unused_but_set
=no
5234 #pragma GCC diagnostic push
5235 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
5236 #pragma GCC diagnostic pop
5242 if compile_prog
"-Werror" "" ; then
5243 pragma_diagnostic_available
=yes
5248 ########################################
5249 # check if we have valgrind/valgrind.h
5253 #include <valgrind/valgrind.h>
5258 if compile_prog
"" "" ; then
5262 ########################################
5263 # check if environ is declared
5273 if compile_prog
"" "" ; then
5277 ########################################
5278 # check if cpuid.h is usable.
5283 unsigned a, b, c, d;
5284 int max = __get_cpuid_max(0, 0);
5287 __cpuid(1, a, b, c, d);
5291 __cpuid_count(7, 0, a, b, c, d);
5297 if compile_prog
"" "" ; then
5301 ##########################################
5302 # avx2 optimization requirement check
5304 # There is no point enabling this if cpuid.h is not usable,
5305 # since we won't be able to select the new routines.
5307 if test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then
5309 #pragma GCC push_options
5310 #pragma GCC target("avx2")
5312 #include <immintrin.h>
5313 static int bar(void *a) {
5314 __m256i x = *(__m256i *)a;
5315 return _mm256_testz_si256(x, x);
5317 int main(int argc, char *argv[]) { return bar(argv[0]); }
5319 if compile_object
"" ; then
5326 ########################################
5327 # check if __[u]int128_t is usable.
5340 if compile_prog
"" "" ; then
5344 #########################################
5345 # See if 128-bit atomic operations are supported.
5348 if test "$int128" = "yes"; then
5352 unsigned __int128 x = 0, y = 0;
5353 y = __atomic_load_16(&x, 0);
5354 __atomic_store_16(&x, y, 0);
5355 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5359 if compile_prog
"" "" ; then
5365 if test "$int128" = yes && test "$atomic128" = no
; then
5369 unsigned __int128 x = 0, y = 0;
5370 __sync_val_compare_and_swap_16(&x, y, x);
5374 if compile_prog
"" "" ; then
5379 #########################################
5380 # See if 64-bit atomic operations are supported.
5381 # Note that without __atomic builtins, we can only
5382 # assume atomic loads/stores max at pointer size.
5388 uint64_t x = 0, y = 0;
5389 #ifdef __ATOMIC_RELAXED
5390 y = __atomic_load_8(&x, 0);
5391 __atomic_store_8(&x, y, 0);
5392 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5393 __atomic_exchange_8(&x, y, 0);
5394 __atomic_fetch_add_8(&x, y, 0);
5396 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5397 __sync_lock_test_and_set(&x, y);
5398 __sync_val_compare_and_swap(&x, y, 0);
5399 __sync_fetch_and_add(&x, y);
5404 if compile_prog
"" "" ; then
5408 ########################################
5409 # See if 16-byte vector operations are supported.
5410 # Even without a vector unit the compiler may expand these.
5411 # There is a bug in old GCC for PPC that crashes here.
5412 # Unfortunately it's the system compiler for Centos 7.
5415 typedef unsigned char U1 __attribute__((vector_size(16)));
5416 typedef unsigned short U2 __attribute__((vector_size(16)));
5417 typedef unsigned int U4 __attribute__((vector_size(16)));
5418 typedef unsigned long long U8 __attribute__((vector_size(16)));
5419 typedef signed char S1 __attribute__((vector_size(16)));
5420 typedef signed short S2 __attribute__((vector_size(16)));
5421 typedef signed int S4 __attribute__((vector_size(16)));
5422 typedef signed long long S8 __attribute__((vector_size(16)));
5432 void helper(void *d, void *a, int shift, int i);
5433 void helper(void *d, void *a, int shift, int i)
5435 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5436 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5437 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5438 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5442 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5443 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5444 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5445 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5446 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5447 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5448 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5449 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5450 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5456 if compile_prog
"" "" ; then
5460 ########################################
5461 # check if getauxval is available.
5465 #include <sys/auxv.h>
5467 return getauxval(AT_HWCAP) == 0;
5470 if compile_prog
"" "" ; then
5474 ########################################
5475 # check if ccache is interfering with
5476 # semantic analysis of macros
5481 static const int Z = 1;
5482 #define fn() ({ Z; })
5483 #define TAUT(X) ((X) == Z)
5484 #define PAREN(X, Y) (X == Y)
5486 int main(int argc, char *argv[])
5492 if (PAREN(x, y)) return 0;
5493 if (TAUT(Z)) return 0;
5498 if ! compile_object
"-Werror"; then
5502 #################################################
5503 # clang does not support glibc + FORTIFY_SOURCE.
5505 if test "$fortify_source" != "no"; then
5506 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
5507 fortify_source
="no";
5508 elif test -n "$cxx" && has
$cxx &&
5509 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
5510 fortify_source
="no";
5512 fortify_source
="yes"
5516 ###############################################
5517 # Check if copy_file_range is provided by glibc
5518 have_copy_file_range
=no
5522 copy_file_range(0, NULL, 0, NULL, 0, 0);
5526 if compile_prog
"" "" ; then
5527 have_copy_file_range
=yes
5530 ##########################################
5531 # check if struct fsxattr is available via linux/fs.h
5535 #include <linux/fs.h>
5541 if compile_prog
"" "" ; then
5545 ##########################################
5546 # check for usable membarrier system call
5547 if test "$membarrier" = "yes"; then
5549 if test "$mingw32" = "yes" ; then
5551 elif test "$linux" = "yes" ; then
5553 #include <linux/membarrier.h>
5554 #include <sys/syscall.h>
5558 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5559 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5563 if compile_prog
"" "" ; then
5567 if test "$have_membarrier" = "no"; then
5568 feature_not_found
"membarrier" "membarrier system call not available"
5571 # Do not enable it by default even for Mingw32, because it doesn't
5576 ##########################################
5577 # check if rtnetlink.h exists and is useful
5580 #include <linux/rtnetlink.h>
5582 return IFLA_PROTO_DOWN;
5585 if compile_prog
"" "" ; then
5589 ##########################################
5590 # check for usable AF_VSOCK environment
5594 #include <sys/types.h>
5595 #include <sys/socket.h>
5596 #if !defined(AF_VSOCK)
5597 # error missing AF_VSOCK flag
5599 #include <linux/vm_sockets.h>
5602 struct sockaddr_vm svm;
5603 socklen_t len = sizeof(svm);
5604 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5605 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5606 if ((ret == -1) && (errno == ENOTCONN)) {
5612 if compile_prog
"" "" ; then
5616 ##########################################
5617 # check for usable AF_ALG environment
5621 #include <sys/types.h>
5622 #include <sys/socket.h>
5623 #include <linux/if_alg.h>
5626 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5630 if compile_prog
"" "" ; then
5633 if test "$crypto_afalg" = "yes"
5635 if test "$have_afalg" != "yes"
5637 error_exit
"AF_ALG requested but could not be detected"
5642 #################################################
5643 # Check to see if we have the Hypervisor framework
5644 if [ "$darwin" = "yes" ] ; then
5646 #include <Hypervisor/hv.h>
5647 int main() { return 0;}
5649 if ! compile_object
""; then
5653 LDFLAGS
="-framework Hypervisor $LDFLAGS"
5657 #################################################
5658 # Sparc implicitly links with --relax, which is
5659 # incompatible with -r, so --no-relax should be
5660 # given. It does no harm to give it on other
5663 # Note: the prototype is needed since QEMU_CFLAGS
5664 # contains -Wmissing-prototypes
5666 extern int foo(void);
5667 int foo(void) { return 0; }
5669 if ! compile_object
""; then
5670 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5672 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5673 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5678 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5679 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5682 ##########################################
5683 # check for sysmacros.h
5687 #include <sys/sysmacros.h>
5689 return makedev(0, 0);
5692 if compile_prog
"" "" ; then
5696 ##########################################
5697 # Veritas HyperScale block driver VxHS
5698 # Check if libvxhs is installed
5700 if test "$vxhs" != "no" ; then
5703 #include <qnio/qnio_api.h>
5705 void *vxhs_callback;
5708 iio_init(QNIO_VERSION, vxhs_callback);
5712 vxhs_libs
="-lvxhs -lssl"
5713 if compile_prog
"" "$vxhs_libs" ; then
5716 if test "$vxhs" = "yes" ; then
5717 feature_not_found
"vxhs block device" "Install libvxhs See github"
5723 ##########################################
5724 # check for _Static_assert()
5726 have_static_assert
=no
5728 _Static_assert(1, "success");
5733 if compile_prog
"" "" ; then
5734 have_static_assert
=yes
5737 ##########################################
5738 # check for utmpx.h, it is missing e.g. on OpenBSD
5743 struct utmpx user_info;
5748 if compile_prog
"" "" ; then
5752 ##########################################
5753 # checks for sanitizers
5757 have_asan_iface_h
=no
5758 have_asan_iface_fiber
=no
5760 if test "$sanitizers" = "yes" ; then
5762 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5766 # we could use a simple skeleton for flags checks, but this also
5767 # detect the static linking issue of ubsan, see also:
5768 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5772 void *tmp = malloc(10);
5773 return *(int *)(tmp + 2);
5776 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5780 if check_include
"sanitizer/asan_interface.h" ; then
5781 have_asan_iface_h
=yes
5785 #include <sanitizer/asan_interface.h>
5787 __sanitizer_start_switch_fiber(0, 0, 0);
5791 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5792 have_asan_iface_fiber
=yes
5796 ##########################################
5797 # Docker and cross-compiler support
5799 # This is specifically for building test
5800 # cases for foreign architectures, not
5801 # cross-compiling QEMU itself.
5803 if has
"docker"; then
5804 docker
=$
($python $source_path/tests
/docker
/docker.py probe
)
5807 ##########################################
5810 if test "$libpmem" != "no"; then
5811 if $pkg_config --exists "libpmem"; then
5813 libpmem_libs
=$
($pkg_config --libs libpmem
)
5814 libpmem_cflags
=$
($pkg_config --cflags libpmem
)
5815 libs_softmmu
="$libs_softmmu $libpmem_libs"
5816 QEMU_CFLAGS
="$QEMU_CFLAGS $libpmem_cflags"
5818 if test "$libpmem" = "yes" ; then
5819 feature_not_found
"libpmem" "Install nvml or pmdk"
5825 ##########################################
5830 if $pkg_config slirp
; then
5832 elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
5834 elif test -e "${source_path}/slirp/Makefile" ; then
5836 elif test -z "$slirp" ; then
5839 feature_not_found
"slirp" "Install slirp devel or git submodule"
5844 if ! $pkg_config slirp
; then
5845 feature_not_found
"slirp" "Install slirp devel"
5852 if test "$slirp" = git
; then
5853 git_submodules
="${git_submodules} slirp"
5856 slirp_cflags
="-I\$(SRC_PATH)/slirp/src -I\$(BUILD_DIR)/slirp/src"
5857 slirp_libs
="-L\$(BUILD_DIR)/slirp -lslirp"
5861 slirp_version
=$
($pkg_config --modversion slirp
2>/dev
/null
)
5862 slirp_cflags
=$
($pkg_config --cflags slirp
2>/dev
/null
)
5863 slirp_libs
=$
($pkg_config --libs slirp
2>/dev
/null
)
5869 error_exit
"Unknown state for slirp: $slirp"
5874 ##########################################
5876 # After here, no more $cc or $ld runs
5880 if test "$gcov" = "yes" ; then
5881 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5882 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5883 elif test "$fortify_source" = "yes" ; then
5884 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5885 elif test "$debug" = "no"; then
5886 CFLAGS
="-O2 $CFLAGS"
5889 if test "$have_asan" = "yes"; then
5890 CFLAGS
="-fsanitize=address $CFLAGS"
5891 if test "$have_asan_iface_h" = "no" ; then
5892 echo "ASAN build enabled, but ASAN header missing." \
5893 "Without code annotation, the report may be inferior."
5894 elif test "$have_asan_iface_fiber" = "no" ; then
5895 echo "ASAN build enabled, but ASAN header is too old." \
5896 "Without code annotation, the report may be inferior."
5899 if test "$have_ubsan" = "yes"; then
5900 CFLAGS
="-fsanitize=undefined $CFLAGS"
5903 ##########################################
5905 if test "$libnfs" != "no" ; then
5906 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5908 libnfs_libs
=$
($pkg_config --libs libnfs
)
5910 if test "$libnfs" = "yes" ; then
5911 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5917 ##########################################
5918 # Do we have libudev
5919 if test "$libudev" != "no" ; then
5920 if $pkg_config libudev
&& test "$static" != "yes"; then
5922 libudev_libs
=$
($pkg_config --libs libudev
)
5928 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5929 if test "$werror" = "yes"; then
5930 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5933 if test "$solaris" = "no" ; then
5934 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5935 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5939 # test if pod2man has --utf8 option
5940 if pod2man
--help |
grep -q utf8
; then
5941 POD2MAN
="pod2man --utf8"
5946 # Use ASLR, no-SEH and DEP if available
5947 if test "$mingw32" = "yes" ; then
5948 for flag
in --dynamicbase --no-seh --nxcompat; do
5949 if ld_has
$flag ; then
5950 LDFLAGS
="-Wl,$flag $LDFLAGS"
5955 # Disable OpenBSD W^X if available
5956 if test "$tcg" = "yes" && test "$targetos" = "OpenBSD"; then
5958 int main(void) { return 0; }
5960 wx_ldflags
="-Wl,-z,wxneeded"
5961 if compile_prog
"" "$wx_ldflags"; then
5962 QEMU_LDFLAGS
="$QEMU_LDFLAGS $wx_ldflags"
5966 qemu_confdir
=$sysconfdir$confsuffix
5967 qemu_moddir
=$libdir$confsuffix
5968 qemu_datadir
=$datadir$confsuffix
5969 qemu_localedir
="$datadir/locale"
5970 qemu_icondir
="$datadir/icons"
5971 qemu_desktopdir
="$datadir/applications"
5973 # We can only support ivshmem if we have eventfd
5974 if [ "$eventfd" = "yes" ]; then
5979 if test "$want_tools" = "yes" ; then
5980 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools"
5981 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5982 tools
="qemu-nbd\$(EXESUF) $tools"
5984 if [ "$ivshmem" = "yes" ]; then
5985 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5987 if [ "$curl" = "yes" ]; then
5988 tools
="elf2dmp\$(EXESUF) $tools"
5991 if test "$softmmu" = yes ; then
5992 if test "$linux" = yes; then
5993 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5995 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5997 if test "$virtfs" = yes; then
5998 error_exit
"VirtFS requires libcap devel and libattr devel"
6002 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
6005 if test "$mpath" = yes; then
6006 error_exit
"Multipath requires libmpathpersist devel"
6010 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
6012 if test "$virtfs" = yes; then
6013 error_exit
"VirtFS is supported only on Linux"
6016 if test "$mpath" = yes; then
6017 error_exit
"Multipath is supported only on Linux"
6021 if test "$xkbcommon" = "yes"; then
6022 tools
="qemu-keymap\$(EXESUF) $tools"
6026 # Probe for guest agent support/options
6028 if [ "$guest_agent" != "no" ]; then
6029 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
6030 tools
="qemu-ga $tools"
6032 elif [ "$guest_agent" != yes ]; then
6035 error_exit
"Guest agent is not supported on this platform"
6039 # Guest agent Window MSI package
6041 if test "$guest_agent" != yes; then
6042 if test "$guest_agent_msi" = yes; then
6043 error_exit
"MSI guest agent package requires guest agent enabled"
6046 elif test "$mingw32" != "yes"; then
6047 if test "$guest_agent_msi" = "yes"; then
6048 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
6051 elif ! has wixl
; then
6052 if test "$guest_agent_msi" = "yes"; then
6053 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
6057 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
6058 # disabled explicitly
6059 if test "$guest_agent_msi" != "no"; then
6064 if test "$guest_agent_msi" = "yes"; then
6065 if test "$guest_agent_with_vss" = "yes"; then
6066 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
6069 if test "$QEMU_GA_MANUFACTURER" = ""; then
6070 QEMU_GA_MANUFACTURER
=QEMU
6073 if test "$QEMU_GA_DISTRO" = ""; then
6074 QEMU_GA_DISTRO
=Linux
6077 if test "$QEMU_GA_VERSION" = ""; then
6078 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
6081 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
6085 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
6088 QEMU_GA_MSI_ARCH
="-D Arch=32"
6091 error_exit
"CPU $cpu not supported for building installation package"
6096 # Mac OS X ships with a broken assembler
6098 if { test "$cpu" = "i386" ||
test "$cpu" = "x86_64"; } && \
6099 test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \
6100 test "$softmmu" = yes ; then
6101 # Different host OS linkers have different ideas about the name of the ELF
6102 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
6103 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
6104 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
6105 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
6106 ld_i386_emulation
="$emu"
6112 if test "$cpu" = "ppc64" && test "$targetos" != "Darwin" ; then
6113 roms
="$roms spapr-rtas"
6116 # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
6117 if test "$cpu" = "s390x" ; then
6119 if compile_prog
"-march=z900" ""; then
6120 roms
="$roms s390-ccw"
6124 # Probe for the need for relocating the user-only binary.
6125 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
6128 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
6129 # ??? Rationale for choosing this address
6130 textseg_addr
=0x60000000
6133 # A 256M aligned address, high in the address space, with enough
6134 # room for the code_gen_buffer above it before the stack.
6135 textseg_addr
=0x60000000
6138 if [ -n "$textseg_addr" ]; then
6140 int main(void) { return 0; }
6142 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
6143 if ! compile_prog
"" "$textseg_ldflags"; then
6144 # In case ld does not support -Ttext-segment, edit the default linker
6145 # script via sed to set the .text start addr. This is needed on FreeBSD
6147 if ! $ld --verbose >/dev
/null
2>&1; then
6149 "We need to link the QEMU user mode binaries at a" \
6150 "specific text address. Unfortunately your linker" \
6151 "doesn't support either the -Ttext-segment option or" \
6152 "printing the default linker script with --verbose." \
6153 "If you don't want the user mode binaries, pass the" \
6154 "--disable-user option to configure."
6157 $ld --verbose |
sed \
6158 -e '1,/==================================================/d' \
6159 -e '/==================================================/,$d' \
6160 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
6161 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
6162 textseg_ldflags
="-Wl,-T../config-host.ld"
6167 # Check that the C++ compiler exists and works with the C compiler.
6168 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
6171 int c_function(void);
6172 int main(void) { return c_function(); }
6179 int c_function(void);
6181 int c_function(void) { return 42; }
6186 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
6187 # C++ compiler $cxx works ok with C compiler $cc
6190 echo "C++ compiler $cxx does not work with C compiler $cc"
6191 echo "Disabling C++ specific optional code"
6195 echo "No C++ compiler available; disabling C++ specific optional code"
6200 if test "$1" = "yes" ; then
6205 # prepend pixman and ftd flags after all config tests are done
6206 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
6207 QEMU_LDFLAGS
="$fdt_ldflags $QEMU_LDFLAGS"
6208 libs_softmmu
="$pixman_libs $libs_softmmu"
6210 echo "Install prefix $prefix"
6211 echo "BIOS directory $(eval echo $qemu_datadir)"
6212 echo "firmware path $(eval echo $firmwarepath)"
6213 echo "binary directory $(eval echo $bindir)"
6214 echo "library directory $(eval echo $libdir)"
6215 echo "module directory $(eval echo $qemu_moddir)"
6216 echo "libexec directory $(eval echo $libexecdir)"
6217 echo "include directory $(eval echo $includedir)"
6218 echo "config directory $(eval echo $sysconfdir)"
6219 if test "$mingw32" = "no" ; then
6220 echo "local state directory $(eval echo $local_statedir)"
6221 echo "Manual directory $(eval echo $mandir)"
6222 echo "ELF interp prefix $interp_prefix"
6224 echo "local state directory queried at runtime"
6225 echo "Windows SDK $win_sdk"
6227 echo "Source path $source_path"
6228 echo "GIT binary $git"
6229 echo "GIT submodules $git_submodules"
6230 echo "C compiler $cc"
6231 echo "Host C compiler $host_cc"
6232 echo "C++ compiler $cxx"
6233 echo "Objective-C compiler $objcc"
6234 echo "ARFLAGS $ARFLAGS"
6235 echo "CFLAGS $CFLAGS"
6236 echo "QEMU_CFLAGS $QEMU_CFLAGS"
6237 echo "LDFLAGS $LDFLAGS"
6238 echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
6240 echo "install $install"
6241 echo "python $python ($python_version)"
6242 echo "slirp support $slirp $(echo_version $slirp $slirp_version)"
6243 if test "$slirp" != "no" ; then
6246 echo "module support $modules"
6247 echo "host CPU $cpu"
6248 echo "host big endian $bigendian"
6249 echo "target list $target_list"
6250 echo "gprof enabled $gprof"
6251 echo "sparse enabled $sparse"
6252 echo "strip binaries $strip_opt"
6253 echo "profiler $profiler"
6254 echo "static build $static"
6255 if test "$darwin" = "yes" ; then
6256 echo "Cocoa support $cocoa"
6258 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
6259 echo "SDL image support $sdl_image"
6260 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
6261 echo "GTK GL support $gtk_gl"
6262 echo "VTE support $vte $(echo_version $vte $vteversion)"
6263 echo "TLS priority $tls_priority"
6264 echo "GNUTLS support $gnutls"
6265 echo "libgcrypt $gcrypt"
6266 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
6267 echo "libtasn1 $tasn1"
6268 echo "PAM $auth_pam"
6269 echo "iconv support $iconv"
6270 echo "curses support $curses"
6271 echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
6272 echo "curl support $curl"
6273 echo "mingw32 support $mingw32"
6274 echo "Audio drivers $audio_drv_list"
6275 echo "Block whitelist (rw) $block_drv_rw_whitelist"
6276 echo "Block whitelist (ro) $block_drv_ro_whitelist"
6277 echo "VirtFS support $virtfs"
6278 echo "Multipath support $mpath"
6279 echo "VNC support $vnc"
6280 if test "$vnc" = "yes" ; then
6281 echo "VNC SASL support $vnc_sasl"
6282 echo "VNC JPEG support $vnc_jpeg"
6283 echo "VNC PNG support $vnc_png"
6285 if test -n "$sparc_cpu"; then
6286 echo "Target Sparc Arch $sparc_cpu"
6288 echo "xen support $xen"
6289 if test "$xen" = "yes" ; then
6290 echo "xen ctrl version $xen_ctrl_version"
6292 echo "brlapi support $brlapi"
6293 echo "bluez support $bluez"
6294 echo "Documentation $docs"
6296 echo "vde support $vde"
6297 echo "netmap support $netmap"
6298 echo "Linux AIO support $linux_aio"
6299 echo "ATTR/XATTR support $attr"
6300 echo "Install blobs $blobs"
6301 echo "KVM support $kvm"
6302 echo "HAX support $hax"
6303 echo "HVF support $hvf"
6304 echo "WHPX support $whpx"
6305 echo "TCG support $tcg"
6306 if test "$tcg" = "yes" ; then
6307 echo "TCG debug enabled $debug_tcg"
6308 echo "TCG interpreter $tcg_interpreter"
6310 echo "malloc trim support $malloc_trim"
6311 echo "RDMA support $rdma"
6312 echo "PVRDMA support $pvrdma"
6313 echo "fdt support $fdt"
6314 echo "membarrier $membarrier"
6315 echo "preadv support $preadv"
6316 echo "fdatasync $fdatasync"
6317 echo "madvise $madvise"
6318 echo "posix_madvise $posix_madvise"
6319 echo "posix_memalign $posix_memalign"
6320 echo "libcap-ng support $cap_ng"
6321 echo "vhost-net support $vhost_net"
6322 echo "vhost-crypto support $vhost_crypto"
6323 echo "vhost-scsi support $vhost_scsi"
6324 echo "vhost-vsock support $vhost_vsock"
6325 echo "vhost-user support $vhost_user"
6326 echo "Trace backends $trace_backends"
6327 if have_backend
"simple"; then
6328 echo "Trace output file $trace_file-<pid>"
6330 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
6331 echo "rbd support $rbd"
6332 echo "xfsctl support $xfs"
6333 echo "smartcard support $smartcard"
6334 echo "libusb $libusb"
6335 echo "usb net redir $usb_redir"
6336 echo "OpenGL support $opengl"
6337 echo "OpenGL dmabufs $opengl_dmabuf"
6338 echo "libiscsi support $libiscsi"
6339 echo "libnfs support $libnfs"
6340 echo "build guest agent $guest_agent"
6341 echo "QGA VSS support $guest_agent_with_vss"
6342 echo "QGA w32 disk info $guest_agent_ntddscsi"
6343 echo "QGA MSI support $guest_agent_msi"
6344 echo "seccomp support $seccomp"
6345 echo "coroutine backend $coroutine"
6346 echo "coroutine pool $coroutine_pool"
6347 echo "debug stack usage $debug_stack_usage"
6348 echo "mutex debugging $debug_mutex"
6349 echo "crypto afalg $crypto_afalg"
6350 echo "GlusterFS support $glusterfs"
6351 echo "gcov $gcov_tool"
6352 echo "gcov enabled $gcov"
6353 echo "TPM support $tpm"
6354 echo "libssh2 support $libssh2"
6355 echo "TPM passthrough $tpm_passthrough"
6356 echo "TPM emulator $tpm_emulator"
6357 echo "QOM debugging $qom_cast_debug"
6358 echo "Live block migration $live_block_migration"
6359 echo "lzo support $lzo"
6360 echo "snappy support $snappy"
6361 echo "bzip2 support $bzip2"
6362 echo "lzfse support $lzfse"
6363 echo "NUMA host support $numa"
6364 echo "libxml2 $libxml2"
6365 echo "tcmalloc support $tcmalloc"
6366 echo "jemalloc support $jemalloc"
6367 echo "avx2 optimization $avx2_opt"
6368 echo "replication support $replication"
6369 echo "VxHS block device $vxhs"
6370 echo "bochs support $bochs"
6371 echo "cloop support $cloop"
6372 echo "dmg support $dmg"
6373 echo "qcow v1 support $qcow1"
6374 echo "vdi support $vdi"
6375 echo "vvfat support $vvfat"
6376 echo "qed support $qed"
6377 echo "parallels support $parallels"
6378 echo "sheepdog support $sheepdog"
6379 echo "capstone $capstone"
6380 echo "docker $docker"
6381 echo "libpmem support $libpmem"
6382 echo "libudev $libudev"
6383 echo "default devices $default_devices"
6385 if test "$supported_cpu" = "no"; then
6387 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
6389 echo "CPU host architecture $cpu support is not currently maintained."
6390 echo "The QEMU project intends to remove support for this host CPU in"
6391 echo "a future release if nobody volunteers to maintain it and to"
6392 echo "provide a build host for our continuous integration setup."
6393 echo "configure has succeeded and you can continue to build, but"
6394 echo "if you care about QEMU on this platform you should contact"
6395 echo "us upstream at qemu-devel@nongnu.org."
6398 if test "$supported_os" = "no"; then
6400 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
6402 echo "Host OS $targetos support is not currently maintained."
6403 echo "The QEMU project intends to remove support for this host OS in"
6404 echo "a future release if nobody volunteers to maintain it and to"
6405 echo "provide a build host for our continuous integration setup."
6406 echo "configure has succeeded and you can continue to build, but"
6407 echo "if you care about QEMU on this platform you should contact"
6408 echo "us upstream at qemu-devel@nongnu.org."
6411 config_host_mak
="config-host.mak"
6413 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
6415 echo "# Automatically generated by configure - do not modify" > $config_host_mak
6416 echo >> $config_host_mak
6418 echo all
: >> $config_host_mak
6419 echo "prefix=$prefix" >> $config_host_mak
6420 echo "bindir=$bindir" >> $config_host_mak
6421 echo "libdir=$libdir" >> $config_host_mak
6422 echo "libexecdir=$libexecdir" >> $config_host_mak
6423 echo "includedir=$includedir" >> $config_host_mak
6424 echo "mandir=$mandir" >> $config_host_mak
6425 echo "sysconfdir=$sysconfdir" >> $config_host_mak
6426 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
6427 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
6428 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
6429 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
6430 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
6431 if test "$mingw32" = "no" ; then
6432 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
6434 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
6435 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
6436 echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
6437 echo "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak
6438 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
6439 echo "GIT=$git" >> $config_host_mak
6440 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
6441 echo "GIT_UPDATE=$git_update" >> $config_host_mak
6443 echo "ARCH=$ARCH" >> $config_host_mak
6445 if test "$default_devices" = "yes" ; then
6446 echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak
6448 echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak
6450 if test "$debug_tcg" = "yes" ; then
6451 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
6453 if test "$strip_opt" = "yes" ; then
6454 echo "STRIP=${strip}" >> $config_host_mak
6456 if test "$bigendian" = "yes" ; then
6457 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
6459 if test "$mingw32" = "yes" ; then
6460 echo "CONFIG_WIN32=y" >> $config_host_mak
6461 rc_version
=$
(cat $source_path/VERSION
)
6462 version_major
=${rc_version%%.*}
6463 rc_version
=${rc_version#*.}
6464 version_minor
=${rc_version%%.*}
6465 rc_version
=${rc_version#*.}
6466 version_subminor
=${rc_version%%.*}
6468 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6469 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6470 if test "$guest_agent_with_vss" = "yes" ; then
6471 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
6472 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
6473 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
6475 if test "$guest_agent_ntddscsi" = "yes" ; then
6476 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
6478 if test "$guest_agent_msi" = "yes"; then
6479 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
6480 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6481 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6482 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6483 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6484 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6485 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6488 echo "CONFIG_POSIX=y" >> $config_host_mak
6491 if test "$linux" = "yes" ; then
6492 echo "CONFIG_LINUX=y" >> $config_host_mak
6495 if test "$darwin" = "yes" ; then
6496 echo "CONFIG_DARWIN=y" >> $config_host_mak
6499 if test "$solaris" = "yes" ; then
6500 echo "CONFIG_SOLARIS=y" >> $config_host_mak
6502 if test "$haiku" = "yes" ; then
6503 echo "CONFIG_HAIKU=y" >> $config_host_mak
6505 if test "$static" = "yes" ; then
6506 echo "CONFIG_STATIC=y" >> $config_host_mak
6508 if test "$profiler" = "yes" ; then
6509 echo "CONFIG_PROFILER=y" >> $config_host_mak
6511 if test "$slirp" != "no"; then
6512 echo "CONFIG_SLIRP=y" >> $config_host_mak
6513 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
6514 echo "SLIRP_CFLAGS=$slirp_cflags" >> $config_host_mak
6515 echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak
6517 if [ "$slirp" = "git" -o "$slirp" = "internal" ]; then
6518 echo "config-host.h: subdir-slirp" >> $config_host_mak
6520 if test "$vde" = "yes" ; then
6521 echo "CONFIG_VDE=y" >> $config_host_mak
6522 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
6524 if test "$netmap" = "yes" ; then
6525 echo "CONFIG_NETMAP=y" >> $config_host_mak
6527 if test "$l2tpv3" = "yes" ; then
6528 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6530 if test "$cap_ng" = "yes" ; then
6531 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6533 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
6534 for drv
in $audio_drv_list; do
6535 def
=CONFIG_AUDIO_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
6537 alsa | oss | pa | sdl
)
6538 echo "$def=m" >> $config_host_mak ;;
6540 echo "$def=y" >> $config_host_mak ;;
6543 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6544 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6545 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6546 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6547 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
6548 if test "$audio_pt_int" = "yes" ; then
6549 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6551 if test "$audio_win_int" = "yes" ; then
6552 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6554 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6555 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
6556 if test "$vnc" = "yes" ; then
6557 echo "CONFIG_VNC=y" >> $config_host_mak
6559 if test "$vnc_sasl" = "yes" ; then
6560 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
6562 if test "$vnc_jpeg" = "yes" ; then
6563 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
6565 if test "$vnc_png" = "yes" ; then
6566 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
6568 if test "$xkbcommon" = "yes" ; then
6569 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6570 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6572 if test "$xfs" = "yes" ; then
6573 echo "CONFIG_XFS=y" >> $config_host_mak
6575 qemu_version
=$
(head $source_path/VERSION
)
6576 echo "VERSION=$qemu_version" >>$config_host_mak
6577 echo "PKGVERSION=$pkgversion" >>$config_host_mak
6578 echo "SRC_PATH=$source_path" >> $config_host_mak
6579 echo "TARGET_DIRS=$target_list" >> $config_host_mak
6580 if [ "$docs" = "yes" ] ; then
6581 echo "BUILD_DOCS=yes" >> $config_host_mak
6583 if test "$modules" = "yes"; then
6584 # $shacmd can generate a hash started with digit, which the compiler doesn't
6585 # like as an symbol. So prefix it with an underscore
6586 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
6587 echo "CONFIG_MODULES=y" >> $config_host_mak
6589 if test "$have_x11" = "yes" && test "$need_x11" = "yes"; then
6590 echo "CONFIG_X11=y" >> $config_host_mak
6591 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6592 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6594 if test "$sdl" = "yes" ; then
6595 echo "CONFIG_SDL=m" >> $config_host_mak
6596 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
6597 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
6598 if test "$sdl_image" = "yes" ; then
6599 echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak
6602 if test "$cocoa" = "yes" ; then
6603 echo "CONFIG_COCOA=y" >> $config_host_mak
6605 if test "$iconv" = "yes" ; then
6606 echo "CONFIG_ICONV=y" >> $config_host_mak
6607 echo "ICONV_CFLAGS=$iconv_cflags" >> $config_host_mak
6608 echo "ICONV_LIBS=$iconv_lib" >> $config_host_mak
6610 if test "$curses" = "yes" ; then
6611 echo "CONFIG_CURSES=m" >> $config_host_mak
6612 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6613 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
6615 if test "$pipe2" = "yes" ; then
6616 echo "CONFIG_PIPE2=y" >> $config_host_mak
6618 if test "$accept4" = "yes" ; then
6619 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6621 if test "$splice" = "yes" ; then
6622 echo "CONFIG_SPLICE=y" >> $config_host_mak
6624 if test "$eventfd" = "yes" ; then
6625 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6627 if test "$memfd" = "yes" ; then
6628 echo "CONFIG_MEMFD=y" >> $config_host_mak
6630 if test "$have_usbfs" = "yes" ; then
6631 echo "CONFIG_USBFS=y" >> $config_host_mak
6633 if test "$fallocate" = "yes" ; then
6634 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6636 if test "$fallocate_punch_hole" = "yes" ; then
6637 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6639 if test "$fallocate_zero_range" = "yes" ; then
6640 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6642 if test "$posix_fallocate" = "yes" ; then
6643 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6645 if test "$sync_file_range" = "yes" ; then
6646 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6648 if test "$fiemap" = "yes" ; then
6649 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6651 if test "$dup3" = "yes" ; then
6652 echo "CONFIG_DUP3=y" >> $config_host_mak
6654 if test "$ppoll" = "yes" ; then
6655 echo "CONFIG_PPOLL=y" >> $config_host_mak
6657 if test "$prctl_pr_set_timerslack" = "yes" ; then
6658 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6660 if test "$epoll" = "yes" ; then
6661 echo "CONFIG_EPOLL=y" >> $config_host_mak
6663 if test "$epoll_create1" = "yes" ; then
6664 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6666 if test "$sendfile" = "yes" ; then
6667 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6669 if test "$timerfd" = "yes" ; then
6670 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6672 if test "$setns" = "yes" ; then
6673 echo "CONFIG_SETNS=y" >> $config_host_mak
6675 if test "$clock_adjtime" = "yes" ; then
6676 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6678 if test "$syncfs" = "yes" ; then
6679 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6681 if test "$inotify" = "yes" ; then
6682 echo "CONFIG_INOTIFY=y" >> $config_host_mak
6684 if test "$inotify1" = "yes" ; then
6685 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6687 if test "$sem_timedwait" = "yes" ; then
6688 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6690 if test "$strchrnul" = "yes" ; then
6691 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
6693 if test "$byteswap_h" = "yes" ; then
6694 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6696 if test "$bswap_h" = "yes" ; then
6697 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6699 if test "$curl" = "yes" ; then
6700 echo "CONFIG_CURL=m" >> $config_host_mak
6701 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
6702 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
6704 if test "$brlapi" = "yes" ; then
6705 echo "CONFIG_BRLAPI=y" >> $config_host_mak
6706 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
6708 if test "$bluez" = "yes" ; then
6709 echo "CONFIG_BLUEZ=y" >> $config_host_mak
6710 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
6712 if test "$gtk" = "yes" ; then
6713 echo "CONFIG_GTK=m" >> $config_host_mak
6714 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
6715 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
6716 if test "$gtk_gl" = "yes" ; then
6717 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6720 if test "$gio" = "yes" ; then
6721 echo "CONFIG_GIO=y" >> $config_host_mak
6722 echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
6723 echo "GIO_LIBS=$gio_libs" >> $config_host_mak
6725 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
6726 if test "$gnutls" = "yes" ; then
6727 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6729 if test "$gcrypt" = "yes" ; then
6730 echo "CONFIG_GCRYPT=y" >> $config_host_mak
6731 if test "$gcrypt_hmac" = "yes" ; then
6732 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6735 if test "$nettle" = "yes" ; then
6736 echo "CONFIG_NETTLE=y" >> $config_host_mak
6737 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
6739 if test "$tasn1" = "yes" ; then
6740 echo "CONFIG_TASN1=y" >> $config_host_mak
6742 if test "$auth_pam" = "yes" ; then
6743 echo "CONFIG_AUTH_PAM=y" >> $config_host_mak
6745 if test "$have_ifaddrs_h" = "yes" ; then
6746 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6748 if test "$have_broken_size_max" = "yes" ; then
6749 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6752 # Work around a system header bug with some kernel/XFS header
6753 # versions where they both try to define 'struct fsxattr':
6754 # xfs headers will not try to redefine structs from linux headers
6755 # if this macro is set.
6756 if test "$have_fsxattr" = "yes" ; then
6757 echo "HAVE_FSXATTR=y" >> $config_host_mak
6759 if test "$have_copy_file_range" = "yes" ; then
6760 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
6762 if test "$vte" = "yes" ; then
6763 echo "CONFIG_VTE=y" >> $config_host_mak
6764 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6765 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
6767 if test "$virglrenderer" = "yes" ; then
6768 echo "CONFIG_VIRGL=y" >> $config_host_mak
6769 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6770 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6772 if test "$xen" = "yes" ; then
6773 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
6774 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
6776 if test "$linux_aio" = "yes" ; then
6777 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6779 if test "$attr" = "yes" ; then
6780 echo "CONFIG_ATTR=y" >> $config_host_mak
6782 if test "$libattr" = "yes" ; then
6783 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6785 if test "$virtfs" = "yes" ; then
6786 echo "CONFIG_VIRTFS=y" >> $config_host_mak
6788 if test "$mpath" = "yes" ; then
6789 echo "CONFIG_MPATH=y" >> $config_host_mak
6790 if test "$mpathpersist_new_api" = "yes"; then
6791 echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
6794 if test "$vhost_scsi" = "yes" ; then
6795 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6797 if test "$vhost_net" = "yes" ; then
6798 echo "CONFIG_VHOST_NET=y" >> $config_host_mak
6800 if test "$vhost_net_user" = "yes" ; then
6801 echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak
6803 if test "$vhost_crypto" = "yes" ; then
6804 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6806 if test "$vhost_vsock" = "yes" ; then
6807 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6809 if test "$vhost_kernel" = "yes" ; then
6810 echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak
6812 if test "$vhost_user" = "yes" ; then
6813 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6815 if test "$blobs" = "yes" ; then
6816 echo "INSTALL_BLOBS=yes" >> $config_host_mak
6818 if test "$iovec" = "yes" ; then
6819 echo "CONFIG_IOVEC=y" >> $config_host_mak
6821 if test "$preadv" = "yes" ; then
6822 echo "CONFIG_PREADV=y" >> $config_host_mak
6824 if test "$fdt" != "no" ; then
6825 echo "CONFIG_FDT=y" >> $config_host_mak
6827 if test "$membarrier" = "yes" ; then
6828 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6830 if test "$signalfd" = "yes" ; then
6831 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6833 if test "$optreset" = "yes" ; then
6834 echo "HAVE_OPTRESET=y" >> $config_host_mak
6836 if test "$tcg" = "yes"; then
6837 echo "CONFIG_TCG=y" >> $config_host_mak
6838 if test "$tcg_interpreter" = "yes" ; then
6839 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6842 if test "$fdatasync" = "yes" ; then
6843 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6845 if test "$madvise" = "yes" ; then
6846 echo "CONFIG_MADVISE=y" >> $config_host_mak
6848 if test "$posix_madvise" = "yes" ; then
6849 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6851 if test "$posix_memalign" = "yes" ; then
6852 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6855 if test "$spice" = "yes" ; then
6856 echo "CONFIG_SPICE=y" >> $config_host_mak
6859 if test "$smartcard" = "yes" ; then
6860 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6861 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6862 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6865 if test "$libusb" = "yes" ; then
6866 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6867 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6868 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6871 if test "$usb_redir" = "yes" ; then
6872 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6873 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6874 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6877 if test "$opengl" = "yes" ; then
6878 echo "CONFIG_OPENGL=y" >> $config_host_mak
6879 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6880 if test "$opengl_dmabuf" = "yes" ; then
6881 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6885 if test "$malloc_trim" = "yes" ; then
6886 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6889 if test "$avx2_opt" = "yes" ; then
6890 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6893 if test "$lzo" = "yes" ; then
6894 echo "CONFIG_LZO=y" >> $config_host_mak
6897 if test "$snappy" = "yes" ; then
6898 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6901 if test "$bzip2" = "yes" ; then
6902 echo "CONFIG_BZIP2=y" >> $config_host_mak
6903 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6906 if test "$lzfse" = "yes" ; then
6907 echo "CONFIG_LZFSE=y" >> $config_host_mak
6908 echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
6911 if test "$libiscsi" = "yes" ; then
6912 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6913 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6914 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6917 if test "$libnfs" = "yes" ; then
6918 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6919 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6922 if test "$seccomp" = "yes"; then
6923 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6924 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6925 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6928 # XXX: suppress that
6929 if [ "$bsd" = "yes" ] ; then
6930 echo "CONFIG_BSD=y" >> $config_host_mak
6933 if test "$localtime_r" = "yes" ; then
6934 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6936 if test "$qom_cast_debug" = "yes" ; then
6937 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6939 if test "$rbd" = "yes" ; then
6940 echo "CONFIG_RBD=m" >> $config_host_mak
6941 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6942 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6945 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6946 if test "$coroutine_pool" = "yes" ; then
6947 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6949 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6952 if test "$debug_stack_usage" = "yes" ; then
6953 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6956 if test "$crypto_afalg" = "yes" ; then
6957 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6960 if test "$open_by_handle_at" = "yes" ; then
6961 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6964 if test "$linux_magic_h" = "yes" ; then
6965 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6968 if test "$pragma_diagnostic_available" = "yes" ; then
6969 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6972 if test "$valgrind_h" = "yes" ; then
6973 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6976 if test "$have_asan_iface_fiber" = "yes" ; then
6977 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6980 if test "$has_environ" = "yes" ; then
6981 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6984 if test "$cpuid_h" = "yes" ; then
6985 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6988 if test "$int128" = "yes" ; then
6989 echo "CONFIG_INT128=y" >> $config_host_mak
6992 if test "$atomic128" = "yes" ; then
6993 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6996 if test "$cmpxchg128" = "yes" ; then
6997 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
7000 if test "$atomic64" = "yes" ; then
7001 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
7004 if test "$vector16" = "yes" ; then
7005 echo "CONFIG_VECTOR16=y" >> $config_host_mak
7008 if test "$getauxval" = "yes" ; then
7009 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
7012 if test "$glusterfs" = "yes" ; then
7013 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
7014 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
7015 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
7018 if test "$glusterfs_xlator_opt" = "yes" ; then
7019 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
7022 if test "$glusterfs_discard" = "yes" ; then
7023 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
7026 if test "$glusterfs_fallocate" = "yes" ; then
7027 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
7030 if test "$glusterfs_zerofill" = "yes" ; then
7031 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
7034 if test "$libssh2" = "yes" ; then
7035 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
7036 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
7037 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
7040 if test "$live_block_migration" = "yes" ; then
7041 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
7044 if test "$tpm" = "yes"; then
7045 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
7046 # TPM passthrough support?
7047 if test "$tpm_passthrough" = "yes"; then
7048 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
7050 # TPM emulator support?
7051 if test "$tpm_emulator" = "yes"; then
7052 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
7056 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
7057 if have_backend
"nop"; then
7058 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
7060 if have_backend
"simple"; then
7061 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
7062 # Set the appropriate trace file.
7063 trace_file
="\"$trace_file-\" FMT_pid"
7065 if have_backend
"log"; then
7066 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
7068 if have_backend
"ust"; then
7069 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
7071 if have_backend
"dtrace"; then
7072 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
7073 if test "$trace_backend_stap" = "yes" ; then
7074 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
7077 if have_backend
"ftrace"; then
7078 if test "$linux" = "yes" ; then
7079 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
7081 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
7084 if have_backend
"syslog"; then
7085 if test "$posix_syslog" = "yes" ; then
7086 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
7088 feature_not_found
"syslog(trace backend)" "syslog not available"
7091 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
7093 if test "$rdma" = "yes" ; then
7094 echo "CONFIG_RDMA=y" >> $config_host_mak
7095 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
7098 if test "$pvrdma" = "yes" ; then
7099 echo "CONFIG_PVRDMA=y" >> $config_host_mak
7102 if test "$have_rtnetlink" = "yes" ; then
7103 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
7106 if test "$libxml2" = "yes" ; then
7107 echo "CONFIG_LIBXML2=y" >> $config_host_mak
7108 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
7109 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
7112 if test "$replication" = "yes" ; then
7113 echo "CONFIG_REPLICATION=y" >> $config_host_mak
7116 if test "$have_af_vsock" = "yes" ; then
7117 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
7120 if test "$have_sysmacros" = "yes" ; then
7121 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
7124 if test "$have_static_assert" = "yes" ; then
7125 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
7128 if test "$have_utmpx" = "yes" ; then
7129 echo "HAVE_UTMPX=y" >> $config_host_mak
7132 if test "$ivshmem" = "yes" ; then
7133 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
7135 if test "$capstone" != "no" ; then
7136 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
7138 if test "$debug_mutex" = "yes" ; then
7139 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
7142 # Hold two types of flag:
7143 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
7144 # a thread we have a handle to
7145 # CONFIG_PTHREAD_SETNAME_NP_W_TID - A way of doing it on a particular
7147 if test "$pthread_setname_np_w_tid" = "yes" ; then
7148 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
7149 echo "CONFIG_PTHREAD_SETNAME_NP_W_TID=y" >> $config_host_mak
7150 elif test "$pthread_setname_np_wo_tid" = "yes" ; then
7151 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
7152 echo "CONFIG_PTHREAD_SETNAME_NP_WO_TID=y" >> $config_host_mak
7155 if test "$vxhs" = "yes" ; then
7156 echo "CONFIG_VXHS=y" >> $config_host_mak
7157 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
7160 if test "$libpmem" = "yes" ; then
7161 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
7164 if test "$bochs" = "yes" ; then
7165 echo "CONFIG_BOCHS=y" >> $config_host_mak
7167 if test "$cloop" = "yes" ; then
7168 echo "CONFIG_CLOOP=y" >> $config_host_mak
7170 if test "$dmg" = "yes" ; then
7171 echo "CONFIG_DMG=y" >> $config_host_mak
7173 if test "$qcow1" = "yes" ; then
7174 echo "CONFIG_QCOW1=y" >> $config_host_mak
7176 if test "$vdi" = "yes" ; then
7177 echo "CONFIG_VDI=y" >> $config_host_mak
7179 if test "$vvfat" = "yes" ; then
7180 echo "CONFIG_VVFAT=y" >> $config_host_mak
7182 if test "$qed" = "yes" ; then
7183 echo "CONFIG_QED=y" >> $config_host_mak
7185 if test "$parallels" = "yes" ; then
7186 echo "CONFIG_PARALLELS=y" >> $config_host_mak
7188 if test "$sheepdog" = "yes" ; then
7189 echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
7192 if test "$tcg_interpreter" = "yes"; then
7193 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
7194 elif test "$ARCH" = "sparc64" ; then
7195 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
7196 elif test "$ARCH" = "s390x" ; then
7197 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
7198 elif test "$ARCH" = "x86_64" ||
test "$ARCH" = "x32" ; then
7199 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
7200 elif test "$ARCH" = "ppc64" ; then
7201 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
7202 elif test "$ARCH" = "riscv32" ||
test "$ARCH" = "riscv64" ; then
7203 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/riscv $QEMU_INCLUDES"
7205 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
7207 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
7209 echo "TOOLS=$tools" >> $config_host_mak
7210 echo "ROMS=$roms" >> $config_host_mak
7211 echo "MAKE=$make" >> $config_host_mak
7212 echo "INSTALL=$install" >> $config_host_mak
7213 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
7214 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
7215 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
7216 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
7217 echo "PYTHON=$python" >> $config_host_mak
7218 echo "PYTHON_VERSION=$python_version" >> $config_host_mak
7219 echo "CC=$cc" >> $config_host_mak
7220 if $iasl -h > /dev
/null
2>&1; then
7221 echo "IASL=$iasl" >> $config_host_mak
7223 echo "HOST_CC=$host_cc" >> $config_host_mak
7224 echo "CXX=$cxx" >> $config_host_mak
7225 echo "OBJCC=$objcc" >> $config_host_mak
7226 echo "AR=$ar" >> $config_host_mak
7227 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
7228 echo "AS=$as" >> $config_host_mak
7229 echo "CCAS=$ccas" >> $config_host_mak
7230 echo "CPP=$cpp" >> $config_host_mak
7231 echo "OBJCOPY=$objcopy" >> $config_host_mak
7232 echo "LD=$ld" >> $config_host_mak
7233 echo "RANLIB=$ranlib" >> $config_host_mak
7234 echo "NM=$nm" >> $config_host_mak
7235 echo "WINDRES=$windres" >> $config_host_mak
7236 echo "CFLAGS=$CFLAGS" >> $config_host_mak
7237 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
7238 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
7239 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
7240 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
7241 if test "$sparse" = "yes" ; then
7242 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
7243 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
7244 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
7245 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
7246 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
7248 if test "$cross_prefix" != ""; then
7249 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
7251 echo "AUTOCONF_HOST := " >> $config_host_mak
7253 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
7254 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
7255 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
7256 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
7257 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
7258 echo "LIBS+=$LIBS" >> $config_host_mak
7259 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
7260 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
7261 echo "EXESUF=$EXESUF" >> $config_host_mak
7262 echo "DSOSUF=$DSOSUF" >> $config_host_mak
7263 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
7264 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
7265 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
7266 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
7267 echo "POD2MAN=$POD2MAN" >> $config_host_mak
7268 if test "$gcov" = "yes" ; then
7269 echo "CONFIG_GCOV=y" >> $config_host_mak
7270 echo "GCOV=$gcov_tool" >> $config_host_mak
7273 if test "$docker" != "no"; then
7274 echo "HAVE_USER_DOCKER=y" >> $config_host_mak
7277 if test "$libudev" != "no"; then
7278 echo "CONFIG_LIBUDEV=y" >> $config_host_mak
7279 echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak
7282 # use included Linux headers
7283 if test "$linux" = "yes" ; then
7284 mkdir
-p linux-headers
7302 # For most CPUs the kernel architecture name and QEMU CPU name match.
7306 # For non-KVM architectures we will not have asm headers
7307 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
7308 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
7312 for target
in $target_list; do
7313 target_dir
="$target"
7314 config_target_mak
=$target_dir/config-target.mak
7315 target_name
=$
(echo $target | cut
-d '-' -f 1)
7316 target_bigendian
="no"
7318 case "$target_name" in
7319 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
7320 target_bigendian
=yes
7324 target_user_only
="no"
7325 target_linux_user
="no"
7326 target_bsd_user
="no"
7328 ${target_name}-softmmu)
7329 target_softmmu
="yes"
7331 ${target_name}-linux-user)
7332 target_user_only
="yes"
7333 target_linux_user
="yes"
7335 ${target_name}-bsd-user)
7336 target_user_only
="yes"
7337 target_bsd_user
="yes"
7340 error_exit
"Target '$target' not recognised"
7346 target_compiler_static
=""
7347 target_compiler_cflags
=""
7349 mkdir
-p $target_dir
7350 echo "# Automatically generated by configure - do not modify" > $config_target_mak
7354 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
7357 TARGET_ARCH
="$target_name"
7361 case "$target_name" in
7364 gdb_xml_files
="i386-32bit.xml"
7365 target_compiler
=$cross_cc_i386
7366 target_compiler_cflags
=$cross_cc_ccflags_i386
7369 TARGET_BASE_ARCH
=i386
7371 gdb_xml_files
="i386-64bit.xml"
7372 target_compiler
=$cross_cc_x86_64
7376 target_compiler
=$cross_cc_alpha
7382 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
7383 target_compiler
=$cross_cc_arm
7384 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
7388 TARGET_BASE_ARCH
=arm
7391 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
7392 target_compiler
=$cross_cc_aarch64
7393 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
7396 target_compiler
=$cross_cc_cris
7400 target_compiler
=$cross_cc_hppa
7403 target_compiler
=$cross_cc_lm32
7407 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
7408 target_compiler
=$cross_cc_m68k
7410 microblaze|microblazeel
)
7411 TARGET_ARCH
=microblaze
7413 echo "TARGET_ABI32=y" >> $config_target_mak
7414 target_compiler
=$cross_cc_microblaze
7419 target_compiler
=$cross_cc_mips
7420 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
7425 TARGET_BASE_ARCH
=mips
7426 target_compiler
=$cross_cc_mipsn32
7427 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
7428 echo "TARGET_ABI32=y" >> $config_target_mak
7433 TARGET_BASE_ARCH
=mips
7434 target_compiler
=$cross_cc_mips64
7435 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
7438 target_compiler
=$cross_cc_moxie
7441 target_compiler
=$cross_cc_nios2
7444 target_compiler
=$cross_cc_or1k
7445 TARGET_ARCH
=openrisc
7446 TARGET_BASE_ARCH
=openrisc
7449 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
7450 target_compiler
=$cross_cc_powerpc
7453 TARGET_BASE_ARCH
=ppc
7456 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7457 target_compiler
=$cross_cc_ppc64
7461 TARGET_BASE_ARCH
=ppc
7464 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7465 target_compiler
=$cross_cc_ppc64le
7469 TARGET_BASE_ARCH
=ppc
7471 echo "TARGET_ABI32=y" >> $config_target_mak
7472 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7473 target_compiler
=$cross_cc_ppc64abi32
7476 TARGET_BASE_ARCH
=riscv
7477 TARGET_ABI_DIR
=riscv
7479 target_compiler
=$cross_cc_riscv32
7482 TARGET_BASE_ARCH
=riscv
7483 TARGET_ABI_DIR
=riscv
7485 target_compiler
=$cross_cc_riscv64
7490 target_compiler
=$cross_cc_sh4
7493 target_compiler
=$cross_cc_sparc
7496 TARGET_BASE_ARCH
=sparc
7497 target_compiler
=$cross_cc_sparc64
7501 TARGET_BASE_ARCH
=sparc
7502 TARGET_ABI_DIR
=sparc
7503 target_compiler
=$cross_cc_sparc32plus
7504 echo "TARGET_ABI32=y" >> $config_target_mak
7508 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
7509 target_compiler
=$cross_cc_s390x
7512 target_compiler
=$cross_cc_tilegx
7515 target_compiler
=$cross_cc_tricore
7518 target_compiler
=$cross_cc_unicore32
7524 target_compiler
=$cross_cc_xtensa
7527 error_exit
"Unsupported target CPU"
7530 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
7531 if [ "$TARGET_BASE_ARCH" = "" ]; then
7532 TARGET_BASE_ARCH
=$TARGET_ARCH
7535 # Do we have a cross compiler for this target?
7536 if has
$target_compiler; then
7540 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then
7541 # For host systems we might get away with building without -static
7542 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then
7545 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7546 target_compiler_static
="n"
7549 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7550 target_compiler_static
="y"
7556 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
7559 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
7562 target_arch_name
="$(upper $TARGET_ARCH)"
7563 echo "TARGET_$target_arch_name=y" >> $config_target_mak
7564 echo "TARGET_NAME=$target_name" >> $config_target_mak
7565 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
7566 if [ "$TARGET_ABI_DIR" = "" ]; then
7567 TARGET_ABI_DIR
=$TARGET_ARCH
7569 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
7570 if [ "$HOST_VARIANT_DIR" != "" ]; then
7571 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
7574 if supported_xen_target
$target; then
7575 echo "CONFIG_XEN=y" >> $config_target_mak
7576 echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak
7577 if test "$xen_pci_passthrough" = yes; then
7578 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
7581 echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak
7583 if supported_kvm_target
$target; then
7584 echo "CONFIG_KVM=y" >> $config_target_mak
7585 echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak
7587 echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak
7589 if supported_hax_target
$target; then
7590 echo "CONFIG_HAX=y" >> $config_target_mak
7592 if supported_hvf_target
$target; then
7593 echo "CONFIG_HVF=y" >> $config_target_mak
7595 if supported_whpx_target
$target; then
7596 echo "CONFIG_WHPX=y" >> $config_target_mak
7598 if test "$target_bigendian" = "yes" ; then
7599 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
7601 if test "$target_softmmu" = "yes" ; then
7602 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
7603 if test "$mttcg" = "yes" ; then
7604 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
7607 if test "$target_user_only" = "yes" ; then
7608 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
7609 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
7611 if test "$target_linux_user" = "yes" ; then
7612 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
7615 if test ! -z "$gdb_xml_files" ; then
7616 for x
in $gdb_xml_files; do
7617 list
="$list $source_path/gdb-xml/$x"
7619 echo "TARGET_XML_FILES=$list" >> $config_target_mak
7622 if test "$target_user_only" = "yes" && test "$bflt" = "yes"; then
7623 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
7625 if test "$target_bsd_user" = "yes" ; then
7626 echo "CONFIG_BSD_USER=y" >> $config_target_mak
7629 if test -n "$target_compiler"; then
7630 echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak
7632 if test -n "$target_compiler_static"; then
7633 echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak
7636 if test -n "$target_compiler_cflags"; then
7637 echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
7642 # generate QEMU_CFLAGS/LDFLAGS for targets
7648 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7649 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7652 for i
in $ARCH $TARGET_BASE_ARCH ; do
7655 disas_config
"ALPHA"
7658 if test -n "${cxx}"; then
7659 disas_config
"ARM_A64"
7664 if test -n "${cxx}"; then
7665 disas_config
"ARM_A64"
7684 disas_config
"MICROBLAZE"
7688 if test -n "${cxx}"; then
7689 disas_config
"NANOMIPS"
7693 disas_config
"MOXIE"
7696 disas_config
"NIOS2"
7699 disas_config
"OPENRISC"
7705 disas_config
"RISCV"
7714 disas_config
"SPARC"
7717 disas_config
"XTENSA"
7721 if test "$tcg_interpreter" = "yes" ; then
7727 # Ensure there's only a single GP
7728 cflags
="-msmall-data $cflags"
7732 if test "$gprof" = "yes" ; then
7733 echo "TARGET_GPROF=y" >> $config_target_mak
7734 if test "$target_linux_user" = "yes" ; then
7736 ldflags
="-p $ldflags"
7738 if test "$target_softmmu" = "yes" ; then
7739 ldflags
="-p $ldflags"
7740 echo "GPROF_CFLAGS=-p" >> $config_target_mak
7744 if test "$target_linux_user" = "yes" ||
test "$target_bsd_user" = "yes" ; then
7745 ldflags
="$ldflags $textseg_ldflags"
7748 # Newer kernels on s390 check for an S390_PGSTE program header and
7749 # enable the pgste page table extensions in that case. This makes
7750 # the vm.allocate_pgste sysctl unnecessary. We enable this program
7752 # - we build on s390x
7753 # - we build the system emulation for s390x (qemu-system-s390x)
7755 # - the linker supports --s390-pgste
7756 if test "$TARGET_ARCH" = "s390x" && test "$target_softmmu" = "yes" && \
7757 test "$ARCH" = "s390x" && test "$kvm" = "yes"; then
7758 if ld_has
--s390-pgste ; then
7759 ldflags
="-Wl,--s390-pgste $ldflags"
7763 echo "LDFLAGS+=$ldflags" >> $config_target_mak
7764 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
7766 done # for target in $targets
7768 if test -n "$enabled_cross_compilers"; then
7770 echo "NOTE: cross-compilers enabled: $enabled_cross_compilers"
7773 if [ "$fdt" = "git" ]; then
7774 echo "config-host.h: subdir-dtc" >> $config_host_mak
7776 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7777 echo "config-host.h: subdir-capstone" >> $config_host_mak
7779 if test -n "$LIBCAPSTONE"; then
7780 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7783 if test "$numa" = "yes"; then
7784 echo "CONFIG_NUMA=y" >> $config_host_mak
7787 if test "$ccache_cpp2" = "yes"; then
7788 echo "export CCACHE_CPP2=y" >> $config_host_mak
7791 # If we're using a separate build tree, set it up now.
7792 # DIRS are directories which we simply mkdir in the build tree;
7793 # LINKS are things to symlink back into the source tree
7794 # (these can be both files and directories).
7795 # Caution: do not add files or directories here using wildcards. This
7796 # will result in problems later if a new file matching the wildcard is
7797 # added to the source tree -- nothing will cause configure to be rerun
7798 # so the build tree will be missing the link back to the new file, and
7799 # tests might fail. Prefer to keep the relevant files in their own
7800 # directory and symlink the directory instead.
7801 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
7802 DIRS
="$DIRS tests/fp tests/qgraph"
7803 DIRS
="$DIRS docs docs/interop fsdev scsi"
7804 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
7805 DIRS
="$DIRS roms/seabios roms/vgabios"
7806 LINKS
="Makefile tests/tcg/Makefile"
7807 LINKS
="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
7808 LINKS
="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
7809 LINKS
="$LINKS tests/fp/Makefile"
7810 LINKS
="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
7811 LINKS
="$LINKS pc-bios/spapr-rtas/Makefile"
7812 LINKS
="$LINKS pc-bios/s390-ccw/Makefile"
7813 LINKS
="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
7814 LINKS
="$LINKS pc-bios/qemu-icon.bmp"
7815 LINKS
="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
7816 LINKS
="$LINKS tests/acceptance tests/data"
7817 LINKS
="$LINKS tests/qemu-iotests/check"
7818 LINKS
="$LINKS python"
7820 $source_path/pc-bios
/*.bin \
7821 $source_path/pc-bios
/*.lid \
7822 $source_path/pc-bios
/*.aml \
7823 $source_path/pc-bios
/*.rom \
7824 $source_path/pc-bios
/*.dtb \
7825 $source_path/pc-bios
/*.img \
7826 $source_path/pc-bios
/openbios-
* \
7827 $source_path/pc-bios
/u-boot.
* \
7828 $source_path/pc-bios
/palcode-
*
7830 LINKS
="$LINKS pc-bios/$(basename $bios_file)"
7833 for f
in $LINKS ; do
7834 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
7835 symlink
"$source_path/$f" "$f"
7839 # temporary config to build submodules
7840 for rom
in seabios vgabios
; do
7841 config_mak
=roms
/$rom/config.mak
7842 echo "# Automatically generated by configure - do not modify" > $config_mak
7843 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
7844 echo "AS=$as" >> $config_mak
7845 echo "CCAS=$ccas" >> $config_mak
7846 echo "CC=$cc" >> $config_mak
7847 echo "BCC=bcc" >> $config_mak
7848 echo "CPP=$cpp" >> $config_mak
7849 echo "OBJCOPY=objcopy" >> $config_mak
7850 echo "IASL=$iasl" >> $config_mak
7851 echo "LD=$ld" >> $config_mak
7852 echo "RANLIB=$ranlib" >> $config_mak
7855 # set up qemu-iotests in this build directory
7856 iotests_common_env
="tests/qemu-iotests/common.env"
7858 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7859 echo >> "$iotests_common_env"
7860 echo "export PYTHON='$python'" >> "$iotests_common_env"
7862 # Save the configure command line for later reuse.
7863 cat <<EOD >config.status
7865 # Generated by configure.
7866 # Run this file to recreate the current configuration.
7867 # Compiler output produced by configure, useful for debugging
7868 # configure, is in config.log if it exists.
7874 eval envval
=\$
$envname
7876 if test -n "$envval"
7878 echo "$envname='$envval'" >> config.status
7879 echo "export $envname" >> config.status
7881 echo "unset $envname" >> config.status
7885 # Preserve various env variables that influence what
7886 # features/build target configure will detect
7892 preserve_env INSTALL
7894 preserve_env LD_LIBRARY_PATH
7895 preserve_env LIBTOOL
7898 preserve_env OBJCOPY
7900 preserve_env PKG_CONFIG
7901 preserve_env PKG_CONFIG_LIBDIR
7902 preserve_env PKG_CONFIG_PATH
7904 preserve_env SDL_CONFIG
7905 preserve_env SDL2_CONFIG
7908 preserve_env WINDRES
7910 printf "exec" >>config.status
7911 printf " '%s'" "$0" "$@" >>config.status
7912 echo ' "$@"' >>config.status
7913 chmod +x config.status