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 # make source path absolute
15 source_path
=$
(cd "$(dirname -- "$0")"; pwd)
17 if test "$PWD" = "$source_path"
19 echo "Using './build' as the directory for build output"
21 MARKER
=build
/auto-created-by-configure
29 echo "ERROR: ./build dir already exists and was not previously created by configure"
37 cat > GNUmakefile
<<'EOF'
38 # This file is auto-generated by configure to support in-source tree
39 # 'make' command invocation
41 ifeq ($(MAKECMDGOALS),)
47 @echo 'changing dir to build for $(MAKE) "$(MAKECMDGOALS)"...'
48 @$(MAKE) -C build -f Makefile $(MAKECMDGOALS)
49 @if test "$(MAKECMDGOALS)" = "distclean" && \
50 test -e build/auto-created-by-configure ; \
52 rm -rf build GNUmakefile ; \
60 exec $source_path/configure
"$@"
63 # Temporary directory used for files created while
64 # configure runs. Since it is in the build directory
65 # we can safely blow away any previous version of it
66 # (and we need not jump through hoops to try to delete
67 # it when configure exits.)
72 echo "ERROR: failed to create temporary directory"
77 TMPC
="${TMPDIR1}/${TMPB}.c"
78 TMPO
="${TMPDIR1}/${TMPB}.o"
79 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
80 TMPE
="${TMPDIR1}/${TMPB}.exe"
81 TMPTXT
="${TMPDIR1}/${TMPB}.txt"
85 # Print a helpful header at the top of config.log
86 echo "# QEMU configure log $(date)" >> config.log
87 printf "# Configured with:" >> config.log
88 printf " '%s'" "$0" "$@" >> config.log
90 echo "#" >> config.log
95 while test -n "$2"; do
108 # Run the compiler, capturing its output to the log. First argument
109 # is compiler binary to execute.
112 if test -n "$BASH_VERSION"; then eval '
114 funcs: ${FUNCNAME[*]}
115 lines: ${BASH_LINENO[*]}"
117 echo $compiler "$@" >> config.log
118 $compiler "$@" >> config.log
2>&1 ||
return $?
119 # Test passed. If this is an --enable-werror build, rerun
120 # the test with -Werror and bail out if it fails. This
121 # makes warning-generating-errors in configure test code
122 # obvious to developers.
123 if test "$werror" != "yes"; then
126 # Don't bother rerunning the compile if we were already using -Werror
132 echo $compiler -Werror "$@" >> config.log
133 $compiler -Werror "$@" >> config.log
2>&1 && return $?
134 error_exit
"configure test passed without -Werror but failed with -Werror." \
135 "This is probably a bug in the configure script. The failing command" \
136 "will be at the bottom of config.log." \
137 "You can run configure with --disable-werror to bypass this check."
141 do_compiler
"$cc" "$@"
145 do_compiler
"$cxx" "$@"
148 # Append $2 to the variable named $1, with space separation
150 eval $1=\
${$1:+\"\$$1 \"}\
$2
154 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
155 # options which some versions of GCC's C++ compiler complain about
156 # because they only make sense for C programs.
157 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS"
158 CONFIGURE_CXXFLAGS
=$
(echo "$CONFIGURE_CFLAGS" |
sed s
/-std=gnu99
/-std=gnu
++11/)
159 for arg
in $QEMU_CFLAGS; do
161 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
162 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
165 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
173 do_cc
$CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
179 do_cc
$CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC \
180 $LDFLAGS $CONFIGURE_LDFLAGS $QEMU_LDFLAGS $local_ldflags
183 # symbolically link $1 to $2. Portable version of "ln -sf".
186 mkdir
-p "$(dirname "$2")"
190 # check whether a command is available to this shell (may be either an
191 # executable or a builtin)
193 type "$1" >/dev
/null
2>&1
197 local_ver1
=`echo $1 | tr . ' '`
198 local_ver2
=`echo $2 | tr . ' '`
202 # 'shift 2' if $2 is set, or 'shift' if $2 is not set
206 # the second argument finished, the first must be greater or equal
207 test $# = 1 && return 0
208 test $local_first -lt $2 && return 1
209 test $local_first -gt $2 && return 0
216 echo "$trace_backends" |
grep "$1" >/dev
/null
220 eval test -z '"${1#'"$2"'}"'
224 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
227 if printf %s
\\n
"$source_path" "$PWD" |
grep -q "[[:space:]:]";
229 error_exit
"main directory cannot contain spaces nor colons"
235 interp_prefix
="/usr/gnemul/qemu-%M"
239 block_drv_rw_whitelist
=""
240 block_drv_ro_whitelist
=""
248 gdb_bin
=$
(command -v "gdb-multiarch" ||
command -v "gdb")
250 if test -e "$source_path/.git"
253 git_submodules
="ui/keycodemapdb"
254 git_submodules
="$git_submodules tests/fp/berkeley-testfloat-3"
255 git_submodules
="$git_submodules tests/fp/berkeley-softfloat-3"
260 if ! test -f "$source_path/ui/keycodemapdb/README"
263 echo "ERROR: missing file $source_path/ui/keycodemapdb/README"
265 echo "This is not a GIT checkout but module content appears to"
266 echo "be missing. Do not use 'git archive' or GitHub download links"
267 echo "to acquire QEMU source archives. Non-GIT builds are only"
268 echo "supported with source archives linked from:"
270 echo " https://www.qemu.org/download/#source"
272 echo "Developers working with GIT can use scripts/archive-source.sh"
273 echo "if they need to create valid source archives."
280 # Don't accept a target_list environment variable.
282 unset target_list_exclude
284 # Default value for a variable defining feature "foo".
285 # * foo="no" feature will only be used if --enable-foo arg is given
286 # * foo="" feature will be searched for, and if found, will be used
287 # unless --disable-foo is given
288 # * foo="yes" this value will only be set by --enable-foo flag.
289 # feature will searched for,
290 # if not found, configure exits with error
292 # Always add --enable-foo and --disable-foo command line args.
293 # Distributions want to ensure that several features are compiled in, and it
294 # is impossible without a --enable-foo that exits if a feature is not found.
297 # parse CC options second
299 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
301 --without-default-features)
307 brlapi
="$default_feature"
308 curl
="$default_feature"
317 virtfs
="$default_feature"
322 vde
="$default_feature"
327 xen
="$default_feature"
328 xen_ctrl_version
="$default_feature"
329 xen_pci_passthrough
="auto"
330 linux_aio
="$default_feature"
331 linux_io_uring
="$default_feature"
332 cap_ng
="$default_feature"
333 attr
="$default_feature"
334 libattr
="$default_feature"
335 xfs
="$default_feature"
337 membarrier
="$default_feature"
338 vhost_net
="$default_feature"
339 vhost_crypto
="$default_feature"
340 vhost_scsi
="$default_feature"
341 vhost_vsock
="$default_feature"
343 vhost_user_blk_server
="auto"
344 vhost_user_fs
="$default_feature"
349 rdma
="$default_feature"
350 pvrdma
="$default_feature"
356 fortify_source
="$default_feature"
362 EXESUF
="$default_feature"
384 spice
="$default_feature"
385 rbd
="$default_feature"
386 smartcard
="$default_feature"
388 libusb
="$default_feature"
389 usb_redir
="$default_feature"
390 opengl
="$default_feature"
393 avx2_opt
="$default_feature"
395 lzo
="$default_feature"
396 snappy
="$default_feature"
397 bzip2="$default_feature"
398 lzfse
="$default_feature"
399 zstd
="$default_feature"
400 guest_agent
="$default_feature"
401 guest_agent_with_vss
="no"
402 guest_agent_ntddscsi
="no"
403 guest_agent_msi
="$default_feature"
404 vss_win32_sdk
="$default_feature"
406 want_tools
="$default_feature"
407 libiscsi
="$default_feature"
408 libnfs
="$default_feature"
410 coroutine_pool
="$default_feature"
411 debug_stack_usage
="no"
413 seccomp
="$default_feature"
414 glusterfs
="$default_feature"
415 glusterfs_xlator_opt
="no"
416 glusterfs_discard
="no"
417 glusterfs_fallocate
="no"
418 glusterfs_zerofill
="no"
419 glusterfs_ftruncate_has_stat
="no"
420 glusterfs_iocb_has_stat
="no"
421 gtk
="$default_feature"
423 tls_priority
="NORMAL"
424 gnutls
="$default_feature"
425 nettle
="$default_feature"
427 gcrypt
="$default_feature"
430 qemu_private_xts
="yes"
431 auth_pam
="$default_feature"
432 vte
="$default_feature"
433 virglrenderer
="$default_feature"
434 tpm
="$default_feature"
435 libssh
="$default_feature"
436 live_block_migration
=${default_feature:-yes}
437 numa
="$default_feature"
440 replication
=${default_feature:-yes}
441 bochs
=${default_feature:-yes}
442 cloop
=${default_feature:-yes}
443 dmg
=${default_feature:-yes}
444 qcow1
=${default_feature:-yes}
445 vdi
=${default_feature:-yes}
446 vvfat
=${default_feature:-yes}
447 qed
=${default_feature:-yes}
448 parallels
=${default_feature:-yes}
450 libxml2
="$default_feature"
452 libpmem
="$default_feature"
453 default_devices
="yes"
457 secret_keyring
="$default_feature"
458 libdaxctl
="$default_feature"
469 # parse CC options second
471 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
473 --cross-prefix=*) cross_prefix
="$optarg"
477 --cxx=*) CXX
="$optarg"
479 --cpu=*) cpu
="$optarg"
481 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
482 QEMU_LDFLAGS
="$QEMU_LDFLAGS $optarg"
484 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
486 --extra-ldflags=*) QEMU_LDFLAGS
="$QEMU_LDFLAGS $optarg"
487 EXTRA_LDFLAGS
="$optarg"
489 --enable-debug-info) debug_info
="yes"
491 --disable-debug-info) debug_info
="no"
493 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
495 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
496 eval "cross_cc_cflags_${cc_arch}=\$optarg"
497 cross_cc_vars
="$cross_cc_vars cross_cc_cflags_${cc_arch}"
499 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
500 cc_archs
="$cc_archs $cc_arch"
501 eval "cross_cc_${cc_arch}=\$optarg"
502 cross_cc_vars
="$cross_cc_vars cross_cc_${cc_arch}"
507 # Using uname is really, really broken. Once we have the right set of checks
508 # we can eliminate its usage altogether.
510 # Preferred compiler:
512 # ${cross_prefix}gcc (if cross-prefix specified)
514 if test -z "${CC}${cross_prefix}"; then
517 cc
="${CC-${cross_prefix}gcc}"
520 if test -z "${CXX}${cross_prefix}"; then
523 cxx
="${CXX-${cross_prefix}g++}"
526 ar="${AR-${cross_prefix}ar}"
527 as
="${AS-${cross_prefix}as}"
530 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
531 ld
="${LD-${cross_prefix}ld}"
532 ranlib
="${RANLIB-${cross_prefix}ranlib}"
533 nm
="${NM-${cross_prefix}nm}"
534 strip
="${STRIP-${cross_prefix}strip}"
535 windres
="${WINDRES-${cross_prefix}windres}"
536 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
538 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
540 pkg_config
=query_pkg_config
541 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
543 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
544 ARFLAGS
="${ARFLAGS-rv}"
546 # default flags for all hosts
547 # We use -fwrapv to tell the compiler that we require a C dialect where
548 # left shift of signed integers is well defined and has the expected
549 # 2s-complement style results. (Both clang and gcc agree that it
550 # provides these semantics.)
551 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
552 QEMU_CFLAGS
="-Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
553 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
554 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
556 # Flags that are needed during configure but later taken care of by Meson
557 CONFIGURE_CFLAGS
="-std=gnu99 -Wall"
564 #error $1 not defined
566 int main(void) { return 0; }
574 int main(void) { return 0; }
581 int main(void) { return 0; }
585 write_c_fuzzer_skeleton
() {
588 #include <sys/types.h>
589 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size);
590 int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { return 0; }
594 if check_define __linux__
; then
596 elif check_define _WIN32
; then
598 elif check_define __OpenBSD__
; then
600 elif check_define __sun__
; then
602 elif check_define __HAIKU__
; then
604 elif check_define __FreeBSD__
; then
606 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
607 targetos
='GNU/kFreeBSD'
608 elif check_define __DragonFly__
; then
610 elif check_define __NetBSD__
; then
612 elif check_define __APPLE__
; then
615 # This is a fatal error, but don't report it yet, because we
616 # might be going to just print the --help text, or it might
617 # be the result of a missing compiler.
622 # Some host OSes need non-standard checks for which CPU to use.
623 # Note that these checks are broken for cross-compilation: if you're
624 # cross-compiling to one of these OSes then you'll need to specify
625 # the correct CPU with the --cpu option.
628 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
629 # run 64-bit userspace code.
630 # If the user didn't specify a CPU explicitly and the kernel says this is
631 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
632 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
638 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
639 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
644 if test ! -z "$cpu" ; then
645 # command line argument
647 elif check_define __i386__
; then
649 elif check_define __x86_64__
; then
650 if check_define __ILP32__
; then
655 elif check_define __sparc__
; then
656 if check_define __arch64__
; then
661 elif check_define _ARCH_PPC
; then
662 if check_define _ARCH_PPC64
; then
663 if check_define _LITTLE_ENDIAN
; then
671 elif check_define __mips__
; then
673 elif check_define __s390__
; then
674 if check_define __s390x__
; then
679 elif check_define __riscv
; then
680 if check_define _LP64
; then
685 elif check_define __arm__
; then
687 elif check_define __aarch64__
; then
694 # Normalise host CPU name and set ARCH.
695 # Note that this case should only have supported host CPUs, not guests.
697 ppc|ppc64|s390x|sparc64|x32|riscv32|riscv64
)
702 i386|i486|i586|i686|i86pc|BePC
)
721 # This will result in either an error or falling back to TCI later
725 if test -z "$ARCH"; then
734 audio_possible_drivers
="dsound sdl"
735 if check_include dsound.h
; then
736 audio_drv_list
="dsound"
745 audio_drv_list
="oss try-sdl"
746 audio_possible_drivers
="oss sdl pa"
751 audio_drv_list
="oss try-sdl"
752 audio_possible_drivers
="oss sdl pa"
753 # needed for kinfo_getvmmap(3) in libutil.h
754 netmap
="" # enable netmap autodetect
759 audio_drv_list
="oss try-sdl"
760 audio_possible_drivers
="oss sdl pa"
765 audio_drv_list
="oss try-sdl"
766 audio_possible_drivers
="oss sdl"
772 audio_drv_list
="try-sdl"
773 audio_possible_drivers
="sdl"
778 if [ "$cpu" = "x86_64" ] ; then
779 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
780 QEMU_LDFLAGS
="-arch x86_64 $QEMU_LDFLAGS"
783 audio_drv_list
="coreaudio try-sdl"
784 audio_possible_drivers
="coreaudio sdl"
785 QEMU_LDFLAGS
="-framework CoreFoundation -framework IOKit $QEMU_LDFLAGS"
786 # Disable attempts to use ObjectiveC features in os/object.h since they
787 # won't work when we're compiling with gcc as a C compiler.
788 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
793 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
794 if test -f /usr
/include
/sys
/soundcard.h
; then
795 audio_drv_list
="oss try-sdl"
797 audio_possible_drivers
="oss sdl"
798 # needed for CMSG_ macros in sys/socket.h
799 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
800 # needed for TIOCWIN* defines in termios.h
801 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
805 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE $QEMU_CFLAGS"
808 audio_drv_list
="try-pa oss"
809 audio_possible_drivers
="oss alsa sdl pa"
812 vhost_user
=${default_feature:-yes}
816 if [ "$bsd" = "yes" ] ; then
817 if [ "$darwin" != "yes" ] ; then
822 : ${make=${MAKE-make}}
824 # We prefer python 3.x. A bare 'python' is traditionally
825 # python 2.x, but some distros have it as python 3.x, so
829 for binary
in "${PYTHON-python3}" python
833 python
=$
(command -v "$binary")
839 # Check for ancillary tools used in testing
841 for binary
in genisoimage mkisofs
845 genisoimage
=$
(command -v "$binary")
850 : ${smbd=${SMBD-/usr/sbin/smbd}}
852 # Default objcc to clang if available, otherwise use CC
859 if test "$mingw32" = "yes" ; then
862 # MinGW needs -mthreads for TLS and macro _MT.
863 CONFIGURE_CFLAGS
="-mthreads $CONFIGURE_CFLAGS"
867 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
873 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
875 --help|
-h) show_help
=yes
877 --version|
-V) exec cat $source_path/VERSION
879 --prefix=*) prefix
="$optarg"
881 --interp-prefix=*) interp_prefix
="$optarg"
887 --host-cc=*) host_cc
="$optarg"
891 --iasl=*) iasl
="$optarg"
893 --objcc=*) objcc
="$optarg"
895 --make=*) make="$optarg"
899 --python=*) python
="$optarg" ; explicit_python
=yes
901 --sphinx-build=*) sphinx_build
="$optarg"
903 --skip-meson) skip_meson
=yes
905 --meson=*) meson
="$optarg"
907 --ninja=*) ninja
="$optarg"
909 --smbd=*) smbd
="$optarg"
919 --disable-debug-info)
929 --disable-module-upgrades) module_upgrades
="no"
931 --enable-module-upgrades) module_upgrades
="yes"
935 --target-list=*) target_list
="$optarg"
936 if test "$target_list_exclude"; then
937 error_exit
"Can't mix --target-list with --target-list-exclude"
940 --target-list-exclude=*) target_list_exclude
="$optarg"
941 if test "$target_list"; then
942 error_exit
"Can't mix --target-list-exclude with --target-list"
945 --enable-trace-backends=*) trace_backends
="$optarg"
947 # XXX: backwards compatibility
948 --enable-trace-backend=*) trace_backends
="$optarg"
950 --with-trace-file=*) trace_file
="$optarg"
952 --with-default-devices) default_devices
="yes"
954 --without-default-devices) default_devices
="no"
956 --without-default-features) # processed above
958 --enable-gprof) gprof
="yes"
960 --enable-gcov) gcov
="yes"
964 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
966 --mandir=*) mandir
="$optarg"
968 --bindir=*) bindir
="$optarg"
970 --libdir=*) libdir
="$optarg"
972 --libexecdir=*) libexecdir
="$optarg"
974 --includedir=*) includedir
="$optarg"
976 --datadir=*) datadir
="$optarg"
978 --with-suffix=*) qemu_suffix
="$optarg"
980 --docdir=*) docdir
="$optarg"
982 --localedir=*) localedir
="$optarg"
984 --sysconfdir=*) sysconfdir
="$optarg"
986 --localstatedir=*) local_statedir
="$optarg"
988 --firmwarepath=*) firmwarepath
="$optarg"
991 --disable-dependency-tracking|\
992 --sbindir=*|
--sharedstatedir=*|\
993 --oldincludedir=*|
--datarootdir=*|
--infodir=*|\
994 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
995 # These switches are silently ignored, for compatibility with
996 # autoconf-generated configure scripts. This allows QEMU's
997 # configure to be used by RPM and similar macros that set
998 # lots of directory switches by default.
1000 --disable-sdl) sdl
="disabled"
1002 --enable-sdl) sdl
="enabled"
1004 --disable-sdl-image) sdl_image
="disabled"
1006 --enable-sdl-image) sdl_image
="enabled"
1008 --disable-qom-cast-debug) qom_cast_debug
="no"
1010 --enable-qom-cast-debug) qom_cast_debug
="yes"
1012 --disable-virtfs) virtfs
="no"
1014 --enable-virtfs) virtfs
="yes"
1016 --disable-libudev) libudev
="disabled"
1018 --enable-libudev) libudev
="enabled"
1020 --disable-virtiofsd) virtiofsd
="disabled"
1022 --enable-virtiofsd) virtiofsd
="enabled"
1024 --disable-mpath) mpath
="disabled"
1026 --enable-mpath) mpath
="enabled"
1028 --disable-vnc) vnc
="disabled"
1030 --enable-vnc) vnc
="enabled"
1032 --disable-gettext) gettext="disabled"
1034 --enable-gettext) gettext="enabled"
1036 --oss-lib=*) oss_lib
="$optarg"
1038 --audio-drv-list=*) audio_drv_list
="$optarg"
1040 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1042 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
1044 --enable-debug-tcg) debug_tcg
="yes"
1046 --disable-debug-tcg) debug_tcg
="no"
1049 # Enable debugging options that aren't excessively noisy
1056 --enable-sanitizers) sanitizers
="yes"
1058 --disable-sanitizers) sanitizers
="no"
1060 --enable-tsan) tsan
="yes"
1062 --disable-tsan) tsan
="no"
1064 --enable-sparse) sparse
="enabled"
1066 --disable-sparse) sparse
="disabled"
1068 --disable-strip) strip_opt
="no"
1070 --disable-vnc-sasl) vnc_sasl
="disabled"
1072 --enable-vnc-sasl) vnc_sasl
="enabled"
1074 --disable-vnc-jpeg) vnc_jpeg
="disabled"
1076 --enable-vnc-jpeg) vnc_jpeg
="enabled"
1078 --disable-vnc-png) vnc_png
="disabled"
1080 --enable-vnc-png) vnc_png
="enabled"
1082 --disable-slirp) slirp
="disabled"
1084 --enable-slirp=git
) slirp
="internal"
1086 --enable-slirp=system
) slirp
="system"
1088 --disable-vde) vde
="no"
1090 --enable-vde) vde
="yes"
1092 --disable-netmap) netmap
="no"
1094 --enable-netmap) netmap
="yes"
1096 --disable-xen) xen
="disabled"
1098 --enable-xen) xen
="enabled"
1100 --disable-xen-pci-passthrough) xen_pci_passthrough
="disabled"
1102 --enable-xen-pci-passthrough) xen_pci_passthrough
="enabled"
1104 --disable-brlapi) brlapi
="no"
1106 --enable-brlapi) brlapi
="yes"
1108 --disable-kvm) kvm
="disabled"
1110 --enable-kvm) kvm
="enabled"
1112 --disable-hax) hax
="disabled"
1114 --enable-hax) hax
="enabled"
1116 --disable-hvf) hvf
="disabled"
1118 --enable-hvf) hvf
="enabled"
1120 --disable-whpx) whpx
="disabled"
1122 --enable-whpx) whpx
="enabled"
1124 --disable-tcg-interpreter) tcg_interpreter
="no"
1126 --enable-tcg-interpreter) tcg_interpreter
="yes"
1128 --disable-cap-ng) cap_ng
="no"
1130 --enable-cap-ng) cap_ng
="yes"
1132 --disable-tcg) tcg
="disabled"
1134 --enable-tcg) tcg
="enabled"
1136 --disable-malloc-trim) malloc_trim
="disabled"
1138 --enable-malloc-trim) malloc_trim
="enabled"
1140 --disable-spice) spice
="no"
1142 --enable-spice) spice
="yes"
1144 --disable-libiscsi) libiscsi
="no"
1146 --enable-libiscsi) libiscsi
="yes"
1148 --disable-libnfs) libnfs
="no"
1150 --enable-libnfs) libnfs
="yes"
1152 --enable-profiler) profiler
="yes"
1154 --disable-cocoa) cocoa
="disabled"
1158 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1160 --disable-system) softmmu
="no"
1162 --enable-system) softmmu
="yes"
1169 --disable-linux-user) linux_user
="no"
1171 --enable-linux-user) linux_user
="yes"
1173 --disable-bsd-user) bsd_user
="no"
1175 --enable-bsd-user) bsd_user
="yes"
1177 --enable-pie) pie
="yes"
1179 --disable-pie) pie
="no"
1181 --enable-werror) werror
="yes"
1183 --disable-werror) werror
="no"
1185 --enable-stack-protector) stack_protector
="yes"
1187 --disable-stack-protector) stack_protector
="no"
1189 --enable-safe-stack) safe_stack
="yes"
1191 --disable-safe-stack) safe_stack
="no"
1193 --disable-curses) curses
="disabled"
1195 --enable-curses) curses
="enabled"
1197 --disable-iconv) iconv="disabled"
1199 --enable-iconv) iconv="enabled"
1201 --disable-curl) curl
="no"
1203 --enable-curl) curl
="yes"
1205 --disable-fdt) fdt
="disabled"
1207 --enable-fdt) fdt
="enabled"
1209 --enable-fdt=git
) fdt
="internal"
1211 --enable-fdt=system
) fdt
="system"
1213 --disable-linux-aio) linux_aio
="no"
1215 --enable-linux-aio) linux_aio
="yes"
1217 --disable-linux-io-uring) linux_io_uring
="no"
1219 --enable-linux-io-uring) linux_io_uring
="yes"
1221 --disable-attr) attr
="no"
1223 --enable-attr) attr
="yes"
1225 --disable-membarrier) membarrier
="no"
1227 --enable-membarrier) membarrier
="yes"
1229 --disable-blobs) blobs
="false"
1231 --with-pkgversion=*) pkgversion
="$optarg"
1233 --with-coroutine=*) coroutine
="$optarg"
1235 --disable-coroutine-pool) coroutine_pool
="no"
1237 --enable-coroutine-pool) coroutine_pool
="yes"
1239 --enable-debug-stack-usage) debug_stack_usage
="yes"
1241 --enable-crypto-afalg) crypto_afalg
="yes"
1243 --disable-crypto-afalg) crypto_afalg
="no"
1245 --disable-docs) docs
="disabled"
1247 --enable-docs) docs
="enabled"
1249 --disable-vhost-net) vhost_net
="no"
1251 --enable-vhost-net) vhost_net
="yes"
1253 --disable-vhost-crypto) vhost_crypto
="no"
1255 --enable-vhost-crypto) vhost_crypto
="yes"
1257 --disable-vhost-scsi) vhost_scsi
="no"
1259 --enable-vhost-scsi) vhost_scsi
="yes"
1261 --disable-vhost-vsock) vhost_vsock
="no"
1263 --enable-vhost-vsock) vhost_vsock
="yes"
1265 --disable-vhost-user-blk-server) vhost_user_blk_server
="disabled"
1267 --enable-vhost-user-blk-server) vhost_user_blk_server
="enabled"
1269 --disable-vhost-user-fs) vhost_user_fs
="no"
1271 --enable-vhost-user-fs) vhost_user_fs
="yes"
1273 --disable-opengl) opengl
="no"
1275 --enable-opengl) opengl
="yes"
1277 --disable-rbd) rbd
="no"
1279 --enable-rbd) rbd
="yes"
1281 --disable-xfsctl) xfs
="no"
1283 --enable-xfsctl) xfs
="yes"
1285 --disable-smartcard) smartcard
="no"
1287 --enable-smartcard) smartcard
="yes"
1289 --disable-u2f) u2f
="disabled"
1291 --enable-u2f) u2f
="enabled"
1293 --disable-libusb) libusb
="no"
1295 --enable-libusb) libusb
="yes"
1297 --disable-usb-redir) usb_redir
="no"
1299 --enable-usb-redir) usb_redir
="yes"
1301 --disable-zlib-test)
1303 --disable-lzo) lzo
="no"
1305 --enable-lzo) lzo
="yes"
1307 --disable-snappy) snappy
="no"
1309 --enable-snappy) snappy
="yes"
1311 --disable-bzip2) bzip2="no"
1313 --enable-bzip2) bzip2="yes"
1315 --enable-lzfse) lzfse
="yes"
1317 --disable-lzfse) lzfse
="no"
1319 --disable-zstd) zstd
="no"
1321 --enable-zstd) zstd
="yes"
1323 --enable-guest-agent) guest_agent
="yes"
1325 --disable-guest-agent) guest_agent
="no"
1327 --enable-guest-agent-msi) guest_agent_msi
="yes"
1329 --disable-guest-agent-msi) guest_agent_msi
="no"
1331 --with-vss-sdk) vss_win32_sdk
=""
1333 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1335 --without-vss-sdk) vss_win32_sdk
="no"
1337 --with-win-sdk) win_sdk
=""
1339 --with-win-sdk=*) win_sdk
="$optarg"
1341 --without-win-sdk) win_sdk
="no"
1343 --enable-tools) want_tools
="yes"
1345 --disable-tools) want_tools
="no"
1347 --enable-seccomp) seccomp
="yes"
1349 --disable-seccomp) seccomp
="no"
1351 --disable-glusterfs) glusterfs
="no"
1353 --disable-avx2) avx2_opt
="no"
1355 --enable-avx2) avx2_opt
="yes"
1357 --disable-avx512f) avx512f_opt
="no"
1359 --enable-avx512f) avx512f_opt
="yes"
1362 --enable-glusterfs) glusterfs
="yes"
1364 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1365 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1367 --enable-vhdx|
--disable-vhdx)
1368 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1370 --enable-uuid|
--disable-uuid)
1371 echo "$0: $opt is obsolete, UUID support is always built" >&2
1373 --disable-gtk) gtk
="no"
1375 --enable-gtk) gtk
="yes"
1377 --tls-priority=*) tls_priority
="$optarg"
1379 --disable-gnutls) gnutls
="no"
1381 --enable-gnutls) gnutls
="yes"
1383 --disable-nettle) nettle
="no"
1385 --enable-nettle) nettle
="yes"
1387 --disable-gcrypt) gcrypt
="no"
1389 --enable-gcrypt) gcrypt
="yes"
1391 --disable-auth-pam) auth_pam
="no"
1393 --enable-auth-pam) auth_pam
="yes"
1395 --enable-rdma) rdma
="yes"
1397 --disable-rdma) rdma
="no"
1399 --enable-pvrdma) pvrdma
="yes"
1401 --disable-pvrdma) pvrdma
="no"
1403 --disable-vte) vte
="no"
1405 --enable-vte) vte
="yes"
1407 --disable-virglrenderer) virglrenderer
="no"
1409 --enable-virglrenderer) virglrenderer
="yes"
1411 --disable-tpm) tpm
="no"
1413 --enable-tpm) tpm
="yes"
1415 --disable-libssh) libssh
="no"
1417 --enable-libssh) libssh
="yes"
1419 --disable-live-block-migration) live_block_migration
="no"
1421 --enable-live-block-migration) live_block_migration
="yes"
1423 --disable-numa) numa
="no"
1425 --enable-numa) numa
="yes"
1427 --disable-libxml2) libxml2
="no"
1429 --enable-libxml2) libxml2
="yes"
1431 --disable-tcmalloc) tcmalloc
="no"
1433 --enable-tcmalloc) tcmalloc
="yes"
1435 --disable-jemalloc) jemalloc
="no"
1437 --enable-jemalloc) jemalloc
="yes"
1439 --disable-replication) replication
="no"
1441 --enable-replication) replication
="yes"
1443 --disable-bochs) bochs
="no"
1445 --enable-bochs) bochs
="yes"
1447 --disable-cloop) cloop
="no"
1449 --enable-cloop) cloop
="yes"
1451 --disable-dmg) dmg
="no"
1453 --enable-dmg) dmg
="yes"
1455 --disable-qcow1) qcow1
="no"
1457 --enable-qcow1) qcow1
="yes"
1459 --disable-vdi) vdi
="no"
1461 --enable-vdi) vdi
="yes"
1463 --disable-vvfat) vvfat
="no"
1465 --enable-vvfat) vvfat
="yes"
1467 --disable-qed) qed
="no"
1469 --enable-qed) qed
="yes"
1471 --disable-parallels) parallels
="no"
1473 --enable-parallels) parallels
="yes"
1475 --disable-sheepdog) sheepdog
="no"
1477 --enable-sheepdog) sheepdog
="yes"
1479 --disable-vhost-user) vhost_user
="no"
1481 --enable-vhost-user) vhost_user
="yes"
1483 --disable-vhost-vdpa) vhost_vdpa
="no"
1485 --enable-vhost-vdpa) vhost_vdpa
="yes"
1487 --disable-vhost-kernel) vhost_kernel
="no"
1489 --enable-vhost-kernel) vhost_kernel
="yes"
1491 --disable-capstone) capstone
="disabled"
1493 --enable-capstone) capstone
="enabled"
1495 --enable-capstone=git
) capstone
="internal"
1497 --enable-capstone=system
) capstone
="system"
1499 --with-git=*) git
="$optarg"
1501 --enable-git-update) git_update
=yes
1503 --disable-git-update) git_update
=no
1505 --enable-debug-mutex) debug_mutex
=yes
1507 --disable-debug-mutex) debug_mutex
=no
1509 --enable-libpmem) libpmem
=yes
1511 --disable-libpmem) libpmem
=no
1513 --enable-xkbcommon) xkbcommon
="enabled"
1515 --disable-xkbcommon) xkbcommon
="disabled"
1517 --enable-plugins) plugins
="yes"
1519 --disable-plugins) plugins
="no"
1521 --enable-containers) use_containers
="yes"
1523 --disable-containers) use_containers
="no"
1525 --enable-fuzzing) fuzzing
=yes
1527 --disable-fuzzing) fuzzing
=no
1529 --gdb=*) gdb_bin
="$optarg"
1531 --enable-rng-none) rng_none
=yes
1533 --disable-rng-none) rng_none
=no
1535 --enable-keyring) secret_keyring
="yes"
1537 --disable-keyring) secret_keyring
="no"
1539 --enable-libdaxctl) libdaxctl
=yes
1541 --disable-libdaxctl) libdaxctl
=no
1543 --enable-fuse) fuse
="enabled"
1545 --disable-fuse) fuse
="disabled"
1547 --enable-fuse-lseek) fuse_lseek
="enabled"
1549 --disable-fuse-lseek) fuse_lseek
="disabled"
1552 echo "ERROR: unknown option $opt"
1553 echo "Try '$0 --help' for more information"
1559 libdir
="${libdir:-$prefix/lib}"
1560 libexecdir
="${libexecdir:-$prefix/libexec}"
1561 includedir
="${includedir:-$prefix/include}"
1563 if test "$mingw32" = "yes" ; then
1568 sysconfdir
="$prefix"
1569 local_statedir
="$prefix"
1571 mandir
="${mandir:-$prefix/share/man}"
1572 datadir
="${datadir:-$prefix/share}"
1573 docdir
="${docdir:-$prefix/share/doc}"
1574 bindir
="${bindir:-$prefix/bin}"
1575 sysconfdir
="${sysconfdir:-$prefix/etc}"
1576 local_statedir
="${local_statedir:-$prefix/var}"
1578 firmwarepath
="${firmwarepath:-$datadir/qemu-firmware}"
1579 localedir
="${localedir:-$datadir/locale}"
1584 QEMU_LDFLAGS
="-m32 $QEMU_LDFLAGS"
1588 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1591 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1592 QEMU_LDFLAGS
="-m32 -mv8plus $QEMU_LDFLAGS"
1595 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1596 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1600 QEMU_LDFLAGS
="-m31 $QEMU_LDFLAGS"
1604 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1608 QEMU_LDFLAGS
="-m32 $QEMU_LDFLAGS"
1611 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1612 # If we truly care, we should simply detect this case at
1613 # runtime and generate the fallback to serial emulation.
1614 CPU_CFLAGS
="-m64 -mcx16"
1615 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1619 QEMU_LDFLAGS
="-mx32 $QEMU_LDFLAGS"
1621 # No special flags required for other host CPUs
1624 eval "cross_cc_${cpu}=\$host_cc"
1625 cross_cc_vars
="$cross_cc_vars cross_cc_${cpu}"
1626 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1628 # For user-mode emulation the host arch has to be one we explicitly
1629 # support, even if we're using TCI.
1630 if [ "$ARCH" = "unknown" ]; then
1635 default_target_list
=""
1636 deprecated_targets_list
=ppc64abi32-linux-user
,tilegx-linux-user
,lm32-softmmu
,unicore32-softmmu
1637 deprecated_features
=""
1640 if [ "$softmmu" = "yes" ]; then
1641 mak_wilds
="${mak_wilds} $source_path/default-configs/targets/*-softmmu.mak"
1643 if [ "$linux_user" = "yes" ]; then
1644 mak_wilds
="${mak_wilds} $source_path/default-configs/targets/*-linux-user.mak"
1646 if [ "$bsd_user" = "yes" ]; then
1647 mak_wilds
="${mak_wilds} $source_path/default-configs/targets/*-bsd-user.mak"
1650 # If the user doesn't explicitly specify a deprecated target we will
1652 if test -z "$target_list"; then
1653 if test -z "$target_list_exclude"; then
1654 target_list_exclude
="$deprecated_targets_list"
1656 target_list_exclude
="$target_list_exclude,$deprecated_targets_list"
1660 for config
in $mak_wilds; do
1661 target
="$(basename "$config" .mak)"
1662 if echo "$target_list_exclude" |
grep -vq "$target"; then
1663 default_target_list
="${default_target_list} $target"
1667 # Enumerate public trace backends for --help output
1668 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1670 if test x
"$show_help" = x
"yes" ; then
1673 Usage: configure [options]
1674 Options: [defaults in brackets after descriptions]
1677 --help print this message
1678 --prefix=PREFIX install in PREFIX [$prefix]
1679 --interp-prefix=PREFIX where to find shared libraries, etc.
1680 use %M for cpu name [$interp_prefix]
1681 --target-list=LIST set target list (default: build all non-deprecated)
1682 $(echo Available targets: $default_target_list | \
1683 fold -s -w 53 | sed -e 's/^/ /')
1684 $(echo Deprecated targets: $deprecated_targets_list | \
1685 fold -s -w 53 | sed -e 's/^/ /')
1686 --target-list-exclude=LIST exclude a set of targets from the default target-list
1688 Advanced options (experts only):
1689 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1690 --cc=CC use C compiler CC [$cc]
1691 --iasl=IASL use ACPI compiler IASL [$iasl]
1692 --host-cc=CC use C compiler CC [$host_cc] for code run at
1694 --cxx=CXX use C++ compiler CXX [$cxx]
1695 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1696 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1697 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1698 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1699 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1700 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1701 --make=MAKE use specified make [$make]
1702 --python=PYTHON use specified python [$python]
1703 --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build]
1704 --meson=MESON use specified meson [$meson]
1705 --ninja=NINJA use specified ninja [$ninja]
1706 --smbd=SMBD use specified smbd [$smbd]
1707 --with-git=GIT use specified git [$git]
1708 --static enable static build [$static]
1709 --mandir=PATH install man pages in PATH
1710 --datadir=PATH install firmware in PATH/$qemu_suffix
1711 --localedir=PATH install translation in PATH/$qemu_suffix
1712 --docdir=PATH install documentation in PATH/$qemu_suffix
1713 --bindir=PATH install binaries in PATH
1714 --libdir=PATH install libraries in PATH
1715 --libexecdir=PATH install helper binaries in PATH
1716 --sysconfdir=PATH install config in PATH/$qemu_suffix
1717 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1718 --firmwarepath=PATH search PATH for firmware files
1719 --efi-aarch64=PATH PATH of efi file to use for aarch64 VMs.
1720 --with-suffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir/docdir [$qemu_suffix]
1721 --with-pkgversion=VERS use specified string as sub-version of the package
1722 --without-default-features default all --enable-* options to "disabled"
1723 --without-default-devices do not include any device that is not needed to
1724 start the emulator (only use if you are including
1725 desired devices in default-configs/devices/)
1726 --enable-debug enable common debug build options
1727 --enable-sanitizers enable default sanitizers
1728 --enable-tsan enable thread sanitizer
1729 --disable-strip disable stripping binaries
1730 --disable-werror disable compilation abort on warning
1731 --disable-stack-protector disable compiler-provided stack protection
1732 --audio-drv-list=LIST set audio drivers list:
1733 Available drivers: $audio_possible_drivers
1734 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1735 --block-drv-rw-whitelist=L
1736 set block driver read-write whitelist
1737 (affects only QEMU, not qemu-img)
1738 --block-drv-ro-whitelist=L
1739 set block driver read-only whitelist
1740 (affects only QEMU, not qemu-img)
1741 --enable-trace-backends=B Set trace backend
1742 Available backends: $trace_backend_list
1743 --with-trace-file=NAME Full PATH,NAME of file to store traces
1745 --disable-slirp disable SLIRP userspace network connectivity
1746 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1747 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1748 --oss-lib path to OSS library
1749 --cpu=CPU Build for host CPU [$cpu]
1750 --with-coroutine=BACKEND coroutine backend. Supported options:
1751 ucontext, sigaltstack, windows
1752 --enable-gcov enable test coverage analysis with gcov
1753 --disable-blobs disable installing provided firmware blobs
1754 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1755 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1756 --tls-priority default TLS protocol/cipher priority string
1757 --enable-gprof QEMU profiling with gprof
1758 --enable-profiler profiler support
1759 --enable-debug-stack-usage
1760 track the maximum stack usage of stacks created by qemu_alloc_stack
1762 enable plugins via shared library loading
1763 --disable-containers don't use containers for cross-building
1764 --gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
1766 Optional features, enabled with --enable-FEATURE and
1767 disabled with --disable-FEATURE, default is enabled if available
1768 (unless built with --without-default-features):
1770 system all system emulation targets
1771 user supported user emulation targets
1772 linux-user all linux usermode emulation targets
1773 bsd-user all BSD usermode emulation targets
1774 docs build documentation
1775 guest-agent build the QEMU Guest Agent
1776 guest-agent-msi build guest agent Windows MSI installation package
1777 pie Position Independent Executables
1778 modules modules support (non-Windows)
1779 module-upgrades try to load modules from alternate paths for upgrades
1780 debug-tcg TCG debugging (default is disabled)
1781 debug-info debugging information
1782 sparse sparse checker
1783 safe-stack SafeStack Stack Smash Protection. Depends on
1784 clang/llvm >= 3.7 and requires coroutine backend ucontext.
1786 gnutls GNUTLS cryptography support
1787 nettle nettle cryptography support
1788 gcrypt libgcrypt cryptography support
1789 auth-pam PAM access control
1791 sdl-image SDL Image support for icons
1793 vte vte support for the gtk UI
1795 iconv font glyph conversion support
1797 vnc-sasl SASL encryption for VNC server
1798 vnc-jpeg JPEG lossy compression for VNC server
1799 vnc-png PNG compression for VNC server
1800 cocoa Cocoa UI (Mac OS X only)
1802 virtiofsd build virtiofs daemon (virtiofsd)
1803 libudev Use libudev to enumerate host devices
1804 mpath Multipath persistent reservation passthrough
1805 xen xen backend driver support
1806 xen-pci-passthrough PCI passthrough support for Xen
1807 brlapi BrlAPI (Braile)
1808 curl curl connectivity
1809 membarrier membarrier system call (for Linux 4.14+ or Windows)
1811 kvm KVM acceleration support
1812 hax HAX acceleration support
1813 hvf Hypervisor.framework acceleration support
1814 whpx Windows Hypervisor Platform acceleration support
1815 rdma Enable RDMA-based migration
1816 pvrdma Enable PVRDMA support
1817 vde support for vde network
1818 netmap support for netmap network
1819 linux-aio Linux AIO support
1820 linux-io-uring Linux io_uring support
1821 cap-ng libcap-ng support
1822 attr attr and xattr support
1823 vhost-net vhost-net kernel acceleration support
1824 vhost-vsock virtio sockets device support
1825 vhost-scsi vhost-scsi kernel target support
1826 vhost-crypto vhost-user-crypto backend support
1827 vhost-kernel vhost kernel backend support
1828 vhost-user vhost-user backend support
1829 vhost-user-blk-server vhost-user-blk server support
1830 vhost-vdpa vhost-vdpa kernel backend support
1832 rbd rados block device (rbd)
1833 libiscsi iscsi support
1835 smartcard smartcard support (libcacard)
1836 u2f U2F support (u2f-emu)
1837 libusb libusb (for usb passthrough)
1838 live-block-migration Block migration in the main migration stream
1839 usb-redir usb network redirection support
1840 lzo support of lzo compression library
1841 snappy support of snappy compression library
1842 bzip2 support of bzip2 compression library
1843 (for reading bzip2-compressed dmg images)
1844 lzfse support of lzfse compression library
1845 (for reading lzfse-compressed dmg images)
1846 zstd support for zstd compression library
1847 (for migration compression and qcow2 cluster compression)
1848 seccomp seccomp support
1849 coroutine-pool coroutine freelist (better performance)
1850 glusterfs GlusterFS backend
1852 libssh ssh block device support
1853 numa libnuma support
1854 libxml2 for Parallels image format
1855 tcmalloc tcmalloc support
1856 jemalloc jemalloc support
1857 avx2 AVX2 optimization support
1858 avx512f AVX512F optimization support
1859 replication replication support
1860 opengl opengl support
1861 virglrenderer virgl rendering support
1862 xfsctl xfsctl support
1863 qom-cast-debug cast debugging support
1864 tools build qemu-io, qemu-nbd and qemu-img tools
1865 bochs bochs image format support
1866 cloop cloop image format support
1867 dmg dmg image format support
1868 qcow1 qcow v1 image format support
1869 vdi vdi image format support
1870 vvfat vvfat image format support
1871 qed qed image format support
1872 parallels parallels image format support
1873 sheepdog sheepdog block driver support (deprecated)
1874 crypto-afalg Linux AF_ALG crypto backend driver
1875 capstone capstone disassembler support
1876 debug-mutex mutex debugging support
1877 libpmem libpmem support
1878 xkbcommon xkbcommon support
1879 rng-none dummy RNG, avoid using /dev/(u)random and getrandom()
1880 libdaxctl libdaxctl support
1881 fuse FUSE block device export
1882 fuse-lseek SEEK_HOLE/SEEK_DATA support for FUSE exports
1884 NOTE: The object files are built at the place where configure is launched
1889 # Remove old dependency files to make sure that they get properly regenerated
1890 rm -f */config-devices.mak.d
1892 if test -z "$python"
1894 error_exit
"Python not found. Use --python=/path/to/python"
1898 error_exit
"GNU make ($make) not found"
1901 # Note that if the Python conditional here evaluates True we will exit
1902 # with status 1 which is a shell 'false' value.
1903 if ! $python -c 'import sys; sys.exit(sys.version_info < (3,6))'; then
1904 error_exit
"Cannot use '$python', Python >= 3.6 is required." \
1905 "Use --python=/path/to/python to specify a supported Python."
1908 # Preserve python version since some functionality is dependent on it
1909 python_version
=$
($python -c 'import sys; print("%d.%d.%d" % (sys.version_info[0], sys.version_info[1], sys.version_info[2]))' 2>/dev
/null
)
1911 # Suppress writing compiled files
1914 if test -z "$meson"; then
1915 if test "$explicit_python" = no
&& has meson
&& version_ge
"$(meson --version)" 0.55.3; then
1917 elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
1919 elif test -e "${source_path}/meson/meson.py" ; then
1922 if test "$explicit_python" = yes; then
1923 error_exit
"--python requires using QEMU's embedded Meson distribution, but it was not found."
1925 error_exit
"Meson not found. Use --meson=/path/to/meson"
1929 # Meson uses its own Python interpreter to invoke other Python scripts,
1930 # but the user wants to use the one they specified with --python.
1932 # We do not want to override the distro Python interpreter (and sometimes
1933 # cannot: for example in Homebrew /usr/bin/meson is a bash script), so
1934 # just require --meson=git|internal together with --python.
1935 if test "$explicit_python" = yes; then
1938 *) error_exit
"--python requires using QEMU's embedded Meson distribution." ;;
1943 if test "$meson" = git
; then
1944 git_submodules
="${git_submodules} meson"
1949 meson
="$python ${source_path}/meson/meson.py"
1951 *) meson
=$
(command -v "$meson") ;;
1956 if test -z "$ninja"; then
1957 for c
in ninja ninja-build samu
; do
1959 ninja
=$
(command -v "$c")
1963 if test -z "$ninja"; then
1964 error_exit
"Cannot find Ninja"
1968 # Check that the C compiler works. Doing this here before testing
1969 # the host CPU ensures that we had a valid CC to autodetect the
1970 # $cpu var (and we should bail right here if that's not the case).
1971 # It also allows the help message to be printed without a CC.
1973 if compile_object
; then
1974 : C compiler works ok
1976 error_exit
"\"$cc\" either does not exist or does not work"
1978 if ! compile_prog
; then
1979 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1982 # Consult white-list to determine whether to enable werror
1983 # by default. Only enable by default for git builds
1984 if test -z "$werror" ; then
1985 if test -e "$source_path/.git" && \
1986 { test "$linux" = "yes" ||
test "$mingw32" = "yes"; }; then
1993 if test "$bogus_os" = "yes"; then
1994 # Now that we know that we're not printing the help and that
1995 # the compiler works (so the results of the check_defines we used
1996 # to identify the OS are reliable), if we didn't recognize the
1997 # host OS we should stop now.
1998 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
2001 # Check whether the compiler matches our minimum requirements:
2003 #if defined(__clang_major__) && defined(__clang_minor__)
2004 # ifdef __apple_build_version__
2005 # if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1)
2006 # error You need at least XCode Clang v5.1 to compile QEMU
2009 # if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
2010 # error You need at least Clang v3.4 to compile QEMU
2013 #elif defined(__GNUC__) && defined(__GNUC_MINOR__)
2014 # if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
2015 # error You need at least GCC v4.8 to compile QEMU
2018 # error You either need GCC or Clang to compiler QEMU
2020 int main (void) { return 0; }
2022 if ! compile_prog
"" "" ; then
2023 error_exit
"You need at least GCC v4.8 or Clang v3.4 (or XCode Clang v5.1)"
2026 # Accumulate -Wfoo and -Wno-bar separately.
2027 # We will list all of the enable flags first, and the disable flags second.
2028 # Note that we do not add -Werror, because that would enable it for all
2029 # configure tests. If a configure test failed due to -Werror this would
2030 # just silently disable some features, so it's too error prone.
2033 add_to warn_flags
-Wold-style-declaration
2034 add_to warn_flags
-Wold-style-definition
2035 add_to warn_flags
-Wtype-limits
2036 add_to warn_flags
-Wformat-security
2037 add_to warn_flags
-Wformat-y2k
2038 add_to warn_flags
-Winit-self
2039 add_to warn_flags
-Wignored-qualifiers
2040 add_to warn_flags
-Wempty-body
2041 add_to warn_flags
-Wnested-externs
2042 add_to warn_flags
-Wendif-labels
2043 add_to warn_flags
-Wexpansion-to-defined
2044 add_to warn_flags
-Wimplicit-fallthrough=2
2047 add_to nowarn_flags
-Wno-initializer-overrides
2048 add_to nowarn_flags
-Wno-missing-include-dirs
2049 add_to nowarn_flags
-Wno-shift-negative-value
2050 add_to nowarn_flags
-Wno-string-plus-int
2051 add_to nowarn_flags
-Wno-typedef-redefinition
2052 add_to nowarn_flags
-Wno-tautological-type-limit-compare
2053 add_to nowarn_flags
-Wno-psabi
2055 gcc_flags
="$warn_flags $nowarn_flags"
2057 cc_has_warning_flag
() {
2060 # Use the positive sense of the flag when testing for -Wno-wombat
2061 # support (gcc will happily accept the -Wno- form of unknown
2063 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
2064 compile_prog
"-Werror $optflag" ""
2067 for flag
in $gcc_flags; do
2068 if cc_has_warning_flag
$flag ; then
2069 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
2073 if test "$stack_protector" != "no"; then
2075 int main(int argc, char *argv[])
2077 char arr[64], *p = arr, *c = argv[0];
2084 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
2086 for flag
in $gcc_flags; do
2087 # We need to check both a compile and a link, since some compiler
2088 # setups fail only on a .c->.o compile and some only at link time
2089 if compile_object
"-Werror $flag" &&
2090 compile_prog
"-Werror $flag" ""; then
2091 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
2092 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
2097 if test "$stack_protector" = yes; then
2098 if test $sp_on = 0; then
2099 error_exit
"Stack protector not supported"
2104 # Disable -Wmissing-braces on older compilers that warn even for
2105 # the "universal" C zero initializer {0}.
2111 if compile_object
"-Werror" "" ; then
2114 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
2117 # Our module code doesn't support Windows
2118 if test "$modules" = "yes" && test "$mingw32" = "yes" ; then
2119 error_exit
"Modules are not available for Windows"
2122 # module_upgrades is only reasonable if modules are enabled
2123 if test "$modules" = "no" && test "$module_upgrades" = "yes" ; then
2124 error_exit
"Can't enable module-upgrades as Modules are not enabled"
2127 # Static linking is not possible with modules or PIE
2128 if test "$static" = "yes" ; then
2129 if test "$modules" = "yes" ; then
2130 error_exit
"static and modules are mutually incompatible"
2134 # Unconditional check for compiler __thread support
2136 static __thread int tls_var;
2137 int main(void) { return tls_var; }
2140 if ! compile_prog
"-Werror" "" ; then
2141 error_exit
"Your compiler does not support the __thread specifier for " \
2142 "Thread-Local Storage (TLS). Please upgrade to a version that does."
2148 # define THREAD __thread
2152 static THREAD int tls_var;
2153 int main(void) { return tls_var; }
2156 # Check we support --no-pie first; we will need this for building ROMs.
2157 if compile_prog
"-Werror -fno-pie" "-no-pie"; then
2158 CFLAGS_NOPIE
="-fno-pie"
2161 if test "$static" = "yes"; then
2162 if test "$pie" != "no" && compile_prog
"-Werror -fPIE -DPIE" "-static-pie"; then
2163 CONFIGURE_CFLAGS
="-fPIE -DPIE $CONFIGURE_CFLAGS"
2164 QEMU_LDFLAGS
="-static-pie $QEMU_LDFLAGS"
2166 elif test "$pie" = "yes"; then
2167 error_exit
"-static-pie not available due to missing toolchain support"
2169 QEMU_LDFLAGS
="-static $QEMU_LDFLAGS"
2172 elif test "$pie" = "no"; then
2173 CONFIGURE_CFLAGS
="$CFLAGS_NOPIE $CONFIGURE_CFLAGS"
2174 elif compile_prog
"-Werror -fPIE -DPIE" "-pie"; then
2175 CONFIGURE_CFLAGS
="-fPIE -DPIE $CONFIGURE_CFLAGS"
2176 CONFIGURE_LDFLAGS
="-pie $CONFIGURE_LDFLAGS"
2178 elif test "$pie" = "yes"; then
2179 error_exit
"PIE not available due to missing toolchain support"
2181 echo "Disabling PIE due to missing toolchain support"
2185 # Detect support for PT_GNU_RELRO + DT_BIND_NOW.
2186 # The combination is known as "full relro", because .got.plt is read-only too.
2187 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
2188 QEMU_LDFLAGS
="-Wl,-z,relro -Wl,-z,now $QEMU_LDFLAGS"
2191 ##########################################
2192 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
2193 # use i686 as default anyway, but for those that don't, an explicit
2194 # specification is necessary
2196 if test "$cpu" = "i386"; then
2198 static int sfaa(int *ptr)
2200 return __sync_fetch_and_and(ptr, 0);
2206 val = __sync_val_compare_and_swap(&val, 0, 1);
2211 if ! compile_prog
"" "" ; then
2212 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
2216 #########################################
2217 # Solaris specific configure tool chain decisions
2219 if test "$solaris" = "yes" ; then
2223 if test -f /usr
/ccs
/bin
/ar ; then
2224 error_exit
"No path includes ar" \
2225 "Add /usr/ccs/bin to your path and rerun configure"
2227 error_exit
"No path includes ar"
2231 if test -z "${target_list+xxx}" ; then
2233 for target
in $default_target_list; do
2234 target_list
="$target_list $target"
2236 target_list
="${target_list# }"
2239 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
2240 for target
in $target_list; do
2241 # Check that we recognised the target name; this allows a more
2242 # friendly error message than if we let it fall through.
2243 case " $default_target_list " in
2247 error_exit
"Unknown target name '$target'"
2253 for target
in $target_list; do
2254 # if a deprecated target is enabled we note it here
2255 if echo "$deprecated_targets_list" |
grep -q "$target"; then
2256 add_to deprecated_features
$target
2260 # see if system emulation was really requested
2261 case " $target_list " in
2262 *"-softmmu "*) softmmu
=yes
2268 feature_not_found
() {
2272 error_exit
"User requested feature $feature" \
2273 "configure was not able to find it." \
2278 # big/little endian test
2280 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2281 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2282 extern int foo(short *, short *);
2283 int main(int argc, char *argv[]) {
2284 return foo(big_endian, little_endian);
2288 if compile_object
; then
2289 if strings -a $TMPO |
grep -q BiGeNdIaN
; then
2291 elif strings -a $TMPO |
grep -q LiTtLeEnDiAn
; then
2294 echo big
/little
test failed
2297 echo big
/little
test failed
2300 ##########################################
2302 if test -z "$want_tools"; then
2303 if test "$softmmu" = "no"; then
2310 ##########################################
2311 # cocoa implies not SDL or GTK
2312 # (the cocoa UI code currently assumes it is always the active UI
2313 # and doesn't interact well with other UI frontend code)
2314 if test "$cocoa" = "enabled"; then
2315 if test "$sdl" = "enabled"; then
2316 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
2318 if test "$gtk" = "yes"; then
2319 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
2325 # Some versions of Mac OS X incorrectly define SIZE_MAX
2329 int main(int argc, char *argv[]) {
2330 return printf("%zu", SIZE_MAX);
2333 have_broken_size_max
=no
2334 if ! compile_object
-Werror ; then
2335 have_broken_size_max
=yes
2338 ##########################################
2342 #include <sys/socket.h>
2343 #include <linux/ip.h>
2344 int main(void) { return sizeof(struct mmsghdr); }
2346 if compile_prog
"" "" ; then
2353 #include <sys/mman.h>
2354 int main(int argc, char *argv[]) {
2355 return mlockall(MCL_FUTURE);
2358 if compile_prog
"" "" ; then
2364 #########################################
2365 # vhost interdependencies and host support
2368 if test "$vhost_user" = "yes" && test "$linux" != "yes"; then
2369 error_exit
"vhost-user is only available on Linux"
2371 test "$vhost_vdpa" = "" && vhost_vdpa
=$linux
2372 if test "$vhost_vdpa" = "yes" && test "$linux" != "yes"; then
2373 error_exit
"vhost-vdpa is only available on Linux"
2375 test "$vhost_kernel" = "" && vhost_kernel
=$linux
2376 if test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then
2377 error_exit
"vhost-kernel is only available on Linux"
2380 # vhost-kernel devices
2381 test "$vhost_scsi" = "" && vhost_scsi
=$vhost_kernel
2382 if test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then
2383 error_exit
"--enable-vhost-scsi requires --enable-vhost-kernel"
2385 test "$vhost_vsock" = "" && vhost_vsock
=$vhost_kernel
2386 if test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then
2387 error_exit
"--enable-vhost-vsock requires --enable-vhost-kernel"
2390 # vhost-user backends
2391 test "$vhost_net_user" = "" && vhost_net_user
=$vhost_user
2392 if test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then
2393 error_exit
"--enable-vhost-net-user requires --enable-vhost-user"
2395 test "$vhost_crypto" = "" && vhost_crypto
=$vhost_user
2396 if test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then
2397 error_exit
"--enable-vhost-crypto requires --enable-vhost-user"
2399 test "$vhost_user_fs" = "" && vhost_user_fs
=$vhost_user
2400 if test "$vhost_user_fs" = "yes" && test "$vhost_user" = "no"; then
2401 error_exit
"--enable-vhost-user-fs requires --enable-vhost-user"
2403 #vhost-vdpa backends
2404 test "$vhost_net_vdpa" = "" && vhost_net_vdpa
=$vhost_vdpa
2405 if test "$vhost_net_vdpa" = "yes" && test "$vhost_vdpa" = "no"; then
2406 error_exit
"--enable-vhost-net-vdpa requires --enable-vhost-vdpa"
2409 # OR the vhost-kernel, vhost-vdpa and vhost-user values for simplicity
2410 if test "$vhost_net" = ""; then
2411 test "$vhost_net_user" = "yes" && vhost_net
=yes
2412 test "$vhost_net_vdpa" = "yes" && vhost_net
=yes
2413 test "$vhost_kernel" = "yes" && vhost_net
=yes
2416 ##########################################
2419 if ! has
"$pkg_config_exe"; then
2420 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2423 ##########################################
2426 if test "$linux_user" = "yes"; then
2429 #include <linux/futex.h>
2431 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2437 if ! compile_object
; then
2438 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2442 ##########################################
2445 if test "$lzo" != "no" ; then
2447 #include <lzo/lzo1x.h>
2448 int main(void) { lzo_version(); return 0; }
2450 if compile_prog
"" "-llzo2" ; then
2454 if test "$lzo" = "yes"; then
2455 feature_not_found
"liblzo2" "Install liblzo2 devel"
2461 ##########################################
2464 if test "$snappy" != "no" ; then
2466 #include <snappy-c.h>
2467 int main(void) { snappy_max_compressed_length(4096); return 0; }
2469 if compile_prog
"" "-lsnappy" ; then
2470 snappy_libs
='-lsnappy'
2473 if test "$snappy" = "yes"; then
2474 feature_not_found
"libsnappy" "Install libsnappy devel"
2480 ##########################################
2483 if test "$bzip2" != "no" ; then
2486 int main(void) { BZ2_bzlibVersion(); return 0; }
2488 if compile_prog
"" "-lbz2" ; then
2491 if test "$bzip2" = "yes"; then
2492 feature_not_found
"libbzip2" "Install libbzip2 devel"
2498 ##########################################
2501 if test "$lzfse" != "no" ; then
2504 int main(void) { lzfse_decode_scratch_size(); return 0; }
2506 if compile_prog
"" "-llzfse" ; then
2509 if test "$lzfse" = "yes"; then
2510 feature_not_found
"lzfse" "Install lzfse devel"
2516 ##########################################
2519 if test "$zstd" != "no" ; then
2520 libzstd_minver
="1.4.0"
2521 if $pkg_config --atleast-version=$libzstd_minver libzstd
; then
2522 zstd_cflags
="$($pkg_config --cflags libzstd)"
2523 zstd_libs
="$($pkg_config --libs libzstd)"
2526 if test "$zstd" = "yes" ; then
2527 feature_not_found
"libzstd" "Install libzstd devel"
2533 ##########################################
2536 if test "$seccomp" != "no" ; then
2537 libseccomp_minver
="2.3.0"
2538 if $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2539 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2540 seccomp_libs
="$($pkg_config --libs libseccomp)"
2543 if test "$seccomp" = "yes" ; then
2544 feature_not_found
"libseccomp" \
2545 "Install libseccomp devel >= $libseccomp_minver"
2551 ##########################################
2554 if test "$xen" != "disabled" ; then
2555 # Check whether Xen library path is specified via --extra-ldflags to avoid
2556 # overriding this setting with pkg-config output. If not, try pkg-config
2557 # to obtain all needed flags.
2559 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2560 $pkg_config --exists xencontrol
; then
2561 xen_ctrl_version
="$(printf '%d%02d%02d' \
2562 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2564 xen_pc
="xencontrol xenstore xenforeignmemory xengnttab"
2565 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2566 if $pkg_config --exists xentoolcore
; then
2567 xen_pc
="$xen_pc xentoolcore"
2569 xen_cflags
="$($pkg_config --cflags $xen_pc)"
2570 xen_libs
="$($pkg_config --libs $xen_pc)"
2573 xen_libs
="-lxenstore -lxenctrl"
2574 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2576 # First we test whether Xen headers and libraries are available.
2577 # If no, we are done and there is no Xen support.
2578 # If yes, more tests are run to detect the Xen version.
2582 #include <xenctrl.h>
2587 if ! compile_prog
"" "$xen_libs" ; then
2589 if test "$xen" = "enabled" ; then
2590 feature_not_found
"xen" "Install xen devel"
2596 cat > $TMPC <<EOF &&
2597 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2598 #define __XEN_TOOLS__
2599 #include <xendevicemodel.h>
2600 #include <xenforeignmemory.h>
2602 xendevicemodel_handle *xd;
2603 xenforeignmemory_handle *xfmem;
2605 xd = xendevicemodel_open(0, 0);
2606 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2608 xfmem = xenforeignmemory_open(0, 0);
2609 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2614 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2616 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2617 xen_ctrl_version
=41100
2620 cat > $TMPC <<EOF &&
2621 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2622 #include <xenforeignmemory.h>
2623 #include <xentoolcore.h>
2625 xenforeignmemory_handle *xfmem;
2627 xfmem = xenforeignmemory_open(0, 0);
2628 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2629 xentoolcore_restrict_all(0);
2634 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2636 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2637 xen_ctrl_version
=41000
2640 cat > $TMPC <<EOF &&
2641 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2642 #define __XEN_TOOLS__
2643 #include <xendevicemodel.h>
2645 xendevicemodel_handle *xd;
2647 xd = xendevicemodel_open(0, 0);
2648 xendevicemodel_close(xd);
2653 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2655 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2656 xen_ctrl_version
=40900
2659 cat > $TMPC <<EOF &&
2661 * If we have stable libs the we don't want the libxc compat
2662 * layers, regardless of what CFLAGS we may have been given.
2664 * Also, check if xengnttab_grant_copy_segment_t is defined and
2665 * grant copy operation is implemented.
2667 #undef XC_WANT_COMPAT_EVTCHN_API
2668 #undef XC_WANT_COMPAT_GNTTAB_API
2669 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2670 #include <xenctrl.h>
2671 #include <xenstore.h>
2672 #include <xenevtchn.h>
2673 #include <xengnttab.h>
2674 #include <xenforeignmemory.h>
2676 #include <xen/hvm/hvm_info_table.h>
2677 #if !defined(HVM_MAX_VCPUS)
2678 # error HVM_MAX_VCPUS not defined
2681 xc_interface *xc = NULL;
2682 xenforeignmemory_handle *xfmem;
2683 xenevtchn_handle *xe;
2684 xengnttab_handle *xg;
2685 xengnttab_grant_copy_segment_t* seg = NULL;
2689 xc = xc_interface_open(0, 0, 0);
2690 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2691 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2692 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2693 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2695 xfmem = xenforeignmemory_open(0, 0);
2696 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2698 xe = xenevtchn_open(0, 0);
2701 xg = xengnttab_open(0, 0);
2702 xengnttab_grant_copy(xg, 0, seg);
2707 compile_prog
"" "$xen_libs $xen_stable_libs"
2709 xen_ctrl_version
=40800
2712 cat > $TMPC <<EOF &&
2714 * If we have stable libs the we don't want the libxc compat
2715 * layers, regardless of what CFLAGS we may have been given.
2717 #undef XC_WANT_COMPAT_EVTCHN_API
2718 #undef XC_WANT_COMPAT_GNTTAB_API
2719 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2720 #include <xenctrl.h>
2721 #include <xenstore.h>
2722 #include <xenevtchn.h>
2723 #include <xengnttab.h>
2724 #include <xenforeignmemory.h>
2726 #include <xen/hvm/hvm_info_table.h>
2727 #if !defined(HVM_MAX_VCPUS)
2728 # error HVM_MAX_VCPUS not defined
2731 xc_interface *xc = NULL;
2732 xenforeignmemory_handle *xfmem;
2733 xenevtchn_handle *xe;
2734 xengnttab_handle *xg;
2738 xc = xc_interface_open(0, 0, 0);
2739 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2740 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2741 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2742 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2744 xfmem = xenforeignmemory_open(0, 0);
2745 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2747 xe = xenevtchn_open(0, 0);
2750 xg = xengnttab_open(0, 0);
2751 xengnttab_map_grant_ref(xg, 0, 0, 0);
2756 compile_prog
"" "$xen_libs $xen_stable_libs"
2758 xen_ctrl_version
=40701
2763 cat > $TMPC <<EOF &&
2764 #include <xenctrl.h>
2765 #include <xenstore.h>
2767 #include <xen/hvm/hvm_info_table.h>
2768 #if !defined(HVM_MAX_VCPUS)
2769 # error HVM_MAX_VCPUS not defined
2774 xc = xc_interface_open(0, 0, 0);
2775 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2776 xc_gnttab_open(NULL, 0);
2777 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2778 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2779 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2780 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2784 compile_prog
"" "$xen_libs"
2786 xen_ctrl_version
=40600
2791 cat > $TMPC <<EOF &&
2792 #include <xenctrl.h>
2793 #include <xenstore.h>
2795 #include <xen/hvm/hvm_info_table.h>
2796 #if !defined(HVM_MAX_VCPUS)
2797 # error HVM_MAX_VCPUS not defined
2802 xc = xc_interface_open(0, 0, 0);
2803 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2804 xc_gnttab_open(NULL, 0);
2805 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2806 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2807 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2811 compile_prog
"" "$xen_libs"
2813 xen_ctrl_version
=40500
2817 cat > $TMPC <<EOF &&
2818 #include <xenctrl.h>
2819 #include <xenstore.h>
2821 #include <xen/hvm/hvm_info_table.h>
2822 #if !defined(HVM_MAX_VCPUS)
2823 # error HVM_MAX_VCPUS not defined
2828 xc = xc_interface_open(0, 0, 0);
2829 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2830 xc_gnttab_open(NULL, 0);
2831 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2832 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2836 compile_prog
"" "$xen_libs"
2838 xen_ctrl_version
=40200
2842 if test "$xen" = "enabled" ; then
2843 feature_not_found
"xen (unsupported version)" \
2844 "Install a supported xen (xen 4.2 or newer)"
2849 if test "$xen" = enabled
; then
2850 if test $xen_ctrl_version -ge 40701 ; then
2851 xen_libs
="$xen_libs $xen_stable_libs "
2857 if test "$xen_pci_passthrough" != "disabled"; then
2858 if test "$xen" = "enabled" && test "$linux" = "yes"; then
2859 xen_pci_passthrough
=enabled
2861 if test "$xen_pci_passthrough" = "enabled"; then
2862 error_exit
"User requested feature Xen PCI Passthrough" \
2863 " but this feature requires /sys from Linux"
2865 xen_pci_passthrough
=disabled
2869 ##########################################
2871 if $pkg_config --exists "x11"; then
2873 x11_cflags
=$
($pkg_config --cflags x11
)
2874 x11_libs
=$
($pkg_config --libs x11
)
2877 ##########################################
2880 if test "$gtk" != "no"; then
2881 gtkpackage
="gtk+-3.0"
2882 gtkx11package
="gtk+-x11-3.0"
2884 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2885 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2886 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2887 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2888 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2890 gtk_cflags
="$gtk_cflags $x11_cflags"
2891 gtk_libs
="$gtk_libs $x11_libs"
2894 elif test "$gtk" = "yes"; then
2895 feature_not_found
"gtk" "Install gtk3-devel"
2902 ##########################################
2905 if test "$gnutls" != "no"; then
2907 if $pkg_config --exists "gnutls >= 3.1.18"; then
2908 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2909 gnutls_libs
=$
($pkg_config --libs gnutls
)
2910 # Packaging for the static libraries is not always correct.
2911 # At least ubuntu 18.04 ships only shared libraries.
2913 if compile_prog
"" "$gnutls_libs" ; then
2917 if test "$pass" = "no" && test "$gnutls" = "yes"; then
2918 feature_not_found
"gnutls" "Install gnutls devel >= 3.1.18"
2925 # If user didn't give a --disable/enable-gcrypt flag,
2926 # then mark as disabled if user requested nettle
2928 if test -z "$gcrypt"
2930 if test "$nettle" = "yes"
2936 # If user didn't give a --disable/enable-nettle flag,
2937 # then mark as disabled if user requested gcrypt
2939 if test -z "$nettle"
2941 if test "$gcrypt" = "yes"
2948 if ! has
"libgcrypt-config"
2953 if test -n "$cross_prefix"
2955 host=$
(libgcrypt-config
--host)
2956 if test "$host-" != $cross_prefix
2962 maj
=`libgcrypt-config --version | awk -F . '{print $1}'`
2963 min
=`libgcrypt-config --version | awk -F . '{print $2}'`
2965 if test $maj != 1 ||
test $min -lt 5
2974 if test "$nettle" != "no"; then
2976 if $pkg_config --exists "nettle >= 2.7.1"; then
2977 nettle_cflags
=$
($pkg_config --cflags nettle
)
2978 nettle_libs
=$
($pkg_config --libs nettle
)
2979 nettle_version
=$
($pkg_config --modversion nettle
)
2980 # Link test to make sure the given libraries work (e.g for static).
2982 if compile_prog
"" "$nettle_libs" ; then
2983 if test -z "$gcrypt"; then
2989 if test "$pass" = "yes"
2992 #include <nettle/xts.h>
2997 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
3002 if test "$pass" = "no" && test "$nettle" = "yes"; then
3003 feature_not_found
"nettle" "Install nettle devel >= 2.7.1"
3009 if test "$gcrypt" != "no"; then
3011 if has_libgcrypt
; then
3012 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
3013 gcrypt_libs
=$
(libgcrypt-config
--libs)
3014 # Debian has removed -lgpg-error from libgcrypt-config
3015 # as it "spreads unnecessary dependencies" which in
3016 # turn breaks static builds...
3017 if test "$static" = "yes"
3019 gcrypt_libs
="$gcrypt_libs -lgpg-error"
3022 # Link test to make sure the given libraries work (e.g for static).
3024 if compile_prog
"" "$gcrypt_libs" ; then
3028 if test "$pass" = "yes"; then
3033 gcry_mac_hd_t handle;
3034 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
3035 GCRY_MAC_FLAG_SECURE, NULL);
3039 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
3045 gcry_cipher_hd_t handle;
3046 gcry_cipher_open(&handle, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_XTS, 0);
3050 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
3054 elif test "$gcrypt" = "yes"; then
3055 feature_not_found
"gcrypt" "Install gcrypt devel >= 1.5.0"
3062 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
3064 error_exit
"Only one of gcrypt & nettle can be enabled"
3067 ##########################################
3068 # libtasn1 - only for the TLS creds/session test suite
3073 if $pkg_config --exists "libtasn1"; then
3074 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
3075 tasn1_libs
=$
($pkg_config --libs libtasn1
)
3081 ##########################################
3084 if test "$auth_pam" != "no"; then
3086 #include <security/pam_appl.h>
3089 const char *service_name = "qemu";
3090 const char *user = "frank";
3091 const struct pam_conv pam_conv = { 0 };
3092 pam_handle_t *pamh = NULL;
3093 pam_start(service_name, user, &pam_conv, &pamh);
3097 if compile_prog
"" "-lpam" ; then
3100 if test "$auth_pam" = "yes"; then
3101 feature_not_found
"PAM" "Install PAM development package"
3108 ##########################################
3111 if test "$vte" != "no"; then
3112 vteminversion
="0.32.0"
3113 if $pkg_config --exists "vte-2.91"; then
3114 vtepackage
="vte-2.91"
3116 vtepackage
="vte-2.90"
3118 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
3119 vte_cflags
=$
($pkg_config --cflags $vtepackage)
3120 vte_libs
=$
($pkg_config --libs $vtepackage)
3121 vteversion
=$
($pkg_config --modversion $vtepackage)
3123 elif test "$vte" = "yes"; then
3124 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
3130 ##########################################
3131 # RDMA needs OpenFabrics libraries
3132 if test "$rdma" != "no" ; then
3134 #include <rdma/rdma_cma.h>
3135 int main(void) { return 0; }
3137 rdma_libs
="-lrdmacm -libverbs -libumad"
3138 if compile_prog
"" "$rdma_libs" ; then
3141 if test "$rdma" = "yes" ; then
3143 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
3145 " (1) Fast: Install infiniband packages (devel) from your distro." \
3146 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3147 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3153 ##########################################
3156 cat > $TMPC <<EOF &&
3157 #include <sys/mman.h>
3164 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3170 if test "$rdma" = "yes" ; then
3173 if compile_prog
"" ""; then
3180 if ! compile_prog
"" ""; then
3181 error_exit
"PVRDMA is not supported since mremap is not implemented"
3190 if test "$pvrdma" = "yes" ; then
3191 error_exit
"PVRDMA requires rdma suppport"
3196 # Let's see if enhanced reg_mr is supported
3197 if test "$pvrdma" = "yes" ; then
3199 cat > $TMPC <<EOF &&
3200 #include <infiniband/verbs.h>
3206 struct ibv_pd *pd = NULL;
3212 mr = ibv_reg_mr_iova(pd, addr, length, iova, access);
3219 if ! compile_prog
"" "-libverbs"; then
3220 QEMU_CFLAGS
="$QEMU_CFLAGS -DLEGACY_RDMA_REG_MR"
3224 ##########################################
3225 # xfsctl() probe, used for file-posix.c
3226 if test "$xfs" != "no" ; then
3228 #include <stddef.h> /* NULL */
3229 #include <xfs/xfs.h>
3232 xfsctl(NULL, 0, 0, NULL);
3236 if compile_prog
"" "" ; then
3239 if test "$xfs" = "yes" ; then
3240 feature_not_found
"xfs" "Install xfsprogs/xfslibs devel"
3246 ##########################################
3247 # vde libraries probe
3248 if test "$vde" != "no" ; then
3249 vde_libs
="-lvdeplug"
3251 #include <libvdeplug.h>
3254 struct vde_open_args a = {0, 0, 0};
3260 if compile_prog
"" "$vde_libs" ; then
3263 if test "$vde" = "yes" ; then
3264 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3270 ##########################################
3271 # netmap support probe
3272 # Apart from looking for netmap headers, we make sure that the host API version
3273 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3274 # a minor/major version number. Minor new features will be marked with values up
3275 # to 15, and if something happens that requires a change to the backend we will
3276 # move above 15, submit the backend fixes and modify this two bounds.
3277 if test "$netmap" != "no" ; then
3279 #include <inttypes.h>
3281 #include <net/netmap.h>
3282 #include <net/netmap_user.h>
3283 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3286 int main(void) { return 0; }
3288 if compile_prog
"" "" ; then
3291 if test "$netmap" = "yes" ; then
3292 feature_not_found
"netmap"
3298 ##########################################
3299 # libcap-ng library probe
3300 if test "$cap_ng" != "no" ; then
3306 capng_capability_to_name(CAPNG_EFFECTIVE);
3310 if compile_prog
"" "$cap_libs" ; then
3313 if test "$cap_ng" = "yes" ; then
3314 feature_not_found
"cap_ng" "Install libcap-ng devel"
3320 ##########################################
3321 # Sound support libraries probe
3323 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3324 for drv
in $audio_drv_list; do
3327 if $pkg_config alsa
--exists; then
3328 alsa_libs
=$
($pkg_config alsa
--libs)
3329 alsa_cflags
=$
($pkg_config alsa
--cflags)
3331 if test "$drv" = "try-alsa"; then
3332 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-alsa/alsa/')
3335 if test "$drv" = "try-alsa"; then
3336 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-alsa//')
3338 error_exit
"$drv check failed" \
3339 "Make sure to have the $drv libs and headers installed."
3345 if $pkg_config libpulse
--exists; then
3347 pulse_libs
=$
($pkg_config libpulse
--libs)
3348 pulse_cflags
=$
($pkg_config libpulse
--cflags)
3349 if test "$drv" = "try-pa"; then
3350 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-pa/pa/')
3353 if test "$drv" = "try-pa"; then
3354 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-pa//')
3356 error_exit
"$drv check failed" \
3357 "Make sure to have the $drv libs and headers installed."
3363 if test "$sdl" = "no"; then
3364 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3369 if test "$sdl" = "no"; then
3370 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-sdl//')
3372 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-sdl/sdl/')
3377 coreaudio_libs
="-framework CoreAudio"
3381 dsound_libs
="-lole32 -ldxguid"
3390 if $pkg_config jack
--exists; then
3392 jack_libs
=$
($pkg_config jack
--libs)
3393 if test "$drv" = "try-jack"; then
3394 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-jack/jack/')
3397 if test "$drv" = "try-jack"; then
3398 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/try-jack//')
3400 error_exit
"$drv check failed" \
3401 "Make sure to have the $drv libs and headers installed."
3407 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3408 error_exit
"Unknown driver '$drv' selected" \
3409 "Possible drivers are: $audio_possible_drivers"
3415 ##########################################
3418 if test "$brlapi" != "no" ; then
3419 brlapi_libs
="-lbrlapi"
3423 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3425 if compile_prog
"" "$brlapi_libs" ; then
3428 if test "$brlapi" = "yes" ; then
3429 feature_not_found
"brlapi" "Install brlapi devel"
3435 ##########################################
3437 if test "$curl" != "no" ; then
3438 if $pkg_config libcurl
--exists; then
3439 curlconfig
="$pkg_config libcurl"
3441 curlconfig
=curl-config
3444 #include <curl/curl.h>
3445 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3447 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3448 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3449 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3452 if test "$curl" = "yes" ; then
3453 feature_not_found
"curl" "Install libcurl devel"
3459 ##########################################
3460 # glib support probe
3463 glib_modules
=gthread-2.0
3464 if test "$modules" = yes; then
3465 glib_modules
="$glib_modules gmodule-export-2.0"
3467 if test "$plugins" = yes; then
3468 glib_modules
="$glib_modules gmodule-2.0"
3471 for i
in $glib_modules; do
3472 if $pkg_config --atleast-version=$glib_req_ver $i; then
3473 glib_cflags
=$
($pkg_config --cflags $i)
3474 glib_libs
=$
($pkg_config --libs $i)
3476 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3480 # This workaround is required due to a bug in pkg-config file for glib as it
3481 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3483 if test "$static" = yes && test "$mingw32" = yes; then
3484 glib_cflags
="-DGLIB_STATIC_COMPILATION $glib_cflags"
3487 if $pkg_config --atleast-version=$glib_req_ver gio-2.0
; then
3488 gio_cflags
=$
($pkg_config --cflags gio-2.0
)
3489 gio_libs
=$
($pkg_config --libs gio-2.0
)
3490 gdbus_codegen
=$
($pkg_config --variable=gdbus_codegen gio-2.0
)
3491 if [ ! -x "$gdbus_codegen" ]; then
3494 # Check that the libraries actually work -- Ubuntu 18.04 ships
3495 # with pkg-config --static --libs data for gio-2.0 that is missing
3496 # -lblkid and will give a link error.
3498 #include <gio/gio.h>
3501 g_dbus_proxy_new_sync(0, 0, 0, 0, 0, 0, 0, 0);
3505 if compile_prog
"$gio_cflags" "$gio_libs" ; then
3514 if $pkg_config --atleast-version=$glib_req_ver gio-unix-2.0
; then
3515 gio_cflags
="$gio_cflags $($pkg_config --cflags gio-unix-2.0)"
3516 gio_libs
="$gio_libs $($pkg_config --libs gio-unix-2.0)"
3519 # Sanity check that the current size_t matches the
3520 # size that glib thinks it should be. This catches
3521 # problems on multi-arch where people try to build
3522 # 32-bit QEMU while pointing at 64-bit glib headers
3527 #define QEMU_BUILD_BUG_ON(x) \
3528 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3531 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3536 if ! compile_prog
"$glib_cflags" "$glib_libs" ; then
3537 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3538 "You probably need to set PKG_CONFIG_LIBDIR"\
3539 "to point to the right pkg-config files for your"\
3543 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3546 int main(void) { return 0; }
3548 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3549 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3550 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3551 CONFIGURE_CFLAGS
="-Wno-unknown-attributes $CONFIGURE_CFLAGS"
3555 # Silence clang warnings triggered by glib < 2.57.2
3558 typedef struct Foo {
3561 static void foo_free(Foo *f)
3565 G_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free);
3566 int main(void) { return 0; }
3568 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3569 if cc_has_warning_flag
"-Wno-unused-function"; then
3570 glib_cflags
="$glib_cflags -Wno-unused-function"
3571 CONFIGURE_CFLAGS
="$CONFIGURE_CFLAGS -Wno-unused-function"
3575 ##########################################
3576 # SHA command probe for modules
3577 if test "$modules" = yes; then
3578 shacmd_probe
="sha1sum sha1 shasum"
3579 for c
in $shacmd_probe; do
3585 if test "$shacmd" = ""; then
3586 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3590 ##########################################
3592 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3596 #include <pthread.h>
3597 static void *f(void *p) { return NULL; }
3600 pthread_create(&thread, 0, f, 0);
3604 if compile_prog
"" "" ; then
3607 for pthread_lib
in $PTHREADLIBS_LIST; do
3608 if compile_prog
"" "$pthread_lib" ; then
3611 for lib_entry
in $LIBS; do
3612 if test "$lib_entry" = "$pthread_lib"; then
3617 if test "$found" = "no"; then
3618 LIBS
="$pthread_lib $LIBS"
3625 if test "$mingw32" != yes && test "$pthread" = no
; then
3626 error_exit
"pthread check failed" \
3627 "Make sure to have the pthread libs and headers installed."
3630 # check for pthread_setname_np with thread id
3631 pthread_setname_np_w_tid
=no
3633 #include <pthread.h>
3635 static void *f(void *p) { return NULL; }
3639 pthread_create(&thread, 0, f, 0);
3640 pthread_setname_np(thread, "QEMU");
3644 if compile_prog
"" "$pthread_lib" ; then
3645 pthread_setname_np_w_tid
=yes
3648 # check for pthread_setname_np without thread id
3649 pthread_setname_np_wo_tid
=no
3651 #include <pthread.h>
3653 static void *f(void *p) { pthread_setname_np("QEMU"); return NULL; }
3657 pthread_create(&thread, 0, f, 0);
3661 if compile_prog
"" "$pthread_lib" ; then
3662 pthread_setname_np_wo_tid
=yes
3665 ##########################################
3667 if test "$rbd" != "no" ; then
3670 #include <rbd/librbd.h>
3673 rados_create(&cluster, NULL);
3677 rbd_libs
="-lrbd -lrados"
3678 if compile_prog
"" "$rbd_libs" ; then
3681 if test "$rbd" = "yes" ; then
3682 feature_not_found
"rados block device" "Install librbd/ceph devel"
3688 ##########################################
3690 if test "$libssh" != "no" ; then
3691 if $pkg_config --exists libssh
; then
3692 libssh_cflags
=$
($pkg_config libssh
--cflags)
3693 libssh_libs
=$
($pkg_config libssh
--libs)
3696 if test "$libssh" = "yes" ; then
3697 error_exit
"libssh required for --enable-libssh"
3703 ##########################################
3704 # Check for libssh 0.8
3705 # This is done like this instead of using the LIBSSH_VERSION_* and
3706 # SSH_VERSION_* macros because some distributions in the past shipped
3707 # snapshots of the future 0.8 from Git, and those snapshots did not
3708 # have updated version numbers (still referring to 0.7.0).
3710 if test "$libssh" = "yes"; then
3712 #include <libssh/libssh.h>
3713 int main(void) { return ssh_get_server_publickey(NULL, NULL); }
3715 if compile_prog
"$libssh_cflags" "$libssh_libs"; then
3716 libssh_cflags
="-DHAVE_LIBSSH_0_8 $libssh_cflags"
3720 ##########################################
3723 if test "$linux_aio" != "no" ; then
3726 #include <sys/eventfd.h>
3728 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3730 if compile_prog
"" "-laio" ; then
3733 if test "$linux_aio" = "yes" ; then
3734 feature_not_found
"linux AIO" "Install libaio devel"
3739 ##########################################
3740 # linux-io-uring probe
3742 if test "$linux_io_uring" != "no" ; then
3743 if $pkg_config liburing
; then
3744 linux_io_uring_cflags
=$
($pkg_config --cflags liburing
)
3745 linux_io_uring_libs
=$
($pkg_config --libs liburing
)
3748 if test "$linux_io_uring" = "yes" ; then
3749 feature_not_found
"linux io_uring" "Install liburing devel"
3755 ##########################################
3756 # TPM emulation is only on POSIX
3758 if test "$tpm" = ""; then
3759 if test "$mingw32" = "yes"; then
3764 elif test "$tpm" = "yes"; then
3765 if test "$mingw32" = "yes" ; then
3766 error_exit
"TPM emulation only available on POSIX systems"
3770 ##########################################
3774 if test "$attr" != "no" ; then
3777 #include <sys/types.h>
3778 #ifdef CONFIG_LIBATTR
3779 #include <attr/xattr.h>
3781 #include <sys/xattr.h>
3783 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3785 if compile_prog
"" "" ; then
3787 # Older distros have <attr/xattr.h>, and need -lattr:
3788 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3790 libattr_libs
="-lattr"
3793 if test "$attr" = "yes" ; then
3794 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3800 ##########################################
3803 #include <sys/types.h>
3804 #include <sys/uio.h>
3806 int main(void) { return sizeof(struct iovec); }
3809 if compile_prog
"" "" ; then
3813 ##########################################
3816 #include <sys/types.h>
3817 #include <sys/uio.h>
3819 int main(void) { return preadv(0, 0, 0, 0); }
3822 if compile_prog
"" "" ; then
3826 ##########################################
3830 auto | enabled | internal
)
3831 # Simpler to always update submodule, even if not needed.
3832 if test -e "${source_path}/.git" && test $git_update = 'yes' ; then
3833 git_submodules
="${git_submodules} dtc"
3838 ##########################################
3839 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3842 if $pkg_config gbm
; then
3843 gbm_cflags
="$($pkg_config --cflags gbm)"
3844 gbm_libs
="$($pkg_config --libs gbm)"
3848 if test "$opengl" != "no" ; then
3849 opengl_pkgs
="epoxy gbm"
3850 if $pkg_config $opengl_pkgs; then
3851 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs)"
3852 opengl_libs
="$($pkg_config --libs $opengl_pkgs)"
3854 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3858 if test "$opengl" = "yes" ; then
3859 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3867 if test "$opengl" = "yes"; then
3869 #include <epoxy/egl.h>
3870 #ifndef EGL_MESA_image_dma_buf_export
3871 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3873 int main(void) { return 0; }
3875 if compile_prog
"" "" ; then
3880 if test "$opengl" = "yes" && test "$have_x11" = "yes"; then
3881 for target
in $target_list; do
3883 lm32-softmmu
) # milkymist-tmu2 requires X11 and OpenGL
3890 ##########################################
3892 if test "$libxml2" != "no" ; then
3893 if $pkg_config --exists libxml-2.0
; then
3895 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
3896 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
3898 if test "$libxml2" = "yes"; then
3899 feature_not_found
"libxml2" "Install libxml2 devel"
3905 ##########################################
3907 if test "$glusterfs" != "no" ; then
3908 if $pkg_config --atleast-version=3 glusterfs-api
; then
3910 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3911 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3912 if $pkg_config --atleast-version=4 glusterfs-api
; then
3913 glusterfs_xlator_opt
="yes"
3915 if $pkg_config --atleast-version=5 glusterfs-api
; then
3916 glusterfs_discard
="yes"
3918 if $pkg_config --atleast-version=6 glusterfs-api
; then
3919 glusterfs_fallocate
="yes"
3920 glusterfs_zerofill
="yes"
3923 #include <glusterfs/api/glfs.h>
3928 /* new glfs_ftruncate() passes two additional args */
3929 return glfs_ftruncate(NULL, 0, NULL, NULL);
3932 if compile_prog
"$glusterfs_cflags" "$glusterfs_libs" ; then
3933 glusterfs_ftruncate_has_stat
="yes"
3936 #include <glusterfs/api/glfs.h>
3938 /* new glfs_io_cbk() passes two additional glfs_stat structs */
3940 glusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data)
3946 glfs_io_cbk iocb = &glusterfs_iocb;
3947 iocb(NULL, 0 , NULL, NULL, NULL);
3951 if compile_prog
"$glusterfs_cflags" "$glusterfs_libs" ; then
3952 glusterfs_iocb_has_stat
="yes"
3955 if test "$glusterfs" = "yes" ; then
3956 feature_not_found
"GlusterFS backend support" \
3957 "Install glusterfs-api devel >= 3"
3963 # Check for inotify functions when we are building linux-user
3964 # emulator. This is done because older glibc versions don't
3965 # have syscall stubs for these implemented. In that case we
3966 # don't provide them even if kernel supports them.
3970 #include <sys/inotify.h>
3975 /* try to start inotify */
3976 return inotify_init();
3979 if compile_prog
"" "" ; then
3985 #include <sys/inotify.h>
3990 /* try to start inotify */
3991 return inotify_init1(0);
3994 if compile_prog
"" "" ; then
3998 # check if pipe2 is there
4007 return pipe2(pipefd, O_CLOEXEC);
4010 if compile_prog
"" "" ; then
4014 # check if accept4 is there
4017 #include <sys/socket.h>
4022 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4026 if compile_prog
"" "" ; then
4030 # check if tee/splice is there. vmsplice was added same time.
4040 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4041 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4045 if compile_prog
"" "" ; then
4049 ##########################################
4052 if test "$numa" != "no" ; then
4055 int main(void) { return numa_available(); }
4058 if compile_prog
"" "-lnuma" ; then
4062 if test "$numa" = "yes" ; then
4063 feature_not_found
"numa" "install numactl devel"
4070 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4071 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4073 elif test "$tcmalloc" = "yes" ; then
4075 elif test "$jemalloc" = "yes" ; then
4079 ##########################################
4084 #include <sys/syscall.h>
4086 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4089 if compile_prog
"" "" ; then
4093 # check if optreset global is declared by <getopt.h>
4097 int main(void) { return optreset; }
4100 if compile_prog
"" "" ; then
4104 # check if eventfd is supported
4107 #include <sys/eventfd.h>
4111 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
4114 if compile_prog
"" "" ; then
4118 # check if memfd is supported
4121 #include <sys/mman.h>
4125 return memfd_create("foo", MFD_ALLOW_SEALING);
4128 if compile_prog
"" "" ; then
4134 if test "$linux_user" = "yes"; then
4136 #include <linux/usbdevice_fs.h>
4138 #ifndef USBDEVFS_GET_CAPABILITIES
4139 #error "USBDEVFS_GET_CAPABILITIES undefined"
4142 #ifndef USBDEVFS_DISCONNECT_CLAIM
4143 #error "USBDEVFS_DISCONNECT_CLAIM undefined"
4151 if compile_prog
"" ""; then
4156 # check for fallocate
4163 fallocate(0, 0, 0, 0);
4167 if compile_prog
"" "" ; then
4171 # check for fallocate hole punching
4172 fallocate_punch_hole
=no
4175 #include <linux/falloc.h>
4179 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4183 if compile_prog
"" "" ; then
4184 fallocate_punch_hole
=yes
4187 # check that fallocate supports range zeroing inside the file
4188 fallocate_zero_range
=no
4191 #include <linux/falloc.h>
4195 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4199 if compile_prog
"" "" ; then
4200 fallocate_zero_range
=yes
4203 # check for posix_fallocate
4210 posix_fallocate(0, 0, 0);
4214 if compile_prog
"" "" ; then
4218 # check for sync_file_range
4225 sync_file_range(0, 0, 0, 0);
4229 if compile_prog
"" "" ; then
4233 # check for linux/fiemap.h and FS_IOC_FIEMAP
4236 #include <sys/ioctl.h>
4237 #include <linux/fs.h>
4238 #include <linux/fiemap.h>
4242 ioctl(0, FS_IOC_FIEMAP, 0);
4246 if compile_prog
"" "" ; then
4261 if compile_prog
"" "" ; then
4265 # check for ppoll support
4272 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4273 ppoll(&pfd, 1, 0, 0);
4277 if compile_prog
"" "" ; then
4281 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4282 prctl_pr_set_timerslack
=no
4284 #include <sys/prctl.h>
4288 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4292 if compile_prog
"" "" ; then
4293 prctl_pr_set_timerslack
=yes
4296 # check for epoll support
4299 #include <sys/epoll.h>
4307 if compile_prog
"" "" ; then
4311 # epoll_create1 is a later addition
4312 # so we must check separately for its presence
4315 #include <sys/epoll.h>
4319 /* Note that we use epoll_create1 as a value, not as
4320 * a function being called. This is necessary so that on
4321 * old SPARC glibc versions where the function was present in
4322 * the library but not declared in the header file we will
4323 * fail the configure check. (Otherwise we will get a compiler
4324 * warning but not an error, and will proceed to fail the
4325 * qemu compile where we compile with -Werror.)
4327 return (int)(uintptr_t)&epoll_create1;
4330 if compile_prog
"" "" ; then
4334 # check for sendfile support
4337 #include <sys/sendfile.h>
4341 return sendfile(0, 0, 0, 0);
4344 if compile_prog
"" "" ; then
4348 # check for timerfd support (glibc 2.8 and newer)
4351 #include <sys/timerfd.h>
4355 return(timerfd_create(CLOCK_REALTIME, 0));
4358 if compile_prog
"" "" ; then
4362 # check for setns and unshare support
4375 if compile_prog
"" "" ; then
4379 # clock_adjtime probe
4386 return clock_adjtime(0, 0);
4390 if compile_prog
"" "" ; then
4405 if compile_prog
"" "" ; then
4409 # Search for bswap_32 function
4412 #include <byteswap.h>
4413 int main(void) { return bswap_32(0); }
4415 if compile_prog
"" "" ; then
4419 # Search for bswap32 function
4422 #include <sys/endian.h>
4423 #include <sys/types.h>
4424 #include <machine/bswap.h>
4425 int main(void) { return bswap32(0); }
4427 if compile_prog
"" "" ; then
4431 ##########################################
4432 # Do we have libiscsi >= 1.9.0
4433 if test "$libiscsi" != "no" ; then
4434 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4436 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4437 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4439 if test "$libiscsi" = "yes" ; then
4440 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4446 ##########################################
4448 # uClibc provides 2 versions of clock_gettime(), one with realtime
4449 # support and one without. This means that the clock_gettime() don't
4450 # need -lrt. We still need it for timer_create() so we check for this
4451 # function in addition.
4456 timer_create(CLOCK_REALTIME, NULL, NULL);
4457 return clock_gettime(CLOCK_REALTIME, NULL);
4461 if compile_prog
"" "" ; then
4463 # we need pthread for static linking. use previous pthread test result
4464 elif compile_prog
"" "$pthread_lib -lrt" ; then
4468 # Check whether we have openpty() in either libc or libutil
4470 extern int openpty(int *am, int *as, char *name, void *termp, void *winp);
4471 int main(void) { return openpty(0, 0, 0, 0, 0); }
4475 if compile_prog
"" "" ; then
4478 if compile_prog
"" "-lutil" ; then
4483 ##########################################
4485 if test "$spice" != "no" ; then
4488 int main(void) { spice_server_new(); return 0; }
4490 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4491 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4492 if $pkg_config --atleast-version=0.12.5 spice-server
&& \
4493 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4494 compile_prog
"$spice_cflags" "$spice_libs" ; then
4497 if test "$spice" = "yes" ; then
4498 feature_not_found
"spice" \
4499 "Install spice-server(>=0.12.5) and spice-protocol(>=0.12.3) devel"
4505 # check for smartcard support
4506 if test "$smartcard" != "no"; then
4507 if $pkg_config --atleast-version=2.5.1 libcacard
; then
4508 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4509 libcacard_libs
=$
($pkg_config --libs libcacard
)
4512 if test "$smartcard" = "yes"; then
4513 feature_not_found
"smartcard" "Install libcacard devel"
4520 if test "$libusb" != "no" ; then
4521 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4523 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4524 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4526 if test "$libusb" = "yes"; then
4527 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4533 # check for usbredirparser for usb network redirection support
4534 if test "$usb_redir" != "no" ; then
4535 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4537 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4538 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4540 if test "$usb_redir" = "yes"; then
4541 feature_not_found
"usb-redir" "Install usbredir devel"
4547 ##########################################
4548 # check if we have VSS SDK headers for win
4550 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
4551 test "$vss_win32_sdk" != "no" ; then
4552 case "$vss_win32_sdk" in
4553 "") vss_win32_include
="-isystem $source_path" ;;
4554 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4555 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4556 vss_win32_include
="-isystem $source_path/.sdk/vss"
4557 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4559 *) vss_win32_include
="-isystem $vss_win32_sdk"
4562 #define __MIDL_user_allocate_free_DEFINED__
4563 #include <inc/win2003/vss.h>
4564 int main(void) { return VSS_CTX_BACKUP; }
4566 if compile_prog
"$vss_win32_include" "" ; then
4567 guest_agent_with_vss
="yes"
4568 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4569 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4570 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4572 if test "$vss_win32_sdk" != "" ; then
4573 echo "ERROR: Please download and install Microsoft VSS SDK:"
4574 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4575 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4576 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4577 echo "ERROR: The headers are extracted in the directory \`inc'."
4578 feature_not_found
"VSS support"
4580 guest_agent_with_vss
="no"
4584 ##########################################
4585 # lookup Windows platform SDK (if not specified)
4586 # The SDK is needed only to build .tlb (type library) file of guest agent
4587 # VSS provider from the source. It is usually unnecessary because the
4588 # pre-compiled .tlb file is included.
4590 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
4591 test "$guest_agent_with_vss" = "yes" ; then
4592 if test -z "$win_sdk"; then
4593 programfiles
="$PROGRAMFILES"
4594 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4595 if test -n "$programfiles"; then
4596 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4598 feature_not_found
"Windows SDK"
4600 elif test "$win_sdk" = "no"; then
4605 ##########################################
4606 # check if mingw environment provides a recent ntddscsi.h
4607 if test "$mingw32" = "yes" && test "$guest_agent" != "no"; then
4609 #include <windows.h>
4610 #include <ntddscsi.h>
4612 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4613 #error Missing required ioctl definitions
4615 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4619 if compile_prog
"" "" ; then
4620 guest_agent_ntddscsi
=yes
4621 libs_qga
="-lsetupapi -lcfgmgr32 $libs_qga"
4625 ##########################################
4626 # virgl renderer probe
4628 if test "$virglrenderer" != "no" ; then
4630 #include <virglrenderer.h>
4631 int main(void) { virgl_renderer_poll(); return 0; }
4633 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4634 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4635 virgl_version
=$
($pkg_config --modversion virglrenderer
2>/dev
/null
)
4636 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4637 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4640 if test "$virglrenderer" = "yes" ; then
4641 feature_not_found
"virglrenderer"
4647 ##########################################
4651 auto | enabled | internal
)
4652 # Simpler to always update submodule, even if not needed.
4653 if test -e "${source_path}/.git" && test $git_update = 'yes' ; then
4654 git_submodules
="${git_submodules} capstone"
4659 ##########################################
4660 # check if we have fdatasync
4666 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4667 return fdatasync(0);
4669 #error Not supported
4673 if compile_prog
"" "" ; then
4677 ##########################################
4678 # check if we have madvise
4682 #include <sys/types.h>
4683 #include <sys/mman.h>
4685 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4687 if compile_prog
"" "" ; then
4691 ##########################################
4692 # check if we have posix_madvise
4696 #include <sys/mman.h>
4698 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4700 if compile_prog
"" "" ; then
4704 ##########################################
4705 # check if we have posix_memalign()
4712 return posix_memalign(&p, 8, 8);
4715 if compile_prog
"" "" ; then
4719 ##########################################
4720 # check if we have posix_syslog
4725 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4727 if compile_prog
"" "" ; then
4731 ##########################################
4732 # check if we have sem_timedwait
4736 #include <semaphore.h>
4737 int main(void) { sem_t s; struct timespec t = {0}; return sem_timedwait(&s, &t); }
4739 if compile_prog
"" "" ; then
4743 ##########################################
4744 # check if we have strchrnul
4750 // Use a haystack that the compiler shouldn't be able to constant fold
4751 char *haystack = (char*)&main;
4752 int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
4754 if compile_prog
"" "" ; then
4758 #########################################
4759 # check if we have st_atim
4763 #include <sys/stat.h>
4765 int main(void) { return offsetof(struct stat, st_atim); }
4767 if compile_prog
"" "" ; then
4771 ##########################################
4772 # check if trace backend exists
4774 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4775 if test "$?" -ne 0 ; then
4776 error_exit
"invalid trace backends" \
4777 "Please choose supported trace backends."
4780 ##########################################
4781 # For 'ust' backend, test if ust headers are present
4782 if have_backend
"ust"; then
4784 #include <lttng/tracepoint.h>
4785 int main(void) { return 0; }
4787 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4788 if $pkg_config lttng-ust
--exists; then
4789 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4791 lttng_ust_libs
="-llttng-ust -ldl"
4793 if $pkg_config liburcu-bp
--exists; then
4794 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4796 urcu_bp_libs
="-lurcu-bp"
4799 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4803 ##########################################
4804 # For 'dtrace' backend, test if 'dtrace' command is present
4805 if have_backend
"dtrace"; then
4806 if ! has
'dtrace' ; then
4807 error_exit
"dtrace command is not found in PATH $PATH"
4809 trace_backend_stap
="no"
4810 if has
'stap' ; then
4811 trace_backend_stap
="yes"
4813 # Workaround to avoid dtrace(1) producing a file with 'hidden' symbol
4814 # visibility. Define STAP_SDT_V2 to produce 'default' symbol visibility
4815 # instead. QEMU --enable-modules depends on this because the SystemTap
4816 # semaphores are linked into the main binary and not the module's shared
4818 QEMU_CFLAGS
="$QEMU_CFLAGS -DSTAP_SDT_V2"
4822 ##########################################
4823 # check and set a backend for coroutine
4825 # We prefer ucontext, but it's not always possible. The fallback
4826 # is sigcontext. On Windows the only valid backend is the Windows
4830 if test "$darwin" != "yes"; then
4832 #include <ucontext.h>
4833 #ifdef __stub_makecontext
4834 #error Ignoring glibc stub makecontext which will always fail
4836 int main(void) { makecontext(0, 0, 0); return 0; }
4838 if compile_prog
"" "" ; then
4843 if test "$coroutine" = ""; then
4844 if test "$mingw32" = "yes"; then
4846 elif test "$ucontext_works" = "yes"; then
4849 coroutine
=sigaltstack
4854 if test "$mingw32" != "yes"; then
4855 error_exit
"'windows' coroutine backend only valid for Windows"
4857 # Unfortunately the user visible backend name doesn't match the
4858 # coroutine-*.c filename for this case, so we have to adjust it here.
4862 if test "$ucontext_works" != "yes"; then
4863 feature_not_found
"ucontext"
4867 if test "$mingw32" = "yes"; then
4868 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4872 error_exit
"unknown coroutine backend $coroutine"
4877 if test "$coroutine_pool" = ""; then
4881 if test "$debug_stack_usage" = "yes"; then
4882 if test "$coroutine_pool" = "yes"; then
4883 echo "WARN: disabling coroutine pool for stack usage debugging"
4888 ##################################################
4892 if test "$safe_stack" = "yes"; then
4894 int main(int argc, char *argv[])
4896 #if ! __has_feature(safe_stack)
4897 #error SafeStack Disabled
4902 flag
="-fsanitize=safe-stack"
4903 # Check that safe-stack is supported and enabled.
4904 if compile_prog
"-Werror $flag" "$flag"; then
4905 # Flag needed both at compilation and at linking
4906 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
4907 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
4909 error_exit
"SafeStack not supported by your compiler"
4911 if test "$coroutine" != "ucontext"; then
4912 error_exit
"SafeStack is only supported by the coroutine backend ucontext"
4916 int main(int argc, char *argv[])
4918 #if defined(__has_feature)
4919 #if __has_feature(safe_stack)
4920 #error SafeStack Enabled
4926 if test "$safe_stack" = "no"; then
4927 # Make sure that safe-stack is disabled
4928 if ! compile_prog
"-Werror" ""; then
4929 # SafeStack was already enabled, try to explicitly remove the feature
4930 flag
="-fno-sanitize=safe-stack"
4931 if ! compile_prog
"-Werror $flag" "$flag"; then
4932 error_exit
"Configure cannot disable SafeStack"
4934 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
4935 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
4937 else # "$safe_stack" = ""
4938 # Set safe_stack to yes or no based on pre-existing flags
4939 if compile_prog
"-Werror" ""; then
4943 if test "$coroutine" != "ucontext"; then
4944 error_exit
"SafeStack is only supported by the coroutine backend ucontext"
4950 ##########################################
4951 # check if we have open_by_handle_at
4953 open_by_handle_at
=no
4956 #if !defined(AT_EMPTY_PATH)
4957 # error missing definition
4959 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4962 if compile_prog
"" "" ; then
4963 open_by_handle_at
=yes
4966 ########################################
4967 # check if we have linux/magic.h
4971 #include <linux/magic.h>
4976 if compile_prog
"" "" ; then
4980 ########################################
4981 # check if we have valgrind/valgrind.h
4985 #include <valgrind/valgrind.h>
4990 if compile_prog
"" "" ; then
4994 ########################################
4995 # check if environ is declared
5005 if compile_prog
"" "" ; then
5009 ########################################
5010 # check if cpuid.h is usable.
5015 unsigned a, b, c, d;
5016 int max = __get_cpuid_max(0, 0);
5019 __cpuid(1, a, b, c, d);
5023 __cpuid_count(7, 0, a, b, c, d);
5029 if compile_prog
"" "" ; then
5033 ##########################################
5034 # avx2 optimization requirement check
5036 # There is no point enabling this if cpuid.h is not usable,
5037 # since we won't be able to select the new routines.
5039 if test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then
5041 #pragma GCC push_options
5042 #pragma GCC target("avx2")
5044 #include <immintrin.h>
5045 static int bar(void *a) {
5046 __m256i x = *(__m256i *)a;
5047 return _mm256_testz_si256(x, x);
5049 int main(int argc, char *argv[]) { return bar(argv[0]); }
5051 if compile_object
"" ; then
5058 ##########################################
5059 # avx512f optimization requirement check
5061 # There is no point enabling this if cpuid.h is not usable,
5062 # since we won't be able to select the new routines.
5063 # by default, it is turned off.
5064 # if user explicitly want to enable it, check environment
5066 if test "$cpuid_h" = "yes" && test "$avx512f_opt" = "yes"; then
5068 #pragma GCC push_options
5069 #pragma GCC target("avx512f")
5071 #include <immintrin.h>
5072 static int bar(void *a) {
5073 __m512i x = *(__m512i *)a;
5074 return _mm512_test_epi64_mask(x, x);
5076 int main(int argc, char *argv[])
5078 return bar(argv[0]);
5081 if ! compile_object
"" ; then
5088 ########################################
5089 # check if __[u]int128_t is usable.
5102 if compile_prog
"" "" ; then
5106 #########################################
5107 # See if 128-bit atomic operations are supported.
5110 if test "$int128" = "yes"; then
5114 unsigned __int128 x = 0, y = 0;
5115 y = __atomic_load_16(&x, 0);
5116 __atomic_store_16(&x, y, 0);
5117 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5121 if compile_prog
"" "" ; then
5127 if test "$int128" = yes && test "$atomic128" = no
; then
5131 unsigned __int128 x = 0, y = 0;
5132 __sync_val_compare_and_swap_16(&x, y, x);
5136 if compile_prog
"" "" ; then
5141 #########################################
5142 # See if 64-bit atomic operations are supported.
5143 # Note that without __atomic builtins, we can only
5144 # assume atomic loads/stores max at pointer size.
5150 uint64_t x = 0, y = 0;
5151 #ifdef __ATOMIC_RELAXED
5152 y = __atomic_load_n(&x, __ATOMIC_RELAXED);
5153 __atomic_store_n(&x, y, __ATOMIC_RELAXED);
5154 __atomic_compare_exchange_n(&x, &y, x, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
5155 __atomic_exchange_n(&x, y, __ATOMIC_RELAXED);
5156 __atomic_fetch_add(&x, y, __ATOMIC_RELAXED);
5158 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5159 __sync_lock_test_and_set(&x, y);
5160 __sync_val_compare_and_swap(&x, y, 0);
5161 __sync_fetch_and_add(&x, y);
5166 if compile_prog
"" "" ; then
5170 #########################################
5171 # See if --dynamic-list is supported by the linker
5172 ld_dynamic_list
="no"
5173 if test "$static" = "no" ; then
5196 if compile_prog
"" "-Wl,--dynamic-list=$TMPTXT" ; then
5197 ld_dynamic_list
="yes"
5201 #########################################
5202 # See if -exported_symbols_list is supported by the linker
5204 ld_exported_symbols_list
="no"
5205 if test "$static" = "no" ; then
5210 if compile_prog
"" "-Wl,-exported_symbols_list,$TMPTXT" ; then
5211 ld_exported_symbols_list
="yes"
5215 if test "$plugins" = "yes" &&
5216 test "$ld_dynamic_list" = "no" &&
5217 test "$ld_exported_symbols_list" = "no" ; then
5219 "Plugin support requires dynamic linking and specifying a set of symbols " \
5220 "that are exported to plugins. Unfortunately your linker doesn't " \
5221 "support the flag (--dynamic-list or -exported_symbols_list) used " \
5222 "for this purpose. You can't build with --static."
5225 ########################################
5226 # See if __attribute__((alias)) is supported.
5227 # This false for Xcode 9, but has been remedied for Xcode 10.
5228 # Unfortunately, travis uses Xcode 9 by default.
5233 extern const int y __attribute__((alias("x")));
5234 int main(void) { return 0; }
5236 if compile_prog
"" "" ; then
5240 ########################################
5241 # check if getauxval is available.
5245 #include <sys/auxv.h>
5247 return getauxval(AT_HWCAP) == 0;
5250 if compile_prog
"" "" ; then
5254 ########################################
5255 # check if ccache is interfering with
5256 # semantic analysis of macros
5261 static const int Z = 1;
5262 #define fn() ({ Z; })
5263 #define TAUT(X) ((X) == Z)
5264 #define PAREN(X, Y) (X == Y)
5266 int main(int argc, char *argv[])
5272 if (PAREN(x, y)) return 0;
5273 if (TAUT(Z)) return 0;
5278 if ! compile_object
"-Werror"; then
5282 #################################################
5283 # clang does not support glibc + FORTIFY_SOURCE.
5285 if test "$fortify_source" != "no"; then
5286 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
5287 fortify_source
="no";
5288 elif test -n "$cxx" && has
$cxx &&
5289 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
5290 fortify_source
="no";
5292 fortify_source
="yes"
5296 ###############################################
5297 # Check if copy_file_range is provided by glibc
5298 have_copy_file_range
=no
5302 copy_file_range(0, NULL, 0, NULL, 0, 0);
5306 if compile_prog
"" "" ; then
5307 have_copy_file_range
=yes
5310 ##########################################
5311 # check if struct fsxattr is available via linux/fs.h
5315 #include <linux/fs.h>
5321 if compile_prog
"" "" ; then
5325 ##########################################
5326 # check for usable membarrier system call
5327 if test "$membarrier" = "yes"; then
5329 if test "$mingw32" = "yes" ; then
5331 elif test "$linux" = "yes" ; then
5333 #include <linux/membarrier.h>
5334 #include <sys/syscall.h>
5338 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5339 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5343 if compile_prog
"" "" ; then
5347 if test "$have_membarrier" = "no"; then
5348 feature_not_found
"membarrier" "membarrier system call not available"
5351 # Do not enable it by default even for Mingw32, because it doesn't
5356 ##########################################
5357 # check if rtnetlink.h exists and is useful
5360 #include <linux/rtnetlink.h>
5362 return IFLA_PROTO_DOWN;
5365 if compile_prog
"" "" ; then
5369 ##########################################
5370 # check for usable AF_VSOCK environment
5374 #include <sys/types.h>
5375 #include <sys/socket.h>
5376 #if !defined(AF_VSOCK)
5377 # error missing AF_VSOCK flag
5379 #include <linux/vm_sockets.h>
5382 struct sockaddr_vm svm;
5383 socklen_t len = sizeof(svm);
5384 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5385 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5386 if ((ret == -1) && (errno == ENOTCONN)) {
5392 if compile_prog
"" "" ; then
5396 ##########################################
5397 # check for usable AF_ALG environment
5401 #include <sys/types.h>
5402 #include <sys/socket.h>
5403 #include <linux/if_alg.h>
5406 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5410 if compile_prog
"" "" ; then
5413 if test "$crypto_afalg" = "yes"
5415 if test "$have_afalg" != "yes"
5417 error_exit
"AF_ALG requested but could not be detected"
5422 #################################################
5423 # check for sysmacros.h
5427 #include <sys/sysmacros.h>
5429 return makedev(0, 0);
5432 if compile_prog
"" "" ; then
5436 ##########################################
5437 # check for _Static_assert()
5439 have_static_assert
=no
5441 _Static_assert(1, "success");
5446 if compile_prog
"" "" ; then
5447 have_static_assert
=yes
5450 ##########################################
5451 # check for utmpx.h, it is missing e.g. on OpenBSD
5456 struct utmpx user_info;
5461 if compile_prog
"" "" ; then
5465 ##########################################
5466 # check for getrandom()
5470 #include <sys/random.h>
5472 return getrandom(0, 0, GRND_NONBLOCK);
5475 if compile_prog
"" "" ; then
5479 ##########################################
5480 # checks for sanitizers
5484 have_asan_iface_h
=no
5485 have_asan_iface_fiber
=no
5487 if test "$sanitizers" = "yes" ; then
5489 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5493 # we could use a simple skeleton for flags checks, but this also
5494 # detect the static linking issue of ubsan, see also:
5495 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5499 void *tmp = malloc(10);
5501 return *(int *)(tmp + 2);
5506 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5510 if check_include
"sanitizer/asan_interface.h" ; then
5511 have_asan_iface_h
=yes
5515 #include <sanitizer/asan_interface.h>
5517 __sanitizer_start_switch_fiber(0, 0, 0);
5521 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5522 have_asan_iface_fiber
=yes
5526 ##########################################
5528 if test "$fuzzing" = "yes" && test -z "${LIB_FUZZING_ENGINE+xxx}"; then
5529 write_c_fuzzer_skeleton
5530 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=fuzzer" ""; then
5533 error_exit
"Your compiler doesn't support -fsanitize=fuzzer"
5538 # Thread sanitizer is, for now, much noisier than the other sanitizers;
5539 # keep it separate until that is not the case.
5540 if test "$tsan" = "yes" && test "$sanitizers" = "yes"; then
5541 error_exit
"TSAN is not supported with other sanitiziers."
5544 have_tsan_iface_fiber
=no
5545 if test "$tsan" = "yes" ; then
5547 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then
5551 #include <sanitizer/tsan_interface.h>
5553 __tsan_create_fiber(0);
5557 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then
5558 have_tsan_iface_fiber
=yes
5562 ##########################################
5565 if test "$libpmem" != "no"; then
5566 if $pkg_config --exists "libpmem"; then
5568 libpmem_libs
=$
($pkg_config --libs libpmem
)
5569 libpmem_cflags
=$
($pkg_config --cflags libpmem
)
5571 if test "$libpmem" = "yes" ; then
5572 feature_not_found
"libpmem" "Install nvml or pmdk"
5578 ##########################################
5579 # check for libdaxctl
5581 if test "$libdaxctl" != "no"; then
5582 if $pkg_config --atleast-version=57 "libdaxctl"; then
5584 libdaxctl_libs
=$
($pkg_config --libs libdaxctl
)
5585 libdaxctl_cflags
=$
($pkg_config --cflags libdaxctl
)
5587 if test "$libdaxctl" = "yes" ; then
5588 feature_not_found
"libdaxctl" "Install libdaxctl"
5594 ##########################################
5598 auto | enabled | internal
)
5599 # Simpler to always update submodule, even if not needed.
5600 if test -e "${source_path}/.git" && test $git_update = 'yes' ; then
5601 git_submodules
="${git_submodules} slirp"
5606 ##########################################
5607 # check for usable __NR_keyctl syscall
5609 if test "$linux" = "yes" ; then
5614 #include <asm/unistd.h>
5615 #include <linux/keyctl.h>
5618 return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0);
5621 if compile_prog
"" "" ; then
5625 if test "$secret_keyring" != "no"
5627 if test "$have_keyring" = "yes"
5631 if test "$secret_keyring" = "yes"
5633 error_exit
"syscall __NR_keyctl requested, \
5634 but not implemented on your system"
5641 ##########################################
5643 # After here, no more $cc or $ld runs
5647 if test "$gcov" = "yes" ; then
5649 elif test "$fortify_source" = "yes" ; then
5650 QEMU_CFLAGS
="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
5656 # Ensure there's only a single GP
5657 QEMU_CFLAGS
="-msmall-data $QEMU_CFLAGS"
5661 if test "$gprof" = "yes" ; then
5662 QEMU_CFLAGS
="-p $QEMU_CFLAGS"
5663 QEMU_LDFLAGS
="-p $QEMU_LDFLAGS"
5666 if test "$have_asan" = "yes"; then
5667 QEMU_CFLAGS
="-fsanitize=address $QEMU_CFLAGS"
5668 QEMU_LDFLAGS
="-fsanitize=address $QEMU_LDFLAGS"
5669 if test "$have_asan_iface_h" = "no" ; then
5670 echo "ASAN build enabled, but ASAN header missing." \
5671 "Without code annotation, the report may be inferior."
5672 elif test "$have_asan_iface_fiber" = "no" ; then
5673 echo "ASAN build enabled, but ASAN header is too old." \
5674 "Without code annotation, the report may be inferior."
5677 if test "$have_tsan" = "yes" ; then
5678 if test "$have_tsan_iface_fiber" = "yes" ; then
5679 QEMU_CFLAGS
="-fsanitize=thread $QEMU_CFLAGS"
5680 QEMU_LDFLAGS
="-fsanitize=thread $QEMU_LDFLAGS"
5682 error_exit
"Cannot enable TSAN due to missing fiber annotation interface."
5684 elif test "$tsan" = "yes" ; then
5685 error_exit
"Cannot enable TSAN due to missing sanitize thread interface."
5687 if test "$have_ubsan" = "yes"; then
5688 QEMU_CFLAGS
="-fsanitize=undefined $QEMU_CFLAGS"
5689 QEMU_LDFLAGS
="-fsanitize=undefined $QEMU_LDFLAGS"
5692 ##########################################
5694 if test "$libnfs" != "no" ; then
5695 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5697 libnfs_libs
=$
($pkg_config --libs libnfs
)
5699 if test "$libnfs" = "yes" ; then
5700 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5706 ##########################################
5708 # Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
5709 if test "$solaris" = "no" && test "$tsan" = "no"; then
5710 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5711 QEMU_LDFLAGS
="-Wl,--warn-common $QEMU_LDFLAGS"
5715 # Use ASLR, no-SEH and DEP if available
5716 if test "$mingw32" = "yes" ; then
5717 flags
="--no-seh --nxcompat"
5719 # Disable ASLR for debug builds to allow debugging with gdb
5720 if test "$debug" = "no" ; then
5721 flags
="--dynamicbase $flags"
5724 for flag
in $flags; do
5725 if ld_has
$flag ; then
5726 QEMU_LDFLAGS
="-Wl,$flag $QEMU_LDFLAGS"
5731 # We can only support ivshmem if we have eventfd
5732 if [ "$eventfd" = "yes" ]; then
5736 if test "$softmmu" = yes ; then
5737 if test "$linux" = yes; then
5738 if test "$virtfs" != no
&& test "$cap_ng" = yes && test "$attr" = yes ; then
5741 if test "$virtfs" = yes; then
5742 error_exit
"VirtFS requires libcap-ng devel and libattr devel"
5747 if test "$virtfs" = yes; then
5748 error_exit
"VirtFS is supported only on Linux"
5754 # Probe for guest agent support/options
5756 if [ "$guest_agent" != "no" ]; then
5757 if [ "$softmmu" = no
-a "$want_tools" = no
] ; then
5759 elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5761 elif [ "$guest_agent" != yes ]; then
5764 error_exit
"Guest agent is not supported on this platform"
5768 # Guest agent Window MSI package
5770 if test "$guest_agent" != yes; then
5771 if test "$guest_agent_msi" = yes; then
5772 error_exit
"MSI guest agent package requires guest agent enabled"
5775 elif test "$mingw32" != "yes"; then
5776 if test "$guest_agent_msi" = "yes"; then
5777 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5780 elif ! has wixl
; then
5781 if test "$guest_agent_msi" = "yes"; then
5782 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5786 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5787 # disabled explicitly
5788 if test "$guest_agent_msi" != "no"; then
5793 if test "$guest_agent_msi" = "yes"; then
5794 if test "$guest_agent_with_vss" = "yes"; then
5795 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5798 if test "$QEMU_GA_MANUFACTURER" = ""; then
5799 QEMU_GA_MANUFACTURER
=QEMU
5802 if test "$QEMU_GA_DISTRO" = ""; then
5803 QEMU_GA_DISTRO
=Linux
5806 if test "$QEMU_GA_VERSION" = ""; then
5807 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5810 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5814 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5817 QEMU_GA_MSI_ARCH
="-D Arch=32"
5820 error_exit
"CPU $cpu not supported for building installation package"
5825 # Mac OS X ships with a broken assembler
5827 if { test "$cpu" = "i386" ||
test "$cpu" = "x86_64"; } && \
5828 test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \
5829 test "$targetos" != "Haiku" && test "$softmmu" = yes ; then
5830 # Different host OS linkers have different ideas about the name of the ELF
5831 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5832 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5833 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
5834 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5835 ld_i386_emulation
="$emu"
5842 # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
5843 if test "$cpu" = "s390x" ; then
5845 if compile_prog
"-march=z900" ""; then
5846 roms
="$roms s390-ccw"
5847 # SLOF is required for building the s390-ccw firmware on s390x,
5848 # since it is using the libnet code from SLOF for network booting.
5849 if test -e "${source_path}/.git" ; then
5850 git_submodules
="${git_submodules} roms/SLOF"
5855 # Check that the C++ compiler exists and works with the C compiler.
5856 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5859 int c_function(void);
5860 int main(void) { return c_function(); }
5867 int c_function(void);
5869 int c_function(void) { return 42; }
5874 if do_cxx
$CXXFLAGS $CONFIGURE_CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
5875 # C++ compiler $cxx works ok with C compiler $cc
5878 echo "C++ compiler $cxx does not work with C compiler $cc"
5879 echo "Disabling C++ specific optional code"
5883 echo "No C++ compiler available; disabling C++ specific optional code"
5887 if test $git_update = 'yes' ; then
5888 (cd "${source_path}" && GIT
="$git" "./scripts/git-submodule.sh" update
"$git_submodules")
5891 config_host_mak
="config-host.mak"
5893 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5894 echo >> $config_host_mak
5896 echo all
: >> $config_host_mak
5897 echo "GIT=$git" >> $config_host_mak
5898 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
5899 echo "GIT_UPDATE=$git_update" >> $config_host_mak
5901 echo "ARCH=$ARCH" >> $config_host_mak
5903 if test "$default_devices" = "yes" ; then
5904 echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak
5906 echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak
5908 if test "$debug_tcg" = "yes" ; then
5909 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5911 if test "$strip_opt" = "yes" ; then
5912 echo "STRIP=${strip}" >> $config_host_mak
5914 if test "$bigendian" = "yes" ; then
5915 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5917 if test "$mingw32" = "yes" ; then
5918 echo "CONFIG_WIN32=y" >> $config_host_mak
5919 rc_version
=$
(cat $source_path/VERSION
)
5920 version_major
=${rc_version%%.*}
5921 rc_version
=${rc_version#*.}
5922 version_minor
=${rc_version%%.*}
5923 rc_version
=${rc_version#*.}
5924 version_subminor
=${rc_version%%.*}
5926 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5927 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5928 if test "$guest_agent_with_vss" = "yes" ; then
5929 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5930 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5931 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5933 if test "$guest_agent_ntddscsi" = "yes" ; then
5934 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
5936 if test "$guest_agent_msi" = "yes"; then
5937 echo "CONFIG_QGA_MSI=y" >> $config_host_mak
5938 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5939 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5940 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5941 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5942 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5943 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5946 echo "CONFIG_POSIX=y" >> $config_host_mak
5949 if test "$linux" = "yes" ; then
5950 echo "CONFIG_LINUX=y" >> $config_host_mak
5953 if test "$darwin" = "yes" ; then
5954 echo "CONFIG_DARWIN=y" >> $config_host_mak
5957 if test "$solaris" = "yes" ; then
5958 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5960 if test "$haiku" = "yes" ; then
5961 echo "CONFIG_HAIKU=y" >> $config_host_mak
5963 if test "$static" = "yes" ; then
5964 echo "CONFIG_STATIC=y" >> $config_host_mak
5966 if test "$profiler" = "yes" ; then
5967 echo "CONFIG_PROFILER=y" >> $config_host_mak
5969 if test "$want_tools" = "yes" ; then
5970 echo "CONFIG_TOOLS=y" >> $config_host_mak
5972 if test "$guest_agent" = "yes" ; then
5973 echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak
5975 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5976 if test "$vde" = "yes" ; then
5977 echo "CONFIG_VDE=y" >> $config_host_mak
5978 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
5980 if test "$netmap" = "yes" ; then
5981 echo "CONFIG_NETMAP=y" >> $config_host_mak
5983 if test "$l2tpv3" = "yes" ; then
5984 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5986 if test "$gprof" = "yes" ; then
5987 echo "CONFIG_GPROF=y" >> $config_host_mak
5989 if test "$cap_ng" = "yes" ; then
5990 echo "CONFIG_LIBCAP_NG=y" >> $config_host_mak
5991 echo "LIBCAP_NG_LIBS=$cap_libs" >> $config_host_mak
5993 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5994 for drv
in $audio_drv_list; do
5995 def
=CONFIG_AUDIO_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5996 echo "$def=y" >> $config_host_mak
5998 if test "$alsa" = "yes" ; then
5999 echo "CONFIG_ALSA=y" >> $config_host_mak
6001 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6002 echo "ALSA_CFLAGS=$alsa_cflags" >> $config_host_mak
6003 if test "$libpulse" = "yes" ; then
6004 echo "CONFIG_LIBPULSE=y" >> $config_host_mak
6006 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6007 echo "PULSE_CFLAGS=$pulse_cflags" >> $config_host_mak
6008 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6009 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6010 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
6011 if test "$libjack" = "yes" ; then
6012 echo "CONFIG_LIBJACK=y" >> $config_host_mak
6014 echo "JACK_LIBS=$jack_libs" >> $config_host_mak
6015 if test "$audio_win_int" = "yes" ; then
6016 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6018 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6019 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
6020 if test "$xfs" = "yes" ; then
6021 echo "CONFIG_XFS=y" >> $config_host_mak
6023 qemu_version
=$
(head $source_path/VERSION
)
6024 echo "PKGVERSION=$pkgversion" >>$config_host_mak
6025 echo "SRC_PATH=$source_path" >> $config_host_mak
6026 echo "TARGET_DIRS=$target_list" >> $config_host_mak
6027 if test "$modules" = "yes"; then
6028 # $shacmd can generate a hash started with digit, which the compiler doesn't
6029 # like as an symbol. So prefix it with an underscore
6030 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
6031 echo "CONFIG_MODULES=y" >> $config_host_mak
6033 if test "$module_upgrades" = "yes"; then
6034 echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak
6036 if test "$have_x11" = "yes" && test "$need_x11" = "yes"; then
6037 echo "CONFIG_X11=y" >> $config_host_mak
6038 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6039 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6041 if test "$pipe2" = "yes" ; then
6042 echo "CONFIG_PIPE2=y" >> $config_host_mak
6044 if test "$accept4" = "yes" ; then
6045 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6047 if test "$splice" = "yes" ; then
6048 echo "CONFIG_SPLICE=y" >> $config_host_mak
6050 if test "$eventfd" = "yes" ; then
6051 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6053 if test "$memfd" = "yes" ; then
6054 echo "CONFIG_MEMFD=y" >> $config_host_mak
6056 if test "$have_usbfs" = "yes" ; then
6057 echo "CONFIG_USBFS=y" >> $config_host_mak
6059 if test "$fallocate" = "yes" ; then
6060 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6062 if test "$fallocate_punch_hole" = "yes" ; then
6063 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6065 if test "$fallocate_zero_range" = "yes" ; then
6066 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6068 if test "$posix_fallocate" = "yes" ; then
6069 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6071 if test "$sync_file_range" = "yes" ; then
6072 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6074 if test "$fiemap" = "yes" ; then
6075 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6077 if test "$dup3" = "yes" ; then
6078 echo "CONFIG_DUP3=y" >> $config_host_mak
6080 if test "$ppoll" = "yes" ; then
6081 echo "CONFIG_PPOLL=y" >> $config_host_mak
6083 if test "$prctl_pr_set_timerslack" = "yes" ; then
6084 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6086 if test "$epoll" = "yes" ; then
6087 echo "CONFIG_EPOLL=y" >> $config_host_mak
6089 if test "$epoll_create1" = "yes" ; then
6090 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6092 if test "$sendfile" = "yes" ; then
6093 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6095 if test "$timerfd" = "yes" ; then
6096 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6098 if test "$setns" = "yes" ; then
6099 echo "CONFIG_SETNS=y" >> $config_host_mak
6101 if test "$clock_adjtime" = "yes" ; then
6102 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6104 if test "$syncfs" = "yes" ; then
6105 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6107 if test "$inotify" = "yes" ; then
6108 echo "CONFIG_INOTIFY=y" >> $config_host_mak
6110 if test "$inotify1" = "yes" ; then
6111 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6113 if test "$sem_timedwait" = "yes" ; then
6114 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6116 if test "$strchrnul" = "yes" ; then
6117 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
6119 if test "$st_atim" = "yes" ; then
6120 echo "HAVE_STRUCT_STAT_ST_ATIM=y" >> $config_host_mak
6122 if test "$byteswap_h" = "yes" ; then
6123 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6125 if test "$bswap_h" = "yes" ; then
6126 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6128 if test "$curl" = "yes" ; then
6129 echo "CONFIG_CURL=y" >> $config_host_mak
6130 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
6131 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
6133 if test "$brlapi" = "yes" ; then
6134 echo "CONFIG_BRLAPI=y" >> $config_host_mak
6135 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
6137 if test "$gtk" = "yes" ; then
6138 echo "CONFIG_GTK=y" >> $config_host_mak
6139 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
6140 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
6141 if test "$gtk_gl" = "yes" ; then
6142 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6145 if test "$gio" = "yes" ; then
6146 echo "CONFIG_GIO=y" >> $config_host_mak
6147 echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
6148 echo "GIO_LIBS=$gio_libs" >> $config_host_mak
6149 echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak
6151 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
6152 if test "$gnutls" = "yes" ; then
6153 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6154 echo "GNUTLS_CFLAGS=$gnutls_cflags" >> $config_host_mak
6155 echo "GNUTLS_LIBS=$gnutls_libs" >> $config_host_mak
6157 if test "$gcrypt" = "yes" ; then
6158 echo "CONFIG_GCRYPT=y" >> $config_host_mak
6159 if test "$gcrypt_hmac" = "yes" ; then
6160 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6162 echo "GCRYPT_CFLAGS=$gcrypt_cflags" >> $config_host_mak
6163 echo "GCRYPT_LIBS=$gcrypt_libs" >> $config_host_mak
6165 if test "$nettle" = "yes" ; then
6166 echo "CONFIG_NETTLE=y" >> $config_host_mak
6167 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
6168 echo "NETTLE_CFLAGS=$nettle_cflags" >> $config_host_mak
6169 echo "NETTLE_LIBS=$nettle_libs" >> $config_host_mak
6171 if test "$qemu_private_xts" = "yes" ; then
6172 echo "CONFIG_QEMU_PRIVATE_XTS=y" >> $config_host_mak
6174 if test "$tasn1" = "yes" ; then
6175 echo "CONFIG_TASN1=y" >> $config_host_mak
6177 if test "$auth_pam" = "yes" ; then
6178 echo "CONFIG_AUTH_PAM=y" >> $config_host_mak
6180 if test "$have_broken_size_max" = "yes" ; then
6181 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6183 if test "$have_openpty" = "yes" ; then
6184 echo "HAVE_OPENPTY=y" >> $config_host_mak
6187 # Work around a system header bug with some kernel/XFS header
6188 # versions where they both try to define 'struct fsxattr':
6189 # xfs headers will not try to redefine structs from linux headers
6190 # if this macro is set.
6191 if test "$have_fsxattr" = "yes" ; then
6192 echo "HAVE_FSXATTR=y" >> $config_host_mak
6194 if test "$have_copy_file_range" = "yes" ; then
6195 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
6197 if test "$vte" = "yes" ; then
6198 echo "CONFIG_VTE=y" >> $config_host_mak
6199 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6200 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
6202 if test "$virglrenderer" = "yes" ; then
6203 echo "CONFIG_VIRGL=y" >> $config_host_mak
6204 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6205 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6207 if test "$xen" = "enabled" ; then
6208 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
6209 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
6210 echo "XEN_CFLAGS=$xen_cflags" >> $config_host_mak
6211 echo "XEN_LIBS=$xen_libs" >> $config_host_mak
6213 if test "$linux_aio" = "yes" ; then
6214 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6216 if test "$linux_io_uring" = "yes" ; then
6217 echo "CONFIG_LINUX_IO_URING=y" >> $config_host_mak
6218 echo "LINUX_IO_URING_CFLAGS=$linux_io_uring_cflags" >> $config_host_mak
6219 echo "LINUX_IO_URING_LIBS=$linux_io_uring_libs" >> $config_host_mak
6221 if test "$attr" = "yes" ; then
6222 echo "CONFIG_ATTR=y" >> $config_host_mak
6223 echo "LIBATTR_LIBS=$libattr_libs" >> $config_host_mak
6225 if test "$libattr" = "yes" ; then
6226 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6228 if test "$virtfs" = "yes" ; then
6229 echo "CONFIG_VIRTFS=y" >> $config_host_mak
6231 if test "$vhost_scsi" = "yes" ; then
6232 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6234 if test "$vhost_net" = "yes" ; then
6235 echo "CONFIG_VHOST_NET=y" >> $config_host_mak
6237 if test "$vhost_net_user" = "yes" ; then
6238 echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak
6240 if test "$vhost_net_vdpa" = "yes" ; then
6241 echo "CONFIG_VHOST_NET_VDPA=y" >> $config_host_mak
6243 if test "$vhost_crypto" = "yes" ; then
6244 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6246 if test "$vhost_vsock" = "yes" ; then
6247 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6248 if test "$vhost_user" = "yes" ; then
6249 echo "CONFIG_VHOST_USER_VSOCK=y" >> $config_host_mak
6252 if test "$vhost_kernel" = "yes" ; then
6253 echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak
6255 if test "$vhost_user" = "yes" ; then
6256 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6258 if test "$vhost_vdpa" = "yes" ; then
6259 echo "CONFIG_VHOST_VDPA=y" >> $config_host_mak
6261 if test "$vhost_user_fs" = "yes" ; then
6262 echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
6264 if test "$iovec" = "yes" ; then
6265 echo "CONFIG_IOVEC=y" >> $config_host_mak
6267 if test "$preadv" = "yes" ; then
6268 echo "CONFIG_PREADV=y" >> $config_host_mak
6270 if test "$membarrier" = "yes" ; then
6271 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6273 if test "$signalfd" = "yes" ; then
6274 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6276 if test "$optreset" = "yes" ; then
6277 echo "HAVE_OPTRESET=y" >> $config_host_mak
6279 if test "$tcg" = "enabled"; then
6280 if test "$tcg_interpreter" = "yes" ; then
6281 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6284 if test "$fdatasync" = "yes" ; then
6285 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6287 if test "$madvise" = "yes" ; then
6288 echo "CONFIG_MADVISE=y" >> $config_host_mak
6290 if test "$posix_madvise" = "yes" ; then
6291 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6293 if test "$posix_memalign" = "yes" ; then
6294 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6296 if test "$spice" = "yes" ; then
6297 echo "CONFIG_SPICE=y" >> $config_host_mak
6298 echo "SPICE_CFLAGS=$spice_cflags" >> $config_host_mak
6299 echo "SPICE_LIBS=$spice_libs" >> $config_host_mak
6302 if test "$smartcard" = "yes" ; then
6303 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6304 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6305 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6308 if test "$libusb" = "yes" ; then
6309 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6310 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6311 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6314 if test "$usb_redir" = "yes" ; then
6315 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6316 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6317 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6320 if test "$opengl" = "yes" ; then
6321 echo "CONFIG_OPENGL=y" >> $config_host_mak
6322 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
6323 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6324 if test "$opengl_dmabuf" = "yes" ; then
6325 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6329 if test "$gbm" = "yes" ; then
6330 echo "CONFIG_GBM=y" >> $config_host_mak
6331 echo "GBM_LIBS=$gbm_libs" >> $config_host_mak
6332 echo "GBM_CFLAGS=$gbm_cflags" >> $config_host_mak
6336 if test "$avx2_opt" = "yes" ; then
6337 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6340 if test "$avx512f_opt" = "yes" ; then
6341 echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
6344 if test "$lzo" = "yes" ; then
6345 echo "CONFIG_LZO=y" >> $config_host_mak
6346 echo "LZO_LIBS=$lzo_libs" >> $config_host_mak
6349 if test "$snappy" = "yes" ; then
6350 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6351 echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak
6354 if test "$bzip2" = "yes" ; then
6355 echo "CONFIG_BZIP2=y" >> $config_host_mak
6356 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6359 if test "$lzfse" = "yes" ; then
6360 echo "CONFIG_LZFSE=y" >> $config_host_mak
6361 echo "LZFSE_LIBS=-llzfse" >> $config_host_mak
6364 if test "$zstd" = "yes" ; then
6365 echo "CONFIG_ZSTD=y" >> $config_host_mak
6366 echo "ZSTD_CFLAGS=$zstd_cflags" >> $config_host_mak
6367 echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak
6370 if test "$libiscsi" = "yes" ; then
6371 echo "CONFIG_LIBISCSI=y" >> $config_host_mak
6372 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6373 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6376 if test "$libnfs" = "yes" ; then
6377 echo "CONFIG_LIBNFS=y" >> $config_host_mak
6378 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6381 if test "$seccomp" = "yes"; then
6382 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6383 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6384 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6387 # XXX: suppress that
6388 if [ "$bsd" = "yes" ] ; then
6389 echo "CONFIG_BSD=y" >> $config_host_mak
6392 if test "$qom_cast_debug" = "yes" ; then
6393 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6395 if test "$rbd" = "yes" ; then
6396 echo "CONFIG_RBD=y" >> $config_host_mak
6397 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6400 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6401 if test "$coroutine_pool" = "yes" ; then
6402 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6404 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6407 if test "$debug_stack_usage" = "yes" ; then
6408 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6411 if test "$crypto_afalg" = "yes" ; then
6412 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6415 if test "$open_by_handle_at" = "yes" ; then
6416 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6419 if test "$linux_magic_h" = "yes" ; then
6420 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6423 if test "$valgrind_h" = "yes" ; then
6424 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6427 if test "$have_asan_iface_fiber" = "yes" ; then
6428 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6431 if test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then
6432 echo "CONFIG_TSAN=y" >> $config_host_mak
6435 if test "$has_environ" = "yes" ; then
6436 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6439 if test "$cpuid_h" = "yes" ; then
6440 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6443 if test "$int128" = "yes" ; then
6444 echo "CONFIG_INT128=y" >> $config_host_mak
6447 if test "$atomic128" = "yes" ; then
6448 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6451 if test "$cmpxchg128" = "yes" ; then
6452 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
6455 if test "$atomic64" = "yes" ; then
6456 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6459 if test "$attralias" = "yes" ; then
6460 echo "CONFIG_ATTRIBUTE_ALIAS=y" >> $config_host_mak
6463 if test "$getauxval" = "yes" ; then
6464 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6467 if test "$glusterfs" = "yes" ; then
6468 echo "CONFIG_GLUSTERFS=y" >> $config_host_mak
6469 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6470 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6473 if test "$glusterfs_xlator_opt" = "yes" ; then
6474 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6477 if test "$glusterfs_discard" = "yes" ; then
6478 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6481 if test "$glusterfs_fallocate" = "yes" ; then
6482 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6485 if test "$glusterfs_zerofill" = "yes" ; then
6486 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6489 if test "$glusterfs_ftruncate_has_stat" = "yes" ; then
6490 echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak
6493 if test "$glusterfs_iocb_has_stat" = "yes" ; then
6494 echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak
6497 if test "$libssh" = "yes" ; then
6498 echo "CONFIG_LIBSSH=y" >> $config_host_mak
6499 echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
6500 echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak
6503 if test "$live_block_migration" = "yes" ; then
6504 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6507 if test "$tpm" = "yes"; then
6508 echo 'CONFIG_TPM=y' >> $config_host_mak
6511 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6512 if have_backend
"nop"; then
6513 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6515 if have_backend
"simple"; then
6516 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6517 # Set the appropriate trace file.
6518 trace_file
="\"$trace_file-\" FMT_pid"
6520 if have_backend
"log"; then
6521 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6523 if have_backend
"ust"; then
6524 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6525 echo "LTTNG_UST_LIBS=$lttng_ust_libs" >> $config_host_mak
6526 echo "URCU_BP_LIBS=$urcu_bp_libs" >> $config_host_mak
6528 if have_backend
"dtrace"; then
6529 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6530 if test "$trace_backend_stap" = "yes" ; then
6531 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6534 if have_backend
"ftrace"; then
6535 if test "$linux" = "yes" ; then
6536 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6538 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6541 if have_backend
"syslog"; then
6542 if test "$posix_syslog" = "yes" ; then
6543 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6545 feature_not_found
"syslog(trace backend)" "syslog not available"
6548 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6550 if test "$rdma" = "yes" ; then
6551 echo "CONFIG_RDMA=y" >> $config_host_mak
6552 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6555 if test "$pvrdma" = "yes" ; then
6556 echo "CONFIG_PVRDMA=y" >> $config_host_mak
6559 if test "$have_rtnetlink" = "yes" ; then
6560 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6563 if test "$libxml2" = "yes" ; then
6564 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6565 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6566 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6569 if test "$replication" = "yes" ; then
6570 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6573 if test "$have_af_vsock" = "yes" ; then
6574 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6577 if test "$have_sysmacros" = "yes" ; then
6578 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6581 if test "$have_static_assert" = "yes" ; then
6582 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6585 if test "$have_utmpx" = "yes" ; then
6586 echo "HAVE_UTMPX=y" >> $config_host_mak
6588 if test "$have_getrandom" = "yes" ; then
6589 echo "CONFIG_GETRANDOM=y" >> $config_host_mak
6591 if test "$ivshmem" = "yes" ; then
6592 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6594 if test "$debug_mutex" = "yes" ; then
6595 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
6598 # Hold two types of flag:
6599 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6600 # a thread we have a handle to
6601 # CONFIG_PTHREAD_SETNAME_NP_W_TID - A way of doing it on a particular
6603 if test "$pthread_setname_np_w_tid" = "yes" ; then
6604 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6605 echo "CONFIG_PTHREAD_SETNAME_NP_W_TID=y" >> $config_host_mak
6606 elif test "$pthread_setname_np_wo_tid" = "yes" ; then
6607 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6608 echo "CONFIG_PTHREAD_SETNAME_NP_WO_TID=y" >> $config_host_mak
6611 if test "$libpmem" = "yes" ; then
6612 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
6613 echo "LIBPMEM_LIBS=$libpmem_libs" >> $config_host_mak
6614 echo "LIBPMEM_CFLAGS=$libpmem_cflags" >> $config_host_mak
6617 if test "$libdaxctl" = "yes" ; then
6618 echo "CONFIG_LIBDAXCTL=y" >> $config_host_mak
6619 echo "LIBDAXCTL_LIBS=$libdaxctl_libs" >> $config_host_mak
6622 if test "$bochs" = "yes" ; then
6623 echo "CONFIG_BOCHS=y" >> $config_host_mak
6625 if test "$cloop" = "yes" ; then
6626 echo "CONFIG_CLOOP=y" >> $config_host_mak
6628 if test "$dmg" = "yes" ; then
6629 echo "CONFIG_DMG=y" >> $config_host_mak
6631 if test "$qcow1" = "yes" ; then
6632 echo "CONFIG_QCOW1=y" >> $config_host_mak
6634 if test "$vdi" = "yes" ; then
6635 echo "CONFIG_VDI=y" >> $config_host_mak
6637 if test "$vvfat" = "yes" ; then
6638 echo "CONFIG_VVFAT=y" >> $config_host_mak
6640 if test "$qed" = "yes" ; then
6641 echo "CONFIG_QED=y" >> $config_host_mak
6643 if test "$parallels" = "yes" ; then
6644 echo "CONFIG_PARALLELS=y" >> $config_host_mak
6646 if test "$sheepdog" = "yes" ; then
6647 add_to deprecated_features
"sheepdog"
6648 echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
6650 if test "$have_mlockall" = "yes" ; then
6651 echo "HAVE_MLOCKALL=y" >> $config_host_mak
6653 if test "$fuzzing" = "yes" ; then
6654 # If LIB_FUZZING_ENGINE is set, assume we are running on OSS-Fuzz, and the
6655 # needed CFLAGS have already been provided
6656 if test -z "${LIB_FUZZING_ENGINE+xxx}" ; then
6657 QEMU_CFLAGS
="$QEMU_CFLAGS -fsanitize=fuzzer-no-link"
6658 FUZZ_EXE_LDFLAGS
="-fsanitize=fuzzer"
6660 FUZZ_EXE_LDFLAGS
="$LIB_FUZZING_ENGINE"
6664 if test "$plugins" = "yes" ; then
6665 echo "CONFIG_PLUGIN=y" >> $config_host_mak
6666 # Copy the export object list to the build dir
6667 if test "$ld_dynamic_list" = "yes" ; then
6668 echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak
6669 ld_symbols
=qemu-plugins-ld.symbols
6670 cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols
6671 elif test "$ld_exported_symbols_list" = "yes" ; then
6672 echo "CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST=yes" >> $config_host_mak
6673 ld64_symbols
=qemu-plugins-ld64.symbols
6674 echo "# Automatically generated by configure - do not modify" > $ld64_symbols
6675 grep 'qemu_' "$source_path/plugins/qemu-plugins.symbols" |
sed 's/;//g' | \
6676 sed -E 's/^[[:space:]]*(.*)/_\1/' >> $ld64_symbols
6679 "If \$plugins=yes, either \$ld_dynamic_list or " \
6680 "\$ld_exported_symbols_list should have been set to 'yes'."
6684 if test -n "$gdb_bin" ; then
6685 echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak
6688 if test "$secret_keyring" = "yes" ; then
6689 echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak
6692 echo "ROMS=$roms" >> $config_host_mak
6693 echo "MAKE=$make" >> $config_host_mak
6694 echo "PYTHON=$python" >> $config_host_mak
6695 echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
6696 echo "MESON=$meson" >> $config_host_mak
6697 echo "NINJA=$ninja" >> $config_host_mak
6698 echo "CC=$cc" >> $config_host_mak
6699 if $iasl -h > /dev
/null
2>&1; then
6700 echo "CONFIG_IASL=$iasl" >> $config_host_mak
6702 echo "CXX=$cxx" >> $config_host_mak
6703 echo "OBJCC=$objcc" >> $config_host_mak
6704 echo "AR=$ar" >> $config_host_mak
6705 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6706 echo "AS=$as" >> $config_host_mak
6707 echo "CCAS=$ccas" >> $config_host_mak
6708 echo "CPP=$cpp" >> $config_host_mak
6709 echo "OBJCOPY=$objcopy" >> $config_host_mak
6710 echo "LD=$ld" >> $config_host_mak
6711 echo "RANLIB=$ranlib" >> $config_host_mak
6712 echo "NM=$nm" >> $config_host_mak
6713 echo "PKG_CONFIG=$pkg_config_exe" >> $config_host_mak
6714 echo "WINDRES=$windres" >> $config_host_mak
6715 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6716 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6717 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6718 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
6719 echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
6720 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
6721 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6722 echo "EXESUF=$EXESUF" >> $config_host_mak
6723 echo "HOST_DSOSUF=$HOST_DSOSUF" >> $config_host_mak
6724 echo "LIBS_QGA=$libs_qga" >> $config_host_mak
6725 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6726 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6727 if test "$gcov" = "yes" ; then
6728 echo "CONFIG_GCOV=y" >> $config_host_mak
6731 if test "$fuzzing" != "no"; then
6732 echo "CONFIG_FUZZ=y" >> $config_host_mak
6734 echo "FUZZ_EXE_LDFLAGS=$FUZZ_EXE_LDFLAGS" >> $config_host_mak
6736 if test "$rng_none" = "yes"; then
6737 echo "CONFIG_RNG_NONE=y" >> $config_host_mak
6740 # use included Linux headers
6741 if test "$linux" = "yes" ; then
6742 mkdir
-p linux-headers
6760 # For most CPUs the kernel architecture name and QEMU CPU name match.
6764 # For non-KVM architectures we will not have asm headers
6765 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6766 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
6770 for target
in $target_list; do
6771 target_dir
="$target"
6772 target_name
=$
(echo $target | cut
-d '-' -f 1)
6773 mkdir
-p $target_dir
6775 *-user) symlink
"../qemu-$target_name" "$target_dir/qemu-$target_name" ;;
6776 *) symlink
"../qemu-system-$target_name" "$target_dir/qemu-system-$target_name" ;;
6780 echo "CONFIG_QEMU_INTERP_PREFIX=$interp_prefix" |
sed 's/%M/@0@/' >> $config_host_mak
6781 if test "$default_targets" = "yes"; then
6782 echo "CONFIG_DEFAULT_TARGETS=y" >> $config_host_mak
6785 if test "$numa" = "yes"; then
6786 echo "CONFIG_NUMA=y" >> $config_host_mak
6787 echo "NUMA_LIBS=$numa_libs" >> $config_host_mak
6790 if test "$ccache_cpp2" = "yes"; then
6791 echo "export CCACHE_CPP2=y" >> $config_host_mak
6794 if test "$safe_stack" = "yes"; then
6795 echo "CONFIG_SAFESTACK=y" >> $config_host_mak
6798 # If we're using a separate build tree, set it up now.
6799 # DIRS are directories which we simply mkdir in the build tree;
6800 # LINKS are things to symlink back into the source tree
6801 # (these can be both files and directories).
6802 # Caution: do not add files or directories here using wildcards. This
6803 # will result in problems later if a new file matching the wildcard is
6804 # added to the source tree -- nothing will cause configure to be rerun
6805 # so the build tree will be missing the link back to the new file, and
6806 # tests might fail. Prefer to keep the relevant files in their own
6807 # directory and symlink the directory instead.
6808 # UNLINK is used to remove symlinks from older development versions
6809 # that might get into the way when doing "git update" without doing
6810 # a "make distclean" in between.
6811 DIRS
="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos"
6812 DIRS
="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
6813 DIRS
="$DIRS docs docs/interop fsdev scsi"
6814 DIRS
="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
6815 DIRS
="$DIRS roms/seabios"
6816 DIRS
="$DIRS contrib/plugins/"
6818 LINKS
="$LINKS tests/tcg/lm32/Makefile"
6819 LINKS
="$LINKS tests/tcg/Makefile.target"
6820 LINKS
="$LINKS pc-bios/optionrom/Makefile"
6821 LINKS
="$LINKS pc-bios/s390-ccw/Makefile"
6822 LINKS
="$LINKS roms/seabios/Makefile"
6823 LINKS
="$LINKS pc-bios/qemu-icon.bmp"
6824 LINKS
="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
6825 LINKS
="$LINKS tests/acceptance tests/data"
6826 LINKS
="$LINKS tests/qemu-iotests/check"
6827 LINKS
="$LINKS python"
6828 LINKS
="$LINKS contrib/plugins/Makefile "
6829 UNLINK
="pc-bios/keymaps"
6831 $source_path/pc-bios
/*.bin \
6832 $source_path/pc-bios
/*.elf \
6833 $source_path/pc-bios
/*.lid \
6834 $source_path/pc-bios
/*.rom \
6835 $source_path/pc-bios
/*.dtb \
6836 $source_path/pc-bios
/*.img \
6837 $source_path/pc-bios
/openbios-
* \
6838 $source_path/pc-bios
/u-boot.
* \
6839 $source_path/pc-bios
/edk2-
*.fd.bz2 \
6840 $source_path/pc-bios
/palcode-
*
6842 LINKS
="$LINKS pc-bios/$(basename $bios_file)"
6845 for f
in $LINKS ; do
6846 if [ -e "$source_path/$f" ]; then
6847 symlink
"$source_path/$f" "$f"
6850 for f
in $UNLINK ; do
6851 if [ -L "$f" ]; then
6856 (for i
in $cross_cc_vars; do
6859 export target_list source_path use_containers
6860 $source_path/tests
/tcg
/configure.sh
)
6862 # temporary config to build submodules
6863 for rom
in seabios
; do
6864 config_mak
=roms
/$rom/config.mak
6865 echo "# Automatically generated by configure - do not modify" > $config_mak
6866 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6867 echo "AS=$as" >> $config_mak
6868 echo "CCAS=$ccas" >> $config_mak
6869 echo "CC=$cc" >> $config_mak
6870 echo "BCC=bcc" >> $config_mak
6871 echo "CPP=$cpp" >> $config_mak
6872 echo "OBJCOPY=objcopy" >> $config_mak
6873 echo "IASL=$iasl" >> $config_mak
6874 echo "LD=$ld" >> $config_mak
6875 echo "RANLIB=$ranlib" >> $config_mak
6878 # set up qemu-iotests in this build directory
6879 iotests_common_env
="tests/qemu-iotests/common.env"
6881 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6882 echo >> "$iotests_common_env"
6883 echo "export PYTHON='$python'" >> "$iotests_common_env"
6885 if test "$skip_meson" = no
; then
6886 cross
="config-meson.cross.new"
6888 echo "'$(echo $* | sed "s
/ /','/g
")'"
6891 echo "# Automatically generated by configure - do not modify" > $cross
6892 echo "[properties]" >> $cross
6893 test -z "$cxx" && echo "link_language = 'c'" >> $cross
6894 echo "[built-in options]" >> $cross
6895 echo "c_args = [${CFLAGS:+$(meson_quote $CFLAGS)}]" >> $cross
6896 echo "cpp_args = [${CXXFLAGS:+$(meson_quote $CXXFLAGS)}]" >> $cross
6897 echo "c_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
6898 echo "cpp_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
6899 echo "[binaries]" >> $cross
6900 echo "c = [$(meson_quote $cc)]" >> $cross
6901 test -n "$cxx" && echo "cpp = [$(meson_quote $cxx)]" >> $cross
6902 echo "ar = [$(meson_quote $ar)]" >> $cross
6903 echo "nm = [$(meson_quote $nm)]" >> $cross
6904 echo "pkgconfig = [$(meson_quote $pkg_config_exe)]" >> $cross
6905 echo "ranlib = [$(meson_quote $ranlib)]" >> $cross
6906 if has
$sdl2_config; then
6907 echo "sdl2-config = [$(meson_quote $sdl2_config)]" >> $cross
6909 echo "strip = [$(meson_quote $strip)]" >> $cross
6910 echo "windres = [$(meson_quote $windres)]" >> $cross
6911 if test -n "$cross_prefix"; then
6912 cross_arg
="--cross-file config-meson.cross"
6913 echo "[host_machine]" >> $cross
6914 if test "$mingw32" = "yes" ; then
6915 echo "system = 'windows'" >> $cross
6917 if test "$linux" = "yes" ; then
6918 echo "system = 'linux'" >> $cross
6922 echo "cpu_family = 'x86'" >> $cross
6925 echo "cpu_family = 'ppc64'" >> $cross
6928 echo "cpu_family = '$ARCH'" >> $cross
6931 echo "cpu = '$cpu'" >> $cross
6932 if test "$bigendian" = "yes" ; then
6933 echo "endian = 'big'" >> $cross
6935 echo "endian = 'little'" >> $cross
6938 cross_arg
="--native-file config-meson.cross"
6940 mv $cross config-meson.cross
6942 rm -rf meson-private meson-info meson-logs
6944 if ! version_ge
"$($meson --version)" 0.56.0; then
6945 staticpic
=$
(if test "$pie" = yes; then echo true
; else echo false
; fi)
6947 NINJA
=$ninja $meson setup \
6948 --prefix "$prefix" \
6949 --libdir "$libdir" \
6950 --libexecdir "$libexecdir" \
6951 --bindir "$bindir" \
6952 --includedir "$includedir" \
6953 --datadir "$datadir" \
6954 --mandir "$mandir" \
6955 --sysconfdir "$sysconfdir" \
6956 --localedir "$localedir" \
6957 --localstatedir "$local_statedir" \
6958 -Ddocdir="$docdir" \
6959 -Dqemu_firmwarepath="$firmwarepath" \
6960 -Dqemu_suffix="$qemu_suffix" \
6961 -Doptimization=$
(if test "$debug" = yes; then echo 0; else echo 2; fi) \
6962 -Ddebug=$
(if test "$debug_info" = yes; then echo true
; else echo false
; fi) \
6963 -Dwerror=$
(if test "$werror" = yes; then echo true
; else echo false
; fi) \
6964 -Dstrip=$
(if test "$strip_opt" = yes; then echo true
; else echo false
; fi) \
6965 -Db_pie=$
(if test "$pie" = yes; then echo true
; else echo false
; fi) \
6966 ${staticpic:+-Db_staticpic=$staticpic} \
6967 -Db_coverage=$
(if test "$gcov" = yes; then echo true
; else echo false
; fi) \
6968 -Dmalloc=$malloc -Dmalloc_trim=$malloc_trim -Dsparse=$sparse \
6969 -Dkvm=$kvm -Dhax=$hax -Dwhpx=$whpx -Dhvf=$hvf \
6970 -Dxen=$xen -Dxen_pci_passthrough=$xen_pci_passthrough -Dtcg=$tcg \
6971 -Dcocoa=$cocoa -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
6972 -Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
6973 -Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f -Dvirtiofsd=$virtiofsd \
6974 -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt \
6975 -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
6976 -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
6977 -Dvhost_user_blk_server=$vhost_user_blk_server \
6978 -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek \
6979 $
(if test "$default_features" = no
; then echo "-Dauto_features=disabled"; fi) \
6981 "$PWD" "$source_path"
6983 if test "$?" -ne 0 ; then
6984 error_exit
"meson setup failed"
6988 if test -n "${deprecated_features}"; then
6989 echo "Warning, deprecated features enabled."
6990 echo "Please see docs/system/deprecated.rst"
6991 echo " features: ${deprecated_features}"
6994 # Save the configure command line for later reuse.
6995 cat <<EOD >config.status
6997 # Generated by configure.
6998 # Run this file to recreate the current configuration.
6999 # Compiler output produced by configure, useful for debugging
7000 # configure, is in config.log if it exists.
7006 eval envval
=\$
$envname
7008 if test -n "$envval"
7010 echo "$envname='$envval'" >> config.status
7011 echo "export $envname" >> config.status
7013 echo "unset $envname" >> config.status
7017 # Preserve various env variables that influence what
7018 # features/build target configure will detect
7024 preserve_env INSTALL
7026 preserve_env LD_LIBRARY_PATH
7027 preserve_env LIBTOOL
7030 preserve_env OBJCOPY
7032 preserve_env PKG_CONFIG
7033 preserve_env PKG_CONFIG_LIBDIR
7034 preserve_env PKG_CONFIG_PATH
7036 preserve_env SDL2_CONFIG
7039 preserve_env WINDRES
7041 printf "exec" >>config.status
7042 for i
in "$0" "$@"; do
7043 test "$i" = --skip-meson ||
printf " '%s'" "$i" >>config.status
7045 echo ' "$@"' >>config.status
7046 chmod +x config.status