3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE
= GREP_OPTIONS
=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE
=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
23 echo "ERROR: failed to create temporary directory"
28 TMPC
="${TMPDIR1}/${TMPB}.c"
29 TMPO
="${TMPDIR1}/${TMPB}.o"
30 TMPCXX
="${TMPDIR1}/${TMPB}.cxx"
31 TMPE
="${TMPDIR1}/${TMPB}.exe"
32 TMPMO
="${TMPDIR1}/${TMPB}.mo"
36 # Print a helpful header at the top of config.log
37 echo "# QEMU configure log $(date)" >> config.log
38 printf "# Configured with:" >> config.log
39 printf " '%s'" "$0" "$@" >> config.log
41 echo "#" >> config.log
46 while test -n "$2"; do
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
63 echo $compiler "$@" >> config.log
64 $compiler "$@" >> config.log
2>&1 ||
return $?
65 # Test passed. If this is an --enable-werror build, rerun
66 # the test with -Werror and bail out if it fails. This
67 # makes warning-generating-errors in configure test code
68 # obvious to developers.
69 if test "$werror" != "yes"; then
72 # Don't bother rerunning the compile if we were already using -Werror
78 echo $compiler -Werror "$@" >> config.log
79 $compiler -Werror "$@" >> config.log
2>&1 && return $?
80 error_exit
"configure test passed without -Werror but failed with -Werror." \
81 "This is probably a bug in the configure script. The failing command" \
82 "will be at the bottom of config.log." \
83 "You can run configure with --disable-werror to bypass this check."
87 do_compiler
"$cc" "$@"
91 do_compiler
"$cxx" "$@"
95 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
96 # options which some versions of GCC's C++ compiler complain about
97 # because they only make sense for C programs.
98 QEMU_CXXFLAGS
="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
100 for arg
in $QEMU_CFLAGS; do
102 -Wstrict-prototypes|
-Wmissing-prototypes|
-Wnested-externs|\
103 -Wold-style-declaration|
-Wold-style-definition|
-Wredundant-decls)
106 QEMU_CXXFLAGS
=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
114 do_cc
$QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
120 do_cc
$QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
123 # symbolically link $1 to $2. Portable version of "ln -sf".
126 mkdir
-p "$(dirname "$2")"
130 # check whether a command is available to this shell (may be either an
131 # executable or a builtin)
133 type "$1" >/dev
/null
2>&1
136 # search for an executable in PATH
142 # pathname has a dir component?
143 if [ "${local_command#*/}" != "$local_command" ]; then
144 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
145 echo "$local_command"
149 if [ -z "$local_command" ]; then
154 for local_dir
in $PATH; do
155 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
156 echo "$local_dir/$local_command"
157 IFS
="${local_ifs:-$(printf ' \t\n')}"
162 IFS
="${local_ifs:-$(printf ' \t\n')}"
167 echo "$trace_backends" |
grep "$1" >/dev
/null
171 eval test -z '"${1#'"$2"'}"'
174 supported_hax_target
() {
175 test "$hax" = "yes" ||
return 1
176 glob
"$1" "*-softmmu" ||
return 1
177 case "${1%-softmmu}" in
185 supported_kvm_target
() {
186 test "$kvm" = "yes" ||
return 1
187 glob
"$1" "*-softmmu" ||
return 1
188 case "${1%-softmmu}:$cpu" in
189 arm
:arm | aarch64
:aarch64 | \
190 i386
:i386 | i386
:x86_64 | i386
:x32 | \
191 x86_64
:i386 | x86_64
:x86_64 | x86_64
:x32 | \
192 mips
:mips | mipsel
:mips | \
193 ppc
:ppc | ppcemb
:ppc | ppc64
:ppc | \
194 ppc
:ppc64 | ppcemb
:ppc64 | ppc64
:ppc64 | \
202 supported_xen_target
() {
203 test "$xen" = "yes" ||
return 1
204 glob
"$1" "*-softmmu" ||
return 1
205 # Only i386 and x86_64 provide the xenpv machine.
206 case "${1%-softmmu}" in
214 supported_hvf_target
() {
215 test "$hvf" = "yes" ||
return 1
216 glob
"$1" "*-softmmu" ||
return 1
217 case "${1%-softmmu}" in
230 if test "$linux" != "yes"; then
231 print_error
"Target '$target' is only available on a Linux host"
236 if test "$bsd" != "yes"; then
237 print_error
"Target '$target' is only available on a BSD host"
242 print_error
"Invalid target name '$target'"
246 test "$tcg" = "yes" && return 0
247 supported_kvm_target
"$1" && return 0
248 supported_xen_target
"$1" && return 0
249 supported_hax_target
"$1" && return 0
250 supported_hvf_target
"$1" && return 0
251 print_error
"TCG disabled, but hardware accelerator not available for '$target'"
257 $ld --help 2>/dev
/null |
grep ".$1" >/dev
/null
2>&1
261 source_path
=$
(dirname "$0")
264 interp_prefix
="/usr/gnemul/qemu-%M"
268 block_drv_rw_whitelist
=""
269 block_drv_ro_whitelist
=""
275 cc_i386
=i386-pc-linux-gnu-gcc
280 if test -e "$source_path/.git"
283 git_submodules
="ui/keycodemapdb"
290 # Don't accept a target_list environment variable.
293 # Default value for a variable defining feature "foo".
294 # * foo="no" feature will only be used if --enable-foo arg is given
295 # * foo="" feature will be searched for, and if found, will be used
296 # unless --disable-foo is given
297 # * foo="yes" this value will only be set by --enable-foo flag.
298 # feature will searched for,
299 # if not found, configure exits with error
301 # Always add --enable-foo and --disable-foo command line args.
302 # Distributions want to ensure that several features are compiled in, and it
303 # is impossible without a --enable-foo that exits if a feature is not found.
325 xen_pv_domain_build
="no"
326 xen_pci_passthrough
=""
354 LDFLAGS_SHARED
="-shared"
357 mandir
="\${prefix}/share/man"
358 datadir
="\${prefix}/share"
359 firmwarepath
="\${prefix}/share/qemu-firmware"
360 qemu_docdir
="\${prefix}/share/doc/qemu"
361 bindir
="\${prefix}/bin"
362 libdir
="\${prefix}/lib"
363 libexecdir
="\${prefix}/libexec"
364 includedir
="\${prefix}/include"
365 sysconfdir
="\${prefix}/etc"
366 local_statedir
="\${prefix}/var"
399 guest_agent_with_vss
="no"
400 guest_agent_ntddscsi
="no"
409 debug_stack_usage
="no"
413 glusterfs_xlator_opt
="no"
414 glusterfs_discard
="no"
415 glusterfs_fallocate
="no"
416 glusterfs_zerofill
="no"
420 tls_priority
="NORMAL"
432 live_block_migration
="yes"
445 # parse CC options first
447 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
449 --cross-prefix=*) cross_prefix
="$optarg"
453 --cxx=*) CXX
="$optarg"
455 --source-path=*) source_path
="$optarg"
457 --cpu=*) cpu
="$optarg"
459 --extra-cflags=*) QEMU_CFLAGS
="$QEMU_CFLAGS $optarg"
460 EXTRA_CFLAGS
="$optarg"
462 --extra-cxxflags=*) QEMU_CXXFLAGS
="$QEMU_CXXFLAGS $optarg"
463 EXTRA_CXXFLAGS
="$optarg"
465 --extra-ldflags=*) LDFLAGS
="$LDFLAGS $optarg"
466 EXTRA_LDFLAGS
="$optarg"
468 --enable-debug-info) debug_info
="yes"
470 --disable-debug-info) debug_info
="no"
475 # Using uname is really, really broken. Once we have the right set of checks
476 # we can eliminate its usage altogether.
478 # Preferred compiler:
480 # ${cross_prefix}gcc (if cross-prefix specified)
482 if test -z "${CC}${cross_prefix}"; then
485 cc
="${CC-${cross_prefix}gcc}"
488 if test -z "${CXX}${cross_prefix}"; then
491 cxx
="${CXX-${cross_prefix}g++}"
494 ar="${AR-${cross_prefix}ar}"
495 as
="${AS-${cross_prefix}as}"
498 objcopy
="${OBJCOPY-${cross_prefix}objcopy}"
499 ld
="${LD-${cross_prefix}ld}"
500 ranlib
="${RANLIB-${cross_prefix}ranlib}"
501 nm
="${NM-${cross_prefix}nm}"
502 strip
="${STRIP-${cross_prefix}strip}"
503 windres
="${WINDRES-${cross_prefix}windres}"
504 pkg_config_exe
="${PKG_CONFIG-${cross_prefix}pkg-config}"
506 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
508 pkg_config
=query_pkg_config
509 sdl_config
="${SDL_CONFIG-${cross_prefix}sdl-config}"
510 sdl2_config
="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
512 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
513 ARFLAGS
="${ARFLAGS-rv}"
515 # default flags for all hosts
516 # We use -fwrapv to tell the compiler that we require a C dialect where
517 # left shift of signed integers is well defined and has the expected
518 # 2s-complement style results. (Both clang and gcc agree that it
519 # provides these semantics.)
520 QEMU_CFLAGS
="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
521 QEMU_CFLAGS
="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
522 QEMU_CFLAGS
="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
523 QEMU_CFLAGS
="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
524 QEMU_INCLUDES
="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include"
525 if test "$debug_info" = "yes"; then
527 LDFLAGS
="-g $LDFLAGS"
530 # make source path absolute
531 source_path
=$
(cd "$source_path"; pwd)
533 # running configure in the source tree?
534 # we know that's the case if configure is there.
535 if test -f "./configure"; then
536 pwd_is_source_path
="y"
538 pwd_is_source_path
="n"
544 #error $1 not defined
546 int main(void) { return 0; }
554 int main(void) { return 0; }
561 int main(void) { return 0; }
565 if check_define __linux__
; then
567 elif check_define _WIN32
; then
569 elif check_define __OpenBSD__
; then
571 elif check_define __sun__
; then
573 elif check_define __HAIKU__
; then
575 elif check_define __FreeBSD__
; then
577 elif check_define __FreeBSD_kernel__
&& check_define __GLIBC__
; then
578 targetos
='GNU/kFreeBSD'
579 elif check_define __DragonFly__
; then
581 elif check_define __NetBSD__
; then
583 elif check_define __APPLE__
; then
586 # This is a fatal error, but don't report it yet, because we
587 # might be going to just print the --help text, or it might
588 # be the result of a missing compiler.
593 # Some host OSes need non-standard checks for which CPU to use.
594 # Note that these checks are broken for cross-compilation: if you're
595 # cross-compiling to one of these OSes then you'll need to specify
596 # the correct CPU with the --cpu option.
599 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
600 # run 64-bit userspace code.
601 # If the user didn't specify a CPU explicitly and the kernel says this is
602 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
603 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
608 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
609 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
614 if test ! -z "$cpu" ; then
615 # command line argument
617 elif check_define __i386__
; then
619 elif check_define __x86_64__
; then
620 if check_define __ILP32__
; then
625 elif check_define __sparc__
; then
626 if check_define __arch64__
; then
631 elif check_define _ARCH_PPC
; then
632 if check_define _ARCH_PPC64
; then
637 elif check_define __mips__
; then
639 elif check_define __ia64__
; then
641 elif check_define __s390__
; then
642 if check_define __s390x__
; then
647 elif check_define __arm__
; then
649 elif check_define __aarch64__
; then
656 # Normalise host CPU name and set ARCH.
657 # Note that this case should only have supported host CPUs, not guests.
659 ppc|ppc64|s390|s390x|sparc64|x32
)
663 i386|i486|i586|i686|i86pc|BePC
)
688 # This will result in either an error or falling back to TCI later
692 if test -z "$ARCH"; then
698 # host *BSD for user mode
705 audio_possible_drivers
="dsound sdl"
706 if check_include dsound.h
; then
707 audio_drv_list
="dsound"
716 audio_possible_drivers
="oss sdl pa"
722 audio_possible_drivers
="oss sdl pa"
723 # needed for kinfo_getvmmap(3) in libutil.h
725 # needed for kinfo_getproc
726 libs_qga
="-lutil $libs_qga"
727 netmap
="" # enable netmap autodetect
728 HOST_VARIANT_DIR
="freebsd"
735 audio_possible_drivers
="oss sdl pa"
736 HOST_VARIANT_DIR
="dragonfly"
742 audio_possible_drivers
="oss sdl"
744 HOST_VARIANT_DIR
="netbsd"
751 audio_possible_drivers
="sdl"
752 HOST_VARIANT_DIR
="openbsd"
759 LDFLAGS_SHARED
="-bundle -undefined dynamic_lookup"
760 if [ "$cpu" = "x86_64" ] ; then
761 QEMU_CFLAGS
="-arch x86_64 $QEMU_CFLAGS"
762 LDFLAGS
="-arch x86_64 $LDFLAGS"
765 audio_drv_list
="coreaudio"
766 audio_possible_drivers
="coreaudio sdl"
767 LDFLAGS
="-framework CoreFoundation -framework IOKit $LDFLAGS"
768 libs_softmmu
="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
769 # Disable attempts to use ObjectiveC features in os/object.h since they
770 # won't work when we're compiling with gcc as a C compiler.
771 QEMU_CFLAGS
="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
772 HOST_VARIANT_DIR
="darwin"
778 install="${INSTALL-ginstall}"
779 smbd
="${SMBD-/usr/sfw/sbin/smbd}"
780 if test -f /usr
/include
/sys
/soundcard.h
; then
783 audio_possible_drivers
="oss sdl"
784 # needed for CMSG_ macros in sys/socket.h
785 QEMU_CFLAGS
="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
786 # needed for TIOCWIN* defines in termios.h
787 QEMU_CFLAGS
="-D__EXTENSIONS__ $QEMU_CFLAGS"
788 QEMU_CFLAGS
="-std=gnu99 $QEMU_CFLAGS"
789 solarisnetlibs
="-lsocket -lnsl -lresolv"
790 LIBS
="$solarisnetlibs $LIBS"
791 libs_qga
="$solarisnetlibs $libs_qga"
795 QEMU_CFLAGS
="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
796 LIBS
="-lposix_error_mapper -lnetwork $LIBS"
800 audio_possible_drivers
="oss alsa sdl pa"
807 QEMU_INCLUDES
="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
812 if [ "$bsd" = "yes" ] ; then
813 if [ "$darwin" != "yes" ] ; then
818 : ${make=${MAKE-make}}
819 : ${install=${INSTALL-install}}
820 : ${python=${PYTHON-python}}
821 : ${smbd=${SMBD-/usr/sbin/smbd}}
823 # Default objcc to clang if available, otherwise use CC
830 if test "$mingw32" = "yes" ; then
833 QEMU_CFLAGS
="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
834 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
835 QEMU_CFLAGS
="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
836 # MinGW needs -mthreads for TLS and macro _MT.
837 QEMU_CFLAGS
="-mthreads $QEMU_CFLAGS"
838 LIBS
="-lwinmm -lws2_32 -liphlpapi $LIBS"
840 if compile_prog
"" "-liberty" ; then
841 LIBS
="-liberty $LIBS"
843 prefix
="c:/Program Files/QEMU"
846 qemu_docdir
="\${prefix}"
848 sysconfdir
="\${prefix}"
851 libs_qga
="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
857 optarg
=$
(expr "x$opt" : 'x[^=]*=\(.*\)')
859 --help|
-h) show_help
=yes
861 --version|
-V) exec cat $source_path/VERSION
863 --prefix=*) prefix
="$optarg"
865 --interp-prefix=*) interp_prefix
="$optarg"
873 --host-cc=*) host_cc
="$optarg"
877 --iasl=*) iasl
="$optarg"
879 --objcc=*) objcc
="$optarg"
881 --make=*) make="$optarg"
883 --install=*) install="$optarg"
885 --python=*) python
="$optarg"
887 --gcov=*) gcov_tool
="$optarg"
889 --smbd=*) smbd
="$optarg"
899 --disable-debug-info)
909 --target-list=*) target_list
="$optarg"
911 --enable-trace-backends=*) trace_backends
="$optarg"
913 # XXX: backwards compatibility
914 --enable-trace-backend=*) trace_backends
="$optarg"
916 --with-trace-file=*) trace_file
="$optarg"
918 --enable-gprof) gprof
="yes"
920 --enable-gcov) gcov
="yes"
924 LDFLAGS
="-static $LDFLAGS"
925 QEMU_PKG_CONFIG_FLAGS
="--static $QEMU_PKG_CONFIG_FLAGS"
927 --mandir=*) mandir
="$optarg"
929 --bindir=*) bindir
="$optarg"
931 --libdir=*) libdir
="$optarg"
933 --libexecdir=*) libexecdir
="$optarg"
935 --includedir=*) includedir
="$optarg"
937 --datadir=*) datadir
="$optarg"
939 --with-confsuffix=*) confsuffix
="$optarg"
941 --docdir=*) qemu_docdir
="$optarg"
943 --sysconfdir=*) sysconfdir
="$optarg"
945 --localstatedir=*) local_statedir
="$optarg"
947 --firmwarepath=*) firmwarepath
="$optarg"
949 --sbindir=*|
--sharedstatedir=*|\
950 --oldincludedir=*|
--datarootdir=*|
--infodir=*|
--localedir=*|\
951 --htmldir=*|
--dvidir=*|
--pdfdir=*|
--psdir=*)
952 # These switches are silently ignored, for compatibility with
953 # autoconf-generated configure scripts. This allows QEMU's
954 # configure to be used by RPM and similar macros that set
955 # lots of directory switches by default.
957 --disable-sdl) sdl
="no"
959 --enable-sdl) sdl
="yes"
961 --with-sdlabi=*) sdlabi
="$optarg"
963 --disable-qom-cast-debug) qom_cast_debug
="no"
965 --enable-qom-cast-debug) qom_cast_debug
="yes"
967 --disable-virtfs) virtfs
="no"
969 --enable-virtfs) virtfs
="yes"
971 --disable-mpath) mpath
="no"
973 --enable-mpath) mpath
="yes"
975 --disable-vnc) vnc
="no"
977 --enable-vnc) vnc
="yes"
979 --oss-lib=*) oss_lib
="$optarg"
981 --audio-drv-list=*) audio_drv_list
="$optarg"
983 --block-drv-rw-whitelist=*|
--block-drv-whitelist=*) block_drv_rw_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
985 --block-drv-ro-whitelist=*) block_drv_ro_whitelist
=$
(echo "$optarg" |
sed -e 's/,/ /g')
987 --enable-debug-tcg) debug_tcg
="yes"
989 --disable-debug-tcg) debug_tcg
="no"
992 # Enable debugging options that aren't excessively noisy
998 --enable-sparse) sparse
="yes"
1000 --disable-sparse) sparse
="no"
1002 --disable-strip) strip_opt
="no"
1004 --disable-vnc-sasl) vnc_sasl
="no"
1006 --enable-vnc-sasl) vnc_sasl
="yes"
1008 --disable-vnc-jpeg) vnc_jpeg
="no"
1010 --enable-vnc-jpeg) vnc_jpeg
="yes"
1012 --disable-vnc-png) vnc_png
="no"
1014 --enable-vnc-png) vnc_png
="yes"
1016 --disable-slirp) slirp
="no"
1018 --disable-vde) vde
="no"
1020 --enable-vde) vde
="yes"
1022 --disable-netmap) netmap
="no"
1024 --enable-netmap) netmap
="yes"
1026 --disable-xen) xen
="no"
1028 --enable-xen) xen
="yes"
1030 --disable-xen-pci-passthrough) xen_pci_passthrough
="no"
1032 --enable-xen-pci-passthrough) xen_pci_passthrough
="yes"
1034 --disable-xen-pv-domain-build) xen_pv_domain_build
="no"
1036 --enable-xen-pv-domain-build) xen_pv_domain_build
="yes"
1038 --disable-brlapi) brlapi
="no"
1040 --enable-brlapi) brlapi
="yes"
1042 --disable-bluez) bluez
="no"
1044 --enable-bluez) bluez
="yes"
1046 --disable-kvm) kvm
="no"
1048 --enable-kvm) kvm
="yes"
1050 --disable-hax) hax
="no"
1052 --enable-hax) hax
="yes"
1054 --disable-hvf) hvf
="no"
1056 --enable-hvf) hvf
="yes"
1058 --disable-tcg-interpreter) tcg_interpreter
="no"
1060 --enable-tcg-interpreter) tcg_interpreter
="yes"
1062 --disable-cap-ng) cap_ng
="no"
1064 --enable-cap-ng) cap_ng
="yes"
1066 --disable-tcg) tcg
="no"
1068 --enable-tcg) tcg
="yes"
1070 --disable-malloc-trim) malloc_trim
="no"
1072 --enable-malloc-trim) malloc_trim
="yes"
1074 --disable-spice) spice
="no"
1076 --enable-spice) spice
="yes"
1078 --disable-libiscsi) libiscsi
="no"
1080 --enable-libiscsi) libiscsi
="yes"
1082 --disable-libnfs) libnfs
="no"
1084 --enable-libnfs) libnfs
="yes"
1086 --enable-profiler) profiler
="yes"
1088 --disable-cocoa) cocoa
="no"
1092 audio_drv_list
="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
1094 --disable-system) softmmu
="no"
1096 --enable-system) softmmu
="yes"
1103 --disable-linux-user) linux_user
="no"
1105 --enable-linux-user) linux_user
="yes"
1107 --disable-bsd-user) bsd_user
="no"
1109 --enable-bsd-user) bsd_user
="yes"
1111 --enable-pie) pie
="yes"
1113 --disable-pie) pie
="no"
1115 --enable-werror) werror
="yes"
1117 --disable-werror) werror
="no"
1119 --enable-stack-protector) stack_protector
="yes"
1121 --disable-stack-protector) stack_protector
="no"
1123 --disable-curses) curses
="no"
1125 --enable-curses) curses
="yes"
1127 --disable-curl) curl
="no"
1129 --enable-curl) curl
="yes"
1131 --disable-fdt) fdt
="no"
1133 --enable-fdt) fdt
="yes"
1135 --disable-linux-aio) linux_aio
="no"
1137 --enable-linux-aio) linux_aio
="yes"
1139 --disable-attr) attr
="no"
1141 --enable-attr) attr
="yes"
1143 --disable-blobs) blobs
="no"
1145 --with-pkgversion=*) pkgversion
=" ($optarg)"
1147 --with-coroutine=*) coroutine
="$optarg"
1149 --disable-coroutine-pool) coroutine_pool
="no"
1151 --enable-coroutine-pool) coroutine_pool
="yes"
1153 --enable-debug-stack-usage) debug_stack_usage
="yes"
1155 --enable-crypto-afalg) crypto_afalg
="yes"
1157 --disable-crypto-afalg) crypto_afalg
="no"
1159 --disable-docs) docs
="no"
1161 --enable-docs) docs
="yes"
1163 --disable-vhost-net) vhost_net
="no"
1165 --enable-vhost-net) vhost_net
="yes"
1167 --disable-vhost-scsi) vhost_scsi
="no"
1169 --enable-vhost-scsi) vhost_scsi
="yes"
1171 --disable-vhost-vsock) vhost_vsock
="no"
1173 --enable-vhost-vsock) vhost_vsock
="yes"
1175 --disable-opengl) opengl
="no"
1177 --enable-opengl) opengl
="yes"
1179 --disable-rbd) rbd
="no"
1181 --enable-rbd) rbd
="yes"
1183 --disable-xfsctl) xfs
="no"
1185 --enable-xfsctl) xfs
="yes"
1187 --disable-smartcard) smartcard
="no"
1189 --enable-smartcard) smartcard
="yes"
1191 --disable-libusb) libusb
="no"
1193 --enable-libusb) libusb
="yes"
1195 --disable-usb-redir) usb_redir
="no"
1197 --enable-usb-redir) usb_redir
="yes"
1199 --disable-zlib-test) zlib
="no"
1201 --disable-lzo) lzo
="no"
1203 --enable-lzo) lzo
="yes"
1205 --disable-snappy) snappy
="no"
1207 --enable-snappy) snappy
="yes"
1209 --disable-bzip2) bzip2="no"
1211 --enable-bzip2) bzip2="yes"
1213 --enable-guest-agent) guest_agent
="yes"
1215 --disable-guest-agent) guest_agent
="no"
1217 --enable-guest-agent-msi) guest_agent_msi
="yes"
1219 --disable-guest-agent-msi) guest_agent_msi
="no"
1221 --with-vss-sdk) vss_win32_sdk
=""
1223 --with-vss-sdk=*) vss_win32_sdk
="$optarg"
1225 --without-vss-sdk) vss_win32_sdk
="no"
1227 --with-win-sdk) win_sdk
=""
1229 --with-win-sdk=*) win_sdk
="$optarg"
1231 --without-win-sdk) win_sdk
="no"
1233 --enable-tools) want_tools
="yes"
1235 --disable-tools) want_tools
="no"
1237 --enable-seccomp) seccomp
="yes"
1239 --disable-seccomp) seccomp
="no"
1241 --disable-glusterfs) glusterfs
="no"
1243 --enable-glusterfs) glusterfs
="yes"
1245 --disable-virtio-blk-data-plane|
--enable-virtio-blk-data-plane)
1246 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1248 --enable-vhdx|
--disable-vhdx)
1249 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1251 --enable-uuid|
--disable-uuid)
1252 echo "$0: $opt is obsolete, UUID support is always built" >&2
1254 --disable-gtk) gtk
="no"
1256 --enable-gtk) gtk
="yes"
1258 --tls-priority=*) tls_priority
="$optarg"
1260 --disable-gnutls) gnutls
="no"
1262 --enable-gnutls) gnutls
="yes"
1264 --disable-nettle) nettle
="no"
1266 --enable-nettle) nettle
="yes"
1268 --disable-gcrypt) gcrypt
="no"
1270 --enable-gcrypt) gcrypt
="yes"
1272 --enable-rdma) rdma
="yes"
1274 --disable-rdma) rdma
="no"
1276 --with-gtkabi=*) gtkabi
="$optarg"
1278 --disable-vte) vte
="no"
1280 --enable-vte) vte
="yes"
1282 --disable-virglrenderer) virglrenderer
="no"
1284 --enable-virglrenderer) virglrenderer
="yes"
1286 --disable-tpm) tpm
="no"
1288 --enable-tpm) tpm
="yes"
1290 --disable-libssh2) libssh2
="no"
1292 --enable-libssh2) libssh2
="yes"
1294 --disable-live-block-migration) live_block_migration
="no"
1296 --enable-live-block-migration) live_block_migration
="yes"
1298 --disable-numa) numa
="no"
1300 --enable-numa) numa
="yes"
1302 --disable-libxml2) libxml2
="no"
1304 --enable-libxml2) libxml2
="yes"
1306 --disable-tcmalloc) tcmalloc
="no"
1308 --enable-tcmalloc) tcmalloc
="yes"
1310 --disable-jemalloc) jemalloc
="no"
1312 --enable-jemalloc) jemalloc
="yes"
1314 --disable-replication) replication
="no"
1316 --enable-replication) replication
="yes"
1318 --disable-vxhs) vxhs
="no"
1320 --enable-vxhs) vxhs
="yes"
1322 --disable-vhost-user) vhost_user
="no"
1324 --enable-vhost-user)
1326 if test "$mingw32" = "yes"; then
1327 error_exit
"vhost-user isn't available on win32"
1330 --disable-capstone) capstone
="no"
1332 --enable-capstone) capstone
="yes"
1334 --enable-capstone=git
) capstone
="git"
1336 --enable-capstone=system
) capstone
="system"
1338 --with-git=*) git
="$optarg"
1340 --enable-git-update) git_update
=yes
1342 --disable-git-update) git_update
=no
1345 echo "ERROR: unknown option $opt"
1346 echo "Try '$0 --help' for more information"
1352 if test "$vhost_user" = ""; then
1353 if test "$mingw32" = "yes"; then
1363 LDFLAGS
="-m32 $LDFLAGS"
1367 LDFLAGS
="-m64 $LDFLAGS"
1370 CPU_CFLAGS
="-m32 -mv8plus -mcpu=ultrasparc"
1371 LDFLAGS
="-m32 -mv8plus $LDFLAGS"
1374 CPU_CFLAGS
="-m64 -mcpu=ultrasparc"
1375 LDFLAGS
="-m64 $LDFLAGS"
1379 LDFLAGS
="-m31 $LDFLAGS"
1383 LDFLAGS
="-m64 $LDFLAGS"
1387 LDFLAGS
="-m32 $LDFLAGS"
1388 cc_i386
='$(CC) -m32'
1391 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1392 # If we truly care, we should simply detect this case at
1393 # runtime and generate the fallback to serial emulation.
1394 CPU_CFLAGS
="-m64 -mcx16"
1395 LDFLAGS
="-m64 $LDFLAGS"
1396 cc_i386
='$(CC) -m32'
1400 LDFLAGS
="-mx32 $LDFLAGS"
1401 cc_i386
='$(CC) -m32'
1403 # No special flags required for other host CPUs
1406 QEMU_CFLAGS
="$CPU_CFLAGS $QEMU_CFLAGS"
1407 EXTRA_CFLAGS
="$CPU_CFLAGS $EXTRA_CFLAGS"
1409 # For user-mode emulation the host arch has to be one we explicitly
1410 # support, even if we're using TCI.
1411 if [ "$ARCH" = "unknown" ]; then
1416 default_target_list
=""
1420 if [ "$softmmu" = "yes" ]; then
1421 mak_wilds
="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1423 if [ "$linux_user" = "yes" ]; then
1424 mak_wilds
="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1426 if [ "$bsd_user" = "yes" ]; then
1427 mak_wilds
="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1430 for config
in $mak_wilds; do
1431 default_target_list
="${default_target_list} $(basename "$config" .mak)"
1434 # Enumerate public trace backends for --help output
1435 trace_backend_list
=$
(echo $
(grep -le '^PUBLIC = True$' "$source_path"/scripts
/tracetool
/backend
/*.py |
sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1437 if test x
"$show_help" = x
"yes" ; then
1440 Usage: configure [options]
1441 Options: [defaults in brackets after descriptions]
1444 --help print this message
1445 --prefix=PREFIX install in PREFIX [$prefix]
1446 --interp-prefix=PREFIX where to find shared libraries, etc.
1447 use %M for cpu name [$interp_prefix]
1448 --target-list=LIST set target list (default: build everything)
1449 $(echo Available targets: $default_target_list | \
1450 fold -s -w 53 | sed -e 's/^/ /')
1452 Advanced options (experts only):
1453 --source-path=PATH path of source code [$source_path]
1454 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1455 --cc=CC use C compiler CC [$cc]
1456 --iasl=IASL use ACPI compiler IASL [$iasl]
1457 --host-cc=CC use C compiler CC [$host_cc] for code run at
1459 --cxx=CXX use C++ compiler CXX [$cxx]
1460 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1461 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1462 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
1463 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1464 --make=MAKE use specified make [$make]
1465 --install=INSTALL use specified install [$install]
1466 --python=PYTHON use specified python [$python]
1467 --smbd=SMBD use specified smbd [$smbd]
1468 --static enable static build [$static]
1469 --mandir=PATH install man pages in PATH
1470 --datadir=PATH install firmware in PATH$confsuffix
1471 --docdir=PATH install documentation in PATH$confsuffix
1472 --bindir=PATH install binaries in PATH
1473 --libdir=PATH install libraries in PATH
1474 --sysconfdir=PATH install config in PATH$confsuffix
1475 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1476 --firmwarepath=PATH search PATH for firmware files
1477 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1478 --enable-debug enable common debug build options
1479 --disable-strip disable stripping binaries
1480 --disable-werror disable compilation abort on warning
1481 --disable-stack-protector disable compiler-provided stack protection
1482 --audio-drv-list=LIST set audio drivers list:
1483 Available drivers: $audio_possible_drivers
1484 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1485 --block-drv-rw-whitelist=L
1486 set block driver read-write whitelist
1487 (affects only QEMU, not qemu-img)
1488 --block-drv-ro-whitelist=L
1489 set block driver read-only whitelist
1490 (affects only QEMU, not qemu-img)
1491 --enable-trace-backends=B Set trace backend
1492 Available backends: $trace_backend_list
1493 --with-trace-file=NAME Full PATH,NAME of file to store traces
1495 --disable-slirp disable SLIRP userspace network connectivity
1496 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1497 --enable-malloc-trim enable libc malloc_trim() for memory optimization
1498 --oss-lib path to OSS library
1499 --cpu=CPU Build for host CPU [$cpu]
1500 --with-coroutine=BACKEND coroutine backend. Supported options:
1501 ucontext, sigaltstack, windows
1502 --enable-gcov enable test coverage analysis with gcov
1503 --gcov=GCOV use specified gcov [$gcov_tool]
1504 --disable-blobs disable installing provided firmware blobs
1505 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1506 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1507 --tls-priority default TLS protocol/cipher priority string
1508 --enable-gprof QEMU profiling with gprof
1509 --enable-profiler profiler support
1510 --enable-xen-pv-domain-build
1511 xen pv domain builder
1512 --enable-debug-stack-usage
1513 track the maximum stack usage of stacks created by qemu_alloc_stack
1515 Optional features, enabled with --enable-FEATURE and
1516 disabled with --disable-FEATURE, default is enabled if available:
1518 system all system emulation targets
1519 user supported user emulation targets
1520 linux-user all linux usermode emulation targets
1521 bsd-user all BSD usermode emulation targets
1522 docs build documentation
1523 guest-agent build the QEMU Guest Agent
1524 guest-agent-msi build guest agent Windows MSI installation package
1525 pie Position Independent Executables
1526 modules modules support
1527 debug-tcg TCG debugging (default is disabled)
1528 debug-info debugging information
1529 sparse sparse checker
1531 gnutls GNUTLS cryptography support
1532 nettle nettle cryptography support
1533 gcrypt libgcrypt cryptography support
1535 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1537 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1538 vte vte support for the gtk UI
1541 vnc-sasl SASL encryption for VNC server
1542 vnc-jpeg JPEG lossy compression for VNC server
1543 vnc-png PNG compression for VNC server
1544 cocoa Cocoa UI (Mac OS X only)
1546 mpath Multipath persistent reservation passthrough
1547 xen xen backend driver support
1549 brlapi BrlAPI (Braile)
1550 curl curl connectivity
1552 bluez bluez stack connectivity
1553 kvm KVM acceleration support
1554 hax HAX acceleration support
1555 hvf Hypervisor.framework acceleration support
1556 rdma RDMA-based migration support
1557 vde support for vde network
1558 netmap support for netmap network
1559 linux-aio Linux AIO support
1560 cap-ng libcap-ng support
1561 attr attr and xattr support
1562 vhost-net vhost-net acceleration support
1564 rbd rados block device (rbd)
1565 libiscsi iscsi support
1567 smartcard smartcard support (libcacard)
1568 libusb libusb (for usb passthrough)
1569 live-block-migration Block migration in the main migration stream
1570 usb-redir usb network redirection support
1571 lzo support of lzo compression library
1572 snappy support of snappy compression library
1573 bzip2 support of bzip2 compression library
1574 (for reading bzip2-compressed dmg images)
1575 seccomp seccomp support
1576 coroutine-pool coroutine freelist (better performance)
1577 glusterfs GlusterFS backend
1579 libssh2 ssh block device support
1580 numa libnuma support
1581 libxml2 for Parallels image format
1582 tcmalloc tcmalloc support
1583 jemalloc jemalloc support
1584 replication replication support
1585 vhost-vsock virtio sockets device support
1586 opengl opengl support
1587 virglrenderer virgl rendering support
1588 xfsctl xfsctl support
1589 qom-cast-debug cast debugging support
1590 tools build qemu-io, qemu-nbd and qemu-image tools
1591 vxhs Veritas HyperScale vDisk backend support
1592 crypto-afalg Linux AF_ALG crypto backend driver
1593 vhost-user vhost-user support
1594 capstone capstone disassembler support
1596 NOTE: The object files are built at the place where configure is launched
1601 if ! has
$python; then
1602 error_exit
"Python not found. Use --python=/path/to/python"
1605 # Note that if the Python conditional here evaluates True we will exit
1606 # with status 1 which is a shell 'false' value.
1607 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6))'; then
1608 error_exit
"Cannot use '$python', Python 2 >= 2.6 or Python 3 is required." \
1609 "Use --python=/path/to/python to specify a supported Python."
1612 # Suppress writing compiled files
1615 # Check that the C compiler works. Doing this here before testing
1616 # the host CPU ensures that we had a valid CC to autodetect the
1617 # $cpu var (and we should bail right here if that's not the case).
1618 # It also allows the help message to be printed without a CC.
1620 if compile_object
; then
1621 : C compiler works ok
1623 error_exit
"\"$cc\" either does not exist or does not work"
1625 if ! compile_prog
; then
1626 error_exit
"\"$cc\" cannot build an executable (is your linker broken?)"
1629 # Now we have handled --enable-tcg-interpreter and know we're not just
1630 # printing the help message, bail out if the host CPU isn't supported.
1631 if test "$ARCH" = "unknown"; then
1632 if test "$tcg_interpreter" = "yes" ; then
1633 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1635 error_exit
"Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1639 # Consult white-list to determine whether to enable werror
1640 # by default. Only enable by default for git builds
1641 if test -z "$werror" ; then
1642 if test -d "$source_path/.git" -a \
1643 \
( "$linux" = "yes" -o "$mingw32" = "yes" \
) ; then
1650 if test "$bogus_os" = "yes"; then
1651 # Now that we know that we're not printing the help and that
1652 # the compiler works (so the results of the check_defines we used
1653 # to identify the OS are reliable), if we didn't recognize the
1654 # host OS we should stop now.
1655 error_exit
"Unrecognized host OS (uname -s reports '$(uname -s)')"
1658 gcc_flags
="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1659 gcc_flags
="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1660 gcc_flags
="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1661 gcc_flags
="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1662 gcc_flags
="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
1663 gcc_flags
="-Wno-string-plus-int $gcc_flags"
1664 # Note that we do not add -Werror to gcc_flags here, because that would
1665 # enable it for all configure tests. If a configure test failed due
1666 # to -Werror this would just silently disable some features,
1667 # so it's too error prone.
1669 cc_has_warning_flag
() {
1672 # Use the positive sense of the flag when testing for -Wno-wombat
1673 # support (gcc will happily accept the -Wno- form of unknown
1675 optflag
="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1676 compile_prog
"-Werror $optflag" ""
1679 for flag
in $gcc_flags; do
1680 if cc_has_warning_flag
$flag ; then
1681 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1685 if test "$stack_protector" != "no"; then
1687 int main(int argc, char *argv[])
1689 char arr[64], *p = arr, *c = argv[0];
1696 gcc_flags
="-fstack-protector-strong -fstack-protector-all"
1698 for flag
in $gcc_flags; do
1699 # We need to check both a compile and a link, since some compiler
1700 # setups fail only on a .c->.o compile and some only at link time
1701 if do_cc
$QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1702 compile_prog
"-Werror $flag" ""; then
1703 QEMU_CFLAGS
="$QEMU_CFLAGS $flag"
1708 if test "$stack_protector" = yes; then
1709 if test $sp_on = 0; then
1710 error_exit
"Stack protector not supported"
1715 # Disable -Wmissing-braces on older compilers that warn even for
1716 # the "universal" C zero initializer {0}.
1722 if compile_object
"-Werror" "" ; then
1725 QEMU_CFLAGS
="$QEMU_CFLAGS -Wno-missing-braces"
1728 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1729 # large functions that use global variables. The bug is in all releases of
1730 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1731 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1733 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1734 int main(void) { return 0; }
1736 #error No bug in this compiler.
1739 if compile_prog
"-Werror -fno-gcse" "" ; then
1740 TRANSLATE_OPT_CFLAGS
=-fno-gcse
1743 if test "$static" = "yes" ; then
1744 if test "$modules" = "yes" ; then
1745 error_exit
"static and modules are mutually incompatible"
1747 if test "$pie" = "yes" ; then
1748 error_exit
"static and pie are mutually incompatible"
1754 # Unconditional check for compiler __thread support
1756 static __thread int tls_var;
1757 int main(void) { return tls_var; }
1760 if ! compile_prog
"-Werror" "" ; then
1761 error_exit
"Your compiler does not support the __thread specifier for " \
1762 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1765 if test "$pie" = ""; then
1766 case "$cpu-$targetos" in
1767 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD
)
1775 if test "$pie" != "no" ; then
1779 # define THREAD __thread
1784 static THREAD int tls_var;
1786 int main(void) { return tls_var; }
1789 if compile_prog
"-fPIE -DPIE" "-pie"; then
1790 QEMU_CFLAGS
="-fPIE -DPIE $QEMU_CFLAGS"
1791 LDFLAGS
="-pie $LDFLAGS"
1793 if compile_prog
"" "-Wl,-z,relro -Wl,-z,now" ; then
1794 LDFLAGS
="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1797 if test "$pie" = "yes"; then
1798 error_exit
"PIE not available due to missing toolchain support"
1800 echo "Disabling PIE due to missing toolchain support"
1805 if compile_prog
"-Werror -fno-pie" "-nopie"; then
1806 CFLAGS_NOPIE
="-fno-pie"
1807 LDFLAGS_NOPIE
="-nopie"
1811 ##########################################
1812 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1813 # use i686 as default anyway, but for those that don't, an explicit
1814 # specification is necessary
1816 if test "$cpu" = "i386"; then
1818 static int sfaa(int *ptr)
1820 return __sync_fetch_and_and(ptr, 0);
1826 val = __sync_val_compare_and_swap(&val, 0, 1);
1831 if ! compile_prog
"" "" ; then
1832 QEMU_CFLAGS
="-march=i486 $QEMU_CFLAGS"
1836 #########################################
1837 # Solaris specific configure tool chain decisions
1839 if test "$solaris" = "yes" ; then
1840 if has
$install; then
1843 error_exit
"Solaris install program not found. Use --install=/usr/ucb/install or" \
1844 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1845 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1847 if test "$(path_of $install)" = "/usr/sbin/install" ; then
1848 error_exit
"Solaris /usr/sbin/install is not an appropriate install program." \
1849 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1850 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1855 if test -f /usr
/ccs
/bin
/ar ; then
1856 error_exit
"No path includes ar" \
1857 "Add /usr/ccs/bin to your path and rerun configure"
1859 error_exit
"No path includes ar"
1863 if test -z "${target_list+xxx}" ; then
1864 for target
in $default_target_list; do
1865 supported_target
$target 2>/dev
/null
&& \
1866 target_list
="$target_list $target"
1868 target_list
="${target_list# }"
1870 target_list
=$
(echo "$target_list" |
sed -e 's/,/ /g')
1871 for target
in $target_list; do
1872 # Check that we recognised the target name; this allows a more
1873 # friendly error message than if we let it fall through.
1874 case " $default_target_list " in
1878 error_exit
"Unknown target name '$target'"
1881 supported_target
$target ||
exit 1
1885 # see if system emulation was really requested
1886 case " $target_list " in
1887 *"-softmmu "*) softmmu
=yes
1893 feature_not_found
() {
1897 error_exit
"User requested feature $feature" \
1898 "configure was not able to find it." \
1903 # big/little endian test
1905 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1906 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1907 extern int foo(short *, short *);
1908 int main(int argc, char *argv[]) {
1909 return foo(big_endian, little_endian);
1913 if compile_object
; then
1914 if grep -q BiGeNdIaN
$TMPO ; then
1916 elif grep -q LiTtLeEnDiAn
$TMPO ; then
1919 echo big
/little
test failed
1922 echo big
/little
test failed
1925 ##########################################
1926 # cocoa implies not SDL or GTK
1927 # (the cocoa UI code currently assumes it is always the active UI
1928 # and doesn't interact well with other UI frontend code)
1929 if test "$cocoa" = "yes"; then
1930 if test "$sdl" = "yes"; then
1931 error_exit
"Cocoa and SDL UIs cannot both be enabled at once"
1933 if test "$gtk" = "yes"; then
1934 error_exit
"Cocoa and GTK UIs cannot both be enabled at once"
1940 # Some versions of Mac OS X incorrectly define SIZE_MAX
1944 int main(int argc, char *argv[]) {
1945 return printf("%zu", SIZE_MAX);
1948 have_broken_size_max
=no
1949 if ! compile_object
-Werror ; then
1950 have_broken_size_max
=yes
1953 ##########################################
1957 #include <sys/socket.h>
1958 #include <linux/ip.h>
1959 int main(void) { return sizeof(struct mmsghdr); }
1961 if compile_prog
"" "" ; then
1967 ##########################################
1968 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1970 if test "$mingw32" = "yes"; then
1971 # Some versions of MinGW / Mingw-w64 lack localtime_r
1972 # and gmtime_r entirely.
1974 # Some versions of Mingw-w64 define a macro for
1975 # localtime_r/gmtime_r.
1977 # Some versions of Mingw-w64 will define functions
1978 # for localtime_r/gmtime_r, but only if you have
1979 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1980 # though, unistd.h and pthread.h both define
1983 # So this #undef localtime_r and #include <unistd.h>
1984 # are not in fact redundant.
1989 int main(void) { localtime_r(NULL, NULL); return 0; }
1991 if compile_prog
"" "" ; then
1998 ##########################################
2001 if ! has
"$pkg_config_exe"; then
2002 error_exit
"pkg-config binary '$pkg_config_exe' not found"
2005 ##########################################
2008 if test "$linux_user" = "yes"; then
2011 #include <linux/futex.h>
2013 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2019 if ! compile_object
; then
2020 feature_not_found
"nptl" "Install glibc and linux kernel headers."
2024 #########################################
2027 if test "$zlib" != "no" ; then
2030 int main(void) { zlibVersion(); return 0; }
2032 if compile_prog
"" "-lz" ; then
2035 error_exit
"zlib check failed" \
2036 "Make sure to have the zlib libs and headers installed."
2041 ##########################################
2044 if test "$lzo" != "no" ; then
2046 #include <lzo/lzo1x.h>
2047 int main(void) { lzo_version(); return 0; }
2049 if compile_prog
"" "-llzo2" ; then
2050 libs_softmmu
="$libs_softmmu -llzo2"
2053 if test "$lzo" = "yes"; then
2054 feature_not_found
"liblzo2" "Install liblzo2 devel"
2060 ##########################################
2063 if test "$snappy" != "no" ; then
2065 #include <snappy-c.h>
2066 int main(void) { snappy_max_compressed_length(4096); return 0; }
2068 if compile_prog
"" "-lsnappy" ; then
2069 libs_softmmu
="$libs_softmmu -lsnappy"
2072 if test "$snappy" = "yes"; then
2073 feature_not_found
"libsnappy" "Install libsnappy devel"
2079 ##########################################
2082 if test "$bzip2" != "no" ; then
2085 int main(void) { BZ2_bzlibVersion(); return 0; }
2087 if compile_prog
"" "-lbz2" ; then
2090 if test "$bzip2" = "yes"; then
2091 feature_not_found
"libbzip2" "Install libbzip2 devel"
2097 ##########################################
2100 if test "$seccomp" != "no" ; then
2103 libseccomp_minver
="2.1.0"
2106 libseccomp_minver
="2.2.0"
2109 libseccomp_minver
="2.2.3"
2112 libseccomp_minver
="2.3.0"
2115 libseccomp_minver
=""
2119 if test "$libseccomp_minver" != "" &&
2120 $pkg_config --atleast-version=$libseccomp_minver libseccomp
; then
2121 seccomp_cflags
="$($pkg_config --cflags libseccomp)"
2122 seccomp_libs
="$($pkg_config --libs libseccomp)"
2125 if test "$seccomp" = "yes" ; then
2126 if test "$libseccomp_minver" != "" ; then
2127 feature_not_found
"libseccomp" \
2128 "Install libseccomp devel >= $libseccomp_minver"
2130 feature_not_found
"libseccomp" \
2131 "libseccomp is not supported for host cpu $cpu"
2137 ##########################################
2140 if test "$xen" != "no" ; then
2141 # Check whether Xen library path is specified via --extra-ldflags to avoid
2142 # overriding this setting with pkg-config output. If not, try pkg-config
2143 # to obtain all needed flags.
2145 if ! echo $EXTRA_LDFLAGS |
grep tools
/libxc
> /dev
/null
&& \
2146 $pkg_config --exists xencontrol
; then
2147 xen_ctrl_version
="$(printf '%d%02d%02d' \
2148 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2150 xen_pc
="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2151 xen_pc
="$xen_pc xenevtchn xendevicemodel"
2152 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2153 libs_softmmu
="$($pkg_config --libs $xen_pc) $libs_softmmu"
2154 LDFLAGS
="$($pkg_config --libs $xen_pc) $LDFLAGS"
2157 xen_libs
="-lxenstore -lxenctrl -lxenguest"
2158 xen_stable_libs
="-lxenforeignmemory -lxengnttab -lxenevtchn"
2160 # First we test whether Xen headers and libraries are available.
2161 # If no, we are done and there is no Xen support.
2162 # If yes, more tests are run to detect the Xen version.
2166 #include <xenctrl.h>
2171 if ! compile_prog
"" "$xen_libs" ; then
2173 if test "$xen" = "yes" ; then
2174 feature_not_found
"xen" "Install xen devel"
2180 cat > $TMPC <<EOF &&
2181 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2182 #include <xenforeignmemory.h>
2184 xenforeignmemory_handle *xfmem;
2186 xfmem = xenforeignmemory_open(0, 0);
2187 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2192 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2194 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2195 xen_ctrl_version
=41000
2198 cat > $TMPC <<EOF &&
2199 #undef XC_WANT_COMPAT_DEVICEMODEL_API
2200 #define __XEN_TOOLS__
2201 #include <xendevicemodel.h>
2203 xendevicemodel_handle *xd;
2205 xd = xendevicemodel_open(0, 0);
2206 xendevicemodel_close(xd);
2211 compile_prog
"" "$xen_libs -lxendevicemodel $xen_stable_libs"
2213 xen_stable_libs
="-lxendevicemodel $xen_stable_libs"
2214 xen_ctrl_version
=40900
2217 cat > $TMPC <<EOF &&
2219 * If we have stable libs the we don't want the libxc compat
2220 * layers, regardless of what CFLAGS we may have been given.
2222 * Also, check if xengnttab_grant_copy_segment_t is defined and
2223 * grant copy operation is implemented.
2225 #undef XC_WANT_COMPAT_EVTCHN_API
2226 #undef XC_WANT_COMPAT_GNTTAB_API
2227 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2228 #include <xenctrl.h>
2229 #include <xenstore.h>
2230 #include <xenevtchn.h>
2231 #include <xengnttab.h>
2232 #include <xenforeignmemory.h>
2234 #include <xen/hvm/hvm_info_table.h>
2235 #if !defined(HVM_MAX_VCPUS)
2236 # error HVM_MAX_VCPUS not defined
2239 xc_interface *xc = NULL;
2240 xenforeignmemory_handle *xfmem;
2241 xenevtchn_handle *xe;
2242 xengnttab_handle *xg;
2243 xen_domain_handle_t handle;
2244 xengnttab_grant_copy_segment_t* seg = NULL;
2248 xc = xc_interface_open(0, 0, 0);
2249 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2250 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2251 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2252 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2253 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2255 xfmem = xenforeignmemory_open(0, 0);
2256 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2258 xe = xenevtchn_open(0, 0);
2261 xg = xengnttab_open(0, 0);
2262 xengnttab_grant_copy(xg, 0, seg);
2267 compile_prog
"" "$xen_libs $xen_stable_libs"
2269 xen_ctrl_version
=40800
2272 cat > $TMPC <<EOF &&
2274 * If we have stable libs the we don't want the libxc compat
2275 * layers, regardless of what CFLAGS we may have been given.
2277 #undef XC_WANT_COMPAT_EVTCHN_API
2278 #undef XC_WANT_COMPAT_GNTTAB_API
2279 #undef XC_WANT_COMPAT_MAP_FOREIGN_API
2280 #include <xenctrl.h>
2281 #include <xenstore.h>
2282 #include <xenevtchn.h>
2283 #include <xengnttab.h>
2284 #include <xenforeignmemory.h>
2286 #include <xen/hvm/hvm_info_table.h>
2287 #if !defined(HVM_MAX_VCPUS)
2288 # error HVM_MAX_VCPUS not defined
2291 xc_interface *xc = NULL;
2292 xenforeignmemory_handle *xfmem;
2293 xenevtchn_handle *xe;
2294 xengnttab_handle *xg;
2295 xen_domain_handle_t handle;
2299 xc = xc_interface_open(0, 0, 0);
2300 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2301 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2302 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2303 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2304 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2306 xfmem = xenforeignmemory_open(0, 0);
2307 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2309 xe = xenevtchn_open(0, 0);
2312 xg = xengnttab_open(0, 0);
2313 xengnttab_map_grant_ref(xg, 0, 0, 0);
2318 compile_prog
"" "$xen_libs $xen_stable_libs"
2320 xen_ctrl_version
=40701
2323 cat > $TMPC <<EOF &&
2324 #include <xenctrl.h>
2327 xc_interface *xc = NULL;
2328 xen_domain_handle_t handle;
2329 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2333 compile_prog
"" "$xen_libs"
2335 xen_ctrl_version
=40700
2340 cat > $TMPC <<EOF &&
2341 #include <xenctrl.h>
2342 #include <xenstore.h>
2344 #include <xen/hvm/hvm_info_table.h>
2345 #if !defined(HVM_MAX_VCPUS)
2346 # error HVM_MAX_VCPUS not defined
2351 xc = xc_interface_open(0, 0, 0);
2352 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2353 xc_gnttab_open(NULL, 0);
2354 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2355 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2356 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2357 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2361 compile_prog
"" "$xen_libs"
2363 xen_ctrl_version
=40600
2368 cat > $TMPC <<EOF &&
2369 #include <xenctrl.h>
2370 #include <xenstore.h>
2372 #include <xen/hvm/hvm_info_table.h>
2373 #if !defined(HVM_MAX_VCPUS)
2374 # error HVM_MAX_VCPUS not defined
2379 xc = xc_interface_open(0, 0, 0);
2380 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2381 xc_gnttab_open(NULL, 0);
2382 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2383 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2384 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2388 compile_prog
"" "$xen_libs"
2390 xen_ctrl_version
=40500
2394 cat > $TMPC <<EOF &&
2395 #include <xenctrl.h>
2396 #include <xenstore.h>
2398 #include <xen/hvm/hvm_info_table.h>
2399 #if !defined(HVM_MAX_VCPUS)
2400 # error HVM_MAX_VCPUS not defined
2405 xc = xc_interface_open(0, 0, 0);
2406 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2407 xc_gnttab_open(NULL, 0);
2408 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2409 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2413 compile_prog
"" "$xen_libs"
2415 xen_ctrl_version
=40200
2419 if test "$xen" = "yes" ; then
2420 feature_not_found
"xen (unsupported version)" \
2421 "Install a supported xen (xen 4.2 or newer)"
2426 if test "$xen" = yes; then
2427 if test $xen_ctrl_version -ge 40701 ; then
2428 libs_softmmu
="$xen_stable_libs $libs_softmmu"
2430 libs_softmmu
="$xen_libs $libs_softmmu"
2435 if test "$xen_pci_passthrough" != "no"; then
2436 if test "$xen" = "yes" && test "$linux" = "yes"; then
2437 xen_pci_passthrough
=yes
2439 if test "$xen_pci_passthrough" = "yes"; then
2440 error_exit
"User requested feature Xen PCI Passthrough" \
2441 " but this feature requires /sys from Linux"
2443 xen_pci_passthrough
=no
2447 if test "$xen_pv_domain_build" = "yes" &&
2448 test "$xen" != "yes"; then
2449 error_exit
"User requested Xen PV domain builder support" \
2450 "which requires Xen support."
2453 ##########################################
2455 if test "$sparse" != "no" ; then
2459 if test "$sparse" = "yes" ; then
2460 feature_not_found
"sparse" "Install sparse binary"
2466 ##########################################
2470 if $pkg_config --exists "x11"; then
2471 x11_cflags
=$
($pkg_config --cflags x11
)
2472 x11_libs
=$
($pkg_config --libs x11
)
2475 ##########################################
2478 if test "$gtkabi" = ""; then
2479 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2480 # Use 2.0 as a fallback if that is available.
2481 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2483 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2490 if test "$gtk" != "no"; then
2491 gtkpackage
="gtk+-$gtkabi"
2492 gtkx11package
="gtk+-x11-$gtkabi"
2493 if test "$gtkabi" = "3.0" ; then
2498 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2499 gtk_cflags
=$
($pkg_config --cflags $gtkpackage)
2500 gtk_libs
=$
($pkg_config --libs $gtkpackage)
2501 gtk_version
=$
($pkg_config --modversion $gtkpackage)
2502 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2503 gtk_cflags
="$gtk_cflags $x11_cflags"
2504 gtk_libs
="$gtk_libs $x11_libs"
2506 libs_softmmu
="$gtk_libs $libs_softmmu"
2508 elif test "$gtk" = "yes"; then
2509 feature_not_found
"gtk" "Install gtk3-devel"
2516 ##########################################
2520 # Unfortunately some distros have bad pkg-config information for gnutls
2521 # such that it claims to exist but you get a compiler error if you try
2522 # to use the options returned by --libs. Specifically, Ubuntu for --static
2523 # builds doesn't work:
2524 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2526 # So sanity check the cflags/libs before assuming gnutls can be used.
2527 if ! $pkg_config --exists "gnutls"; then
2532 compile_prog
"$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2537 if test "$gnutls" != "no"; then
2538 if gnutls_works
; then
2539 gnutls_cflags
=$
($pkg_config --cflags gnutls
)
2540 gnutls_libs
=$
($pkg_config --libs gnutls
)
2541 libs_softmmu
="$gnutls_libs $libs_softmmu"
2542 libs_tools
="$gnutls_libs $libs_tools"
2543 QEMU_CFLAGS
="$QEMU_CFLAGS $gnutls_cflags"
2546 # gnutls_rnd requires >= 2.11.0
2547 if $pkg_config --exists "gnutls >= 2.11.0"; then
2553 if $pkg_config --exists 'gnutls >= 3.0'; then
2556 elif $pkg_config --exists 'gnutls >= 2.12'; then
2557 case $
($pkg_config --libs --static gnutls
) in
2575 elif test "$gnutls" = "yes"; then
2576 feature_not_found
"gnutls" "Install gnutls devel"
2586 # If user didn't give a --disable/enable-gcrypt flag,
2587 # then mark as disabled if user requested nettle
2588 # explicitly, or if gnutls links to nettle
2589 if test -z "$gcrypt"
2591 if test "$nettle" = "yes" ||
test "$gnutls_nettle" = "yes"
2597 # If user didn't give a --disable/enable-nettle flag,
2598 # then mark as disabled if user requested gcrypt
2599 # explicitly, or if gnutls links to gcrypt
2600 if test -z "$nettle"
2602 if test "$gcrypt" = "yes" ||
test "$gnutls_gcrypt" = "yes"
2608 has_libgcrypt_config
() {
2609 if ! has
"libgcrypt-config"
2614 if test -n "$cross_prefix"
2616 host=$
(libgcrypt-config
--host)
2617 if test "$host-" != $cross_prefix
2626 if test "$gcrypt" != "no"; then
2627 if has_libgcrypt_config
; then
2628 gcrypt_cflags
=$
(libgcrypt-config
--cflags)
2629 gcrypt_libs
=$
(libgcrypt-config
--libs)
2630 # Debian has remove -lgpg-error from libgcrypt-config
2631 # as it "spreads unnecessary dependencies" which in
2632 # turn breaks static builds...
2633 if test "$static" = "yes"
2635 gcrypt_libs
="$gcrypt_libs -lgpg-error"
2637 libs_softmmu
="$gcrypt_libs $libs_softmmu"
2638 libs_tools
="$gcrypt_libs $libs_tools"
2639 QEMU_CFLAGS
="$QEMU_CFLAGS $gcrypt_cflags"
2641 if test -z "$nettle"; then
2648 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2650 NULL, 0, 0, 0, NULL);
2654 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2661 gcry_mac_hd_t handle;
2662 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2663 GCRY_MAC_FLAG_SECURE, NULL);
2667 if compile_prog
"$gcrypt_cflags" "$gcrypt_libs" ; then
2671 if test "$gcrypt" = "yes"; then
2672 feature_not_found
"gcrypt" "Install gcrypt devel"
2680 if test "$nettle" != "no"; then
2681 if $pkg_config --exists "nettle"; then
2682 nettle_cflags
=$
($pkg_config --cflags nettle
)
2683 nettle_libs
=$
($pkg_config --libs nettle
)
2684 nettle_version
=$
($pkg_config --modversion nettle
)
2685 libs_softmmu
="$nettle_libs $libs_softmmu"
2686 libs_tools
="$nettle_libs $libs_tools"
2687 QEMU_CFLAGS
="$QEMU_CFLAGS $nettle_cflags"
2692 #include <nettle/pbkdf2.h>
2694 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2698 if compile_prog
"$nettle_cflags" "$nettle_libs" ; then
2702 if test "$nettle" = "yes"; then
2703 feature_not_found
"nettle" "Install nettle devel"
2710 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2712 error_exit
"Only one of gcrypt & nettle can be enabled"
2715 ##########################################
2716 # libtasn1 - only for the TLS creds/session test suite
2721 if $pkg_config --exists "libtasn1"; then
2722 tasn1_cflags
=$
($pkg_config --cflags libtasn1
)
2723 tasn1_libs
=$
($pkg_config --libs libtasn1
)
2729 ##########################################
2730 # getifaddrs (for tests/test-io-channel-socket )
2733 if ! check_include
"ifaddrs.h" ; then
2737 ##########################################
2740 if test "$vte" != "no"; then
2741 if test "$gtkabi" = "3.0"; then
2742 vteminversion
="0.32.0"
2743 if $pkg_config --exists "vte-2.91"; then
2744 vtepackage
="vte-2.91"
2746 vtepackage
="vte-2.90"
2750 vteminversion
="0.24.0"
2752 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2753 vte_cflags
=$
($pkg_config --cflags $vtepackage)
2754 vte_libs
=$
($pkg_config --libs $vtepackage)
2755 vteversion
=$
($pkg_config --modversion $vtepackage)
2756 libs_softmmu
="$vte_libs $libs_softmmu"
2758 elif test "$vte" = "yes"; then
2759 if test "$gtkabi" = "3.0"; then
2760 feature_not_found
"vte" "Install libvte-2.90/2.91 devel"
2762 feature_not_found
"vte" "Install libvte devel"
2769 ##########################################
2772 # Look for sdl configuration program (pkg-config or sdl-config). Try
2773 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2775 if test "$sdlabi" = ""; then
2776 if $pkg_config --exists "sdl2"; then
2778 elif $pkg_config --exists "sdl"; then
2785 if test $sdlabi = "2.0"; then
2786 sdl_config
=$sdl2_config
2788 sdlconfigname
=sdl2_config
2789 elif test $sdlabi = "1.2"; then
2791 sdlconfigname
=sdl_config
2793 error_exit
"Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2796 if test "$(basename $sdl_config)" != $sdlconfigname && ! has
${sdl_config}; then
2797 sdl_config
=$sdlconfigname
2800 if $pkg_config $sdlname --exists; then
2801 sdlconfig
="$pkg_config $sdlname"
2802 sdlversion
=$
($sdlconfig --modversion 2>/dev
/null
)
2803 elif has
${sdl_config}; then
2804 sdlconfig
="$sdl_config"
2805 sdlversion
=$
($sdlconfig --version)
2807 if test "$sdl" = "yes" ; then
2808 feature_not_found
"sdl" "Install SDL2-devel"
2812 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config
; then
2813 echo warning
: using
"\"$sdlconfig\"" to detect cross-compiled sdl
>&2
2817 if test "$sdl" != "no" ; then
2820 #undef main /* We don't want SDL to override our main() */
2821 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2823 sdl_cflags
=$
($sdlconfig --cflags 2>/dev
/null
)
2824 if test "$static" = "yes" ; then
2825 if $pkg_config $sdlname --exists; then
2826 sdl_libs
=$
($pkg_config $sdlname --static --libs 2>/dev
/null
)
2828 sdl_libs
=$
($sdlconfig --static-libs 2>/dev
/null
)
2831 sdl_libs
=$
($sdlconfig --libs 2>/dev
/null
)
2833 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2834 if test $
(echo $sdlversion |
sed 's/[^0-9]//g') -lt 121 ; then
2840 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2841 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2842 if test $?
= 0 && echo $sdl_libs |
grep -- -laa > /dev
/null
; then
2843 sdl_libs
="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2844 sdl_cflags
="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2846 if compile_prog
"$sdl_cflags" "$sdl_libs" ; then
2852 else # sdl not found
2853 if test "$sdl" = "yes" ; then
2854 feature_not_found
"sdl" "Install SDL devel"
2857 fi # sdl compile test
2860 if test "$sdl" = "yes" ; then
2863 #if defined(SDL_VIDEO_DRIVER_X11)
2864 #include <X11/XKBlib.h>
2866 #error No x11 support
2868 int main(void) { return 0; }
2870 if compile_prog
"$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2871 sdl_cflags
="$sdl_cflags $x11_cflags"
2872 sdl_libs
="$sdl_libs $x11_libs"
2876 ##########################################
2877 # RDMA needs OpenFabrics libraries
2878 if test "$rdma" != "no" ; then
2880 #include <rdma/rdma_cma.h>
2881 int main(void) { return 0; }
2883 rdma_libs
="-lrdmacm -libverbs"
2884 if compile_prog
"" "$rdma_libs" ; then
2887 if test "$rdma" = "yes" ; then
2889 " OpenFabrics librdmacm/libibverbs not present." \
2891 " (1) Fast: Install infiniband packages from your distro." \
2892 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2893 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2900 ##########################################
2901 # VNC SASL detection
2902 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2904 #include <sasl/sasl.h>
2906 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2908 # Assuming Cyrus-SASL installed in /usr prefix
2910 vnc_sasl_libs
="-lsasl2"
2911 if compile_prog
"$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2913 libs_softmmu
="$vnc_sasl_libs $libs_softmmu"
2914 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_sasl_cflags"
2916 if test "$vnc_sasl" = "yes" ; then
2917 feature_not_found
"vnc-sasl" "Install Cyrus SASL devel"
2923 ##########################################
2924 # VNC JPEG detection
2925 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2928 #include <jpeglib.h>
2929 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2932 vnc_jpeg_libs
="-ljpeg"
2933 if compile_prog
"$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2935 libs_softmmu
="$vnc_jpeg_libs $libs_softmmu"
2936 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_jpeg_cflags"
2938 if test "$vnc_jpeg" = "yes" ; then
2939 feature_not_found
"vnc-jpeg" "Install libjpeg-turbo devel"
2945 ##########################################
2947 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2949 //#include <stdio.h>
2953 png_structp png_ptr;
2954 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2955 return png_ptr != 0;
2958 if $pkg_config libpng
--exists; then
2959 vnc_png_cflags
=$
($pkg_config libpng
--cflags)
2960 vnc_png_libs
=$
($pkg_config libpng
--libs)
2963 vnc_png_libs
="-lpng"
2965 if compile_prog
"$vnc_png_cflags" "$vnc_png_libs" ; then
2967 libs_softmmu
="$vnc_png_libs $libs_softmmu"
2968 QEMU_CFLAGS
="$QEMU_CFLAGS $vnc_png_cflags"
2970 if test "$vnc_png" = "yes" ; then
2971 feature_not_found
"vnc-png" "Install libpng devel"
2977 ##########################################
2979 if test "$xkbcommon" != "no" ; then
2980 if $pkg_config xkbcommon
--exists; then
2981 xkbcommon_cflags
=$
($pkg_config xkbcommon
--cflags)
2982 xkbcommon_libs
=$
($pkg_config xkbcommon
--libs)
2985 if test "$xkbcommon" = "yes" ; then
2986 feature_not_found
"xkbcommon" "Install libxkbcommon-devel"
2992 ##########################################
2993 # fnmatch() probe, used for ACL routines
2996 #include <fnmatch.h>
2999 fnmatch("foo", "foo", 0);
3003 if compile_prog
"" "" ; then
3007 ##########################################
3008 # xfsctl() probe, used for file-posix.c
3009 if test "$xfs" != "no" ; then
3011 #include <stddef.h> /* NULL */
3012 #include <xfs/xfs.h>
3015 xfsctl(NULL, 0, 0, NULL);
3019 if compile_prog
"" "" ; then
3022 if test "$xfs" = "yes" ; then
3023 feature_not_found
"xfs" "Instal xfsprogs/xfslibs devel"
3029 ##########################################
3030 # vde libraries probe
3031 if test "$vde" != "no" ; then
3032 vde_libs
="-lvdeplug"
3034 #include <libvdeplug.h>
3037 struct vde_open_args a = {0, 0, 0};
3043 if compile_prog
"" "$vde_libs" ; then
3046 if test "$vde" = "yes" ; then
3047 feature_not_found
"vde" "Install vde (Virtual Distributed Ethernet) devel"
3053 ##########################################
3054 # netmap support probe
3055 # Apart from looking for netmap headers, we make sure that the host API version
3056 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3057 # a minor/major version number. Minor new features will be marked with values up
3058 # to 15, and if something happens that requires a change to the backend we will
3059 # move above 15, submit the backend fixes and modify this two bounds.
3060 if test "$netmap" != "no" ; then
3062 #include <inttypes.h>
3064 #include <net/netmap.h>
3065 #include <net/netmap_user.h>
3066 #if (NETMAP_API < 11) || (NETMAP_API > 15)
3069 int main(void) { return 0; }
3071 if compile_prog
"" "" ; then
3074 if test "$netmap" = "yes" ; then
3075 feature_not_found
"netmap"
3081 ##########################################
3082 # libcap-ng library probe
3083 if test "$cap_ng" != "no" ; then
3089 capng_capability_to_name(CAPNG_EFFECTIVE);
3093 if compile_prog
"" "$cap_libs" ; then
3095 libs_tools
="$cap_libs $libs_tools"
3097 if test "$cap_ng" = "yes" ; then
3098 feature_not_found
"cap_ng" "Install libcap-ng devel"
3104 ##########################################
3105 # Sound support libraries probe
3116 int main(void) { $exp }
3118 if compile_prog
"$cfl" "$lib" ; then
3121 error_exit
"$drv check failed" \
3122 "Make sure to have the $drv libs and headers installed."
3126 audio_drv_list
=$
(echo "$audio_drv_list" |
sed -e 's/,/ /g')
3127 for drv
in $audio_drv_list; do
3130 audio_drv_probe
$drv alsa
/asoundlib.h
-lasound \
3131 "return snd_pcm_close((snd_pcm_t *)0);"
3132 alsa_libs
="-lasound"
3136 audio_drv_probe
$drv pulse
/pulseaudio.h
"-lpulse" \
3137 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
3138 pulse_libs
="-lpulse"
3143 if test "$sdl" = "no"; then
3144 error_exit
"sdl not found or disabled, can not use sdl audio driver"
3149 coreaudio_libs
="-framework CoreAudio"
3153 dsound_libs
="-lole32 -ldxguid"
3162 # XXX: Probes for CoreAudio, DirectSound
3166 echo "$audio_possible_drivers" |
grep -q "\<$drv\>" ||
{
3167 error_exit
"Unknown driver '$drv' selected" \
3168 "Possible drivers are: $audio_possible_drivers"
3174 ##########################################
3177 if test "$brlapi" != "no" ; then
3178 brlapi_libs
="-lbrlapi"
3182 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3184 if compile_prog
"" "$brlapi_libs" ; then
3187 if test "$brlapi" = "yes" ; then
3188 feature_not_found
"brlapi" "Install brlapi devel"
3194 ##########################################
3196 if test "$curses" != "no" ; then
3197 if test "$mingw32" = "yes" ; then
3198 curses_inc_list
="$($pkg_config --cflags ncurses 2>/dev/null):"
3199 curses_lib_list
="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3201 curses_inc_list
="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3202 curses_lib_list
="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3211 setlocale(LC_ALL, "");
3213 addwstr(L"wide chars\n");
3215 add_wch(WACS_DEGREE);
3220 for curses_inc
in $curses_inc_list; do
3221 # Make sure we get the wide character prototypes
3222 curses_inc
="-DNCURSES_WIDECHAR $curses_inc"
3224 for curses_lib
in $curses_lib_list; do
3226 if compile_prog
"$curses_inc" "$curses_lib" ; then
3228 QEMU_CFLAGS
="$curses_inc $QEMU_CFLAGS"
3229 libs_softmmu
="$curses_lib $libs_softmmu"
3233 if test "$curses_found" = yes ; then
3238 if test "$curses_found" = "yes" ; then
3241 if test "$curses" = "yes" ; then
3242 feature_not_found
"curses" "Install ncurses devel"
3248 ##########################################
3250 if test "$curl" != "no" ; then
3251 if $pkg_config libcurl
--exists; then
3252 curlconfig
="$pkg_config libcurl"
3254 curlconfig
=curl-config
3257 #include <curl/curl.h>
3258 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3260 curl_cflags
=$
($curlconfig --cflags 2>/dev
/null
)
3261 curl_libs
=$
($curlconfig --libs 2>/dev
/null
)
3262 if compile_prog
"$curl_cflags" "$curl_libs" ; then
3265 if test "$curl" = "yes" ; then
3266 feature_not_found
"curl" "Install libcurl devel"
3272 ##########################################
3273 # bluez support probe
3274 if test "$bluez" != "no" ; then
3276 #include <bluetooth/bluetooth.h>
3277 int main(void) { return bt_error(0); }
3279 bluez_cflags
=$
($pkg_config --cflags bluez
2>/dev
/null
)
3280 bluez_libs
=$
($pkg_config --libs bluez
2>/dev
/null
)
3281 if compile_prog
"$bluez_cflags" "$bluez_libs" ; then
3283 libs_softmmu
="$bluez_libs $libs_softmmu"
3285 if test "$bluez" = "yes" ; then
3286 feature_not_found
"bluez" "Install bluez-libs/libbluetooth devel"
3292 ##########################################
3293 # glib support probe
3295 if test "$mingw32" = yes; then
3300 glib_modules
=gthread-2.0
3301 if test "$modules" = yes; then
3302 glib_modules
="$glib_modules gmodule-2.0"
3305 # This workaround is required due to a bug in pkg-config file for glib as it
3306 # doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3308 if test "$static" = yes -a "$mingw32" = yes; then
3309 QEMU_CFLAGS
="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3312 for i
in $glib_modules; do
3313 if $pkg_config --atleast-version=$glib_req_ver $i; then
3314 glib_cflags
=$
($pkg_config --cflags $i)
3315 glib_libs
=$
($pkg_config --libs $i)
3316 QEMU_CFLAGS
="$glib_cflags $QEMU_CFLAGS"
3317 LIBS
="$glib_libs $LIBS"
3318 libs_qga
="$glib_libs $libs_qga"
3320 error_exit
"glib-$glib_req_ver $i is required to compile QEMU"
3324 # Sanity check that the current size_t matches the
3325 # size that glib thinks it should be. This catches
3326 # problems on multi-arch where people try to build
3327 # 32-bit QEMU while pointing at 64-bit glib headers
3332 #define QEMU_BUILD_BUG_ON(x) \
3333 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3336 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3341 if ! compile_prog
"$CFLAGS" "$LIBS" ; then
3342 error_exit
"sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3343 "You probably need to set PKG_CONFIG_LIBDIR"\
3344 "to point to the right pkg-config files for your"\
3348 # g_test_trap_subprocess added in 2.38. Used by some tests.
3350 if ! $pkg_config --atleast-version=2.38 glib-2.0
; then
3354 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3357 int main(void) { return 0; }
3359 if ! compile_prog
"$glib_cflags -Werror" "$glib_libs" ; then
3360 if cc_has_warning_flag
"-Wno-unknown-attributes"; then
3361 glib_cflags
="-Wno-unknown-attributes $glib_cflags"
3362 CFLAGS
="-Wno-unknown-attributes $CFLAGS"
3366 ##########################################
3367 # SHA command probe for modules
3368 if test "$modules" = yes; then
3369 shacmd_probe
="sha1sum sha1 shasum"
3370 for c
in $shacmd_probe; do
3376 if test "$shacmd" = ""; then
3377 error_exit
"one of the checksum commands is required to enable modules: $shacmd_probe"
3381 ##########################################
3382 # pixman support probe
3384 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3387 elif $pkg_config --atleast-version=0.21.8 pixman-1
> /dev
/null
2>&1; then
3388 pixman_cflags
=$
($pkg_config --cflags pixman-1
)
3389 pixman_libs
=$
($pkg_config --libs pixman-1
)
3391 error_exit
"pixman >= 0.21.8 not present." \
3392 "Please install the pixman devel package."
3395 ##########################################
3396 # libmpathpersist probe
3398 if test "$mpath" != "no" ; then
3400 #include <libudev.h>
3401 #include <mpath_persist.h>
3402 unsigned mpath_mx_alloc_len = 1024;
3404 static struct config *multipath_conf;
3405 extern struct udev *udev;
3406 extern struct config *get_multipath_config(void);
3407 extern void put_multipath_config(struct config *conf);
3409 struct config *get_multipath_config(void) { return multipath_conf; }
3410 void put_multipath_config(struct config *conf) { }
3414 multipath_conf = mpath_lib_init();
3418 if compile_prog
"" "-ludev -lmultipath -lmpathpersist" ; then
3427 ##########################################
3430 if test "$cap" != "no" ; then
3433 #include <sys/capability.h>
3434 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3436 if compile_prog
"" "-lcap" ; then
3443 ##########################################
3445 PTHREADLIBS_LIST
="-pthread -lpthread -lpthreadGC2"
3449 #include <pthread.h>
3450 static void *f(void *p) { return NULL; }
3453 pthread_create(&thread, 0, f, 0);
3457 if compile_prog
"" "" ; then
3460 for pthread_lib
in $PTHREADLIBS_LIST; do
3461 if compile_prog
"" "$pthread_lib" ; then
3464 for lib_entry
in $LIBS; do
3465 if test "$lib_entry" = "$pthread_lib"; then
3470 if test "$found" = "no"; then
3471 LIBS
="$pthread_lib $LIBS"
3472 libs_qga
="$pthread_lib $libs_qga"
3474 PTHREAD_LIB
="$pthread_lib"
3480 if test "$mingw32" != yes -a "$pthread" = no
; then
3481 error_exit
"pthread check failed" \
3482 "Make sure to have the pthread libs and headers installed."
3485 # check for pthread_setname_np
3486 pthread_setname_np
=no
3488 #include <pthread.h>
3490 static void *f(void *p) { return NULL; }
3494 pthread_create(&thread, 0, f, 0);
3495 pthread_setname_np(thread, "QEMU");
3499 if compile_prog
"" "$pthread_lib" ; then
3500 pthread_setname_np
=yes
3503 ##########################################
3505 if test "$rbd" != "no" ; then
3508 #include <rbd/librbd.h>
3511 rados_create(&cluster, NULL);
3515 rbd_libs
="-lrbd -lrados"
3516 if compile_prog
"" "$rbd_libs" ; then
3519 if test "$rbd" = "yes" ; then
3520 feature_not_found
"rados block device" "Install librbd/ceph devel"
3526 ##########################################
3528 min_libssh2_version
=1.2.8
3529 if test "$libssh2" != "no" ; then
3530 if $pkg_config --atleast-version=$min_libssh2_version libssh2
; then
3531 libssh2_cflags
=$
($pkg_config libssh2
--cflags)
3532 libssh2_libs
=$
($pkg_config libssh2
--libs)
3535 if test "$libssh2" = "yes" ; then
3536 error_exit
"libssh2 >= $min_libssh2_version required for --enable-libssh2"
3542 ##########################################
3543 # libssh2_sftp_fsync probe
3545 if test "$libssh2" = "yes"; then
3548 #include <libssh2.h>
3549 #include <libssh2_sftp.h>
3551 LIBSSH2_SESSION *session;
3553 LIBSSH2_SFTP_HANDLE *sftp_handle;
3554 session = libssh2_session_init ();
3555 sftp = libssh2_sftp_init (session);
3556 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3557 libssh2_sftp_fsync (sftp_handle);
3561 # libssh2_cflags/libssh2_libs defined in previous test.
3562 if compile_prog
"$libssh2_cflags" "$libssh2_libs" ; then
3563 QEMU_CFLAGS
="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3567 ##########################################
3570 if test "$linux_aio" != "no" ; then
3573 #include <sys/eventfd.h>
3575 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3577 if compile_prog
"" "-laio" ; then
3580 if test "$linux_aio" = "yes" ; then
3581 feature_not_found
"linux AIO" "Install libaio devel"
3587 ##########################################
3588 # TPM passthrough is only on x86 Linux
3590 if test "$targetos" = Linux
&& test "$cpu" = i386
-o "$cpu" = x86_64
; then
3591 tpm_passthrough
=$tpm
3596 # TPM emulator is for all posix systems
3597 if test "$mingw32" != "yes"; then
3602 ##########################################
3605 if test "$attr" != "no" ; then
3608 #include <sys/types.h>
3609 #ifdef CONFIG_LIBATTR
3610 #include <attr/xattr.h>
3612 #include <sys/xattr.h>
3614 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3616 if compile_prog
"" "" ; then
3618 # Older distros have <attr/xattr.h>, and need -lattr:
3619 elif compile_prog
"-DCONFIG_LIBATTR" "-lattr" ; then
3624 if test "$attr" = "yes" ; then
3625 feature_not_found
"ATTR" "Install libc6 or libattr devel"
3631 ##########################################
3634 #include <sys/types.h>
3635 #include <sys/uio.h>
3637 int main(void) { return sizeof(struct iovec); }
3640 if compile_prog
"" "" ; then
3644 ##########################################
3647 #include <sys/types.h>
3648 #include <sys/uio.h>
3650 int main(void) { return preadv(0, 0, 0, 0); }
3653 if compile_prog
"" "" ; then
3657 ##########################################
3659 # fdt support is mandatory for at least some target architectures,
3660 # so insist on it if we're building those system emulators.
3662 for target
in $target_list; do
3664 aarch64
*-softmmu|arm
*-softmmu|ppc
*-softmmu|microblaze
*-softmmu|mips64el-softmmu
)
3670 if test "$fdt_required" = "yes"; then
3671 if test "$fdt" = "no"; then
3672 error_exit
"fdt disabled but some requested targets require it." \
3673 "You can turn off fdt only if you also disable all the system emulation" \
3674 "targets which need it (by specifying a cut down --target-list)."
3679 if test "$fdt" != "no" ; then
3681 # explicitly check for libfdt_env.h as it is missing in some stable installs
3682 # and test for required functions to make sure we are on a version >= 1.4.2
3685 #include <libfdt_env.h>
3686 int main(void) { fdt_first_subnode(0, 0); return 0; }
3688 if compile_prog
"" "$fdt_libs" ; then
3689 # system DTC is good - use it
3692 # have GIT checkout, so activate dtc submodule
3693 if test -e "${source_path}/.git" ; then
3694 git_submodules
="${git_submodules} dtc"
3696 if test -d "${source_path}/dtc/libfdt" ||
test -e "${source_path}/.git" ; then
3700 if [ "$pwd_is_source_path" != "y" ] ; then
3701 symlink
"$source_path/dtc/Makefile" "dtc/Makefile"
3702 symlink
"$source_path/dtc/scripts" "dtc/scripts"
3704 fdt_cflags
="-I\$(SRC_PATH)/dtc/libfdt"
3705 fdt_libs
="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3706 elif test "$fdt" = "yes" ; then
3707 # Not a git build & no libfdt found, prompt for system install
3708 error_exit
"DTC (libfdt) version >= 1.4.2 not present." \
3709 "Please install the DTC (libfdt) devel package"
3711 # don't have and don't want
3718 libs_softmmu
="$libs_softmmu $fdt_libs"
3720 ##########################################
3721 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3723 if test "$opengl" != "no" ; then
3724 opengl_pkgs
="epoxy libdrm gbm"
3725 if $pkg_config $opengl_pkgs x11
; then
3726 opengl_cflags
="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3727 opengl_libs
="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3729 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3732 QEMU_CFLAGS
="$QEMU_CFLAGS $opengl_cflags"
3734 if test "$opengl" = "yes" ; then
3735 feature_not_found
"opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3743 if test "$opengl" = "yes"; then
3745 #include <epoxy/egl.h>
3746 #ifndef EGL_MESA_image_dma_buf_export
3747 # error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3749 int main(void) { return 0; }
3751 if compile_prog
"" "" ; then
3756 ##########################################
3758 if test "$libxml2" != "no" ; then
3759 if $pkg_config --exists libxml-2.0
; then
3761 libxml2_cflags
=$
($pkg_config --cflags libxml-2.0
)
3762 libxml2_libs
=$
($pkg_config --libs libxml-2.0
)
3764 if test "$libxml2" = "yes"; then
3765 feature_not_found
"libxml2" "Install libxml2 devel"
3771 ##########################################
3773 if test "$glusterfs" != "no" ; then
3774 if $pkg_config --atleast-version=3 glusterfs-api
; then
3776 glusterfs_cflags
=$
($pkg_config --cflags glusterfs-api
)
3777 glusterfs_libs
=$
($pkg_config --libs glusterfs-api
)
3778 if $pkg_config --atleast-version=4 glusterfs-api
; then
3779 glusterfs_xlator_opt
="yes"
3781 if $pkg_config --atleast-version=5 glusterfs-api
; then
3782 glusterfs_discard
="yes"
3784 if $pkg_config --atleast-version=6 glusterfs-api
; then
3785 glusterfs_fallocate
="yes"
3786 glusterfs_zerofill
="yes"
3789 if test "$glusterfs" = "yes" ; then
3790 feature_not_found
"GlusterFS backend support" \
3791 "Install glusterfs-api devel >= 3"
3797 # Check for inotify functions when we are building linux-user
3798 # emulator. This is done because older glibc versions don't
3799 # have syscall stubs for these implemented. In that case we
3800 # don't provide them even if kernel supports them.
3804 #include <sys/inotify.h>
3809 /* try to start inotify */
3810 return inotify_init();
3813 if compile_prog
"" "" ; then
3819 #include <sys/inotify.h>
3824 /* try to start inotify */
3825 return inotify_init1(0);
3828 if compile_prog
"" "" ; then
3832 # check if pipe2 is there
3841 return pipe2(pipefd, O_CLOEXEC);
3844 if compile_prog
"" "" ; then
3848 # check if accept4 is there
3851 #include <sys/socket.h>
3856 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3860 if compile_prog
"" "" ; then
3864 # check if tee/splice is there. vmsplice was added same time.
3874 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3875 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3879 if compile_prog
"" "" ; then
3883 ##########################################
3886 if test "$numa" != "no" ; then
3889 int main(void) { return numa_available(); }
3892 if compile_prog
"" "-lnuma" ; then
3894 libs_softmmu
="-lnuma $libs_softmmu"
3896 if test "$numa" = "yes" ; then
3897 feature_not_found
"numa" "install numactl devel"
3903 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3904 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3908 # Even if malloc_trim() is available, these non-libc memory allocators
3909 # do not support it.
3910 if test "$tcmalloc" = "yes" ||
test "$jemalloc" = "yes" ; then
3911 if test "$malloc_trim" = "yes" ; then
3912 echo "Disabling malloc_trim with non-libc memory allocator"
3917 #######################################
3920 if test "$malloc_trim" != "no" ; then
3923 int main(void) { malloc_trim(0); return 0; }
3925 if compile_prog
"" "" ; then
3932 ##########################################
3935 if test "$tcmalloc" = "yes" ; then
3938 int main(void) { malloc(1); return 0; }
3941 if compile_prog
"" "-ltcmalloc" ; then
3942 LIBS
="-ltcmalloc $LIBS"
3944 feature_not_found
"tcmalloc" "install gperftools devel"
3948 ##########################################
3951 if test "$jemalloc" = "yes" ; then
3954 int main(void) { malloc(1); return 0; }
3957 if compile_prog
"" "-ljemalloc" ; then
3958 LIBS
="-ljemalloc $LIBS"
3960 feature_not_found
"jemalloc" "install jemalloc devel"
3964 ##########################################
3969 #include <sys/syscall.h>
3971 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3974 if compile_prog
"" "" ; then
3978 # check if eventfd is supported
3981 #include <sys/eventfd.h>
3985 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3988 if compile_prog
"" "" ; then
3992 # check if memfd is supported
3995 #include <sys/mman.h>
3999 return memfd_create("foo", MFD_ALLOW_SEALING);
4002 if compile_prog
"" "" ; then
4008 # check for fallocate
4015 fallocate(0, 0, 0, 0);
4019 if compile_prog
"" "" ; then
4023 # check for fallocate hole punching
4024 fallocate_punch_hole
=no
4027 #include <linux/falloc.h>
4031 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4035 if compile_prog
"" "" ; then
4036 fallocate_punch_hole
=yes
4039 # check that fallocate supports range zeroing inside the file
4040 fallocate_zero_range
=no
4043 #include <linux/falloc.h>
4047 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4051 if compile_prog
"" "" ; then
4052 fallocate_zero_range
=yes
4055 # check for posix_fallocate
4062 posix_fallocate(0, 0, 0);
4066 if compile_prog
"" "" ; then
4070 # check for sync_file_range
4077 sync_file_range(0, 0, 0, 0);
4081 if compile_prog
"" "" ; then
4085 # check for linux/fiemap.h and FS_IOC_FIEMAP
4088 #include <sys/ioctl.h>
4089 #include <linux/fs.h>
4090 #include <linux/fiemap.h>
4094 ioctl(0, FS_IOC_FIEMAP, 0);
4098 if compile_prog
"" "" ; then
4113 if compile_prog
"" "" ; then
4117 # check for ppoll support
4124 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4125 ppoll(&pfd, 1, 0, 0);
4129 if compile_prog
"" "" ; then
4133 # check for prctl(PR_SET_TIMERSLACK , ... ) support
4134 prctl_pr_set_timerslack
=no
4136 #include <sys/prctl.h>
4140 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4144 if compile_prog
"" "" ; then
4145 prctl_pr_set_timerslack
=yes
4148 # check for epoll support
4151 #include <sys/epoll.h>
4159 if compile_prog
"" "" ; then
4163 # epoll_create1 is a later addition
4164 # so we must check separately for its presence
4167 #include <sys/epoll.h>
4171 /* Note that we use epoll_create1 as a value, not as
4172 * a function being called. This is necessary so that on
4173 * old SPARC glibc versions where the function was present in
4174 * the library but not declared in the header file we will
4175 * fail the configure check. (Otherwise we will get a compiler
4176 * warning but not an error, and will proceed to fail the
4177 * qemu compile where we compile with -Werror.)
4179 return (int)(uintptr_t)&epoll_create1;
4182 if compile_prog
"" "" ; then
4186 # check for sendfile support
4189 #include <sys/sendfile.h>
4193 return sendfile(0, 0, 0, 0);
4196 if compile_prog
"" "" ; then
4200 # check for timerfd support (glibc 2.8 and newer)
4203 #include <sys/timerfd.h>
4207 return(timerfd_create(CLOCK_REALTIME, 0));
4210 if compile_prog
"" "" ; then
4214 # check for setns and unshare support
4227 if compile_prog
"" "" ; then
4231 # clock_adjtime probe
4238 return clock_adjtime(0, 0);
4242 if compile_prog
"" "" ; then
4257 if compile_prog
"" "" ; then
4261 # Check if tools are available to build documentation.
4262 if test "$docs" != "no" ; then
4263 if has makeinfo
&& has pod2man
; then
4266 if test "$docs" = "yes" ; then
4267 feature_not_found
"docs" "Install texinfo and Perl/perl-podlators"
4273 # Search for bswap_32 function
4276 #include <byteswap.h>
4277 int main(void) { return bswap_32(0); }
4279 if compile_prog
"" "" ; then
4283 # Search for bswap32 function
4286 #include <sys/endian.h>
4287 #include <sys/types.h>
4288 #include <machine/bswap.h>
4289 int main(void) { return bswap32(0); }
4291 if compile_prog
"" "" ; then
4295 ##########################################
4296 # Do we have libiscsi >= 1.9.0
4297 if test "$libiscsi" != "no" ; then
4298 if $pkg_config --atleast-version=1.9.0 libiscsi
; then
4300 libiscsi_cflags
=$
($pkg_config --cflags libiscsi
)
4301 libiscsi_libs
=$
($pkg_config --libs libiscsi
)
4303 if test "$libiscsi" = "yes" ; then
4304 feature_not_found
"libiscsi" "Install libiscsi >= 1.9.0"
4310 ##########################################
4314 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
4316 if compile_prog
"" "" ; then
4318 elif compile_prog
"" "-lm" ; then
4320 libs_qga
="-lm $libs_qga"
4322 error_exit
"libm check failed"
4325 ##########################################
4327 # uClibc provides 2 versions of clock_gettime(), one with realtime
4328 # support and one without. This means that the clock_gettime() don't
4329 # need -lrt. We still need it for timer_create() so we check for this
4330 # function in addition.
4335 timer_create(CLOCK_REALTIME, NULL, NULL);
4336 return clock_gettime(CLOCK_REALTIME, NULL);
4340 if compile_prog
"" "" ; then
4342 # we need pthread for static linking. use previous pthread test result
4343 elif compile_prog
"" "$pthread_lib -lrt" ; then
4345 libs_qga
="$libs_qga -lrt"
4348 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4349 "$haiku" != "yes" ; then
4350 libs_softmmu
="-lutil $libs_softmmu"
4353 ##########################################
4355 if test "$spice" != "no" ; then
4358 int main(void) { spice_server_new(); return 0; }
4360 spice_cflags
=$
($pkg_config --cflags spice-protocol spice-server
2>/dev
/null
)
4361 spice_libs
=$
($pkg_config --libs spice-protocol spice-server
2>/dev
/null
)
4362 if $pkg_config --atleast-version=0.12.0 spice-server
&& \
4363 $pkg_config --atleast-version=0.12.3 spice-protocol
&& \
4364 compile_prog
"$spice_cflags" "$spice_libs" ; then
4366 libs_softmmu
="$libs_softmmu $spice_libs"
4367 QEMU_CFLAGS
="$QEMU_CFLAGS $spice_cflags"
4368 spice_protocol_version
=$
($pkg_config --modversion spice-protocol
)
4369 spice_server_version
=$
($pkg_config --modversion spice-server
)
4371 if test "$spice" = "yes" ; then
4372 feature_not_found
"spice" \
4373 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4379 # check for smartcard support
4380 if test "$smartcard" != "no"; then
4381 if $pkg_config libcacard
; then
4382 libcacard_cflags
=$
($pkg_config --cflags libcacard
)
4383 libcacard_libs
=$
($pkg_config --libs libcacard
)
4386 if test "$smartcard" = "yes"; then
4387 feature_not_found
"smartcard" "Install libcacard devel"
4394 if test "$libusb" != "no" ; then
4395 if $pkg_config --atleast-version=1.0.13 libusb-1.0
; then
4397 libusb_cflags
=$
($pkg_config --cflags libusb-1.0
)
4398 libusb_libs
=$
($pkg_config --libs libusb-1.0
)
4400 if test "$libusb" = "yes"; then
4401 feature_not_found
"libusb" "Install libusb devel >= 1.0.13"
4407 # check for usbredirparser for usb network redirection support
4408 if test "$usb_redir" != "no" ; then
4409 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5
; then
4411 usb_redir_cflags
=$
($pkg_config --cflags libusbredirparser-0.5
)
4412 usb_redir_libs
=$
($pkg_config --libs libusbredirparser-0.5
)
4414 if test "$usb_redir" = "yes"; then
4415 feature_not_found
"usb-redir" "Install usbredir devel"
4421 ##########################################
4422 # check if we have VSS SDK headers for win
4424 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4425 case "$vss_win32_sdk" in
4426 "") vss_win32_include
="-isystem $source_path" ;;
4427 *\
*) # The SDK is installed in "Program Files" by default, but we cannot
4428 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4429 vss_win32_include
="-isystem $source_path/.sdk/vss"
4430 symlink
"$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4432 *) vss_win32_include
="-isystem $vss_win32_sdk"
4435 #define __MIDL_user_allocate_free_DEFINED__
4436 #include <inc/win2003/vss.h>
4437 int main(void) { return VSS_CTX_BACKUP; }
4439 if compile_prog
"$vss_win32_include" "" ; then
4440 guest_agent_with_vss
="yes"
4441 QEMU_CFLAGS
="$QEMU_CFLAGS $vss_win32_include"
4442 libs_qga
="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4443 qga_vss_provider
="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4445 if test "$vss_win32_sdk" != "" ; then
4446 echo "ERROR: Please download and install Microsoft VSS SDK:"
4447 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4448 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4449 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4450 echo "ERROR: The headers are extracted in the directory \`inc'."
4451 feature_not_found
"VSS support"
4453 guest_agent_with_vss
="no"
4457 ##########################################
4458 # lookup Windows platform SDK (if not specified)
4459 # The SDK is needed only to build .tlb (type library) file of guest agent
4460 # VSS provider from the source. It is usually unnecessary because the
4461 # pre-compiled .tlb file is included.
4463 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4464 if test -z "$win_sdk"; then
4465 programfiles
="$PROGRAMFILES"
4466 test -n "$PROGRAMW6432" && programfiles
="$PROGRAMW6432"
4467 if test -n "$programfiles"; then
4468 win_sdk
=$
(ls -d "$programfiles/Microsoft SDKs/Windows/v"* |
tail -1) 2>/dev
/null
4470 feature_not_found
"Windows SDK"
4472 elif test "$win_sdk" = "no"; then
4477 ##########################################
4478 # check if mingw environment provides a recent ntddscsi.h
4479 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4481 #include <windows.h>
4482 #include <ntddscsi.h>
4484 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4485 #error Missing required ioctl definitions
4487 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4491 if compile_prog
"" "" ; then
4492 guest_agent_ntddscsi
=yes
4493 libs_qga
="-lsetupapi $libs_qga"
4497 ##########################################
4498 # virgl renderer probe
4500 if test "$virglrenderer" != "no" ; then
4502 #include <virglrenderer.h>
4503 int main(void) { virgl_renderer_poll(); return 0; }
4505 virgl_cflags
=$
($pkg_config --cflags virglrenderer
2>/dev
/null
)
4506 virgl_libs
=$
($pkg_config --libs virglrenderer
2>/dev
/null
)
4507 if $pkg_config virglrenderer
>/dev
/null
2>&1 && \
4508 compile_prog
"$virgl_cflags" "$virgl_libs" ; then
4511 if test "$virglrenderer" = "yes" ; then
4512 feature_not_found
"virglrenderer"
4518 ##########################################
4523 if $pkg_config capstone
; then
4525 elif test -e "${source_path}/.git" ; then
4527 elif test -e "${source_path}/capstone/Makefile" ; then
4529 elif test -z "$capstone" ; then
4532 feature_not_found
"capstone" "Install capstone devel or git submodule"
4537 if ! $pkg_config capstone
; then
4538 feature_not_found
"capstone" "Install capstone devel"
4545 if test "$capstone" = git
; then
4546 git_submodules
="${git_submodules} capstone"
4549 QEMU_CFLAGS
="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4550 if test "$mingw32" = "yes"; then
4551 LIBCAPSTONE
=capstone.lib
4553 LIBCAPSTONE
=libcapstone.a
4555 LIBS
="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4559 QEMU_CFLAGS
="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4560 LIBS
="$($pkg_config --libs capstone) $LIBS"
4566 error_exit
"Unknown state for capstone: $capstone"
4570 ##########################################
4571 # check if we have fdatasync
4577 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4578 return fdatasync(0);
4580 #error Not supported
4584 if compile_prog
"" "" ; then
4588 ##########################################
4589 # check if we have madvise
4593 #include <sys/types.h>
4594 #include <sys/mman.h>
4596 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4598 if compile_prog
"" "" ; then
4602 ##########################################
4603 # check if we have posix_madvise
4607 #include <sys/mman.h>
4609 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4611 if compile_prog
"" "" ; then
4615 ##########################################
4616 # check if we have posix_syslog
4621 int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4623 if compile_prog
"" "" ; then
4627 ##########################################
4628 # check if we have sem_timedwait
4632 #include <semaphore.h>
4633 int main(void) { return sem_timedwait(0, 0); }
4635 if compile_prog
"" "" ; then
4639 ##########################################
4640 # check if trace backend exists
4642 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev
/null
2> /dev
/null
4643 if test "$?" -ne 0 ; then
4644 error_exit
"invalid trace backends" \
4645 "Please choose supported trace backends."
4648 ##########################################
4649 # For 'ust' backend, test if ust headers are present
4650 if have_backend
"ust"; then
4652 #include <lttng/tracepoint.h>
4653 int main(void) { return 0; }
4655 if compile_prog
"" "-Wl,--no-as-needed -ldl" ; then
4656 if $pkg_config lttng-ust
--exists; then
4657 lttng_ust_libs
=$
($pkg_config --libs lttng-ust
)
4659 lttng_ust_libs
="-llttng-ust -ldl"
4661 if $pkg_config liburcu-bp
--exists; then
4662 urcu_bp_libs
=$
($pkg_config --libs liburcu-bp
)
4664 urcu_bp_libs
="-lurcu-bp"
4667 LIBS
="$lttng_ust_libs $urcu_bp_libs $LIBS"
4668 libs_qga
="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4670 error_exit
"Trace backend 'ust' missing lttng-ust header files"
4674 ##########################################
4675 # For 'dtrace' backend, test if 'dtrace' command is present
4676 if have_backend
"dtrace"; then
4677 if ! has
'dtrace' ; then
4678 error_exit
"dtrace command is not found in PATH $PATH"
4680 trace_backend_stap
="no"
4681 if has
'stap' ; then
4682 trace_backend_stap
="yes"
4686 ##########################################
4687 # check and set a backend for coroutine
4689 # We prefer ucontext, but it's not always possible. The fallback
4690 # is sigcontext. On Windows the only valid backend is the Windows
4694 if test "$darwin" != "yes"; then
4696 #include <ucontext.h>
4697 #ifdef __stub_makecontext
4698 #error Ignoring glibc stub makecontext which will always fail
4700 int main(void) { makecontext(0, 0, 0); return 0; }
4702 if compile_prog
"" "" ; then
4707 if test "$coroutine" = ""; then
4708 if test "$mingw32" = "yes"; then
4710 elif test "$ucontext_works" = "yes"; then
4713 coroutine
=sigaltstack
4718 if test "$mingw32" != "yes"; then
4719 error_exit
"'windows' coroutine backend only valid for Windows"
4721 # Unfortunately the user visible backend name doesn't match the
4722 # coroutine-*.c filename for this case, so we have to adjust it here.
4726 if test "$ucontext_works" != "yes"; then
4727 feature_not_found
"ucontext"
4731 if test "$mingw32" = "yes"; then
4732 error_exit
"only the 'windows' coroutine backend is valid for Windows"
4736 error_exit
"unknown coroutine backend $coroutine"
4741 if test "$coroutine_pool" = ""; then
4745 if test "$debug_stack_usage" = "yes"; then
4746 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4747 error_exit
"stack usage debugging is not supported for $cpu"
4749 if test "$coroutine_pool" = "yes"; then
4750 echo "WARN: disabling coroutine pool for stack usage debugging"
4756 ##########################################
4757 # check if we have open_by_handle_at
4759 open_by_handle_at
=no
4762 #if !defined(AT_EMPTY_PATH)
4763 # error missing definition
4765 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4768 if compile_prog
"" "" ; then
4769 open_by_handle_at
=yes
4772 ########################################
4773 # check if we have linux/magic.h
4777 #include <linux/magic.h>
4782 if compile_prog
"" "" ; then
4786 ########################################
4787 # check whether we can disable warning option with a pragma (this is needed
4788 # to silence warnings in the headers of some versions of external libraries).
4789 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4792 # If we can't selectively disable warning in the code, disable -Werror so that
4793 # the build doesn't fail anyway.
4795 pragma_disable_unused_but_set
=no
4797 #pragma GCC diagnostic push
4798 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4799 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4800 #pragma GCC diagnostic pop
4806 if compile_prog
"-Werror" "" ; then
4807 pragma_diagnostic_available
=yes
4812 ########################################
4813 # check if we have valgrind/valgrind.h
4817 #include <valgrind/valgrind.h>
4822 if compile_prog
"" "" ; then
4826 ########################################
4827 # check if environ is declared
4837 if compile_prog
"" "" ; then
4841 ########################################
4842 # check if cpuid.h is usable.
4847 unsigned a, b, c, d;
4848 int max = __get_cpuid_max(0, 0);
4851 __cpuid(1, a, b, c, d);
4855 __cpuid_count(7, 0, a, b, c, d);
4861 if compile_prog
"" "" ; then
4865 ##########################################
4866 # avx2 optimization requirement check
4868 # There is no point enabling this if cpuid.h is not usable,
4869 # since we won't be able to select the new routines.
4871 if test $cpuid_h = yes; then
4873 #pragma GCC push_options
4874 #pragma GCC target("avx2")
4876 #include <immintrin.h>
4877 static int bar(void *a) {
4878 __m256i x = *(__m256i *)a;
4879 return _mm256_testz_si256(x, x);
4881 int main(int argc, char *argv[]) { return bar(argv[0]); }
4883 if compile_object
"" ; then
4888 ########################################
4889 # check if __[u]int128_t is usable.
4893 #if defined(__clang_major__) && defined(__clang_minor__)
4894 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4895 # error __int128_t does not work in CLANG before 3.2
4907 if compile_prog
"" "" ; then
4911 #########################################
4912 # See if 128-bit atomic operations are supported.
4915 if test "$int128" = "yes"; then
4919 unsigned __int128 x = 0, y = 0;
4920 y = __atomic_load_16(&x, 0);
4921 __atomic_store_16(&x, y, 0);
4922 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4926 if compile_prog
"" "" ; then
4931 #########################################
4932 # See if 64-bit atomic operations are supported.
4933 # Note that without __atomic builtins, we can only
4934 # assume atomic loads/stores max at pointer size.
4940 uint64_t x = 0, y = 0;
4941 #ifdef __ATOMIC_RELAXED
4942 y = __atomic_load_8(&x, 0);
4943 __atomic_store_8(&x, y, 0);
4944 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4945 __atomic_exchange_8(&x, y, 0);
4946 __atomic_fetch_add_8(&x, y, 0);
4948 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4949 __sync_lock_test_and_set(&x, y);
4950 __sync_val_compare_and_swap(&x, y, 0);
4951 __sync_fetch_and_add(&x, y);
4956 if compile_prog
"" "" ; then
4960 ########################################
4961 # check if getauxval is available.
4965 #include <sys/auxv.h>
4967 return getauxval(AT_HWCAP) == 0;
4970 if compile_prog
"" "" ; then
4974 ########################################
4975 # check if ccache is interfering with
4976 # semantic analysis of macros
4981 static const int Z = 1;
4982 #define fn() ({ Z; })
4983 #define TAUT(X) ((X) == Z)
4984 #define PAREN(X, Y) (X == Y)
4986 int main(int argc, char *argv[])
4992 if (PAREN(x, y)) return 0;
4993 if (TAUT(Z)) return 0;
4998 if ! compile_object
"-Werror"; then
5002 #################################################
5003 # clang does not support glibc + FORTIFY_SOURCE.
5005 if test "$fortify_source" != "no"; then
5006 if echo |
$cc -dM -E - |
grep __clang__
> /dev
/null
2>&1 ; then
5007 fortify_source
="no";
5008 elif test -n "$cxx" && has
$cxx &&
5009 echo |
$cxx -dM -E - |
grep __clang__
>/dev
/null
2>&1 ; then
5010 fortify_source
="no";
5012 fortify_source
="yes"
5016 ##########################################
5017 # check if struct fsxattr is available via linux/fs.h
5021 #include <linux/fs.h>
5027 if compile_prog
"" "" ; then
5031 ##########################################
5032 # check if rtnetlink.h exists and is useful
5035 #include <linux/rtnetlink.h>
5037 return IFLA_PROTO_DOWN;
5040 if compile_prog
"" "" ; then
5044 ##########################################
5045 # check for usable AF_VSOCK environment
5049 #include <sys/types.h>
5050 #include <sys/socket.h>
5051 #if !defined(AF_VSOCK)
5052 # error missing AF_VSOCK flag
5054 #include <linux/vm_sockets.h>
5057 struct sockaddr_vm svm;
5058 socklen_t len = sizeof(svm);
5059 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5060 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5061 if ((ret == -1) && (errno == ENOTCONN)) {
5067 if compile_prog
"" "" ; then
5071 ##########################################
5072 # check for usable AF_ALG environment
5076 #include <sys/types.h>
5077 #include <sys/socket.h>
5078 #include <linux/if_alg.h>
5081 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5085 if compile_prog
"" "" ; then
5088 if test "$crypto_afalg" = "yes"
5090 if test "$have_afalg" != "yes"
5092 error_exit
"AF_ALG requested but could not be detected"
5097 #################################################
5098 # Check to see if we have the Hypervisor framework
5099 if [ "$darwin" = "yes" ] ; then
5101 #include <Hypervisor/hv.h>
5102 int main() { return 0;}
5104 if ! compile_object
""; then
5108 LDFLAGS
="-framework Hypervisor $LDFLAGS"
5112 #################################################
5113 # Sparc implicitly links with --relax, which is
5114 # incompatible with -r, so --no-relax should be
5115 # given. It does no harm to give it on other
5118 # Note: the prototype is needed since QEMU_CFLAGS
5119 # contains -Wmissing-prototypes
5121 extern int foo(void);
5122 int foo(void) { return 0; }
5124 if ! compile_object
""; then
5125 error_exit
"Failed to compile object file for LD_REL_FLAGS test"
5127 for i
in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5128 if do_cc
-nostdlib $i -o $TMPMO $TMPO; then
5133 if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5134 feature_not_found
"modules" "Cannot find how to build relocatable objects"
5137 ##########################################
5138 # check for sysmacros.h
5142 #include <sys/sysmacros.h>
5144 return makedev(0, 0);
5147 if compile_prog
"" "" ; then
5151 ##########################################
5152 # Veritas HyperScale block driver VxHS
5153 # Check if libvxhs is installed
5155 if test "$vxhs" != "no" ; then
5158 #include <qnio/qnio_api.h>
5160 void *vxhs_callback;
5163 iio_init(QNIO_VERSION, vxhs_callback);
5167 vxhs_libs
="-lvxhs -lssl"
5168 if compile_prog
"" "$vxhs_libs" ; then
5171 if test "$vxhs" = "yes" ; then
5172 feature_not_found
"vxhs block device" "Install libvxhs See github"
5178 ##########################################
5179 # check for _Static_assert()
5181 have_static_assert
=no
5183 _Static_assert(1, "success");
5188 if compile_prog
"" "" ; then
5189 have_static_assert
=yes
5192 ##########################################
5193 # check for utmpx.h, it is missing e.g. on OpenBSD
5198 struct utmpx user_info;
5203 if compile_prog
"" "" ; then
5207 ##########################################
5209 # After here, no more $cc or $ld runs
5211 if test "$gcov" = "yes" ; then
5212 CFLAGS
="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5213 LDFLAGS
="-fprofile-arcs -ftest-coverage $LDFLAGS"
5214 elif test "$fortify_source" = "yes" ; then
5215 CFLAGS
="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
5216 elif test "$debug" = "yes"; then
5217 if compile_prog
"-Og" ""; then
5218 CFLAGS
="-Og $CFLAGS"
5219 elif compile_prog
"-O1" ""; then
5220 CFLAGS
="-O1 $CFLAGS"
5222 # Workaround GCC false-positive Wuninitialized bugs with Og or O1:
5223 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
5224 if cc_has_warning_flag
"-Wno-maybe-uninitialized"; then
5225 CFLAGS
="-Wno-maybe-uninitialized $CFLAGS"
5228 CFLAGS
="-O2 $CFLAGS"
5231 ##########################################
5233 if test "$libnfs" != "no" ; then
5234 if $pkg_config --atleast-version=1.9.3 libnfs
; then
5236 libnfs_libs
=$
($pkg_config --libs libnfs
)
5238 if test "$libnfs" = "yes" ; then
5239 feature_not_found
"libnfs" "Install libnfs devel >= 1.9.3"
5245 # Now we've finished running tests it's OK to add -Werror to the compiler flags
5246 if test "$werror" = "yes"; then
5247 QEMU_CFLAGS
="-Werror $QEMU_CFLAGS"
5250 if test "$solaris" = "no" ; then
5251 if $ld --version 2>/dev
/null |
grep "GNU ld" >/dev
/null
2>/dev
/null
; then
5252 LDFLAGS
="-Wl,--warn-common $LDFLAGS"
5256 # test if pod2man has --utf8 option
5257 if pod2man
--help |
grep -q utf8
; then
5258 POD2MAN
="pod2man --utf8"
5263 # Use ASLR, no-SEH and DEP if available
5264 if test "$mingw32" = "yes" ; then
5265 for flag
in --dynamicbase --no-seh --nxcompat; do
5266 if ld_has
$flag ; then
5267 LDFLAGS
="-Wl,$flag $LDFLAGS"
5272 qemu_confdir
=$sysconfdir$confsuffix
5273 qemu_moddir
=$libdir$confsuffix
5274 qemu_datadir
=$datadir$confsuffix
5275 qemu_localedir
="$datadir/locale"
5277 # We can only support ivshmem if we have eventfd
5278 if [ "$eventfd" = "yes" ]; then
5283 if test "$want_tools" = "yes" ; then
5284 tools
="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
5285 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5286 tools
="qemu-nbd\$(EXESUF) $tools"
5288 if [ "$ivshmem" = "yes" ]; then
5289 tools
="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
5292 if test "$softmmu" = yes ; then
5293 if test "$linux" = yes; then
5294 if test "$virtfs" != no
&& test "$cap" = yes && test "$attr" = yes ; then
5296 tools
="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5298 if test "$virtfs" = yes; then
5299 error_exit
"VirtFS requires libcap devel and libattr devel"
5303 if test "$mpath" != no
&& test "$mpathpersist" = yes ; then
5306 if test "$mpath" = yes; then
5307 error_exit
"Multipath requires libmpathpersist devel"
5311 tools
="$tools scsi/qemu-pr-helper\$(EXESUF)"
5313 if test "$virtfs" = yes; then
5314 error_exit
"VirtFS is supported only on Linux"
5317 if test "$mpath" = yes; then
5318 error_exit
"Multipath is supported only on Linux"
5322 if test "$xkbcommon" = "yes"; then
5323 tools
="qemu-keymap\$(EXESUF) $tools"
5327 # Probe for guest agent support/options
5329 if [ "$guest_agent" != "no" ]; then
5330 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
5331 tools
="qemu-ga $tools"
5333 elif [ "$guest_agent" != yes ]; then
5336 error_exit
"Guest agent is not supported on this platform"
5340 # Guest agent Window MSI package
5342 if test "$guest_agent" != yes; then
5343 if test "$guest_agent_msi" = yes; then
5344 error_exit
"MSI guest agent package requires guest agent enabled"
5347 elif test "$mingw32" != "yes"; then
5348 if test "$guest_agent_msi" = "yes"; then
5349 error_exit
"MSI guest agent package is available only for MinGW Windows cross-compilation"
5352 elif ! has wixl
; then
5353 if test "$guest_agent_msi" = "yes"; then
5354 error_exit
"MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5358 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5359 # disabled explicitly
5360 if test "$guest_agent_msi" != "no"; then
5365 if test "$guest_agent_msi" = "yes"; then
5366 if test "$guest_agent_with_vss" = "yes"; then
5367 QEMU_GA_MSI_WITH_VSS
="-D InstallVss"
5370 if test "$QEMU_GA_MANUFACTURER" = ""; then
5371 QEMU_GA_MANUFACTURER
=QEMU
5374 if test "$QEMU_GA_DISTRO" = ""; then
5375 QEMU_GA_DISTRO
=Linux
5378 if test "$QEMU_GA_VERSION" = ""; then
5379 QEMU_GA_VERSION
=$
(cat $source_path/VERSION
)
5382 QEMU_GA_MSI_MINGW_DLL_PATH
="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
5386 QEMU_GA_MSI_ARCH
="-a x64 -D Arch=64"
5389 QEMU_GA_MSI_ARCH
="-D Arch=32"
5392 error_exit
"CPU $cpu not supported for building installation package"
5397 # Mac OS X ships with a broken assembler
5399 if test \
( "$cpu" = "i386" -o "$cpu" = "x86_64" \
) -a \
5400 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5401 "$softmmu" = yes ; then
5402 # Different host OS linkers have different ideas about the name of the ELF
5403 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5404 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5405 for emu
in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe
; do
5406 if "$ld" -verbose 2>&1 |
grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5407 ld_i386_emulation
="$emu"
5413 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5414 roms
="$roms spapr-rtas"
5417 if test "$cpu" = "s390x" ; then
5418 roms
="$roms s390-ccw"
5421 # Probe for the need for relocating the user-only binary.
5422 if ( [ "$linux_user" = yes ] ||
[ "$bsd_user" = yes ] ) && [ "$pie" = no
]; then
5425 arm | i386 | ppc
* | s390
* | sparc
* | x86_64 | x32
)
5426 # ??? Rationale for choosing this address
5427 textseg_addr
=0x60000000
5430 # A 256M aligned address, high in the address space, with enough
5431 # room for the code_gen_buffer above it before the stack.
5432 textseg_addr
=0x60000000
5435 if [ -n "$textseg_addr" ]; then
5437 int main(void) { return 0; }
5439 textseg_ldflags
="-Wl,-Ttext-segment=$textseg_addr"
5440 if ! compile_prog
"" "$textseg_ldflags"; then
5441 # In case ld does not support -Ttext-segment, edit the default linker
5442 # script via sed to set the .text start addr. This is needed on FreeBSD
5444 if ! $ld --verbose >/dev
/null
2>&1; then
5446 "We need to link the QEMU user mode binaries at a" \
5447 "specific text address. Unfortunately your linker" \
5448 "doesn't support either the -Ttext-segment option or" \
5449 "printing the default linker script with --verbose." \
5450 "If you don't want the user mode binaries, pass the" \
5451 "--disable-user option to configure."
5454 $ld --verbose |
sed \
5455 -e '1,/==================================================/d' \
5456 -e '/==================================================/,$d' \
5457 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5458 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5459 textseg_ldflags
="-Wl,-T../config-host.ld"
5464 # Check that the C++ compiler exists and works with the C compiler.
5465 # All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5468 int c_function(void);
5469 int main(void) { return c_function(); }
5476 int c_function(void);
5478 int c_function(void) { return 42; }
5483 if do_cxx
$QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5484 # C++ compiler $cxx works ok with C compiler $cc
5487 echo "C++ compiler $cxx does not work with C compiler $cc"
5488 echo "Disabling C++ specific optional code"
5492 echo "No C++ compiler available; disabling C++ specific optional code"
5497 if test "$1" = "yes" ; then
5502 # prepend pixman and ftd flags after all config tests are done
5503 QEMU_CFLAGS
="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5504 libs_softmmu
="$pixman_libs $libs_softmmu"
5506 echo "Install prefix $prefix"
5507 echo "BIOS directory $(eval echo $qemu_datadir)"
5508 echo "firmware path $(eval echo $firmwarepath)"
5509 echo "binary directory $(eval echo $bindir)"
5510 echo "library directory $(eval echo $libdir)"
5511 echo "module directory $(eval echo $qemu_moddir)"
5512 echo "libexec directory $(eval echo $libexecdir)"
5513 echo "include directory $(eval echo $includedir)"
5514 echo "config directory $(eval echo $sysconfdir)"
5515 if test "$mingw32" = "no" ; then
5516 echo "local state directory $(eval echo $local_statedir)"
5517 echo "Manual directory $(eval echo $mandir)"
5518 echo "ELF interp prefix $interp_prefix"
5520 echo "local state directory queried at runtime"
5521 echo "Windows SDK $win_sdk"
5523 echo "Source path $source_path"
5524 echo "GIT binary $git"
5525 echo "GIT submodules $git_submodules"
5526 echo "C compiler $cc"
5527 echo "Host C compiler $host_cc"
5528 echo "C++ compiler $cxx"
5529 echo "Objective-C compiler $objcc"
5530 echo "ARFLAGS $ARFLAGS"
5531 echo "CFLAGS $CFLAGS"
5532 echo "QEMU_CFLAGS $QEMU_CFLAGS"
5533 echo "LDFLAGS $LDFLAGS"
5535 echo "install $install"
5536 echo "python $python"
5537 if test "$slirp" = "yes" ; then
5540 echo "module support $modules"
5541 echo "host CPU $cpu"
5542 echo "host big endian $bigendian"
5543 echo "target list $target_list"
5544 echo "gprof enabled $gprof"
5545 echo "sparse enabled $sparse"
5546 echo "strip binaries $strip_opt"
5547 echo "profiler $profiler"
5548 echo "static build $static"
5549 if test "$darwin" = "yes" ; then
5550 echo "Cocoa support $cocoa"
5552 echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5553 echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
5554 echo "GTK GL support $gtk_gl"
5555 echo "VTE support $vte $(echo_version $vte $vteversion)"
5556 echo "TLS priority $tls_priority"
5557 echo "GNUTLS support $gnutls"
5558 echo "GNUTLS rnd $gnutls_rnd"
5559 echo "libgcrypt $gcrypt"
5560 echo "libgcrypt kdf $gcrypt_kdf"
5561 echo "nettle $nettle $(echo_version $nettle $nettle_version)"
5562 echo "nettle kdf $nettle_kdf"
5563 echo "libtasn1 $tasn1"
5564 echo "curses support $curses"
5565 echo "virgl support $virglrenderer"
5566 echo "curl support $curl"
5567 echo "mingw32 support $mingw32"
5568 echo "Audio drivers $audio_drv_list"
5569 echo "Block whitelist (rw) $block_drv_rw_whitelist"
5570 echo "Block whitelist (ro) $block_drv_ro_whitelist"
5571 echo "VirtFS support $virtfs"
5572 echo "Multipath support $mpath"
5573 echo "VNC support $vnc"
5574 if test "$vnc" = "yes" ; then
5575 echo "VNC SASL support $vnc_sasl"
5576 echo "VNC JPEG support $vnc_jpeg"
5577 echo "VNC PNG support $vnc_png"
5579 if test -n "$sparc_cpu"; then
5580 echo "Target Sparc Arch $sparc_cpu"
5582 echo "xen support $xen"
5583 if test "$xen" = "yes" ; then
5584 echo "xen ctrl version $xen_ctrl_version"
5585 echo "pv dom build $xen_pv_domain_build"
5587 echo "brlapi support $brlapi"
5588 echo "bluez support $bluez"
5589 echo "Documentation $docs"
5591 echo "vde support $vde"
5592 echo "netmap support $netmap"
5593 echo "Linux AIO support $linux_aio"
5594 echo "ATTR/XATTR support $attr"
5595 echo "Install blobs $blobs"
5596 echo "KVM support $kvm"
5597 echo "HAX support $hax"
5598 echo "HVF support $hvf"
5599 echo "TCG support $tcg"
5600 if test "$tcg" = "yes" ; then
5601 echo "TCG debug enabled $debug_tcg"
5602 echo "TCG interpreter $tcg_interpreter"
5604 echo "malloc trim support $malloc_trim"
5605 echo "RDMA support $rdma"
5606 echo "fdt support $fdt"
5607 echo "preadv support $preadv"
5608 echo "fdatasync $fdatasync"
5609 echo "madvise $madvise"
5610 echo "posix_madvise $posix_madvise"
5611 echo "libcap-ng support $cap_ng"
5612 echo "vhost-net support $vhost_net"
5613 echo "vhost-scsi support $vhost_scsi"
5614 echo "vhost-vsock support $vhost_vsock"
5615 echo "vhost-user support $vhost_user"
5616 echo "Trace backends $trace_backends"
5617 if have_backend
"simple"; then
5618 echo "Trace output file $trace_file-<pid>"
5620 echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5621 echo "rbd support $rbd"
5622 echo "xfsctl support $xfs"
5623 echo "smartcard support $smartcard"
5624 echo "libusb $libusb"
5625 echo "usb net redir $usb_redir"
5626 echo "OpenGL support $opengl"
5627 echo "OpenGL dmabufs $opengl_dmabuf"
5628 echo "libiscsi support $libiscsi"
5629 echo "libnfs support $libnfs"
5630 echo "build guest agent $guest_agent"
5631 echo "QGA VSS support $guest_agent_with_vss"
5632 echo "QGA w32 disk info $guest_agent_ntddscsi"
5633 echo "QGA MSI support $guest_agent_msi"
5634 echo "seccomp support $seccomp"
5635 echo "coroutine backend $coroutine"
5636 echo "coroutine pool $coroutine_pool"
5637 echo "debug stack usage $debug_stack_usage"
5638 echo "crypto afalg $crypto_afalg"
5639 echo "GlusterFS support $glusterfs"
5640 echo "gcov $gcov_tool"
5641 echo "gcov enabled $gcov"
5642 echo "TPM support $tpm"
5643 echo "libssh2 support $libssh2"
5644 echo "TPM passthrough $tpm_passthrough"
5645 echo "TPM emulator $tpm_emulator"
5646 echo "QOM debugging $qom_cast_debug"
5647 echo "Live block migration $live_block_migration"
5648 echo "lzo support $lzo"
5649 echo "snappy support $snappy"
5650 echo "bzip2 support $bzip2"
5651 echo "NUMA host support $numa"
5652 echo "libxml2 $libxml2"
5653 echo "tcmalloc support $tcmalloc"
5654 echo "jemalloc support $jemalloc"
5655 echo "avx2 optimization $avx2_opt"
5656 echo "replication support $replication"
5657 echo "VxHS block device $vxhs"
5658 echo "capstone $capstone"
5660 if test "$sdl_too_old" = "yes"; then
5661 echo "-> Your SDL version is too old - please upgrade to have SDL support"
5664 if test "$gtkabi" = "2.0"; then
5666 echo "WARNING: Use of GTK 2.0 is deprecated and will be removed in"
5667 echo "WARNING: future releases. Please switch to using GTK 3.0"
5670 if test "$sdlabi" = "1.2"; then
5672 echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
5673 echo "WARNING: future releases. Please switch to using SDL 2.0"
5676 if test "$supported_cpu" = "no"; then
5678 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5680 echo "CPU host architecture $cpu support is not currently maintained."
5681 echo "The QEMU project intends to remove support for this host CPU in"
5682 echo "a future release if nobody volunteers to maintain it and to"
5683 echo "provide a build host for our continuous integration setup."
5684 echo "configure has succeeded and you can continue to build, but"
5685 echo "if you care about QEMU on this platform you should contact"
5686 echo "us upstream at qemu-devel@nongnu.org."
5689 if test "$supported_os" = "no"; then
5691 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5693 echo "Host OS $targetos support is not currently maintained."
5694 echo "The QEMU project intends to remove support for this host OS in"
5695 echo "a future release if nobody volunteers to maintain it and to"
5696 echo "provide a build host for our continuous integration setup."
5697 echo "configure has succeeded and you can continue to build, but"
5698 echo "if you care about QEMU on this platform you should contact"
5699 echo "us upstream at qemu-devel@nongnu.org."
5702 config_host_mak
="config-host.mak"
5704 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5706 echo "# Automatically generated by configure - do not modify" > $config_host_mak
5707 echo >> $config_host_mak
5709 echo all
: >> $config_host_mak
5710 echo "prefix=$prefix" >> $config_host_mak
5711 echo "bindir=$bindir" >> $config_host_mak
5712 echo "libdir=$libdir" >> $config_host_mak
5713 echo "libexecdir=$libexecdir" >> $config_host_mak
5714 echo "includedir=$includedir" >> $config_host_mak
5715 echo "mandir=$mandir" >> $config_host_mak
5716 echo "sysconfdir=$sysconfdir" >> $config_host_mak
5717 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
5718 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5719 echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
5720 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
5721 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
5722 if test "$mingw32" = "no" ; then
5723 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5725 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
5726 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5727 echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
5728 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5729 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
5730 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
5731 echo "GIT=$git" >> $config_host_mak
5732 echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
5733 echo "GIT_UPDATE=$git_update" >> $config_host_mak
5735 echo "ARCH=$ARCH" >> $config_host_mak
5737 if test "$debug_tcg" = "yes" ; then
5738 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5740 if test "$strip_opt" = "yes" ; then
5741 echo "STRIP=${strip}" >> $config_host_mak
5743 if test "$bigendian" = "yes" ; then
5744 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5746 if test "$mingw32" = "yes" ; then
5747 echo "CONFIG_WIN32=y" >> $config_host_mak
5748 rc_version
=$
(cat $source_path/VERSION
)
5749 version_major
=${rc_version%%.*}
5750 rc_version
=${rc_version#*.}
5751 version_minor
=${rc_version%%.*}
5752 rc_version
=${rc_version#*.}
5753 version_subminor
=${rc_version%%.*}
5755 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5756 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5757 if test "$guest_agent_with_vss" = "yes" ; then
5758 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5759 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5760 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5762 if test "$guest_agent_ntddscsi" = "yes" ; then
5763 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5765 if test "$guest_agent_msi" = "yes"; then
5766 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5767 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5768 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5769 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5770 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5771 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5772 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5775 echo "CONFIG_POSIX=y" >> $config_host_mak
5778 if test "$linux" = "yes" ; then
5779 echo "CONFIG_LINUX=y" >> $config_host_mak
5782 if test "$darwin" = "yes" ; then
5783 echo "CONFIG_DARWIN=y" >> $config_host_mak
5786 if test "$solaris" = "yes" ; then
5787 echo "CONFIG_SOLARIS=y" >> $config_host_mak
5789 if test "$haiku" = "yes" ; then
5790 echo "CONFIG_HAIKU=y" >> $config_host_mak
5792 if test "$static" = "yes" ; then
5793 echo "CONFIG_STATIC=y" >> $config_host_mak
5795 if test "$profiler" = "yes" ; then
5796 echo "CONFIG_PROFILER=y" >> $config_host_mak
5798 if test "$slirp" = "yes" ; then
5799 echo "CONFIG_SLIRP=y" >> $config_host_mak
5800 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5802 if test "$vde" = "yes" ; then
5803 echo "CONFIG_VDE=y" >> $config_host_mak
5804 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
5806 if test "$netmap" = "yes" ; then
5807 echo "CONFIG_NETMAP=y" >> $config_host_mak
5809 if test "$l2tpv3" = "yes" ; then
5810 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5812 if test "$cap_ng" = "yes" ; then
5813 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5815 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5816 for drv
in $audio_drv_list; do
5817 def
=CONFIG_$
(echo $drv | LC_ALL
=C
tr '[a-z]' '[A-Z]')
5818 echo "$def=y" >> $config_host_mak
5820 echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
5821 echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
5822 echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
5823 echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
5824 echo "OSS_LIBS=$oss_libs" >> $config_host_mak
5825 if test "$audio_pt_int" = "yes" ; then
5826 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5828 if test "$audio_win_int" = "yes" ; then
5829 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5831 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5832 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5833 if test "$vnc" = "yes" ; then
5834 echo "CONFIG_VNC=y" >> $config_host_mak
5836 if test "$vnc_sasl" = "yes" ; then
5837 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5839 if test "$vnc_jpeg" = "yes" ; then
5840 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5842 if test "$vnc_png" = "yes" ; then
5843 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5845 if test "$xkbcommon" = "yes" ; then
5846 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
5847 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
5849 if test "$fnmatch" = "yes" ; then
5850 echo "CONFIG_FNMATCH=y" >> $config_host_mak
5852 if test "$xfs" = "yes" ; then
5853 echo "CONFIG_XFS=y" >> $config_host_mak
5855 qemu_version
=$
(head $source_path/VERSION
)
5856 echo "VERSION=$qemu_version" >>$config_host_mak
5857 echo "PKGVERSION=$pkgversion" >>$config_host_mak
5858 echo "SRC_PATH=$source_path" >> $config_host_mak
5859 echo "TARGET_DIRS=$target_list" >> $config_host_mak
5860 if [ "$docs" = "yes" ] ; then
5861 echo "BUILD_DOCS=yes" >> $config_host_mak
5863 if test "$modules" = "yes"; then
5864 # $shacmd can generate a hash started with digit, which the compiler doesn't
5865 # like as an symbol. So prefix it with an underscore
5866 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5867 echo "CONFIG_MODULES=y" >> $config_host_mak
5869 if test "$sdl" = "yes" ; then
5870 echo "CONFIG_SDL=y" >> $config_host_mak
5871 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5872 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5873 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
5875 if test "$cocoa" = "yes" ; then
5876 echo "CONFIG_COCOA=y" >> $config_host_mak
5878 if test "$curses" = "yes" ; then
5879 echo "CONFIG_CURSES=y" >> $config_host_mak
5881 if test "$pipe2" = "yes" ; then
5882 echo "CONFIG_PIPE2=y" >> $config_host_mak
5884 if test "$accept4" = "yes" ; then
5885 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5887 if test "$splice" = "yes" ; then
5888 echo "CONFIG_SPLICE=y" >> $config_host_mak
5890 if test "$eventfd" = "yes" ; then
5891 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5893 if test "$memfd" = "yes" ; then
5894 echo "CONFIG_MEMFD=y" >> $config_host_mak
5896 if test "$fallocate" = "yes" ; then
5897 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5899 if test "$fallocate_punch_hole" = "yes" ; then
5900 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5902 if test "$fallocate_zero_range" = "yes" ; then
5903 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5905 if test "$posix_fallocate" = "yes" ; then
5906 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5908 if test "$sync_file_range" = "yes" ; then
5909 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5911 if test "$fiemap" = "yes" ; then
5912 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5914 if test "$dup3" = "yes" ; then
5915 echo "CONFIG_DUP3=y" >> $config_host_mak
5917 if test "$ppoll" = "yes" ; then
5918 echo "CONFIG_PPOLL=y" >> $config_host_mak
5920 if test "$prctl_pr_set_timerslack" = "yes" ; then
5921 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5923 if test "$epoll" = "yes" ; then
5924 echo "CONFIG_EPOLL=y" >> $config_host_mak
5926 if test "$epoll_create1" = "yes" ; then
5927 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5929 if test "$sendfile" = "yes" ; then
5930 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5932 if test "$timerfd" = "yes" ; then
5933 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5935 if test "$setns" = "yes" ; then
5936 echo "CONFIG_SETNS=y" >> $config_host_mak
5938 if test "$clock_adjtime" = "yes" ; then
5939 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5941 if test "$syncfs" = "yes" ; then
5942 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5944 if test "$inotify" = "yes" ; then
5945 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5947 if test "$inotify1" = "yes" ; then
5948 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5950 if test "$sem_timedwait" = "yes" ; then
5951 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
5953 if test "$byteswap_h" = "yes" ; then
5954 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5956 if test "$bswap_h" = "yes" ; then
5957 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5959 if test "$curl" = "yes" ; then
5960 echo "CONFIG_CURL=m" >> $config_host_mak
5961 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5962 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5964 if test "$brlapi" = "yes" ; then
5965 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5966 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
5968 if test "$bluez" = "yes" ; then
5969 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5970 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5972 if test "$glib_subprocess" = "yes" ; then
5973 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5975 if test "$gtk" = "yes" ; then
5976 echo "CONFIG_GTK=y" >> $config_host_mak
5977 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5978 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5979 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5980 if test "$gtk_gl" = "yes" ; then
5981 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5984 echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5985 if test "$gnutls" = "yes" ; then
5986 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5988 if test "$gnutls_rnd" = "yes" ; then
5989 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5991 if test "$gcrypt" = "yes" ; then
5992 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5993 if test "$gcrypt_hmac" = "yes" ; then
5994 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5996 if test "$gcrypt_kdf" = "yes" ; then
5997 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
6000 if test "$nettle" = "yes" ; then
6001 echo "CONFIG_NETTLE=y" >> $config_host_mak
6002 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
6003 if test "$nettle_kdf" = "yes" ; then
6004 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
6007 if test "$tasn1" = "yes" ; then
6008 echo "CONFIG_TASN1=y" >> $config_host_mak
6010 if test "$have_ifaddrs_h" = "yes" ; then
6011 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6013 if test "$have_broken_size_max" = "yes" ; then
6014 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6017 # Work around a system header bug with some kernel/XFS header
6018 # versions where they both try to define 'struct fsxattr':
6019 # xfs headers will not try to redefine structs from linux headers
6020 # if this macro is set.
6021 if test "$have_fsxattr" = "yes" ; then
6022 echo "HAVE_FSXATTR=y" >> $config_host_mak
6024 if test "$vte" = "yes" ; then
6025 echo "CONFIG_VTE=y" >> $config_host_mak
6026 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6028 if test "$virglrenderer" = "yes" ; then
6029 echo "CONFIG_VIRGL=y" >> $config_host_mak
6030 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6031 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6033 if test "$xen" = "yes" ; then
6034 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
6035 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
6036 if test "$xen_pv_domain_build" = "yes" ; then
6037 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6040 if test "$linux_aio" = "yes" ; then
6041 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6043 if test "$attr" = "yes" ; then
6044 echo "CONFIG_ATTR=y" >> $config_host_mak
6046 if test "$libattr" = "yes" ; then
6047 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6049 if test "$virtfs" = "yes" ; then
6050 echo "CONFIG_VIRTFS=y" >> $config_host_mak
6052 if test "$mpath" = "yes" ; then
6053 echo "CONFIG_MPATH=y" >> $config_host_mak
6055 if test "$vhost_scsi" = "yes" ; then
6056 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6058 if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
6059 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6061 if test "$vhost_vsock" = "yes" ; then
6062 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6064 if test "$vhost_user" = "yes" ; then
6065 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6067 if test "$blobs" = "yes" ; then
6068 echo "INSTALL_BLOBS=yes" >> $config_host_mak
6070 if test "$iovec" = "yes" ; then
6071 echo "CONFIG_IOVEC=y" >> $config_host_mak
6073 if test "$preadv" = "yes" ; then
6074 echo "CONFIG_PREADV=y" >> $config_host_mak
6076 if test "$fdt" = "yes" ; then
6077 echo "CONFIG_FDT=y" >> $config_host_mak
6079 if test "$signalfd" = "yes" ; then
6080 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6082 if test "$tcg" = "yes"; then
6083 echo "CONFIG_TCG=y" >> $config_host_mak
6084 if test "$tcg_interpreter" = "yes" ; then
6085 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6088 if test "$fdatasync" = "yes" ; then
6089 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6091 if test "$madvise" = "yes" ; then
6092 echo "CONFIG_MADVISE=y" >> $config_host_mak
6094 if test "$posix_madvise" = "yes" ; then
6095 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6098 if test "$spice" = "yes" ; then
6099 echo "CONFIG_SPICE=y" >> $config_host_mak
6102 if test "$smartcard" = "yes" ; then
6103 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
6104 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6105 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
6108 if test "$libusb" = "yes" ; then
6109 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
6110 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6111 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
6114 if test "$usb_redir" = "yes" ; then
6115 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
6116 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6117 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
6120 if test "$opengl" = "yes" ; then
6121 echo "CONFIG_OPENGL=y" >> $config_host_mak
6122 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
6123 if test "$opengl_dmabuf" = "yes" ; then
6124 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6128 if test "$malloc_trim" = "yes" ; then
6129 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6132 if test "$avx2_opt" = "yes" ; then
6133 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6136 if test "$lzo" = "yes" ; then
6137 echo "CONFIG_LZO=y" >> $config_host_mak
6140 if test "$snappy" = "yes" ; then
6141 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6144 if test "$bzip2" = "yes" ; then
6145 echo "CONFIG_BZIP2=y" >> $config_host_mak
6146 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6149 if test "$libiscsi" = "yes" ; then
6150 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
6151 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6152 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
6155 if test "$libnfs" = "yes" ; then
6156 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6157 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
6160 if test "$seccomp" = "yes"; then
6161 echo "CONFIG_SECCOMP=y" >> $config_host_mak
6162 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6163 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
6166 # XXX: suppress that
6167 if [ "$bsd" = "yes" ] ; then
6168 echo "CONFIG_BSD=y" >> $config_host_mak
6171 if test "$localtime_r" = "yes" ; then
6172 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6174 if test "$qom_cast_debug" = "yes" ; then
6175 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6177 if test "$rbd" = "yes" ; then
6178 echo "CONFIG_RBD=m" >> $config_host_mak
6179 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6180 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
6183 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
6184 if test "$coroutine_pool" = "yes" ; then
6185 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6187 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6190 if test "$debug_stack_usage" = "yes" ; then
6191 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6194 if test "$crypto_afalg" = "yes" ; then
6195 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6198 if test "$open_by_handle_at" = "yes" ; then
6199 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6202 if test "$linux_magic_h" = "yes" ; then
6203 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6206 if test "$pragma_diagnostic_available" = "yes" ; then
6207 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
6210 if test "$valgrind_h" = "yes" ; then
6211 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6214 if test "$has_environ" = "yes" ; then
6215 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6218 if test "$cpuid_h" = "yes" ; then
6219 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6222 if test "$int128" = "yes" ; then
6223 echo "CONFIG_INT128=y" >> $config_host_mak
6226 if test "$atomic128" = "yes" ; then
6227 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6230 if test "$atomic64" = "yes" ; then
6231 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6234 if test "$getauxval" = "yes" ; then
6235 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6238 if test "$glusterfs" = "yes" ; then
6239 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
6240 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6241 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
6244 if test "$glusterfs_xlator_opt" = "yes" ; then
6245 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6248 if test "$glusterfs_discard" = "yes" ; then
6249 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6252 if test "$glusterfs_fallocate" = "yes" ; then
6253 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6256 if test "$glusterfs_zerofill" = "yes" ; then
6257 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6260 if test "$libssh2" = "yes" ; then
6261 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
6262 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6263 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
6266 if test "$live_block_migration" = "yes" ; then
6267 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6270 if test "$tpm" = "yes"; then
6271 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
6272 # TPM passthrough support?
6273 if test "$tpm_passthrough" = "yes"; then
6274 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6276 # TPM emulator support?
6277 if test "$tpm_emulator" = "yes"; then
6278 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6282 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6283 if have_backend
"nop"; then
6284 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
6286 if have_backend
"simple"; then
6287 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6288 # Set the appropriate trace file.
6289 trace_file
="\"$trace_file-\" FMT_pid"
6291 if have_backend
"log"; then
6292 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
6294 if have_backend
"ust"; then
6295 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6297 if have_backend
"dtrace"; then
6298 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6299 if test "$trace_backend_stap" = "yes" ; then
6300 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6303 if have_backend
"ftrace"; then
6304 if test "$linux" = "yes" ; then
6305 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
6307 feature_not_found
"ftrace(trace backend)" "ftrace requires Linux"
6310 if have_backend
"syslog"; then
6311 if test "$posix_syslog" = "yes" ; then
6312 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6314 feature_not_found
"syslog(trace backend)" "syslog not available"
6317 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6319 if test "$rdma" = "yes" ; then
6320 echo "CONFIG_RDMA=y" >> $config_host_mak
6321 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
6324 if test "$have_rtnetlink" = "yes" ; then
6325 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6328 if test "$libxml2" = "yes" ; then
6329 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6330 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6331 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6334 if test "$replication" = "yes" ; then
6335 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6338 if test "$have_af_vsock" = "yes" ; then
6339 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6342 if test "$have_sysmacros" = "yes" ; then
6343 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6346 if test "$have_static_assert" = "yes" ; then
6347 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6350 if test "$have_utmpx" = "yes" ; then
6351 echo "HAVE_UTMPX=y" >> $config_host_mak
6354 if test "$ivshmem" = "yes" ; then
6355 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6357 if test "$capstone" != "no" ; then
6358 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6361 # Hold two types of flag:
6362 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6363 # a thread we have a handle to
6364 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6366 if test "$pthread_setname_np" = "yes" ; then
6367 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6368 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6371 if test "$vxhs" = "yes" ; then
6372 echo "CONFIG_VXHS=y" >> $config_host_mak
6373 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6376 if test "$tcg_interpreter" = "yes"; then
6377 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6378 elif test "$ARCH" = "sparc64" ; then
6379 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6380 elif test "$ARCH" = "s390x" ; then
6381 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
6382 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
6383 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
6384 elif test "$ARCH" = "ppc64" ; then
6385 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
6387 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6389 QEMU_INCLUDES
="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6391 echo "TOOLS=$tools" >> $config_host_mak
6392 echo "ROMS=$roms" >> $config_host_mak
6393 echo "MAKE=$make" >> $config_host_mak
6394 echo "INSTALL=$install" >> $config_host_mak
6395 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6396 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
6397 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6398 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
6399 echo "PYTHON=$python" >> $config_host_mak
6400 echo "CC=$cc" >> $config_host_mak
6401 if $iasl -h > /dev
/null
2>&1; then
6402 echo "IASL=$iasl" >> $config_host_mak
6404 echo "CC_I386=$cc_i386" >> $config_host_mak
6405 echo "HOST_CC=$host_cc" >> $config_host_mak
6406 echo "CXX=$cxx" >> $config_host_mak
6407 echo "OBJCC=$objcc" >> $config_host_mak
6408 echo "AR=$ar" >> $config_host_mak
6409 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
6410 echo "AS=$as" >> $config_host_mak
6411 echo "CCAS=$ccas" >> $config_host_mak
6412 echo "CPP=$cpp" >> $config_host_mak
6413 echo "OBJCOPY=$objcopy" >> $config_host_mak
6414 echo "LD=$ld" >> $config_host_mak
6415 echo "RANLIB=$ranlib" >> $config_host_mak
6416 echo "NM=$nm" >> $config_host_mak
6417 echo "WINDRES=$windres" >> $config_host_mak
6418 echo "CFLAGS=$CFLAGS" >> $config_host_mak
6419 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
6420 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
6421 echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
6422 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
6423 if test "$sparse" = "yes" ; then
6424 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
6425 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
6426 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
6427 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6428 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6430 if test "$cross_prefix" != ""; then
6431 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6433 echo "AUTOCONF_HOST := " >> $config_host_mak
6435 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
6436 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
6437 echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
6438 echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
6439 echo "LIBS+=$LIBS" >> $config_host_mak
6440 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
6441 echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
6442 echo "EXESUF=$EXESUF" >> $config_host_mak
6443 echo "DSOSUF=$DSOSUF" >> $config_host_mak
6444 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
6445 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
6446 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6447 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
6448 echo "POD2MAN=$POD2MAN" >> $config_host_mak
6449 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
6450 if test "$gcov" = "yes" ; then
6451 echo "CONFIG_GCOV=y" >> $config_host_mak
6452 echo "GCOV=$gcov_tool" >> $config_host_mak
6455 # use included Linux headers
6456 if test "$linux" = "yes" ; then
6457 mkdir
-p linux-headers
6475 # For most CPUs the kernel architecture name and QEMU CPU name match.
6479 # For non-KVM architectures we will not have asm headers
6480 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6481 symlink
"$source_path/linux-headers/asm-$linux_arch" linux-headers
/asm
6485 for target
in $target_list; do
6486 target_dir
="$target"
6487 config_target_mak
=$target_dir/config-target.mak
6488 target_name
=$
(echo $target | cut
-d '-' -f 1)
6489 target_bigendian
="no"
6491 case "$target_name" in
6492 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb
)
6493 target_bigendian
=yes
6497 target_user_only
="no"
6498 target_linux_user
="no"
6499 target_bsd_user
="no"
6501 ${target_name}-softmmu)
6502 target_softmmu
="yes"
6504 ${target_name}-linux-user)
6505 target_user_only
="yes"
6506 target_linux_user
="yes"
6508 ${target_name}-bsd-user)
6509 target_user_only
="yes"
6510 target_bsd_user
="yes"
6513 error_exit
"Target '$target' not recognised"
6518 mkdir
-p $target_dir
6519 echo "# Automatically generated by configure - do not modify" > $config_target_mak
6523 interp_prefix1
=$
(echo "$interp_prefix" |
sed "s/%M/$target_name/g")
6526 TARGET_ARCH
="$target_name"
6530 case "$target_name" in
6532 gdb_xml_files
="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
6535 TARGET_BASE_ARCH
=i386
6536 gdb_xml_files
="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
6545 gdb_xml_files
="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6549 TARGET_BASE_ARCH
=arm
6552 gdb_xml_files
="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6563 gdb_xml_files
="cf-core.xml cf-fp.xml m68k-fp.xml"
6565 microblaze|microblazeel
)
6566 TARGET_ARCH
=microblaze
6571 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6575 TARGET_BASE_ARCH
=mips
6576 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6577 echo "TARGET_ABI32=y" >> $config_target_mak
6581 TARGET_BASE_ARCH
=mips
6582 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6589 TARGET_ARCH
=openrisc
6590 TARGET_BASE_ARCH
=openrisc
6593 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6596 TARGET_BASE_ARCH
=ppc
6598 gdb_xml_files
="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6601 TARGET_BASE_ARCH
=ppc
6604 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6608 TARGET_BASE_ARCH
=ppc
6611 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6615 TARGET_BASE_ARCH
=ppc
6617 echo "TARGET_ABI32=y" >> $config_target_mak
6618 gdb_xml_files
="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6627 TARGET_BASE_ARCH
=sparc
6631 TARGET_BASE_ARCH
=sparc
6632 TARGET_ABI_DIR
=sparc
6633 echo "TARGET_ABI32=y" >> $config_target_mak
6636 gdb_xml_files
="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
6648 error_exit
"Unsupported target CPU"
6651 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6652 if [ "$TARGET_BASE_ARCH" = "" ]; then
6653 TARGET_BASE_ARCH
=$TARGET_ARCH
6656 symlink
"$source_path/Makefile.target" "$target_dir/Makefile"
6659 echo "$@"| LC_ALL
=C
tr '[a-z]' '[A-Z]'
6662 target_arch_name
="$(upper $TARGET_ARCH)"
6663 echo "TARGET_$target_arch_name=y" >> $config_target_mak
6664 echo "TARGET_NAME=$target_name" >> $config_target_mak
6665 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6666 if [ "$TARGET_ABI_DIR" = "" ]; then
6667 TARGET_ABI_DIR
=$TARGET_ARCH
6669 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6670 if [ "$HOST_VARIANT_DIR" != "" ]; then
6671 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6674 if supported_xen_target
$target; then
6675 echo "CONFIG_XEN=y" >> $config_target_mak
6676 if test "$xen_pci_passthrough" = yes; then
6677 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6680 if supported_kvm_target
$target; then
6681 echo "CONFIG_KVM=y" >> $config_target_mak
6682 if test "$vhost_net" = "yes" ; then
6683 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6684 if test "$vhost_user" = "yes" ; then
6685 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6689 if supported_hax_target
$target; then
6690 echo "CONFIG_HAX=y" >> $config_target_mak
6692 if supported_hvf_target
$target; then
6693 echo "CONFIG_HVF=y" >> $config_target_mak
6695 if test "$target_bigendian" = "yes" ; then
6696 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6698 if test "$target_softmmu" = "yes" ; then
6699 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6700 if test "$mttcg" = "yes" ; then
6701 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6704 if test "$target_user_only" = "yes" ; then
6705 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6706 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6708 if test "$target_linux_user" = "yes" ; then
6709 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6712 if test ! -z "$gdb_xml_files" ; then
6713 for x
in $gdb_xml_files; do
6714 list
="$list $source_path/gdb-xml/$x"
6716 echo "TARGET_XML_FILES=$list" >> $config_target_mak
6719 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6720 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6722 if test "$target_bsd_user" = "yes" ; then
6723 echo "CONFIG_BSD_USER=y" >> $config_target_mak
6726 # generate QEMU_CFLAGS/LDFLAGS for targets
6732 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6733 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6736 for i
in $ARCH $TARGET_BASE_ARCH ; do
6739 disas_config
"ALPHA"
6742 if test -n "${cxx}"; then
6743 disas_config
"ARM_A64"
6748 if test -n "${cxx}"; then
6749 disas_config
"ARM_A64"
6768 disas_config
"MICROBLAZE"
6774 disas_config
"MOXIE"
6777 disas_config
"NIOS2"
6780 disas_config
"OPENRISC"
6792 disas_config
"SPARC"
6795 disas_config
"XTENSA"
6799 if test "$tcg_interpreter" = "yes" ; then
6805 # Ensure there's only a single GP
6806 cflags
="-msmall-data $cflags"
6810 if test "$gprof" = "yes" ; then
6811 echo "TARGET_GPROF=yes" >> $config_target_mak
6812 if test "$target_linux_user" = "yes" ; then
6814 ldflags
="-p $ldflags"
6816 if test "$target_softmmu" = "yes" ; then
6817 ldflags
="-p $ldflags"
6818 echo "GPROF_CFLAGS=-p" >> $config_target_mak
6822 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6823 ldflags
="$ldflags $textseg_ldflags"
6826 # Newer kernels on s390 check for an S390_PGSTE program header and
6827 # enable the pgste page table extensions in that case. This makes
6828 # the vm.allocate_pgste sysctl unnecessary. We enable this program
6830 # - we build on s390x
6831 # - we build the system emulation for s390x (qemu-system-s390x)
6833 # - the linker supports --s390-pgste
6834 if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
6835 if ld_has
--s390-pgste ; then
6836 ldflags
="-Wl,--s390-pgste $ldflags"
6840 echo "LDFLAGS+=$ldflags" >> $config_target_mak
6841 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6843 done # for target in $targets
6845 if [ "$dtc_internal" = "yes" ]; then
6846 echo "config-host.h: subdir-dtc" >> $config_host_mak
6848 if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
6849 echo "config-host.h: subdir-capstone" >> $config_host_mak
6851 if test -n "$LIBCAPSTONE"; then
6852 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
6855 if test "$numa" = "yes"; then
6856 echo "CONFIG_NUMA=y" >> $config_host_mak
6859 if test "$ccache_cpp2" = "yes"; then
6860 echo "export CCACHE_CPP2=y" >> $config_host_mak
6863 # build tree in object directory in case the source is not in the current directory
6864 DIRS
="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
6865 DIRS
="$DIRS docs docs/interop fsdev scsi"
6866 DIRS
="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6867 DIRS
="$DIRS roms/seabios roms/vgabios"
6868 DIRS
="$DIRS qapi-generated"
6869 FILES
="Makefile tests/tcg/Makefile qdict-test-data.txt"
6870 FILES
="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6871 FILES
="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6872 FILES
="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6873 FILES
="$FILES pc-bios/spapr-rtas/Makefile"
6874 FILES
="$FILES pc-bios/s390-ccw/Makefile"
6875 FILES
="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6876 FILES
="$FILES pc-bios/qemu-icon.bmp"
6877 FILES
="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
6879 $source_path/pc-bios
/*.bin \
6880 $source_path/pc-bios
/*.lid \
6881 $source_path/pc-bios
/*.aml \
6882 $source_path/pc-bios
/*.rom \
6883 $source_path/pc-bios
/*.dtb \
6884 $source_path/pc-bios
/*.img \
6885 $source_path/pc-bios
/openbios-
* \
6886 $source_path/pc-bios
/u-boot.
* \
6887 $source_path/pc-bios
/palcode-
*
6889 FILES
="$FILES pc-bios/$(basename $bios_file)"
6891 for test_file
in $
(find $source_path/tests
/acpi-test-data
-type f
)
6893 FILES
="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6896 for f
in $FILES ; do
6897 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6898 symlink
"$source_path/$f" "$f"
6902 # temporary config to build submodules
6903 for rom
in seabios vgabios
; do
6904 config_mak
=roms
/$rom/config.mak
6905 echo "# Automatically generated by configure - do not modify" > $config_mak
6906 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6907 echo "AS=$as" >> $config_mak
6908 echo "CCAS=$ccas" >> $config_mak
6909 echo "CC=$cc" >> $config_mak
6910 echo "BCC=bcc" >> $config_mak
6911 echo "CPP=$cpp" >> $config_mak
6912 echo "OBJCOPY=objcopy" >> $config_mak
6913 echo "IASL=$iasl" >> $config_mak
6914 echo "LD=$ld" >> $config_mak
6915 echo "RANLIB=$ranlib" >> $config_mak
6918 # set up tests data directory
6919 if [ ! -e tests
/data
]; then
6920 symlink
"$source_path/tests/data" tests
/data
6923 # set up qemu-iotests in this build directory
6924 iotests_common_env
="tests/qemu-iotests/common.env"
6925 iotests_check
="tests/qemu-iotests/check"
6927 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6928 echo >> "$iotests_common_env"
6929 echo "export PYTHON='$python'" >> "$iotests_common_env"
6931 if [ ! -e "$iotests_check" ]; then
6932 symlink
"$source_path/$iotests_check" "$iotests_check"
6935 # Save the configure command line for later reuse.
6936 cat <<EOD >config.status
6938 # Generated by configure.
6939 # Run this file to recreate the current configuration.
6940 # Compiler output produced by configure, useful for debugging
6941 # configure, is in config.log if it exists.
6943 printf "exec" >>config.status
6944 printf " '%s'" "$0" "$@" >>config.status
6945 echo ' "$@"' >>config.status
6946 chmod +x config.status