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
="-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 $EXTRA_CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
183 do_cc
$CFLAGS $EXTRA_CFLAGS $CONFIGURE_CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC \
184 $LDFLAGS $EXTRA_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 eval test -z '"${1#'"$2"'}"'
224 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
227 if printf %s
\\n
"$source_path" "$PWD" |
grep -q "[[:space:]:]";
229 error_exit
"main directory cannot contain spaces nor colons"
235 interp_prefix
="/usr/gnemul/qemu-%M"
239 audio_drv_list
="default"
240 block_drv_rw_whitelist
=""
241 block_drv_ro_whitelist
=""
242 block_drv_whitelist_tools
="no"
250 gdb_bin
=$
(command -v "gdb-multiarch" ||
command -v "gdb")
252 if test -e "$source_path/.git"
254 git_submodules_action
="update"
256 git_submodules_action
="ignore"
259 git_submodules
="ui/keycodemapdb"
262 # Don't accept a target_list environment variable.
264 unset target_list_exclude
266 # Default value for a variable defining feature "foo".
267 # * foo="no" feature will only be used if --enable-foo arg is given
268 # * foo="" feature will be searched for, and if found, will be used
269 # unless --disable-foo is given
270 # * foo="yes" this value will only be set by --enable-foo flag.
271 # feature will searched for,
272 # if not found, configure exits with error
274 # Always add --enable-foo and --disable-foo command line args.
275 # Distributions want to ensure that several features are compiled in, and it
276 # is impossible without a --enable-foo that exits if a feature is not found.
279 # parse CC options second
281 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
283 --without-default-features)
293 xen_ctrl_version
="$default_feature"
294 xfs
="$default_feature"
295 membarrier
="$default_feature"
296 vhost_kernel
="$default_feature"
297 vhost_net
="$default_feature"
298 vhost_crypto
="$default_feature"
299 vhost_scsi
="$default_feature"
300 vhost_vsock
="$default_feature"
302 vhost_user_fs
="$default_feature"
303 vhost_vdpa
="$default_feature"
304 rdma
="$default_feature"
305 pvrdma
="$default_feature"
311 fortify_source
="$default_feature"
332 opengl
="$default_feature"
334 avx2_opt
="$default_feature"
335 guest_agent
="$default_feature"
336 guest_agent_with_vss
="no"
337 guest_agent_ntddscsi
="no"
338 vss_win32_sdk
="$default_feature"
340 want_tools
="$default_feature"
342 coroutine_pool
="$default_feature"
343 debug_stack_usage
="no"
345 tls_priority
="NORMAL"
346 tpm
="$default_feature"
347 libssh
="$default_feature"
348 live_block_migration
=${default_feature:-yes}
349 numa
="$default_feature"
350 replication
=${default_feature:-yes}
351 bochs
=${default_feature:-yes}
352 cloop
=${default_feature:-yes}
353 dmg
=${default_feature:-yes}
354 qcow1
=${default_feature:-yes}
355 vdi
=${default_feature:-yes}
356 vvfat
=${default_feature:-yes}
357 qed
=${default_feature:-yes}
358 parallels
=${default_feature:-yes}
360 plugins
="$default_feature"
362 secret_keyring
="$default_feature"
366 gio
="$default_feature"
368 slirp_smbd
="$default_feature"
370 # The following Meson options are handled manually (still they
371 # are included in the automatically generated help message)
373 # 1. Track which submodules are needed
378 # 2. Support --with/--without option
379 default_devices
="true"
381 # 3. Automatically enable/disable other options
385 # 4. Detection partly done in configure
386 xen
=${default_feature:+disabled}
388 # parse CC options second
390 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
392 --cross-prefix=*) cross_prefix
="$optarg"
397 --cxx=*) CXX
="$optarg"
399 --cpu=*) cpu
="$optarg"
402 EXTRA_CFLAGS
="$EXTRA_CFLAGS $optarg"
403 EXTRA_CXXFLAGS
="$EXTRA_CXXFLAGS $optarg"
405 --extra-cxxflags=*) EXTRA_CXXFLAGS
="$EXTRA_CXXFLAGS $optarg"
407 --extra-ldflags=*) EXTRA_LDFLAGS
="$EXTRA_LDFLAGS $optarg"
409 --enable-debug-info) debug_info
="yes"
411 --disable-debug-info) debug_info
="no"
413 --cross-cc-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --cross-cc-FOO option"
415 --cross-cc-cflags-*) cc_arch
=${opt#--cross-cc-flags-}; cc_arch
=${cc_arch%%=*}
416 eval "cross_cc_cflags_${cc_arch}=\$optarg"
417 cross_cc_vars
="$cross_cc_vars cross_cc_cflags_${cc_arch}"
419 --cross-cc-*) cc_arch
=${opt#--cross-cc-}; cc_arch
=${cc_arch%%=*}
420 cc_archs
="$cc_archs $cc_arch"
421 eval "cross_cc_${cc_arch}=\$optarg"
422 cross_cc_vars
="$cross_cc_vars cross_cc_${cc_arch}"
427 # Using uname is really, really broken. Once we have the right set of checks
428 # we can eliminate its usage altogether.
430 # Preferred compiler:
432 # ${cross_prefix}gcc (if cross-prefix specified)
434 if test -z "${CC}${cross_prefix}"; then
437 cc
="${CC-${cross_prefix}gcc}"
440 if test -z "${CXX}${cross_prefix}"; then
443 cxx
="${CXX-${cross_prefix}g++}"
446 ar="${AR-${cross_prefix}ar}"
447 as
="${AS-${cross_prefix}as}"
450 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
451 ld
="${LD-${cross_prefix}ld}"
452 ranlib
="${RANLIB-${cross_prefix}ranlib}"
453 nm
="${NM-${cross_prefix}nm}"
454 strip
="${STRIP-${cross_prefix}strip}"
455 windres
="${WINDRES-${cross_prefix}windres}"
456 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
458 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
460 pkg_config
=query_pkg_config
461 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
463 # default flags for all hosts
464 # We use -fwrapv to tell the compiler that we require a C dialect where
465 # left shift of signed integers is well defined and has the expected
466 # 2s-complement style results. (Both clang and gcc agree that it
467 # provides these semantics.)
468 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv"
469 QEMU_CFLAGS
="-Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
470 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
471 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
475 # Flags that are needed during configure but later taken care of by Meson
476 CONFIGURE_CFLAGS
="-std=gnu11 -Wall"
483 #error $1 not defined
485 int main(void) { return 0; }
493 int main(void) { return 0; }
500 int main(void) { return 0; }
504 if check_define __linux__
; then
506 elif check_define _WIN32
; then
508 elif check_define __OpenBSD__
; then
510 elif check_define __sun__
; then
512 elif check_define __HAIKU__
; then
514 elif check_define __FreeBSD__
; then
516 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
517 targetos
='GNU/kFreeBSD'
518 elif check_define __DragonFly__
; then
520 elif check_define __NetBSD__
; then
522 elif check_define __APPLE__
; then
525 # This is a fatal error, but don't report it yet, because we
526 # might be going to just print the --help text, or it might
527 # be the result of a missing compiler.
531 # Some host OSes need non-standard checks for which CPU to use.
532 # Note that these checks are broken for cross-compilation: if you're
533 # cross-compiling to one of these OSes then you'll need to specify
534 # the correct CPU with the --cpu option.
537 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
538 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
543 if test ! -z "$cpu" ; then
544 # command line argument
546 elif check_define __i386__
; then
548 elif check_define __x86_64__
; then
549 if check_define __ILP32__
; then
554 elif check_define __sparc__
; then
555 if check_define __arch64__
; then
560 elif check_define _ARCH_PPC
; then
561 if check_define _ARCH_PPC64
; then
562 if check_define _LITTLE_ENDIAN
; then
570 elif check_define __mips__
; then
572 elif check_define __s390__
; then
573 if check_define __s390x__
; then
578 elif check_define __riscv
; then
580 elif check_define __arm__
; then
582 elif check_define __aarch64__
; then
589 # Normalise host CPU name and set ARCH.
590 # Note that this case should only have supported host CPUs, not guests.
592 ppc|ppc64|s390x|sparc64|x32|riscv
)
597 i386|i486|i586|i686|i86pc|BePC
)
616 # This will result in either an error or falling back to TCI later
620 if test -z "$ARCH"; then
640 # needed for kinfo_getvmmap(3) in libutil.h
657 # Disable attempts to use ObjectiveC features in os/object.h since they
658 # won't work when we're compiling with gcc as a C compiler.
659 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
664 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
665 # needed for CMSG_ macros in sys/socket.h
666 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
667 # needed for TIOCWIN* defines in termios.h
668 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
673 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE -fPIC $QEMU_CFLAGS"
678 vhost_user
=${default_feature:-yes}
682 : ${make=${MAKE-make}}
684 # We prefer python 3.x. A bare 'python' is traditionally
685 # python 2.x, but some distros have it as python 3.x, so
689 for binary
in "${PYTHON-python3}" python
693 python
=$
(command -v "$binary")
699 # Check for ancillary tools used in testing
701 for binary
in genisoimage mkisofs
705 genisoimage
=$
(command -v "$binary")
710 # Default objcc to clang if available, otherwise use CC
717 if test "$mingw32" = "yes" ; then
719 # MinGW needs -mthreads for TLS and macro _MT.
720 CONFIGURE_CFLAGS
="-mthreads $CONFIGURE_CFLAGS"
724 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
729 .
$source_path/scripts
/meson-buildoptions.sh
732 meson_option_parse
() {
733 meson_options
="$meson_options $(_meson_option_parse "$@
")"
734 if test $?
-eq 1; then
735 echo "ERROR: unknown option $1"
736 echo "Try '$0 --help' for more information"
742 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
744 --help|
-h) show_help
=yes
746 --version|
-V) exec cat $source_path/VERSION
748 --prefix=*) prefix
="$optarg"
750 --interp-prefix=*) interp_prefix
="$optarg"
756 --host-cc=*) host_cc
="$optarg"
760 --iasl=*) iasl
="$optarg"
762 --objcc=*) objcc
="$optarg"
764 --make=*) make="$optarg"
768 --python=*) python
="$optarg" ; explicit_python
=yes
770 --sphinx-build=*) sphinx_build
="$optarg"
772 --skip-meson) skip_meson
=yes
774 --meson=*) meson
="$optarg"
776 --ninja=*) ninja
="$optarg"
778 --smbd=*) smbd
="$optarg"
788 --disable-debug-info)
798 --disable-module-upgrades) module_upgrades
="no"
800 --enable-module-upgrades) module_upgrades
="yes"
804 --target-list=*) target_list
="$optarg"
805 if test "$target_list_exclude"; then
806 error_exit
"Can't mix --target-list with --target-list-exclude"
809 --target-list-exclude=*) target_list_exclude
="$optarg"
810 if test "$target_list"; then
811 error_exit
"Can't mix --target-list-exclude with --target-list"
814 --with-trace-file=*) trace_file
="$optarg"
816 --with-default-devices) default_devices
="true"
818 --without-default-devices) default_devices
="false"
820 --with-devices-*[!a-zA-Z0-9_-
]*=*) error_exit
"Passed bad --with-devices-FOO option"
822 --with-devices-*) device_arch
=${opt#--with-devices-};
823 device_arch
=${device_arch%%=*}
824 cf
=$source_path/configs
/devices
/$device_arch-softmmu/$optarg.mak
825 if test -f "$cf"; then
826 device_archs
="$device_archs $device_arch"
827 eval "devices_${device_arch}=\$optarg"
829 error_exit
"File $cf does not exist"
832 --without-default-features) # processed above
834 --enable-gprof) gprof
="yes"
836 --enable-gcov) gcov
="yes"
840 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
842 --mandir=*) mandir
="$optarg"
844 --bindir=*) bindir
="$optarg"
846 --libdir=*) libdir
="$optarg"
848 --libexecdir=*) libexecdir
="$optarg"
850 --includedir=*) includedir
="$optarg"
852 --datadir=*) datadir
="$optarg"
854 --with-suffix=*) qemu_suffix
="$optarg"
856 --docdir=*) docdir
="$optarg"
858 --localedir=*) localedir
="$optarg"
860 --sysconfdir=*) sysconfdir
="$optarg"
862 --localstatedir=*) local_statedir
="$optarg"
864 --firmwarepath=*) firmwarepath
="$optarg"
867 --disable-dependency-tracking|\
868 --sbindir=*|
--sharedstatedir=*|\
869 --oldincludedir=*|
--datarootdir=*|
--infodir=*|\
870 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
871 # These switches are silently ignored, for compatibility with
872 # autoconf-generated configure scripts. This allows QEMU's
873 # configure to be used by RPM and similar macros that set
874 # lots of directory switches by default.
876 --disable-qom-cast-debug) qom_cast_debug
="no"
878 --enable-qom-cast-debug) qom_cast_debug
="yes"
880 --audio-drv-list=*) audio_drv_list
="$optarg"
882 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
884 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
886 --enable-block-drv-whitelist-in-tools) block_drv_whitelist_tools
="yes"
888 --disable-block-drv-whitelist-in-tools) block_drv_whitelist_tools
="no"
890 --enable-debug-tcg) debug_tcg
="yes"
892 --disable-debug-tcg) debug_tcg
="no"
895 # Enable debugging options that aren't excessively noisy
902 --enable-sanitizers) sanitizers
="yes"
904 --disable-sanitizers) sanitizers
="no"
906 --enable-tsan) tsan
="yes"
908 --disable-tsan) tsan
="no"
910 --disable-strip) strip_opt
="no"
912 --disable-slirp) slirp
="disabled"
914 --enable-slirp) slirp
="enabled"
916 --enable-slirp=git
) slirp
="internal"
918 --enable-slirp=*) slirp
="$optarg"
920 --disable-xen) xen
="disabled"
922 --enable-xen) xen
="enabled"
924 --disable-tcg) tcg
="disabled"
927 --enable-tcg) tcg
="enabled"
929 --enable-profiler) profiler
="yes"
931 --disable-system) softmmu
="no"
933 --enable-system) softmmu
="yes"
940 --disable-linux-user) linux_user
="no"
942 --enable-linux-user) linux_user
="yes"
944 --disable-bsd-user) bsd_user
="no"
946 --enable-bsd-user) bsd_user
="yes"
948 --enable-pie) pie
="yes"
950 --disable-pie) pie
="no"
952 --enable-werror) werror
="yes"
954 --disable-werror) werror
="no"
956 --enable-lto) lto
="true"
958 --disable-lto) lto
="false"
960 --enable-stack-protector) stack_protector
="yes"
962 --disable-stack-protector) stack_protector
="no"
964 --enable-safe-stack) safe_stack
="yes"
966 --disable-safe-stack) safe_stack
="no"
972 --disable-cfi) cfi
="false"
974 --disable-fdt) fdt
="disabled"
976 --enable-fdt) fdt
="enabled"
978 --enable-fdt=git
) fdt
="internal"
980 --enable-fdt=*) fdt
="$optarg"
982 --disable-membarrier) membarrier
="no"
984 --enable-membarrier) membarrier
="yes"
986 --with-pkgversion=*) pkgversion
="$optarg"
988 --with-coroutine=*) coroutine
="$optarg"
990 --disable-coroutine-pool) coroutine_pool
="no"
992 --enable-coroutine-pool) coroutine_pool
="yes"
994 --enable-debug-stack-usage) debug_stack_usage
="yes"
996 --enable-crypto-afalg) crypto_afalg
="yes"
998 --disable-crypto-afalg) crypto_afalg
="no"
1000 --disable-vhost-net) vhost_net
="no"
1002 --enable-vhost-net) vhost_net
="yes"
1004 --disable-vhost-crypto) vhost_crypto
="no"
1006 --enable-vhost-crypto) vhost_crypto
="yes"
1008 --disable-vhost-scsi) vhost_scsi
="no"
1010 --enable-vhost-scsi) vhost_scsi
="yes"
1012 --disable-vhost-vsock) vhost_vsock
="no"
1014 --enable-vhost-vsock) vhost_vsock
="yes"
1016 --disable-vhost-user-fs) vhost_user_fs
="no"
1018 --enable-vhost-user-fs) vhost_user_fs
="yes"
1020 --disable-opengl) opengl
="no"
1022 --enable-opengl) opengl
="yes"
1024 --disable-xfsctl) xfs
="no"
1026 --enable-xfsctl) xfs
="yes"
1028 --disable-zlib-test)
1030 --enable-guest-agent) guest_agent
="yes"
1032 --disable-guest-agent) guest_agent
="no"
1034 --with-vss-sdk) vss_win32_sdk
=""
1036 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1038 --without-vss-sdk) vss_win32_sdk
="no"
1040 --with-win-sdk) win_sdk
=""
1042 --with-win-sdk=*) win_sdk
="$optarg"
1044 --without-win-sdk) win_sdk
="no"
1046 --enable-tools) want_tools
="yes"
1048 --disable-tools) want_tools
="no"
1050 --disable-avx2) avx2_opt
="no"
1052 --enable-avx2) avx2_opt
="yes"
1054 --disable-avx512f) avx512f_opt
="no"
1056 --enable-avx512f) avx512f_opt
="yes"
1058 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1059 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1061 --enable-vhdx|
--disable-vhdx)
1062 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1064 --enable-uuid|
--disable-uuid)
1065 echo "$0: $opt is obsolete, UUID support is always built" >&2
1067 --tls-priority=*) tls_priority
="$optarg"
1069 --enable-rdma) rdma
="yes"
1071 --disable-rdma) rdma
="no"
1073 --enable-pvrdma) pvrdma
="yes"
1075 --disable-pvrdma) pvrdma
="no"
1077 --disable-tpm) tpm
="no"
1079 --enable-tpm) tpm
="yes"
1081 --disable-libssh) libssh
="no"
1083 --enable-libssh) libssh
="yes"
1085 --disable-live-block-migration) live_block_migration
="no"
1087 --enable-live-block-migration) live_block_migration
="yes"
1089 --disable-numa) numa
="no"
1091 --enable-numa) numa
="yes"
1093 --disable-replication) replication
="no"
1095 --enable-replication) replication
="yes"
1097 --disable-bochs) bochs
="no"
1099 --enable-bochs) bochs
="yes"
1101 --disable-cloop) cloop
="no"
1103 --enable-cloop) cloop
="yes"
1105 --disable-dmg) dmg
="no"
1107 --enable-dmg) dmg
="yes"
1109 --disable-qcow1) qcow1
="no"
1111 --enable-qcow1) qcow1
="yes"
1113 --disable-vdi) vdi
="no"
1115 --enable-vdi) vdi
="yes"
1117 --disable-vvfat) vvfat
="no"
1119 --enable-vvfat) vvfat
="yes"
1121 --disable-qed) qed
="no"
1123 --enable-qed) qed
="yes"
1125 --disable-parallels) parallels
="no"
1127 --enable-parallels) parallels
="yes"
1129 --disable-vhost-user) vhost_user
="no"
1131 --enable-vhost-user) vhost_user
="yes"
1133 --disable-vhost-vdpa) vhost_vdpa
="no"
1135 --enable-vhost-vdpa) vhost_vdpa
="yes"
1137 --disable-vhost-kernel) vhost_kernel
="no"
1139 --enable-vhost-kernel) vhost_kernel
="yes"
1141 --disable-capstone) capstone
="disabled"
1143 --enable-capstone) capstone
="enabled"
1145 --enable-capstone=git
) capstone
="internal"
1147 --enable-capstone=*) capstone
="$optarg"
1149 --with-git=*) git
="$optarg"
1151 --with-git-submodules=*)
1152 git_submodules_action
="$optarg"
1154 --enable-debug-mutex) debug_mutex
=yes
1156 --disable-debug-mutex) debug_mutex
=no
1158 --enable-plugins) if test "$mingw32" = "yes"; then
1159 error_exit
"TCG plugins not currently supported on Windows platforms"
1164 --disable-plugins) plugins
="no"
1166 --enable-containers) use_containers
="yes"
1168 --disable-containers) use_containers
="no"
1170 --gdb=*) gdb_bin
="$optarg"
1172 --enable-rng-none) rng_none
=yes
1174 --disable-rng-none) rng_none
=no
1176 --enable-keyring) secret_keyring
="yes"
1178 --disable-keyring) secret_keyring
="no"
1180 --enable-gio) gio
=yes
1182 --disable-gio) gio
=no
1184 --enable-slirp-smbd) slirp_smbd
=yes
1186 --disable-slirp-smbd) slirp_smbd
=no
1188 # backwards compatibility options
1189 --enable-trace-backend=*) meson_option_parse
"--enable-trace-backends=$optarg" "$optarg"
1191 --disable-blobs) meson_option_parse
--disable-install-blobs ""
1193 --enable-tcmalloc) meson_option_parse
--enable-malloc=tcmalloc tcmalloc
1195 --enable-jemalloc) meson_option_parse
--enable-malloc=jemalloc jemalloc
1197 # everything else has the same name in configure and meson
1198 --enable-* |
--disable-*) meson_option_parse
"$opt" "$optarg"
1201 echo "ERROR: unknown option $opt"
1202 echo "Try '$0 --help' for more information"
1208 # test for any invalid configuration combinations
1209 if test "$plugins" = "yes" -a "$tcg" = "disabled"; then
1210 error_exit
"Can't enable plugins on non-TCG builds"
1213 case $git_submodules_action in
1215 if test ! -e "$source_path/.git"; then
1216 echo "ERROR: cannot $git_submodules_action git submodules without .git"
1221 if ! test -f "$source_path/ui/keycodemapdb/README"
1224 echo "ERROR: missing GIT submodules"
1226 if test -e "$source_path/.git"; then
1227 echo "--with-git-submodules=ignore specified but submodules were not"
1228 echo "checked out. Please initialize and update submodules."
1230 echo "This is not a GIT checkout but module content appears to"
1231 echo "be missing. Do not use 'git archive' or GitHub download links"
1232 echo "to acquire QEMU source archives. Non-GIT builds are only"
1233 echo "supported with source archives linked from:"
1235 echo " https://www.qemu.org/download/#source"
1237 echo "Developers working with GIT can use scripts/archive-source.sh"
1238 echo "if they need to create valid source archives."
1245 echo "ERROR: invalid --with-git-submodules= value '$git_submodules_action'"
1250 libdir
="${libdir:-$prefix/lib}"
1251 libexecdir
="${libexecdir:-$prefix/libexec}"
1252 includedir
="${includedir:-$prefix/include}"
1254 if test "$mingw32" = "yes" ; then
1255 bindir
="${bindir:-$prefix}"
1257 bindir
="${bindir:-$prefix/bin}"
1259 mandir
="${mandir:-$prefix/share/man}"
1260 datadir
="${datadir:-$prefix/share}"
1261 docdir
="${docdir:-$prefix/share/doc}"
1262 sysconfdir
="${sysconfdir:-$prefix/etc}"
1263 local_statedir
="${local_statedir:-$prefix/var}"
1264 firmwarepath
="${firmwarepath:-$datadir/qemu-firmware}"
1265 localedir
="${localedir:-$datadir/locale}"
1268 ppc
) CPU_CFLAGS
="-m32" ;;
1269 ppc64
) CPU_CFLAGS
="-m64" ;;
1270 sparc
) CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc" ;;
1271 sparc64
) CPU_CFLAGS
="-m64 -mcpu=ultrasparc" ;;
1272 s390
) CPU_CFLAGS
="-m31" ;;
1273 s390x
) CPU_CFLAGS
="-m64" ;;
1274 i386
) CPU_CFLAGS
="-m32" ;;
1275 x32
) CPU_CFLAGS
="-mx32" ;;
1277 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1278 # If we truly care, we should simply detect this case at
1279 # runtime and generate the fallback to serial emulation.
1280 x86_64
) CPU_CFLAGS
="-m64 -mcx16" ;;
1282 # No special flags required for other host CPUs
1285 if eval test -z "\${cross_cc_$cpu}"; then
1286 eval "cross_cc_${cpu}=\$cc"
1287 cross_cc_vars
="$cross_cc_vars cross_cc_${cpu}"
1290 # For user-mode emulation the host arch has to be one we explicitly
1291 # support, even if we're using TCI.
1292 if [ "$ARCH" = "unknown" ]; then
1297 default_target_list
=""
1298 deprecated_targets_list
=ppc64abi32-linux-user
1299 deprecated_features
=""
1302 if [ "$softmmu" = "yes" ]; then
1303 mak_wilds
="${mak_wilds} $source_path/configs/targets/*-softmmu.mak"
1305 if [ "$linux_user" = "yes" ]; then
1306 mak_wilds
="${mak_wilds} $source_path/configs/targets/*-linux-user.mak"
1308 if [ "$bsd_user" = "yes" ]; then
1309 mak_wilds
="${mak_wilds} $source_path/configs/targets/*-bsd-user.mak"
1312 # If the user doesn't explicitly specify a deprecated target we will
1314 if test -z "$target_list"; then
1315 if test -z "$target_list_exclude"; then
1316 target_list_exclude
="$deprecated_targets_list"
1318 target_list_exclude
="$target_list_exclude,$deprecated_targets_list"
1322 for config
in $mak_wilds; do
1323 target
="$(basename "$config" .mak)"
1324 if echo "$target_list_exclude" |
grep -vq "$target"; then
1325 default_target_list
="${default_target_list} $target"
1329 if test x
"$show_help" = x
"yes" ; then
1332 Usage: configure [options]
1333 Options: [defaults in brackets after descriptions]
1336 --help print this message
1337 --prefix=PREFIX install in PREFIX [$prefix]
1338 --interp-prefix=PREFIX where to find shared libraries, etc.
1339 use %M for cpu name [$interp_prefix]
1340 --target-list=LIST set target list (default: build all non-deprecated)
1341 $(echo Available targets: $default_target_list | \
1342 fold -s -w 53 | sed -e 's/^/ /')
1343 $(echo Deprecated targets: $deprecated_targets_list | \
1344 fold -s -w 53 | sed -e 's/^/ /')
1345 --target-list-exclude=LIST exclude a set of targets from the default target-list
1347 Advanced options (experts only):
1348 --cross-prefix=PREFIX use PREFIX for compile tools, PREFIX can be blank [$cross_prefix]
1349 --cc=CC use C compiler CC [$cc]
1350 --iasl=IASL use ACPI compiler IASL [$iasl]
1351 --host-cc=CC use C compiler CC [$host_cc] for code run at
1353 --cxx=CXX use C++ compiler CXX [$cxx]
1354 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1355 --extra-cflags=CFLAGS append extra C compiler flags CFLAGS
1356 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags CXXFLAGS
1357 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1358 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
1359 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
1360 --make=MAKE use specified make [$make]
1361 --python=PYTHON use specified python [$python]
1362 --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build]
1363 --meson=MESON use specified meson [$meson]
1364 --ninja=NINJA use specified ninja [$ninja]
1365 --smbd=SMBD use specified smbd [$smbd]
1366 --with-git=GIT use specified git [$git]
1367 --with-git-submodules=update update git submodules (default if .git dir exists)
1368 --with-git-submodules=validate fail if git submodules are not up to date
1369 --with-git-submodules=ignore do not update or check git submodules (default if no .git dir)
1370 --static enable static build [$static]
1371 --mandir=PATH install man pages in PATH
1372 --datadir=PATH install firmware in PATH/$qemu_suffix
1373 --localedir=PATH install translation in PATH/$qemu_suffix
1374 --docdir=PATH install documentation in PATH/$qemu_suffix
1375 --bindir=PATH install binaries in PATH
1376 --libdir=PATH install libraries in PATH
1377 --libexecdir=PATH install helper binaries in PATH
1378 --sysconfdir=PATH install config in PATH/$qemu_suffix
1379 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1380 --firmwarepath=PATH search PATH for firmware files
1381 --efi-aarch64=PATH PATH of efi file to use for aarch64 VMs.
1382 --with-suffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir/docdir [$qemu_suffix]
1383 --with-pkgversion=VERS use specified string as sub-version of the package
1384 --without-default-features default all --enable-* options to "disabled"
1385 --without-default-devices do not include any device that is not needed to
1386 start the emulator (only use if you are including
1387 desired devices in configs/devices/)
1388 --with-devices-ARCH=NAME override default configs/devices
1389 --enable-debug enable common debug build options
1390 --enable-sanitizers enable default sanitizers
1391 --enable-tsan enable thread sanitizer
1392 --disable-strip disable stripping binaries
1393 --disable-werror disable compilation abort on warning
1394 --disable-stack-protector disable compiler-provided stack protection
1395 --audio-drv-list=LIST set audio drivers to try if -audiodev is not used
1396 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1397 --block-drv-rw-whitelist=L
1398 set block driver read-write whitelist
1399 (by default affects only QEMU, not tools like qemu-img)
1400 --block-drv-ro-whitelist=L
1401 set block driver read-only whitelist
1402 (by default affects only QEMU, not tools like qemu-img)
1403 --enable-block-drv-whitelist-in-tools
1404 use block whitelist also in tools instead of only QEMU
1405 --with-trace-file=NAME Full PATH,NAME of file to store traces
1407 --cpu=CPU Build for host CPU [$cpu]
1408 --with-coroutine=BACKEND coroutine backend. Supported options:
1409 ucontext, sigaltstack, windows
1410 --enable-gcov enable test coverage analysis with gcov
1411 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1412 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1413 --tls-priority default TLS protocol/cipher priority string
1414 --enable-gprof QEMU profiling with gprof
1415 --enable-profiler profiler support
1416 --enable-debug-stack-usage
1417 track the maximum stack usage of stacks created by qemu_alloc_stack
1419 enable plugins via shared library loading
1420 --disable-containers don't use containers for cross-building
1421 --gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin]
1425 system all system emulation targets
1426 user supported user emulation targets
1427 linux-user all linux usermode emulation targets
1428 bsd-user all BSD usermode emulation targets
1429 guest-agent build the QEMU Guest Agent
1430 pie Position Independent Executables
1431 modules modules support (non-Windows)
1432 module-upgrades try to load modules from alternate paths for upgrades
1433 debug-tcg TCG debugging (default is disabled)
1434 debug-info debugging information
1435 lto Enable Link-Time Optimization.
1436 safe-stack SafeStack Stack Smash Protection. Depends on
1437 clang/llvm >= 3.7 and requires coroutine backend ucontext.
1438 membarrier membarrier system call (for Linux 4.14+ or Windows)
1439 rdma Enable RDMA-based migration
1440 pvrdma Enable PVRDMA support
1441 vhost-net vhost-net kernel acceleration support
1442 vhost-vsock virtio sockets device support
1443 vhost-scsi vhost-scsi kernel target support
1444 vhost-crypto vhost-user-crypto backend support
1445 vhost-kernel vhost kernel backend support
1446 vhost-user vhost-user backend support
1447 vhost-vdpa vhost-vdpa kernel backend support
1448 live-block-migration Block migration in the main migration stream
1449 coroutine-pool coroutine freelist (better performance)
1451 libssh ssh block device support
1452 numa libnuma support
1453 avx2 AVX2 optimization support
1454 avx512f AVX512F optimization support
1455 replication replication support
1456 opengl opengl support
1457 xfsctl xfsctl support
1458 qom-cast-debug cast debugging support
1459 tools build qemu-io, qemu-nbd and qemu-img tools
1460 bochs bochs image format support
1461 cloop cloop image format support
1462 dmg dmg image format support
1463 qcow1 qcow v1 image format support
1464 vdi vdi image format support
1465 vvfat vvfat image format support
1466 qed qed image format support
1467 parallels parallels image format support
1468 crypto-afalg Linux AF_ALG crypto backend driver
1469 debug-mutex mutex debugging support
1470 rng-none dummy RNG, avoid using /dev/(u)random and getrandom()
1472 slirp-smbd use smbd (at path --smbd=*) in slirp networking
1474 NOTE: The object files are built at the place where configure is launched
1479 # Remove old dependency files to make sure that they get properly regenerated
1480 rm -f */config-devices.mak.d
1482 if test -z "$python"
1484 error_exit
"Python not found. Use --python=/path/to/python"
1488 error_exit
"GNU make ($make) not found"
1491 # Note that if the Python conditional here evaluates True we will exit
1492 # with status 1 which is a shell 'false' value.
1493 if ! $python -c 'import sys; sys.exit(sys.version_info < (3,6))'; then
1494 error_exit
"Cannot use '$python', Python >= 3.6 is required." \
1495 "Use --python=/path/to/python to specify a supported Python."
1498 # Preserve python version since some functionality is dependent on it
1499 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
)
1501 # Suppress writing compiled files
1504 if test -z "$meson"; then
1505 if test "$explicit_python" = no
&& has meson
&& version_ge
"$(meson --version)" 0.59.3; then
1507 elif test $git_submodules_action != 'ignore' ; then
1509 elif test -e "${source_path}/meson/meson.py" ; then
1512 if test "$explicit_python" = yes; then
1513 error_exit
"--python requires using QEMU's embedded Meson distribution, but it was not found."
1515 error_exit
"Meson not found. Use --meson=/path/to/meson"
1519 # Meson uses its own Python interpreter to invoke other Python scripts,
1520 # but the user wants to use the one they specified with --python.
1522 # We do not want to override the distro Python interpreter (and sometimes
1523 # cannot: for example in Homebrew /usr/bin/meson is a bash script), so
1524 # just require --meson=git|internal together with --python.
1525 if test "$explicit_python" = yes; then
1528 *) error_exit
"--python requires using QEMU's embedded Meson distribution." ;;
1533 if test "$meson" = git
; then
1534 git_submodules
="${git_submodules} meson"
1539 meson
="$python ${source_path}/meson/meson.py"
1541 *) meson
=$
(command -v "$meson") ;;
1546 if test -z "$ninja"; then
1547 for c
in ninja ninja-build samu
; do
1549 ninja
=$
(command -v "$c")
1553 if test -z "$ninja"; then
1554 error_exit
"Cannot find Ninja"
1558 # Check that the C compiler works. Doing this here before testing
1559 # the host CPU ensures that we had a valid CC to autodetect the
1560 # $cpu var (and we should bail right here if that's not the case).
1561 # It also allows the help message to be printed without a CC.
1563 if compile_object
; then
1564 : C compiler works ok
1566 error_exit
"\"$cc\" either does not exist or does not work"
1568 if ! compile_prog
; then
1569 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1572 # Consult white-list to determine whether to enable werror
1573 # by default. Only enable by default for git builds
1574 if test -z "$werror" ; then
1575 if test "$git_submodules_action" != "ignore" && \
1576 { test "$linux" = "yes" ||
test "$mingw32" = "yes"; }; then
1583 if test "$targetos" = "bogus"; then
1584 # Now that we know that we're not printing the help and that
1585 # the compiler works (so the results of the check_defines we used
1586 # to identify the OS are reliable), if we didn't recognize the
1587 # host OS we should stop now.
1588 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1591 # Check whether the compiler matches our minimum requirements:
1593 #if defined(__clang_major__) && defined(__clang_minor__)
1594 # ifdef __apple_build_version__
1595 # if __clang_major__ < 10 || (__clang_major__ == 10 && __clang_minor__ < 0)
1596 # error You need at least XCode Clang v10.0 to compile QEMU
1599 # if __clang_major__ < 6 || (__clang_major__ == 6 && __clang_minor__ < 0)
1600 # error You need at least Clang v6.0 to compile QEMU
1603 #elif defined(__GNUC__) && defined(__GNUC_MINOR__)
1604 # if __GNUC__ < 7 || (__GNUC__ == 7 && __GNUC_MINOR__ < 4)
1605 # error You need at least GCC v7.4.0 to compile QEMU
1608 # error You either need GCC or Clang to compiler QEMU
1610 int main (void) { return 0; }
1612 if ! compile_prog
"" "" ; then
1613 error_exit
"You need at least GCC v7.4 or Clang v6.0 (or XCode Clang v10.0)"
1616 # Accumulate -Wfoo and -Wno-bar separately.
1617 # We will list all of the enable flags first, and the disable flags second.
1618 # Note that we do not add -Werror, because that would enable it for all
1619 # configure tests. If a configure test failed due to -Werror this would
1620 # just silently disable some features, so it's too error prone.
1623 add_to warn_flags
-Wold-style-declaration
1624 add_to warn_flags
-Wold-style-definition
1625 add_to warn_flags
-Wtype-limits
1626 add_to warn_flags
-Wformat-security
1627 add_to warn_flags
-Wformat-y2k
1628 add_to warn_flags
-Winit-self
1629 add_to warn_flags
-Wignored-qualifiers
1630 add_to warn_flags
-Wempty-body
1631 add_to warn_flags
-Wnested-externs
1632 add_to warn_flags
-Wendif-labels
1633 add_to warn_flags
-Wexpansion-to-defined
1634 add_to warn_flags
-Wimplicit-fallthrough=2
1637 add_to nowarn_flags
-Wno-initializer-overrides
1638 add_to nowarn_flags
-Wno-missing-include-dirs
1639 add_to nowarn_flags
-Wno-shift-negative-value
1640 add_to nowarn_flags
-Wno-string-plus-int
1641 add_to nowarn_flags
-Wno-typedef-redefinition
1642 add_to nowarn_flags
-Wno-tautological-type-limit-compare
1643 add_to nowarn_flags
-Wno-psabi
1645 gcc_flags
="$warn_flags $nowarn_flags"
1647 cc_has_warning_flag
() {
1650 # Use the positive sense of the flag when testing for -Wno-wombat
1651 # support (gcc will happily accept the -Wno- form of unknown
1653 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1654 compile_prog
"-Werror $optflag" ""
1657 for flag
in $gcc_flags; do
1658 if cc_has_warning_flag
$flag ; then
1659 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1663 if test "$stack_protector" != "no"; then
1665 int main(int argc, char *argv[])
1667 char arr[64], *p = arr, *c = argv[0];
1674 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1676 for flag
in $gcc_flags; do
1677 # We need to check both a compile and a link, since some compiler
1678 # setups fail only on a .c->.o compile and some only at link time
1679 if compile_object
"-Werror $flag" &&
1680 compile_prog
"-Werror $flag" ""; then
1681 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1682 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
1687 if test "$stack_protector" = yes; then
1688 if test $sp_on = 0; then
1689 error_exit
"Stack protector not supported"
1694 # Disable -Wmissing-braces on older compilers that warn even for
1695 # the "universal" C zero initializer {0}.
1701 if compile_object
"-Werror" "" ; then
1704 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1707 # Our module code doesn't support Windows
1708 if test "$modules" = "yes" && test "$mingw32" = "yes" ; then
1709 error_exit
"Modules are not available for Windows"
1712 # module_upgrades is only reasonable if modules are enabled
1713 if test "$modules" = "no" && test "$module_upgrades" = "yes" ; then
1714 error_exit
"Can't enable module-upgrades as Modules are not enabled"
1717 # Static linking is not possible with plugins, modules or PIE
1718 if test "$static" = "yes" ; then
1719 if test "$modules" = "yes" ; then
1720 error_exit
"static and modules are mutually incompatible"
1722 if test "$plugins" = "yes"; then
1723 error_exit
"static and plugins are mutually incompatible"
1732 # define THREAD __thread
1736 static THREAD int tls_var;
1737 int main(void) { return tls_var; }
1740 # Check we support -fno-pie and -no-pie first; we will need the former for
1741 # building ROMs, and both for everything if --disable-pie is passed.
1742 if compile_prog
"-Werror -fno-pie" "-no-pie"; then
1743 CFLAGS_NOPIE
="-fno-pie"
1744 LDFLAGS_NOPIE
="-no-pie"
1747 if test "$static" = "yes"; then
1748 if test "$pie" != "no" && compile_prog
"-Werror -fPIE -DPIE" "-static-pie"; then
1749 CONFIGURE_CFLAGS
="-fPIE -DPIE $CONFIGURE_CFLAGS"
1750 QEMU_LDFLAGS
="-static-pie $QEMU_LDFLAGS"
1752 elif test "$pie" = "yes"; then
1753 error_exit
"-static-pie not available due to missing toolchain support"
1755 QEMU_LDFLAGS
="-static $QEMU_LDFLAGS"
1758 elif test "$pie" = "no"; then
1759 CONFIGURE_CFLAGS
="$CFLAGS_NOPIE $CONFIGURE_CFLAGS"
1760 CONFIGURE_LDFLAGS
="$LDFLAGS_NOPIE $CONFIGURE_LDFLAGS"
1761 elif compile_prog
"-Werror -fPIE -DPIE" "-pie"; then
1762 CONFIGURE_CFLAGS
="-fPIE -DPIE $CONFIGURE_CFLAGS"
1763 CONFIGURE_LDFLAGS
="-pie $CONFIGURE_LDFLAGS"
1765 elif test "$pie" = "yes"; then
1766 error_exit
"PIE not available due to missing toolchain support"
1768 echo "Disabling PIE due to missing toolchain support"
1772 # Detect support for PT_GNU_RELRO + DT_BIND_NOW.
1773 # The combination is known as "full relro", because .got.plt is read-only too.
1774 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1775 QEMU_LDFLAGS
="-Wl,-z,relro -Wl,-z,now $QEMU_LDFLAGS"
1778 ##########################################
1779 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1780 # use i686 as default anyway, but for those that don't, an explicit
1781 # specification is necessary
1783 if test "$cpu" = "i386"; then
1785 static int sfaa(int *ptr)
1787 return __sync_fetch_and_and(ptr, 0);
1793 val = __sync_val_compare_and_swap(&val, 0, 1);
1798 if ! compile_prog
"" "" ; then
1799 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1803 if test "$tcg" = "enabled"; then
1804 git_submodules
="$git_submodules tests/fp/berkeley-testfloat-3"
1805 git_submodules
="$git_submodules tests/fp/berkeley-softfloat-3"
1808 if test -z "${target_list+xxx}" ; then
1810 for target
in $default_target_list; do
1811 target_list
="$target_list $target"
1813 target_list
="${target_list# }"
1816 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1817 for target
in $target_list; do
1818 # Check that we recognised the target name; this allows a more
1819 # friendly error message than if we let it fall through.
1820 case " $default_target_list " in
1824 error_exit
"Unknown target name '$target'"
1830 for target
in $target_list; do
1831 # if a deprecated target is enabled we note it here
1832 if echo "$deprecated_targets_list" |
grep -q "$target"; then
1833 add_to deprecated_features
$target
1837 # see if system emulation was really requested
1838 case " $target_list " in
1839 *"-softmmu "*) softmmu
=yes
1845 feature_not_found
() {
1849 error_exit
"User requested feature $feature" \
1850 "configure was not able to find it." \
1855 # big/little endian test
1858 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1859 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1860 int main(int argc, char *argv[])
1862 return printf("%s %s\n", (char *)big_endian, (char *)little_endian);
1866 if compile_prog
; then
1867 if strings -a $TMPE |
grep -q BiGeNdIaN
; then
1869 elif strings -a $TMPE |
grep -q LiTtLeEnDiAn
; then
1872 echo big
/little
test failed
1876 echo big
/little
test failed
1880 ##########################################
1882 if test -z "$want_tools"; then
1883 if test "$softmmu" = "no"; then
1890 #########################################
1891 # vhost interdependencies and host support
1894 if test "$vhost_user" = "yes" && test "$linux" != "yes"; then
1895 error_exit
"vhost-user is only available on Linux"
1897 test "$vhost_vdpa" = "" && vhost_vdpa
=$linux
1898 if test "$vhost_vdpa" = "yes" && test "$linux" != "yes"; then
1899 error_exit
"vhost-vdpa is only available on Linux"
1901 test "$vhost_kernel" = "" && vhost_kernel
=$linux
1902 if test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then
1903 error_exit
"vhost-kernel is only available on Linux"
1906 # vhost-kernel devices
1907 test "$vhost_scsi" = "" && vhost_scsi
=$vhost_kernel
1908 if test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then
1909 error_exit
"--enable-vhost-scsi requires --enable-vhost-kernel"
1911 test "$vhost_vsock" = "" && vhost_vsock
=$vhost_kernel
1912 if test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then
1913 error_exit
"--enable-vhost-vsock requires --enable-vhost-kernel"
1916 # vhost-user backends
1917 test "$vhost_net_user" = "" && vhost_net_user
=$vhost_user
1918 if test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then
1919 error_exit
"--enable-vhost-net-user requires --enable-vhost-user"
1921 test "$vhost_crypto" = "" && vhost_crypto
=$vhost_user
1922 if test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then
1923 error_exit
"--enable-vhost-crypto requires --enable-vhost-user"
1925 test "$vhost_user_fs" = "" && vhost_user_fs
=$vhost_user
1926 if test "$vhost_user_fs" = "yes" && test "$vhost_user" = "no"; then
1927 error_exit
"--enable-vhost-user-fs requires --enable-vhost-user"
1929 #vhost-vdpa backends
1930 test "$vhost_net_vdpa" = "" && vhost_net_vdpa
=$vhost_vdpa
1931 if test "$vhost_net_vdpa" = "yes" && test "$vhost_vdpa" = "no"; then
1932 error_exit
"--enable-vhost-net-vdpa requires --enable-vhost-vdpa"
1935 # OR the vhost-kernel, vhost-vdpa and vhost-user values for simplicity
1936 if test "$vhost_net" = ""; then
1937 test "$vhost_net_user" = "yes" && vhost_net
=yes
1938 test "$vhost_net_vdpa" = "yes" && vhost_net
=yes
1939 test "$vhost_kernel" = "yes" && vhost_net
=yes
1942 ##########################################
1945 if ! has
"$pkg_config_exe"; then
1946 error_exit
"pkg-config binary '$pkg_config_exe' not found"
1949 ##########################################
1952 if test "$xen" != "disabled" ; then
1953 # Check whether Xen library path is specified via --extra-ldflags to avoid
1954 # overriding this setting with pkg-config output. If not, try pkg-config
1955 # to obtain all needed flags.
1957 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
1958 $pkg_config --exists xencontrol
; then
1959 xen_ctrl_version
="$(printf '%d%02d%02d' \
1960 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
1962 xen_pc
="xencontrol xenstore xenforeignmemory xengnttab"
1963 xen_pc
="$xen_pc xenevtchn xendevicemodel"
1964 if $pkg_config --exists xentoolcore
; then
1965 xen_pc
="$xen_pc xentoolcore"
1967 xen_cflags
="$($pkg_config --cflags $xen_pc)"
1968 xen_libs
="$($pkg_config --libs $xen_pc)"
1971 xen_libs
="-lxenstore -lxenctrl"
1972 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
1974 # First we test whether Xen headers and libraries are available.
1975 # If no, we are done and there is no Xen support.
1976 # If yes, more tests are run to detect the Xen version.
1980 #include <xenctrl.h>
1985 if ! compile_prog
"" "$xen_libs" ; then
1987 if test "$xen" = "enabled" ; then
1988 feature_not_found
"xen" "Install xen devel"
1994 cat > $TMPC <<EOF &&
1995 #undef XC_WANT_COMPAT_DEVICEMODEL_API
1996 #define __XEN_TOOLS__
1997 #include <xendevicemodel.h>
1998 #include <xenforeignmemory.h>
2000 xendevicemodel_handle *xd;
2001 xenforeignmemory_handle *xfmem;
2003 xd = xendevicemodel_open(0, 0);
2004 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2006 xfmem = xenforeignmemory_open(0, 0);
2007 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2012 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2014 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2015 xen_ctrl_version
=41100
2018 cat > $TMPC <<EOF &&
2019 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2020 #include <xenforeignmemory.h>
2021 #include <xentoolcore.h>
2023 xenforeignmemory_handle *xfmem;
2025 xfmem = xenforeignmemory_open(0, 0);
2026 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2027 xentoolcore_restrict_all(0);
2032 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2034 xen_stable_libs
="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2035 xen_ctrl_version
=41000
2038 cat > $TMPC <<EOF &&
2039 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2040 #define __XEN_TOOLS__
2041 #include <xendevicemodel.h>
2043 xendevicemodel_handle *xd;
2045 xd = xendevicemodel_open(0, 0);
2046 xendevicemodel_close(xd);
2051 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2053 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2054 xen_ctrl_version
=40900
2057 cat > $TMPC <<EOF &&
2059 * If we have stable libs the we don't want the libxc compat
2060 * layers, regardless of what CFLAGS we may have been given.
2062 * Also, check if xengnttab_grant_copy_segment_t is defined and
2063 * grant copy operation is implemented.
2065 #undef XC_WANT_COMPAT_EVTCHN_API
2066 #undef XC_WANT_COMPAT_GNTTAB_API
2067 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2068 #include <xenctrl.h>
2069 #include <xenstore.h>
2070 #include <xenevtchn.h>
2071 #include <xengnttab.h>
2072 #include <xenforeignmemory.h>
2074 #include <xen/hvm/hvm_info_table.h>
2075 #if !defined(HVM_MAX_VCPUS)
2076 # error HVM_MAX_VCPUS not defined
2079 xc_interface *xc = NULL;
2080 xenforeignmemory_handle *xfmem;
2081 xenevtchn_handle *xe;
2082 xengnttab_handle *xg;
2083 xengnttab_grant_copy_segment_t* seg = NULL;
2087 xc = xc_interface_open(0, 0, 0);
2088 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2089 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2090 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2091 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2093 xfmem = xenforeignmemory_open(0, 0);
2094 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2096 xe = xenevtchn_open(0, 0);
2099 xg = xengnttab_open(0, 0);
2100 xengnttab_grant_copy(xg, 0, seg);
2105 compile_prog
"" "$xen_libs $xen_stable_libs"
2107 xen_ctrl_version
=40800
2110 cat > $TMPC <<EOF &&
2112 * If we have stable libs the we don't want the libxc compat
2113 * layers, regardless of what CFLAGS we may have been given.
2115 #undef XC_WANT_COMPAT_EVTCHN_API
2116 #undef XC_WANT_COMPAT_GNTTAB_API
2117 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2118 #include <xenctrl.h>
2119 #include <xenstore.h>
2120 #include <xenevtchn.h>
2121 #include <xengnttab.h>
2122 #include <xenforeignmemory.h>
2124 #include <xen/hvm/hvm_info_table.h>
2125 #if !defined(HVM_MAX_VCPUS)
2126 # error HVM_MAX_VCPUS not defined
2129 xc_interface *xc = NULL;
2130 xenforeignmemory_handle *xfmem;
2131 xenevtchn_handle *xe;
2132 xengnttab_handle *xg;
2136 xc = xc_interface_open(0, 0, 0);
2137 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2138 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2139 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2140 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2142 xfmem = xenforeignmemory_open(0, 0);
2143 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2145 xe = xenevtchn_open(0, 0);
2148 xg = xengnttab_open(0, 0);
2149 xengnttab_map_grant_ref(xg, 0, 0, 0);
2154 compile_prog
"" "$xen_libs $xen_stable_libs"
2156 xen_ctrl_version
=40701
2161 cat > $TMPC <<EOF &&
2162 #include <xenctrl.h>
2163 #include <xenstore.h>
2165 #include <xen/hvm/hvm_info_table.h>
2166 #if !defined(HVM_MAX_VCPUS)
2167 # error HVM_MAX_VCPUS not defined
2172 xc = xc_interface_open(0, 0, 0);
2173 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2174 xc_gnttab_open(NULL, 0);
2175 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2176 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2177 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2178 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2182 compile_prog
"" "$xen_libs"
2184 xen_ctrl_version
=40600
2189 cat > $TMPC <<EOF &&
2190 #include <xenctrl.h>
2191 #include <xenstore.h>
2193 #include <xen/hvm/hvm_info_table.h>
2194 #if !defined(HVM_MAX_VCPUS)
2195 # error HVM_MAX_VCPUS not defined
2200 xc = xc_interface_open(0, 0, 0);
2201 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2202 xc_gnttab_open(NULL, 0);
2203 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2204 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2205 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2209 compile_prog
"" "$xen_libs"
2211 xen_ctrl_version
=40500
2215 cat > $TMPC <<EOF &&
2216 #include <xenctrl.h>
2217 #include <xenstore.h>
2219 #include <xen/hvm/hvm_info_table.h>
2220 #if !defined(HVM_MAX_VCPUS)
2221 # error HVM_MAX_VCPUS not defined
2226 xc = xc_interface_open(0, 0, 0);
2227 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2228 xc_gnttab_open(NULL, 0);
2229 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2230 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2234 compile_prog
"" "$xen_libs"
2236 xen_ctrl_version
=40200
2240 if test "$xen" = "enabled" ; then
2241 feature_not_found
"xen (unsupported version)" \
2242 "Install a supported xen (xen 4.2 or newer)"
2247 if test "$xen" = enabled
; then
2248 if test $xen_ctrl_version -ge 40701 ; then
2249 xen_libs
="$xen_libs $xen_stable_libs "
2255 ##########################################
2256 # RDMA needs OpenFabrics libraries
2257 if test "$rdma" != "no" ; then
2259 #include <rdma/rdma_cma.h>
2260 int main(void) { return 0; }
2262 rdma_libs
="-lrdmacm -libverbs -libumad"
2263 if compile_prog
"" "$rdma_libs" ; then
2266 if test "$rdma" = "yes" ; then
2268 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
2270 " (1) Fast: Install infiniband packages (devel) from your distro." \
2271 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2272 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2278 ##########################################
2281 cat > $TMPC <<EOF &&
2282 #include <sys/mman.h>
2289 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
2295 if test "$rdma" = "yes" ; then
2298 if compile_prog
"" ""; then
2305 if ! compile_prog
"" ""; then
2306 error_exit
"PVRDMA is not supported since mremap is not implemented"
2315 if test "$pvrdma" = "yes" ; then
2316 error_exit
"PVRDMA requires rdma suppport"
2321 # Let's see if enhanced reg_mr is supported
2322 if test "$pvrdma" = "yes" ; then
2324 cat > $TMPC <<EOF &&
2325 #include <infiniband/verbs.h>
2331 struct ibv_pd *pd = NULL;
2337 mr = ibv_reg_mr_iova(pd, addr, length, iova, access);
2344 if ! compile_prog
"" "-libverbs"; then
2345 QEMU_CFLAGS
="$QEMU_CFLAGS -DLEGACY_RDMA_REG_MR"
2349 ##########################################
2350 # xfsctl() probe, used for file-posix.c
2351 if test "$xfs" != "no" ; then
2353 #include <stddef.h> /* NULL */
2354 #include <xfs/xfs.h>
2357 xfsctl(NULL, 0, 0, NULL);
2361 if compile_prog
"" "" ; then
2364 if test "$xfs" = "yes" ; then
2365 feature_not_found
"xfs" "Install xfsprogs/xfslibs devel"
2371 ##########################################
2372 # plugin linker support probe
2374 if test "$plugins" != "no"; then
2376 #########################################
2377 # See if --dynamic-list is supported by the linker
2379 ld_dynamic_list
="no"
2402 if compile_prog
"" "-Wl,--dynamic-list=$TMPTXT" ; then
2403 ld_dynamic_list
="yes"
2406 #########################################
2407 # See if -exported_symbols_list is supported by the linker
2409 ld_exported_symbols_list
="no"
2414 if compile_prog
"" "-Wl,-exported_symbols_list,$TMPTXT" ; then
2415 ld_exported_symbols_list
="yes"
2418 if test "$ld_dynamic_list" = "no" &&
2419 test "$ld_exported_symbols_list" = "no" ; then
2420 if test "$plugins" = "yes"; then
2422 "Plugin support requires dynamic linking and specifying a set of symbols " \
2423 "that are exported to plugins. Unfortunately your linker doesn't " \
2424 "support the flag (--dynamic-list or -exported_symbols_list) used " \
2434 ##########################################
2435 # glib support probe
2438 glib_modules
=gthread-2.0
2439 if test "$modules" = yes; then
2440 glib_modules
="$glib_modules gmodule-export-2.0"
2441 elif test "$plugins" = "yes"; then
2442 glib_modules
="$glib_modules gmodule-no-export-2.0"
2445 for i
in $glib_modules; do
2446 if $pkg_config --atleast-version=$glib_req_ver $i; then
2447 glib_cflags
=$
($pkg_config --cflags $i)
2448 glib_libs
=$
($pkg_config --libs $i)
2450 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
2454 # This workaround is required due to a bug in pkg-config file for glib as it
2455 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
2457 if test "$static" = yes && test "$mingw32" = yes; then
2458 glib_cflags
="-DGLIB_STATIC_COMPILATION $glib_cflags"
2461 if ! test "$gio" = "no"; then
2463 if $pkg_config --atleast-version=$glib_req_ver gio-2.0
; then
2464 gio_cflags
=$
($pkg_config --cflags gio-2.0
)
2465 gio_libs
=$
($pkg_config --libs gio-2.0
)
2466 gdbus_codegen
=$
($pkg_config --variable=gdbus_codegen gio-2.0
)
2467 if ! has
"$gdbus_codegen"; then
2470 # Check that the libraries actually work -- Ubuntu 18.04 ships
2471 # with pkg-config --static --libs data for gio-2.0 that is missing
2472 # -lblkid and will give a link error.
2474 #include <gio/gio.h>
2477 g_dbus_proxy_new_sync(0, 0, 0, 0, 0, 0, 0, 0);
2481 if compile_prog
"$gio_cflags" "$gio_libs" ; then
2487 if test "$pass" = "yes" &&
2488 $pkg_config --atleast-version=$glib_req_ver gio-unix-2.0
; then
2489 gio_cflags
="$gio_cflags $($pkg_config --cflags gio-unix-2.0)"
2490 gio_libs
="$gio_libs $($pkg_config --libs gio-unix-2.0)"
2494 if test "$pass" = "no"; then
2495 if test "$gio" = "yes"; then
2496 feature_not_found
"gio" "Install libgio >= 2.0"
2505 # Sanity check that the current size_t matches the
2506 # size that glib thinks it should be. This catches
2507 # problems on multi-arch where people try to build
2508 # 32-bit QEMU while pointing at 64-bit glib headers
2513 #define QEMU_BUILD_BUG_ON(x) \
2514 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
2517 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
2522 if ! compile_prog
"$glib_cflags" "$glib_libs" ; then
2523 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
2524 "You probably need to set PKG_CONFIG_LIBDIR"\
2525 "to point to the right pkg-config files for your"\
2529 # Silence clang warnings triggered by glib < 2.57.2
2532 typedef struct Foo {
2535 static void foo_free(Foo *f)
2539 G_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free);
2540 int main(void) { return 0; }
2542 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
2543 if cc_has_warning_flag
"-Wno-unused-function"; then
2544 glib_cflags
="$glib_cflags -Wno-unused-function"
2545 CONFIGURE_CFLAGS
="$CONFIGURE_CFLAGS -Wno-unused-function"
2549 ##########################################
2550 # SHA command probe for modules
2551 if test "$modules" = yes; then
2552 shacmd_probe
="sha1sum sha1 shasum"
2553 for c
in $shacmd_probe; do
2559 if test "$shacmd" = ""; then
2560 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
2564 ##########################################
2566 if test "$libssh" != "no" ; then
2567 if $pkg_config --exists "libssh >= 0.8.7"; then
2568 libssh_cflags
=$
($pkg_config libssh
--cflags)
2569 libssh_libs
=$
($pkg_config libssh
--libs)
2572 if test "$libssh" = "yes" ; then
2573 error_exit
"libssh required for --enable-libssh"
2579 ##########################################
2580 # TPM emulation is only on POSIX
2582 if test "$tpm" = ""; then
2583 if test "$mingw32" = "yes"; then
2588 elif test "$tpm" = "yes"; then
2589 if test "$mingw32" = "yes" ; then
2590 error_exit
"TPM emulation only available on POSIX systems"
2594 ##########################################
2598 auto | enabled | internal
)
2599 # Simpler to always update submodule, even if not needed.
2600 git_submodules
="${git_submodules} dtc"
2604 ##########################################
2605 # opengl probe (for sdl2, gtk)
2607 if test "$opengl" != "no" ; then
2609 if $pkg_config epoxy
; then
2611 #include <epoxy/egl.h>
2612 int main(void) { return 0; }
2614 if compile_prog
"" "" ; then
2619 if test "$epoxy" = "yes" ; then
2620 opengl_cflags
="$($pkg_config --cflags epoxy)"
2621 opengl_libs
="$($pkg_config --libs epoxy)"
2624 if test "$opengl" = "yes" ; then
2625 feature_not_found
"opengl" "Please install epoxy with EGL"
2633 ##########################################
2636 if test "$numa" != "no" ; then
2639 int main(void) { return numa_available(); }
2642 if compile_prog
"" "-lnuma" ; then
2646 if test "$numa" = "yes" ; then
2647 feature_not_found
"numa" "install numactl devel"
2655 if test "$linux_user" = "yes"; then
2657 #include <linux/usbdevice_fs.h>
2659 #ifndef USBDEVFS_GET_CAPABILITIES
2660 #error "USBDEVFS_GET_CAPABILITIES undefined"
2663 #ifndef USBDEVFS_DISCONNECT_CLAIM
2664 #error "USBDEVFS_DISCONNECT_CLAIM undefined"
2672 if compile_prog
"" ""; then
2677 ##########################################
2678 # check if we have VSS SDK headers for win
2680 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
2681 test "$vss_win32_sdk" != "no" ; then
2682 case "$vss_win32_sdk" in
2683 "") vss_win32_include
="-isystem $source_path" ;;
2684 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
2685 # handle path with spaces. So we symlink the headers into ".sdk/vss".
2686 vss_win32_include
="-isystem $source_path/.sdk/vss"
2687 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
2689 *) vss_win32_include
="-isystem $vss_win32_sdk"
2692 #define __MIDL_user_allocate_free_DEFINED__
2693 #include <inc/win2003/vss.h>
2694 int main(void) { return VSS_CTX_BACKUP; }
2696 if compile_prog
"$vss_win32_include" "" ; then
2697 guest_agent_with_vss
="yes"
2698 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
2699 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
2700 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
2702 if test "$vss_win32_sdk" != "" ; then
2703 echo "ERROR: Please download and install Microsoft VSS SDK:"
2704 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
2705 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
2706 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
2707 echo "ERROR: The headers are extracted in the directory \`inc'."
2708 feature_not_found
"VSS support"
2710 guest_agent_with_vss
="no"
2714 ##########################################
2715 # lookup Windows platform SDK (if not specified)
2716 # The SDK is needed only to build .tlb (type library) file of guest agent
2717 # VSS provider from the source. It is usually unnecessary because the
2718 # pre-compiled .tlb file is included.
2720 if test "$mingw32" = "yes" && test "$guest_agent" != "no" && \
2721 test "$guest_agent_with_vss" = "yes" ; then
2722 if test -z "$win_sdk"; then
2723 programfiles
="$PROGRAMFILES"
2724 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
2725 if test -n "$programfiles"; then
2726 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
2728 feature_not_found
"Windows SDK"
2730 elif test "$win_sdk" = "no"; then
2735 ##########################################
2736 # check if mingw environment provides a recent ntddscsi.h
2737 if test "$mingw32" = "yes" && test "$guest_agent" != "no"; then
2739 #include <windows.h>
2740 #include <ntddscsi.h>
2742 #if !defined(IOCTL_SCSI_GET_ADDRESS)
2743 #error Missing required ioctl definitions
2745 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
2749 if compile_prog
"" "" ; then
2750 guest_agent_ntddscsi
=yes
2751 libs_qga
="-lsetupapi -lcfgmgr32 $libs_qga"
2755 ##########################################
2759 auto | enabled | internal
)
2760 # Simpler to always update submodule, even if not needed.
2761 git_submodules
="${git_submodules} capstone"
2765 ##########################################
2766 # check and set a backend for coroutine
2768 # We prefer ucontext, but it's not always possible. The fallback
2769 # is sigcontext. On Windows the only valid backend is the Windows
2773 if test "$darwin" != "yes"; then
2775 #include <ucontext.h>
2776 #ifdef __stub_makecontext
2777 #error Ignoring glibc stub makecontext which will always fail
2779 int main(void) { makecontext(0, 0, 0); return 0; }
2781 if compile_prog
"" "" ; then
2786 if test "$coroutine" = ""; then
2787 if test "$mingw32" = "yes"; then
2789 elif test "$ucontext_works" = "yes"; then
2792 coroutine
=sigaltstack
2797 if test "$mingw32" != "yes"; then
2798 error_exit
"'windows' coroutine backend only valid for Windows"
2800 # Unfortunately the user visible backend name doesn't match the
2801 # coroutine-*.c filename for this case, so we have to adjust it here.
2805 if test "$ucontext_works" != "yes"; then
2806 feature_not_found
"ucontext"
2810 if test "$mingw32" = "yes"; then
2811 error_exit
"only the 'windows' coroutine backend is valid for Windows"
2815 error_exit
"unknown coroutine backend $coroutine"
2820 if test "$coroutine_pool" = ""; then
2824 if test "$debug_stack_usage" = "yes"; then
2825 if test "$coroutine_pool" = "yes"; then
2826 echo "WARN: disabling coroutine pool for stack usage debugging"
2831 ##################################################
2835 if test "$safe_stack" = "yes"; then
2837 int main(int argc, char *argv[])
2839 #if ! __has_feature(safe_stack)
2840 #error SafeStack Disabled
2845 flag
="-fsanitize=safe-stack"
2846 # Check that safe-stack is supported and enabled.
2847 if compile_prog
"-Werror $flag" "$flag"; then
2848 # Flag needed both at compilation and at linking
2849 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
2850 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
2852 error_exit
"SafeStack not supported by your compiler"
2854 if test "$coroutine" != "ucontext"; then
2855 error_exit
"SafeStack is only supported by the coroutine backend ucontext"
2859 int main(int argc, char *argv[])
2861 #if defined(__has_feature)
2862 #if __has_feature(safe_stack)
2863 #error SafeStack Enabled
2869 if test "$safe_stack" = "no"; then
2870 # Make sure that safe-stack is disabled
2871 if ! compile_prog
"-Werror" ""; then
2872 # SafeStack was already enabled, try to explicitly remove the feature
2873 flag
="-fno-sanitize=safe-stack"
2874 if ! compile_prog
"-Werror $flag" "$flag"; then
2875 error_exit
"Configure cannot disable SafeStack"
2877 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
2878 QEMU_LDFLAGS
="$QEMU_LDFLAGS $flag"
2880 else # "$safe_stack" = ""
2881 # Set safe_stack to yes or no based on pre-existing flags
2882 if compile_prog
"-Werror" ""; then
2886 if test "$coroutine" != "ucontext"; then
2887 error_exit
"SafeStack is only supported by the coroutine backend ucontext"
2893 ########################################
2894 # check if cpuid.h is usable.
2899 unsigned a, b, c, d;
2900 int max = __get_cpuid_max(0, 0);
2903 __cpuid(1, a, b, c, d);
2907 __cpuid_count(7, 0, a, b, c, d);
2913 if compile_prog
"" "" ; then
2917 ##########################################
2918 # avx2 optimization requirement check
2920 # There is no point enabling this if cpuid.h is not usable,
2921 # since we won't be able to select the new routines.
2923 if test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then
2925 #pragma GCC push_options
2926 #pragma GCC target("avx2")
2928 #include <immintrin.h>
2929 static int bar(void *a) {
2930 __m256i x = *(__m256i *)a;
2931 return _mm256_testz_si256(x, x);
2933 int main(int argc, char *argv[]) { return bar(argv[0]); }
2935 if compile_object
"-Werror" ; then
2942 ##########################################
2943 # avx512f optimization requirement check
2945 # There is no point enabling this if cpuid.h is not usable,
2946 # since we won't be able to select the new routines.
2947 # by default, it is turned off.
2948 # if user explicitly want to enable it, check environment
2950 if test "$cpuid_h" = "yes" && test "$avx512f_opt" = "yes"; then
2952 #pragma GCC push_options
2953 #pragma GCC target("avx512f")
2955 #include <immintrin.h>
2956 static int bar(void *a) {
2957 __m512i x = *(__m512i *)a;
2958 return _mm512_test_epi64_mask(x, x);
2960 int main(int argc, char *argv[])
2962 return bar(argv[0]);
2965 if ! compile_object
"-Werror" ; then
2972 ########################################
2973 # check if __[u]int128_t is usable.
2986 if compile_prog
"" "" ; then
2990 #########################################
2991 # See if 128-bit atomic operations are supported.
2994 if test "$int128" = "yes"; then
2998 unsigned __int128 x = 0, y = 0;
2999 y = __atomic_load(&x, 0);
3000 __atomic_store(&x, y, 0);
3001 __atomic_compare_exchange(&x, &y, x, 0, 0, 0);
3005 if compile_prog
"" "" ; then
3011 if test "$int128" = yes && test "$atomic128" = no
; then
3015 unsigned __int128 x = 0, y = 0;
3016 __sync_val_compare_and_swap_16(&x, y, x);
3020 if compile_prog
"" "" ; then
3025 ########################################
3026 # check if ccache is interfering with
3027 # semantic analysis of macros
3032 static const int Z = 1;
3033 #define fn() ({ Z; })
3034 #define TAUT(X) ((X) == Z)
3035 #define PAREN(X, Y) (X == Y)
3037 int main(int argc, char *argv[])
3043 if (PAREN(x, y)) return 0;
3044 if (TAUT(Z)) return 0;
3049 if ! compile_object
"-Werror"; then
3053 #################################################
3054 # clang does not support glibc + FORTIFY_SOURCE.
3056 if test "$fortify_source" != "no"; then
3057 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
3058 fortify_source
="no";
3059 elif test -n "$cxx" && has
$cxx &&
3060 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
3061 fortify_source
="no";
3063 fortify_source
="yes"
3067 ##########################################
3068 # check for usable membarrier system call
3069 if test "$membarrier" = "yes"; then
3071 if test "$mingw32" = "yes" ; then
3073 elif test "$linux" = "yes" ; then
3075 #include <linux/membarrier.h>
3076 #include <sys/syscall.h>
3080 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
3081 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
3085 if compile_prog
"" "" ; then
3089 if test "$have_membarrier" = "no"; then
3090 feature_not_found
"membarrier" "membarrier system call not available"
3093 # Do not enable it by default even for Mingw32, because it doesn't
3098 ##########################################
3099 # check for usable AF_ALG environment
3103 #include <sys/types.h>
3104 #include <sys/socket.h>
3105 #include <linux/if_alg.h>
3108 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
3112 if compile_prog
"" "" ; then
3115 if test "$crypto_afalg" = "yes"
3117 if test "$have_afalg" != "yes"
3119 error_exit
"AF_ALG requested but could not be detected"
3124 ##########################################
3125 # checks for sanitizers
3129 have_asan_iface_h
=no
3130 have_asan_iface_fiber
=no
3132 if test "$sanitizers" = "yes" ; then
3134 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" ""; then
3138 # we could use a simple skeleton for flags checks, but this also
3139 # detect the static linking issue of ubsan, see also:
3140 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
3144 void *tmp = malloc(10);
3146 return *(int *)(tmp + 2);
3151 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
3155 if check_include
"sanitizer/asan_interface.h" ; then
3156 have_asan_iface_h
=yes
3160 #include <sanitizer/asan_interface.h>
3162 __sanitizer_start_switch_fiber(0, 0, 0);
3166 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
3167 have_asan_iface_fiber
=yes
3171 # Thread sanitizer is, for now, much noisier than the other sanitizers;
3172 # keep it separate until that is not the case.
3173 if test "$tsan" = "yes" && test "$sanitizers" = "yes"; then
3174 error_exit
"TSAN is not supported with other sanitiziers."
3177 have_tsan_iface_fiber
=no
3178 if test "$tsan" = "yes" ; then
3180 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then
3184 #include <sanitizer/tsan_interface.h>
3186 __tsan_create_fiber(0);
3190 if compile_prog
"$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then
3191 have_tsan_iface_fiber
=yes
3195 ##########################################
3199 auto | enabled | internal
)
3200 # Simpler to always update submodule, even if not needed.
3201 git_submodules
="${git_submodules} slirp"
3205 # Check for slirp smbd dupport
3206 : ${smbd=${SMBD-/usr/sbin/smbd}}
3207 if test "$slirp_smbd" != "no" ; then
3208 if test "$mingw32" = "yes" ; then
3209 if test "$slirp_smbd" = "yes" ; then
3210 error_exit
"Host smbd not supported on this platform."
3218 ##########################################
3219 # check for usable __NR_keyctl syscall
3221 if test "$linux" = "yes" ; then
3226 #include <asm/unistd.h>
3227 #include <linux/keyctl.h>
3230 return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0);
3233 if compile_prog
"" "" ; then
3237 if test "$secret_keyring" != "no"
3239 if test "$have_keyring" = "yes"
3243 if test "$secret_keyring" = "yes"
3245 error_exit
"syscall __NR_keyctl requested, \
3246 but not implemented on your system"
3253 ##########################################
3255 # After here, no more $cc or $ld runs
3259 if test "$gcov" = "yes" ; then
3261 elif test "$fortify_source" = "yes" ; then
3262 QEMU_CFLAGS
="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
3268 # Ensure there's only a single GP
3269 QEMU_CFLAGS
="-msmall-data $QEMU_CFLAGS"
3273 if test "$gprof" = "yes" ; then
3274 QEMU_CFLAGS
="-p $QEMU_CFLAGS"
3275 QEMU_LDFLAGS
="-p $QEMU_LDFLAGS"
3278 if test "$have_asan" = "yes"; then
3279 QEMU_CFLAGS
="-fsanitize=address $QEMU_CFLAGS"
3280 QEMU_LDFLAGS
="-fsanitize=address $QEMU_LDFLAGS"
3281 if test "$have_asan_iface_h" = "no" ; then
3282 echo "ASAN build enabled, but ASAN header missing." \
3283 "Without code annotation, the report may be inferior."
3284 elif test "$have_asan_iface_fiber" = "no" ; then
3285 echo "ASAN build enabled, but ASAN header is too old." \
3286 "Without code annotation, the report may be inferior."
3289 if test "$have_tsan" = "yes" ; then
3290 if test "$have_tsan_iface_fiber" = "yes" ; then
3291 QEMU_CFLAGS
="-fsanitize=thread $QEMU_CFLAGS"
3292 QEMU_LDFLAGS
="-fsanitize=thread $QEMU_LDFLAGS"
3294 error_exit
"Cannot enable TSAN due to missing fiber annotation interface."
3296 elif test "$tsan" = "yes" ; then
3297 error_exit
"Cannot enable TSAN due to missing sanitize thread interface."
3299 if test "$have_ubsan" = "yes"; then
3300 QEMU_CFLAGS
="-fsanitize=undefined $QEMU_CFLAGS"
3301 QEMU_LDFLAGS
="-fsanitize=undefined $QEMU_LDFLAGS"
3304 ##########################################
3306 # Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
3307 if test "$solaris" = "no" && test "$tsan" = "no"; then
3308 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
3309 QEMU_LDFLAGS
="-Wl,--warn-common $QEMU_LDFLAGS"
3313 # Use ASLR, no-SEH and DEP if available
3314 if test "$mingw32" = "yes" ; then
3315 flags
="--no-seh --nxcompat"
3317 # Disable ASLR for debug builds to allow debugging with gdb
3318 if test "$debug" = "no" ; then
3319 flags
="--dynamicbase $flags"
3322 for flag
in $flags; do
3323 if ld_has
$flag ; then
3324 QEMU_LDFLAGS
="-Wl,$flag $QEMU_LDFLAGS"
3329 # Probe for guest agent support/options
3331 if [ "$guest_agent" != "no" ]; then
3332 if [ "$softmmu" = no
-a "$want_tools" = no
] ; then
3334 elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
3336 elif [ "$guest_agent" != yes ]; then
3339 error_exit
"Guest agent is not supported on this platform"
3343 # Guest agent Windows MSI package
3345 if test "$QEMU_GA_MANUFACTURER" = ""; then
3346 QEMU_GA_MANUFACTURER
=QEMU
3348 if test "$QEMU_GA_DISTRO" = ""; then
3349 QEMU_GA_DISTRO
=Linux
3351 if test "$QEMU_GA_VERSION" = ""; then
3352 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
3355 QEMU_GA_MSI_MINGW_DLL_PATH
="$($pkg_config --variable=prefix glib-2.0)/bin"
3357 # Mac OS X ships with a broken assembler
3359 if { test "$cpu" = "i386" ||
test "$cpu" = "x86_64"; } && \
3360 test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \
3361 test "$targetos" != "Haiku" && test "$softmmu" = yes ; then
3362 # Different host OS linkers have different ideas about the name of the ELF
3363 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
3364 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
3365 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
3366 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
3367 ld_i386_emulation
="$emu"
3374 # Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
3375 # or -march=z10 (which is the lowest architecture level that Clang supports)
3376 if test "$cpu" = "s390x" ; then
3378 compile_prog
"-march=z900" ""
3380 if [ $has_z900 = 0 ] || compile_object
"-march=z10 -msoft-float -Werror"; then
3381 if [ $has_z900 != 0 ]; then
3382 echo "WARNING: Your compiler does not support the z900!"
3383 echo " The s390-ccw bios will only work with guest CPUs >= z10."
3385 roms
="$roms s390-ccw"
3386 # SLOF is required for building the s390-ccw firmware on s390x,
3387 # since it is using the libnet code from SLOF for network booting.
3388 git_submodules
="${git_submodules} roms/SLOF"
3392 # Check that the C++ compiler exists and works with the C compiler.
3393 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
3396 int c_function(void);
3397 int main(void) { return c_function(); }
3404 int c_function(void);
3406 int c_function(void) { return 42; }
3411 if do_cxx
$CXXFLAGS $EXTRA_CXXFLAGS $CONFIGURE_CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then
3412 # C++ compiler $cxx works ok with C compiler $cc
3415 echo "C++ compiler $cxx does not work with C compiler $cc"
3416 echo "Disabling C++ specific optional code"
3420 echo "No C++ compiler available; disabling C++ specific optional code"
3424 if !(GIT
="$git" "$source_path/scripts/git-submodule.sh" "$git_submodules_action" "$git_submodules"); then
3428 config_host_mak
="config-host.mak"
3430 echo "# Automatically generated by configure - do not modify" > $config_host_mak
3431 echo >> $config_host_mak
3433 echo all
: >> $config_host_mak
3434 echo "GIT=$git" >> $config_host_mak
3435 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
3436 echo "GIT_SUBMODULES_ACTION=$git_submodules_action" >> $config_host_mak
3438 echo "ARCH=$ARCH" >> $config_host_mak
3440 if test "$debug_tcg" = "yes" ; then
3441 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
3443 if test "$strip_opt" = "yes" ; then
3444 echo "STRIP=${strip}" >> $config_host_mak
3446 if test "$mingw32" = "yes" ; then
3447 echo "CONFIG_WIN32=y" >> $config_host_mak
3448 if test "$guest_agent_with_vss" = "yes" ; then
3449 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
3450 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
3451 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
3453 if test "$guest_agent_ntddscsi" = "yes" ; then
3454 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
3456 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
3457 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
3458 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
3459 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
3461 echo "CONFIG_POSIX=y" >> $config_host_mak
3464 if test "$linux" = "yes" ; then
3465 echo "CONFIG_LINUX=y" >> $config_host_mak
3468 if test "$darwin" = "yes" ; then
3469 echo "CONFIG_DARWIN=y" >> $config_host_mak
3472 if test "$solaris" = "yes" ; then
3473 echo "CONFIG_SOLARIS=y" >> $config_host_mak
3475 if test "$haiku" = "yes" ; then
3476 echo "CONFIG_HAIKU=y" >> $config_host_mak
3478 if test "$static" = "yes" ; then
3479 echo "CONFIG_STATIC=y" >> $config_host_mak
3481 if test "$profiler" = "yes" ; then
3482 echo "CONFIG_PROFILER=y" >> $config_host_mak
3484 if test "$want_tools" = "yes" ; then
3485 echo "CONFIG_TOOLS=y" >> $config_host_mak
3487 if test "$guest_agent" = "yes" ; then
3488 echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak
3490 if test "$slirp_smbd" = "yes" ; then
3491 echo "CONFIG_SLIRP_SMBD=y" >> $config_host_mak
3492 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
3494 if test "$gprof" = "yes" ; then
3495 echo "CONFIG_GPROF=y" >> $config_host_mak
3497 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
3498 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
3499 if test "$block_drv_whitelist_tools" = "yes" ; then
3500 echo "CONFIG_BDRV_WHITELIST_TOOLS=y" >> $config_host_mak
3502 if test "$xfs" = "yes" ; then
3503 echo "CONFIG_XFS=y" >> $config_host_mak
3505 qemu_version
=$
(head $source_path/VERSION
)
3506 echo "PKGVERSION=$pkgversion" >>$config_host_mak
3507 echo "SRC_PATH=$source_path" >> $config_host_mak
3508 echo "TARGET_DIRS=$target_list" >> $config_host_mak
3509 if test "$modules" = "yes"; then
3510 # $shacmd can generate a hash started with digit, which the compiler doesn't
3511 # like as an symbol. So prefix it with an underscore
3512 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
3513 echo "CONFIG_MODULES=y" >> $config_host_mak
3515 if test "$module_upgrades" = "yes"; then
3516 echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak
3518 if test "$have_usbfs" = "yes" ; then
3519 echo "CONFIG_USBFS=y" >> $config_host_mak
3521 if test "$gio" = "yes" ; then
3522 echo "CONFIG_GIO=y" >> $config_host_mak
3523 echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak
3524 echo "GIO_LIBS=$gio_libs" >> $config_host_mak
3526 if test "$gdbus_codegen" != "" ; then
3527 echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak
3529 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
3531 if test "$xen" = "enabled" ; then
3532 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
3533 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
3534 echo "XEN_CFLAGS=$xen_cflags" >> $config_host_mak
3535 echo "XEN_LIBS=$xen_libs" >> $config_host_mak
3537 if test "$vhost_scsi" = "yes" ; then
3538 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
3540 if test "$vhost_net" = "yes" ; then
3541 echo "CONFIG_VHOST_NET=y" >> $config_host_mak
3543 if test "$vhost_net_user" = "yes" ; then
3544 echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak
3546 if test "$vhost_net_vdpa" = "yes" ; then
3547 echo "CONFIG_VHOST_NET_VDPA=y" >> $config_host_mak
3549 if test "$vhost_crypto" = "yes" ; then
3550 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
3552 if test "$vhost_vsock" = "yes" ; then
3553 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
3554 if test "$vhost_user" = "yes" ; then
3555 echo "CONFIG_VHOST_USER_VSOCK=y" >> $config_host_mak
3558 if test "$vhost_kernel" = "yes" ; then
3559 echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak
3561 if test "$vhost_user" = "yes" ; then
3562 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
3564 if test "$vhost_vdpa" = "yes" ; then
3565 echo "CONFIG_VHOST_VDPA=y" >> $config_host_mak
3567 if test "$vhost_user_fs" = "yes" ; then
3568 echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak
3570 if test "$membarrier" = "yes" ; then
3571 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
3573 if test "$tcg" = "enabled" -a "$tcg_interpreter" = "true" ; then
3574 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
3577 if test "$opengl" = "yes" ; then
3578 echo "CONFIG_OPENGL=y" >> $config_host_mak
3579 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
3580 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
3583 if test "$avx2_opt" = "yes" ; then
3584 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
3587 if test "$avx512f_opt" = "yes" ; then
3588 echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
3591 # XXX: suppress that
3592 if [ "$bsd" = "yes" ] ; then
3593 echo "CONFIG_BSD=y" >> $config_host_mak
3596 if test "$qom_cast_debug" = "yes" ; then
3597 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
3600 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
3601 if test "$coroutine_pool" = "yes" ; then
3602 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
3604 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
3607 if test "$debug_stack_usage" = "yes" ; then
3608 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
3611 if test "$crypto_afalg" = "yes" ; then
3612 echo "CONFIG_AF_ALG=y" >> $config_host_mak
3615 if test "$have_asan_iface_fiber" = "yes" ; then
3616 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
3619 if test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then
3620 echo "CONFIG_TSAN=y" >> $config_host_mak
3623 if test "$cpuid_h" = "yes" ; then
3624 echo "CONFIG_CPUID_H=y" >> $config_host_mak
3627 if test "$int128" = "yes" ; then
3628 echo "CONFIG_INT128=y" >> $config_host_mak
3631 if test "$atomic128" = "yes" ; then
3632 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
3635 if test "$cmpxchg128" = "yes" ; then
3636 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
3639 if test "$libssh" = "yes" ; then
3640 echo "CONFIG_LIBSSH=y" >> $config_host_mak
3641 echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak
3642 echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak
3645 if test "$live_block_migration" = "yes" ; then
3646 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
3649 if test "$tpm" = "yes"; then
3650 echo 'CONFIG_TPM=y' >> $config_host_mak
3653 if test "$rdma" = "yes" ; then
3654 echo "CONFIG_RDMA=y" >> $config_host_mak
3655 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
3658 if test "$pvrdma" = "yes" ; then
3659 echo "CONFIG_PVRDMA=y" >> $config_host_mak
3662 if test "$replication" = "yes" ; then
3663 echo "CONFIG_REPLICATION=y" >> $config_host_mak
3666 if test "$debug_mutex" = "yes" ; then
3667 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
3670 if test "$bochs" = "yes" ; then
3671 echo "CONFIG_BOCHS=y" >> $config_host_mak
3673 if test "$cloop" = "yes" ; then
3674 echo "CONFIG_CLOOP=y" >> $config_host_mak
3676 if test "$dmg" = "yes" ; then
3677 echo "CONFIG_DMG=y" >> $config_host_mak
3679 if test "$qcow1" = "yes" ; then
3680 echo "CONFIG_QCOW1=y" >> $config_host_mak
3682 if test "$vdi" = "yes" ; then
3683 echo "CONFIG_VDI=y" >> $config_host_mak
3685 if test "$vvfat" = "yes" ; then
3686 echo "CONFIG_VVFAT=y" >> $config_host_mak
3688 if test "$qed" = "yes" ; then
3689 echo "CONFIG_QED=y" >> $config_host_mak
3691 if test "$parallels" = "yes" ; then
3692 echo "CONFIG_PARALLELS=y" >> $config_host_mak
3695 if test "$plugins" = "yes" ; then
3696 echo "CONFIG_PLUGIN=y" >> $config_host_mak
3697 # Copy the export object list to the build dir
3698 if test "$ld_dynamic_list" = "yes" ; then
3699 echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak
3700 ld_symbols
=qemu-plugins-ld.symbols
3701 cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols
3702 elif test "$ld_exported_symbols_list" = "yes" ; then
3703 echo "CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST=yes" >> $config_host_mak
3704 ld64_symbols
=qemu-plugins-ld64.symbols
3705 echo "# Automatically generated by configure - do not modify" > $ld64_symbols
3706 grep 'qemu_' "$source_path/plugins/qemu-plugins.symbols" |
sed 's/;//g' | \
3707 sed -E 's/^[[:space:]]*(.*)/_\1/' >> $ld64_symbols
3710 "If \$plugins=yes, either \$ld_dynamic_list or " \
3711 "\$ld_exported_symbols_list should have been set to 'yes'."
3715 if test -n "$gdb_bin"; then
3716 gdb_version
=$
($gdb_bin --version |
head -n 1)
3717 if version_ge
${gdb_version##* } 9.1; then
3718 echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak
3722 if test "$secret_keyring" = "yes" ; then
3723 echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak
3726 echo "ROMS=$roms" >> $config_host_mak
3727 echo "MAKE=$make" >> $config_host_mak
3728 echo "PYTHON=$python" >> $config_host_mak
3729 echo "GENISOIMAGE=$genisoimage" >> $config_host_mak
3730 echo "MESON=$meson" >> $config_host_mak
3731 echo "NINJA=$ninja" >> $config_host_mak
3732 echo "CC=$cc" >> $config_host_mak
3733 echo "HOST_CC=$host_cc" >> $config_host_mak
3734 if $iasl -h > /dev
/null
2>&1; then
3735 echo "CONFIG_IASL=$iasl" >> $config_host_mak
3737 echo "AR=$ar" >> $config_host_mak
3738 echo "AS=$as" >> $config_host_mak
3739 echo "CCAS=$ccas" >> $config_host_mak
3740 echo "CPP=$cpp" >> $config_host_mak
3741 echo "OBJCOPY=$objcopy" >> $config_host_mak
3742 echo "LD=$ld" >> $config_host_mak
3743 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
3744 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
3745 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
3746 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
3747 echo "GLIB_LIBS=$glib_libs" >> $config_host_mak
3748 echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
3749 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
3750 echo "EXESUF=$EXESUF" >> $config_host_mak
3751 echo "LIBS_QGA=$libs_qga" >> $config_host_mak
3753 if test "$rng_none" = "yes"; then
3754 echo "CONFIG_RNG_NONE=y" >> $config_host_mak
3757 # use included Linux headers
3758 if test "$linux" = "yes" ; then
3759 mkdir
-p linux-headers
3777 # For most CPUs the kernel architecture name and QEMU CPU name match.
3781 # For non-KVM architectures we will not have asm headers
3782 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
3783 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
3787 for target
in $target_list; do
3788 target_dir
="$target"
3789 target_name
=$
(echo $target | cut
-d '-' -f 1)
3790 mkdir
-p $target_dir
3792 *-user) symlink
"../qemu-$target_name" "$target_dir/qemu-$target_name" ;;
3793 *) symlink
"../qemu-system-$target_name" "$target_dir/qemu-system-$target_name" ;;
3797 echo "CONFIG_QEMU_INTERP_PREFIX=$interp_prefix" |
sed 's/%M/@0@/' >> $config_host_mak
3798 if test "$default_targets" = "yes"; then
3799 echo "CONFIG_DEFAULT_TARGETS=y" >> $config_host_mak
3802 if test "$numa" = "yes"; then
3803 echo "CONFIG_NUMA=y" >> $config_host_mak
3804 echo "NUMA_LIBS=$numa_libs" >> $config_host_mak
3807 if test "$ccache_cpp2" = "yes"; then
3808 echo "export CCACHE_CPP2=y" >> $config_host_mak
3811 if test "$safe_stack" = "yes"; then
3812 echo "CONFIG_SAFESTACK=y" >> $config_host_mak
3815 # If we're using a separate build tree, set it up now.
3816 # DIRS are directories which we simply mkdir in the build tree;
3817 # LINKS are things to symlink back into the source tree
3818 # (these can be both files and directories).
3819 # Caution: do not add files or directories here using wildcards. This
3820 # will result in problems later if a new file matching the wildcard is
3821 # added to the source tree -- nothing will cause configure to be rerun
3822 # so the build tree will be missing the link back to the new file, and
3823 # tests might fail. Prefer to keep the relevant files in their own
3824 # directory and symlink the directory instead.
3825 # UNLINK is used to remove symlinks from older development versions
3826 # that might get into the way when doing "git update" without doing
3827 # a "make distclean" in between.
3828 DIRS
="tests tests/tcg tests/qapi-schema tests/qtest/libqos"
3829 DIRS
="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
3830 DIRS
="$DIRS docs docs/interop fsdev scsi"
3831 DIRS
="$DIRS pc-bios/optionrom pc-bios/s390-ccw"
3832 DIRS
="$DIRS roms/seabios"
3833 DIRS
="$DIRS contrib/plugins/"
3835 LINKS
="$LINKS tests/tcg/Makefile.target"
3836 LINKS
="$LINKS pc-bios/optionrom/Makefile"
3837 LINKS
="$LINKS pc-bios/s390-ccw/Makefile"
3838 LINKS
="$LINKS roms/seabios/Makefile"
3839 LINKS
="$LINKS pc-bios/qemu-icon.bmp"
3840 LINKS
="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
3841 LINKS
="$LINKS tests/avocado tests/data"
3842 LINKS
="$LINKS tests/qemu-iotests/check"
3843 LINKS
="$LINKS python"
3844 LINKS
="$LINKS contrib/plugins/Makefile "
3845 UNLINK
="pc-bios/keymaps"
3847 $source_path/pc-bios
/*.bin \
3848 $source_path/pc-bios
/*.elf \
3849 $source_path/pc-bios
/*.lid \
3850 $source_path/pc-bios
/*.rom \
3851 $source_path/pc-bios
/*.dtb \
3852 $source_path/pc-bios
/*.img \
3853 $source_path/pc-bios
/openbios-
* \
3854 $source_path/pc-bios
/u-boot.
* \
3855 $source_path/pc-bios
/edk2-
*.fd.bz2 \
3856 $source_path/pc-bios
/palcode-
* \
3857 $source_path/pc-bios
/qemu_vga.ndrv
3860 LINKS
="$LINKS pc-bios/$(basename $bios_file)"
3863 for f
in $LINKS ; do
3864 if [ -e "$source_path/$f" ]; then
3865 symlink
"$source_path/$f" "$f"
3868 for f
in $UNLINK ; do
3869 if [ -L "$f" ]; then
3874 (for i
in $cross_cc_vars; do
3877 export target_list source_path use_containers ARCH
3878 $source_path/tests
/tcg
/configure.sh
)
3880 # temporary config to build submodules
3881 for rom
in seabios
; do
3882 config_mak
=roms
/$rom/config.mak
3883 echo "# Automatically generated by configure - do not modify" > $config_mak
3884 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
3885 echo "AS=$as" >> $config_mak
3886 echo "CCAS=$ccas" >> $config_mak
3887 echo "CC=$cc" >> $config_mak
3888 echo "BCC=bcc" >> $config_mak
3889 echo "CPP=$cpp" >> $config_mak
3890 echo "OBJCOPY=objcopy" >> $config_mak
3891 echo "IASL=$iasl" >> $config_mak
3892 echo "LD=$ld" >> $config_mak
3893 echo "RANLIB=$ranlib" >> $config_mak
3896 config_mak
=pc-bios
/optionrom
/config.mak
3897 echo "# Automatically generated by configure - do not modify" > $config_mak
3898 echo "TOPSRC_DIR=$source_path" >> $config_mak
3900 if test "$skip_meson" = no
; then
3901 cross
="config-meson.cross.new"
3903 test $# = 0 && return
3904 echo "'$(echo $* | sed "s
/ /','/g
")'"
3907 echo "# Automatically generated by configure - do not modify" > $cross
3908 echo "[properties]" >> $cross
3910 # unroll any custom device configs
3911 for a
in $device_archs; do
3912 eval "c=\$devices_${a}"
3913 echo "${a}-softmmu = '$c'" >> $cross
3916 test -z "$cxx" && echo "link_language = 'c'" >> $cross
3917 echo "[built-in options]" >> $cross
3918 echo "c_args = [$(meson_quote $CFLAGS $EXTRA_CFLAGS)]" >> $cross
3919 echo "cpp_args = [$(meson_quote $CXXFLAGS $EXTRA_CXXFLAGS)]" >> $cross
3920 echo "c_link_args = [$(meson_quote $CFLAGS $LDFLAGS $EXTRA_CFLAGS $EXTRA_LDFLAGS)]" >> $cross
3921 echo "cpp_link_args = [$(meson_quote $CXXFLAGS $LDFLAGS $EXTRA_CXXFLAGS $EXTRA_LDFLAGS)]" >> $cross
3922 echo "[binaries]" >> $cross
3923 echo "c = [$(meson_quote $cc $CPU_CFLAGS)]" >> $cross
3924 test -n "$cxx" && echo "cpp = [$(meson_quote $cxx $CPU_CFLAGS)]" >> $cross
3925 test -n "$objcc" && echo "objc = [$(meson_quote $objcc $CPU_CFLAGS)]" >> $cross
3926 echo "ar = [$(meson_quote $ar)]" >> $cross
3927 echo "nm = [$(meson_quote $nm)]" >> $cross
3928 echo "pkgconfig = [$(meson_quote $pkg_config_exe)]" >> $cross
3929 echo "ranlib = [$(meson_quote $ranlib)]" >> $cross
3930 if has
$sdl2_config; then
3931 echo "sdl2-config = [$(meson_quote $sdl2_config)]" >> $cross
3933 echo "strip = [$(meson_quote $strip)]" >> $cross
3934 echo "windres = [$(meson_quote $windres)]" >> $cross
3935 if test "$cross_compile" = "yes"; then
3936 cross_arg
="--cross-file config-meson.cross"
3937 echo "[host_machine]" >> $cross
3938 if test "$mingw32" = "yes" ; then
3939 echo "system = 'windows'" >> $cross
3941 if test "$linux" = "yes" ; then
3942 echo "system = 'linux'" >> $cross
3944 if test "$darwin" = "yes" ; then
3945 echo "system = 'darwin'" >> $cross
3949 echo "cpu_family = 'x86'" >> $cross
3952 echo "cpu_family = 'x86_64'" >> $cross
3955 echo "cpu_family = 'ppc64'" >> $cross
3958 echo "cpu_family = '$ARCH'" >> $cross
3961 echo "cpu = '$cpu'" >> $cross
3962 if test "$bigendian" = "yes" ; then
3963 echo "endian = 'big'" >> $cross
3965 echo "endian = 'little'" >> $cross
3968 cross_arg
="--native-file config-meson.cross"
3970 mv $cross config-meson.cross
3972 rm -rf meson-private meson-info meson-logs
3974 NINJA
=$ninja $meson setup \
3975 --prefix "$prefix" \
3976 --libdir "$libdir" \
3977 --libexecdir "$libexecdir" \
3978 --bindir "$bindir" \
3979 --includedir "$includedir" \
3980 --datadir "$datadir" \
3981 --mandir "$mandir" \
3982 --sysconfdir "$sysconfdir" \
3983 --localedir "$localedir" \
3984 --localstatedir "$local_statedir" \
3985 -Daudio_drv_list=$audio_drv_list \
3986 -Ddefault_devices=$default_devices \
3987 -Ddocdir="$docdir" \
3988 -Dqemu_firmwarepath="$firmwarepath" \
3989 -Dqemu_suffix="$qemu_suffix" \
3990 -Dsphinx_build="$sphinx_build" \
3991 -Dtrace_file="$trace_file" \
3992 -Doptimization=$
(if test "$debug" = yes; then echo 0; else echo 2; fi) \
3993 -Ddebug=$
(if test "$debug_info" = yes; then echo true
; else echo false
; fi) \
3994 -Dwerror=$
(if test "$werror" = yes; then echo true
; else echo false
; fi) \
3995 -Dstrip=$
(if test "$strip_opt" = yes; then echo true
; else echo false
; fi) \
3996 -Db_pie=$
(if test "$pie" = yes; then echo true
; else echo false
; fi) \
3997 -Db_coverage=$
(if test "$gcov" = yes; then echo true
; else echo false
; fi) \
3998 -Db_lto=$lto -Dcfi=$cfi -Dtcg=$tcg -Dxen=$xen \
3999 -Dcapstone=$capstone -Dfdt=$fdt -Dslirp=$slirp \
4000 $
(test -n "${LIB_FUZZING_ENGINE+xxx}" && echo "-Dfuzzing_engine=$LIB_FUZZING_ENGINE") \
4001 $
(if test "$default_feature" = no
; then echo "-Dauto_features=disabled"; fi) \
4002 "$@" $cross_arg "$PWD" "$source_path"
4004 eval run_meson
$meson_options
4005 if test "$?" -ne 0 ; then
4006 error_exit
"meson setup failed"
4009 if test -f meson-private
/cmd_line.txt
; then
4010 # Adjust old command line options whose type was changed
4011 # Avoids having to use "setup --wipe" when Meson is upgraded
4013 s/^gettext = true$/gettext = auto/;
4014 s/^gettext = false$/gettext = disabled/;
4015 /^b_staticpic/ && next;
4016 print;' meson-private
/cmd_line.txt
4020 if test -n "${deprecated_features}"; then
4021 echo "Warning, deprecated features enabled."
4022 echo "Please see docs/about/deprecated.rst"
4023 echo " features: ${deprecated_features}"
4026 # Create list of config switches that should be poisoned in common code...
4027 # but filter out CONFIG_TCG and CONFIG_USER_ONLY which are special.
4028 target_configs_h
=$
(ls *-config-devices.h
*-config-target.h
2>/dev
/null
)
4029 if test -n "$target_configs_h" ; then
4030 sed -n -e '/CONFIG_TCG/d' -e '/CONFIG_USER_ONLY/d' \
4031 -e '/^#define / { s///; s/ .*//; s/^/#pragma GCC poison /p; }' \
4032 $target_configs_h |
sort -u > config-poison.h
4037 # Save the configure command line for later reuse.
4038 cat <<EOD >config.status
4040 # Generated by configure.
4041 # Run this file to recreate the current configuration.
4042 # Compiler output produced by configure, useful for debugging
4043 # configure, is in config.log if it exists.
4049 eval envval
=\$
$envname
4051 if test -n "$envval"
4053 echo "$envname='$envval'" >> config.status
4054 echo "export $envname" >> config.status
4056 echo "unset $envname" >> config.status
4060 # Preserve various env variables that influence what
4061 # features/build target configure will detect
4068 preserve_env CXXFLAGS
4069 preserve_env INSTALL
4071 preserve_env LDFLAGS
4072 preserve_env LD_LIBRARY_PATH
4073 preserve_env LIBTOOL
4076 preserve_env OBJCOPY
4078 preserve_env PKG_CONFIG
4079 preserve_env PKG_CONFIG_LIBDIR
4080 preserve_env PKG_CONFIG_PATH
4082 preserve_env SDL2_CONFIG
4085 preserve_env WINDRES
4087 printf "exec" >>config.status
4088 for i
in "$0" "$@"; do
4089 test "$i" = --skip-meson ||
printf " %s" "$(quote_sh "$i")" >>config.status
4091 echo ' "$@"' >>config.status
4092 chmod +x config.status