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
93 printf "%s" "$1" |
sed "s,','\\\\'',g; s,.*,'&',"
99 while test -n "$2"; do
112 # Run the compiler, capturing its output to the log. First argument
113 # is compiler binary to execute.
116 if test -n "$BASH_VERSION"; then eval '
118 funcs: ${FUNCNAME[*]}
119 lines: ${BASH_LINENO[*]}"
121 echo $compiler "$@" >> config.log
122 $compiler "$@" >> config.log
2>&1 ||
return $?
123 # Test passed. If this is an --enable-werror build, rerun
124 # the test with -Werror and bail out if it fails. This
125 # makes warning-generating-errors in configure test code
126 # obvious to developers.
127 if test "$werror" != "yes"; then
130 # Don't bother rerunning the compile if we were already using -Werror
136 echo $compiler -Werror "$@" >> config.log
137 $compiler -Werror "$@" >> config.log
2>&1 && return $?
138 error_exit
"configure test passed without -Werror but failed with -Werror." \
139 "This is probably a bug in the configure script. The failing command" \
140 "will be at the bottom of config.log." \
141 "You can run configure with --disable-werror to bypass this check."
145 do_compiler
"$cc" $CPU_CFLAGS "$@"
149 do_compiler
"$cxx" $CPU_CFLAGS "$@"
152 # Append $2 to the variable named $1, with space separation
154 eval $1=\
${$1:+\"\$$1 \"}\
$2
158 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
159 # options which some versions of GCC's C++ compiler complain about
160 # because they only make sense for C programs.
161 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS"
162 CONFIGURE_CXXFLAGS
=$
(echo "$CONFIGURE_CFLAGS" |
sed s
/-std=gnu11
/-std=gnu
++11/)
163 for arg
in $QEMU_CFLAGS; do
165 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
166 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
169 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
177 do_cc
$CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
183 do_cc
$CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC \
184 $LDFLAGS $CONFIGURE_LDFLAGS $QEMU_LDFLAGS $local_ldflags
187 # symbolically link $1 to $2. Portable version of "ln -sf".
190 mkdir
-p "$(dirname "$2")"
194 # check whether a command is available to this shell (may be either an
195 # executable or a builtin)
197 type "$1" >/dev
/null
2>&1
201 local_ver1
=$
(expr "$1" : '\([0-9.]*\)' |
tr .
' ')
202 local_ver2
=$
(echo "$2" |
tr .
' ')
206 # 'shift 2' if $2 is set, or 'shift' if $2 is not set
210 # the second argument finished, the first must be greater or equal
211 test $# = 1 && return 0
212 test $local_first -lt $2 && return 1
213 test $local_first -gt $2 && return 0
220 echo "$trace_backends" |
grep "$1" >/dev
/null
224 eval test -z '"${1#'"$2"'}"'
228 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
231 if printf %s
\\n
"$source_path" "$PWD" |
grep -q "[[:space:]:]";
233 error_exit
"main directory cannot contain spaces nor colons"
239 interp_prefix
="/usr/gnemul/qemu-%M"
243 audio_drv_list
="default"
244 block_drv_rw_whitelist
=""
245 block_drv_ro_whitelist
=""
246 block_drv_whitelist_tools
="no"
254 gdb_bin
=$
(command -v "gdb-multiarch" ||
command -v "gdb")
256 if test -e "$source_path/.git"
258 git_submodules_action
="update"
260 git_submodules_action
="ignore"
263 git_submodules
="ui/keycodemapdb"
266 # Don't accept a target_list environment variable.
268 unset target_list_exclude
270 # Default value for a variable defining feature "foo".
271 # * foo="no" feature will only be used if --enable-foo arg is given
272 # * foo="" feature will be searched for, and if found, will be used
273 # unless --disable-foo is given
274 # * foo="yes" this value will only be set by --enable-foo flag.
275 # feature will searched for,
276 # if not found, configure exits with error
278 # Always add --enable-foo and --disable-foo command line args.
279 # Distributions want to ensure that several features are compiled in, and it
280 # is impossible without a --enable-foo that exits if a feature is not found.
283 # parse CC options second
285 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
287 --without-default-features)
308 vde
="$default_feature"
319 xen
=${default_feature:+disabled}
320 xen_ctrl_version
="$default_feature"
321 xen_pci_passthrough
="auto"
322 linux_aio
="$default_feature"
323 linux_io_uring
="auto"
326 xfs
="$default_feature"
328 membarrier
="$default_feature"
329 vhost_kernel
="$default_feature"
330 vhost_net
="$default_feature"
331 vhost_crypto
="$default_feature"
332 vhost_scsi
="$default_feature"
333 vhost_vsock
="$default_feature"
335 vhost_user_blk_server
="auto"
336 vhost_user_fs
="$default_feature"
337 vhost_vdpa
="$default_feature"
344 rdma
="$default_feature"
345 pvrdma
="$default_feature"
351 fortify_source
="$default_feature"
353 tcg_interpreter
="false"
378 spice
="$default_feature"
379 spice_protocol
="auto"
385 opengl
="$default_feature"
387 avx2_opt
="$default_feature"
394 guest_agent
="$default_feature"
395 guest_agent_with_vss
="no"
396 guest_agent_ntddscsi
="no"
397 guest_agent_msi
="auto"
398 vss_win32_sdk
="$default_feature"
400 want_tools
="$default_feature"
404 coroutine_pool
="$default_feature"
405 debug_stack_usage
="no"
412 tls_priority
="NORMAL"
419 tpm
="$default_feature"
420 libssh
="$default_feature"
421 live_block_migration
=${default_feature:-yes}
422 numa
="$default_feature"
425 replication
=${default_feature:-yes}
426 bochs
=${default_feature:-yes}
427 cloop
=${default_feature:-yes}
428 dmg
=${default_feature:-yes}
429 qcow1
=${default_feature:-yes}
430 vdi
=${default_feature:-yes}
431 vvfat
=${default_feature:-yes}
432 qed
=${default_feature:-yes}
433 parallels
=${default_feature:-yes}
437 default_devices
="true"
438 plugins
="$default_feature"
441 secret_keyring
="$default_feature"
450 slirp_smbd
="$default_feature"
453 gio
="$default_feature"
455 # parse CC options second
457 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
459 --cross-prefix=*) cross_prefix
="$optarg"
464 --cxx=*) CXX
="$optarg"
466 --cpu=*) cpu
="$optarg"
468 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
469 QEMU_LDFLAGS
="$QEMU_LDFLAGS $optarg"
471 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
473 --extra-ldflags=*) QEMU_LDFLAGS
="$QEMU_LDFLAGS $optarg"
474 EXTRA_LDFLAGS
="$optarg"
476 --enable-debug-info) debug_info
="yes"
478 --disable-debug-info) debug_info
="no"
480 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
482 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
483 eval "cross_cc_cflags_${cc_arch}=\$optarg"
484 cross_cc_vars
="$cross_cc_vars cross_cc_cflags_${cc_arch}"
486 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
487 cc_archs
="$cc_archs $cc_arch"
488 eval "cross_cc_${cc_arch}=\$optarg"
489 cross_cc_vars
="$cross_cc_vars cross_cc_${cc_arch}"
494 # Using uname is really, really broken. Once we have the right set of checks
495 # we can eliminate its usage altogether.
497 # Preferred compiler:
499 # ${cross_prefix}gcc (if cross-prefix specified)
501 if test -z "${CC}${cross_prefix}"; then
504 cc
="${CC-${cross_prefix}gcc}"
507 if test -z "${CXX}${cross_prefix}"; then
510 cxx
="${CXX-${cross_prefix}g++}"
513 ar="${AR-${cross_prefix}ar}"
514 as
="${AS-${cross_prefix}as}"
517 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
518 ld
="${LD-${cross_prefix}ld}"
519 ranlib
="${RANLIB-${cross_prefix}ranlib}"
520 nm
="${NM-${cross_prefix}nm}"
521 strip
="${STRIP-${cross_prefix}strip}"
522 windres
="${WINDRES-${cross_prefix}windres}"
523 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
525 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
527 pkg_config
=query_pkg_config
528 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
530 # default flags for all hosts
531 # We use -fwrapv to tell the compiler that we require a C dialect where
532 # left shift of signed integers is well defined and has the expected
533 # 2s-complement style results. (Both clang and gcc agree that it
534 # provides these semantics.)
535 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
536 QEMU_CFLAGS
="-Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
537 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
538 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
540 # Flags that are needed during configure but later taken care of by Meson
541 CONFIGURE_CFLAGS
="-std=gnu11 -Wall"
548 #error $1 not defined
550 int main(void) { return 0; }
558 int main(void) { return 0; }
565 int main(void) { return 0; }
569 if check_define __linux__
; then
571 elif check_define _WIN32
; then
573 elif check_define __OpenBSD__
; then
575 elif check_define __sun__
; then
577 elif check_define __HAIKU__
; then
579 elif check_define __FreeBSD__
; then
581 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
582 targetos
='GNU/kFreeBSD'
583 elif check_define __DragonFly__
; then
585 elif check_define __NetBSD__
; then
587 elif check_define __APPLE__
; then
590 # This is a fatal error, but don't report it yet, because we
591 # might be going to just print the --help text, or it might
592 # be the result of a missing compiler.
596 # Some host OSes need non-standard checks for which CPU to use.
597 # Note that these checks are broken for cross-compilation: if you're
598 # cross-compiling to one of these OSes then you'll need to specify
599 # the correct CPU with the --cpu option.
605 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
606 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
611 if test ! -z "$cpu" ; then
612 # command line argument
614 elif check_define __i386__
; then
616 elif check_define __x86_64__
; then
617 if check_define __ILP32__
; then
622 elif check_define __sparc__
; then
623 if check_define __arch64__
; then
628 elif check_define _ARCH_PPC
; then
629 if check_define _ARCH_PPC64
; then
630 if check_define _LITTLE_ENDIAN
; then
638 elif check_define __mips__
; then
640 elif check_define __s390__
; then
641 if check_define __s390x__
; then
646 elif check_define __riscv
; then
647 if check_define _LP64
; then
652 elif check_define __arm__
; then
654 elif check_define __aarch64__
; then
661 # Normalise host CPU name and set ARCH.
662 # Note that this case should only have supported host CPUs, not guests.
664 ppc|ppc64|s390x|sparc64|x32|riscv32|riscv64
)
669 i386|i486|i586|i686|i86pc|BePC
)
688 # This will result in either an error or falling back to TCI later
692 if test -z "$ARCH"; then
712 # needed for kinfo_getvmmap(3) in libutil.h
713 netmap
="" # enable netmap autodetect
730 # Disable attempts to use ObjectiveC features in os/object.h since they
731 # won't work when we're compiling with gcc as a C compiler.
732 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
737 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
738 # needed for CMSG_ macros in sys/socket.h
739 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
740 # needed for TIOCWIN* defines in termios.h
741 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
746 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE -fPIC $QEMU_CFLAGS"
751 vhost_user
=${default_feature:-yes}
755 : ${make=${MAKE-make}}
757 # We prefer python 3.x. A bare 'python' is traditionally
758 # python 2.x, but some distros have it as python 3.x, so
762 for binary
in "${PYTHON-python3}" python
766 python
=$
(command -v "$binary")
772 # Check for ancillary tools used in testing
774 for binary
in genisoimage mkisofs
778 genisoimage
=$
(command -v "$binary")
783 # Default objcc to clang if available, otherwise use CC
790 if test "$mingw32" = "yes" ; then
793 # MinGW needs -mthreads for TLS and macro _MT.
794 CONFIGURE_CFLAGS
="-mthreads $CONFIGURE_CFLAGS"
798 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
804 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
806 --help|
-h) show_help
=yes
808 --version|
-V) exec cat $source_path/VERSION
810 --prefix=*) prefix
="$optarg"
812 --interp-prefix=*) interp_prefix
="$optarg"
818 --host-cc=*) host_cc
="$optarg"
822 --iasl=*) iasl
="$optarg"
824 --objcc=*) objcc
="$optarg"
826 --make=*) make="$optarg"
830 --python=*) python
="$optarg" ; explicit_python
=yes
832 --sphinx-build=*) sphinx_build
="$optarg"
834 --skip-meson) skip_meson
=yes
836 --meson=*) meson
="$optarg"
838 --ninja=*) ninja
="$optarg"
840 --smbd=*) smbd
="$optarg"
850 --disable-debug-info)
860 --disable-module-upgrades) module_upgrades
="no"
862 --enable-module-upgrades) module_upgrades
="yes"
866 --target-list=*) target_list
="$optarg"
867 if test "$target_list_exclude"; then
868 error_exit
"Can't mix --target-list with --target-list-exclude"
871 --target-list-exclude=*) target_list_exclude
="$optarg"
872 if test "$target_list"; then
873 error_exit
"Can't mix --target-list-exclude with --target-list"
876 --enable-trace-backends=*) trace_backends
="$optarg"
878 # XXX: backwards compatibility
879 --enable-trace-backend=*) trace_backends
="$optarg"
881 --with-trace-file=*) trace_file
="$optarg"
883 --with-default-devices) default_devices
="true"
885 --without-default-devices) default_devices
="false"
887 --with-devices-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --with-devices-FOO option"
889 --with-devices-*) device_arch
=${opt#--with-devices-};
890 device_arch
=${device_arch%%=*}
891 cf
=$source_path/configs
/devices
/$device_arch-softmmu/$optarg.mak
892 if test -f "$cf"; then
893 device_archs
="$device_archs $device_arch"
894 eval "devices_${device_arch}=\$optarg"
896 error_exit
"File $cf does not exist"
899 --without-default-features) # processed above
901 --enable-gprof) gprof
="yes"
903 --enable-gcov) gcov
="yes"
907 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
909 --mandir=*) mandir
="$optarg"
911 --bindir=*) bindir
="$optarg"
913 --libdir=*) libdir
="$optarg"
915 --libexecdir=*) libexecdir
="$optarg"
917 --includedir=*) includedir
="$optarg"
919 --datadir=*) datadir
="$optarg"
921 --with-suffix=*) qemu_suffix
="$optarg"
923 --docdir=*) docdir
="$optarg"
925 --localedir=*) localedir
="$optarg"
927 --sysconfdir=*) sysconfdir
="$optarg"
929 --localstatedir=*) local_statedir
="$optarg"
931 --firmwarepath=*) firmwarepath
="$optarg"
934 --disable-dependency-tracking|\
935 --sbindir=*|
--sharedstatedir=*|\
936 --oldincludedir=*|
--datarootdir=*|
--infodir=*|\
937 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
938 # These switches are silently ignored, for compatibility with
939 # autoconf-generated configure scripts. This allows QEMU's
940 # configure to be used by RPM and similar macros that set
941 # lots of directory switches by default.
943 --disable-sdl) sdl
="disabled"
945 --enable-sdl) sdl
="enabled"
947 --disable-sdl-image) sdl_image
="disabled"
949 --enable-sdl-image) sdl_image
="enabled"
951 --disable-qom-cast-debug) qom_cast_debug
="no"
953 --enable-qom-cast-debug) qom_cast_debug
="yes"
955 --disable-virtfs) virtfs
="disabled"
957 --enable-virtfs) virtfs
="enabled"
959 --disable-libudev) libudev
="disabled"
961 --enable-libudev) libudev
="enabled"
963 --disable-virtiofsd) virtiofsd
="disabled"
965 --enable-virtiofsd) virtiofsd
="enabled"
967 --disable-mpath) mpath
="disabled"
969 --enable-mpath) mpath
="enabled"
971 --disable-vnc) vnc
="disabled"
973 --enable-vnc) vnc
="enabled"
975 --disable-gettext) gettext="disabled"
977 --enable-gettext) gettext="enabled"
979 --audio-drv-list=*) audio_drv_list
="$optarg"
981 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
983 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
985 --enable-block-drv-whitelist-in-tools) block_drv_whitelist_tools
="yes"
987 --disable-block-drv-whitelist-in-tools) block_drv_whitelist_tools
="no"
989 --enable-debug-tcg) debug_tcg
="yes"
991 --disable-debug-tcg) debug_tcg
="no"
994 # Enable debugging options that aren't excessively noisy
1001 --enable-sanitizers) sanitizers
="yes"
1003 --disable-sanitizers) sanitizers
="no"
1005 --enable-tsan) tsan
="yes"
1007 --disable-tsan) tsan
="no"
1009 --enable-sparse) sparse
="enabled"
1011 --disable-sparse) sparse
="disabled"
1013 --disable-strip) strip_opt
="no"
1015 --disable-vnc-sasl) vnc_sasl
="disabled"
1017 --enable-vnc-sasl) vnc_sasl
="enabled"
1019 --disable-vnc-jpeg) vnc_jpeg
="disabled"
1021 --enable-vnc-jpeg) vnc_jpeg
="enabled"
1023 --disable-vnc-png) vnc_png
="disabled"
1025 --enable-vnc-png) vnc_png
="enabled"
1027 --disable-slirp) slirp
="disabled"
1029 --enable-slirp) slirp
="enabled"
1031 --enable-slirp=git
) slirp
="internal"
1033 --enable-slirp=system
) slirp
="system"
1035 --disable-vde) vde
="no"
1037 --enable-vde) vde
="yes"
1039 --disable-netmap) netmap
="no"
1041 --enable-netmap) netmap
="yes"
1043 --disable-xen) xen
="disabled"
1045 --enable-xen) xen
="enabled"
1047 --disable-xen-pci-passthrough) xen_pci_passthrough
="disabled"
1049 --enable-xen-pci-passthrough) xen_pci_passthrough
="enabled"
1051 --disable-alsa) alsa
="disabled"
1053 --enable-alsa) alsa
="enabled"
1055 --disable-coreaudio) coreaudio
="disabled"
1057 --enable-coreaudio) coreaudio
="enabled"
1059 --disable-dsound) dsound
="disabled"
1061 --enable-dsound) dsound
="enabled"
1063 --disable-jack) jack
="disabled"
1065 --enable-jack) jack
="enabled"
1067 --disable-oss) oss
="disabled"
1069 --enable-oss) oss
="enabled"
1071 --disable-pa) pa
="disabled"
1073 --enable-pa) pa
="enabled"
1075 --disable-brlapi) brlapi
="disabled"
1077 --enable-brlapi) brlapi
="enabled"
1079 --disable-kvm) kvm
="disabled"
1081 --enable-kvm) kvm
="enabled"
1083 --disable-hax) hax
="disabled"
1085 --enable-hax) hax
="enabled"
1087 --disable-hvf) hvf
="disabled"
1089 --enable-hvf) hvf
="enabled"
1091 --disable-nvmm) nvmm
="disabled"
1093 --enable-nvmm) nvmm
="enabled"
1095 --disable-whpx) whpx
="disabled"
1097 --enable-whpx) whpx
="enabled"
1099 --disable-tcg-interpreter) tcg_interpreter
="false"
1101 --enable-tcg-interpreter) tcg_interpreter
="true"
1103 --disable-cap-ng) cap_ng
="disabled"
1105 --enable-cap-ng) cap_ng
="enabled"
1107 --disable-tcg) tcg
="disabled"
1110 --enable-tcg) tcg
="enabled"
1112 --disable-malloc-trim) malloc_trim
="disabled"
1114 --enable-malloc-trim) malloc_trim
="enabled"
1116 --disable-spice) spice
="no"
1119 spice_protocol
="yes"
1122 --disable-spice-protocol)
1126 --enable-spice-protocol) spice_protocol
="yes"
1128 --disable-libiscsi) libiscsi
="disabled"
1130 --enable-libiscsi) libiscsi
="enabled"
1132 --disable-libnfs) libnfs
="disabled"
1134 --enable-libnfs) libnfs
="enabled"
1136 --enable-profiler) profiler
="yes"
1138 --disable-cocoa) cocoa
="disabled"
1140 --enable-cocoa) cocoa
="enabled"
1142 --disable-system) softmmu
="no"
1144 --enable-system) softmmu
="yes"
1151 --disable-linux-user) linux_user
="no"
1153 --enable-linux-user) linux_user
="yes"
1155 --disable-bsd-user) bsd_user
="no"
1157 --enable-bsd-user) bsd_user
="yes"
1159 --enable-pie) pie
="yes"
1161 --disable-pie) pie
="no"
1163 --enable-werror) werror
="yes"
1165 --disable-werror) werror
="no"
1167 --enable-lto) lto
="true"
1169 --disable-lto) lto
="false"
1171 --enable-stack-protector) stack_protector
="yes"
1173 --disable-stack-protector) stack_protector
="no"
1175 --enable-safe-stack) safe_stack
="yes"
1177 --disable-safe-stack) safe_stack
="no"
1183 --disable-cfi) cfi
="false"
1185 --enable-cfi-debug) cfi_debug
="true"
1187 --disable-cfi-debug) cfi_debug
="false"
1189 --disable-curses) curses
="disabled"
1191 --enable-curses) curses
="enabled"
1193 --disable-iconv) iconv="disabled"
1195 --enable-iconv) iconv="enabled"
1197 --disable-curl) curl
="disabled"
1199 --enable-curl) curl
="enabled"
1201 --disable-fdt) fdt
="disabled"
1203 --enable-fdt) fdt
="enabled"
1205 --enable-fdt=git
) fdt
="internal"
1207 --enable-fdt=system
) fdt
="system"
1209 --disable-linux-aio) linux_aio
="no"
1211 --enable-linux-aio) linux_aio
="yes"
1213 --disable-linux-io-uring) linux_io_uring
="disabled"
1215 --enable-linux-io-uring) linux_io_uring
="enabled"
1217 --disable-attr) attr
="disabled"
1219 --enable-attr) attr
="enabled"
1221 --disable-membarrier) membarrier
="no"
1223 --enable-membarrier) membarrier
="yes"
1225 --disable-bpf) bpf
="disabled"
1227 --enable-bpf) bpf
="enabled"
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
="disabled"
1279 --enable-rbd) rbd
="enabled"
1281 --disable-xfsctl) xfs
="no"
1283 --enable-xfsctl) xfs
="yes"
1285 --disable-smartcard) smartcard
="disabled"
1287 --enable-smartcard) smartcard
="enabled"
1289 --disable-u2f) u2f
="disabled"
1291 --enable-u2f) u2f
="enabled"
1293 --disable-libusb) libusb
="disabled"
1295 --enable-libusb) libusb
="enabled"
1297 --disable-usb-redir) usb_redir
="disabled"
1299 --enable-usb-redir) usb_redir
="enabled"
1301 --disable-zlib-test)
1303 --disable-lzo) lzo
="disabled"
1305 --enable-lzo) lzo
="enabled"
1307 --disable-snappy) snappy
="disabled"
1309 --enable-snappy) snappy
="enabled"
1311 --disable-bzip2) bzip2="disabled"
1313 --enable-bzip2) bzip2="enabled"
1315 --enable-lzfse) lzfse
="enabled"
1317 --disable-lzfse) lzfse
="disabled"
1319 --disable-zstd) zstd
="disabled"
1321 --enable-zstd) zstd
="enabled"
1323 --enable-guest-agent) guest_agent
="yes"
1325 --disable-guest-agent) guest_agent
="no"
1327 --enable-guest-agent-msi) guest_agent_msi
="enabled"
1329 --disable-guest-agent-msi) guest_agent_msi
="disabled"
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
="enabled"
1349 --disable-seccomp) seccomp
="disabled"
1351 --disable-glusterfs) glusterfs
="disabled"
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
="enabled"
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
="disabled"
1375 --enable-gtk) gtk
="enabled"
1377 --tls-priority=*) tls_priority
="$optarg"
1379 --disable-gnutls) gnutls
="disabled"
1381 --enable-gnutls) gnutls
="enabled"
1383 --disable-nettle) nettle
="disabled"
1385 --enable-nettle) nettle
="enabled"
1387 --disable-gcrypt) gcrypt
="disabled"
1389 --enable-gcrypt) gcrypt
="enabled"
1391 --disable-auth-pam) auth_pam
="disabled"
1393 --enable-auth-pam) auth_pam
="enabled"
1395 --enable-rdma) rdma
="yes"
1397 --disable-rdma) rdma
="no"
1399 --enable-pvrdma) pvrdma
="yes"
1401 --disable-pvrdma) pvrdma
="no"
1403 --disable-vte) vte
="disabled"
1405 --enable-vte) vte
="enabled"
1407 --disable-virglrenderer) virglrenderer
="disabled"
1409 --enable-virglrenderer) virglrenderer
="enabled"
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
="disabled"
1429 --enable-libxml2) libxml2
="enabled"
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-vhost-user) vhost_user
="no"
1477 --enable-vhost-user) vhost_user
="yes"
1479 --disable-vhost-vdpa) vhost_vdpa
="no"
1481 --enable-vhost-vdpa) vhost_vdpa
="yes"
1483 --disable-vhost-kernel) vhost_kernel
="no"
1485 --enable-vhost-kernel) vhost_kernel
="yes"
1487 --disable-capstone) capstone
="disabled"
1489 --enable-capstone) capstone
="enabled"
1491 --enable-capstone=git
) capstone
="internal"
1493 --enable-capstone=system
) capstone
="system"
1495 --with-git=*) git
="$optarg"
1497 --enable-git-update)
1498 git_submodules_action
="update"
1499 echo "--enable-git-update deprecated, use --with-git-submodules=update"
1501 --disable-git-update)
1502 git_submodules_action
="validate"
1503 echo "--disable-git-update deprecated, use --with-git-submodules=validate"
1505 --with-git-submodules=*)
1506 git_submodules_action
="$optarg"
1508 --enable-debug-mutex) debug_mutex
=yes
1510 --disable-debug-mutex) debug_mutex
=no
1512 --enable-libpmem) libpmem
="enabled"
1514 --disable-libpmem) libpmem
="disabled"
1516 --enable-xkbcommon) xkbcommon
="enabled"
1518 --disable-xkbcommon) xkbcommon
="disabled"
1520 --enable-plugins) if test "$mingw32" = "yes"; then
1521 error_exit
"TCG plugins not currently supported on Windows platforms"
1526 --disable-plugins) plugins
="no"
1528 --enable-containers) use_containers
="yes"
1530 --disable-containers) use_containers
="no"
1532 --enable-fuzzing) fuzzing
=true
1534 --disable-fuzzing) fuzzing
=false
1536 --gdb=*) gdb_bin
="$optarg"
1538 --enable-rng-none) rng_none
=yes
1540 --disable-rng-none) rng_none
=no
1542 --enable-keyring) secret_keyring
="yes"
1544 --disable-keyring) secret_keyring
="no"
1546 --enable-libdaxctl) libdaxctl
="enabled"
1548 --disable-libdaxctl) libdaxctl
="disabled"
1550 --enable-fuse) fuse
="enabled"
1552 --disable-fuse) fuse
="disabled"
1554 --enable-fuse-lseek) fuse_lseek
="enabled"
1556 --disable-fuse-lseek) fuse_lseek
="disabled"
1558 --enable-multiprocess) multiprocess
="enabled"
1560 --disable-multiprocess) multiprocess
="disabled"
1562 --enable-gio) gio
=yes
1564 --disable-gio) gio
=no
1566 --enable-slirp-smbd) slirp_smbd
=yes
1568 --disable-slirp-smbd) slirp_smbd
=no
1571 echo "ERROR: unknown option $opt"
1572 echo "Try '$0 --help' for more information"
1578 # test for any invalid configuration combinations
1579 if test "$plugins" = "yes" -a "$tcg" = "disabled"; then
1580 error_exit
"Can't enable plugins on non-TCG builds"
1583 case $git_submodules_action in
1585 if test ! -e "$source_path/.git"; then
1586 echo "ERROR: cannot $git_submodules_action git submodules without .git"
1591 if ! test -f "$source_path/ui/keycodemapdb/README"
1594 echo "ERROR: missing GIT submodules"
1596 if test -e "$source_path/.git"; then
1597 echo "--with-git-submodules=ignore specified but submodules were not"
1598 echo "checked out. Please initialize and update submodules."
1600 echo "This is not a GIT checkout but module content appears to"
1601 echo "be missing. Do not use 'git archive' or GitHub download links"
1602 echo "to acquire QEMU source archives. Non-GIT builds are only"
1603 echo "supported with source archives linked from:"
1605 echo " https://www.qemu.org/download/#source"
1607 echo "Developers working with GIT can use scripts/archive-source.sh"
1608 echo "if they need to create valid source archives."
1615 echo "ERROR: invalid --with-git-submodules= value '$git_submodules_action'"
1620 libdir
="${libdir:-$prefix/lib}"
1621 libexecdir
="${libexecdir:-$prefix/libexec}"
1622 includedir
="${includedir:-$prefix/include}"
1624 if test "$mingw32" = "yes" ; then
1625 bindir
="${bindir:-$prefix}"
1627 bindir
="${bindir:-$prefix/bin}"
1629 mandir
="${mandir:-$prefix/share/man}"
1630 datadir
="${datadir:-$prefix/share}"
1631 docdir
="${docdir:-$prefix/share/doc}"
1632 sysconfdir
="${sysconfdir:-$prefix/etc}"
1633 local_statedir
="${local_statedir:-$prefix/var}"
1634 firmwarepath
="${firmwarepath:-$datadir/qemu-firmware}"
1635 localedir
="${localedir:-$datadir/locale}"
1640 QEMU_LDFLAGS
="-m32 $QEMU_LDFLAGS"
1644 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1647 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1648 QEMU_LDFLAGS
="-m32 -mv8plus $QEMU_LDFLAGS"
1651 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1652 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1656 QEMU_LDFLAGS
="-m31 $QEMU_LDFLAGS"
1660 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1664 QEMU_LDFLAGS
="-m32 $QEMU_LDFLAGS"
1667 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1668 # If we truly care, we should simply detect this case at
1669 # runtime and generate the fallback to serial emulation.
1670 CPU_CFLAGS
="-m64 -mcx16"
1671 QEMU_LDFLAGS
="-m64 $QEMU_LDFLAGS"
1675 QEMU_LDFLAGS
="-mx32 $QEMU_LDFLAGS"
1677 # No special flags required for other host CPUs
1680 if eval test -z "\${cross_cc_$cpu}"; then
1681 eval "cross_cc_${cpu}=\$cc"
1682 cross_cc_vars
="$cross_cc_vars cross_cc_${cpu}"
1685 # For user-mode emulation the host arch has to be one we explicitly
1686 # support, even if we're using TCI.
1687 if [ "$ARCH" = "unknown" ]; then
1692 default_target_list
=""
1693 deprecated_targets_list
=ppc64abi32-linux-user
1694 deprecated_features
=""
1697 if [ "$softmmu" = "yes" ]; then
1698 mak_wilds
="${mak_wilds} $source_path/configs/targets/*-softmmu.mak"
1700 if [ "$linux_user" = "yes" ]; then
1701 mak_wilds
="${mak_wilds} $source_path/configs/targets/*-linux-user.mak"
1703 if [ "$bsd_user" = "yes" ]; then
1704 mak_wilds
="${mak_wilds} $source_path/configs/targets/*-bsd-user.mak"
1707 # If the user doesn't explicitly specify a deprecated target we will
1709 if test -z "$target_list"; then
1710 if test -z "$target_list_exclude"; then
1711 target_list_exclude
="$deprecated_targets_list"
1713 target_list_exclude
="$target_list_exclude,$deprecated_targets_list"
1717 for config
in $mak_wilds; do
1718 target
="$(basename "$config" .mak)"
1719 if echo "$target_list_exclude" |
grep -vq "$target"; then
1720 default_target_list
="${default_target_list} $target"
1724 # Enumerate public trace backends for --help output
1725 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1727 if test x
"$show_help" = x
"yes" ; then
1730 Usage: configure [options]
1731 Options: [defaults in brackets after descriptions]
1734 --help print this message
1735 --prefix=PREFIX install in PREFIX [$prefix]
1736 --interp-prefix=PREFIX where to find shared libraries, etc.
1737 use %M for cpu name [$interp_prefix]
1738 --target-list=LIST set target list (default: build all non-deprecated)
1739 $(echo Available targets: $default_target_list | \
1740 fold -s -w 53 | sed -e 's/^/ /')
1741 $(echo Deprecated targets: $deprecated_targets_list | \
1742 fold -s -w 53 | sed -e 's/^/ /')
1743 --target-list-exclude=LIST exclude a set of targets from the default target-list
1745 Advanced options (experts only):
1746 --cross-prefix=PREFIX use PREFIX for compile tools, PREFIX can be blank [$cross_prefix]
1747 --cc=CC use C compiler CC [$cc]
1748 --iasl=IASL use ACPI compiler IASL [$iasl]
1749 --host-cc=CC use C compiler CC [$host_cc] for code run at
1751 --cxx=CXX use C++ compiler CXX [$cxx]
1752 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1753 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1754 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1755 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1756 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1757 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1758 --make=MAKE use specified make [$make]
1759 --python=PYTHON use specified python [$python]
1760 --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build]
1761 --meson=MESON use specified meson [$meson]
1762 --ninja=NINJA use specified ninja [$ninja]
1763 --smbd=SMBD use specified smbd [$smbd]
1764 --with-git=GIT use specified git [$git]
1765 --with-git-submodules=update update git submodules (default if .git dir exists)
1766 --with-git-submodules=validate fail if git submodules are not up to date
1767 --with-git-submodules=ignore do not update or check git submodules (default if no .git dir)
1768 --static enable static build [$static]
1769 --mandir=PATH install man pages in PATH
1770 --datadir=PATH install firmware in PATH/$qemu_suffix
1771 --localedir=PATH install translation in PATH/$qemu_suffix
1772 --docdir=PATH install documentation in PATH/$qemu_suffix
1773 --bindir=PATH install binaries in PATH
1774 --libdir=PATH install libraries in PATH
1775 --libexecdir=PATH install helper binaries in PATH
1776 --sysconfdir=PATH install config in PATH/$qemu_suffix
1777 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1778 --firmwarepath=PATH search PATH for firmware files
1779 --efi-aarch64=PATH PATH of efi file to use for aarch64 VMs.
1780 --with-suffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir/docdir [$qemu_suffix]
1781 --with-pkgversion=VERS use specified string as sub-version of the package
1782 --without-default-features default all --enable-* options to "disabled"
1783 --without-default-devices do not include any device that is not needed to
1784 start the emulator (only use if you are including
1785 desired devices in configs/devices/)
1786 --with-devices-ARCH=NAME override default configs/devices
1787 --enable-debug enable common debug build options
1788 --enable-sanitizers enable default sanitizers
1789 --enable-tsan enable thread sanitizer
1790 --disable-strip disable stripping binaries
1791 --disable-werror disable compilation abort on warning
1792 --disable-stack-protector disable compiler-provided stack protection
1793 --audio-drv-list=LIST set audio drivers list
1794 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1795 --block-drv-rw-whitelist=L
1796 set block driver read-write whitelist
1797 (by default affects only QEMU, not tools like qemu-img)
1798 --block-drv-ro-whitelist=L
1799 set block driver read-only whitelist
1800 (by default affects only QEMU, not tools like qemu-img)
1801 --enable-block-drv-whitelist-in-tools
1802 use block whitelist also in tools instead of only QEMU
1803 --enable-trace-backends=B Set trace backend
1804 Available backends: $trace_backend_list
1805 --with-trace-file=NAME Full PATH,NAME of file to store traces
1807 --disable-slirp disable SLIRP userspace network connectivity
1808 --enable-tcg-interpreter enable TCI (TCG with bytecode interpreter, experimental and slow)
1809 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1810 --cpu=CPU Build for host CPU [$cpu]
1811 --with-coroutine=BACKEND coroutine backend. Supported options:
1812 ucontext, sigaltstack, windows
1813 --enable-gcov enable test coverage analysis with gcov
1814 --disable-blobs disable installing provided firmware blobs
1815 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1816 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1817 --tls-priority default TLS protocol/cipher priority string
1818 --enable-gprof QEMU profiling with gprof
1819 --enable-profiler profiler support
1820 --enable-debug-stack-usage
1821 track the maximum stack usage of stacks created by qemu_alloc_stack
1823 enable plugins via shared library loading
1824 --disable-containers don't use containers for cross-building
1825 --gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
1827 Optional features, enabled with --enable-FEATURE and
1828 disabled with --disable-FEATURE, default is enabled if available
1829 (unless built with --without-default-features):
1831 system all system emulation targets
1832 user supported user emulation targets
1833 linux-user all linux usermode emulation targets
1834 bsd-user all BSD usermode emulation targets
1835 docs build documentation
1836 guest-agent build the QEMU Guest Agent
1837 guest-agent-msi build guest agent Windows MSI installation package
1838 pie Position Independent Executables
1839 modules modules support (non-Windows)
1840 module-upgrades try to load modules from alternate paths for upgrades
1841 debug-tcg TCG debugging (default is disabled)
1842 debug-info debugging information
1843 lto Enable Link-Time Optimization.
1844 sparse sparse checker
1845 safe-stack SafeStack Stack Smash Protection. Depends on
1846 clang/llvm >= 3.7 and requires coroutine backend ucontext.
1847 cfi Enable Control-Flow Integrity for indirect function calls.
1848 In case of a cfi violation, QEMU is terminated with SIGILL
1849 Depends on lto and is incompatible with modules
1850 Automatically enables Link-Time Optimization (lto)
1851 cfi-debug In case of a cfi violation, a message containing the line that
1852 triggered the error is written to stderr. After the error,
1853 QEMU is still terminated with SIGILL
1854 gnutls GNUTLS cryptography support
1855 nettle nettle cryptography support
1856 gcrypt libgcrypt cryptography support
1857 auth-pam PAM access control
1859 sdl-image SDL Image support for icons
1861 vte vte support for the gtk UI
1863 iconv font glyph conversion support
1865 vnc-sasl SASL encryption for VNC server
1866 vnc-jpeg JPEG lossy compression for VNC server
1867 vnc-png PNG compression for VNC server
1868 cocoa Cocoa UI (Mac OS X only)
1870 virtiofsd build virtiofs daemon (virtiofsd)
1871 libudev Use libudev to enumerate host devices
1872 mpath Multipath persistent reservation passthrough
1873 xen xen backend driver support
1874 xen-pci-passthrough PCI passthrough support for Xen
1875 alsa ALSA sound support
1876 coreaudio CoreAudio sound support
1877 dsound DirectSound sound support
1878 jack JACK sound support
1879 oss OSS sound support
1880 pa PulseAudio sound support
1881 brlapi BrlAPI (Braile)
1882 curl curl connectivity
1883 membarrier membarrier system call (for Linux 4.14+ or Windows)
1885 kvm KVM acceleration support
1886 hax HAX acceleration support
1887 hvf Hypervisor.framework acceleration support
1888 nvmm NVMM acceleration support
1889 whpx Windows Hypervisor Platform acceleration support
1890 rdma Enable RDMA-based migration
1891 pvrdma Enable PVRDMA support
1892 vde support for vde network
1893 netmap support for netmap network
1894 linux-aio Linux AIO support
1895 linux-io-uring Linux io_uring support
1896 cap-ng libcap-ng support
1897 attr attr and xattr support
1898 vhost-net vhost-net kernel acceleration support
1899 vhost-vsock virtio sockets device support
1900 vhost-scsi vhost-scsi kernel target support
1901 vhost-crypto vhost-user-crypto backend support
1902 vhost-kernel vhost kernel backend support
1903 vhost-user vhost-user backend support
1904 vhost-user-blk-server vhost-user-blk server support
1905 vhost-vdpa vhost-vdpa kernel backend support
1906 bpf BPF kernel support
1908 spice-protocol spice-protocol
1909 rbd rados block device (rbd)
1910 libiscsi iscsi support
1912 smartcard smartcard support (libcacard)
1913 u2f U2F support (u2f-emu)
1914 libusb libusb (for usb passthrough)
1915 live-block-migration Block migration in the main migration stream
1916 usb-redir usb network redirection support
1917 lzo support of lzo compression library
1918 snappy support of snappy compression library
1919 bzip2 support of bzip2 compression library
1920 (for reading bzip2-compressed dmg images)
1921 lzfse support of lzfse compression library
1922 (for reading lzfse-compressed dmg images)
1923 zstd support for zstd compression library
1924 (for migration compression and qcow2 cluster compression)
1925 seccomp seccomp support
1926 coroutine-pool coroutine freelist (better performance)
1927 glusterfs GlusterFS backend
1929 libssh ssh block device support
1930 numa libnuma support
1931 libxml2 for Parallels image format
1932 tcmalloc tcmalloc support
1933 jemalloc jemalloc support
1934 avx2 AVX2 optimization support
1935 avx512f AVX512F optimization support
1936 replication replication support
1937 opengl opengl support
1938 virglrenderer virgl rendering support
1939 xfsctl xfsctl support
1940 qom-cast-debug cast debugging support
1941 tools build qemu-io, qemu-nbd and qemu-img tools
1942 bochs bochs image format support
1943 cloop cloop image format support
1944 dmg dmg image format support
1945 qcow1 qcow v1 image format support
1946 vdi vdi image format support
1947 vvfat vvfat image format support
1948 qed qed image format support
1949 parallels parallels image format support
1950 crypto-afalg Linux AF_ALG crypto backend driver
1951 capstone capstone disassembler support
1952 debug-mutex mutex debugging support
1953 libpmem libpmem support
1954 xkbcommon xkbcommon support
1955 rng-none dummy RNG, avoid using /dev/(u)random and getrandom()
1956 libdaxctl libdaxctl support
1957 fuse FUSE block device export
1958 fuse-lseek SEEK_HOLE/SEEK_DATA support for FUSE exports
1959 multiprocess Out of process device emulation support
1961 slirp-smbd use smbd (at path --smbd=*) in slirp networking
1963 NOTE: The object files are built at the place where configure is launched
1968 # Remove old dependency files to make sure that they get properly regenerated
1969 rm -f */config-devices.mak.d
1971 if test -z "$python"
1973 error_exit
"Python not found. Use --python=/path/to/python"
1977 error_exit
"GNU make ($make) not found"
1980 # Note that if the Python conditional here evaluates True we will exit
1981 # with status 1 which is a shell 'false' value.
1982 if ! $python -c 'import sys; sys.exit(sys.version_info < (3,6))'; then
1983 error_exit
"Cannot use '$python', Python >= 3.6 is required." \
1984 "Use --python=/path/to/python to specify a supported Python."
1987 # Preserve python version since some functionality is dependent on it
1988 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
)
1990 # Suppress writing compiled files
1993 if test -z "$meson"; then
1994 if test "$explicit_python" = no
&& has meson
&& version_ge
"$(meson --version)" 0.59.2; then
1996 elif test $git_submodules_action != 'ignore' ; then
1998 elif test -e "${source_path}/meson/meson.py" ; then
2001 if test "$explicit_python" = yes; then
2002 error_exit
"--python requires using QEMU's embedded Meson distribution, but it was not found."
2004 error_exit
"Meson not found. Use --meson=/path/to/meson"
2008 # Meson uses its own Python interpreter to invoke other Python scripts,
2009 # but the user wants to use the one they specified with --python.
2011 # We do not want to override the distro Python interpreter (and sometimes
2012 # cannot: for example in Homebrew /usr/bin/meson is a bash script), so
2013 # just require --meson=git|internal together with --python.
2014 if test "$explicit_python" = yes; then
2017 *) error_exit
"--python requires using QEMU's embedded Meson distribution." ;;
2022 if test "$meson" = git
; then
2023 git_submodules
="${git_submodules} meson"
2028 meson
="$python ${source_path}/meson/meson.py"
2030 *) meson
=$
(command -v "$meson") ;;
2035 if test -z "$ninja"; then
2036 for c
in ninja ninja-build samu
; do
2038 ninja
=$
(command -v "$c")
2042 if test -z "$ninja"; then
2043 error_exit
"Cannot find Ninja"
2047 # Check that the C compiler works. Doing this here before testing
2048 # the host CPU ensures that we had a valid CC to autodetect the
2049 # $cpu var (and we should bail right here if that's not the case).
2050 # It also allows the help message to be printed without a CC.
2052 if compile_object
; then
2053 : C compiler works ok
2055 error_exit
"\"$cc\" either does not exist or does not work"
2057 if ! compile_prog
; then
2058 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
2061 # Consult white-list to determine whether to enable werror
2062 # by default. Only enable by default for git builds
2063 if test -z "$werror" ; then
2064 if test "$git_submodules_action" != "ignore" && \
2065 { test "$linux" = "yes" ||
test "$mingw32" = "yes"; }; then
2072 if test "$targetos" = "bogus"; then
2073 # Now that we know that we're not printing the help and that
2074 # the compiler works (so the results of the check_defines we used
2075 # to identify the OS are reliable), if we didn't recognize the
2076 # host OS we should stop now.
2077 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
2080 # Check whether the compiler matches our minimum requirements:
2082 #if defined(__clang_major__) && defined(__clang_minor__)
2083 # ifdef __apple_build_version__
2084 # if __clang_major__ < 10 || (__clang_major__ == 10 && __clang_minor__ < 0)
2085 # error You need at least XCode Clang v10.0 to compile QEMU
2088 # if __clang_major__ < 6 || (__clang_major__ == 6 && __clang_minor__ < 0)
2089 # error You need at least Clang v6.0 to compile QEMU
2092 #elif defined(__GNUC__) && defined(__GNUC_MINOR__)
2093 # if __GNUC__ < 7 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4)
2094 # error You need at least GCC v7.4.0 to compile QEMU
2097 # error You either need GCC or Clang to compiler QEMU
2099 int main (void) { return 0; }
2101 if ! compile_prog
"" "" ; then
2102 error_exit
"You need at least GCC v7.4 or Clang v6.0 (or XCode Clang v10.0)"
2105 # Accumulate -Wfoo and -Wno-bar separately.
2106 # We will list all of the enable flags first, and the disable flags second.
2107 # Note that we do not add -Werror, because that would enable it for all
2108 # configure tests. If a configure test failed due to -Werror this would
2109 # just silently disable some features, so it's too error prone.
2112 add_to warn_flags
-Wold-style-declaration
2113 add_to warn_flags
-Wold-style-definition
2114 add_to warn_flags
-Wtype-limits
2115 add_to warn_flags
-Wformat-security
2116 add_to warn_flags
-Wformat-y2k
2117 add_to warn_flags
-Winit-self
2118 add_to warn_flags
-Wignored-qualifiers
2119 add_to warn_flags
-Wempty-body
2120 add_to warn_flags
-Wnested-externs
2121 add_to warn_flags
-Wendif-labels
2122 add_to warn_flags
-Wexpansion-to-defined
2123 add_to warn_flags
-Wimplicit-fallthrough=2
2126 add_to nowarn_flags
-Wno-initializer-overrides
2127 add_to nowarn_flags
-Wno-missing-include-dirs
2128 add_to nowarn_flags
-Wno-shift-negative-value
2129 add_to nowarn_flags
-Wno-string-plus-int
2130 add_to nowarn_flags
-Wno-typedef-redefinition
2131 add_to nowarn_flags
-Wno-tautological-type-limit-compare
2132 add_to nowarn_flags
-Wno-psabi
2134 gcc_flags
="$warn_flags $nowarn_flags"
2136 cc_has_warning_flag
() {
2139 # Use the positive sense of the flag when testing for -Wno-wombat
2140 # support (gcc will happily accept the -Wno- form of unknown
2142 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
2143 compile_prog
"-Werror $optflag" ""
2146 for flag
in $gcc_flags; do
2147 if cc_has_warning_flag
$flag ; then
2148 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
2152 if test "$stack_protector" != "no"; then
2154 int main(int argc, char *argv[])
2156 char arr[64], *p = arr, *c = argv[0];
2163 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
2165 for flag
in $gcc_flags; do
2166 # We need to check both a compile and a link, since some compiler
2167 # setups fail only on a .c->.o compile and some only at link time
2168 if compile_object
"-Werror $flag" &&
2169 compile_prog
"-Werror $flag" ""; then
2170 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
2171 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
2176 if test "$stack_protector" = yes; then
2177 if test $sp_on = 0; then
2178 error_exit
"Stack protector not supported"
2183 # Disable -Wmissing-braces on older compilers that warn even for
2184 # the "universal" C zero initializer {0}.
2190 if compile_object
"-Werror" "" ; then
2193 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
2196 # Our module code doesn't support Windows
2197 if test "$modules" = "yes" && test "$mingw32" = "yes" ; then
2198 error_exit
"Modules are not available for Windows"
2201 # module_upgrades is only reasonable if modules are enabled
2202 if test "$modules" = "no" && test "$module_upgrades" = "yes" ; then
2203 error_exit
"Can't enable module-upgrades as Modules are not enabled"
2206 # Static linking is not possible with plugins, modules or PIE
2207 if test "$static" = "yes" ; then
2208 if test "$modules" = "yes" ; then
2209 error_exit
"static and modules are mutually incompatible"
2211 if test "$plugins" = "yes"; then
2212 error_exit
"static and plugins are mutually incompatible"
2218 # Unconditional check for compiler __thread support
2220 static __thread int tls_var;
2221 int main(void) { return tls_var; }
2224 if ! compile_prog
"-Werror" "" ; then
2225 error_exit
"Your compiler does not support the __thread specifier for " \
2226 "Thread-Local Storage (TLS). Please upgrade to a version that does."
2232 # define THREAD __thread
2236 static THREAD int tls_var;
2237 int main(void) { return tls_var; }
2240 # Check we support --no-pie first; we will need this for building ROMs.
2241 if compile_prog
"-Werror -fno-pie" "-no-pie"; then
2242 CFLAGS_NOPIE
="-fno-pie"
2245 if test "$static" = "yes"; then
2246 if test "$pie" != "no" && compile_prog
"-Werror -fPIE -DPIE" "-static-pie"; then
2247 CONFIGURE_CFLAGS
="-fPIE -DPIE $CONFIGURE_CFLAGS"
2248 QEMU_LDFLAGS
="-static-pie $QEMU_LDFLAGS"
2250 elif test "$pie" = "yes"; then
2251 error_exit
"-static-pie not available due to missing toolchain support"
2253 QEMU_LDFLAGS
="-static $QEMU_LDFLAGS"
2256 elif test "$pie" = "no"; then
2257 CONFIGURE_CFLAGS
="$CFLAGS_NOPIE $CONFIGURE_CFLAGS"
2258 elif compile_prog
"-Werror -fPIE -DPIE" "-pie"; then
2259 CONFIGURE_CFLAGS
="-fPIE -DPIE $CONFIGURE_CFLAGS"
2260 CONFIGURE_LDFLAGS
="-pie $CONFIGURE_LDFLAGS"
2262 elif test "$pie" = "yes"; then
2263 error_exit
"PIE not available due to missing toolchain support"
2265 echo "Disabling PIE due to missing toolchain support"
2269 # Detect support for PT_GNU_RELRO + DT_BIND_NOW.
2270 # The combination is known as "full relro", because .got.plt is read-only too.
2271 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
2272 QEMU_LDFLAGS
="-Wl,-z,relro -Wl,-z,now $QEMU_LDFLAGS"
2275 ##########################################
2276 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
2277 # use i686 as default anyway, but for those that don't, an explicit
2278 # specification is necessary
2280 if test "$cpu" = "i386"; then
2282 static int sfaa(int *ptr)
2284 return __sync_fetch_and_and(ptr, 0);
2290 val = __sync_val_compare_and_swap(&val, 0, 1);
2295 if ! compile_prog
"" "" ; then
2296 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
2300 #########################################
2301 # Solaris specific configure tool chain decisions
2303 if test "$solaris" = "yes" ; then
2307 if test -f /usr
/ccs
/bin
/ar ; then
2308 error_exit
"No path includes ar" \
2309 "Add /usr/ccs/bin to your path and rerun configure"
2311 error_exit
"No path includes ar"
2315 if test "$tcg" = "enabled"; then
2316 git_submodules
="$git_submodules tests/fp/berkeley-testfloat-3"
2317 git_submodules
="$git_submodules tests/fp/berkeley-softfloat-3"
2320 if test -z "${target_list+xxx}" ; then
2322 for target
in $default_target_list; do
2323 target_list
="$target_list $target"
2325 target_list
="${target_list# }"
2328 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
2329 for target
in $target_list; do
2330 # Check that we recognised the target name; this allows a more
2331 # friendly error message than if we let it fall through.
2332 case " $default_target_list " in
2336 error_exit
"Unknown target name '$target'"
2342 for target
in $target_list; do
2343 # if a deprecated target is enabled we note it here
2344 if echo "$deprecated_targets_list" |
grep -q "$target"; then
2345 add_to deprecated_features
$target
2349 # see if system emulation was really requested
2350 case " $target_list " in
2351 *"-softmmu "*) softmmu
=yes
2357 feature_not_found
() {
2361 error_exit
"User requested feature $feature" \
2362 "configure was not able to find it." \
2367 # big/little endian test
2370 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2371 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2372 int main(int argc, char *argv[])
2374 return printf("%s %s\n", (char *)big_endian, (char *)little_endian);
2378 if compile_prog
; then
2379 if strings -a $TMPE |
grep -q BiGeNdIaN
; then
2381 elif strings -a $TMPE |
grep -q LiTtLeEnDiAn
; then
2384 echo big
/little
test failed
2388 echo big
/little
test failed
2392 ##########################################
2394 if test -z "$want_tools"; then
2395 if test "$softmmu" = "no"; then
2402 ##########################################
2406 #include <sys/socket.h>
2407 #include <linux/ip.h>
2408 int main(void) { return sizeof(struct mmsghdr); }
2410 if compile_prog
"" "" ; then
2417 #include <sys/mman.h>
2418 int main(int argc, char *argv[]) {
2419 return mlockall(MCL_FUTURE);
2422 if compile_prog
"" "" ; then
2428 #########################################
2429 # vhost interdependencies and host support
2432 if test "$vhost_user" = "yes" && test "$linux" != "yes"; then
2433 error_exit
"vhost-user is only available on Linux"
2435 test "$vhost_vdpa" = "" && vhost_vdpa
=$linux
2436 if test "$vhost_vdpa" = "yes" && test "$linux" != "yes"; then
2437 error_exit
"vhost-vdpa is only available on Linux"
2439 test "$vhost_kernel" = "" && vhost_kernel
=$linux
2440 if test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then
2441 error_exit
"vhost-kernel is only available on Linux"
2444 # vhost-kernel devices
2445 test "$vhost_scsi" = "" && vhost_scsi
=$vhost_kernel
2446 if test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then
2447 error_exit
"--enable-vhost-scsi requires --enable-vhost-kernel"
2449 test "$vhost_vsock" = "" && vhost_vsock
=$vhost_kernel
2450 if test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then
2451 error_exit
"--enable-vhost-vsock requires --enable-vhost-kernel"
2454 # vhost-user backends
2455 test "$vhost_net_user" = "" && vhost_net_user
=$vhost_user
2456 if test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then
2457 error_exit
"--enable-vhost-net-user requires --enable-vhost-user"
2459 test "$vhost_crypto" = "" && vhost_crypto
=$vhost_user
2460 if test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then
2461 error_exit
"--enable-vhost-crypto requires --enable-vhost-user"
2463 test "$vhost_user_fs" = "" && vhost_user_fs
=$vhost_user
2464 if test "$vhost_user_fs" = "yes" && test "$vhost_user" = "no"; then
2465 error_exit
"--enable-vhost-user-fs requires --enable-vhost-user"
2467 #vhost-vdpa backends
2468 test "$vhost_net_vdpa" = "" && vhost_net_vdpa
=$vhost_vdpa
2469 if test "$vhost_net_vdpa" = "yes" && test "$vhost_vdpa" = "no"; then
2470 error_exit
"--enable-vhost-net-vdpa requires --enable-vhost-vdpa"
2473 # OR the vhost-kernel, vhost-vdpa and vhost-user values for simplicity
2474 if test "$vhost_net" = ""; then
2475 test "$vhost_net_user" = "yes" && vhost_net
=yes
2476 test "$vhost_net_vdpa" = "yes" && vhost_net
=yes
2477 test "$vhost_kernel" = "yes" && vhost_net
=yes
2480 ##########################################
2483 if ! has
"$pkg_config_exe"; then
2484 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2487 ##########################################
2490 if test "$linux_user" = "yes"; then
2493 #include <linux/futex.h>
2495 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2501 if ! compile_object
; then
2502 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2506 ##########################################
2509 if test "$xen" != "disabled" ; then
2510 # Check whether Xen library path is specified via --extra-ldflags to avoid
2511 # overriding this setting with pkg-config output. If not, try pkg-config
2512 # to obtain all needed flags.
2514 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2515 $pkg_config --exists xencontrol
; then
2516 xen_ctrl_version
="$(printf '%d%02d%02d' \
2517 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2519 xen_pc
="xencontrol xenstore xenforeignmemory xengnttab"
2520 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2521 if $pkg_config --exists xentoolcore
; then
2522 xen_pc
="$xen_pc xentoolcore"
2524 xen_cflags
="$($pkg_config --cflags $xen_pc)"
2525 xen_libs
="$($pkg_config --libs $xen_pc)"
2528 xen_libs
="-lxenstore -lxenctrl"
2529 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2531 # First we test whether Xen headers and libraries are available.
2532 # If no, we are done and there is no Xen support.
2533 # If yes, more tests are run to detect the Xen version.
2537 #include <xenctrl.h>
2542 if ! compile_prog
"" "$xen_libs" ; then
2544 if test "$xen" = "enabled" ; then
2545 feature_not_found
"xen" "Install xen devel"
2551 cat > $TMPC <<EOF &&
2552 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2553 #define __XEN_TOOLS__
2554 #include <xendevicemodel.h>
2555 #include <xenforeignmemory.h>
2557 xendevicemodel_handle *xd;
2558 xenforeignmemory_handle *xfmem;
2560 xd = xendevicemodel_open(0, 0);
2561 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2563 xfmem = xenforeignmemory_open(0, 0);
2564 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2569 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2571 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2572 xen_ctrl_version
=41100
2575 cat > $TMPC <<EOF &&
2576 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2577 #include <xenforeignmemory.h>
2578 #include <xentoolcore.h>
2580 xenforeignmemory_handle *xfmem;
2582 xfmem = xenforeignmemory_open(0, 0);
2583 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2584 xentoolcore_restrict_all(0);
2589 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2591 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2592 xen_ctrl_version
=41000
2595 cat > $TMPC <<EOF &&
2596 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2597 #define __XEN_TOOLS__
2598 #include <xendevicemodel.h>
2600 xendevicemodel_handle *xd;
2602 xd = xendevicemodel_open(0, 0);
2603 xendevicemodel_close(xd);
2608 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2610 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2611 xen_ctrl_version
=40900
2614 cat > $TMPC <<EOF &&
2616 * If we have stable libs the we don't want the libxc compat
2617 * layers, regardless of what CFLAGS we may have been given.
2619 * Also, check if xengnttab_grant_copy_segment_t is defined and
2620 * grant copy operation is implemented.
2622 #undef XC_WANT_COMPAT_EVTCHN_API
2623 #undef XC_WANT_COMPAT_GNTTAB_API
2624 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2625 #include <xenctrl.h>
2626 #include <xenstore.h>
2627 #include <xenevtchn.h>
2628 #include <xengnttab.h>
2629 #include <xenforeignmemory.h>
2631 #include <xen/hvm/hvm_info_table.h>
2632 #if !defined(HVM_MAX_VCPUS)
2633 # error HVM_MAX_VCPUS not defined
2636 xc_interface *xc = NULL;
2637 xenforeignmemory_handle *xfmem;
2638 xenevtchn_handle *xe;
2639 xengnttab_handle *xg;
2640 xengnttab_grant_copy_segment_t* seg = NULL;
2644 xc = xc_interface_open(0, 0, 0);
2645 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2646 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2647 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2648 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2650 xfmem = xenforeignmemory_open(0, 0);
2651 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2653 xe = xenevtchn_open(0, 0);
2656 xg = xengnttab_open(0, 0);
2657 xengnttab_grant_copy(xg, 0, seg);
2662 compile_prog
"" "$xen_libs $xen_stable_libs"
2664 xen_ctrl_version
=40800
2667 cat > $TMPC <<EOF &&
2669 * If we have stable libs the we don't want the libxc compat
2670 * layers, regardless of what CFLAGS we may have been given.
2672 #undef XC_WANT_COMPAT_EVTCHN_API
2673 #undef XC_WANT_COMPAT_GNTTAB_API
2674 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2675 #include <xenctrl.h>
2676 #include <xenstore.h>
2677 #include <xenevtchn.h>
2678 #include <xengnttab.h>
2679 #include <xenforeignmemory.h>
2681 #include <xen/hvm/hvm_info_table.h>
2682 #if !defined(HVM_MAX_VCPUS)
2683 # error HVM_MAX_VCPUS not defined
2686 xc_interface *xc = NULL;
2687 xenforeignmemory_handle *xfmem;
2688 xenevtchn_handle *xe;
2689 xengnttab_handle *xg;
2693 xc = xc_interface_open(0, 0, 0);
2694 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2695 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2696 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2697 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2699 xfmem = xenforeignmemory_open(0, 0);
2700 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2702 xe = xenevtchn_open(0, 0);
2705 xg = xengnttab_open(0, 0);
2706 xengnttab_map_grant_ref(xg, 0, 0, 0);
2711 compile_prog
"" "$xen_libs $xen_stable_libs"
2713 xen_ctrl_version
=40701
2718 cat > $TMPC <<EOF &&
2719 #include <xenctrl.h>
2720 #include <xenstore.h>
2722 #include <xen/hvm/hvm_info_table.h>
2723 #if !defined(HVM_MAX_VCPUS)
2724 # error HVM_MAX_VCPUS not defined
2729 xc = xc_interface_open(0, 0, 0);
2730 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2731 xc_gnttab_open(NULL, 0);
2732 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2733 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2734 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2735 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2739 compile_prog
"" "$xen_libs"
2741 xen_ctrl_version
=40600
2746 cat > $TMPC <<EOF &&
2747 #include <xenctrl.h>
2748 #include <xenstore.h>
2750 #include <xen/hvm/hvm_info_table.h>
2751 #if !defined(HVM_MAX_VCPUS)
2752 # error HVM_MAX_VCPUS not defined
2757 xc = xc_interface_open(0, 0, 0);
2758 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2759 xc_gnttab_open(NULL, 0);
2760 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2761 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2762 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2766 compile_prog
"" "$xen_libs"
2768 xen_ctrl_version
=40500
2772 cat > $TMPC <<EOF &&
2773 #include <xenctrl.h>
2774 #include <xenstore.h>
2776 #include <xen/hvm/hvm_info_table.h>
2777 #if !defined(HVM_MAX_VCPUS)
2778 # error HVM_MAX_VCPUS not defined
2783 xc = xc_interface_open(0, 0, 0);
2784 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2785 xc_gnttab_open(NULL, 0);
2786 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2787 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2791 compile_prog
"" "$xen_libs"
2793 xen_ctrl_version
=40200
2797 if test "$xen" = "enabled" ; then
2798 feature_not_found
"xen (unsupported version)" \
2799 "Install a supported xen (xen 4.2 or newer)"
2804 if test "$xen" = enabled
; then
2805 if test $xen_ctrl_version -ge 40701 ; then
2806 xen_libs
="$xen_libs $xen_stable_libs "
2812 ##########################################
2813 # RDMA needs OpenFabrics libraries
2814 if test "$rdma" != "no" ; then
2816 #include <rdma/rdma_cma.h>
2817 int main(void) { return 0; }
2819 rdma_libs
="-lrdmacm -libverbs -libumad"
2820 if compile_prog
"" "$rdma_libs" ; then
2823 if test "$rdma" = "yes" ; then
2825 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
2827 " (1) Fast: Install infiniband packages (devel) from your distro." \
2828 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2829 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2835 ##########################################
2838 cat > $TMPC <<EOF &&
2839 #include <sys/mman.h>
2846 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
2852 if test "$rdma" = "yes" ; then
2855 if compile_prog
"" ""; then
2862 if ! compile_prog
"" ""; then
2863 error_exit
"PVRDMA is not supported since mremap is not implemented"
2872 if test "$pvrdma" = "yes" ; then
2873 error_exit
"PVRDMA requires rdma suppport"
2878 # Let's see if enhanced reg_mr is supported
2879 if test "$pvrdma" = "yes" ; then
2881 cat > $TMPC <<EOF &&
2882 #include <infiniband/verbs.h>
2888 struct ibv_pd *pd = NULL;
2894 mr = ibv_reg_mr_iova(pd, addr, length, iova, access);
2901 if ! compile_prog
"" "-libverbs"; then
2902 QEMU_CFLAGS
="$QEMU_CFLAGS -DLEGACY_RDMA_REG_MR"
2906 ##########################################
2907 # xfsctl() probe, used for file-posix.c
2908 if test "$xfs" != "no" ; then
2910 #include <stddef.h> /* NULL */
2911 #include <xfs/xfs.h>
2914 xfsctl(NULL, 0, 0, NULL);
2918 if compile_prog
"" "" ; then
2921 if test "$xfs" = "yes" ; then
2922 feature_not_found
"xfs" "Install xfsprogs/xfslibs devel"
2928 ##########################################
2929 # vde libraries probe
2930 if test "$vde" != "no" ; then
2931 vde_libs
="-lvdeplug"
2933 #include <libvdeplug.h>
2936 struct vde_open_args a = {0, 0, 0};
2942 if compile_prog
"" "$vde_libs" ; then
2945 if test "$vde" = "yes" ; then
2946 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
2952 ##########################################
2953 # netmap support probe
2954 # Apart from looking for netmap headers, we make sure that the host API version
2955 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2956 # a minor/major version number. Minor new features will be marked with values up
2957 # to 15, and if something happens that requires a change to the backend we will
2958 # move above 15, submit the backend fixes and modify this two bounds.
2959 if test "$netmap" != "no" ; then
2961 #include <inttypes.h>
2963 #include <net/netmap.h>
2964 #include <net/netmap_user.h>
2965 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2968 int main(void) { return 0; }
2970 if compile_prog
"" "" ; then
2973 if test "$netmap" = "yes" ; then
2974 feature_not_found
"netmap"
2980 ##########################################
2981 # plugin linker support probe
2983 if test "$plugins" != "no"; then
2985 #########################################
2986 # See if --dynamic-list is supported by the linker
2988 ld_dynamic_list
="no"
3011 if compile_prog
"" "-Wl,--dynamic-list=$TMPTXT" ; then
3012 ld_dynamic_list
="yes"
3015 #########################################
3016 # See if -exported_symbols_list is supported by the linker
3018 ld_exported_symbols_list
="no"
3023 if compile_prog
"" "-Wl,-exported_symbols_list,$TMPTXT" ; then
3024 ld_exported_symbols_list
="yes"
3027 if test "$ld_dynamic_list" = "no" &&
3028 test "$ld_exported_symbols_list" = "no" ; then
3029 if test "$plugins" = "yes"; then
3031 "Plugin support requires dynamic linking and specifying a set of symbols " \
3032 "that are exported to plugins. Unfortunately your linker doesn't " \
3033 "support the flag (--dynamic-list or -exported_symbols_list) used " \
3043 ##########################################
3044 # glib support probe
3047 glib_modules
=gthread-2.0
3048 if test "$modules" = yes; then
3049 glib_modules
="$glib_modules gmodule-export-2.0"
3050 elif test "$plugins" = "yes"; then
3051 glib_modules
="$glib_modules gmodule-no-export-2.0"
3054 for i
in $glib_modules; do
3055 if $pkg_config --atleast-version=$glib_req_ver $i; then
3056 glib_cflags
=$
($pkg_config --cflags $i)
3057 glib_libs
=$
($pkg_config --libs $i)
3059 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3063 # This workaround is required due to a bug in pkg-config file for glib as it
3064 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3066 if test "$static" = yes && test "$mingw32" = yes; then
3067 glib_cflags
="-DGLIB_STATIC_COMPILATION $glib_cflags"
3070 if ! test "$gio" = "no"; then
3072 if $pkg_config --atleast-version=$glib_req_ver gio-2.0
; then
3073 gio_cflags
=$
($pkg_config --cflags gio-2.0
)
3074 gio_libs
=$
($pkg_config --libs gio-2.0
)
3075 gdbus_codegen
=$
($pkg_config --variable=gdbus_codegen gio-2.0
)
3076 if ! has
"$gdbus_codegen"; then
3079 # Check that the libraries actually work -- Ubuntu 18.04 ships
3080 # with pkg-config --static --libs data for gio-2.0 that is missing
3081 # -lblkid and will give a link error.
3083 #include <gio/gio.h>
3086 g_dbus_proxy_new_sync(0, 0, 0, 0, 0, 0, 0, 0);
3090 if compile_prog
"$gio_cflags" "$gio_libs" ; then
3096 if test "$pass" = "yes" &&
3097 $pkg_config --atleast-version=$glib_req_ver gio-unix-2.0
; then
3098 gio_cflags
="$gio_cflags $($pkg_config --cflags gio-unix-2.0)"
3099 gio_libs
="$gio_libs $($pkg_config --libs gio-unix-2.0)"
3103 if test "$pass" = "no"; then
3104 if test "$gio" = "yes"; then
3105 feature_not_found
"gio" "Install libgio >= 2.0"
3114 # Sanity check that the current size_t matches the
3115 # size that glib thinks it should be. This catches
3116 # problems on multi-arch where people try to build
3117 # 32-bit QEMU while pointing at 64-bit glib headers
3122 #define QEMU_BUILD_BUG_ON(x) \
3123 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3126 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3131 if ! compile_prog
"$glib_cflags" "$glib_libs" ; then
3132 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3133 "You probably need to set PKG_CONFIG_LIBDIR"\
3134 "to point to the right pkg-config files for your"\
3138 # Silence clang warnings triggered by glib < 2.57.2
3141 typedef struct Foo {
3144 static void foo_free(Foo *f)
3148 G_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free);
3149 int main(void) { return 0; }
3151 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3152 if cc_has_warning_flag
"-Wno-unused-function"; then
3153 glib_cflags
="$glib_cflags -Wno-unused-function"
3154 CONFIGURE_CFLAGS
="$CONFIGURE_CFLAGS -Wno-unused-function"
3158 ##########################################
3159 # SHA command probe for modules
3160 if test "$modules" = yes; then
3161 shacmd_probe
="sha1sum sha1 shasum"
3162 for c
in $shacmd_probe; do
3168 if test "$shacmd" = ""; then
3169 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3173 ##########################################
3175 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3179 #include <pthread.h>
3180 static void *f(void *p) { return NULL; }
3183 pthread_create(&thread, 0, f, 0);
3187 if compile_prog
"" "" ; then
3190 for pthread_lib
in $PTHREADLIBS_LIST; do
3191 if compile_prog
"" "$pthread_lib" ; then
3198 if test "$mingw32" != yes && test "$pthread" = no
; then
3199 error_exit
"pthread check failed" \
3200 "Make sure to have the pthread libs and headers installed."
3203 # check for pthread_setname_np with thread id
3204 pthread_setname_np_w_tid
=no
3206 #include <pthread.h>
3208 static void *f(void *p) { return NULL; }
3212 pthread_create(&thread, 0, f, 0);
3213 pthread_setname_np(thread, "QEMU");
3217 if compile_prog
"" "$pthread_lib" ; then
3218 pthread_setname_np_w_tid
=yes
3221 # check for pthread_setname_np without thread id
3222 pthread_setname_np_wo_tid
=no
3224 #include <pthread.h>
3226 static void *f(void *p) { pthread_setname_np("QEMU"); return NULL; }
3230 pthread_create(&thread, 0, f, 0);
3234 if compile_prog
"" "$pthread_lib" ; then
3235 pthread_setname_np_wo_tid
=yes
3238 ##########################################
3240 if test "$libssh" != "no" ; then
3241 if $pkg_config --exists "libssh >= 0.8.7"; then
3242 libssh_cflags
=$
($pkg_config libssh
--cflags)
3243 libssh_libs
=$
($pkg_config libssh
--libs)
3246 if test "$libssh" = "yes" ; then
3247 error_exit
"libssh required for --enable-libssh"
3253 ##########################################
3256 if test "$linux_aio" != "no" ; then
3259 #include <sys/eventfd.h>
3261 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3263 if compile_prog
"" "-laio" ; then
3266 if test "$linux_aio" = "yes" ; then
3267 feature_not_found
"linux AIO" "Install libaio devel"
3273 ##########################################
3274 # TPM emulation is only on POSIX
3276 if test "$tpm" = ""; then
3277 if test "$mingw32" = "yes"; then
3282 elif test "$tpm" = "yes"; then
3283 if test "$mingw32" = "yes" ; then
3284 error_exit
"TPM emulation only available on POSIX systems"
3288 ##########################################
3291 #include <sys/types.h>
3292 #include <sys/uio.h>
3294 int main(void) { return sizeof(struct iovec); }
3297 if compile_prog
"" "" ; then
3301 ##########################################
3305 auto | enabled | internal
)
3306 # Simpler to always update submodule, even if not needed.
3307 git_submodules
="${git_submodules} dtc"
3311 ##########################################
3312 # opengl probe (for sdl2, gtk)
3314 if test "$opengl" != "no" ; then
3316 if $pkg_config epoxy
; then
3318 #include <epoxy/egl.h>
3319 int main(void) { return 0; }
3321 if compile_prog
"" "" ; then
3326 if test "$epoxy" = "yes" ; then
3327 opengl_cflags
="$($pkg_config --cflags epoxy)"
3328 opengl_libs
="$($pkg_config --libs epoxy)"
3331 if test "$opengl" = "yes" ; then
3332 feature_not_found
"opengl" "Please install epoxy with EGL"
3340 ##########################################
3343 if test "$numa" != "no" ; then
3346 int main(void) { return numa_available(); }
3349 if compile_prog
"" "-lnuma" ; then
3353 if test "$numa" = "yes" ; then
3354 feature_not_found
"numa" "install numactl devel"
3361 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3362 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3364 elif test "$tcmalloc" = "yes" ; then
3366 elif test "$jemalloc" = "yes" ; then
3372 if test "$linux_user" = "yes"; then
3374 #include <linux/usbdevice_fs.h>
3376 #ifndef USBDEVFS_GET_CAPABILITIES
3377 #error "USBDEVFS_GET_CAPABILITIES undefined"
3380 #ifndef USBDEVFS_DISCONNECT_CLAIM
3381 #error "USBDEVFS_DISCONNECT_CLAIM undefined"
3389 if compile_prog
"" ""; then
3394 ##########################################
3396 if test "$spice_protocol" != "no" ; then
3397 spice_protocol_cflags
=$
($pkg_config --cflags spice-protocol
2>/dev
/null
)
3398 if $pkg_config --atleast-version=0.12.3 spice-protocol
; then
3399 spice_protocol
="yes"
3401 if test "$spice_protocol" = "yes" ; then
3402 feature_not_found
"spice_protocol" \
3403 "Install spice-protocol(>=0.12.3) devel"
3409 if test "$spice" != "no" ; then
3412 int main(void) { spice_server_new(); return 0; }
3414 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
3415 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
3416 if $pkg_config --atleast-version=0.12.5 spice-server
&& \
3417 test "$spice_protocol" = "yes" && \
3418 compile_prog
"$spice_cflags" "$spice_libs" ; then
3421 if test "$spice" = "yes" ; then
3422 feature_not_found
"spice" \
3423 "Install spice-server(>=0.12.5) devel"
3429 ##########################################
3430 # check if we have VSS SDK headers for win
3432 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
3433 test "$vss_win32_sdk" != "no" ; then
3434 case "$vss_win32_sdk" in
3435 "") vss_win32_include
="-isystem $source_path" ;;
3436 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
3437 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3438 vss_win32_include
="-isystem $source_path/.sdk/vss"
3439 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3441 *) vss_win32_include
="-isystem $vss_win32_sdk"
3444 #define __MIDL_user_allocate_free_DEFINED__
3445 #include <inc/win2003/vss.h>
3446 int main(void) { return VSS_CTX_BACKUP; }
3448 if compile_prog
"$vss_win32_include" "" ; then
3449 guest_agent_with_vss
="yes"
3450 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
3451 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3452 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
3454 if test "$vss_win32_sdk" != "" ; then
3455 echo "ERROR: Please download and install Microsoft VSS SDK:"
3456 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3457 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3458 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3459 echo "ERROR: The headers are extracted in the directory \`inc'."
3460 feature_not_found
"VSS support"
3462 guest_agent_with_vss
="no"
3466 ##########################################
3467 # lookup Windows platform SDK (if not specified)
3468 # The SDK is needed only to build .tlb (type library) file of guest agent
3469 # VSS provider from the source. It is usually unnecessary because the
3470 # pre-compiled .tlb file is included.
3472 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
3473 test "$guest_agent_with_vss" = "yes" ; then
3474 if test -z "$win_sdk"; then
3475 programfiles
="$PROGRAMFILES"
3476 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
3477 if test -n "$programfiles"; then
3478 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
3480 feature_not_found
"Windows SDK"
3482 elif test "$win_sdk" = "no"; then
3487 ##########################################
3488 # check if mingw environment provides a recent ntddscsi.h
3489 if test "$mingw32" = "yes" && test "$guest_agent" != "no"; then
3491 #include <windows.h>
3492 #include <ntddscsi.h>
3494 #if !defined(IOCTL_SCSI_GET_ADDRESS)
3495 #error Missing required ioctl definitions
3497 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3501 if compile_prog
"" "" ; then
3502 guest_agent_ntddscsi
=yes
3503 libs_qga
="-lsetupapi -lcfgmgr32 $libs_qga"
3507 ##########################################
3511 auto | enabled | internal
)
3512 # Simpler to always update submodule, even if not needed.
3513 git_submodules
="${git_submodules} capstone"
3517 ##########################################
3518 # check if we have posix_syslog
3523 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
3525 if compile_prog
"" "" ; then
3529 ##########################################
3530 # check if trace backend exists
3532 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
3533 if test "$?" -ne 0 ; then
3534 error_exit
"invalid trace backends" \
3535 "Please choose supported trace backends."
3538 ##########################################
3539 # For 'ust' backend, test if ust headers are present
3540 if have_backend
"ust"; then
3541 if $pkg_config lttng-ust
--exists; then
3542 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
3544 error_exit
"Trace backend 'ust' missing lttng-ust header files"
3548 ##########################################
3549 # For 'dtrace' backend, test if 'dtrace' command is present
3550 if have_backend
"dtrace"; then
3551 if ! has
'dtrace' ; then
3552 error_exit
"dtrace command is not found in PATH $PATH"
3554 trace_backend_stap
="no"
3555 if has
'stap' ; then
3556 trace_backend_stap
="yes"
3558 # Workaround to avoid dtrace(1) producing a file with 'hidden' symbol
3559 # visibility. Define STAP_SDT_V2 to produce 'default' symbol visibility
3560 # instead. QEMU --enable-modules depends on this because the SystemTap
3561 # semaphores are linked into the main binary and not the module's shared
3563 QEMU_CFLAGS
="$QEMU_CFLAGS -DSTAP_SDT_V2"
3567 ##########################################
3568 # check and set a backend for coroutine
3570 # We prefer ucontext, but it's not always possible. The fallback
3571 # is sigcontext. On Windows the only valid backend is the Windows
3575 if test "$darwin" != "yes"; then
3577 #include <ucontext.h>
3578 #ifdef __stub_makecontext
3579 #error Ignoring glibc stub makecontext which will always fail
3581 int main(void) { makecontext(0, 0, 0); return 0; }
3583 if compile_prog
"" "" ; then
3588 if test "$coroutine" = ""; then
3589 if test "$mingw32" = "yes"; then
3591 elif test "$ucontext_works" = "yes"; then
3594 coroutine
=sigaltstack
3599 if test "$mingw32" != "yes"; then
3600 error_exit
"'windows' coroutine backend only valid for Windows"
3602 # Unfortunately the user visible backend name doesn't match the
3603 # coroutine-*.c filename for this case, so we have to adjust it here.
3607 if test "$ucontext_works" != "yes"; then
3608 feature_not_found
"ucontext"
3612 if test "$mingw32" = "yes"; then
3613 error_exit
"only the 'windows' coroutine backend is valid for Windows"
3617 error_exit
"unknown coroutine backend $coroutine"
3622 if test "$coroutine_pool" = ""; then
3626 if test "$debug_stack_usage" = "yes"; then
3627 if test "$coroutine_pool" = "yes"; then
3628 echo "WARN: disabling coroutine pool for stack usage debugging"
3633 ##################################################
3637 if test "$safe_stack" = "yes"; then
3639 int main(int argc, char *argv[])
3641 #if ! __has_feature(safe_stack)
3642 #error SafeStack Disabled
3647 flag
="-fsanitize=safe-stack"
3648 # Check that safe-stack is supported and enabled.
3649 if compile_prog
"-Werror $flag" "$flag"; then
3650 # Flag needed both at compilation and at linking
3651 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
3652 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
3654 error_exit
"SafeStack not supported by your compiler"
3656 if test "$coroutine" != "ucontext"; then
3657 error_exit
"SafeStack is only supported by the coroutine backend ucontext"
3661 int main(int argc, char *argv[])
3663 #if defined(__has_feature)
3664 #if __has_feature(safe_stack)
3665 #error SafeStack Enabled
3671 if test "$safe_stack" = "no"; then
3672 # Make sure that safe-stack is disabled
3673 if ! compile_prog
"-Werror" ""; then
3674 # SafeStack was already enabled, try to explicitly remove the feature
3675 flag
="-fno-sanitize=safe-stack"
3676 if ! compile_prog
"-Werror $flag" "$flag"; then
3677 error_exit
"Configure cannot disable SafeStack"
3679 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
3680 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
3682 else # "$safe_stack" = ""
3683 # Set safe_stack to yes or no based on pre-existing flags
3684 if compile_prog
"-Werror" ""; then
3688 if test "$coroutine" != "ucontext"; then
3689 error_exit
"SafeStack is only supported by the coroutine backend ucontext"
3695 ########################################
3696 # check if cpuid.h is usable.
3701 unsigned a, b, c, d;
3702 int max = __get_cpuid_max(0, 0);
3705 __cpuid(1, a, b, c, d);
3709 __cpuid_count(7, 0, a, b, c, d);
3715 if compile_prog
"" "" ; then
3719 ##########################################
3720 # avx2 optimization requirement check
3722 # There is no point enabling this if cpuid.h is not usable,
3723 # since we won't be able to select the new routines.
3725 if test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then
3727 #pragma GCC push_options
3728 #pragma GCC target("avx2")
3730 #include <immintrin.h>
3731 static int bar(void *a) {
3732 __m256i x = *(__m256i *)a;
3733 return _mm256_testz_si256(x, x);
3735 int main(int argc, char *argv[]) { return bar(argv[0]); }
3737 if compile_object
"-Werror" ; then
3744 ##########################################
3745 # avx512f optimization requirement check
3747 # There is no point enabling this if cpuid.h is not usable,
3748 # since we won't be able to select the new routines.
3749 # by default, it is turned off.
3750 # if user explicitly want to enable it, check environment
3752 if test "$cpuid_h" = "yes" && test "$avx512f_opt" = "yes"; then
3754 #pragma GCC push_options
3755 #pragma GCC target("avx512f")
3757 #include <immintrin.h>
3758 static int bar(void *a) {
3759 __m512i x = *(__m512i *)a;
3760 return _mm512_test_epi64_mask(x, x);
3762 int main(int argc, char *argv[])
3764 return bar(argv[0]);
3767 if ! compile_object
"-Werror" ; then
3774 ########################################
3775 # check if __[u]int128_t is usable.
3788 if compile_prog
"" "" ; then
3792 #########################################
3793 # See if 128-bit atomic operations are supported.
3796 if test "$int128" = "yes"; then
3800 unsigned __int128 x = 0, y = 0;
3801 y = __atomic_load(&x, 0);
3802 __atomic_store(&x, y, 0);
3803 __atomic_compare_exchange(&x, &y, x, 0, 0, 0);
3807 if compile_prog
"" "" ; then
3813 if test "$int128" = yes && test "$atomic128" = no
; then
3817 unsigned __int128 x = 0, y = 0;
3818 __sync_val_compare_and_swap_16(&x, y, x);
3822 if compile_prog
"" "" ; then
3827 #########################################
3828 # See if 64-bit atomic operations are supported.
3829 # Note that without __atomic builtins, we can only
3830 # assume atomic loads/stores max at pointer size.
3836 uint64_t x = 0, y = 0;
3837 y = __atomic_load_n(&x, __ATOMIC_RELAXED);
3838 __atomic_store_n(&x, y, __ATOMIC_RELAXED);
3839 __atomic_compare_exchange_n(&x, &y, x, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
3840 __atomic_exchange_n(&x, y, __ATOMIC_RELAXED);
3841 __atomic_fetch_add(&x, y, __ATOMIC_RELAXED);
3845 if compile_prog
"" "" ; then
3849 ########################################
3850 # check if getauxval is available.
3854 #include <sys/auxv.h>
3856 return getauxval(AT_HWCAP) == 0;
3859 if compile_prog
"" "" ; then
3863 ########################################
3864 # check if ccache is interfering with
3865 # semantic analysis of macros
3870 static const int Z = 1;
3871 #define fn() ({ Z; })
3872 #define TAUT(X) ((X) == Z)
3873 #define PAREN(X, Y) (X == Y)
3875 int main(int argc, char *argv[])
3881 if (PAREN(x, y)) return 0;
3882 if (TAUT(Z)) return 0;
3887 if ! compile_object
"-Werror"; then
3891 #################################################
3892 # clang does not support glibc + FORTIFY_SOURCE.
3894 if test "$fortify_source" != "no"; then
3895 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
3896 fortify_source
="no";
3897 elif test -n "$cxx" && has
$cxx &&
3898 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
3899 fortify_source
="no";
3901 fortify_source
="yes"
3905 ##########################################
3906 # check if struct fsxattr is available via linux/fs.h
3910 #include <linux/fs.h>
3916 if compile_prog
"" "" ; then
3920 ##########################################
3921 # check for usable membarrier system call
3922 if test "$membarrier" = "yes"; then
3924 if test "$mingw32" = "yes" ; then
3926 elif test "$linux" = "yes" ; then
3928 #include <linux/membarrier.h>
3929 #include <sys/syscall.h>
3933 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
3934 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
3938 if compile_prog
"" "" ; then
3942 if test "$have_membarrier" = "no"; then
3943 feature_not_found
"membarrier" "membarrier system call not available"
3946 # Do not enable it by default even for Mingw32, because it doesn't
3951 ##########################################
3952 # check for usable AF_VSOCK environment
3956 #include <sys/types.h>
3957 #include <sys/socket.h>
3958 #if !defined(AF_VSOCK)
3959 # error missing AF_VSOCK flag
3961 #include <linux/vm_sockets.h>
3964 struct sockaddr_vm svm;
3965 socklen_t len = sizeof(svm);
3966 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
3967 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
3968 if ((ret == -1) && (errno == ENOTCONN)) {
3974 if compile_prog
"" "" ; then
3978 ##########################################
3979 # check for usable AF_ALG environment
3983 #include <sys/types.h>
3984 #include <sys/socket.h>
3985 #include <linux/if_alg.h>
3988 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
3992 if compile_prog
"" "" ; then
3995 if test "$crypto_afalg" = "yes"
3997 if test "$have_afalg" != "yes"
3999 error_exit
"AF_ALG requested but could not be detected"
4004 ##########################################
4005 # checks for sanitizers
4009 have_asan_iface_h
=no
4010 have_asan_iface_fiber
=no
4012 if test "$sanitizers" = "yes" ; then
4014 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
4018 # we could use a simple skeleton for flags checks, but this also
4019 # detect the static linking issue of ubsan, see also:
4020 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
4024 void *tmp = malloc(10);
4026 return *(int *)(tmp + 2);
4031 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
4035 if check_include
"sanitizer/asan_interface.h" ; then
4036 have_asan_iface_h
=yes
4040 #include <sanitizer/asan_interface.h>
4042 __sanitizer_start_switch_fiber(0, 0, 0);
4046 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
4047 have_asan_iface_fiber
=yes
4051 # Thread sanitizer is, for now, much noisier than the other sanitizers;
4052 # keep it separate until that is not the case.
4053 if test "$tsan" = "yes" && test "$sanitizers" = "yes"; then
4054 error_exit
"TSAN is not supported with other sanitiziers."
4057 have_tsan_iface_fiber
=no
4058 if test "$tsan" = "yes" ; then
4060 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then
4064 #include <sanitizer/tsan_interface.h>
4066 __tsan_create_fiber(0);
4070 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then
4071 have_tsan_iface_fiber
=yes
4075 ##########################################
4079 auto | enabled | internal
)
4080 # Simpler to always update submodule, even if not needed.
4081 git_submodules
="${git_submodules} slirp"
4085 # Check for slirp smbd dupport
4086 : ${smbd=${SMBD-/usr/sbin/smbd}}
4087 if test "$slirp_smbd" != "no" ; then
4088 if test "$mingw32" = "yes" ; then
4089 if test "$slirp_smbd" = "yes" ; then
4090 error_exit
"Host smbd not supported on this platform."
4098 ##########################################
4099 # check for usable __NR_keyctl syscall
4101 if test "$linux" = "yes" ; then
4106 #include <asm/unistd.h>
4107 #include <linux/keyctl.h>
4110 return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0);
4113 if compile_prog
"" "" ; then
4117 if test "$secret_keyring" != "no"
4119 if test "$have_keyring" = "yes"
4123 if test "$secret_keyring" = "yes"
4125 error_exit
"syscall __NR_keyctl requested, \
4126 but not implemented on your system"
4133 ##########################################
4135 # After here, no more $cc or $ld runs
4139 if test "$gcov" = "yes" ; then
4141 elif test "$fortify_source" = "yes" ; then
4142 QEMU_CFLAGS
="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
4148 # Ensure there's only a single GP
4149 QEMU_CFLAGS
="-msmall-data $QEMU_CFLAGS"
4153 if test "$gprof" = "yes" ; then
4154 QEMU_CFLAGS
="-p $QEMU_CFLAGS"
4155 QEMU_LDFLAGS
="-p $QEMU_LDFLAGS"
4158 if test "$have_asan" = "yes"; then
4159 QEMU_CFLAGS
="-fsanitize=address $QEMU_CFLAGS"
4160 QEMU_LDFLAGS
="-fsanitize=address $QEMU_LDFLAGS"
4161 if test "$have_asan_iface_h" = "no" ; then
4162 echo "ASAN build enabled, but ASAN header missing." \
4163 "Without code annotation, the report may be inferior."
4164 elif test "$have_asan_iface_fiber" = "no" ; then
4165 echo "ASAN build enabled, but ASAN header is too old." \
4166 "Without code annotation, the report may be inferior."
4169 if test "$have_tsan" = "yes" ; then
4170 if test "$have_tsan_iface_fiber" = "yes" ; then
4171 QEMU_CFLAGS
="-fsanitize=thread $QEMU_CFLAGS"
4172 QEMU_LDFLAGS
="-fsanitize=thread $QEMU_LDFLAGS"
4174 error_exit
"Cannot enable TSAN due to missing fiber annotation interface."
4176 elif test "$tsan" = "yes" ; then
4177 error_exit
"Cannot enable TSAN due to missing sanitize thread interface."
4179 if test "$have_ubsan" = "yes"; then
4180 QEMU_CFLAGS
="-fsanitize=undefined $QEMU_CFLAGS"
4181 QEMU_LDFLAGS
="-fsanitize=undefined $QEMU_LDFLAGS"
4184 ##########################################
4186 # Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
4187 if test "$solaris" = "no" && test "$tsan" = "no"; then
4188 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
4189 QEMU_LDFLAGS
="-Wl,--warn-common $QEMU_LDFLAGS"
4193 # Use ASLR, no-SEH and DEP if available
4194 if test "$mingw32" = "yes" ; then
4195 flags
="--no-seh --nxcompat"
4197 # Disable ASLR for debug builds to allow debugging with gdb
4198 if test "$debug" = "no" ; then
4199 flags
="--dynamicbase $flags"
4202 for flag
in $flags; do
4203 if ld_has
$flag ; then
4204 QEMU_LDFLAGS
="-Wl,$flag $QEMU_LDFLAGS"
4209 # Probe for guest agent support/options
4211 if [ "$guest_agent" != "no" ]; then
4212 if [ "$softmmu" = no
-a "$want_tools" = no
] ; then
4214 elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4216 elif [ "$guest_agent" != yes ]; then
4219 error_exit
"Guest agent is not supported on this platform"
4223 # Guest agent Windows MSI package
4225 if test "$QEMU_GA_MANUFACTURER" = ""; then
4226 QEMU_GA_MANUFACTURER
=QEMU
4228 if test "$QEMU_GA_DISTRO" = ""; then
4229 QEMU_GA_DISTRO
=Linux
4231 if test "$QEMU_GA_VERSION" = ""; then
4232 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
4235 QEMU_GA_MSI_MINGW_DLL_PATH
="$($pkg_config --variable=prefix glib-2.0)/bin"
4237 # Mac OS X ships with a broken assembler
4239 if { test "$cpu" = "i386" ||
test "$cpu" = "x86_64"; } && \
4240 test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \
4241 test "$targetos" != "Haiku" && test "$softmmu" = yes ; then
4242 # Different host OS linkers have different ideas about the name of the ELF
4243 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
4244 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
4245 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
4246 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
4247 ld_i386_emulation
="$emu"
4254 # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
4255 # or -march=z10 (which is the lowest architecture level that Clang supports)
4256 if test "$cpu" = "s390x" ; then
4258 compile_prog
"-march=z900" ""
4260 if [ $has_z900 = 0 ] || compile_object
"-march=z10 -msoft-float -Werror"; then
4261 if [ $has_z900 != 0 ]; then
4262 echo "WARNING: Your compiler does not support the z900!"
4263 echo " The s390-ccw bios will only work with guest CPUs >= z10."
4265 roms
="$roms s390-ccw"
4266 # SLOF is required for building the s390-ccw firmware on s390x,
4267 # since it is using the libnet code from SLOF for network booting.
4268 git_submodules
="${git_submodules} roms/SLOF"
4272 # Check that the C++ compiler exists and works with the C compiler.
4273 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
4276 int c_function(void);
4277 int main(void) { return c_function(); }
4284 int c_function(void);
4286 int c_function(void) { return 42; }
4291 if do_cxx
$CXXFLAGS $CONFIGURE_CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
4292 # C++ compiler $cxx works ok with C compiler $cc
4295 echo "C++ compiler $cxx does not work with C compiler $cc"
4296 echo "Disabling C++ specific optional code"
4300 echo "No C++ compiler available; disabling C++ specific optional code"
4304 if !(GIT
="$git" "$source_path/scripts/git-submodule.sh" "$git_submodules_action" "$git_submodules"); then
4308 config_host_mak
="config-host.mak"
4310 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4311 echo >> $config_host_mak
4313 echo all
: >> $config_host_mak
4314 echo "GIT=$git" >> $config_host_mak
4315 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
4316 echo "GIT_SUBMODULES_ACTION=$git_submodules_action" >> $config_host_mak
4318 echo "ARCH=$ARCH" >> $config_host_mak
4320 if test "$debug_tcg" = "yes" ; then
4321 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4323 if test "$strip_opt" = "yes" ; then
4324 echo "STRIP=${strip}" >> $config_host_mak
4326 if test "$bigendian" = "yes" ; then
4327 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4329 if test "$mingw32" = "yes" ; then
4330 echo "CONFIG_WIN32=y" >> $config_host_mak
4331 if test "$guest_agent_with_vss" = "yes" ; then
4332 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4333 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
4334 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4336 if test "$guest_agent_ntddscsi" = "yes" ; then
4337 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
4339 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4340 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4341 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4342 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4344 echo "CONFIG_POSIX=y" >> $config_host_mak
4347 if test "$linux" = "yes" ; then
4348 echo "CONFIG_LINUX=y" >> $config_host_mak
4351 if test "$darwin" = "yes" ; then
4352 echo "CONFIG_DARWIN=y" >> $config_host_mak
4355 if test "$solaris" = "yes" ; then
4356 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4358 if test "$haiku" = "yes" ; then
4359 echo "CONFIG_HAIKU=y" >> $config_host_mak
4361 if test "$static" = "yes" ; then
4362 echo "CONFIG_STATIC=y" >> $config_host_mak
4364 if test "$profiler" = "yes" ; then
4365 echo "CONFIG_PROFILER=y" >> $config_host_mak
4367 if test "$want_tools" = "yes" ; then
4368 echo "CONFIG_TOOLS=y" >> $config_host_mak
4370 if test "$guest_agent" = "yes" ; then
4371 echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak
4373 if test "$slirp_smbd" = "yes" ; then
4374 echo "CONFIG_SLIRP_SMBD=y" >> $config_host_mak
4375 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4377 if test "$vde" = "yes" ; then
4378 echo "CONFIG_VDE=y" >> $config_host_mak
4379 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
4381 if test "$netmap" = "yes" ; then
4382 echo "CONFIG_NETMAP=y" >> $config_host_mak
4384 if test "$l2tpv3" = "yes" ; then
4385 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4387 if test "$gprof" = "yes" ; then
4388 echo "CONFIG_GPROF=y" >> $config_host_mak
4390 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4391 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4392 if test "$block_drv_whitelist_tools" = "yes" ; then
4393 echo "CONFIG_BDRV_WHITELIST_TOOLS=y" >> $config_host_mak
4395 if test "$xfs" = "yes" ; then
4396 echo "CONFIG_XFS=y" >> $config_host_mak
4398 qemu_version
=$
(head $source_path/VERSION
)
4399 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4400 echo "SRC_PATH=$source_path" >> $config_host_mak
4401 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4402 if test "$modules" = "yes"; then
4403 # $shacmd can generate a hash started with digit, which the compiler doesn't
4404 # like as an symbol. So prefix it with an underscore
4405 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
4406 echo "CONFIG_MODULES=y" >> $config_host_mak
4408 if test "$module_upgrades" = "yes"; then
4409 echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak
4411 if test "$have_usbfs" = "yes" ; then
4412 echo "CONFIG_USBFS=y" >> $config_host_mak
4414 if test "$gio" = "yes" ; then
4415 echo "CONFIG_GIO=y" >> $config_host_mak
4416 echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
4417 echo "GIO_LIBS=$gio_libs" >> $config_host_mak
4419 if test "$gdbus_codegen" != "" ; then
4420 echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak
4422 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
4424 # Work around a system header bug with some kernel/XFS header
4425 # versions where they both try to define 'struct fsxattr':
4426 # xfs headers will not try to redefine structs from linux headers
4427 # if this macro is set.
4428 if test "$have_fsxattr" = "yes" ; then
4429 echo "HAVE_FSXATTR=y" >> $config_host_mak
4431 if test "$xen" = "enabled" ; then
4432 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4433 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4434 echo "XEN_CFLAGS=$xen_cflags" >> $config_host_mak
4435 echo "XEN_LIBS=$xen_libs" >> $config_host_mak
4437 if test "$linux_aio" = "yes" ; then
4438 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4440 if test "$vhost_scsi" = "yes" ; then
4441 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4443 if test "$vhost_net" = "yes" ; then
4444 echo "CONFIG_VHOST_NET=y" >> $config_host_mak
4446 if test "$vhost_net_user" = "yes" ; then
4447 echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak
4449 if test "$vhost_net_vdpa" = "yes" ; then
4450 echo "CONFIG_VHOST_NET_VDPA=y" >> $config_host_mak
4452 if test "$vhost_crypto" = "yes" ; then
4453 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
4455 if test "$vhost_vsock" = "yes" ; then
4456 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
4457 if test "$vhost_user" = "yes" ; then
4458 echo "CONFIG_VHOST_USER_VSOCK=y" >> $config_host_mak
4461 if test "$vhost_kernel" = "yes" ; then
4462 echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak
4464 if test "$vhost_user" = "yes" ; then
4465 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
4467 if test "$vhost_vdpa" = "yes" ; then
4468 echo "CONFIG_VHOST_VDPA=y" >> $config_host_mak
4470 if test "$vhost_user_fs" = "yes" ; then
4471 echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
4473 if test "$iovec" = "yes" ; then
4474 echo "CONFIG_IOVEC=y" >> $config_host_mak
4476 if test "$membarrier" = "yes" ; then
4477 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
4479 if test "$tcg" = "enabled" -a "$tcg_interpreter" = "true" ; then
4480 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4483 if test "$spice_protocol" = "yes" ; then
4484 echo "CONFIG_SPICE_PROTOCOL=y" >> $config_host_mak
4485 echo "SPICE_PROTOCOL_CFLAGS=$spice_protocol_cflags" >> $config_host_mak
4487 if test "$spice" = "yes" ; then
4488 echo "CONFIG_SPICE=y" >> $config_host_mak
4489 echo "SPICE_CFLAGS=$spice_cflags $spice_protocol_cflags" >> $config_host_mak
4490 echo "SPICE_LIBS=$spice_libs" >> $config_host_mak
4493 if test "$opengl" = "yes" ; then
4494 echo "CONFIG_OPENGL=y" >> $config_host_mak
4495 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4496 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4499 if test "$avx2_opt" = "yes" ; then
4500 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
4503 if test "$avx512f_opt" = "yes" ; then
4504 echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
4507 # XXX: suppress that
4508 if [ "$bsd" = "yes" ] ; then
4509 echo "CONFIG_BSD=y" >> $config_host_mak
4512 if test "$qom_cast_debug" = "yes" ; then
4513 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4516 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4517 if test "$coroutine_pool" = "yes" ; then
4518 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4520 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4523 if test "$debug_stack_usage" = "yes" ; then
4524 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
4527 if test "$crypto_afalg" = "yes" ; then
4528 echo "CONFIG_AF_ALG=y" >> $config_host_mak
4531 if test "$have_asan_iface_fiber" = "yes" ; then
4532 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
4535 if test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then
4536 echo "CONFIG_TSAN=y" >> $config_host_mak
4539 if test "$cpuid_h" = "yes" ; then
4540 echo "CONFIG_CPUID_H=y" >> $config_host_mak
4543 if test "$int128" = "yes" ; then
4544 echo "CONFIG_INT128=y" >> $config_host_mak
4547 if test "$atomic128" = "yes" ; then
4548 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
4551 if test "$cmpxchg128" = "yes" ; then
4552 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
4555 if test "$atomic64" = "yes" ; then
4556 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
4559 if test "$getauxval" = "yes" ; then
4560 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
4563 if test "$libssh" = "yes" ; then
4564 echo "CONFIG_LIBSSH=y" >> $config_host_mak
4565 echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
4566 echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak
4569 if test "$live_block_migration" = "yes" ; then
4570 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
4573 if test "$tpm" = "yes"; then
4574 echo 'CONFIG_TPM=y' >> $config_host_mak
4577 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
4578 if have_backend
"nop"; then
4579 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
4581 if have_backend
"simple"; then
4582 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
4584 if have_backend
"log"; then
4585 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
4587 if have_backend
"ust"; then
4588 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
4589 echo "LTTNG_UST_LIBS=$lttng_ust_libs" >> $config_host_mak
4591 if have_backend
"dtrace"; then
4592 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
4593 if test "$trace_backend_stap" = "yes" ; then
4594 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
4597 if have_backend
"ftrace"; then
4598 if test "$linux" = "yes" ; then
4599 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
4601 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
4604 if have_backend
"syslog"; then
4605 if test "$posix_syslog" = "yes" ; then
4606 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
4608 feature_not_found
"syslog(trace backend)" "syslog not available"
4611 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
4613 if test "$rdma" = "yes" ; then
4614 echo "CONFIG_RDMA=y" >> $config_host_mak
4615 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
4618 if test "$pvrdma" = "yes" ; then
4619 echo "CONFIG_PVRDMA=y" >> $config_host_mak
4622 if test "$replication" = "yes" ; then
4623 echo "CONFIG_REPLICATION=y" >> $config_host_mak
4626 if test "$have_af_vsock" = "yes" ; then
4627 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
4630 if test "$debug_mutex" = "yes" ; then
4631 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
4634 # Hold two types of flag:
4635 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
4636 # a thread we have a handle to
4637 # CONFIG_PTHREAD_SETNAME_NP_W_TID - A way of doing it on a particular
4639 if test "$pthread_setname_np_w_tid" = "yes" ; then
4640 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
4641 echo "CONFIG_PTHREAD_SETNAME_NP_W_TID=y" >> $config_host_mak
4642 elif test "$pthread_setname_np_wo_tid" = "yes" ; then
4643 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
4644 echo "CONFIG_PTHREAD_SETNAME_NP_WO_TID=y" >> $config_host_mak
4647 if test "$bochs" = "yes" ; then
4648 echo "CONFIG_BOCHS=y" >> $config_host_mak
4650 if test "$cloop" = "yes" ; then
4651 echo "CONFIG_CLOOP=y" >> $config_host_mak
4653 if test "$dmg" = "yes" ; then
4654 echo "CONFIG_DMG=y" >> $config_host_mak
4656 if test "$qcow1" = "yes" ; then
4657 echo "CONFIG_QCOW1=y" >> $config_host_mak
4659 if test "$vdi" = "yes" ; then
4660 echo "CONFIG_VDI=y" >> $config_host_mak
4662 if test "$vvfat" = "yes" ; then
4663 echo "CONFIG_VVFAT=y" >> $config_host_mak
4665 if test "$qed" = "yes" ; then
4666 echo "CONFIG_QED=y" >> $config_host_mak
4668 if test "$parallels" = "yes" ; then
4669 echo "CONFIG_PARALLELS=y" >> $config_host_mak
4671 if test "$have_mlockall" = "yes" ; then
4672 echo "HAVE_MLOCKALL=y" >> $config_host_mak
4675 if test "$plugins" = "yes" ; then
4676 echo "CONFIG_PLUGIN=y" >> $config_host_mak
4677 # Copy the export object list to the build dir
4678 if test "$ld_dynamic_list" = "yes" ; then
4679 echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak
4680 ld_symbols
=qemu-plugins-ld.symbols
4681 cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols
4682 elif test "$ld_exported_symbols_list" = "yes" ; then
4683 echo "CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST=yes" >> $config_host_mak
4684 ld64_symbols
=qemu-plugins-ld64.symbols
4685 echo "# Automatically generated by configure - do not modify" > $ld64_symbols
4686 grep 'qemu_' "$source_path/plugins/qemu-plugins.symbols" |
sed 's/;//g' | \
4687 sed -E 's/^[[:space:]]*(.*)/_\1/' >> $ld64_symbols
4690 "If \$plugins=yes, either \$ld_dynamic_list or " \
4691 "\$ld_exported_symbols_list should have been set to 'yes'."
4695 if test -n "$gdb_bin"; then
4696 gdb_version
=$
($gdb_bin --version |
head -n 1)
4697 if version_ge
${gdb_version##* } 9.1; then
4698 echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak
4702 if test "$secret_keyring" = "yes" ; then
4703 echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak
4706 echo "ROMS=$roms" >> $config_host_mak
4707 echo "MAKE=$make" >> $config_host_mak
4708 echo "PYTHON=$python" >> $config_host_mak
4709 echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
4710 echo "MESON=$meson" >> $config_host_mak
4711 echo "NINJA=$ninja" >> $config_host_mak
4712 echo "CC=$cc" >> $config_host_mak
4713 echo "HOST_CC=$host_cc" >> $config_host_mak
4714 if $iasl -h > /dev
/null
2>&1; then
4715 echo "CONFIG_IASL=$iasl" >> $config_host_mak
4717 echo "AR=$ar" >> $config_host_mak
4718 echo "AS=$as" >> $config_host_mak
4719 echo "CCAS=$ccas" >> $config_host_mak
4720 echo "CPP=$cpp" >> $config_host_mak
4721 echo "OBJCOPY=$objcopy" >> $config_host_mak
4722 echo "LD=$ld" >> $config_host_mak
4723 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
4724 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
4725 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
4726 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4727 echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
4728 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
4729 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
4730 echo "EXESUF=$EXESUF" >> $config_host_mak
4731 echo "HOST_DSOSUF=$HOST_DSOSUF" >> $config_host_mak
4732 echo "LIBS_QGA=$libs_qga" >> $config_host_mak
4733 if test "$gcov" = "yes" ; then
4734 echo "CONFIG_GCOV=y" >> $config_host_mak
4737 if test "$rng_none" = "yes"; then
4738 echo "CONFIG_RNG_NONE=y" >> $config_host_mak
4741 # use included Linux headers
4742 if test "$linux" = "yes" ; then
4743 mkdir
-p linux-headers
4761 # For most CPUs the kernel architecture name and QEMU CPU name match.
4765 # For non-KVM architectures we will not have asm headers
4766 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
4767 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
4771 for target
in $target_list; do
4772 target_dir
="$target"
4773 target_name
=$
(echo $target | cut
-d '-' -f 1)
4774 mkdir
-p $target_dir
4776 *-user) symlink
"../qemu-$target_name" "$target_dir/qemu-$target_name" ;;
4777 *) symlink
"../qemu-system-$target_name" "$target_dir/qemu-system-$target_name" ;;
4781 echo "CONFIG_QEMU_INTERP_PREFIX=$interp_prefix" |
sed 's/%M/@0@/' >> $config_host_mak
4782 if test "$default_targets" = "yes"; then
4783 echo "CONFIG_DEFAULT_TARGETS=y" >> $config_host_mak
4786 if test "$numa" = "yes"; then
4787 echo "CONFIG_NUMA=y" >> $config_host_mak
4788 echo "NUMA_LIBS=$numa_libs" >> $config_host_mak
4791 if test "$ccache_cpp2" = "yes"; then
4792 echo "export CCACHE_CPP2=y" >> $config_host_mak
4795 if test "$safe_stack" = "yes"; then
4796 echo "CONFIG_SAFESTACK=y" >> $config_host_mak
4799 # If we're using a separate build tree, set it up now.
4800 # DIRS are directories which we simply mkdir in the build tree;
4801 # LINKS are things to symlink back into the source tree
4802 # (these can be both files and directories).
4803 # Caution: do not add files or directories here using wildcards. This
4804 # will result in problems later if a new file matching the wildcard is
4805 # added to the source tree -- nothing will cause configure to be rerun
4806 # so the build tree will be missing the link back to the new file, and
4807 # tests might fail. Prefer to keep the relevant files in their own
4808 # directory and symlink the directory instead.
4809 # UNLINK is used to remove symlinks from older development versions
4810 # that might get into the way when doing "git update" without doing
4811 # a "make distclean" in between.
4812 DIRS
="tests tests/tcg tests/qapi-schema tests/qtest/libqos"
4813 DIRS
="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
4814 DIRS
="$DIRS docs docs/interop fsdev scsi"
4815 DIRS
="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
4816 DIRS
="$DIRS roms/seabios"
4817 DIRS
="$DIRS contrib/plugins/"
4819 LINKS
="$LINKS tests/tcg/Makefile.target"
4820 LINKS
="$LINKS pc-bios/optionrom/Makefile"
4821 LINKS
="$LINKS pc-bios/s390-ccw/Makefile"
4822 LINKS
="$LINKS roms/seabios/Makefile"
4823 LINKS
="$LINKS pc-bios/qemu-icon.bmp"
4824 LINKS
="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
4825 LINKS
="$LINKS tests/acceptance tests/data"
4826 LINKS
="$LINKS tests/qemu-iotests/check"
4827 LINKS
="$LINKS python"
4828 LINKS
="$LINKS contrib/plugins/Makefile "
4829 UNLINK
="pc-bios/keymaps"
4831 $source_path/pc-bios
/*.bin \
4832 $source_path/pc-bios
/*.elf \
4833 $source_path/pc-bios
/*.lid \
4834 $source_path/pc-bios
/*.rom \
4835 $source_path/pc-bios
/*.dtb \
4836 $source_path/pc-bios
/*.img \
4837 $source_path/pc-bios
/openbios-
* \
4838 $source_path/pc-bios
/u-boot.
* \
4839 $source_path/pc-bios
/edk2-
*.fd.bz2 \
4840 $source_path/pc-bios
/palcode-
* \
4841 $source_path/pc-bios
/qemu_vga.ndrv
4844 LINKS
="$LINKS pc-bios/$(basename $bios_file)"
4847 for f
in $LINKS ; do
4848 if [ -e "$source_path/$f" ]; then
4849 symlink
"$source_path/$f" "$f"
4852 for f
in $UNLINK ; do
4853 if [ -L "$f" ]; then
4858 (for i
in $cross_cc_vars; do
4861 export target_list source_path use_containers ARCH
4862 $source_path/tests
/tcg
/configure.sh
)
4864 # temporary config to build submodules
4865 for rom
in seabios
; do
4866 config_mak
=roms
/$rom/config.mak
4867 echo "# Automatically generated by configure - do not modify" > $config_mak
4868 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
4869 echo "AS=$as" >> $config_mak
4870 echo "CCAS=$ccas" >> $config_mak
4871 echo "CC=$cc" >> $config_mak
4872 echo "BCC=bcc" >> $config_mak
4873 echo "CPP=$cpp" >> $config_mak
4874 echo "OBJCOPY=objcopy" >> $config_mak
4875 echo "IASL=$iasl" >> $config_mak
4876 echo "LD=$ld" >> $config_mak
4877 echo "RANLIB=$ranlib" >> $config_mak
4880 if test "$skip_meson" = no
; then
4881 cross
="config-meson.cross.new"
4883 echo "'$(echo $* | sed "s
/ /','/g
")'"
4886 echo "# Automatically generated by configure - do not modify" > $cross
4887 echo "[properties]" >> $cross
4889 # unroll any custom device configs
4890 for a
in $device_archs; do
4891 eval "c=\$devices_${a}"
4892 echo "${a}-softmmu = '$c'" >> $cross
4895 test -z "$cxx" && echo "link_language = 'c'" >> $cross
4896 echo "[built-in options]" >> $cross
4897 echo "c_args = [${CFLAGS:+$(meson_quote $CFLAGS)}]" >> $cross
4898 echo "cpp_args = [${CXXFLAGS:+$(meson_quote $CXXFLAGS)}]" >> $cross
4899 echo "c_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
4900 echo "cpp_link_args = [${LDFLAGS:+$(meson_quote $LDFLAGS)}]" >> $cross
4901 echo "[binaries]" >> $cross
4902 echo "c = [$(meson_quote $cc $CPU_CFLAGS)]" >> $cross
4903 test -n "$cxx" && echo "cpp = [$(meson_quote $cxx $CPU_CFLAGS)]" >> $cross
4904 test -n "$objcc" && echo "objc = [$(meson_quote $objcc $CPU_CFLAGS)]" >> $cross
4905 echo "ar = [$(meson_quote $ar)]" >> $cross
4906 echo "nm = [$(meson_quote $nm)]" >> $cross
4907 echo "pkgconfig = [$(meson_quote $pkg_config_exe)]" >> $cross
4908 echo "ranlib = [$(meson_quote $ranlib)]" >> $cross
4909 if has
$sdl2_config; then
4910 echo "sdl2-config = [$(meson_quote $sdl2_config)]" >> $cross
4912 echo "strip = [$(meson_quote $strip)]" >> $cross
4913 echo "windres = [$(meson_quote $windres)]" >> $cross
4914 if test "$cross_compile" = "yes"; then
4915 cross_arg
="--cross-file config-meson.cross"
4916 echo "[host_machine]" >> $cross
4917 if test "$mingw32" = "yes" ; then
4918 echo "system = 'windows'" >> $cross
4920 if test "$linux" = "yes" ; then
4921 echo "system = 'linux'" >> $cross
4923 if test "$darwin" = "yes" ; then
4924 echo "system = 'darwin'" >> $cross
4928 echo "cpu_family = 'x86'" >> $cross
4931 echo "cpu_family = 'x86_64'" >> $cross
4934 echo "cpu_family = 'ppc64'" >> $cross
4937 echo "cpu_family = '$ARCH'" >> $cross
4940 echo "cpu = '$cpu'" >> $cross
4941 if test "$bigendian" = "yes" ; then
4942 echo "endian = 'big'" >> $cross
4944 echo "endian = 'little'" >> $cross
4947 cross_arg
="--native-file config-meson.cross"
4949 mv $cross config-meson.cross
4951 rm -rf meson-private meson-info meson-logs
4952 NINJA
=$ninja $meson setup \
4953 --prefix "$prefix" \
4954 --libdir "$libdir" \
4955 --libexecdir "$libexecdir" \
4956 --bindir "$bindir" \
4957 --includedir "$includedir" \
4958 --datadir "$datadir" \
4959 --mandir "$mandir" \
4960 --sysconfdir "$sysconfdir" \
4961 --localedir "$localedir" \
4962 --localstatedir "$local_statedir" \
4963 -Ddocdir="$docdir" \
4964 -Dqemu_firmwarepath="$firmwarepath" \
4965 -Dqemu_suffix="$qemu_suffix" \
4966 -Doptimization=$
(if test "$debug" = yes; then echo 0; else echo 2; fi) \
4967 -Ddebug=$
(if test "$debug_info" = yes; then echo true
; else echo false
; fi) \
4968 -Dwerror=$
(if test "$werror" = yes; then echo true
; else echo false
; fi) \
4969 -Dstrip=$
(if test "$strip_opt" = yes; then echo true
; else echo false
; fi) \
4970 -Db_pie=$
(if test "$pie" = yes; then echo true
; else echo false
; fi) \
4971 -Db_coverage=$
(if test "$gcov" = yes; then echo true
; else echo false
; fi) \
4972 -Db_lto=$lto -Dcfi=$cfi -Dcfi_debug=$cfi_debug -Dfuzzing=$fuzzing \
4973 $
(test -n "${LIB_FUZZING_ENGINE+xxx}" && echo "-Dfuzzing_engine=$LIB_FUZZING_ENGINE") \
4974 -Dmalloc=$malloc -Dmalloc_trim=$malloc_trim -Dsparse=$sparse \
4975 -Dkvm=$kvm -Dhax=$hax -Dwhpx=$whpx -Dhvf=$hvf -Dnvmm=$nvmm \
4976 -Dxen=$xen -Dxen_pci_passthrough=$xen_pci_passthrough -Dtcg=$tcg \
4977 -Dcocoa=$cocoa -Dgtk=$gtk -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
4978 -Dlibusb=$libusb -Dsmartcard=$smartcard -Dusb_redir=$usb_redir -Dvte=$vte \
4979 -Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
4980 -Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f -Dvirtiofsd=$virtiofsd \
4981 -Dcapstone=$capstone -Dslirp=$slirp -Dfdt=$fdt -Dbrlapi=$brlapi \
4982 -Dcurl=$curl -Dglusterfs=$glusterfs -Dbzip2=$bzip2 -Dlibiscsi=$libiscsi \
4983 -Dlibnfs=$libnfs -Diconv=$iconv -Dcurses=$curses -Dlibudev=$libudev\
4984 -Drbd=$rbd -Dlzo=$lzo -Dsnappy=$snappy -Dlzfse=$lzfse -Dlibxml2=$libxml2 \
4985 -Dlibdaxctl=$libdaxctl -Dlibpmem=$libpmem -Dlinux_io_uring=$linux_io_uring \
4986 -Dgnutls=$gnutls -Dnettle=$nettle -Dgcrypt=$gcrypt -Dauth_pam=$auth_pam \
4987 -Dzstd=$zstd -Dseccomp=$seccomp -Dvirtfs=$virtfs -Dcap_ng=$cap_ng \
4988 -Dattr=$attr -Ddefault_devices=$default_devices -Dvirglrenderer=$virglrenderer \
4989 -Ddocs=$docs -Dsphinx_build=$sphinx_build -Dinstall_blobs=$blobs \
4990 -Dvhost_user_blk_server=$vhost_user_blk_server -Dmultiprocess=$multiprocess \
4991 -Dfuse=$fuse -Dfuse_lseek=$fuse_lseek -Dguest_agent_msi=$guest_agent_msi -Dbpf=$bpf\
4992 $
(if test "$default_feature" = no
; then echo "-Dauto_features=disabled"; fi) \
4993 -Dalsa=$alsa -Dcoreaudio=$coreaudio -Ddsound=$dsound -Djack=$jack -Doss=$oss \
4994 -Dpa=$pa -Daudio_drv_list=$audio_drv_list -Dtcg_interpreter=$tcg_interpreter \
4996 "$PWD" "$source_path"
4998 if test "$?" -ne 0 ; then
4999 error_exit
"meson setup failed"
5002 if test -f meson-private
/cmd_line.txt
; then
5003 # Adjust old command line options whose type was changed
5004 # Avoids having to use "setup --wipe" when Meson is upgraded
5006 s/^gettext = true$/gettext = auto/;
5007 s/^gettext = false$/gettext = disabled/;
5008 /^b_staticpic/ && next;
5009 print;' meson-private
/cmd_line.txt
5013 if test -n "${deprecated_features}"; then
5014 echo "Warning, deprecated features enabled."
5015 echo "Please see docs/about/deprecated.rst"
5016 echo " features: ${deprecated_features}"
5019 # Create list of config switches that should be poisoned in common code...
5020 # but filter out CONFIG_TCG and CONFIG_USER_ONLY which are special.
5021 target_configs_h
=$
(ls *-config-devices.h
*-config-target.h
2>/dev
/null
)
5022 if test -n "$target_configs_h" ; then
5023 sed -n -e '/CONFIG_TCG/d' -e '/CONFIG_USER_ONLY/d' \
5024 -e '/^#define / { s///; s/ .*//; s/^/#pragma GCC poison /p; }' \
5025 $target_configs_h |
sort -u > config-poison.h
5030 # Save the configure command line for later reuse.
5031 cat <<EOD >config.status
5033 # Generated by configure.
5034 # Run this file to recreate the current configuration.
5035 # Compiler output produced by configure, useful for debugging
5036 # configure, is in config.log if it exists.
5042 eval envval
=\$
$envname
5044 if test -n "$envval"
5046 echo "$envname='$envval'" >> config.status
5047 echo "export $envname" >> config.status
5049 echo "unset $envname" >> config.status
5053 # Preserve various env variables that influence what
5054 # features/build target configure will detect
5060 preserve_env INSTALL
5062 preserve_env LD_LIBRARY_PATH
5063 preserve_env LIBTOOL
5066 preserve_env OBJCOPY
5068 preserve_env PKG_CONFIG
5069 preserve_env PKG_CONFIG_LIBDIR
5070 preserve_env PKG_CONFIG_PATH
5072 preserve_env SDL2_CONFIG
5075 preserve_env WINDRES
5077 printf "exec" >>config.status
5078 for i
in "$0" "$@"; do
5079 test "$i" = --skip-meson ||
printf " %s" "$(quote_sh "$i")" >>config.status
5081 echo ' "$@"' >>config.status
5082 chmod +x config.status