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")
281 # make source path absolute
282 source_path
=$
(cd "$source_path"; pwd)
285 interp_prefix
="/usr/gnemul/qemu-%M"
289 block_drv_rw_whitelist
=""
290 block_drv_ro_whitelist
=""
300 if test -e "$source_path/.git"
303 git_submodules
="ui/keycodemapdb"
304 git_submodules
="$git_submodules tests/fp/berkeley-testfloat-3"
305 git_submodules
="$git_submodules tests/fp/berkeley-softfloat-3"
310 if ! test -f "$source_path/ui/keycodemapdb/README"
313 echo "ERROR: missing file $source_path/ui/keycodemapdb/README"
315 echo "This is not a GIT checkout but module content appears to"
316 echo "be missing. Do not use 'git archive' or GitHub download links"
317 echo "to acquire QEMU source archives. Non-GIT builds are only"
318 echo "supported with source archives linked from:"
320 echo " https://www.qemu.org/download/"
322 echo "Developers working with GIT can use scripts/archive-source.sh"
323 echo "if they need to create valid source archives."
330 # Don't accept a target_list environment variable.
332 unset target_list_exclude
334 # Default value for a variable defining feature "foo".
335 # * foo="no" feature will only be used if --enable-foo arg is given
336 # * foo="" feature will be searched for, and if found, will be used
337 # unless --disable-foo is given
338 # * foo="yes" this value will only be set by --enable-foo flag.
339 # feature will searched for,
340 # if not found, configure exits with error
342 # Always add --enable-foo and --disable-foo command line args.
343 # Distributions want to ensure that several features are compiled in, and it
344 # is impossible without a --enable-foo that exits if a feature is not found.
366 xen_pci_passthrough
=""
398 LDFLAGS_SHARED
="-shared"
401 mandir
="\${prefix}/share/man"
402 datadir
="\${prefix}/share"
403 firmwarepath
="\${prefix}/share/qemu-firmware"
404 qemu_docdir
="\${prefix}/share/doc/qemu"
405 bindir
="\${prefix}/bin"
406 libdir
="\${prefix}/lib"
407 libexecdir
="\${prefix}/libexec"
408 includedir
="\${prefix}/include"
409 sysconfdir
="\${prefix}/etc"
410 local_statedir
="\${prefix}/var"
444 guest_agent_with_vss
="no"
445 guest_agent_ntddscsi
="no"
454 debug_stack_usage
="no"
458 glusterfs_xlator_opt
="no"
459 glusterfs_discard
="no"
460 glusterfs_fallocate
="no"
461 glusterfs_zerofill
="no"
462 glusterfs_ftruncate_has_stat
="no"
463 glusterfs_iocb_has_stat
="no"
466 tls_priority
="NORMAL"
476 live_block_migration
="yes"
495 default_devices
="yes"
497 # cross compilers defaults, can be overridden with --cross-cc-ARCH
498 cross_cc_aarch64
="aarch64-linux-gnu-gcc"
499 cross_cc_aarch64_be
="$cross_cc_aarch64"
500 cross_cc_cflags_aarch64_be
="-mbig-endian"
501 cross_cc_arm
="arm-linux-gnueabihf-gcc"
502 cross_cc_cflags_armeb
="-mbig-endian"
503 cross_cc_i386
="i386-pc-linux-gnu-gcc"
504 cross_cc_cflags_i386
=""
505 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
506 cross_cc_powerpc
="powerpc-linux-gnu-gcc"
508 enabled_cross_compilers
=""
515 # parse CC options first
517 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
519 --cross-prefix=*) cross_prefix
="$optarg"
523 --cxx=*) CXX
="$optarg"
525 --cpu=*) cpu
="$optarg"
527 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
529 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
531 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
532 EXTRA_LDFLAGS
="$optarg"
534 --enable-debug-info) debug_info
="yes"
536 --disable-debug-info) debug_info
="no"
538 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
540 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
541 eval "cross_cc_cflags_${cc_arch}=\$optarg"
543 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
544 eval "cross_cc_${cc_arch}=\$optarg"
549 # Using uname is really, really broken. Once we have the right set of checks
550 # we can eliminate its usage altogether.
552 # Preferred compiler:
554 # ${cross_prefix}gcc (if cross-prefix specified)
556 if test -z "${CC}${cross_prefix}"; then
559 cc
="${CC-${cross_prefix}gcc}"
562 if test -z "${CXX}${cross_prefix}"; then
565 cxx
="${CXX-${cross_prefix}g++}"
568 ar="${AR-${cross_prefix}ar}"
569 as
="${AS-${cross_prefix}as}"
572 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
573 ld
="${LD-${cross_prefix}ld}"
574 ranlib
="${RANLIB-${cross_prefix}ranlib}"
575 nm
="${NM-${cross_prefix}nm}"
576 strip
="${STRIP-${cross_prefix}strip}"
577 windres
="${WINDRES-${cross_prefix}windres}"
578 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
580 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
582 pkg_config
=query_pkg_config
583 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
585 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
586 ARFLAGS
="${ARFLAGS-rv}"
588 # default flags for all hosts
589 # We use -fwrapv to tell the compiler that we require a C dialect where
590 # left shift of signed integers is well defined and has the expected
591 # 2s-complement style results. (Both clang and gcc agree that it
592 # provides these semantics.)
593 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv -std=gnu99 $QEMU_CFLAGS"
594 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
595 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
596 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
597 QEMU_INCLUDES
="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
598 if test "$debug_info" = "yes"; then
600 LDFLAGS
="-g $LDFLAGS"
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"
950 --host-cc=*) host_cc
="$optarg"
954 --iasl=*) iasl
="$optarg"
956 --objcc=*) objcc
="$optarg"
958 --make=*) make="$optarg"
960 --install=*) install="$optarg"
962 --python=*) python
="$optarg"
964 --gcov=*) gcov_tool
="$optarg"
966 --smbd=*) smbd
="$optarg"
976 --disable-debug-info)
988 --target-list=*) target_list
="$optarg"
989 if test "$target_list_exclude"; then
990 error_exit
"Can't mix --target-list with --target-list-exclude"
993 --target-list-exclude=*) target_list_exclude
="$optarg"
994 if test "$target_list"; then
995 error_exit
"Can't mix --target-list-exclude with --target-list"
998 --enable-trace-backends=*) trace_backends
="$optarg"
1000 # XXX: backwards compatibility
1001 --enable-trace-backend=*) trace_backends
="$optarg"
1003 --with-trace-file=*) trace_file
="$optarg"
1005 --with-default-devices) default_devices
="yes"
1007 --without-default-devices) default_devices
="no"
1009 --enable-gprof) gprof
="yes"
1011 --enable-gcov) gcov
="yes"
1015 LDFLAGS
="-static $LDFLAGS"
1016 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
1018 --mandir=*) mandir
="$optarg"
1020 --bindir=*) bindir
="$optarg"
1022 --libdir=*) libdir
="$optarg"
1024 --libexecdir=*) libexecdir
="$optarg"
1026 --includedir=*) includedir
="$optarg"
1028 --datadir=*) datadir
="$optarg"
1030 --with-confsuffix=*) confsuffix
="$optarg"
1032 --docdir=*) qemu_docdir
="$optarg"
1034 --sysconfdir=*) sysconfdir
="$optarg"
1036 --localstatedir=*) local_statedir
="$optarg"
1038 --firmwarepath=*) firmwarepath
="$optarg"
1040 --host=*|
--build=*|\
1041 --disable-dependency-tracking|\
1042 --sbindir=*|
--sharedstatedir=*|\
1043 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
1044 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
1045 # These switches are silently ignored, for compatibility with
1046 # autoconf-generated configure scripts. This allows QEMU's
1047 # configure to be used by RPM and similar macros that set
1048 # lots of directory switches by default.
1050 --disable-sdl) sdl
="no"
1052 --enable-sdl) sdl
="yes"
1054 --disable-sdl-image) sdl_image
="no"
1056 --enable-sdl-image) sdl_image
="yes"
1058 --disable-qom-cast-debug) qom_cast_debug
="no"
1060 --enable-qom-cast-debug) qom_cast_debug
="yes"
1062 --disable-virtfs) virtfs
="no"
1064 --enable-virtfs) virtfs
="yes"
1066 --disable-mpath) mpath
="no"
1068 --enable-mpath) mpath
="yes"
1070 --disable-vnc) vnc
="no"
1072 --enable-vnc) vnc
="yes"
1074 --oss-lib=*) oss_lib
="$optarg"
1076 --audio-drv-list=*) audio_drv_list
="$optarg"
1078 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1080 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1082 --enable-debug-tcg) debug_tcg
="yes"
1084 --disable-debug-tcg) debug_tcg
="no"
1087 # Enable debugging options that aren't excessively noisy
1094 --enable-sanitizers) sanitizers
="yes"
1096 --disable-sanitizers) sanitizers
="no"
1098 --enable-sparse) sparse
="yes"
1100 --disable-sparse) sparse
="no"
1102 --disable-strip) strip_opt
="no"
1104 --disable-vnc-sasl) vnc_sasl
="no"
1106 --enable-vnc-sasl) vnc_sasl
="yes"
1108 --disable-vnc-jpeg) vnc_jpeg
="no"
1110 --enable-vnc-jpeg) vnc_jpeg
="yes"
1112 --disable-vnc-png) vnc_png
="no"
1114 --enable-vnc-png) vnc_png
="yes"
1116 --disable-slirp) slirp
="no"
1118 --enable-slirp=git
) slirp
="git"
1120 --enable-slirp=system
) slirp
="system"
1122 --disable-vde) vde
="no"
1124 --enable-vde) vde
="yes"
1126 --disable-netmap) netmap
="no"
1128 --enable-netmap) netmap
="yes"
1130 --disable-xen) xen
="no"
1132 --enable-xen) xen
="yes"
1134 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1136 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1138 --disable-brlapi) brlapi
="no"
1140 --enable-brlapi) brlapi
="yes"
1142 --disable-bluez) bluez
="no"
1144 --enable-bluez) bluez
="yes"
1146 --disable-kvm) kvm
="no"
1148 --enable-kvm) kvm
="yes"
1150 --disable-hax) hax
="no"
1152 --enable-hax) hax
="yes"
1154 --disable-hvf) hvf
="no"
1156 --enable-hvf) hvf
="yes"
1158 --disable-whpx) whpx
="no"
1160 --enable-whpx) whpx
="yes"
1162 --disable-tcg-interpreter) tcg_interpreter
="no"
1164 --enable-tcg-interpreter) tcg_interpreter
="yes"
1166 --disable-cap-ng) cap_ng
="no"
1168 --enable-cap-ng) cap_ng
="yes"
1170 --disable-tcg) tcg
="no"
1172 --enable-tcg) tcg
="yes"
1174 --disable-malloc-trim) malloc_trim
="no"
1176 --enable-malloc-trim) malloc_trim
="yes"
1178 --disable-spice) spice
="no"
1180 --enable-spice) spice
="yes"
1182 --disable-libiscsi) libiscsi
="no"
1184 --enable-libiscsi) libiscsi
="yes"
1186 --disable-libnfs) libnfs
="no"
1188 --enable-libnfs) libnfs
="yes"
1190 --enable-profiler) profiler
="yes"
1192 --disable-cocoa) cocoa
="no"
1196 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1198 --disable-system) softmmu
="no"
1200 --enable-system) softmmu
="yes"
1207 --disable-linux-user) linux_user
="no"
1209 --enable-linux-user) linux_user
="yes"
1211 --disable-bsd-user) bsd_user
="no"
1213 --enable-bsd-user) bsd_user
="yes"
1215 --enable-pie) pie
="yes"
1217 --disable-pie) pie
="no"
1219 --enable-werror) werror
="yes"
1221 --disable-werror) werror
="no"
1223 --enable-stack-protector) stack_protector
="yes"
1225 --disable-stack-protector) stack_protector
="no"
1227 --disable-curses) curses
="no"
1229 --enable-curses) curses
="yes"
1231 --disable-iconv) iconv="no"
1233 --enable-iconv) iconv="yes"
1235 --disable-curl) curl
="no"
1237 --enable-curl) curl
="yes"
1239 --disable-fdt) fdt
="no"
1241 --enable-fdt) fdt
="yes"
1243 --disable-linux-aio) linux_aio
="no"
1245 --enable-linux-aio) linux_aio
="yes"
1247 --disable-attr) attr
="no"
1249 --enable-attr) attr
="yes"
1251 --disable-membarrier) membarrier
="no"
1253 --enable-membarrier) membarrier
="yes"
1255 --disable-blobs) blobs
="no"
1257 --with-pkgversion=*) pkgversion
="$optarg"
1259 --with-coroutine=*) coroutine
="$optarg"
1261 --disable-coroutine-pool) coroutine_pool
="no"
1263 --enable-coroutine-pool) coroutine_pool
="yes"
1265 --enable-debug-stack-usage) debug_stack_usage
="yes"
1267 --enable-crypto-afalg) crypto_afalg
="yes"
1269 --disable-crypto-afalg) crypto_afalg
="no"
1271 --disable-docs) docs
="no"
1273 --enable-docs) docs
="yes"
1275 --disable-vhost-net) vhost_net
="no"
1277 --enable-vhost-net) vhost_net
="yes"
1279 --disable-vhost-crypto) vhost_crypto
="no"
1281 --enable-vhost-crypto) vhost_crypto
="yes"
1283 --disable-vhost-scsi) vhost_scsi
="no"
1285 --enable-vhost-scsi) vhost_scsi
="yes"
1287 --disable-vhost-vsock) vhost_vsock
="no"
1289 --enable-vhost-vsock) vhost_vsock
="yes"
1291 --disable-opengl) opengl
="no"
1293 --enable-opengl) opengl
="yes"
1295 --disable-rbd) rbd
="no"
1297 --enable-rbd) rbd
="yes"
1299 --disable-xfsctl) xfs
="no"
1301 --enable-xfsctl) xfs
="yes"
1303 --disable-smartcard) smartcard
="no"
1305 --enable-smartcard) smartcard
="yes"
1307 --disable-libusb) libusb
="no"
1309 --enable-libusb) libusb
="yes"
1311 --disable-usb-redir) usb_redir
="no"
1313 --enable-usb-redir) usb_redir
="yes"
1315 --disable-zlib-test) zlib
="no"
1317 --disable-lzo) lzo
="no"
1319 --enable-lzo) lzo
="yes"
1321 --disable-snappy) snappy
="no"
1323 --enable-snappy) snappy
="yes"
1325 --disable-bzip2) bzip2="no"
1327 --enable-bzip2) bzip2="yes"
1329 --enable-lzfse) lzfse
="yes"
1331 --disable-lzfse) lzfse
="no"
1333 --enable-guest-agent) guest_agent
="yes"
1335 --disable-guest-agent) guest_agent
="no"
1337 --enable-guest-agent-msi) guest_agent_msi
="yes"
1339 --disable-guest-agent-msi) guest_agent_msi
="no"
1341 --with-vss-sdk) vss_win32_sdk
=""
1343 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1345 --without-vss-sdk) vss_win32_sdk
="no"
1347 --with-win-sdk) win_sdk
=""
1349 --with-win-sdk=*) win_sdk
="$optarg"
1351 --without-win-sdk) win_sdk
="no"
1353 --enable-tools) want_tools
="yes"
1355 --disable-tools) want_tools
="no"
1357 --enable-seccomp) seccomp
="yes"
1359 --disable-seccomp) seccomp
="no"
1361 --disable-glusterfs) glusterfs
="no"
1363 --disable-avx2) avx2_opt
="no"
1365 --enable-avx2) avx2_opt
="yes"
1367 --enable-glusterfs) glusterfs
="yes"
1369 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1370 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1372 --enable-vhdx|
--disable-vhdx)
1373 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1375 --enable-uuid|
--disable-uuid)
1376 echo "$0: $opt is obsolete, UUID support is always built" >&2
1378 --disable-gtk) gtk
="no"
1380 --enable-gtk) gtk
="yes"
1382 --tls-priority=*) tls_priority
="$optarg"
1384 --disable-gnutls) gnutls
="no"
1386 --enable-gnutls) gnutls
="yes"
1388 --disable-nettle) nettle
="no"
1390 --enable-nettle) nettle
="yes"
1392 --disable-gcrypt) gcrypt
="no"
1394 --enable-gcrypt) gcrypt
="yes"
1396 --disable-auth-pam) auth_pam
="no"
1398 --enable-auth-pam) auth_pam
="yes"
1400 --enable-rdma) rdma
="yes"
1402 --disable-rdma) rdma
="no"
1404 --enable-pvrdma) pvrdma
="yes"
1406 --disable-pvrdma) pvrdma
="no"
1408 --disable-vte) vte
="no"
1410 --enable-vte) vte
="yes"
1412 --disable-virglrenderer) virglrenderer
="no"
1414 --enable-virglrenderer) virglrenderer
="yes"
1416 --disable-tpm) tpm
="no"
1418 --enable-tpm) tpm
="yes"
1420 --disable-libssh2) libssh2
="no"
1422 --enable-libssh2) libssh2
="yes"
1424 --disable-live-block-migration) live_block_migration
="no"
1426 --enable-live-block-migration) live_block_migration
="yes"
1428 --disable-numa) numa
="no"
1430 --enable-numa) numa
="yes"
1432 --disable-libxml2) libxml2
="no"
1434 --enable-libxml2) libxml2
="yes"
1436 --disable-tcmalloc) tcmalloc
="no"
1438 --enable-tcmalloc) tcmalloc
="yes"
1440 --disable-jemalloc) jemalloc
="no"
1442 --enable-jemalloc) jemalloc
="yes"
1444 --disable-replication) replication
="no"
1446 --enable-replication) replication
="yes"
1448 --disable-vxhs) vxhs
="no"
1450 --enable-vxhs) vxhs
="yes"
1452 --disable-bochs) bochs
="no"
1454 --enable-bochs) bochs
="yes"
1456 --disable-cloop) cloop
="no"
1458 --enable-cloop) cloop
="yes"
1460 --disable-dmg) dmg
="no"
1462 --enable-dmg) dmg
="yes"
1464 --disable-qcow1) qcow1
="no"
1466 --enable-qcow1) qcow1
="yes"
1468 --disable-vdi) vdi
="no"
1470 --enable-vdi) vdi
="yes"
1472 --disable-vvfat) vvfat
="no"
1474 --enable-vvfat) vvfat
="yes"
1476 --disable-qed) qed
="no"
1478 --enable-qed) qed
="yes"
1480 --disable-parallels) parallels
="no"
1482 --enable-parallels) parallels
="yes"
1484 --disable-sheepdog) sheepdog
="no"
1486 --enable-sheepdog) sheepdog
="yes"
1488 --disable-vhost-user) vhost_user
="no"
1490 --enable-vhost-user) vhost_user
="yes"
1492 --disable-vhost-kernel) vhost_kernel
="no"
1494 --enable-vhost-kernel) vhost_kernel
="yes"
1496 --disable-capstone) capstone
="no"
1498 --enable-capstone) capstone
="yes"
1500 --enable-capstone=git
) capstone
="git"
1502 --enable-capstone=system
) capstone
="system"
1504 --with-git=*) git
="$optarg"
1506 --enable-git-update) git_update
=yes
1508 --disable-git-update) git_update
=no
1510 --enable-debug-mutex) debug_mutex
=yes
1512 --disable-debug-mutex) debug_mutex
=no
1514 --enable-libpmem) libpmem
=yes
1516 --disable-libpmem) libpmem
=no
1519 echo "ERROR: unknown option $opt"
1520 echo "Try '$0 --help' for more information"
1529 LDFLAGS
="-m32 $LDFLAGS"
1530 cross_cc_powerpc
=$cc
1531 cross_cc_cflags_powerpc
=$CPU_CFLAGS
1535 LDFLAGS
="-m64 $LDFLAGS"
1537 cross_cc_cflags_ppc64
=$CPU_CFLAGS
1540 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1541 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1543 cross_cc_cflags_sparc
=$CPU_CFLAGS
1546 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1547 LDFLAGS
="-m64 $LDFLAGS"
1548 cross_cc_sparc64
=$cc
1549 cross_cc_cflags_sparc64
=$CPU_CFLAGS
1553 LDFLAGS
="-m31 $LDFLAGS"
1555 cross_cc_cflags_s390
=$CPU_CFLAGS
1559 LDFLAGS
="-m64 $LDFLAGS"
1561 cross_cc_cflags_s390x
=$CPU_CFLAGS
1565 LDFLAGS
="-m32 $LDFLAGS"
1567 cross_cc_cflags_i386
=$CPU_CFLAGS
1570 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1571 # If we truly care, we should simply detect this case at
1572 # runtime and generate the fallback to serial emulation.
1573 CPU_CFLAGS
="-m64 -mcx16"
1574 LDFLAGS
="-m64 $LDFLAGS"
1576 cross_cc_cflags_x86_64
=$CPU_CFLAGS
1580 LDFLAGS
="-mx32 $LDFLAGS"
1582 cross_cc_cflags_i386
=$CPU_CFLAGS
1584 # No special flags required for other host CPUs
1587 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1589 # For user-mode emulation the host arch has to be one we explicitly
1590 # support, even if we're using TCI.
1591 if [ "$ARCH" = "unknown" ]; then
1596 default_target_list
=""
1600 if [ "$softmmu" = "yes" ]; then
1601 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1603 if [ "$linux_user" = "yes" ]; then
1604 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1606 if [ "$bsd_user" = "yes" ]; then
1607 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1610 if test -z "$target_list_exclude"; then
1611 for config
in $mak_wilds; do
1612 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1615 exclude_list
=$
(echo "$target_list_exclude" |
sed -e 's/,/ /g')
1616 for config
in $mak_wilds; do
1617 target
="$(basename "$config" .mak)"
1619 for excl
in $exclude_list; do
1620 if test "$excl" = "$target"; then
1625 if test "$exclude" = "no"; then
1626 default_target_list
="${default_target_list} $target"
1631 # Enumerate public trace backends for --help output
1632 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1634 if test x
"$show_help" = x
"yes" ; then
1637 Usage: configure [options]
1638 Options: [defaults in brackets after descriptions]
1641 --help print this message
1642 --prefix=PREFIX install in PREFIX [$prefix]
1643 --interp-prefix=PREFIX where to find shared libraries, etc.
1644 use %M for cpu name [$interp_prefix]
1645 --target-list=LIST set target list (default: build everything)
1646 $(echo Available targets: $default_target_list | \
1647 fold -s -w 53 | sed -e 's/^/ /')
1648 --target-list-exclude=LIST exclude a set of targets from the default target-list
1650 Advanced options (experts only):
1651 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1652 --cc=CC use C compiler CC [$cc]
1653 --iasl=IASL use ACPI compiler IASL [$iasl]
1654 --host-cc=CC use C compiler CC [$host_cc] for code run at
1656 --cxx=CXX use C++ compiler CXX [$cxx]
1657 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1658 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1659 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1660 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1661 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1662 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1663 --make=MAKE use specified make [$make]
1664 --install=INSTALL use specified install [$install]
1665 --python=PYTHON use specified python [$python]
1666 --smbd=SMBD use specified smbd [$smbd]
1667 --with-git=GIT use specified git [$git]
1668 --static enable static build [$static]
1669 --mandir=PATH install man pages in PATH
1670 --datadir=PATH install firmware in PATH$confsuffix
1671 --docdir=PATH install documentation in PATH$confsuffix
1672 --bindir=PATH install binaries in PATH
1673 --libdir=PATH install libraries in PATH
1674 --libexecdir=PATH install helper binaries in PATH
1675 --sysconfdir=PATH install config in PATH$confsuffix
1676 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1677 --firmwarepath=PATH search PATH for firmware files
1678 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1679 --with-pkgversion=VERS use specified string as sub-version of the package
1680 --enable-debug enable common debug build options
1681 --enable-sanitizers enable default sanitizers
1682 --disable-strip disable stripping binaries
1683 --disable-werror disable compilation abort on warning
1684 --disable-stack-protector disable compiler-provided stack protection
1685 --audio-drv-list=LIST set audio drivers list:
1686 Available drivers: $audio_possible_drivers
1687 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1688 --block-drv-rw-whitelist=L
1689 set block driver read-write whitelist
1690 (affects only QEMU, not qemu-img)
1691 --block-drv-ro-whitelist=L
1692 set block driver read-only whitelist
1693 (affects only QEMU, not qemu-img)
1694 --enable-trace-backends=B Set trace backend
1695 Available backends: $trace_backend_list
1696 --with-trace-file=NAME Full PATH,NAME of file to store traces
1698 --disable-slirp disable SLIRP userspace network connectivity
1699 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1700 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1701 --oss-lib path to OSS library
1702 --cpu=CPU Build for host CPU [$cpu]
1703 --with-coroutine=BACKEND coroutine backend. Supported options:
1704 ucontext, sigaltstack, windows
1705 --enable-gcov enable test coverage analysis with gcov
1706 --gcov=GCOV use specified gcov [$gcov_tool]
1707 --disable-blobs disable installing provided firmware blobs
1708 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1709 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1710 --tls-priority default TLS protocol/cipher priority string
1711 --enable-gprof QEMU profiling with gprof
1712 --enable-profiler profiler support
1713 --enable-debug-stack-usage
1714 track the maximum stack usage of stacks created by qemu_alloc_stack
1716 Optional features, enabled with --enable-FEATURE and
1717 disabled with --disable-FEATURE, default is enabled if available:
1719 system all system emulation targets
1720 user supported user emulation targets
1721 linux-user all linux usermode emulation targets
1722 bsd-user all BSD usermode emulation targets
1723 docs build documentation
1724 guest-agent build the QEMU Guest Agent
1725 guest-agent-msi build guest agent Windows MSI installation package
1726 pie Position Independent Executables
1727 modules modules support
1728 debug-tcg TCG debugging (default is disabled)
1729 debug-info debugging information
1730 sparse sparse checker
1732 gnutls GNUTLS cryptography support
1733 nettle nettle cryptography support
1734 gcrypt libgcrypt cryptography support
1735 auth-pam PAM access control
1737 sdl_image SDL Image support for icons
1739 vte vte support for the gtk UI
1741 iconv font glyph conversion support
1743 vnc-sasl SASL encryption for VNC server
1744 vnc-jpeg JPEG lossy compression for VNC server
1745 vnc-png PNG compression for VNC server
1746 cocoa Cocoa UI (Mac OS X only)
1748 mpath Multipath persistent reservation passthrough
1749 xen xen backend driver support
1750 xen-pci-passthrough PCI passthrough support for Xen
1751 brlapi BrlAPI (Braile)
1752 curl curl connectivity
1753 membarrier membarrier system call (for Linux 4.14+ or Windows)
1755 bluez bluez stack connectivity
1756 kvm KVM acceleration support
1757 hax HAX acceleration support
1758 hvf Hypervisor.framework acceleration support
1759 whpx Windows Hypervisor Platform acceleration support
1760 rdma Enable RDMA-based migration
1761 pvrdma Enable PVRDMA support
1762 vde support for vde network
1763 netmap support for netmap network
1764 linux-aio Linux AIO support
1765 cap-ng libcap-ng support
1766 attr attr and xattr support
1767 vhost-net vhost-net kernel acceleration support
1768 vhost-vsock virtio sockets device support
1769 vhost-scsi vhost-scsi kernel target support
1770 vhost-crypto vhost-user-crypto backend support
1771 vhost-kernel vhost kernel backend support
1772 vhost-user vhost-user backend support
1774 rbd rados block device (rbd)
1775 libiscsi iscsi support
1777 smartcard smartcard support (libcacard)
1778 libusb libusb (for usb passthrough)
1779 live-block-migration Block migration in the main migration stream
1780 usb-redir usb network redirection support
1781 lzo support of lzo compression library
1782 snappy support of snappy compression library
1783 bzip2 support of bzip2 compression library
1784 (for reading bzip2-compressed dmg images)
1785 lzfse support of lzfse compression library
1786 (for reading lzfse-compressed dmg images)
1787 seccomp seccomp support
1788 coroutine-pool coroutine freelist (better performance)
1789 glusterfs GlusterFS backend
1791 libssh2 ssh block device support
1792 numa libnuma support
1793 libxml2 for Parallels image format
1794 tcmalloc tcmalloc support
1795 jemalloc jemalloc support
1796 avx2 AVX2 optimization support
1797 replication replication support
1798 opengl opengl support
1799 virglrenderer virgl rendering support
1800 xfsctl xfsctl support
1801 qom-cast-debug cast debugging support
1802 tools build qemu-io, qemu-nbd and qemu-img tools
1803 vxhs Veritas HyperScale vDisk backend support
1804 bochs bochs image format support
1805 cloop cloop image format support
1806 dmg dmg image format support
1807 qcow1 qcow v1 image format support
1808 vdi vdi image format support
1809 vvfat vvfat image format support
1810 qed qed image format support
1811 parallels parallels image format support
1812 sheepdog sheepdog block driver support
1813 crypto-afalg Linux AF_ALG crypto backend driver
1814 capstone capstone disassembler support
1815 debug-mutex mutex debugging support
1816 libpmem libpmem support
1818 NOTE: The object files are built at the place where configure is launched
1823 if ! has
$python; then
1824 error_exit
"Python not found. Use --python=/path/to/python"
1827 # Note that if the Python conditional here evaluates True we will exit
1828 # with status 1 which is a shell 'false' value.
1829 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then
1830 error_exit
"Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \
1831 "Use --python=/path/to/python to specify a supported Python."
1834 # Preserve python version since some functionality is dependent on it
1835 python_version
=$
($python -V 2>&1 |
sed -e 's/Python\ //')
1837 # Suppress writing compiled files
1840 # Check that the C compiler works. Doing this here before testing
1841 # the host CPU ensures that we had a valid CC to autodetect the
1842 # $cpu var (and we should bail right here if that's not the case).
1843 # It also allows the help message to be printed without a CC.
1845 if compile_object
; then
1846 : C compiler works ok
1848 error_exit
"\"$cc\" either does not exist or does not work"
1850 if ! compile_prog
; then
1851 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1854 # Now we have handled --enable-tcg-interpreter and know we're not just
1855 # printing the help message, bail out if the host CPU isn't supported.
1856 if test "$ARCH" = "unknown"; then
1857 if test "$tcg_interpreter" = "yes" ; then
1858 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1860 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1864 # Consult white-list to determine whether to enable werror
1865 # by default. Only enable by default for git builds
1866 if test -z "$werror" ; then
1867 if test -e "$source_path/.git" && \
1868 { test "$linux" = "yes" ||
test "$mingw32" = "yes"; }; then
1875 if test "$bogus_os" = "yes"; then
1876 # Now that we know that we're not printing the help and that
1877 # the compiler works (so the results of the check_defines we used
1878 # to identify the OS are reliable), if we didn't recognize the
1879 # host OS we should stop now.
1880 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1883 # Check whether the compiler matches our minimum requirements:
1885 #if defined(__clang_major__) && defined(__clang_minor__)
1886 # ifdef __apple_build_version__
1887 # if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1)
1888 # error You need at least XCode Clang v5.1 to compile QEMU
1891 # if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
1892 # error You need at least Clang v3.4 to compile QEMU
1895 #elif defined(__GNUC__) && defined(__GNUC_MINOR__)
1896 # if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
1897 # error You need at least GCC v4.8 to compile QEMU
1900 # error You either need GCC or Clang to compiler QEMU
1902 int main (void) { return 0; }
1904 if ! compile_prog
"" "" ; then
1905 error_exit
"You need at least GCC v4.8 or Clang v3.4 (or XCode Clang v5.1)"
1908 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1909 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1910 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1911 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1912 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1913 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1914 # Note that we do not add -Werror to gcc_flags here, because that would
1915 # enable it for all configure tests. If a configure test failed due
1916 # to -Werror this would just silently disable some features,
1917 # so it's too error prone.
1919 cc_has_warning_flag
() {
1922 # Use the positive sense of the flag when testing for -Wno-wombat
1923 # support (gcc will happily accept the -Wno- form of unknown
1925 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1926 compile_prog
"-Werror $optflag" ""
1929 for flag
in $gcc_flags; do
1930 if cc_has_warning_flag
$flag ; then
1931 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1935 if test "$stack_protector" != "no"; then
1937 int main(int argc, char *argv[])
1939 char arr[64], *p = arr, *c = argv[0];
1946 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1948 for flag
in $gcc_flags; do
1949 # We need to check both a compile and a link, since some compiler
1950 # setups fail only on a .c->.o compile and some only at link time
1951 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1952 compile_prog
"-Werror $flag" ""; then
1953 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1958 if test "$stack_protector" = yes; then
1959 if test $sp_on = 0; then
1960 error_exit
"Stack protector not supported"
1965 # Disable -Wmissing-braces on older compilers that warn even for
1966 # the "universal" C zero initializer {0}.
1972 if compile_object
"-Werror" "" ; then
1975 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1978 # Static linking is not possible with modules or PIE
1979 if test "$static" = "yes" ; then
1980 if test "$modules" = "yes" ; then
1981 error_exit
"static and modules are mutually incompatible"
1983 if test "$pie" = "yes" ; then
1984 error_exit
"static and pie are mutually incompatible"
1990 # Unconditional check for compiler __thread support
1992 static __thread int tls_var;
1993 int main(void) { return tls_var; }
1996 if ! compile_prog
"-Werror" "" ; then
1997 error_exit
"Your compiler does not support the __thread specifier for " \
1998 "Thread-Local Storage (TLS). Please upgrade to a version that does."
2001 if test "$pie" = ""; then
2002 case "$cpu-$targetos" in
2003 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
2011 if test "$pie" != "no" ; then
2015 # define THREAD __thread
2020 static THREAD int tls_var;
2022 int main(void) { return tls_var; }
2025 if compile_prog
"-fPIE -DPIE" "-pie"; then
2026 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
2027 LDFLAGS
="-pie $LDFLAGS"
2029 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
2030 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
2033 if test "$pie" = "yes"; then
2034 error_exit
"PIE not available due to missing toolchain support"
2036 echo "Disabling PIE due to missing toolchain support"
2041 if compile_prog
"-Werror -fno-pie" "-nopie"; then
2042 CFLAGS_NOPIE
="-fno-pie"
2043 LDFLAGS_NOPIE
="-nopie"
2047 ##########################################
2048 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
2049 # use i686 as default anyway, but for those that don't, an explicit
2050 # specification is necessary
2052 if test "$cpu" = "i386"; then
2054 static int sfaa(int *ptr)
2056 return __sync_fetch_and_and(ptr, 0);
2062 val = __sync_val_compare_and_swap(&val, 0, 1);
2067 if ! compile_prog
"" "" ; then
2068 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
2072 #########################################
2073 # Solaris specific configure tool chain decisions
2075 if test "$solaris" = "yes" ; then
2076 if has
$install; then
2079 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
2080 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
2081 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
2083 if test "$(path_of $install)" = "/usr/sbin/install" ; then
2084 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
2085 "try ginstall from the GNU fileutils available from www.blastwave.org" \
2086 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
2091 if test -f /usr
/ccs
/bin
/ar ; then
2092 error_exit
"No path includes ar" \
2093 "Add /usr/ccs/bin to your path and rerun configure"
2095 error_exit
"No path includes ar"
2099 if test -z "${target_list+xxx}" ; then
2100 for target
in $default_target_list; do
2101 supported_target
$target 2>/dev
/null
&& \
2102 target_list
="$target_list $target"
2104 target_list
="${target_list# }"
2106 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
2107 for target
in $target_list; do
2108 # Check that we recognised the target name; this allows a more
2109 # friendly error message than if we let it fall through.
2110 case " $default_target_list " in
2114 error_exit
"Unknown target name '$target'"
2117 supported_target
$target ||
exit 1
2121 # see if system emulation was really requested
2122 case " $target_list " in
2123 *"-softmmu "*) softmmu
=yes
2129 feature_not_found
() {
2133 error_exit
"User requested feature $feature" \
2134 "configure was not able to find it." \
2139 # big/little endian test
2141 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2142 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2143 extern int foo(short *, short *);
2144 int main(int argc, char *argv[]) {
2145 return foo(big_endian, little_endian);
2149 if compile_object
; then
2150 if strings -a $TMPO |
grep -q BiGeNdIaN
; then
2152 elif strings -a $TMPO |
grep -q LiTtLeEnDiAn
; then
2155 echo big
/little
test failed
2158 echo big
/little
test failed
2161 ##########################################
2162 # cocoa implies not SDL or GTK
2163 # (the cocoa UI code currently assumes it is always the active UI
2164 # and doesn't interact well with other UI frontend code)
2165 if test "$cocoa" = "yes"; then
2166 if test "$sdl" = "yes"; then
2167 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
2169 if test "$gtk" = "yes"; then
2170 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
2176 # Some versions of Mac OS X incorrectly define SIZE_MAX
2180 int main(int argc, char *argv[]) {
2181 return printf("%zu", SIZE_MAX);
2184 have_broken_size_max
=no
2185 if ! compile_object
-Werror ; then
2186 have_broken_size_max
=yes
2189 ##########################################
2193 #include <sys/socket.h>
2194 #include <linux/ip.h>
2195 int main(void) { return sizeof(struct mmsghdr); }
2197 if compile_prog
"" "" ; then
2203 #########################################
2204 # vhost interdependencies and host support
2207 test "$vhost_user" = "" && vhost_user
=yes
2208 if test "$vhost_user" = "yes" && test "$mingw32" = "yes"; then
2209 error_exit
"vhost-user isn't available on win32"
2211 test "$vhost_kernel" = "" && vhost_kernel
=$linux
2212 if test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then
2213 error_exit
"vhost-kernel is only available on Linux"
2216 # vhost-kernel devices
2217 test "$vhost_scsi" = "" && vhost_scsi
=$vhost_kernel
2218 if test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then
2219 error_exit
"--enable-vhost-scsi requires --enable-vhost-kernel"
2221 test "$vhost_vsock" = "" && vhost_vsock
=$vhost_kernel
2222 if test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then
2223 error_exit
"--enable-vhost-vsock requires --enable-vhost-kernel"
2226 # vhost-user backends
2227 test "$vhost_net_user" = "" && vhost_net_user
=$vhost_user
2228 if test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then
2229 error_exit
"--enable-vhost-net-user requires --enable-vhost-user"
2231 test "$vhost_crypto" = "" && vhost_crypto
=$vhost_user
2232 if test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then
2233 error_exit
"--enable-vhost-crypto requires --enable-vhost-user"
2236 # OR the vhost-kernel and vhost-user values for simplicity
2237 if test "$vhost_net" = ""; then
2238 test "$vhost_net_user" = "yes" && vhost_net
=yes
2239 test "$vhost_kernel" = "yes" && vhost_net
=yes
2242 ##########################################
2243 # MinGW / Mingw-w64 localtime_r/gmtime_r check
2245 if test "$mingw32" = "yes"; then
2246 # Some versions of MinGW / Mingw-w64 lack localtime_r
2247 # and gmtime_r entirely.
2249 # Some versions of Mingw-w64 define a macro for
2250 # localtime_r/gmtime_r.
2252 # Some versions of Mingw-w64 will define functions
2253 # for localtime_r/gmtime_r, but only if you have
2254 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2255 # though, unistd.h and pthread.h both define
2258 # So this #undef localtime_r and #include <unistd.h>
2259 # are not in fact redundant.
2264 int main(void) { localtime_r(NULL, NULL); return 0; }
2266 if compile_prog
"" "" ; then
2273 ##########################################
2276 if ! has
"$pkg_config_exe"; then
2277 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2280 ##########################################
2283 if test "$linux_user" = "yes"; then
2286 #include <linux/futex.h>
2288 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2294 if ! compile_object
; then
2295 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2299 ##########################################
2302 if test "$lzo" != "no" ; then
2304 #include <lzo/lzo1x.h>
2305 int main(void) { lzo_version(); return 0; }
2307 if compile_prog
"" "-llzo2" ; then
2308 libs_softmmu
="$libs_softmmu -llzo2"
2311 if test "$lzo" = "yes"; then
2312 feature_not_found
"liblzo2" "Install liblzo2 devel"
2318 ##########################################
2321 if test "$snappy" != "no" ; then
2323 #include <snappy-c.h>
2324 int main(void) { snappy_max_compressed_length(4096); return 0; }
2326 if compile_prog
"" "-lsnappy" ; then
2327 libs_softmmu
="$libs_softmmu -lsnappy"
2330 if test "$snappy" = "yes"; then
2331 feature_not_found
"libsnappy" "Install libsnappy devel"
2337 ##########################################
2340 if test "$bzip2" != "no" ; then
2343 int main(void) { BZ2_bzlibVersion(); return 0; }
2345 if compile_prog
"" "-lbz2" ; then
2348 if test "$bzip2" = "yes"; then
2349 feature_not_found
"libbzip2" "Install libbzip2 devel"
2355 ##########################################
2358 if test "$lzfse" != "no" ; then
2361 int main(void) { lzfse_decode_scratch_size(); return 0; }
2363 if compile_prog
"" "-llzfse" ; then
2366 if test "$lzfse" = "yes"; then
2367 feature_not_found
"lzfse" "Install lzfse devel"
2373 ##########################################
2376 libseccomp_minver
="2.2.0"
2377 if test "$seccomp" != "no" ; then
2382 libseccomp_minver
="2.2.3"
2385 libseccomp_minver
="2.3.0"
2388 libseccomp_minver
=""
2392 if test "$libseccomp_minver" != "" &&
2393 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2394 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2395 seccomp_libs
="$($pkg_config --libs libseccomp)"
2398 if test "$seccomp" = "yes" ; then
2399 if test "$libseccomp_minver" != "" ; then
2400 feature_not_found
"libseccomp" \
2401 "Install libseccomp devel >= $libseccomp_minver"
2403 feature_not_found
"libseccomp" \
2404 "libseccomp is not supported for host cpu $cpu"
2410 ##########################################
2413 if test "$xen" != "no" ; then
2414 # Check whether Xen library path is specified via --extra-ldflags to avoid
2415 # overriding this setting with pkg-config output. If not, try pkg-config
2416 # to obtain all needed flags.
2418 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2419 $pkg_config --exists xencontrol
; then
2420 xen_ctrl_version
="$(printf '%d%02d%02d' \
2421 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2423 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2424 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2425 if $pkg_config --exists xentoolcore
; then
2426 xen_pc
="$xen_pc xentoolcore"
2428 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2429 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2432 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2433 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2435 # First we test whether Xen headers and libraries are available.
2436 # If no, we are done and there is no Xen support.
2437 # If yes, more tests are run to detect the Xen version.
2441 #include <xenctrl.h>
2446 if ! compile_prog
"" "$xen_libs" ; then
2448 if test "$xen" = "yes" ; then
2449 feature_not_found
"xen" "Install xen devel"
2455 cat > $TMPC <<EOF &&
2456 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2457 #define __XEN_TOOLS__
2458 #include <xendevicemodel.h>
2459 #include <xenforeignmemory.h>
2461 xendevicemodel_handle *xd;
2462 xenforeignmemory_handle *xfmem;
2464 xd = xendevicemodel_open(0, 0);
2465 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2467 xfmem = xenforeignmemory_open(0, 0);
2468 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2473 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2475 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2476 xen_ctrl_version
=41100
2479 cat > $TMPC <<EOF &&
2480 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2481 #include <xenforeignmemory.h>
2482 #include <xentoolcore.h>
2484 xenforeignmemory_handle *xfmem;
2486 xfmem = xenforeignmemory_open(0, 0);
2487 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2488 xentoolcore_restrict_all(0);
2493 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2495 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2496 xen_ctrl_version
=41000
2499 cat > $TMPC <<EOF &&
2500 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2501 #define __XEN_TOOLS__
2502 #include <xendevicemodel.h>
2504 xendevicemodel_handle *xd;
2506 xd = xendevicemodel_open(0, 0);
2507 xendevicemodel_close(xd);
2512 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2514 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2515 xen_ctrl_version
=40900
2518 cat > $TMPC <<EOF &&
2520 * If we have stable libs the we don't want the libxc compat
2521 * layers, regardless of what CFLAGS we may have been given.
2523 * Also, check if xengnttab_grant_copy_segment_t is defined and
2524 * grant copy operation is implemented.
2526 #undef XC_WANT_COMPAT_EVTCHN_API
2527 #undef XC_WANT_COMPAT_GNTTAB_API
2528 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2529 #include <xenctrl.h>
2530 #include <xenstore.h>
2531 #include <xenevtchn.h>
2532 #include <xengnttab.h>
2533 #include <xenforeignmemory.h>
2535 #include <xen/hvm/hvm_info_table.h>
2536 #if !defined(HVM_MAX_VCPUS)
2537 # error HVM_MAX_VCPUS not defined
2540 xc_interface *xc = NULL;
2541 xenforeignmemory_handle *xfmem;
2542 xenevtchn_handle *xe;
2543 xengnttab_handle *xg;
2544 xengnttab_grant_copy_segment_t* seg = NULL;
2548 xc = xc_interface_open(0, 0, 0);
2549 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2550 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2551 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2552 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2554 xfmem = xenforeignmemory_open(0, 0);
2555 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2557 xe = xenevtchn_open(0, 0);
2560 xg = xengnttab_open(0, 0);
2561 xengnttab_grant_copy(xg, 0, seg);
2566 compile_prog
"" "$xen_libs $xen_stable_libs"
2568 xen_ctrl_version
=40800
2571 cat > $TMPC <<EOF &&
2573 * If we have stable libs the we don't want the libxc compat
2574 * layers, regardless of what CFLAGS we may have been given.
2576 #undef XC_WANT_COMPAT_EVTCHN_API
2577 #undef XC_WANT_COMPAT_GNTTAB_API
2578 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2579 #include <xenctrl.h>
2580 #include <xenstore.h>
2581 #include <xenevtchn.h>
2582 #include <xengnttab.h>
2583 #include <xenforeignmemory.h>
2585 #include <xen/hvm/hvm_info_table.h>
2586 #if !defined(HVM_MAX_VCPUS)
2587 # error HVM_MAX_VCPUS not defined
2590 xc_interface *xc = NULL;
2591 xenforeignmemory_handle *xfmem;
2592 xenevtchn_handle *xe;
2593 xengnttab_handle *xg;
2597 xc = xc_interface_open(0, 0, 0);
2598 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2599 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2600 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2601 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2603 xfmem = xenforeignmemory_open(0, 0);
2604 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2606 xe = xenevtchn_open(0, 0);
2609 xg = xengnttab_open(0, 0);
2610 xengnttab_map_grant_ref(xg, 0, 0, 0);
2615 compile_prog
"" "$xen_libs $xen_stable_libs"
2617 xen_ctrl_version
=40701
2622 cat > $TMPC <<EOF &&
2623 #include <xenctrl.h>
2624 #include <xenstore.h>
2626 #include <xen/hvm/hvm_info_table.h>
2627 #if !defined(HVM_MAX_VCPUS)
2628 # error HVM_MAX_VCPUS not defined
2633 xc = xc_interface_open(0, 0, 0);
2634 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2635 xc_gnttab_open(NULL, 0);
2636 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2637 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2638 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2639 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2643 compile_prog
"" "$xen_libs"
2645 xen_ctrl_version
=40600
2650 cat > $TMPC <<EOF &&
2651 #include <xenctrl.h>
2652 #include <xenstore.h>
2654 #include <xen/hvm/hvm_info_table.h>
2655 #if !defined(HVM_MAX_VCPUS)
2656 # error HVM_MAX_VCPUS not defined
2661 xc = xc_interface_open(0, 0, 0);
2662 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2663 xc_gnttab_open(NULL, 0);
2664 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2665 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2666 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2670 compile_prog
"" "$xen_libs"
2672 xen_ctrl_version
=40500
2676 cat > $TMPC <<EOF &&
2677 #include <xenctrl.h>
2678 #include <xenstore.h>
2680 #include <xen/hvm/hvm_info_table.h>
2681 #if !defined(HVM_MAX_VCPUS)
2682 # error HVM_MAX_VCPUS not defined
2687 xc = xc_interface_open(0, 0, 0);
2688 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2689 xc_gnttab_open(NULL, 0);
2690 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2691 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2695 compile_prog
"" "$xen_libs"
2697 xen_ctrl_version
=40200
2701 if test "$xen" = "yes" ; then
2702 feature_not_found
"xen (unsupported version)" \
2703 "Install a supported xen (xen 4.2 or newer)"
2708 if test "$xen" = yes; then
2709 if test $xen_ctrl_version -ge 40701 ; then
2710 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2712 libs_softmmu
="$xen_libs $libs_softmmu"
2717 if test "$xen_pci_passthrough" != "no"; then
2718 if test "$xen" = "yes" && test "$linux" = "yes"; then
2719 xen_pci_passthrough
=yes
2721 if test "$xen_pci_passthrough" = "yes"; then
2722 error_exit
"User requested feature Xen PCI Passthrough" \
2723 " but this feature requires /sys from Linux"
2725 xen_pci_passthrough
=no
2729 ##########################################
2730 # Windows Hypervisor Platform accelerator (WHPX) check
2731 if test "$whpx" != "no" ; then
2732 if check_include
"WinHvPlatform.h" && check_include
"WinHvEmulation.h"; then
2735 if test "$whpx" = "yes"; then
2736 feature_not_found
"WinHvPlatform" "WinHvEmulation is not installed"
2742 ##########################################
2744 if test "$sparse" != "no" ; then
2748 if test "$sparse" = "yes" ; then
2749 feature_not_found
"sparse" "Install sparse binary"
2755 ##########################################
2757 if $pkg_config --exists "x11"; then
2759 x11_cflags
=$
($pkg_config --cflags x11
)
2760 x11_libs
=$
($pkg_config --libs x11
)
2763 ##########################################
2766 if test "$gtk" != "no"; then
2767 gtkpackage
="gtk+-3.0"
2768 gtkx11package
="gtk+-x11-3.0"
2770 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2771 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2772 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2773 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2774 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2776 gtk_cflags
="$gtk_cflags $x11_cflags"
2777 gtk_libs
="$gtk_libs $x11_libs"
2780 elif test "$gtk" = "yes"; then
2781 feature_not_found
"gtk" "Install gtk3-devel"
2788 ##########################################
2791 if test "$gnutls" != "no"; then
2792 if $pkg_config --exists "gnutls >= 3.1.18"; then
2793 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2794 gnutls_libs
=$
($pkg_config --libs gnutls
)
2795 libs_softmmu
="$gnutls_libs $libs_softmmu"
2796 libs_tools
="$gnutls_libs $libs_tools"
2797 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2799 elif test "$gnutls" = "yes"; then
2800 feature_not_found
"gnutls" "Install gnutls devel >= 3.1.18"
2807 # If user didn't give a --disable/enable-gcrypt flag,
2808 # then mark as disabled if user requested nettle
2810 if test -z "$gcrypt"
2812 if test "$nettle" = "yes"
2818 # If user didn't give a --disable/enable-nettle flag,
2819 # then mark as disabled if user requested gcrypt
2821 if test -z "$nettle"
2823 if test "$gcrypt" = "yes"
2830 if ! has
"libgcrypt-config"
2835 if test -n "$cross_prefix"
2837 host=$
(libgcrypt-config
--host)
2838 if test "$host-" != $cross_prefix
2844 maj
=`libgcrypt-config --version | awk -F . '{print $1}'`
2845 min
=`libgcrypt-config --version | awk -F . '{print $2}'`
2847 if test $maj != 1 ||
test $min -lt 5
2856 if test "$nettle" != "no"; then
2857 if $pkg_config --exists "nettle >= 2.7.1"; then
2858 nettle_cflags
=$
($pkg_config --cflags nettle
)
2859 nettle_libs
=$
($pkg_config --libs nettle
)
2860 nettle_version
=$
($pkg_config --modversion nettle
)
2861 libs_softmmu
="$nettle_libs $libs_softmmu"
2862 libs_tools
="$nettle_libs $libs_tools"
2863 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2866 if test -z "$gcrypt"; then
2870 if test "$nettle" = "yes"; then
2871 feature_not_found
"nettle" "Install nettle devel >= 2.7.1"
2878 if test "$gcrypt" != "no"; then
2879 if has_libgcrypt
; then
2880 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2881 gcrypt_libs
=$
(libgcrypt-config
--libs)
2882 # Debian has remove -lgpg-error from libgcrypt-config
2883 # as it "spreads unnecessary dependencies" which in
2884 # turn breaks static builds...
2885 if test "$static" = "yes"
2887 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2889 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2890 libs_tools
="$gcrypt_libs $libs_tools"
2891 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2897 gcry_mac_hd_t handle;
2898 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2899 GCRY_MAC_FLAG_SECURE, NULL);
2903 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2907 if test "$gcrypt" = "yes"; then
2908 feature_not_found
"gcrypt" "Install gcrypt devel >= 1.5.0"
2916 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2918 error_exit
"Only one of gcrypt & nettle can be enabled"
2921 ##########################################
2922 # libtasn1 - only for the TLS creds/session test suite
2927 if $pkg_config --exists "libtasn1"; then
2928 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2929 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2935 ##########################################
2938 if test "$auth_pam" != "no"; then
2940 #include <security/pam_appl.h>
2943 const char *service_name = "qemu";
2944 const char *user = "frank";
2945 const struct pam_conv *pam_conv = NULL;
2946 pam_handle_t *pamh = NULL;
2947 pam_start(service_name, user, pam_conv, &pamh);
2951 if compile_prog
"" "-lpam" ; then
2954 if test "$auth_pam" = "yes"; then
2955 feature_not_found
"PAM" "Install PAM development package"
2962 ##########################################
2963 # getifaddrs (for tests/test-io-channel-socket )
2966 if ! check_include
"ifaddrs.h" ; then
2970 ##########################################
2973 if test "$vte" != "no"; then
2974 vteminversion
="0.32.0"
2975 if $pkg_config --exists "vte-2.91"; then
2976 vtepackage
="vte-2.91"
2978 vtepackage
="vte-2.90"
2980 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2981 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2982 vte_libs
=$
($pkg_config --libs $vtepackage)
2983 vteversion
=$
($pkg_config --modversion $vtepackage)
2985 elif test "$vte" = "yes"; then
2986 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2992 ##########################################
2995 # Look for sdl configuration program (pkg-config or sdl-config). Try
2996 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
3000 if $pkg_config sdl2
--exists; then
3001 sdlconfig
="$pkg_config sdl2"
3002 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
3003 elif has
${sdl_config}; then
3004 sdlconfig
="$sdl2_config"
3005 sdlversion
=$
($sdlconfig --version)
3007 if test "$sdl" = "yes" ; then
3008 feature_not_found
"sdl" "Install SDL2-devel"
3011 # no need to do the rest
3014 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
3015 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
3020 #undef main /* We don't want SDL to override our main() */
3021 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
3023 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
3024 sdl_cflags
="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
3025 if test "$static" = "yes" ; then
3026 if $pkg_config sdl2
--exists; then
3027 sdl_libs
=$
($pkg_config sdl2
--static --libs 2>/dev
/null
)
3029 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
3032 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
3034 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
3037 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
3038 if test "$sdl" = "yes" && test "$static" = "yes" ; then
3039 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
3040 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
3041 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
3043 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
3049 else # sdl not found
3050 if test "$sdl" = "yes" ; then
3051 feature_not_found
"sdl" "Install SDL2 devel"
3054 fi # sdl compile test
3059 if test "$sdl_image" != "no" ; then
3060 if $pkg_config SDL2_image
--exists; then
3061 if test "$static" = "yes"; then
3062 sdl_image_libs
=$
($pkg_config SDL2_image
--libs --static 2>/dev
/null
)
3064 sdl_image_libs
=$
($pkg_config SDL2_image
--libs 2>/dev
/null
)
3066 sdl_image_cflags
=$
($pkg_config SDL2_image
--cflags 2>/dev
/null
)
3069 sdl_cflags
="$sdl_cflags $sdl_image_cflags"
3070 sdl_libs
="$sdl_libs $sdl_image_libs"
3072 if test "$sdl_image" = "yes" ; then
3073 feature_not_found
"sdl_image" "Install SDL Image devel"
3081 if test "$sdl" != "no" ; then
3085 if test "$sdl" = "yes" ; then
3088 if test "$sdl_image" = "yes"; then
3089 echo "warning: SDL Image requested, but SDL is not available, disabling"
3094 if test "$sdl" = "yes" ; then
3097 #if defined(SDL_VIDEO_DRIVER_X11)
3098 #include <X11/XKBlib.h>
3100 #error No x11 support
3102 int main(void) { return 0; }
3104 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
3106 sdl_cflags
="$sdl_cflags $x11_cflags"
3107 sdl_libs
="$sdl_libs $x11_libs"
3111 ##########################################
3112 # RDMA needs OpenFabrics libraries
3113 if test "$rdma" != "no" ; then
3115 #include <rdma/rdma_cma.h>
3116 int main(void) { return 0; }
3118 rdma_libs
="-lrdmacm -libverbs -libumad"
3119 if compile_prog
"" "$rdma_libs" ; then
3121 libs_softmmu
="$libs_softmmu $rdma_libs"
3123 if test "$rdma" = "yes" ; then
3125 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
3127 " (1) Fast: Install infiniband packages (devel) from your distro." \
3128 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3129 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3135 ##########################################
3138 cat > $TMPC <<EOF &&
3139 #include <sys/mman.h>
3146 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3152 if test "$rdma" = "yes" ; then
3155 if compile_prog
"" ""; then
3162 if ! compile_prog
"" ""; then
3163 error_exit
"PVRDMA is not supported since mremap is not implemented"
3172 if test "$pvrdma" = "yes" ; then
3173 error_exit
"PVRDMA requires rdma suppport"
3178 ##########################################
3179 # VNC SASL detection
3180 if test "$vnc" = "yes" && test "$vnc_sasl" != "no" ; then
3182 #include <sasl/sasl.h>
3184 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3186 # Assuming Cyrus-SASL installed in /usr prefix
3188 vnc_sasl_libs
="-lsasl2"
3189 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3191 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
3192 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
3194 if test "$vnc_sasl" = "yes" ; then
3195 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
3201 ##########################################
3202 # VNC JPEG detection
3203 if test "$vnc" = "yes" && test "$vnc_jpeg" != "no" ; then
3206 #include <jpeglib.h>
3207 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3210 vnc_jpeg_libs
="-ljpeg"
3211 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3213 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
3214 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
3216 if test "$vnc_jpeg" = "yes" ; then
3217 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
3223 ##########################################
3225 if test "$vnc" = "yes" && test "$vnc_png" != "no" ; then
3227 //#include <stdio.h>
3231 png_structp png_ptr;
3232 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
3233 return png_ptr != 0;
3236 if $pkg_config libpng
--exists; then
3237 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
3238 vnc_png_libs
=$
($pkg_config libpng
--libs)
3241 vnc_png_libs
="-lpng"
3243 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
3245 libs_softmmu
="$vnc_png_libs $libs_softmmu"
3246 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
3248 if test "$vnc_png" = "yes" ; then
3249 feature_not_found
"vnc-png" "Install libpng devel"
3255 ##########################################
3257 if test "$xkbcommon" != "no" ; then
3258 if $pkg_config xkbcommon
--exists; then
3259 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
3260 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
3263 if test "$xkbcommon" = "yes" ; then
3264 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
3271 ##########################################
3272 # xfsctl() probe, used for file-posix.c
3273 if test "$xfs" != "no" ; then
3275 #include <stddef.h> /* NULL */
3276 #include <xfs/xfs.h>
3279 xfsctl(NULL, 0, 0, NULL);
3283 if compile_prog
"" "" ; then
3286 if test "$xfs" = "yes" ; then
3287 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3293 ##########################################
3294 # vde libraries probe
3295 if test "$vde" != "no" ; then
3296 vde_libs
="-lvdeplug"
3298 #include <libvdeplug.h>
3301 struct vde_open_args a = {0, 0, 0};
3307 if compile_prog
"" "$vde_libs" ; then
3310 if test "$vde" = "yes" ; then
3311 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3317 ##########################################
3318 # netmap support probe
3319 # Apart from looking for netmap headers, we make sure that the host API version
3320 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3321 # a minor/major version number. Minor new features will be marked with values up
3322 # to 15, and if something happens that requires a change to the backend we will
3323 # move above 15, submit the backend fixes and modify this two bounds.
3324 if test "$netmap" != "no" ; then
3326 #include <inttypes.h>
3328 #include <net/netmap.h>
3329 #include <net/netmap_user.h>
3330 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3333 int main(void) { return 0; }
3335 if compile_prog
"" "" ; then
3338 if test "$netmap" = "yes" ; then
3339 feature_not_found
"netmap"
3345 ##########################################
3346 # libcap-ng library probe
3347 if test "$cap_ng" != "no" ; then
3353 capng_capability_to_name(CAPNG_EFFECTIVE);
3357 if compile_prog
"" "$cap_libs" ; then
3359 libs_tools
="$cap_libs $libs_tools"
3361 if test "$cap_ng" = "yes" ; then
3362 feature_not_found
"cap_ng" "Install libcap-ng devel"
3368 ##########################################
3369 # Sound support libraries probe
3371 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3372 for drv
in $audio_drv_list; do
3375 if $pkg_config alsa
--exists; then
3376 alsa_libs
=$
($pkg_config alsa
--libs)
3377 if test "$drv" = "try-alsa"; then
3378 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-alsa/alsa/')
3381 if test "$drv" = "try-alsa"; then
3382 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-alsa//')
3384 error_exit
"$drv check failed" \
3385 "Make sure to have the $drv libs and headers installed."
3391 if $pkg_config libpulse
--exists; then
3392 pulse_libs
=$
($pkg_config libpulse
--libs)
3394 if test "$drv" = "try-pa"; then
3395 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-pa/pa/')
3398 if test "$drv" = "try-pa"; then
3399 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-pa//')
3401 error_exit
"$drv check failed" \
3402 "Make sure to have the $drv libs and headers installed."
3408 if test "$sdl" = "no"; then
3409 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3414 if test "$sdl" = "no"; then
3415 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-sdl//')
3417 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-sdl/sdl/')
3422 coreaudio_libs
="-framework CoreAudio"
3426 dsound_libs
="-lole32 -ldxguid"
3435 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3436 error_exit
"Unknown driver '$drv' selected" \
3437 "Possible drivers are: $audio_possible_drivers"
3443 ##########################################
3446 if test "$brlapi" != "no" ; then
3447 brlapi_libs
="-lbrlapi"
3451 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3453 if compile_prog
"" "$brlapi_libs" ; then
3456 if test "$brlapi" = "yes" ; then
3457 feature_not_found
"brlapi" "Install brlapi devel"
3463 ##########################################
3465 if test "$iconv" != "no" ; then
3469 iconv_t conv = iconv_open("WCHAR_T", "UCS-2");
3470 return conv != (iconv_t) -1;
3473 iconv_prefix_list
="/usr/local:/usr"
3474 iconv_lib_list
=":-liconv"
3476 for iconv_prefix
in $iconv_prefix_list; do
3478 iconv_cflags
="-I$iconv_prefix/include"
3479 iconv_ldflags
="-L$iconv_prefix/lib"
3480 for iconv_link
in $iconv_lib_list; do
3482 iconv_lib
="$iconv_ldflags $iconv_link"
3483 echo "looking at iconv in '$iconv_cflags' '$iconv_lib'" >> config.log
3484 if compile_prog
"$iconv_cflags" "$iconv_lib" ; then
3489 if test "$iconv_found" = yes ; then
3493 if test "$iconv_found" = "yes" ; then
3496 if test "$iconv" = "yes" ; then
3497 feature_not_found
"iconv" "Install iconv devel"
3503 ##########################################
3505 if test "$iconv" = "no" ; then
3506 # curses will need iconv
3509 if test "$curses" != "no" ; then
3510 if test "$mingw32" = "yes" ; then
3511 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3512 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3514 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3515 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3522 #include <langinfo.h>
3524 const char *codeset;
3526 setlocale(LC_ALL, "");
3528 addwstr(L"wide chars\n");
3530 add_wch(WACS_DEGREE);
3531 codeset = nl_langinfo(CODESET);
3532 return codeset != 0;
3536 for curses_inc
in $curses_inc_list; do
3537 # Make sure we get the wide character prototypes
3538 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3540 for curses_lib
in $curses_lib_list; do
3542 if compile_prog
"$curses_inc" "$curses_lib" ; then
3547 if test "$curses_found" = yes ; then
3552 if test "$curses_found" = "yes" ; then
3555 if test "$curses" = "yes" ; then
3556 feature_not_found
"curses" "Install ncurses devel"
3562 ##########################################
3564 if test "$curl" != "no" ; then
3565 if $pkg_config libcurl
--exists; then
3566 curlconfig
="$pkg_config libcurl"
3568 curlconfig
=curl-config
3571 #include <curl/curl.h>
3572 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3574 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3575 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3576 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3579 if test "$curl" = "yes" ; then
3580 feature_not_found
"curl" "Install libcurl devel"
3586 ##########################################
3587 # bluez support probe
3588 if test "$bluez" != "no" ; then
3590 #include <bluetooth/bluetooth.h>
3591 int main(void) { return bt_error(0); }
3593 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3594 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3595 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3597 libs_softmmu
="$bluez_libs $libs_softmmu"
3599 if test "$bluez" = "yes" ; then
3600 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3606 ##########################################
3607 # glib support probe
3610 glib_modules
=gthread-2.0
3611 if test "$modules" = yes; then
3612 glib_modules
="$glib_modules gmodule-export-2.0"
3615 # This workaround is required due to a bug in pkg-config file for glib as it
3616 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3618 if test "$static" = yes && test "$mingw32" = yes; then
3619 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3622 for i
in $glib_modules; do
3623 if $pkg_config --atleast-version=$glib_req_ver $i; then
3624 glib_cflags
=$
($pkg_config --cflags $i)
3625 glib_libs
=$
($pkg_config --libs $i)
3626 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3627 LIBS
="$glib_libs $LIBS"
3628 libs_qga
="$glib_libs $libs_qga"
3630 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3634 if $pkg_config --atleast-version=$glib_req_ver gio-2.0
; then
3636 gio_cflags
=$
($pkg_config --cflags gio-2.0
)
3637 gio_libs
=$
($pkg_config --libs gio-2.0
)
3642 # Sanity check that the current size_t matches the
3643 # size that glib thinks it should be. This catches
3644 # problems on multi-arch where people try to build
3645 # 32-bit QEMU while pointing at 64-bit glib headers
3650 #define QEMU_BUILD_BUG_ON(x) \
3651 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3654 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3659 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3660 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3661 "You probably need to set PKG_CONFIG_LIBDIR"\
3662 "to point to the right pkg-config files for your"\
3666 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3669 int main(void) { return 0; }
3671 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3672 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3673 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3674 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3678 #########################################
3681 if test "$zlib" != "no" ; then
3682 if $pkg_config --exists zlib
; then
3683 zlib_cflags
=$
($pkg_config --cflags zlib
)
3684 zlib_libs
=$
($pkg_config --libs zlib
)
3685 QEMU_CFLAGS
="$zlib_cflags $QEMU_CFLAGS"
3686 LIBS
="$zlib_libs $LIBS"
3690 int main(void) { zlibVersion(); return 0; }
3692 if compile_prog
"" "-lz" ; then
3695 error_exit
"zlib check failed" \
3696 "Make sure to have the zlib libs and headers installed."
3701 ##########################################
3702 # SHA command probe for modules
3703 if test "$modules" = yes; then
3704 shacmd_probe
="sha1sum sha1 shasum"
3705 for c
in $shacmd_probe; do
3711 if test "$shacmd" = ""; then
3712 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3716 ##########################################
3717 # pixman support probe
3719 if test "$want_tools" = "no" && test "$softmmu" = "no"; then
3722 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3723 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3724 pixman_libs
=$
($pkg_config --libs pixman-1
)
3726 error_exit
"pixman >= 0.21.8 not present." \
3727 "Please install the pixman devel package."
3730 ##########################################
3731 # libmpathpersist probe
3733 if test "$mpath" != "no" ; then
3734 # probe for the new API
3736 #include <libudev.h>
3737 #include <mpath_persist.h>
3738 unsigned mpath_mx_alloc_len = 1024;
3740 static struct config *multipath_conf;
3741 extern struct udev *udev;
3742 extern struct config *get_multipath_config(void);
3743 extern void put_multipath_config(struct config *conf);
3745 struct config *get_multipath_config(void) { return multipath_conf; }
3746 void put_multipath_config(struct config *conf) { }
3750 multipath_conf = mpath_lib_init();
3754 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3756 mpathpersist_new_api
=yes
3758 # probe for the old API
3760 #include <libudev.h>
3761 #include <mpath_persist.h>
3762 unsigned mpath_mx_alloc_len = 1024;
3765 struct udev *udev = udev_new();
3766 mpath_lib_init(udev);
3770 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3772 mpathpersist_new_api
=no
3781 ##########################################
3784 if test "$cap" != "no" ; then
3787 #include <sys/capability.h>
3788 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3790 if compile_prog
"" "-lcap" ; then
3797 ##########################################
3799 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3803 #include <pthread.h>
3804 static void *f(void *p) { return NULL; }
3807 pthread_create(&thread, 0, f, 0);
3811 if compile_prog
"" "" ; then
3814 for pthread_lib
in $PTHREADLIBS_LIST; do
3815 if compile_prog
"" "$pthread_lib" ; then
3818 for lib_entry
in $LIBS; do
3819 if test "$lib_entry" = "$pthread_lib"; then
3824 if test "$found" = "no"; then
3825 LIBS
="$pthread_lib $LIBS"
3826 libs_qga
="$pthread_lib $libs_qga"
3828 PTHREAD_LIB
="$pthread_lib"
3834 if test "$mingw32" != yes && test "$pthread" = no
; then
3835 error_exit
"pthread check failed" \
3836 "Make sure to have the pthread libs and headers installed."
3839 # check for pthread_setname_np with thread id
3840 pthread_setname_np_w_tid
=no
3842 #include <pthread.h>
3844 static void *f(void *p) { return NULL; }
3848 pthread_create(&thread, 0, f, 0);
3849 pthread_setname_np(thread, "QEMU");
3853 if compile_prog
"" "$pthread_lib" ; then
3854 pthread_setname_np_w_tid
=yes
3857 # check for pthread_setname_np without thread id
3858 pthread_setname_np_wo_tid
=no
3860 #include <pthread.h>
3862 static void *f(void *p) { pthread_setname_np("QEMU"); }
3866 pthread_create(&thread, 0, f, 0);
3870 if compile_prog
"" "$pthread_lib" ; then
3871 pthread_setname_np_wo_tid
=yes
3874 ##########################################
3876 if test "$rbd" != "no" ; then
3879 #include <rbd/librbd.h>
3882 rados_create(&cluster, NULL);
3886 rbd_libs
="-lrbd -lrados"
3887 if compile_prog
"" "$rbd_libs" ; then
3890 if test "$rbd" = "yes" ; then
3891 feature_not_found
"rados block device" "Install librbd/ceph devel"
3897 ##########################################
3899 min_libssh2_version
=1.2.8
3900 if test "$libssh2" != "no" ; then
3901 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3902 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3903 libssh2_libs
=$
($pkg_config libssh2
--libs)
3906 if test "$libssh2" = "yes" ; then
3907 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3913 ##########################################
3914 # libssh2_sftp_fsync probe
3916 if test "$libssh2" = "yes"; then
3919 #include <libssh2.h>
3920 #include <libssh2_sftp.h>
3922 LIBSSH2_SESSION *session;
3924 LIBSSH2_SFTP_HANDLE *sftp_handle;
3925 session = libssh2_session_init ();
3926 sftp = libssh2_sftp_init (session);
3927 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3928 libssh2_sftp_fsync (sftp_handle);
3932 # libssh2_cflags/libssh2_libs defined in previous test.
3933 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3934 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3938 ##########################################
3941 if test "$linux_aio" != "no" ; then
3944 #include <sys/eventfd.h>
3946 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3948 if compile_prog
"" "-laio" ; then
3951 if test "$linux_aio" = "yes" ; then
3952 feature_not_found
"linux AIO" "Install libaio devel"
3958 ##########################################
3959 # TPM emulation is only on POSIX
3961 if test "$tpm" = ""; then
3962 if test "$mingw32" = "yes"; then
3967 elif test "$tpm" = "yes"; then
3968 if test "$mingw32" = "yes" ; then
3969 error_exit
"TPM emulation only available on POSIX systems"
3973 ##########################################
3976 if test "$attr" != "no" ; then
3979 #include <sys/types.h>
3980 #ifdef CONFIG_LIBATTR
3981 #include <attr/xattr.h>
3983 #include <sys/xattr.h>
3985 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3987 if compile_prog
"" "" ; then
3989 # Older distros have <attr/xattr.h>, and need -lattr:
3990 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3995 if test "$attr" = "yes" ; then
3996 feature_not_found
"ATTR" "Install libc6 or libattr devel"
4002 ##########################################
4005 #include <sys/types.h>
4006 #include <sys/uio.h>
4008 int main(void) { return sizeof(struct iovec); }
4011 if compile_prog
"" "" ; then
4015 ##########################################
4018 #include <sys/types.h>
4019 #include <sys/uio.h>
4021 int main(void) { return preadv(0, 0, 0, 0); }
4024 if compile_prog
"" "" ; then
4028 ##########################################
4030 # fdt support is mandatory for at least some target architectures,
4031 # so insist on it if we're building those system emulators.
4033 for target
in $target_list; do
4035 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu|riscv
*-softmmu)
4041 if test "$fdt_required" = "yes"; then
4042 if test "$fdt" = "no"; then
4043 error_exit
"fdt disabled but some requested targets require it." \
4044 "You can turn off fdt only if you also disable all the system emulation" \
4045 "targets which need it (by specifying a cut down --target-list)."
4050 if test "$fdt" != "no" ; then
4052 # explicitly check for libfdt_env.h as it is missing in some stable installs
4053 # and test for required functions to make sure we are on a version >= 1.4.2
4056 #include <libfdt_env.h>
4057 int main(void) { fdt_check_full(NULL, 0); return 0; }
4059 if compile_prog
"" "$fdt_libs" ; then
4060 # system DTC is good - use it
4063 # have GIT checkout, so activate dtc submodule
4064 if test -e "${source_path}/.git" ; then
4065 git_submodules
="${git_submodules} dtc"
4067 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
4070 if [ "$pwd_is_source_path" != "y" ] ; then
4071 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
4072 symlink
"$source_path/dtc/scripts" "dtc/scripts"
4074 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
4075 fdt_ldflags
="-L\$(BUILD_DIR)/dtc/libfdt"
4076 fdt_libs
="$fdt_libs"
4077 elif test "$fdt" = "yes" ; then
4078 # Not a git build & no libfdt found, prompt for system install
4079 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
4080 "Please install the DTC (libfdt) devel package"
4082 # don't have and don't want
4089 libs_softmmu
="$libs_softmmu $fdt_libs"
4091 ##########################################
4092 # opengl probe (for sdl2, gtk, milkymist-tmu2)
4094 if test "$opengl" != "no" ; then
4095 opengl_pkgs
="epoxy gbm"
4096 if $pkg_config $opengl_pkgs; then
4097 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs)"
4098 opengl_libs
="$($pkg_config --libs $opengl_pkgs)"
4100 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
4103 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
4105 if test "$opengl" = "yes" ; then
4106 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
4114 if test "$opengl" = "yes"; then
4116 #include <epoxy/egl.h>
4117 #ifndef EGL_MESA_image_dma_buf_export
4118 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
4120 int main(void) { return 0; }
4122 if compile_prog
"" "" ; then
4127 if test "$opengl" = "yes" && test "$have_x11" = "yes"; then
4128 for target
in $target_list; do
4130 lm32-softmmu
) # milkymist-tmu2 requires X11 and OpenGL
4137 ##########################################
4139 if test "$libxml2" != "no" ; then
4140 if $pkg_config --exists libxml-2.0
; then
4142 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
4143 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
4145 if test "$libxml2" = "yes"; then
4146 feature_not_found
"libxml2" "Install libxml2 devel"
4152 ##########################################
4154 if test "$glusterfs" != "no" ; then
4155 if $pkg_config --atleast-version=3 glusterfs-api
; then
4157 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
4158 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
4159 if $pkg_config --atleast-version=4 glusterfs-api
; then
4160 glusterfs_xlator_opt
="yes"
4162 if $pkg_config --atleast-version=5 glusterfs-api
; then
4163 glusterfs_discard
="yes"
4165 if $pkg_config --atleast-version=6 glusterfs-api
; then
4166 glusterfs_fallocate
="yes"
4167 glusterfs_zerofill
="yes"
4170 #include <glusterfs/api/glfs.h>
4175 /* new glfs_ftruncate() passes two additional args */
4176 return glfs_ftruncate(NULL, 0, NULL, NULL);
4179 if compile_prog
"$glusterfs_cflags" "$glusterfs_libs" ; then
4180 glusterfs_ftruncate_has_stat
="yes"
4183 #include <glusterfs/api/glfs.h>
4185 /* new glfs_io_cbk() passes two additional glfs_stat structs */
4187 glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
4193 glfs_io_cbk iocb = &glusterfs_iocb;
4194 iocb(NULL, 0 , NULL, NULL, NULL);
4198 if compile_prog
"$glusterfs_cflags" "$glusterfs_libs" ; then
4199 glusterfs_iocb_has_stat
="yes"
4202 if test "$glusterfs" = "yes" ; then
4203 feature_not_found
"GlusterFS backend support" \
4204 "Install glusterfs-api devel >= 3"
4210 # Check for inotify functions when we are building linux-user
4211 # emulator. This is done because older glibc versions don't
4212 # have syscall stubs for these implemented. In that case we
4213 # don't provide them even if kernel supports them.
4217 #include <sys/inotify.h>
4222 /* try to start inotify */
4223 return inotify_init();
4226 if compile_prog
"" "" ; then
4232 #include <sys/inotify.h>
4237 /* try to start inotify */
4238 return inotify_init1(0);
4241 if compile_prog
"" "" ; then
4245 # check if pipe2 is there
4254 return pipe2(pipefd, O_CLOEXEC);
4257 if compile_prog
"" "" ; then
4261 # check if accept4 is there
4264 #include <sys/socket.h>
4269 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4273 if compile_prog
"" "" ; then
4277 # check if tee/splice is there. vmsplice was added same time.
4287 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4288 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4292 if compile_prog
"" "" ; then
4296 ##########################################
4299 if test "$numa" != "no" ; then
4302 int main(void) { return numa_available(); }
4305 if compile_prog
"" "-lnuma" ; then
4307 libs_softmmu
="-lnuma $libs_softmmu"
4309 if test "$numa" = "yes" ; then
4310 feature_not_found
"numa" "install numactl devel"
4316 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4317 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4321 # Even if malloc_trim() is available, these non-libc memory allocators
4322 # do not support it.
4323 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
4324 if test "$malloc_trim" = "yes" ; then
4325 echo "Disabling malloc_trim with non-libc memory allocator"
4330 #######################################
4333 if test "$malloc_trim" != "no" ; then
4336 int main(void) { malloc_trim(0); return 0; }
4338 if compile_prog
"" "" ; then
4345 ##########################################
4348 if test "$tcmalloc" = "yes" ; then
4351 int main(void) { malloc(1); return 0; }
4354 if compile_prog
"" "-ltcmalloc" ; then
4355 LIBS
="-ltcmalloc $LIBS"
4357 feature_not_found
"tcmalloc" "install gperftools devel"
4361 ##########################################
4364 if test "$jemalloc" = "yes" ; then
4367 int main(void) { malloc(1); return 0; }
4370 if compile_prog
"" "-ljemalloc" ; then
4371 LIBS
="-ljemalloc $LIBS"
4373 feature_not_found
"jemalloc" "install jemalloc devel"
4377 ##########################################
4382 #include <sys/syscall.h>
4384 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4387 if compile_prog
"" "" ; then
4391 # check if optreset global is declared by <getopt.h>
4395 int main(void) { return optreset; }
4398 if compile_prog
"" "" ; then
4402 # check if eventfd is supported
4405 #include <sys/eventfd.h>
4409 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
4412 if compile_prog
"" "" ; then
4416 # check if memfd is supported
4419 #include <sys/mman.h>
4423 return memfd_create("foo", MFD_ALLOW_SEALING);
4426 if compile_prog
"" "" ; then
4432 if test "$linux_user" = "yes"; then
4434 #include <linux/usbdevice_fs.h>
4436 #ifndef USBDEVFS_GET_CAPABILITIES
4437 #error "USBDEVFS_GET_CAPABILITIES undefined"
4440 #ifndef USBDEVFS_DISCONNECT_CLAIM
4441 #error "USBDEVFS_DISCONNECT_CLAIM undefined"
4449 if compile_prog
"" ""; then
4454 # check for fallocate
4461 fallocate(0, 0, 0, 0);
4465 if compile_prog
"" "" ; then
4469 # check for fallocate hole punching
4470 fallocate_punch_hole
=no
4473 #include <linux/falloc.h>
4477 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4481 if compile_prog
"" "" ; then
4482 fallocate_punch_hole
=yes
4485 # check that fallocate supports range zeroing inside the file
4486 fallocate_zero_range
=no
4489 #include <linux/falloc.h>
4493 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4497 if compile_prog
"" "" ; then
4498 fallocate_zero_range
=yes
4501 # check for posix_fallocate
4508 posix_fallocate(0, 0, 0);
4512 if compile_prog
"" "" ; then
4516 # check for sync_file_range
4523 sync_file_range(0, 0, 0, 0);
4527 if compile_prog
"" "" ; then
4531 # check for linux/fiemap.h and FS_IOC_FIEMAP
4534 #include <sys/ioctl.h>
4535 #include <linux/fs.h>
4536 #include <linux/fiemap.h>
4540 ioctl(0, FS_IOC_FIEMAP, 0);
4544 if compile_prog
"" "" ; then
4559 if compile_prog
"" "" ; then
4563 # check for ppoll support
4570 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4571 ppoll(&pfd, 1, 0, 0);
4575 if compile_prog
"" "" ; then
4579 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4580 prctl_pr_set_timerslack
=no
4582 #include <sys/prctl.h>
4586 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4590 if compile_prog
"" "" ; then
4591 prctl_pr_set_timerslack
=yes
4594 # check for epoll support
4597 #include <sys/epoll.h>
4605 if compile_prog
"" "" ; then
4609 # epoll_create1 is a later addition
4610 # so we must check separately for its presence
4613 #include <sys/epoll.h>
4617 /* Note that we use epoll_create1 as a value, not as
4618 * a function being called. This is necessary so that on
4619 * old SPARC glibc versions where the function was present in
4620 * the library but not declared in the header file we will
4621 * fail the configure check. (Otherwise we will get a compiler
4622 * warning but not an error, and will proceed to fail the
4623 * qemu compile where we compile with -Werror.)
4625 return (int)(uintptr_t)&epoll_create1;
4628 if compile_prog
"" "" ; then
4632 # check for sendfile support
4635 #include <sys/sendfile.h>
4639 return sendfile(0, 0, 0, 0);
4642 if compile_prog
"" "" ; then
4646 # check for timerfd support (glibc 2.8 and newer)
4649 #include <sys/timerfd.h>
4653 return(timerfd_create(CLOCK_REALTIME, 0));
4656 if compile_prog
"" "" ; then
4660 # check for setns and unshare support
4673 if compile_prog
"" "" ; then
4677 # clock_adjtime probe
4684 return clock_adjtime(0, 0);
4688 if compile_prog
"" "" ; then
4703 if compile_prog
"" "" ; then
4707 # Check we have a new enough version of sphinx-build
4708 has_sphinx_build
() {
4709 # This is a bit awkward but works: create a trivial document and
4710 # try to run it with our configuration file (which enforces a
4711 # version requirement). This will fail if either
4712 # sphinx-build doesn't exist at all or if it is too old.
4713 mkdir
-p "$TMPDIR1/sphinx"
4714 touch "$TMPDIR1/sphinx/index.rst"
4715 sphinx-build
-c "$source_path/docs" -b html
"$TMPDIR1/sphinx" "$TMPDIR1/sphinx/out" >/dev
/null
2>&1
4718 # Check if tools are available to build documentation.
4719 if test "$docs" != "no" ; then
4720 if has makeinfo
&& has pod2man
&& has_sphinx_build
; then
4723 if test "$docs" = "yes" ; then
4724 feature_not_found
"docs" "Install texinfo, Perl/perl-podlators and python-sphinx"
4730 # Search for bswap_32 function
4733 #include <byteswap.h>
4734 int main(void) { return bswap_32(0); }
4736 if compile_prog
"" "" ; then
4740 # Search for bswap32 function
4743 #include <sys/endian.h>
4744 #include <sys/types.h>
4745 #include <machine/bswap.h>
4746 int main(void) { return bswap32(0); }
4748 if compile_prog
"" "" ; then
4752 ##########################################
4753 # Do we have libiscsi >= 1.9.0
4754 if test "$libiscsi" != "no" ; then
4755 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4757 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4758 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4760 if test "$libiscsi" = "yes" ; then
4761 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4767 ##########################################
4771 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4773 if compile_prog
"" "" ; then
4775 elif compile_prog
"" "-lm" ; then
4777 libs_qga
="-lm $libs_qga"
4779 error_exit
"libm check failed"
4782 ##########################################
4784 # uClibc provides 2 versions of clock_gettime(), one with realtime
4785 # support and one without. This means that the clock_gettime() don't
4786 # need -lrt. We still need it for timer_create() so we check for this
4787 # function in addition.
4792 timer_create(CLOCK_REALTIME, NULL, NULL);
4793 return clock_gettime(CLOCK_REALTIME, NULL);
4797 if compile_prog
"" "" ; then
4799 # we need pthread for static linking. use previous pthread test result
4800 elif compile_prog
"" "$pthread_lib -lrt" ; then
4802 libs_qga
="$libs_qga -lrt"
4805 # Check whether we need to link libutil for openpty()
4807 extern int openpty(int *am, int *as, char *name, void *termp, void *winp);
4808 int main(void) { return openpty(0, 0, 0, 0, 0); }
4811 if ! compile_prog
"" "" ; then
4812 if compile_prog
"" "-lutil" ; then
4813 libs_softmmu
="-lutil $libs_softmmu"
4814 libs_tools
="-lutil $libs_tools"
4818 ##########################################
4820 if test "$spice" != "no" ; then
4823 int main(void) { spice_server_new(); return 0; }
4825 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4826 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4827 if $pkg_config --atleast-version=0.12.5 spice-server
&& \
4828 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4829 compile_prog
"$spice_cflags" "$spice_libs" ; then
4831 libs_softmmu
="$libs_softmmu $spice_libs"
4832 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4833 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4834 spice_server_version
=$
($pkg_config --modversion spice-server
)
4836 if test "$spice" = "yes" ; then
4837 feature_not_found
"spice" \
4838 "Install spice-server(>=0.12.5) and spice-protocol(>=0.12.3) devel"
4844 # check for smartcard support
4845 if test "$smartcard" != "no"; then
4846 if $pkg_config --atleast-version=2.5.1 libcacard
; then
4847 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4848 libcacard_libs
=$
($pkg_config --libs libcacard
)
4851 if test "$smartcard" = "yes"; then
4852 feature_not_found
"smartcard" "Install libcacard devel"
4859 if test "$libusb" != "no" ; then
4860 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4862 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4863 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4865 if test "$libusb" = "yes"; then
4866 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4872 # check for usbredirparser for usb network redirection support
4873 if test "$usb_redir" != "no" ; then
4874 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4876 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4877 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4879 if test "$usb_redir" = "yes"; then
4880 feature_not_found
"usb-redir" "Install usbredir devel"
4886 ##########################################
4887 # check if we have VSS SDK headers for win
4889 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
4890 test "$vss_win32_sdk" != "no" ; then
4891 case "$vss_win32_sdk" in
4892 "") vss_win32_include
="-isystem $source_path" ;;
4893 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4894 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4895 vss_win32_include
="-isystem $source_path/.sdk/vss"
4896 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4898 *) vss_win32_include
="-isystem $vss_win32_sdk"
4901 #define __MIDL_user_allocate_free_DEFINED__
4902 #include <inc/win2003/vss.h>
4903 int main(void) { return VSS_CTX_BACKUP; }
4905 if compile_prog
"$vss_win32_include" "" ; then
4906 guest_agent_with_vss
="yes"
4907 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4908 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4909 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4911 if test "$vss_win32_sdk" != "" ; then
4912 echo "ERROR: Please download and install Microsoft VSS SDK:"
4913 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4914 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4915 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4916 echo "ERROR: The headers are extracted in the directory \`inc'."
4917 feature_not_found
"VSS support"
4919 guest_agent_with_vss
="no"
4923 ##########################################
4924 # lookup Windows platform SDK (if not specified)
4925 # The SDK is needed only to build .tlb (type library) file of guest agent
4926 # VSS provider from the source. It is usually unnecessary because the
4927 # pre-compiled .tlb file is included.
4929 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
4930 test "$guest_agent_with_vss" = "yes" ; then
4931 if test -z "$win_sdk"; then
4932 programfiles
="$PROGRAMFILES"
4933 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4934 if test -n "$programfiles"; then
4935 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4937 feature_not_found
"Windows SDK"
4939 elif test "$win_sdk" = "no"; then
4944 ##########################################
4945 # check if mingw environment provides a recent ntddscsi.h
4946 if test "$mingw32" = "yes" && test "$guest_agent" != "no"; then
4948 #include <windows.h>
4949 #include <ntddscsi.h>
4951 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4952 #error Missing required ioctl definitions
4954 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4958 if compile_prog
"" "" ; then
4959 guest_agent_ntddscsi
=yes
4960 libs_qga
="-lsetupapi -lcfgmgr32 $libs_qga"
4964 ##########################################
4965 # virgl renderer probe
4967 if test "$virglrenderer" != "no" ; then
4969 #include <virglrenderer.h>
4970 int main(void) { virgl_renderer_poll(); return 0; }
4972 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4973 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4974 virgl_version
=$
($pkg_config --modversion virglrenderer
2>/dev
/null
)
4975 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4976 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4979 if test "$virglrenderer" = "yes" ; then
4980 feature_not_found
"virglrenderer"
4986 ##########################################
4991 if $pkg_config capstone
; then
4993 elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
4995 elif test -e "${source_path}/capstone/Makefile" ; then
4997 elif test -z "$capstone" ; then
5000 feature_not_found
"capstone" "Install capstone devel or git submodule"
5005 if ! $pkg_config capstone
; then
5006 feature_not_found
"capstone" "Install capstone devel"
5013 if test "$capstone" = git
; then
5014 git_submodules
="${git_submodules} capstone"
5017 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
5018 if test "$mingw32" = "yes"; then
5019 LIBCAPSTONE
=capstone.lib
5021 LIBCAPSTONE
=libcapstone.a
5023 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
5027 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
5028 LIBS
="$($pkg_config --libs capstone) $LIBS"
5034 error_exit
"Unknown state for capstone: $capstone"
5038 ##########################################
5039 # check if we have fdatasync
5045 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
5046 return fdatasync(0);
5048 #error Not supported
5052 if compile_prog
"" "" ; then
5056 ##########################################
5057 # check if we have madvise
5061 #include <sys/types.h>
5062 #include <sys/mman.h>
5064 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
5066 if compile_prog
"" "" ; then
5070 ##########################################
5071 # check if we have posix_madvise
5075 #include <sys/mman.h>
5077 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
5079 if compile_prog
"" "" ; then
5083 ##########################################
5084 # check if we have posix_memalign()
5091 return posix_memalign(&p, 8, 8);
5094 if compile_prog
"" "" ; then
5098 ##########################################
5099 # check if we have posix_syslog
5104 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
5106 if compile_prog
"" "" ; then
5110 ##########################################
5111 # check if we have sem_timedwait
5115 #include <semaphore.h>
5116 int main(void) { return sem_timedwait(0, 0); }
5118 if compile_prog
"" "" ; then
5122 ##########################################
5123 # check if we have strchrnul
5129 // Use a haystack that the compiler shouldn't be able to constant fold
5130 char *haystack = (char*)&main;
5131 int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
5133 if compile_prog
"" "" ; then
5137 ##########################################
5138 # check if trace backend exists
5140 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
5141 if test "$?" -ne 0 ; then
5142 error_exit
"invalid trace backends" \
5143 "Please choose supported trace backends."
5146 ##########################################
5147 # For 'ust' backend, test if ust headers are present
5148 if have_backend
"ust"; then
5150 #include <lttng/tracepoint.h>
5151 int main(void) { return 0; }
5153 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
5154 if $pkg_config lttng-ust
--exists; then
5155 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
5157 lttng_ust_libs
="-llttng-ust -ldl"
5159 if $pkg_config liburcu-bp
--exists; then
5160 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
5162 urcu_bp_libs
="-lurcu-bp"
5165 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
5166 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
5168 error_exit
"Trace backend 'ust' missing lttng-ust header files"
5172 ##########################################
5173 # For 'dtrace' backend, test if 'dtrace' command is present
5174 if have_backend
"dtrace"; then
5175 if ! has
'dtrace' ; then
5176 error_exit
"dtrace command is not found in PATH $PATH"
5178 trace_backend_stap
="no"
5179 if has
'stap' ; then
5180 trace_backend_stap
="yes"
5184 ##########################################
5185 # check and set a backend for coroutine
5187 # We prefer ucontext, but it's not always possible. The fallback
5188 # is sigcontext. On Windows the only valid backend is the Windows
5192 if test "$darwin" != "yes"; then
5194 #include <ucontext.h>
5195 #ifdef __stub_makecontext
5196 #error Ignoring glibc stub makecontext which will always fail
5198 int main(void) { makecontext(0, 0, 0); return 0; }
5200 if compile_prog
"" "" ; then
5205 if test "$coroutine" = ""; then
5206 if test "$mingw32" = "yes"; then
5208 elif test "$ucontext_works" = "yes"; then
5211 coroutine
=sigaltstack
5216 if test "$mingw32" != "yes"; then
5217 error_exit
"'windows' coroutine backend only valid for Windows"
5219 # Unfortunately the user visible backend name doesn't match the
5220 # coroutine-*.c filename for this case, so we have to adjust it here.
5224 if test "$ucontext_works" != "yes"; then
5225 feature_not_found
"ucontext"
5229 if test "$mingw32" = "yes"; then
5230 error_exit
"only the 'windows' coroutine backend is valid for Windows"
5234 error_exit
"unknown coroutine backend $coroutine"
5239 if test "$coroutine_pool" = ""; then
5243 if test "$debug_stack_usage" = "yes"; then
5244 if test "$coroutine_pool" = "yes"; then
5245 echo "WARN: disabling coroutine pool for stack usage debugging"
5251 ##########################################
5252 # check if we have open_by_handle_at
5254 open_by_handle_at
=no
5257 #if !defined(AT_EMPTY_PATH)
5258 # error missing definition
5260 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
5263 if compile_prog
"" "" ; then
5264 open_by_handle_at
=yes
5267 ########################################
5268 # check if we have linux/magic.h
5272 #include <linux/magic.h>
5277 if compile_prog
"" "" ; then
5281 ########################################
5282 # check whether we can disable warning option with a pragma (this is needed
5283 # to silence warnings in the headers of some versions of external libraries).
5284 # This test has to be compiled with -Werror as otherwise an unknown pragma is
5287 # If we can't selectively disable warning in the code, disable -Werror so that
5288 # the build doesn't fail anyway.
5290 pragma_disable_unused_but_set
=no
5292 #pragma GCC diagnostic push
5293 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
5294 #pragma GCC diagnostic pop
5300 if compile_prog
"-Werror" "" ; then
5301 pragma_diagnostic_available
=yes
5306 ########################################
5307 # check if we have valgrind/valgrind.h
5311 #include <valgrind/valgrind.h>
5316 if compile_prog
"" "" ; then
5320 ########################################
5321 # check if environ is declared
5331 if compile_prog
"" "" ; then
5335 ########################################
5336 # check if cpuid.h is usable.
5341 unsigned a, b, c, d;
5342 int max = __get_cpuid_max(0, 0);
5345 __cpuid(1, a, b, c, d);
5349 __cpuid_count(7, 0, a, b, c, d);
5355 if compile_prog
"" "" ; then
5359 ##########################################
5360 # avx2 optimization requirement check
5362 # There is no point enabling this if cpuid.h is not usable,
5363 # since we won't be able to select the new routines.
5365 if test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then
5367 #pragma GCC push_options
5368 #pragma GCC target("avx2")
5370 #include <immintrin.h>
5371 static int bar(void *a) {
5372 __m256i x = *(__m256i *)a;
5373 return _mm256_testz_si256(x, x);
5375 int main(int argc, char *argv[]) { return bar(argv[0]); }
5377 if compile_object
"" ; then
5384 ########################################
5385 # check if __[u]int128_t is usable.
5398 if compile_prog
"" "" ; then
5402 #########################################
5403 # See if 128-bit atomic operations are supported.
5406 if test "$int128" = "yes"; then
5410 unsigned __int128 x = 0, y = 0;
5411 y = __atomic_load_16(&x, 0);
5412 __atomic_store_16(&x, y, 0);
5413 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5417 if compile_prog
"" "" ; then
5423 if test "$int128" = yes && test "$atomic128" = no
; then
5427 unsigned __int128 x = 0, y = 0;
5428 __sync_val_compare_and_swap_16(&x, y, x);
5432 if compile_prog
"" "" ; then
5437 #########################################
5438 # See if 64-bit atomic operations are supported.
5439 # Note that without __atomic builtins, we can only
5440 # assume atomic loads/stores max at pointer size.
5446 uint64_t x = 0, y = 0;
5447 #ifdef __ATOMIC_RELAXED
5448 y = __atomic_load_8(&x, 0);
5449 __atomic_store_8(&x, y, 0);
5450 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5451 __atomic_exchange_8(&x, y, 0);
5452 __atomic_fetch_add_8(&x, y, 0);
5454 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5455 __sync_lock_test_and_set(&x, y);
5456 __sync_val_compare_and_swap(&x, y, 0);
5457 __sync_fetch_and_add(&x, y);
5462 if compile_prog
"" "" ; then
5466 ########################################
5467 # See if 16-byte vector operations are supported.
5468 # Even without a vector unit the compiler may expand these.
5469 # There is a bug in old GCC for PPC that crashes here.
5470 # Unfortunately it's the system compiler for Centos 7.
5473 typedef unsigned char U1 __attribute__((vector_size(16)));
5474 typedef unsigned short U2 __attribute__((vector_size(16)));
5475 typedef unsigned int U4 __attribute__((vector_size(16)));
5476 typedef unsigned long long U8 __attribute__((vector_size(16)));
5477 typedef signed char S1 __attribute__((vector_size(16)));
5478 typedef signed short S2 __attribute__((vector_size(16)));
5479 typedef signed int S4 __attribute__((vector_size(16)));
5480 typedef signed long long S8 __attribute__((vector_size(16)));
5490 void helper(void *d, void *a, int shift, int i);
5491 void helper(void *d, void *a, int shift, int i)
5493 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5494 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5495 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5496 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5500 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5501 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5502 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5503 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5504 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5505 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5506 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5507 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5508 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5514 if compile_prog
"" "" ; then
5518 ########################################
5519 # check if getauxval is available.
5523 #include <sys/auxv.h>
5525 return getauxval(AT_HWCAP) == 0;
5528 if compile_prog
"" "" ; then
5532 ########################################
5533 # check if ccache is interfering with
5534 # semantic analysis of macros
5539 static const int Z = 1;
5540 #define fn() ({ Z; })
5541 #define TAUT(X) ((X) == Z)
5542 #define PAREN(X, Y) (X == Y)
5544 int main(int argc, char *argv[])
5550 if (PAREN(x, y)) return 0;
5551 if (TAUT(Z)) return 0;
5556 if ! compile_object
"-Werror"; then
5560 #################################################
5561 # clang does not support glibc + FORTIFY_SOURCE.
5563 if test "$fortify_source" != "no"; then
5564 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
5565 fortify_source
="no";
5566 elif test -n "$cxx" && has
$cxx &&
5567 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
5568 fortify_source
="no";
5570 fortify_source
="yes"
5574 ###############################################
5575 # Check if copy_file_range is provided by glibc
5576 have_copy_file_range
=no
5580 copy_file_range(0, NULL, 0, NULL, 0, 0);
5584 if compile_prog
"" "" ; then
5585 have_copy_file_range
=yes
5588 ##########################################
5589 # check if struct fsxattr is available via linux/fs.h
5593 #include <linux/fs.h>
5599 if compile_prog
"" "" ; then
5603 ##########################################
5604 # check for usable membarrier system call
5605 if test "$membarrier" = "yes"; then
5607 if test "$mingw32" = "yes" ; then
5609 elif test "$linux" = "yes" ; then
5611 #include <linux/membarrier.h>
5612 #include <sys/syscall.h>
5616 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5617 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5621 if compile_prog
"" "" ; then
5625 if test "$have_membarrier" = "no"; then
5626 feature_not_found
"membarrier" "membarrier system call not available"
5629 # Do not enable it by default even for Mingw32, because it doesn't
5634 ##########################################
5635 # check if rtnetlink.h exists and is useful
5638 #include <linux/rtnetlink.h>
5640 return IFLA_PROTO_DOWN;
5643 if compile_prog
"" "" ; then
5647 ##########################################
5648 # check for usable AF_VSOCK environment
5652 #include <sys/types.h>
5653 #include <sys/socket.h>
5654 #if !defined(AF_VSOCK)
5655 # error missing AF_VSOCK flag
5657 #include <linux/vm_sockets.h>
5660 struct sockaddr_vm svm;
5661 socklen_t len = sizeof(svm);
5662 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5663 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5664 if ((ret == -1) && (errno == ENOTCONN)) {
5670 if compile_prog
"" "" ; then
5674 ##########################################
5675 # check for usable AF_ALG environment
5679 #include <sys/types.h>
5680 #include <sys/socket.h>
5681 #include <linux/if_alg.h>
5684 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5688 if compile_prog
"" "" ; then
5691 if test "$crypto_afalg" = "yes"
5693 if test "$have_afalg" != "yes"
5695 error_exit
"AF_ALG requested but could not be detected"
5700 #################################################
5701 # Check to see if we have the Hypervisor framework
5702 if [ "$darwin" = "yes" ] ; then
5704 #include <Hypervisor/hv.h>
5705 int main() { return 0;}
5707 if ! compile_object
""; then
5711 LDFLAGS
="-framework Hypervisor $LDFLAGS"
5715 #################################################
5716 # Sparc implicitly links with --relax, which is
5717 # incompatible with -r, so --no-relax should be
5718 # given. It does no harm to give it on other
5721 # Note: the prototype is needed since QEMU_CFLAGS
5722 # contains -Wmissing-prototypes
5724 extern int foo(void);
5725 int foo(void) { return 0; }
5727 if ! compile_object
""; then
5728 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5730 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5731 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5736 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5737 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5740 ##########################################
5741 # check for sysmacros.h
5745 #include <sys/sysmacros.h>
5747 return makedev(0, 0);
5750 if compile_prog
"" "" ; then
5754 ##########################################
5755 # Veritas HyperScale block driver VxHS
5756 # Check if libvxhs is installed
5758 if test "$vxhs" != "no" ; then
5761 #include <qnio/qnio_api.h>
5763 void *vxhs_callback;
5766 iio_init(QNIO_VERSION, vxhs_callback);
5770 vxhs_libs
="-lvxhs -lssl"
5771 if compile_prog
"" "$vxhs_libs" ; then
5774 if test "$vxhs" = "yes" ; then
5775 feature_not_found
"vxhs block device" "Install libvxhs See github"
5781 ##########################################
5782 # check for _Static_assert()
5784 have_static_assert
=no
5786 _Static_assert(1, "success");
5791 if compile_prog
"" "" ; then
5792 have_static_assert
=yes
5795 ##########################################
5796 # check for utmpx.h, it is missing e.g. on OpenBSD
5801 struct utmpx user_info;
5806 if compile_prog
"" "" ; then
5810 ##########################################
5811 # checks for sanitizers
5815 have_asan_iface_h
=no
5816 have_asan_iface_fiber
=no
5818 if test "$sanitizers" = "yes" ; then
5820 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5824 # we could use a simple skeleton for flags checks, but this also
5825 # detect the static linking issue of ubsan, see also:
5826 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5830 void *tmp = malloc(10);
5831 return *(int *)(tmp + 2);
5834 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5838 if check_include
"sanitizer/asan_interface.h" ; then
5839 have_asan_iface_h
=yes
5843 #include <sanitizer/asan_interface.h>
5845 __sanitizer_start_switch_fiber(0, 0, 0);
5849 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5850 have_asan_iface_fiber
=yes
5854 ##########################################
5855 # Docker and cross-compiler support
5857 # This is specifically for building test
5858 # cases for foreign architectures, not
5859 # cross-compiling QEMU itself.
5861 if has
"docker"; then
5862 docker
=$
($python $source_path/tests
/docker
/docker.py probe
)
5865 ##########################################
5868 if test "$libpmem" != "no"; then
5869 if $pkg_config --exists "libpmem"; then
5871 libpmem_libs
=$
($pkg_config --libs libpmem
)
5872 libpmem_cflags
=$
($pkg_config --cflags libpmem
)
5873 libs_softmmu
="$libs_softmmu $libpmem_libs"
5874 QEMU_CFLAGS
="$QEMU_CFLAGS $libpmem_cflags"
5876 if test "$libpmem" = "yes" ; then
5877 feature_not_found
"libpmem" "Install nvml or pmdk"
5883 ##########################################
5888 if $pkg_config slirp
; then
5890 elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
5892 elif test -e "${source_path}/slirp/Makefile" ; then
5894 elif test -z "$slirp" ; then
5897 feature_not_found
"slirp" "Install slirp devel or git submodule"
5902 if ! $pkg_config slirp
; then
5903 feature_not_found
"slirp" "Install slirp devel"
5910 if test "$slirp" = git
; then
5911 git_submodules
="${git_submodules} slirp"
5914 slirp_cflags
="-I\$(SRC_PATH)/slirp/src -I\$(BUILD_DIR)/slirp/src"
5915 slirp_libs
="-L\$(BUILD_DIR)/slirp -lslirp"
5919 slirp_version
=$
($pkg_config --modversion slirp
2>/dev
/null
)
5920 slirp_cflags
=$
($pkg_config --cflags slirp
2>/dev
/null
)
5921 slirp_libs
=$
($pkg_config --libs slirp
2>/dev
/null
)
5927 error_exit
"Unknown state for slirp: $slirp"
5932 ##########################################
5934 # After here, no more $cc or $ld runs
5938 if test "$gcov" = "yes" ; then
5939 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5940 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5941 elif test "$fortify_source" = "yes" ; then
5942 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5943 elif test "$debug" = "no"; then
5944 CFLAGS
="-O2 $CFLAGS"
5947 if test "$have_asan" = "yes"; then
5948 CFLAGS
="-fsanitize=address $CFLAGS"
5949 if test "$have_asan_iface_h" = "no" ; then
5950 echo "ASAN build enabled, but ASAN header missing." \
5951 "Without code annotation, the report may be inferior."
5952 elif test "$have_asan_iface_fiber" = "no" ; then
5953 echo "ASAN build enabled, but ASAN header is too old." \
5954 "Without code annotation, the report may be inferior."
5957 if test "$have_ubsan" = "yes"; then
5958 CFLAGS
="-fsanitize=undefined $CFLAGS"
5961 ##########################################
5963 if test "$libnfs" != "no" ; then
5964 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5966 libnfs_libs
=$
($pkg_config --libs libnfs
)
5968 if test "$libnfs" = "yes" ; then
5969 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5975 ##########################################
5976 # Do we have libudev
5977 if test "$libudev" != "no" ; then
5978 if $pkg_config libudev
&& test "$static" != "yes"; then
5980 libudev_libs
=$
($pkg_config --libs libudev
)
5986 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5987 if test "$werror" = "yes"; then
5988 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5991 if test "$solaris" = "no" ; then
5992 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5993 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5997 # test if pod2man has --utf8 option
5998 if pod2man
--help |
grep -q utf8
; then
5999 POD2MAN
="pod2man --utf8"
6004 # Use ASLR, no-SEH and DEP if available
6005 if test "$mingw32" = "yes" ; then
6006 for flag
in --dynamicbase --no-seh --nxcompat; do
6007 if ld_has
$flag ; then
6008 LDFLAGS
="-Wl,$flag $LDFLAGS"
6013 # Disable OpenBSD W^X if available
6014 if test "$tcg" = "yes" && test "$targetos" = "OpenBSD"; then
6016 int main(void) { return 0; }
6018 wx_ldflags
="-Wl,-z,wxneeded"
6019 if compile_prog
"" "$wx_ldflags"; then
6020 QEMU_LDFLAGS
="$QEMU_LDFLAGS $wx_ldflags"
6024 qemu_confdir
=$sysconfdir$confsuffix
6025 qemu_moddir
=$libdir$confsuffix
6026 qemu_datadir
=$datadir$confsuffix
6027 qemu_localedir
="$datadir/locale"
6028 qemu_icondir
="$datadir/icons"
6029 qemu_desktopdir
="$datadir/applications"
6031 # We can only support ivshmem if we have eventfd
6032 if [ "$eventfd" = "yes" ]; then
6037 if test "$want_tools" = "yes" ; then
6038 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools"
6039 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
6040 tools
="qemu-nbd\$(EXESUF) $tools"
6042 if [ "$ivshmem" = "yes" ]; then
6043 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
6045 if [ "$curl" = "yes" ]; then
6046 tools
="elf2dmp\$(EXESUF) $tools"
6049 if test "$softmmu" = yes ; then
6050 if test "$linux" = yes; then
6051 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
6053 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
6055 if test "$virtfs" = yes; then
6056 error_exit
"VirtFS requires libcap devel and libattr devel"
6060 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
6063 if test "$mpath" = yes; then
6064 error_exit
"Multipath requires libmpathpersist devel"
6068 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
6070 if test "$virtfs" = yes; then
6071 error_exit
"VirtFS is supported only on Linux"
6074 if test "$mpath" = yes; then
6075 error_exit
"Multipath is supported only on Linux"
6079 if test "$xkbcommon" = "yes"; then
6080 tools
="qemu-keymap\$(EXESUF) $tools"
6084 # Probe for guest agent support/options
6086 if [ "$guest_agent" != "no" ]; then
6087 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
6088 tools
="qemu-ga $tools"
6090 elif [ "$guest_agent" != yes ]; then
6093 error_exit
"Guest agent is not supported on this platform"
6097 # Guest agent Window MSI package
6099 if test "$guest_agent" != yes; then
6100 if test "$guest_agent_msi" = yes; then
6101 error_exit
"MSI guest agent package requires guest agent enabled"
6104 elif test "$mingw32" != "yes"; then
6105 if test "$guest_agent_msi" = "yes"; then
6106 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
6109 elif ! has wixl
; then
6110 if test "$guest_agent_msi" = "yes"; then
6111 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
6115 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
6116 # disabled explicitly
6117 if test "$guest_agent_msi" != "no"; then
6122 if test "$guest_agent_msi" = "yes"; then
6123 if test "$guest_agent_with_vss" = "yes"; then
6124 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
6127 if test "$QEMU_GA_MANUFACTURER" = ""; then
6128 QEMU_GA_MANUFACTURER
=QEMU
6131 if test "$QEMU_GA_DISTRO" = ""; then
6132 QEMU_GA_DISTRO
=Linux
6135 if test "$QEMU_GA_VERSION" = ""; then
6136 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
6139 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
6143 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
6146 QEMU_GA_MSI_ARCH
="-D Arch=32"
6149 error_exit
"CPU $cpu not supported for building installation package"
6154 # Mac OS X ships with a broken assembler
6156 if { test "$cpu" = "i386" ||
test "$cpu" = "x86_64"; } && \
6157 test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \
6158 test "$softmmu" = yes ; then
6159 # Different host OS linkers have different ideas about the name of the ELF
6160 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
6161 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
6162 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
6163 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
6164 ld_i386_emulation
="$emu"
6170 if test "$cpu" = "ppc64" && test "$targetos" != "Darwin" ; then
6171 roms
="$roms spapr-rtas"
6174 # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
6175 if test "$cpu" = "s390x" ; then
6177 if compile_prog
"-march=z900" ""; then
6178 roms
="$roms s390-ccw"
6182 # Probe for the need for relocating the user-only binary.
6183 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
6186 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
6187 # ??? Rationale for choosing this address
6188 textseg_addr
=0x60000000
6191 # A 256M aligned address, high in the address space, with enough
6192 # room for the code_gen_buffer above it before the stack.
6193 textseg_addr
=0x60000000
6196 if [ -n "$textseg_addr" ]; then
6198 int main(void) { return 0; }
6200 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
6201 if ! compile_prog
"" "$textseg_ldflags"; then
6202 # In case ld does not support -Ttext-segment, edit the default linker
6203 # script via sed to set the .text start addr. This is needed on FreeBSD
6205 if ! $ld --verbose >/dev
/null
2>&1; then
6207 "We need to link the QEMU user mode binaries at a" \
6208 "specific text address. Unfortunately your linker" \
6209 "doesn't support either the -Ttext-segment option or" \
6210 "printing the default linker script with --verbose." \
6211 "If you don't want the user mode binaries, pass the" \
6212 "--disable-user option to configure."
6215 $ld --verbose |
sed \
6216 -e '1,/==================================================/d' \
6217 -e '/==================================================/,$d' \
6218 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
6219 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
6220 textseg_ldflags
="-Wl,-T../config-host.ld"
6225 # Check that the C++ compiler exists and works with the C compiler.
6226 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
6229 int c_function(void);
6230 int main(void) { return c_function(); }
6237 int c_function(void);
6239 int c_function(void) { return 42; }
6244 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
6245 # C++ compiler $cxx works ok with C compiler $cc
6248 echo "C++ compiler $cxx does not work with C compiler $cc"
6249 echo "Disabling C++ specific optional code"
6253 echo "No C++ compiler available; disabling C++ specific optional code"
6258 if test "$1" = "yes" ; then
6263 # prepend pixman and ftd flags after all config tests are done
6264 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
6265 QEMU_LDFLAGS
="$fdt_ldflags $QEMU_LDFLAGS"
6266 libs_softmmu
="$pixman_libs $libs_softmmu"
6268 echo "Install prefix $prefix"
6269 echo "BIOS directory $(eval echo $qemu_datadir)"
6270 echo "firmware path $(eval echo $firmwarepath)"
6271 echo "binary directory $(eval echo $bindir)"
6272 echo "library directory $(eval echo $libdir)"
6273 echo "module directory $(eval echo $qemu_moddir)"
6274 echo "libexec directory $(eval echo $libexecdir)"
6275 echo "include directory $(eval echo $includedir)"
6276 echo "config directory $(eval echo $sysconfdir)"
6277 if test "$mingw32" = "no" ; then
6278 echo "local state directory $(eval echo $local_statedir)"
6279 echo "Manual directory $(eval echo $mandir)"
6280 echo "ELF interp prefix $interp_prefix"
6282 echo "local state directory queried at runtime"
6283 echo "Windows SDK $win_sdk"
6285 echo "Source path $source_path"
6286 echo "GIT binary $git"
6287 echo "GIT submodules $git_submodules"
6288 echo "C compiler $cc"
6289 echo "Host C compiler $host_cc"
6290 echo "C++ compiler $cxx"
6291 echo "Objective-C compiler $objcc"
6292 echo "ARFLAGS $ARFLAGS"
6293 echo "CFLAGS $CFLAGS"
6294 echo "QEMU_CFLAGS $QEMU_CFLAGS"
6295 echo "LDFLAGS $LDFLAGS"
6296 echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
6298 echo "install $install"
6299 echo "python $python ($python_version)"
6300 echo "slirp support $slirp $(echo_version $slirp $slirp_version)"
6301 if test "$slirp" != "no" ; then
6304 echo "module support $modules"
6305 echo "host CPU $cpu"
6306 echo "host big endian $bigendian"
6307 echo "target list $target_list"
6308 echo "gprof enabled $gprof"
6309 echo "sparse enabled $sparse"
6310 echo "strip binaries $strip_opt"
6311 echo "profiler $profiler"
6312 echo "static build $static"
6313 if test "$darwin" = "yes" ; then
6314 echo "Cocoa support $cocoa"
6316 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
6317 echo "SDL image support $sdl_image"
6318 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
6319 echo "GTK GL support $gtk_gl"
6320 echo "VTE support $vte $(echo_version $vte $vteversion)"
6321 echo "TLS priority $tls_priority"
6322 echo "GNUTLS support $gnutls"
6323 echo "libgcrypt $gcrypt"
6324 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
6325 echo "libtasn1 $tasn1"
6326 echo "PAM $auth_pam"
6327 echo "iconv support $iconv"
6328 echo "curses support $curses"
6329 echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
6330 echo "curl support $curl"
6331 echo "mingw32 support $mingw32"
6332 echo "Audio drivers $audio_drv_list"
6333 echo "Block whitelist (rw) $block_drv_rw_whitelist"
6334 echo "Block whitelist (ro) $block_drv_ro_whitelist"
6335 echo "VirtFS support $virtfs"
6336 echo "Multipath support $mpath"
6337 echo "VNC support $vnc"
6338 if test "$vnc" = "yes" ; then
6339 echo "VNC SASL support $vnc_sasl"
6340 echo "VNC JPEG support $vnc_jpeg"
6341 echo "VNC PNG support $vnc_png"
6343 if test -n "$sparc_cpu"; then
6344 echo "Target Sparc Arch $sparc_cpu"
6346 echo "xen support $xen"
6347 if test "$xen" = "yes" ; then
6348 echo "xen ctrl version $xen_ctrl_version"
6350 echo "brlapi support $brlapi"
6351 echo "bluez support $bluez"
6352 echo "Documentation $docs"
6354 echo "vde support $vde"
6355 echo "netmap support $netmap"
6356 echo "Linux AIO support $linux_aio"
6357 echo "ATTR/XATTR support $attr"
6358 echo "Install blobs $blobs"
6359 echo "KVM support $kvm"
6360 echo "HAX support $hax"
6361 echo "HVF support $hvf"
6362 echo "WHPX support $whpx"
6363 echo "TCG support $tcg"
6364 if test "$tcg" = "yes" ; then
6365 echo "TCG debug enabled $debug_tcg"
6366 echo "TCG interpreter $tcg_interpreter"
6368 echo "malloc trim support $malloc_trim"
6369 echo "RDMA support $rdma"
6370 echo "PVRDMA support $pvrdma"
6371 echo "fdt support $fdt"
6372 echo "membarrier $membarrier"
6373 echo "preadv support $preadv"
6374 echo "fdatasync $fdatasync"
6375 echo "madvise $madvise"
6376 echo "posix_madvise $posix_madvise"
6377 echo "posix_memalign $posix_memalign"
6378 echo "libcap-ng support $cap_ng"
6379 echo "vhost-net support $vhost_net"
6380 echo "vhost-crypto support $vhost_crypto"
6381 echo "vhost-scsi support $vhost_scsi"
6382 echo "vhost-vsock support $vhost_vsock"
6383 echo "vhost-user support $vhost_user"
6384 echo "Trace backends $trace_backends"
6385 if have_backend
"simple"; then
6386 echo "Trace output file $trace_file-<pid>"
6388 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
6389 echo "rbd support $rbd"
6390 echo "xfsctl support $xfs"
6391 echo "smartcard support $smartcard"
6392 echo "libusb $libusb"
6393 echo "usb net redir $usb_redir"
6394 echo "OpenGL support $opengl"
6395 echo "OpenGL dmabufs $opengl_dmabuf"
6396 echo "libiscsi support $libiscsi"
6397 echo "libnfs support $libnfs"
6398 echo "build guest agent $guest_agent"
6399 echo "QGA VSS support $guest_agent_with_vss"
6400 echo "QGA w32 disk info $guest_agent_ntddscsi"
6401 echo "QGA MSI support $guest_agent_msi"
6402 echo "seccomp support $seccomp"
6403 echo "coroutine backend $coroutine"
6404 echo "coroutine pool $coroutine_pool"
6405 echo "debug stack usage $debug_stack_usage"
6406 echo "mutex debugging $debug_mutex"
6407 echo "crypto afalg $crypto_afalg"
6408 echo "GlusterFS support $glusterfs"
6409 echo "gcov $gcov_tool"
6410 echo "gcov enabled $gcov"
6411 echo "TPM support $tpm"
6412 echo "libssh2 support $libssh2"
6413 echo "TPM passthrough $tpm_passthrough"
6414 echo "TPM emulator $tpm_emulator"
6415 echo "QOM debugging $qom_cast_debug"
6416 echo "Live block migration $live_block_migration"
6417 echo "lzo support $lzo"
6418 echo "snappy support $snappy"
6419 echo "bzip2 support $bzip2"
6420 echo "lzfse support $lzfse"
6421 echo "NUMA host support $numa"
6422 echo "libxml2 $libxml2"
6423 echo "tcmalloc support $tcmalloc"
6424 echo "jemalloc support $jemalloc"
6425 echo "avx2 optimization $avx2_opt"
6426 echo "replication support $replication"
6427 echo "VxHS block device $vxhs"
6428 echo "bochs support $bochs"
6429 echo "cloop support $cloop"
6430 echo "dmg support $dmg"
6431 echo "qcow v1 support $qcow1"
6432 echo "vdi support $vdi"
6433 echo "vvfat support $vvfat"
6434 echo "qed support $qed"
6435 echo "parallels support $parallels"
6436 echo "sheepdog support $sheepdog"
6437 echo "capstone $capstone"
6438 echo "docker $docker"
6439 echo "libpmem support $libpmem"
6440 echo "libudev $libudev"
6441 echo "default devices $default_devices"
6443 if test "$supported_cpu" = "no"; then
6445 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
6447 echo "CPU host architecture $cpu support is not currently maintained."
6448 echo "The QEMU project intends to remove support for this host CPU in"
6449 echo "a future release if nobody volunteers to maintain it and to"
6450 echo "provide a build host for our continuous integration setup."
6451 echo "configure has succeeded and you can continue to build, but"
6452 echo "if you care about QEMU on this platform you should contact"
6453 echo "us upstream at qemu-devel@nongnu.org."
6456 if test "$supported_os" = "no"; then
6458 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
6460 echo "Host OS $targetos support is not currently maintained."
6461 echo "The QEMU project intends to remove support for this host OS in"
6462 echo "a future release if nobody volunteers to maintain it and to"
6463 echo "provide a build host for our continuous integration setup."
6464 echo "configure has succeeded and you can continue to build, but"
6465 echo "if you care about QEMU on this platform you should contact"
6466 echo "us upstream at qemu-devel@nongnu.org."
6469 config_host_mak
="config-host.mak"
6471 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
6473 echo "# Automatically generated by configure - do not modify" > $config_host_mak
6474 echo >> $config_host_mak
6476 echo all
: >> $config_host_mak
6477 echo "prefix=$prefix" >> $config_host_mak
6478 echo "bindir=$bindir" >> $config_host_mak
6479 echo "libdir=$libdir" >> $config_host_mak
6480 echo "libexecdir=$libexecdir" >> $config_host_mak
6481 echo "includedir=$includedir" >> $config_host_mak
6482 echo "mandir=$mandir" >> $config_host_mak
6483 echo "sysconfdir=$sysconfdir" >> $config_host_mak
6484 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
6485 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
6486 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
6487 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
6488 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
6489 if test "$mingw32" = "no" ; then
6490 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
6492 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
6493 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
6494 echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
6495 echo "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak
6496 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
6497 echo "GIT=$git" >> $config_host_mak
6498 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
6499 echo "GIT_UPDATE=$git_update" >> $config_host_mak
6501 echo "ARCH=$ARCH" >> $config_host_mak
6503 if test "$default_devices" = "yes" ; then
6504 echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak
6506 echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak
6508 if test "$debug_tcg" = "yes" ; then
6509 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
6511 if test "$strip_opt" = "yes" ; then
6512 echo "STRIP=${strip}" >> $config_host_mak
6514 if test "$bigendian" = "yes" ; then
6515 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
6517 if test "$mingw32" = "yes" ; then
6518 echo "CONFIG_WIN32=y" >> $config_host_mak
6519 rc_version
=$
(cat $source_path/VERSION
)
6520 version_major
=${rc_version%%.*}
6521 rc_version
=${rc_version#*.}
6522 version_minor
=${rc_version%%.*}
6523 rc_version
=${rc_version#*.}
6524 version_subminor
=${rc_version%%.*}
6526 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6527 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6528 if test "$guest_agent_with_vss" = "yes" ; then
6529 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
6530 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
6531 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
6533 if test "$guest_agent_ntddscsi" = "yes" ; then
6534 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
6536 if test "$guest_agent_msi" = "yes"; then
6537 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
6538 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6539 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6540 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6541 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6542 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6543 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6546 echo "CONFIG_POSIX=y" >> $config_host_mak
6549 if test "$linux" = "yes" ; then
6550 echo "CONFIG_LINUX=y" >> $config_host_mak
6553 if test "$darwin" = "yes" ; then
6554 echo "CONFIG_DARWIN=y" >> $config_host_mak
6557 if test "$solaris" = "yes" ; then
6558 echo "CONFIG_SOLARIS=y" >> $config_host_mak
6560 if test "$haiku" = "yes" ; then
6561 echo "CONFIG_HAIKU=y" >> $config_host_mak
6563 if test "$static" = "yes" ; then
6564 echo "CONFIG_STATIC=y" >> $config_host_mak
6566 if test "$profiler" = "yes" ; then
6567 echo "CONFIG_PROFILER=y" >> $config_host_mak
6569 if test "$slirp" != "no"; then
6570 echo "CONFIG_SLIRP=y" >> $config_host_mak
6571 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
6572 echo "SLIRP_CFLAGS=$slirp_cflags" >> $config_host_mak
6573 echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak
6575 if [ "$slirp" = "git" -o "$slirp" = "internal" ]; then
6576 echo "config-host.h: subdir-slirp" >> $config_host_mak
6578 if test "$vde" = "yes" ; then
6579 echo "CONFIG_VDE=y" >> $config_host_mak
6580 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
6582 if test "$netmap" = "yes" ; then
6583 echo "CONFIG_NETMAP=y" >> $config_host_mak
6585 if test "$l2tpv3" = "yes" ; then
6586 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6588 if test "$cap_ng" = "yes" ; then
6589 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6591 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
6592 for drv
in $audio_drv_list; do
6593 def
=CONFIG_AUDIO_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
6595 alsa | oss | pa | sdl
)
6596 echo "$def=m" >> $config_host_mak ;;
6598 echo "$def=y" >> $config_host_mak ;;
6601 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6602 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6603 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6604 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6605 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
6606 if test "$audio_pt_int" = "yes" ; then
6607 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6609 if test "$audio_win_int" = "yes" ; then
6610 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6612 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6613 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
6614 if test "$vnc" = "yes" ; then
6615 echo "CONFIG_VNC=y" >> $config_host_mak
6617 if test "$vnc_sasl" = "yes" ; then
6618 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
6620 if test "$vnc_jpeg" = "yes" ; then
6621 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
6623 if test "$vnc_png" = "yes" ; then
6624 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
6626 if test "$xkbcommon" = "yes" ; then
6627 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6628 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6630 if test "$xfs" = "yes" ; then
6631 echo "CONFIG_XFS=y" >> $config_host_mak
6633 qemu_version
=$
(head $source_path/VERSION
)
6634 echo "VERSION=$qemu_version" >>$config_host_mak
6635 echo "PKGVERSION=$pkgversion" >>$config_host_mak
6636 echo "SRC_PATH=$source_path" >> $config_host_mak
6637 echo "TARGET_DIRS=$target_list" >> $config_host_mak
6638 if [ "$docs" = "yes" ] ; then
6639 echo "BUILD_DOCS=yes" >> $config_host_mak
6641 if test "$modules" = "yes"; then
6642 # $shacmd can generate a hash started with digit, which the compiler doesn't
6643 # like as an symbol. So prefix it with an underscore
6644 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
6645 echo "CONFIG_MODULES=y" >> $config_host_mak
6647 if test "$have_x11" = "yes" && test "$need_x11" = "yes"; then
6648 echo "CONFIG_X11=y" >> $config_host_mak
6649 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6650 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6652 if test "$sdl" = "yes" ; then
6653 echo "CONFIG_SDL=m" >> $config_host_mak
6654 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
6655 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
6656 if test "$sdl_image" = "yes" ; then
6657 echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak
6660 if test "$cocoa" = "yes" ; then
6661 echo "CONFIG_COCOA=y" >> $config_host_mak
6663 if test "$iconv" = "yes" ; then
6664 echo "CONFIG_ICONV=y" >> $config_host_mak
6665 echo "ICONV_CFLAGS=$iconv_cflags" >> $config_host_mak
6666 echo "ICONV_LIBS=$iconv_lib" >> $config_host_mak
6668 if test "$curses" = "yes" ; then
6669 echo "CONFIG_CURSES=m" >> $config_host_mak
6670 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6671 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
6673 if test "$pipe2" = "yes" ; then
6674 echo "CONFIG_PIPE2=y" >> $config_host_mak
6676 if test "$accept4" = "yes" ; then
6677 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6679 if test "$splice" = "yes" ; then
6680 echo "CONFIG_SPLICE=y" >> $config_host_mak
6682 if test "$eventfd" = "yes" ; then
6683 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6685 if test "$memfd" = "yes" ; then
6686 echo "CONFIG_MEMFD=y" >> $config_host_mak
6688 if test "$have_usbfs" = "yes" ; then
6689 echo "CONFIG_USBFS=y" >> $config_host_mak
6691 if test "$fallocate" = "yes" ; then
6692 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6694 if test "$fallocate_punch_hole" = "yes" ; then
6695 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6697 if test "$fallocate_zero_range" = "yes" ; then
6698 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6700 if test "$posix_fallocate" = "yes" ; then
6701 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6703 if test "$sync_file_range" = "yes" ; then
6704 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6706 if test "$fiemap" = "yes" ; then
6707 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6709 if test "$dup3" = "yes" ; then
6710 echo "CONFIG_DUP3=y" >> $config_host_mak
6712 if test "$ppoll" = "yes" ; then
6713 echo "CONFIG_PPOLL=y" >> $config_host_mak
6715 if test "$prctl_pr_set_timerslack" = "yes" ; then
6716 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6718 if test "$epoll" = "yes" ; then
6719 echo "CONFIG_EPOLL=y" >> $config_host_mak
6721 if test "$epoll_create1" = "yes" ; then
6722 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6724 if test "$sendfile" = "yes" ; then
6725 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6727 if test "$timerfd" = "yes" ; then
6728 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6730 if test "$setns" = "yes" ; then
6731 echo "CONFIG_SETNS=y" >> $config_host_mak
6733 if test "$clock_adjtime" = "yes" ; then
6734 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6736 if test "$syncfs" = "yes" ; then
6737 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6739 if test "$inotify" = "yes" ; then
6740 echo "CONFIG_INOTIFY=y" >> $config_host_mak
6742 if test "$inotify1" = "yes" ; then
6743 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6745 if test "$sem_timedwait" = "yes" ; then
6746 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6748 if test "$strchrnul" = "yes" ; then
6749 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
6751 if test "$byteswap_h" = "yes" ; then
6752 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6754 if test "$bswap_h" = "yes" ; then
6755 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6757 if test "$curl" = "yes" ; then
6758 echo "CONFIG_CURL=m" >> $config_host_mak
6759 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
6760 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
6762 if test "$brlapi" = "yes" ; then
6763 echo "CONFIG_BRLAPI=y" >> $config_host_mak
6764 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
6766 if test "$bluez" = "yes" ; then
6767 echo "CONFIG_BLUEZ=y" >> $config_host_mak
6768 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
6770 if test "$gtk" = "yes" ; then
6771 echo "CONFIG_GTK=m" >> $config_host_mak
6772 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
6773 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
6774 if test "$gtk_gl" = "yes" ; then
6775 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6778 if test "$gio" = "yes" ; then
6779 echo "CONFIG_GIO=y" >> $config_host_mak
6780 echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
6781 echo "GIO_LIBS=$gio_libs" >> $config_host_mak
6783 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
6784 if test "$gnutls" = "yes" ; then
6785 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6787 if test "$gcrypt" = "yes" ; then
6788 echo "CONFIG_GCRYPT=y" >> $config_host_mak
6789 if test "$gcrypt_hmac" = "yes" ; then
6790 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6793 if test "$nettle" = "yes" ; then
6794 echo "CONFIG_NETTLE=y" >> $config_host_mak
6795 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
6797 if test "$tasn1" = "yes" ; then
6798 echo "CONFIG_TASN1=y" >> $config_host_mak
6800 if test "$auth_pam" = "yes" ; then
6801 echo "CONFIG_AUTH_PAM=y" >> $config_host_mak
6803 if test "$have_ifaddrs_h" = "yes" ; then
6804 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6806 if test "$have_broken_size_max" = "yes" ; then
6807 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6810 # Work around a system header bug with some kernel/XFS header
6811 # versions where they both try to define 'struct fsxattr':
6812 # xfs headers will not try to redefine structs from linux headers
6813 # if this macro is set.
6814 if test "$have_fsxattr" = "yes" ; then
6815 echo "HAVE_FSXATTR=y" >> $config_host_mak
6817 if test "$have_copy_file_range" = "yes" ; then
6818 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
6820 if test "$vte" = "yes" ; then
6821 echo "CONFIG_VTE=y" >> $config_host_mak
6822 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6823 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
6825 if test "$virglrenderer" = "yes" ; then
6826 echo "CONFIG_VIRGL=y" >> $config_host_mak
6827 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6828 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6830 if test "$xen" = "yes" ; then
6831 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
6832 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
6834 if test "$linux_aio" = "yes" ; then
6835 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6837 if test "$attr" = "yes" ; then
6838 echo "CONFIG_ATTR=y" >> $config_host_mak
6840 if test "$libattr" = "yes" ; then
6841 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6843 if test "$virtfs" = "yes" ; then
6844 echo "CONFIG_VIRTFS=y" >> $config_host_mak
6846 if test "$mpath" = "yes" ; then
6847 echo "CONFIG_MPATH=y" >> $config_host_mak
6848 if test "$mpathpersist_new_api" = "yes"; then
6849 echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
6852 if test "$vhost_scsi" = "yes" ; then
6853 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6855 if test "$vhost_net" = "yes" ; then
6856 echo "CONFIG_VHOST_NET=y" >> $config_host_mak
6858 if test "$vhost_net_user" = "yes" ; then
6859 echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak
6861 if test "$vhost_crypto" = "yes" ; then
6862 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6864 if test "$vhost_vsock" = "yes" ; then
6865 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6867 if test "$vhost_kernel" = "yes" ; then
6868 echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak
6870 if test "$vhost_user" = "yes" ; then
6871 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6873 if test "$blobs" = "yes" ; then
6874 echo "INSTALL_BLOBS=yes" >> $config_host_mak
6876 if test "$iovec" = "yes" ; then
6877 echo "CONFIG_IOVEC=y" >> $config_host_mak
6879 if test "$preadv" = "yes" ; then
6880 echo "CONFIG_PREADV=y" >> $config_host_mak
6882 if test "$fdt" != "no" ; then
6883 echo "CONFIG_FDT=y" >> $config_host_mak
6885 if test "$membarrier" = "yes" ; then
6886 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6888 if test "$signalfd" = "yes" ; then
6889 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6891 if test "$optreset" = "yes" ; then
6892 echo "HAVE_OPTRESET=y" >> $config_host_mak
6894 if test "$tcg" = "yes"; then
6895 echo "CONFIG_TCG=y" >> $config_host_mak
6896 if test "$tcg_interpreter" = "yes" ; then
6897 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6900 if test "$fdatasync" = "yes" ; then
6901 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6903 if test "$madvise" = "yes" ; then
6904 echo "CONFIG_MADVISE=y" >> $config_host_mak
6906 if test "$posix_madvise" = "yes" ; then
6907 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6909 if test "$posix_memalign" = "yes" ; then
6910 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6913 if test "$spice" = "yes" ; then
6914 echo "CONFIG_SPICE=y" >> $config_host_mak
6917 if test "$smartcard" = "yes" ; then
6918 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6919 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6920 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6923 if test "$libusb" = "yes" ; then
6924 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6925 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6926 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6929 if test "$usb_redir" = "yes" ; then
6930 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6931 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6932 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6935 if test "$opengl" = "yes" ; then
6936 echo "CONFIG_OPENGL=y" >> $config_host_mak
6937 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6938 if test "$opengl_dmabuf" = "yes" ; then
6939 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6943 if test "$malloc_trim" = "yes" ; then
6944 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6947 if test "$avx2_opt" = "yes" ; then
6948 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6951 if test "$lzo" = "yes" ; then
6952 echo "CONFIG_LZO=y" >> $config_host_mak
6955 if test "$snappy" = "yes" ; then
6956 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6959 if test "$bzip2" = "yes" ; then
6960 echo "CONFIG_BZIP2=y" >> $config_host_mak
6961 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6964 if test "$lzfse" = "yes" ; then
6965 echo "CONFIG_LZFSE=y" >> $config_host_mak
6966 echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
6969 if test "$libiscsi" = "yes" ; then
6970 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6971 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6972 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6975 if test "$libnfs" = "yes" ; then
6976 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6977 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6980 if test "$seccomp" = "yes"; then
6981 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6982 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6983 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6986 # XXX: suppress that
6987 if [ "$bsd" = "yes" ] ; then
6988 echo "CONFIG_BSD=y" >> $config_host_mak
6991 if test "$localtime_r" = "yes" ; then
6992 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6994 if test "$qom_cast_debug" = "yes" ; then
6995 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6997 if test "$rbd" = "yes" ; then
6998 echo "CONFIG_RBD=m" >> $config_host_mak
6999 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
7000 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
7003 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
7004 if test "$coroutine_pool" = "yes" ; then
7005 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
7007 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
7010 if test "$debug_stack_usage" = "yes" ; then
7011 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
7014 if test "$crypto_afalg" = "yes" ; then
7015 echo "CONFIG_AF_ALG=y" >> $config_host_mak
7018 if test "$open_by_handle_at" = "yes" ; then
7019 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
7022 if test "$linux_magic_h" = "yes" ; then
7023 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
7026 if test "$pragma_diagnostic_available" = "yes" ; then
7027 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
7030 if test "$valgrind_h" = "yes" ; then
7031 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
7034 if test "$have_asan_iface_fiber" = "yes" ; then
7035 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
7038 if test "$has_environ" = "yes" ; then
7039 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
7042 if test "$cpuid_h" = "yes" ; then
7043 echo "CONFIG_CPUID_H=y" >> $config_host_mak
7046 if test "$int128" = "yes" ; then
7047 echo "CONFIG_INT128=y" >> $config_host_mak
7050 if test "$atomic128" = "yes" ; then
7051 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
7054 if test "$cmpxchg128" = "yes" ; then
7055 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
7058 if test "$atomic64" = "yes" ; then
7059 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
7062 if test "$vector16" = "yes" ; then
7063 echo "CONFIG_VECTOR16=y" >> $config_host_mak
7066 if test "$getauxval" = "yes" ; then
7067 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
7070 if test "$glusterfs" = "yes" ; then
7071 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
7072 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
7073 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
7076 if test "$glusterfs_xlator_opt" = "yes" ; then
7077 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
7080 if test "$glusterfs_discard" = "yes" ; then
7081 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
7084 if test "$glusterfs_fallocate" = "yes" ; then
7085 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
7088 if test "$glusterfs_zerofill" = "yes" ; then
7089 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
7092 if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
7093 echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
7096 if test "$glusterfs_iocb_has_stat" = "yes" ; then
7097 echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak
7100 if test "$libssh2" = "yes" ; then
7101 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
7102 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
7103 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
7106 if test "$live_block_migration" = "yes" ; then
7107 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
7110 if test "$tpm" = "yes"; then
7111 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
7112 # TPM passthrough support?
7113 if test "$tpm_passthrough" = "yes"; then
7114 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
7116 # TPM emulator support?
7117 if test "$tpm_emulator" = "yes"; then
7118 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
7122 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
7123 if have_backend
"nop"; then
7124 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
7126 if have_backend
"simple"; then
7127 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
7128 # Set the appropriate trace file.
7129 trace_file
="\"$trace_file-\" FMT_pid"
7131 if have_backend
"log"; then
7132 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
7134 if have_backend
"ust"; then
7135 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
7137 if have_backend
"dtrace"; then
7138 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
7139 if test "$trace_backend_stap" = "yes" ; then
7140 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
7143 if have_backend
"ftrace"; then
7144 if test "$linux" = "yes" ; then
7145 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
7147 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
7150 if have_backend
"syslog"; then
7151 if test "$posix_syslog" = "yes" ; then
7152 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
7154 feature_not_found
"syslog(trace backend)" "syslog not available"
7157 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
7159 if test "$rdma" = "yes" ; then
7160 echo "CONFIG_RDMA=y" >> $config_host_mak
7161 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
7164 if test "$pvrdma" = "yes" ; then
7165 echo "CONFIG_PVRDMA=y" >> $config_host_mak
7168 if test "$have_rtnetlink" = "yes" ; then
7169 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
7172 if test "$libxml2" = "yes" ; then
7173 echo "CONFIG_LIBXML2=y" >> $config_host_mak
7174 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
7175 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
7178 if test "$replication" = "yes" ; then
7179 echo "CONFIG_REPLICATION=y" >> $config_host_mak
7182 if test "$have_af_vsock" = "yes" ; then
7183 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
7186 if test "$have_sysmacros" = "yes" ; then
7187 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
7190 if test "$have_static_assert" = "yes" ; then
7191 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
7194 if test "$have_utmpx" = "yes" ; then
7195 echo "HAVE_UTMPX=y" >> $config_host_mak
7198 if test "$ivshmem" = "yes" ; then
7199 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
7201 if test "$capstone" != "no" ; then
7202 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
7204 if test "$debug_mutex" = "yes" ; then
7205 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
7208 # Hold two types of flag:
7209 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
7210 # a thread we have a handle to
7211 # CONFIG_PTHREAD_SETNAME_NP_W_TID - A way of doing it on a particular
7213 if test "$pthread_setname_np_w_tid" = "yes" ; then
7214 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
7215 echo "CONFIG_PTHREAD_SETNAME_NP_W_TID=y" >> $config_host_mak
7216 elif test "$pthread_setname_np_wo_tid" = "yes" ; then
7217 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
7218 echo "CONFIG_PTHREAD_SETNAME_NP_WO_TID=y" >> $config_host_mak
7221 if test "$vxhs" = "yes" ; then
7222 echo "CONFIG_VXHS=y" >> $config_host_mak
7223 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
7226 if test "$libpmem" = "yes" ; then
7227 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
7230 if test "$bochs" = "yes" ; then
7231 echo "CONFIG_BOCHS=y" >> $config_host_mak
7233 if test "$cloop" = "yes" ; then
7234 echo "CONFIG_CLOOP=y" >> $config_host_mak
7236 if test "$dmg" = "yes" ; then
7237 echo "CONFIG_DMG=y" >> $config_host_mak
7239 if test "$qcow1" = "yes" ; then
7240 echo "CONFIG_QCOW1=y" >> $config_host_mak
7242 if test "$vdi" = "yes" ; then
7243 echo "CONFIG_VDI=y" >> $config_host_mak
7245 if test "$vvfat" = "yes" ; then
7246 echo "CONFIG_VVFAT=y" >> $config_host_mak
7248 if test "$qed" = "yes" ; then
7249 echo "CONFIG_QED=y" >> $config_host_mak
7251 if test "$parallels" = "yes" ; then
7252 echo "CONFIG_PARALLELS=y" >> $config_host_mak
7254 if test "$sheepdog" = "yes" ; then
7255 echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
7258 if test "$tcg_interpreter" = "yes"; then
7259 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
7260 elif test "$ARCH" = "sparc64" ; then
7261 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
7262 elif test "$ARCH" = "s390x" ; then
7263 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
7264 elif test "$ARCH" = "x86_64" ||
test "$ARCH" = "x32" ; then
7265 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
7266 elif test "$ARCH" = "ppc64" ; then
7267 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
7268 elif test "$ARCH" = "riscv32" ||
test "$ARCH" = "riscv64" ; then
7269 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/riscv $QEMU_INCLUDES"
7271 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
7273 QEMU_INCLUDES
="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
7275 echo "TOOLS=$tools" >> $config_host_mak
7276 echo "ROMS=$roms" >> $config_host_mak
7277 echo "MAKE=$make" >> $config_host_mak
7278 echo "INSTALL=$install" >> $config_host_mak
7279 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
7280 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
7281 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
7282 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
7283 echo "PYTHON=$python" >> $config_host_mak
7284 echo "PYTHON_VERSION=$python_version" >> $config_host_mak
7285 echo "CC=$cc" >> $config_host_mak
7286 if $iasl -h > /dev
/null
2>&1; then
7287 echo "IASL=$iasl" >> $config_host_mak
7289 echo "HOST_CC=$host_cc" >> $config_host_mak
7290 echo "CXX=$cxx" >> $config_host_mak
7291 echo "OBJCC=$objcc" >> $config_host_mak
7292 echo "AR=$ar" >> $config_host_mak
7293 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
7294 echo "AS=$as" >> $config_host_mak
7295 echo "CCAS=$ccas" >> $config_host_mak
7296 echo "CPP=$cpp" >> $config_host_mak
7297 echo "OBJCOPY=$objcopy" >> $config_host_mak
7298 echo "LD=$ld" >> $config_host_mak
7299 echo "RANLIB=$ranlib" >> $config_host_mak
7300 echo "NM=$nm" >> $config_host_mak
7301 echo "WINDRES=$windres" >> $config_host_mak
7302 echo "CFLAGS=$CFLAGS" >> $config_host_mak
7303 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
7304 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
7305 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
7306 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
7307 if test "$sparse" = "yes" ; then
7308 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
7309 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
7310 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
7311 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
7312 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
7314 if test "$cross_prefix" != ""; then
7315 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
7317 echo "AUTOCONF_HOST := " >> $config_host_mak
7319 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
7320 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
7321 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
7322 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
7323 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
7324 echo "LIBS+=$LIBS" >> $config_host_mak
7325 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
7326 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
7327 echo "EXESUF=$EXESUF" >> $config_host_mak
7328 echo "DSOSUF=$DSOSUF" >> $config_host_mak
7329 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
7330 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
7331 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
7332 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
7333 echo "POD2MAN=$POD2MAN" >> $config_host_mak
7334 if test "$gcov" = "yes" ; then
7335 echo "CONFIG_GCOV=y" >> $config_host_mak
7336 echo "GCOV=$gcov_tool" >> $config_host_mak
7339 if test "$docker" != "no"; then
7340 echo "HAVE_USER_DOCKER=y" >> $config_host_mak
7343 if test "$libudev" != "no"; then
7344 echo "CONFIG_LIBUDEV=y" >> $config_host_mak
7345 echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak
7348 # use included Linux headers
7349 if test "$linux" = "yes" ; then
7350 mkdir
-p linux-headers
7368 # For most CPUs the kernel architecture name and QEMU CPU name match.
7372 # For non-KVM architectures we will not have asm headers
7373 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
7374 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
7378 for target
in $target_list; do
7379 target_dir
="$target"
7380 config_target_mak
=$target_dir/config-target.mak
7381 target_name
=$
(echo $target | cut
-d '-' -f 1)
7382 target_bigendian
="no"
7384 case "$target_name" in
7385 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
7386 target_bigendian
=yes
7390 target_user_only
="no"
7391 target_linux_user
="no"
7392 target_bsd_user
="no"
7394 ${target_name}-softmmu)
7395 target_softmmu
="yes"
7397 ${target_name}-linux-user)
7398 target_user_only
="yes"
7399 target_linux_user
="yes"
7401 ${target_name}-bsd-user)
7402 target_user_only
="yes"
7403 target_bsd_user
="yes"
7406 error_exit
"Target '$target' not recognised"
7412 target_compiler_static
=""
7413 target_compiler_cflags
=""
7415 mkdir
-p $target_dir
7416 echo "# Automatically generated by configure - do not modify" > $config_target_mak
7420 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
7423 TARGET_ARCH
="$target_name"
7427 case "$target_name" in
7430 gdb_xml_files
="i386-32bit.xml"
7431 target_compiler
=$cross_cc_i386
7432 target_compiler_cflags
=$cross_cc_ccflags_i386
7435 TARGET_BASE_ARCH
=i386
7437 gdb_xml_files
="i386-64bit.xml"
7438 target_compiler
=$cross_cc_x86_64
7442 target_compiler
=$cross_cc_alpha
7448 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
7449 target_compiler
=$cross_cc_arm
7450 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
7454 TARGET_BASE_ARCH
=arm
7457 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
7458 target_compiler
=$cross_cc_aarch64
7459 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
7462 target_compiler
=$cross_cc_cris
7466 target_compiler
=$cross_cc_hppa
7469 target_compiler
=$cross_cc_lm32
7473 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
7474 target_compiler
=$cross_cc_m68k
7476 microblaze|microblazeel
)
7477 TARGET_ARCH
=microblaze
7479 echo "TARGET_ABI32=y" >> $config_target_mak
7480 target_compiler
=$cross_cc_microblaze
7485 target_compiler
=$cross_cc_mips
7486 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
7491 TARGET_BASE_ARCH
=mips
7492 target_compiler
=$cross_cc_mipsn32
7493 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
7494 echo "TARGET_ABI32=y" >> $config_target_mak
7499 TARGET_BASE_ARCH
=mips
7500 target_compiler
=$cross_cc_mips64
7501 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
7504 target_compiler
=$cross_cc_moxie
7507 target_compiler
=$cross_cc_nios2
7510 target_compiler
=$cross_cc_or1k
7511 TARGET_ARCH
=openrisc
7512 TARGET_BASE_ARCH
=openrisc
7515 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
7516 target_compiler
=$cross_cc_powerpc
7519 TARGET_BASE_ARCH
=ppc
7522 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7523 target_compiler
=$cross_cc_ppc64
7527 TARGET_BASE_ARCH
=ppc
7530 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7531 target_compiler
=$cross_cc_ppc64le
7535 TARGET_BASE_ARCH
=ppc
7537 echo "TARGET_ABI32=y" >> $config_target_mak
7538 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
7539 target_compiler
=$cross_cc_ppc64abi32
7542 TARGET_BASE_ARCH
=riscv
7543 TARGET_ABI_DIR
=riscv
7545 gdb_xml_files
="riscv-32bit-cpu.xml riscv-32bit-fpu.xml riscv-32bit-csr.xml"
7546 target_compiler
=$cross_cc_riscv32
7549 TARGET_BASE_ARCH
=riscv
7550 TARGET_ABI_DIR
=riscv
7552 gdb_xml_files
="riscv-64bit-cpu.xml riscv-64bit-fpu.xml riscv-64bit-csr.xml"
7553 target_compiler
=$cross_cc_riscv64
7558 target_compiler
=$cross_cc_sh4
7561 target_compiler
=$cross_cc_sparc
7564 TARGET_BASE_ARCH
=sparc
7565 target_compiler
=$cross_cc_sparc64
7569 TARGET_BASE_ARCH
=sparc
7570 TARGET_ABI_DIR
=sparc
7571 target_compiler
=$cross_cc_sparc32plus
7572 echo "TARGET_ABI32=y" >> $config_target_mak
7576 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
7577 target_compiler
=$cross_cc_s390x
7580 target_compiler
=$cross_cc_tilegx
7583 target_compiler
=$cross_cc_tricore
7586 target_compiler
=$cross_cc_unicore32
7592 target_compiler
=$cross_cc_xtensa
7595 error_exit
"Unsupported target CPU"
7598 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
7599 if [ "$TARGET_BASE_ARCH" = "" ]; then
7600 TARGET_BASE_ARCH
=$TARGET_ARCH
7603 # Do we have a cross compiler for this target?
7604 if has
$target_compiler; then
7608 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then
7609 # For host systems we might get away with building without -static
7610 if ! do_compiler
"$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then
7613 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7614 target_compiler_static
="n"
7617 enabled_cross_compilers
="${enabled_cross_compilers} '${target_compiler}'"
7618 target_compiler_static
="y"
7624 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
7627 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
7630 target_arch_name
="$(upper $TARGET_ARCH)"
7631 echo "TARGET_$target_arch_name=y" >> $config_target_mak
7632 echo "TARGET_NAME=$target_name" >> $config_target_mak
7633 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
7634 if [ "$TARGET_ABI_DIR" = "" ]; then
7635 TARGET_ABI_DIR
=$TARGET_ARCH
7637 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
7638 if [ "$HOST_VARIANT_DIR" != "" ]; then
7639 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
7642 if supported_xen_target
$target; then
7643 echo "CONFIG_XEN=y" >> $config_target_mak
7644 echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak
7645 if test "$xen_pci_passthrough" = yes; then
7646 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
7649 echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak
7651 if supported_kvm_target
$target; then
7652 echo "CONFIG_KVM=y" >> $config_target_mak
7653 echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak
7655 echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak
7657 if supported_hax_target
$target; then
7658 echo "CONFIG_HAX=y" >> $config_target_mak
7660 if supported_hvf_target
$target; then
7661 echo "CONFIG_HVF=y" >> $config_target_mak
7663 if supported_whpx_target
$target; then
7664 echo "CONFIG_WHPX=y" >> $config_target_mak
7666 if test "$target_bigendian" = "yes" ; then
7667 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
7669 if test "$target_softmmu" = "yes" ; then
7670 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
7671 if test "$mttcg" = "yes" ; then
7672 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
7675 if test "$target_user_only" = "yes" ; then
7676 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
7677 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
7679 if test "$target_linux_user" = "yes" ; then
7680 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
7683 if test ! -z "$gdb_xml_files" ; then
7684 for x
in $gdb_xml_files; do
7685 list
="$list $source_path/gdb-xml/$x"
7687 echo "TARGET_XML_FILES=$list" >> $config_target_mak
7690 if test "$target_user_only" = "yes" && test "$bflt" = "yes"; then
7691 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
7693 if test "$target_bsd_user" = "yes" ; then
7694 echo "CONFIG_BSD_USER=y" >> $config_target_mak
7697 if test -n "$target_compiler"; then
7698 echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak
7700 if test -n "$target_compiler_static"; then
7701 echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak
7704 if test -n "$target_compiler_cflags"; then
7705 echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
7710 # generate QEMU_CFLAGS/LDFLAGS for targets
7716 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7717 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7720 for i
in $ARCH $TARGET_BASE_ARCH ; do
7723 disas_config
"ALPHA"
7726 if test -n "${cxx}"; then
7727 disas_config
"ARM_A64"
7732 if test -n "${cxx}"; then
7733 disas_config
"ARM_A64"
7752 disas_config
"MICROBLAZE"
7756 if test -n "${cxx}"; then
7757 disas_config
"NANOMIPS"
7761 disas_config
"MOXIE"
7764 disas_config
"NIOS2"
7767 disas_config
"OPENRISC"
7773 disas_config
"RISCV"
7782 disas_config
"SPARC"
7785 disas_config
"XTENSA"
7789 if test "$tcg_interpreter" = "yes" ; then
7795 # Ensure there's only a single GP
7796 cflags
="-msmall-data $cflags"
7800 if test "$gprof" = "yes" ; then
7801 echo "TARGET_GPROF=y" >> $config_target_mak
7802 if test "$target_linux_user" = "yes" ; then
7804 ldflags
="-p $ldflags"
7806 if test "$target_softmmu" = "yes" ; then
7807 ldflags
="-p $ldflags"
7808 echo "GPROF_CFLAGS=-p" >> $config_target_mak
7812 if test "$target_linux_user" = "yes" ||
test "$target_bsd_user" = "yes" ; then
7813 ldflags
="$ldflags $textseg_ldflags"
7816 # Newer kernels on s390 check for an S390_PGSTE program header and
7817 # enable the pgste page table extensions in that case. This makes
7818 # the vm.allocate_pgste sysctl unnecessary. We enable this program
7820 # - we build on s390x
7821 # - we build the system emulation for s390x (qemu-system-s390x)
7823 # - the linker supports --s390-pgste
7824 if test "$TARGET_ARCH" = "s390x" && test "$target_softmmu" = "yes" && \
7825 test "$ARCH" = "s390x" && test "$kvm" = "yes"; then
7826 if ld_has
--s390-pgste ; then
7827 ldflags
="-Wl,--s390-pgste $ldflags"
7831 echo "LDFLAGS+=$ldflags" >> $config_target_mak
7832 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
7834 done # for target in $targets
7836 if test -n "$enabled_cross_compilers"; then
7838 echo "NOTE: cross-compilers enabled: $enabled_cross_compilers"
7841 if [ "$fdt" = "git" ]; then
7842 echo "config-host.h: subdir-dtc" >> $config_host_mak
7844 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7845 echo "config-host.h: subdir-capstone" >> $config_host_mak
7847 if test -n "$LIBCAPSTONE"; then
7848 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7851 if test "$numa" = "yes"; then
7852 echo "CONFIG_NUMA=y" >> $config_host_mak
7855 if test "$ccache_cpp2" = "yes"; then
7856 echo "export CCACHE_CPP2=y" >> $config_host_mak
7859 # If we're using a separate build tree, set it up now.
7860 # DIRS are directories which we simply mkdir in the build tree;
7861 # LINKS are things to symlink back into the source tree
7862 # (these can be both files and directories).
7863 # Caution: do not add files or directories here using wildcards. This
7864 # will result in problems later if a new file matching the wildcard is
7865 # added to the source tree -- nothing will cause configure to be rerun
7866 # so the build tree will be missing the link back to the new file, and
7867 # tests might fail. Prefer to keep the relevant files in their own
7868 # directory and symlink the directory instead.
7869 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
7870 DIRS
="$DIRS tests/fp tests/qgraph"
7871 DIRS
="$DIRS docs docs/interop fsdev scsi"
7872 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
7873 DIRS
="$DIRS roms/seabios roms/vgabios"
7874 LINKS
="Makefile tests/tcg/Makefile"
7875 LINKS
="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
7876 LINKS
="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
7877 LINKS
="$LINKS tests/fp/Makefile"
7878 LINKS
="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
7879 LINKS
="$LINKS pc-bios/spapr-rtas/Makefile"
7880 LINKS
="$LINKS pc-bios/s390-ccw/Makefile"
7881 LINKS
="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
7882 LINKS
="$LINKS pc-bios/qemu-icon.bmp"
7883 LINKS
="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
7884 LINKS
="$LINKS tests/acceptance tests/data"
7885 LINKS
="$LINKS tests/qemu-iotests/check"
7886 LINKS
="$LINKS python"
7888 $source_path/pc-bios
/*.bin \
7889 $source_path/pc-bios
/*.lid \
7890 $source_path/pc-bios
/*.aml \
7891 $source_path/pc-bios
/*.rom \
7892 $source_path/pc-bios
/*.dtb \
7893 $source_path/pc-bios
/*.img \
7894 $source_path/pc-bios
/openbios-
* \
7895 $source_path/pc-bios
/u-boot.
* \
7896 $source_path/pc-bios
/edk2-
*.fd.bz2 \
7897 $source_path/pc-bios
/palcode-
*
7899 LINKS
="$LINKS pc-bios/$(basename $bios_file)"
7902 for f
in $LINKS ; do
7903 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
7904 symlink
"$source_path/$f" "$f"
7908 # temporary config to build submodules
7909 for rom
in seabios vgabios
; do
7910 config_mak
=roms
/$rom/config.mak
7911 echo "# Automatically generated by configure - do not modify" > $config_mak
7912 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
7913 echo "AS=$as" >> $config_mak
7914 echo "CCAS=$ccas" >> $config_mak
7915 echo "CC=$cc" >> $config_mak
7916 echo "BCC=bcc" >> $config_mak
7917 echo "CPP=$cpp" >> $config_mak
7918 echo "OBJCOPY=objcopy" >> $config_mak
7919 echo "IASL=$iasl" >> $config_mak
7920 echo "LD=$ld" >> $config_mak
7921 echo "RANLIB=$ranlib" >> $config_mak
7924 # set up qemu-iotests in this build directory
7925 iotests_common_env
="tests/qemu-iotests/common.env"
7927 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7928 echo >> "$iotests_common_env"
7929 echo "export PYTHON='$python'" >> "$iotests_common_env"
7931 # Save the configure command line for later reuse.
7932 cat <<EOD >config.status
7934 # Generated by configure.
7935 # Run this file to recreate the current configuration.
7936 # Compiler output produced by configure, useful for debugging
7937 # configure, is in config.log if it exists.
7943 eval envval
=\$
$envname
7945 if test -n "$envval"
7947 echo "$envname='$envval'" >> config.status
7948 echo "export $envname" >> config.status
7950 echo "unset $envname" >> config.status
7954 # Preserve various env variables that influence what
7955 # features/build target configure will detect
7961 preserve_env INSTALL
7963 preserve_env LD_LIBRARY_PATH
7964 preserve_env LIBTOOL
7967 preserve_env OBJCOPY
7969 preserve_env PKG_CONFIG
7970 preserve_env PKG_CONFIG_LIBDIR
7971 preserve_env PKG_CONFIG_PATH
7973 preserve_env SDL_CONFIG
7974 preserve_env SDL2_CONFIG
7977 preserve_env WINDRES
7979 printf "exec" >>config.status
7980 printf " '%s'" "$0" "$@" >>config.status
7981 echo ' "$@"' >>config.status
7982 chmod +x config.status