Merge remote-tracking branch 'qemu/master'
[qemu/ar7.git] / configure
blob180274389b8ba812cc3e53cc898fb1f17bbd065e
1 #!/bin/sh
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 # Temporary directory used for files created while
12 # configure runs. Since it is in the build directory
13 # we can safely blow away any previous version of it
14 # (and we need not jump through hoops to try to delete
15 # it when configure exits.)
16 TMPDIR1="config-temp"
17 rm -rf "${TMPDIR1}"
18 mkdir -p "${TMPDIR1}"
19 if [ $? -ne 0 ]; then
20 echo "ERROR: failed to create temporary directory"
21 exit 1
24 TMPB="qemu-conf"
25 TMPC="${TMPDIR1}/${TMPB}.c"
26 TMPO="${TMPDIR1}/${TMPB}.o"
27 TMPCXX="${TMPDIR1}/${TMPB}.cxx"
28 TMPL="${TMPDIR1}/${TMPB}.lo"
29 TMPA="${TMPDIR1}/lib${TMPB}.la"
30 TMPE="${TMPDIR1}/${TMPB}.exe"
32 rm -f config.log
34 # Print a helpful header at the top of config.log
35 echo "# QEMU configure log $(date)" >> config.log
36 printf "# Configured with:" >> config.log
37 printf " '%s'" "$0" "$@" >> config.log
38 echo >> config.log
39 echo "#" >> config.log
41 error_exit() {
42 echo
43 echo "ERROR: $1"
44 while test -n "$2"; do
45 echo " $2"
46 shift
47 done
48 echo
49 exit 1
52 do_compiler() {
53 # Run the compiler, capturing its output to the log. First argument
54 # is compiler binary to execute.
55 local compiler="$1"
56 shift
57 echo $compiler "$@" >> config.log
58 $compiler "$@" >> config.log 2>&1 || return $?
59 # Test passed. If this is an --enable-werror build, rerun
60 # the test with -Werror and bail out if it fails. This
61 # makes warning-generating-errors in configure test code
62 # obvious to developers.
63 if test "$werror" != "yes"; then
64 return 0
66 # Don't bother rerunning the compile if we were already using -Werror
67 case "$*" in
68 *-Werror*)
69 return 0
71 esac
72 echo $compiler -Werror "$@" >> config.log
73 $compiler -Werror "$@" >> config.log 2>&1 && return $?
74 error_exit "configure test passed without -Werror but failed with -Werror." \
75 "This is probably a bug in the configure script. The failing command" \
76 "will be at the bottom of config.log." \
77 "You can run configure with --disable-werror to bypass this check."
80 do_cc() {
81 do_compiler "$cc" "$@"
84 do_cxx() {
85 do_compiler "$cxx" "$@"
88 update_cxxflags() {
89 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
90 # options which some versions of GCC's C++ compiler complain about
91 # because they only make sense for C programs.
92 QEMU_CXXFLAGS=
93 for arg in $QEMU_CFLAGS; do
94 case $arg in
95 -Wno-override-init|\
96 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
97 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
100 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
102 esac
103 done
106 compile_object() {
107 local_cflags="$1"
108 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
111 compile_prog() {
112 local_cflags="$1"
113 local_ldflags="$2"
114 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
117 do_libtool() {
118 local mode=$1
119 shift
120 # Run the compiler, capturing its output to the log.
121 echo $libtool $mode --tag=CC $cc "$@" >> config.log
122 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
123 # Test passed. If this is an --enable-werror build, rerun
124 # the test with -Werror and bail out if it fails. This
125 # makes warning-generating-errors in configure test code
126 # obvious to developers.
127 if test "$werror" != "yes"; then
128 return 0
130 # Don't bother rerunning the compile if we were already using -Werror
131 case "$*" in
132 *-Werror*)
133 return 0
135 esac
136 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
137 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
138 error_exit "configure test passed without -Werror but failed with -Werror." \
139 "This is probably a bug in the configure script. The failing command" \
140 "will be at the bottom of config.log." \
141 "You can run configure with --disable-werror to bypass this check."
144 libtool_prog() {
145 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
146 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
149 # symbolically link $1 to $2. Portable version of "ln -sf".
150 symlink() {
151 rm -rf "$2"
152 mkdir -p "$(dirname "$2")"
153 ln -s "$1" "$2"
156 # check whether a command is available to this shell (may be either an
157 # executable or a builtin)
158 has() {
159 type "$1" >/dev/null 2>&1
162 # search for an executable in PATH
163 path_of() {
164 local_command="$1"
165 local_ifs="$IFS"
166 local_dir=""
168 # pathname has a dir component?
169 if [ "${local_command#*/}" != "$local_command" ]; then
170 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
171 echo "$local_command"
172 return 0
175 if [ -z "$local_command" ]; then
176 return 1
179 IFS=:
180 for local_dir in $PATH; do
181 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
182 echo "$local_dir/$local_command"
183 IFS="${local_ifs:-$(printf ' \t\n')}"
184 return 0
186 done
187 # not found
188 IFS="${local_ifs:-$(printf ' \t\n')}"
189 return 1
192 have_backend () {
193 echo "$trace_backends" | grep "$1" >/dev/null
196 # default parameters
197 source_path=`dirname "$0"`
198 cpu=""
199 iasl="iasl"
200 interp_prefix="/usr/gnemul/qemu-%M"
201 static="no"
202 cross_prefix=""
203 audio_drv_list=""
204 block_drv_rw_whitelist=""
205 block_drv_ro_whitelist=""
206 host_cc="cc"
207 libs_softmmu=""
208 libs_tools=""
209 audio_pt_int=""
210 audio_win_int=""
211 cc_i386=i386-pc-linux-gnu-gcc
212 libs_qga=""
213 debug_info="yes"
214 stack_protector=""
216 # Don't accept a target_list environment variable.
217 unset target_list
219 # Default value for a variable defining feature "foo".
220 # * foo="no" feature will only be used if --enable-foo arg is given
221 # * foo="" feature will be searched for, and if found, will be used
222 # unless --disable-foo is given
223 # * foo="yes" this value will only be set by --enable-foo flag.
224 # feature will searched for,
225 # if not found, configure exits with error
227 # Always add --enable-foo and --disable-foo command line args.
228 # Distributions want to ensure that several features are compiled in, and it
229 # is impossible without a --enable-foo that exits if a feature is not found.
231 bluez=""
232 brlapi=""
233 curl=""
234 curses=""
235 docs=""
236 fdt=""
237 netmap="no"
238 pixman=""
239 sdl=""
240 sdlabi="1.2"
241 virtfs=""
242 vnc="yes"
243 sparse="no"
244 uuid=""
245 vde=""
246 vnc_tls=""
247 vnc_sasl=""
248 vnc_jpeg=""
249 vnc_png=""
250 xen=""
251 xen_ctrl_version=""
252 xen_pci_passthrough=""
253 linux_aio=""
254 cap_ng=""
255 attr=""
256 libattr=""
257 xfs=""
259 vhost_net="no"
260 vhost_scsi="no"
261 kvm="no"
262 rdma=""
263 gprof="no"
264 debug_tcg="no"
265 debug="no"
266 strip_opt="yes"
267 tcg_interpreter="no"
268 bigendian="no"
269 mingw32="no"
270 gcov="no"
271 gcov_tool="gcov"
272 EXESUF=""
273 DSOSUF=".so"
274 LDFLAGS_SHARED="-shared"
275 modules="no"
276 prefix="/usr/local"
277 mandir="\${prefix}/share/man"
278 datadir="\${prefix}/share"
279 qemu_docdir="\${prefix}/share/doc/qemu"
280 bindir="\${prefix}/bin"
281 libdir="\${prefix}/lib"
282 libexecdir="\${prefix}/libexec"
283 includedir="\${prefix}/include"
284 sysconfdir="\${prefix}/etc"
285 local_statedir="\${prefix}/var"
286 confsuffix="/qemu"
287 slirp="yes"
288 oss_lib=""
289 bsd="no"
290 haiku="no"
291 linux="no"
292 solaris="no"
293 profiler="no"
294 cocoa="no"
295 softmmu="yes"
296 linux_user="no"
297 bsd_user="no"
298 aix="no"
299 blobs="yes"
300 pkgversion=""
301 pie=""
302 zero_malloc=""
303 qom_cast_debug="yes"
304 trace_backends="nop"
305 trace_file="trace"
306 spice=""
307 rbd=""
308 smartcard_nss=""
309 libusb=""
310 usb_redir=""
311 opengl=""
312 zlib="yes"
313 lzo=""
314 snappy=""
315 bzip2=""
316 guest_agent=""
317 guest_agent_with_vss="no"
318 guest_agent_ntddscsi="no"
319 guest_agent_msi=""
320 vss_win32_sdk=""
321 win_sdk="no"
322 want_tools="yes"
323 libiscsi=""
324 libnfs=""
325 coroutine=""
326 coroutine_pool=""
327 seccomp=""
328 glusterfs=""
329 glusterfs_discard="no"
330 glusterfs_zerofill="no"
331 archipelago="no"
332 gtk=""
333 gtkabi=""
334 gnutls=""
335 gnutls_hash=""
336 vte=""
337 tpm="yes"
338 libssh2=""
339 vhdx=""
340 numa=""
341 tcmalloc="no"
343 # parse CC options first
344 for opt do
345 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
346 case "$opt" in
347 --cross-prefix=*) cross_prefix="$optarg"
349 --cc=*) CC="$optarg"
351 --cxx=*) CXX="$optarg"
353 --source-path=*) source_path="$optarg"
355 --cpu=*) cpu="$optarg"
357 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
358 EXTRA_CFLAGS="$optarg"
360 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
361 EXTRA_LDFLAGS="$optarg"
363 --enable-debug-info) debug_info="yes"
365 --disable-debug-info) debug_info="no"
367 esac
368 done
369 # OS specific
370 # Using uname is really, really broken. Once we have the right set of checks
371 # we can eliminate its usage altogether.
373 # Preferred compiler:
374 # ${CC} (if set)
375 # ${cross_prefix}gcc (if cross-prefix specified)
376 # system compiler
377 if test -z "${CC}${cross_prefix}"; then
378 cc="$host_cc"
379 else
380 cc="${CC-${cross_prefix}gcc}"
383 if test -z "${CXX}${cross_prefix}"; then
384 cxx="c++"
385 else
386 cxx="${CXX-${cross_prefix}g++}"
389 ar="${AR-${cross_prefix}ar}"
390 as="${AS-${cross_prefix}as}"
391 cpp="${CPP-$cc -E}"
392 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
393 ld="${LD-${cross_prefix}ld}"
394 libtool="${LIBTOOL-${cross_prefix}libtool}"
395 nm="${NM-${cross_prefix}nm}"
396 strip="${STRIP-${cross_prefix}strip}"
397 windres="${WINDRES-${cross_prefix}windres}"
398 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
399 query_pkg_config() {
400 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
402 pkg_config=query_pkg_config
403 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
404 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
406 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
407 ARFLAGS="${ARFLAGS-rv}"
409 # default flags for all hosts
410 QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
411 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
412 QEMU_CFLAGS="-Wmissing-format-attribute $QEMU_CFLAGS"
413 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
414 QEMU_CFLAGS="-Wno-unused-parameter $QEMU_CFLAGS"
415 QEMU_CFLAGS="-Wno-missing-field-initializers $QEMU_CFLAGS"
416 QEMU_CFLAGS="-Wno-sign-compare $QEMU_CFLAGS"
417 QEMU_CFLAGS="-Wno-override-init $QEMU_CFLAGS"
418 QEMU_CFLAGS="-Wno-error=format $QEMU_CFLAGS"
419 QEMU_CFLAGS="-Wno-error=format-extra-args $QEMU_CFLAGS"
420 QEMU_CFLAGS="-Wno-error=parentheses $QEMU_CFLAGS"
421 QEMU_CFLAGS="-Wextra $QEMU_CFLAGS"
422 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
423 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
424 if test "$debug_info" = "yes"; then
425 CFLAGS="-g $CFLAGS"
426 LDFLAGS="-g $LDFLAGS"
429 # make source path absolute
430 source_path=`cd "$source_path"; pwd`
432 cc_macros=`$cc $QEMU_CFLAGS -E -dD - </dev/null`
434 # running configure in the source tree?
435 # we know that's the case if configure is there.
436 if test -f "./configure"; then
437 pwd_is_source_path="y"
438 else
439 pwd_is_source_path="n"
442 check_define() {
443 cat > $TMPC <<EOF
444 #if !defined($1)
445 #error $1 not defined
446 #endif
447 int main(void) { return 0; }
449 compile_object
452 check_include() {
453 cat > $TMPC <<EOF
454 #include <$1>
455 int main(void) { return 0; }
457 compile_object
460 write_c_skeleton() {
461 cat > $TMPC <<EOF
462 int main(void) { return 0; }
466 if check_define __linux__ ; then
467 targetos="Linux"
468 elif check_define _WIN32 ; then
469 targetos='MINGW32'
470 elif check_define __OpenBSD__ ; then
471 targetos='OpenBSD'
472 elif check_define __sun__ ; then
473 targetos='SunOS'
474 elif check_define __HAIKU__ ; then
475 targetos='Haiku'
476 else
477 targetos=`uname -s`
480 # Some host OSes need non-standard checks for which CPU to use.
481 # Note that these checks are broken for cross-compilation: if you're
482 # cross-compiling to one of these OSes then you'll need to specify
483 # the correct CPU with the --cpu option.
484 case $targetos in
485 Darwin)
486 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
487 # run 64-bit userspace code.
488 # If the user didn't specify a CPU explicitly and the kernel says this is
489 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
490 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
491 cpu="x86_64"
494 SunOS)
495 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
496 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
497 cpu="x86_64"
499 esac
501 if test ! -z "$cpu" ; then
502 # command line argument
504 elif check_define __i386__ ; then
505 cpu="i386"
506 elif check_define __x86_64__ ; then
507 if check_define __ILP32__ ; then
508 cpu="x32"
509 else
510 cpu="x86_64"
512 elif check_define __sparc__ ; then
513 if check_define __arch64__ ; then
514 cpu="sparc64"
515 else
516 cpu="sparc"
518 elif check_define _ARCH_PPC ; then
519 if check_define _ARCH_PPC64 ; then
520 cpu="ppc64"
521 else
522 cpu="ppc"
524 elif check_define __mips__ ; then
525 if check_define __mips64 ; then
526 cpu="mips64"
527 else
528 cpu="mips"
530 elif check_define __ia64__ ; then
531 cpu="ia64"
532 elif check_define __s390__ ; then
533 if check_define __s390x__ ; then
534 cpu="s390x"
535 else
536 cpu="s390"
538 elif check_define __arm__ ; then
539 cpu="arm"
540 elif check_define __aarch64__ ; then
541 cpu="aarch64"
542 elif check_define __hppa__ ; then
543 cpu="hppa"
544 else
545 cpu=`uname -m`
548 ARCH=
549 # Normalise host CPU name and set ARCH.
550 # Note that this case should only have supported host CPUs, not guests.
551 case "$cpu" in
552 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
553 cpu="$cpu"
555 i386|i486|i586|i686|i86pc|BePC)
556 cpu="i386"
558 x86_64|amd64)
559 cpu="x86_64"
561 armv*b|armv*l|arm)
562 cpu="arm"
564 aarch64)
565 cpu="aarch64"
567 mips*)
568 cpu="mips"
569 if check_define __MIPSEL__ ; then
570 cpu="${cpu}el"
573 sparc|sun4[cdmuv])
574 cpu="sparc"
576 sh4)
577 cpu="sh4"
580 # This will result in either an error or falling back to TCI later
581 ARCH=unknown
583 esac
584 if test -z "$ARCH"; then
585 ARCH="$cpu"
588 # OS specific
590 # host *BSD for user mode
591 HOST_VARIANT_DIR=""
593 case $targetos in
594 CYGWIN*)
595 mingw32="yes"
596 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
597 audio_possible_drivers="sdl"
598 audio_drv_list="sdl"
600 MINGW32*)
601 mingw32="yes"
602 audio_possible_drivers="dsound sdl"
603 if check_include dsound.h; then
604 audio_drv_list="dsound"
605 else
606 audio_drv_list=""
609 GNU/kFreeBSD)
610 bsd="yes"
611 audio_drv_list="oss"
612 audio_possible_drivers="oss sdl pa"
614 FreeBSD)
615 bsd="yes"
616 make="${MAKE-gmake}"
617 audio_drv_list="oss"
618 audio_possible_drivers="oss sdl pa"
619 # needed for kinfo_getvmmap(3) in libutil.h
620 LIBS="-lutil $LIBS"
621 netmap="" # enable netmap autodetect
622 HOST_VARIANT_DIR="freebsd"
624 DragonFly)
625 bsd="yes"
626 make="${MAKE-gmake}"
627 audio_drv_list="oss"
628 audio_possible_drivers="oss sdl pa"
629 HOST_VARIANT_DIR="dragonfly"
631 NetBSD)
632 bsd="yes"
633 make="${MAKE-gmake}"
634 audio_drv_list="oss"
635 audio_possible_drivers="oss sdl"
636 oss_lib="-lossaudio"
637 HOST_VARIANT_DIR="netbsd"
639 OpenBSD)
640 bsd="yes"
641 make="${MAKE-gmake}"
642 audio_drv_list="sdl"
643 audio_possible_drivers="sdl"
644 HOST_VARIANT_DIR="openbsd"
646 Darwin)
647 bsd="yes"
648 darwin="yes"
649 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
650 if [ "$cpu" = "x86_64" ] ; then
651 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
652 LDFLAGS="-arch x86_64 $LDFLAGS"
654 cocoa="yes"
655 audio_drv_list="coreaudio"
656 audio_possible_drivers="coreaudio sdl"
657 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
658 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
659 # Disable attempts to use ObjectiveC features in os/object.h since they
660 # won't work when we're compiling with gcc as a C compiler.
661 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
662 HOST_VARIANT_DIR="darwin"
664 SunOS)
665 solaris="yes"
666 make="${MAKE-gmake}"
667 install="${INSTALL-ginstall}"
668 ld="gld"
669 smbd="${SMBD-/usr/sfw/sbin/smbd}"
670 needs_libsunmath="no"
671 solarisrev=`uname -r | cut -f2 -d.`
672 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
673 if test "$solarisrev" -le 9 ; then
674 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
675 needs_libsunmath="yes"
676 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
677 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
678 LIBS="-lsunmath $LIBS"
679 else
680 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
681 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
682 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
683 "Studio 11 can be downloaded from www.sun.com."
687 if test -f /usr/include/sys/soundcard.h ; then
688 audio_drv_list="oss"
690 audio_possible_drivers="oss sdl"
691 # needed for CMSG_ macros in sys/socket.h
692 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
693 # needed for TIOCWIN* defines in termios.h
694 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
695 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
696 solarisnetlibs="-lsocket -lnsl -lresolv"
697 LIBS="$solarisnetlibs $LIBS"
698 libs_qga="$solarisnetlibs $libs_qga"
700 AIX)
701 aix="yes"
702 make="${MAKE-gmake}"
704 Haiku)
705 haiku="yes"
706 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
707 LIBS="-lposix_error_mapper -lnetwork $LIBS"
710 audio_drv_list="oss"
711 audio_possible_drivers="oss alsa sdl pa"
712 linux="yes"
713 linux_user="yes"
714 kvm="yes"
715 vhost_net="yes"
716 vhost_scsi="yes"
717 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
719 esac
721 if [ "$bsd" = "yes" ] ; then
722 if [ "$darwin" != "yes" ] ; then
723 bsd_user="yes"
727 : ${make=${MAKE-make}}
728 : ${install=${INSTALL-install}}
729 : ${python=${PYTHON-python}}
730 : ${smbd=${SMBD-/usr/sbin/smbd}}
732 # Default objcc to clang if available, otherwise use CC
733 if has clang; then
734 objcc=clang
735 else
736 objcc="$cc"
739 if test "$mingw32" = "yes" ; then
740 EXESUF=".exe"
741 DSOSUF=".dll"
742 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
743 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
744 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
745 # MinGW-w64 needs _POSIX defined.
746 QEMU_CFLAGS="-D_POSIX=1 $QEMU_CFLAGS"
747 # MinGW needs -mthreads for TLS and macro _MT.
748 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
749 QEMU_CFLAGS="-I\$(SRC_PATH)/hosts/w32/include $QEMU_CFLAGS"
750 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
751 write_c_skeleton;
752 if compile_prog "" "-liberty" ; then
753 LIBS="-liberty $LIBS"
755 prefix="c:/Program Files/QEMU"
756 mandir="\${prefix}"
757 datadir="\${prefix}"
758 qemu_docdir="\${prefix}"
759 bindir="\${prefix}"
760 sysconfdir="\${prefix}"
761 local_statedir=
762 confsuffix=""
763 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi $libs_qga"
766 werror=""
768 for opt do
769 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
770 case "$opt" in
771 --help|-h) show_help=yes
773 --version|-V) exec cat $source_path/VERSION
775 --prefix=*) prefix="$optarg"
777 --interp-prefix=*) interp_prefix="$optarg"
779 --source-path=*)
781 --cross-prefix=*)
783 --cc=*)
785 --host-cc=*) host_cc="$optarg"
787 --cxx=*)
789 --iasl=*) iasl="$optarg"
791 --objcc=*) objcc="$optarg"
793 --make=*) make="$optarg"
795 --install=*) install="$optarg"
797 --python=*) python="$optarg"
799 --gcov=*) gcov_tool="$optarg"
801 --smbd=*) smbd="$optarg"
803 --extra-cflags=*)
805 --extra-ldflags=*)
807 --enable-debug-info)
809 --disable-debug-info)
811 --enable-modules)
812 modules="yes"
814 --cpu=*)
816 --target-list=*) target_list="$optarg"
818 --enable-trace-backends=*) trace_backends="$optarg"
820 # XXX: backwards compatibility
821 --enable-trace-backend=*) trace_backends="$optarg"
823 --with-trace-file=*) trace_file="$optarg"
825 --enable-gprof) gprof="yes"
827 --enable-gcov) gcov="yes"
829 --static)
830 static="yes"
831 LDFLAGS="-static $LDFLAGS"
832 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
834 --mandir=*) mandir="$optarg"
836 --bindir=*) bindir="$optarg"
838 --libdir=*) libdir="$optarg"
840 --libexecdir=*) libexecdir="$optarg"
842 --includedir=*) includedir="$optarg"
844 --datadir=*) datadir="$optarg"
846 --with-confsuffix=*) confsuffix="$optarg"
848 --docdir=*) qemu_docdir="$optarg"
850 --sysconfdir=*) sysconfdir="$optarg"
852 --localstatedir=*) local_statedir="$optarg"
854 --sbindir=*|--sharedstatedir=*|\
855 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
856 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
857 # These switches are silently ignored, for compatibility with
858 # autoconf-generated configure scripts. This allows QEMU's
859 # configure to be used by RPM and similar macros that set
860 # lots of directory switches by default.
862 --with-system-pixman) pixman="system"
864 --without-system-pixman) pixman="internal"
866 --without-pixman) pixman="none"
868 --disable-sdl) sdl="no"
870 --enable-sdl) sdl="yes"
872 --with-sdlabi=*) sdlabi="$optarg"
874 --disable-qom-cast-debug) qom_cast_debug="no"
876 --enable-qom-cast-debug) qom_cast_debug="yes"
878 --disable-virtfs) virtfs="no"
880 --enable-virtfs) virtfs="yes"
882 --disable-vnc) vnc="no"
884 --enable-vnc) vnc="yes"
886 --oss-lib=*) oss_lib="$optarg"
888 --audio-drv-list=*) audio_drv_list="$optarg"
890 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
892 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
894 --enable-debug-tcg) debug_tcg="yes"
896 --disable-debug-tcg) debug_tcg="no"
898 --enable-debug)
899 # Enable debugging options that aren't excessively noisy
900 debug_tcg="yes"
901 debug="yes"
902 strip_opt="no"
904 --enable-sparse) sparse="yes"
906 --disable-sparse) sparse="no"
908 --disable-strip) strip_opt="no"
910 --disable-vnc-tls) vnc_tls="no"
912 --enable-vnc-tls) vnc_tls="yes"
914 --disable-vnc-sasl) vnc_sasl="no"
916 --enable-vnc-sasl) vnc_sasl="yes"
918 --disable-vnc-jpeg) vnc_jpeg="no"
920 --enable-vnc-jpeg) vnc_jpeg="yes"
922 --disable-vnc-png) vnc_png="no"
924 --enable-vnc-png) vnc_png="yes"
926 --disable-slirp) slirp="no"
928 --disable-uuid) uuid="no"
930 --enable-uuid) uuid="yes"
932 --disable-vde) vde="no"
934 --enable-vde) vde="yes"
936 --disable-netmap) netmap="no"
938 --enable-netmap) netmap="yes"
940 --disable-xen) xen="no"
942 --enable-xen) xen="yes"
944 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
946 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
948 --disable-brlapi) brlapi="no"
950 --enable-brlapi) brlapi="yes"
952 --disable-bluez) bluez="no"
954 --enable-bluez) bluez="yes"
956 --disable-kvm) kvm="no"
958 --enable-kvm) kvm="yes"
960 --disable-tcg-interpreter) tcg_interpreter="no"
962 --enable-tcg-interpreter) tcg_interpreter="yes"
964 --disable-cap-ng) cap_ng="no"
966 --enable-cap-ng) cap_ng="yes"
968 --disable-spice) spice="no"
970 --enable-spice) spice="yes"
972 --disable-libiscsi) libiscsi="no"
974 --enable-libiscsi) libiscsi="yes"
976 --disable-libnfs) libnfs="no"
978 --enable-libnfs) libnfs="yes"
980 --enable-profiler) profiler="yes"
982 --disable-cocoa) cocoa="no"
984 --enable-cocoa)
985 cocoa="yes" ;
986 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
988 --disable-system) softmmu="no"
990 --enable-system) softmmu="yes"
992 --disable-user)
993 linux_user="no" ;
994 bsd_user="no" ;
996 --enable-user) ;;
997 --disable-linux-user) linux_user="no"
999 --enable-linux-user) linux_user="yes"
1001 --disable-bsd-user) bsd_user="no"
1003 --enable-bsd-user) bsd_user="yes"
1005 --enable-pie) pie="yes"
1007 --disable-pie) pie="no"
1009 --enable-werror) werror="yes"
1011 --disable-werror) werror="no"
1013 --enable-stack-protector) stack_protector="yes"
1015 --disable-stack-protector) stack_protector="no"
1017 --disable-curses) curses="no"
1019 --enable-curses) curses="yes"
1021 --disable-curl) curl="no"
1023 --enable-curl) curl="yes"
1025 --disable-fdt) fdt="no"
1027 --enable-fdt) fdt="yes"
1029 --disable-linux-aio) linux_aio="no"
1031 --enable-linux-aio) linux_aio="yes"
1033 --disable-attr) attr="no"
1035 --enable-attr) attr="yes"
1037 --disable-blobs) blobs="no"
1039 --with-pkgversion=*) pkgversion=" ($optarg)"
1041 --with-coroutine=*) coroutine="$optarg"
1043 --disable-coroutine-pool) coroutine_pool="no"
1045 --enable-coroutine-pool) coroutine_pool="yes"
1047 --disable-docs) docs="no"
1049 --enable-docs) docs="yes"
1051 --disable-vhost-net) vhost_net="no"
1053 --enable-vhost-net) vhost_net="yes"
1055 --disable-vhost-scsi) vhost_scsi="no"
1057 --enable-vhost-scsi) vhost_scsi="yes"
1059 --disable-opengl) opengl="no"
1061 --enable-opengl) opengl="yes"
1063 --disable-rbd) rbd="no"
1065 --enable-rbd) rbd="yes"
1067 --disable-xfsctl) xfs="no"
1069 --enable-xfsctl) xfs="yes"
1071 --disable-smartcard-nss) smartcard_nss="no"
1073 --enable-smartcard-nss) smartcard_nss="yes"
1075 --disable-libusb) libusb="no"
1077 --enable-libusb) libusb="yes"
1079 --disable-usb-redir) usb_redir="no"
1081 --enable-usb-redir) usb_redir="yes"
1083 --disable-zlib-test) zlib="no"
1085 --disable-lzo) lzo="no"
1087 --enable-lzo) lzo="yes"
1089 --disable-snappy) snappy="no"
1091 --enable-snappy) snappy="yes"
1093 --disable-bzip2) bzip2="no"
1095 --enable-bzip2) bzip2="yes"
1097 --enable-guest-agent) guest_agent="yes"
1099 --disable-guest-agent) guest_agent="no"
1101 --enable-guest-agent-msi) guest_agent_msi="yes"
1103 --disable-guest-agent-msi) guest_agent_msi="no"
1105 --with-vss-sdk) vss_win32_sdk=""
1107 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1109 --without-vss-sdk) vss_win32_sdk="no"
1111 --with-win-sdk) win_sdk=""
1113 --with-win-sdk=*) win_sdk="$optarg"
1115 --without-win-sdk) win_sdk="no"
1117 --enable-tools) want_tools="yes"
1119 --disable-tools) want_tools="no"
1121 --enable-seccomp) seccomp="yes"
1123 --disable-seccomp) seccomp="no"
1125 --disable-glusterfs) glusterfs="no"
1127 --enable-glusterfs) glusterfs="yes"
1129 --disable-archipelago) archipelago="no"
1131 --enable-archipelago) archipelago="yes"
1133 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1134 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1136 --disable-gtk) gtk="no"
1138 --enable-gtk) gtk="yes"
1140 --disable-gnutls) gnutls="no"
1142 --enable-gnutls) gnutls="yes"
1144 --enable-rdma) rdma="yes"
1146 --disable-rdma) rdma="no"
1148 --with-gtkabi=*) gtkabi="$optarg"
1150 --disable-vte) vte="no"
1152 --enable-vte) vte="yes"
1154 --disable-tpm) tpm="no"
1156 --enable-tpm) tpm="yes"
1158 --disable-libssh2) libssh2="no"
1160 --enable-libssh2) libssh2="yes"
1162 --enable-vhdx) vhdx="yes"
1164 --disable-vhdx) vhdx="no"
1166 --disable-numa) numa="no"
1168 --enable-numa) numa="yes"
1170 --disable-tcmalloc) tcmalloc="no"
1172 --enable-tcmalloc) tcmalloc="yes"
1175 echo "ERROR: unknown option $opt"
1176 echo "Try '$0 --help' for more information"
1177 exit 1
1179 esac
1180 done
1182 if ! has $python; then
1183 error_exit "Python not found. Use --python=/path/to/python"
1186 # Note that if the Python conditional here evaluates True we will exit
1187 # with status 1 which is a shell 'false' value.
1188 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1189 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1190 "Note that Python 3 or later is not yet supported." \
1191 "Use --python=/path/to/python to specify a supported Python."
1194 # The -B switch was added in Python 2.6.
1195 # If it is supplied, compiled files are not written.
1196 # Use it for Python versions which support it.
1197 if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1198 python="$python -B"
1201 case "$cpu" in
1202 ppc)
1203 CPU_CFLAGS="-m32"
1204 LDFLAGS="-m32 $LDFLAGS"
1206 ppc64)
1207 CPU_CFLAGS="-m64"
1208 LDFLAGS="-m64 $LDFLAGS"
1210 sparc)
1211 LDFLAGS="-m32 $LDFLAGS"
1212 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1214 sparc64)
1215 LDFLAGS="-m64 $LDFLAGS"
1216 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1218 s390)
1219 CPU_CFLAGS="-m31"
1220 LDFLAGS="-m31 $LDFLAGS"
1222 s390x)
1223 CPU_CFLAGS="-m64"
1224 LDFLAGS="-m64 $LDFLAGS"
1226 i386)
1227 CPU_CFLAGS="-m32"
1228 LDFLAGS="-m32 $LDFLAGS"
1229 cc_i386='$(CC) -m32'
1231 x86_64)
1232 CPU_CFLAGS="-m64"
1233 LDFLAGS="-m64 $LDFLAGS"
1234 cc_i386='$(CC) -m32'
1236 x32)
1237 CPU_CFLAGS="-mx32"
1238 LDFLAGS="-mx32 $LDFLAGS"
1239 cc_i386='$(CC) -m32'
1241 # No special flags required for other host CPUs
1242 esac
1244 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1245 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1247 default_target_list=""
1249 mak_wilds=""
1251 if [ "$softmmu" = "yes" ]; then
1252 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1254 if [ "$linux_user" = "yes" ]; then
1255 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1257 if [ "$bsd_user" = "yes" ]; then
1258 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1261 for config in $mak_wilds; do
1262 default_target_list="${default_target_list} $(basename "$config" .mak)"
1263 done
1265 if test x"$show_help" = x"yes" ; then
1266 cat << EOF
1268 Usage: configure [options]
1269 Options: [defaults in brackets after descriptions]
1271 Standard options:
1272 --help print this message
1273 --prefix=PREFIX install in PREFIX [$prefix]
1274 --interp-prefix=PREFIX where to find shared libraries, etc.
1275 use %M for cpu name [$interp_prefix]
1276 --target-list=LIST set target list (default: build everything)
1277 $(echo Available targets: $default_target_list | \
1278 fold -s -w 53 | sed -e 's/^/ /')
1280 Advanced options (experts only):
1281 --source-path=PATH path of source code [$source_path]
1282 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1283 --cc=CC use C compiler CC [$cc]
1284 --iasl=IASL use ACPI compiler IASL [$iasl]
1285 --host-cc=CC use C compiler CC [$host_cc] for code run at
1286 build time
1287 --cxx=CXX use C++ compiler CXX [$cxx]
1288 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1289 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1290 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1291 --make=MAKE use specified make [$make]
1292 --install=INSTALL use specified install [$install]
1293 --python=PYTHON use specified python [$python]
1294 --smbd=SMBD use specified smbd [$smbd]
1295 --static enable static build [$static]
1296 --mandir=PATH install man pages in PATH
1297 --datadir=PATH install firmware in PATH$confsuffix
1298 --docdir=PATH install documentation in PATH$confsuffix
1299 --bindir=PATH install binaries in PATH
1300 --libdir=PATH install libraries in PATH
1301 --sysconfdir=PATH install config in PATH$confsuffix
1302 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1303 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1304 --enable-debug enable common debug build options
1305 --disable-strip disable stripping binaries
1306 --disable-werror disable compilation abort on warning
1307 --disable-stack-protector disable compiler-provided stack protection
1308 --audio-drv-list=LIST set audio drivers list:
1309 Available drivers: $audio_possible_drivers
1310 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1311 --block-drv-rw-whitelist=L
1312 set block driver read-write whitelist
1313 (affects only QEMU, not qemu-img)
1314 --block-drv-ro-whitelist=L
1315 set block driver read-only whitelist
1316 (affects only QEMU, not qemu-img)
1317 --enable-trace-backends=B Set trace backend
1318 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1319 --with-trace-file=NAME Full PATH,NAME of file to store traces
1320 Default:trace-<pid>
1321 --disable-slirp disable SLIRP userspace network connectivity
1322 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1323 --oss-lib path to OSS library
1324 --cpu=CPU Build for host CPU [$cpu]
1325 --with-coroutine=BACKEND coroutine backend. Supported options:
1326 gthread, ucontext, sigaltstack, windows
1327 --enable-gcov enable test coverage analysis with gcov
1328 --gcov=GCOV use specified gcov [$gcov_tool]
1329 --disable-blobs disable installing provided firmware blobs
1330 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1331 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1333 Optional features, enabled with --enable-FEATURE and
1334 disabled with --disable-FEATURE, default is enabled if available:
1336 system all system emulation targets
1337 user supported user emulation targets
1338 linux-user all linux usermode emulation targets
1339 bsd-user all BSD usermode emulation targets
1340 docs build documentation
1341 guest-agent build the QEMU Guest Agent
1342 guest-agent-msi build guest agent Windows MSI installation package
1343 pie Position Independent Executables
1344 modules modules support
1345 debug-tcg TCG debugging (default is disabled)
1346 debug-info debugging information
1347 sparse sparse checker
1349 gnutls GNUTLS cryptography support
1350 sdl SDL UI
1351 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1352 gtk gtk UI
1353 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1354 vte vte support for the gtk UI
1355 curses curses UI
1356 vnc VNC UI support
1357 vnc-tls TLS encryption for VNC server
1358 vnc-sasl SASL encryption for VNC server
1359 vnc-jpeg JPEG lossy compression for VNC server
1360 vnc-png PNG compression for VNC server
1361 cocoa Cocoa UI (Mac OS X only)
1362 virtfs VirtFS
1363 xen xen backend driver support
1364 xen-pci-passthrough
1365 brlapi BrlAPI (Braile)
1366 curl curl connectivity
1367 fdt fdt device tree
1368 bluez bluez stack connectivity
1369 kvm KVM acceleration support
1370 rdma RDMA-based migration support
1371 uuid uuid support
1372 vde support for vde network
1373 netmap support for netmap network
1374 linux-aio Linux AIO support
1375 cap-ng libcap-ng support
1376 attr attr and xattr support
1377 vhost-net vhost-net acceleration support
1378 spice spice
1379 rbd rados block device (rbd)
1380 libiscsi iscsi support
1381 libnfs nfs support
1382 smartcard-nss smartcard nss support
1383 libusb libusb (for usb passthrough)
1384 usb-redir usb network redirection support
1385 lzo support of lzo compression library
1386 snappy support of snappy compression library
1387 bzip2 support of bzip2 compression library
1388 (for reading bzip2-compressed dmg images)
1389 seccomp seccomp support
1390 coroutine-pool coroutine freelist (better performance)
1391 glusterfs GlusterFS backend
1392 archipelago Archipelago backend
1393 tpm TPM support
1394 libssh2 ssh block device support
1395 vhdx support for the Microsoft VHDX image format
1396 numa libnuma support
1397 tcmalloc tcmalloc support
1399 NOTE: The object files are built at the place where configure is launched
1401 exit 0
1404 # Now we have handled --enable-tcg-interpreter and know we're not just
1405 # printing the help message, bail out if the host CPU isn't supported.
1406 if test "$ARCH" = "unknown"; then
1407 if test "$tcg_interpreter" = "yes" ; then
1408 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1409 ARCH=tci
1410 else
1411 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1415 # Consult white-list to determine whether to enable werror
1416 # by default. Only enable by default for git builds
1417 z_version=`cut -f3 -d. $source_path/VERSION`
1419 if test -z "$werror" ; then
1420 if test -d "$source_path/.git" -a \
1421 "$linux" = "yes" ; then
1422 werror="yes"
1423 else
1424 werror="no"
1428 # check that the C compiler works.
1429 write_c_skeleton;
1430 if compile_object ; then
1431 : C compiler works ok
1432 else
1433 error_exit "\"$cc\" either does not exist or does not work"
1436 # Check that the C++ compiler exists and works with the C compiler
1437 if has $cxx; then
1438 cat > $TMPC <<EOF
1439 int c_function(void);
1440 int main(void) { return c_function(); }
1443 compile_object
1445 cat > $TMPCXX <<EOF
1446 extern "C" {
1447 int c_function(void);
1449 int c_function(void) { return 42; }
1452 update_cxxflags
1454 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1455 # C++ compiler $cxx works ok with C compiler $cc
1457 else
1458 echo "C++ compiler $cxx does not work with C compiler $cc"
1459 echo "Disabling C++ specific optional code"
1460 cxx=
1462 else
1463 echo "No C++ compiler available; disabling C++ specific optional code"
1464 cxx=
1467 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1468 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1469 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1470 gcc_flags="-Wunused-but-set-variable $gcc_flags"
1471 gcc_flags="-Wendif-labels $gcc_flags"
1472 gcc_flags="-Wno-initializer-overrides $gcc_flags"
1473 gcc_flags="-Wno-string-plus-int $gcc_flags"
1474 # Note that we do not add -Werror to gcc_flags here, because that would
1475 # enable it for all configure tests. If a configure test failed due
1476 # to -Werror this would just silently disable some features,
1477 # so it's too error prone.
1479 cc_has_warning_flag() {
1480 write_c_skeleton;
1482 # Use the positive sense of the flag when testing for -Wno-wombat
1483 # support (gcc will happily accept the -Wno- form of unknown
1484 # warning options).
1485 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1486 compile_prog "-Werror $optflag" ""
1489 for flag in $gcc_flags; do
1490 if cc_has_warning_flag $flag ; then
1491 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1493 done
1495 if test "$mingw32" = "yes"; then
1496 stack_protector="no"
1498 if test "$stack_protector" != "no"; then
1499 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1500 sp_on=0
1501 for flag in $gcc_flags; do
1502 # We need to check both a compile and a link, since some compiler
1503 # setups fail only on a .c->.o compile and some only at link time
1504 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1505 compile_prog "-Werror $flag" ""; then
1506 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1507 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
1508 sp_on=1
1509 break
1511 done
1512 if test "$stack_protector" = yes; then
1513 if test $sp_on = 0; then
1514 error_exit "Stack protector not supported"
1519 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1520 # large functions that use global variables. The bug is in all releases of
1521 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1522 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1523 cat > $TMPC << EOF
1524 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1525 int main(void) { return 0; }
1526 #else
1527 #error No bug in this compiler.
1528 #endif
1530 if compile_prog "-Werror -fno-gcse" "" ; then
1531 TRANSLATE_OPT_CFLAGS=-fno-gcse
1534 if test "$static" = "yes" ; then
1535 if test "$modules" = "yes" ; then
1536 error_exit "static and modules are mutually incompatible"
1538 if test "$pie" = "yes" ; then
1539 error_exit "static and pie are mutually incompatible"
1540 else
1541 pie="no"
1545 # Unconditional check for compiler __thread support
1546 cat > $TMPC << EOF
1547 static __thread int tls_var;
1548 int main(void) { return tls_var; }
1551 if ! compile_prog "-Werror" "" ; then
1552 error_exit "Your compiler does not support the __thread specifier for " \
1553 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1556 if test "$pie" = ""; then
1557 case "$cpu-$targetos" in
1558 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1561 pie="no"
1563 esac
1566 if test "$pie" != "no" ; then
1567 cat > $TMPC << EOF
1569 #ifdef __linux__
1570 # define THREAD __thread
1571 #else
1572 # define THREAD
1573 #endif
1575 static THREAD int tls_var;
1577 int main(void) { return tls_var; }
1580 if compile_prog "-fPIE -DPIE" "-pie"; then
1581 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1582 LDFLAGS="-pie $LDFLAGS"
1583 pie="yes"
1584 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1585 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1587 else
1588 if test "$pie" = "yes"; then
1589 error_exit "PIE not available due to missing toolchain support"
1590 else
1591 echo "Disabling PIE due to missing toolchain support"
1592 pie="no"
1596 if compile_prog "-Werror -fno-pie" "-nopie"; then
1597 CFLAGS_NOPIE="-fno-pie"
1598 LDFLAGS_NOPIE="-nopie"
1602 # check for broken gcc and libtool in RHEL5
1603 if test -n "$libtool" -a "$pie" != "no" ; then
1604 cat > $TMPC <<EOF
1606 void *f(unsigned char *buf, int len);
1607 void *g(unsigned char *buf, int len);
1609 void *
1610 f(unsigned char *buf, int len)
1612 return (void*)0L;
1615 void *
1616 g(unsigned char *buf, int len)
1618 return f(buf, len);
1622 if ! libtool_prog; then
1623 echo "Disabling libtool due to broken toolchain support"
1624 libtool=
1628 ##########################################
1629 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1630 # use i686 as default anyway, but for those that don't, an explicit
1631 # specification is necessary
1633 if test "$cpu" = "i386"; then
1634 cat > $TMPC << EOF
1635 static int sfaa(int *ptr)
1637 return __sync_fetch_and_and(ptr, 0);
1640 int main(void)
1642 int val = 42;
1643 val = __sync_val_compare_and_swap(&val, 0, 1);
1644 sfaa(&val);
1645 return val;
1648 if ! compile_prog "" "" ; then
1649 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1653 #########################################
1654 # Solaris specific configure tool chain decisions
1656 if test "$solaris" = "yes" ; then
1657 if has $install; then
1659 else
1660 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1661 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1662 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1664 if test "`path_of $install`" = "/usr/sbin/install" ; then
1665 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1666 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1667 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1669 if has ar; then
1671 else
1672 if test -f /usr/ccs/bin/ar ; then
1673 error_exit "No path includes ar" \
1674 "Add /usr/ccs/bin to your path and rerun configure"
1676 error_exit "No path includes ar"
1680 if test -z "${target_list+xxx}" ; then
1681 target_list="$default_target_list"
1682 else
1683 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1686 # Check that we recognised the target name; this allows a more
1687 # friendly error message than if we let it fall through.
1688 for target in $target_list; do
1689 case " $default_target_list " in
1690 *" $target "*)
1693 error_exit "Unknown target name '$target'"
1695 esac
1696 done
1698 # see if system emulation was really requested
1699 case " $target_list " in
1700 *"-softmmu "*) softmmu=yes
1702 *) softmmu=no
1704 esac
1706 feature_not_found() {
1707 feature=$1
1708 remedy=$2
1710 error_exit "User requested feature $feature" \
1711 "configure was not able to find it." \
1712 "$remedy"
1715 # ---
1716 # big/little endian test
1717 cat > $TMPC << EOF
1718 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1719 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1720 extern int foo(short *, short *);
1721 int main(int argc, char *argv[]) {
1722 return foo(big_endian, little_endian);
1726 if compile_object ; then
1727 if grep -q BiGeNdIaN $TMPO ; then
1728 bigendian="yes"
1729 elif grep -q LiTtLeEnDiAn $TMPO ; then
1730 bigendian="no"
1731 else
1732 echo big/little test failed
1734 else
1735 echo big/little test failed
1738 ##########################################
1739 # cocoa implies not SDL or GTK
1740 # (the cocoa UI code currently assumes it is always the active UI
1741 # and doesn't interact well with other UI frontend code)
1742 if test "$cocoa" = "yes"; then
1743 if test "$sdl" = "yes"; then
1744 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1746 if test "$gtk" = "yes"; then
1747 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1749 gtk=no
1750 sdl=no
1753 ##########################################
1754 # L2TPV3 probe
1756 cat > $TMPC <<EOF
1757 #include <sys/socket.h>
1758 #include <linux/ip.h>
1759 int main(void) { return sizeof(struct mmsghdr); }
1761 if compile_prog "" "" ; then
1762 l2tpv3=yes
1763 else
1764 l2tpv3=no
1767 ##########################################
1768 # pkg-config probe
1770 if ! has "$pkg_config_exe"; then
1771 error_exit "pkg-config binary '$pkg_config_exe' not found"
1774 ##########################################
1775 # NPTL probe
1777 if test "$linux_user" = "yes"; then
1778 cat > $TMPC <<EOF
1779 #include <sched.h>
1780 #include <linux/futex.h>
1781 int main(void) {
1782 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1783 #error bork
1784 #endif
1785 return 0;
1788 if ! compile_object ; then
1789 feature_not_found "nptl" "Install glibc and linux kernel headers."
1793 ##########################################
1794 # zlib check
1796 if test "$zlib" != "no" ; then
1797 cat > $TMPC << EOF
1798 #include <zlib.h>
1799 int main(void) { zlibVersion(); return 0; }
1801 if compile_prog "" "-lz" ; then
1803 else
1804 error_exit "zlib check failed" \
1805 "Make sure to have the zlib libs and headers installed."
1808 LIBS="$LIBS -lz"
1810 ##########################################
1811 # lzo check
1813 if test "$lzo" != "no" ; then
1814 cat > $TMPC << EOF
1815 #include <lzo/lzo1x.h>
1816 int main(void) { lzo_version(); return 0; }
1818 if compile_prog "" "-llzo2" ; then
1819 libs_softmmu="$libs_softmmu -llzo2"
1820 lzo="yes"
1821 else
1822 if test "$lzo" = "yes"; then
1823 feature_not_found "liblzo2" "Install liblzo2 devel"
1825 lzo="no"
1829 ##########################################
1830 # snappy check
1832 if test "$snappy" != "no" ; then
1833 cat > $TMPC << EOF
1834 #include <snappy-c.h>
1835 int main(void) { snappy_max_compressed_length(4096); return 0; }
1837 if compile_prog "" "-lsnappy" ; then
1838 libs_softmmu="$libs_softmmu -lsnappy"
1839 snappy="yes"
1840 else
1841 if test "$snappy" = "yes"; then
1842 feature_not_found "libsnappy" "Install libsnappy devel"
1844 snappy="no"
1848 ##########################################
1849 # bzip2 check
1851 if test "$bzip2" != "no" ; then
1852 cat > $TMPC << EOF
1853 #include <bzlib.h>
1854 int main(void) { BZ2_bzlibVersion(); return 0; }
1856 if compile_prog "" "-lbz2" ; then
1857 bzip2="yes"
1858 else
1859 if test "$bzip2" = "yes"; then
1860 feature_not_found "libbzip2" "Install libbzip2 devel"
1862 bzip2="no"
1866 ##########################################
1867 # libseccomp check
1869 if test "$seccomp" != "no" ; then
1870 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1871 $pkg_config --atleast-version=2.1.1 libseccomp; then
1872 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1873 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1874 seccomp="yes"
1875 else
1876 if test "$seccomp" = "yes"; then
1877 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
1879 seccomp="no"
1882 ##########################################
1883 # xen probe
1885 if test "$xen" != "no" ; then
1886 xen_libs="-lxenstore -lxenctrl -lxenguest"
1888 # First we test whether Xen headers and libraries are available.
1889 # If no, we are done and there is no Xen support.
1890 # If yes, more tests are run to detect the Xen version.
1892 # Xen (any)
1893 cat > $TMPC <<EOF
1894 #include <xenctrl.h>
1895 int main(void) {
1896 return 0;
1899 if ! compile_prog "" "$xen_libs" ; then
1900 # Xen not found
1901 if test "$xen" = "yes" ; then
1902 feature_not_found "xen" "Install xen devel"
1904 xen=no
1906 # Xen unstable
1907 elif
1908 cat > $TMPC <<EOF &&
1909 #include <xenctrl.h>
1910 #include <xenstore.h>
1911 #include <stdint.h>
1912 #include <xen/hvm/hvm_info_table.h>
1913 #if !defined(HVM_MAX_VCPUS)
1914 # error HVM_MAX_VCPUS not defined
1915 #endif
1916 int main(void) {
1917 xc_interface *xc;
1918 xs_daemon_open();
1919 xc = xc_interface_open(0, 0, 0);
1920 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1921 xc_gnttab_open(NULL, 0);
1922 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1923 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1924 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1925 return 0;
1928 compile_prog "" "$xen_libs"
1929 then
1930 xen_ctrl_version=450
1931 xen=yes
1933 elif
1934 cat > $TMPC <<EOF &&
1935 #include <xenctrl.h>
1936 #include <xenstore.h>
1937 #include <stdint.h>
1938 #include <xen/hvm/hvm_info_table.h>
1939 #if !defined(HVM_MAX_VCPUS)
1940 # error HVM_MAX_VCPUS not defined
1941 #endif
1942 int main(void) {
1943 xc_interface *xc;
1944 xs_daemon_open();
1945 xc = xc_interface_open(0, 0, 0);
1946 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1947 xc_gnttab_open(NULL, 0);
1948 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1949 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1950 return 0;
1953 compile_prog "" "$xen_libs"
1954 then
1955 xen_ctrl_version=420
1956 xen=yes
1958 elif
1959 cat > $TMPC <<EOF &&
1960 #include <xenctrl.h>
1961 #include <xs.h>
1962 #include <stdint.h>
1963 #include <xen/hvm/hvm_info_table.h>
1964 #if !defined(HVM_MAX_VCPUS)
1965 # error HVM_MAX_VCPUS not defined
1966 #endif
1967 int main(void) {
1968 xs_daemon_open();
1969 xc_interface_open(0, 0, 0);
1970 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1971 xc_gnttab_open(NULL, 0);
1972 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1973 return 0;
1976 compile_prog "" "$xen_libs"
1977 then
1978 xen_ctrl_version=410
1979 xen=yes
1981 # Xen 4.0.0
1982 elif
1983 cat > $TMPC <<EOF &&
1984 #include <xenctrl.h>
1985 #include <xs.h>
1986 #include <stdint.h>
1987 #include <xen/hvm/hvm_info_table.h>
1988 #if !defined(HVM_MAX_VCPUS)
1989 # error HVM_MAX_VCPUS not defined
1990 #endif
1991 int main(void) {
1992 struct xen_add_to_physmap xatp = {
1993 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1995 xs_daemon_open();
1996 xc_interface_open();
1997 xc_gnttab_open();
1998 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1999 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2000 return 0;
2003 compile_prog "" "$xen_libs"
2004 then
2005 xen_ctrl_version=400
2006 xen=yes
2008 # Xen 3.4.0
2009 elif
2010 cat > $TMPC <<EOF &&
2011 #include <xenctrl.h>
2012 #include <xs.h>
2013 int main(void) {
2014 struct xen_add_to_physmap xatp = {
2015 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2017 xs_daemon_open();
2018 xc_interface_open();
2019 xc_gnttab_open();
2020 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2021 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2022 return 0;
2025 compile_prog "" "$xen_libs"
2026 then
2027 xen_ctrl_version=340
2028 xen=yes
2030 # Xen 3.3.0
2031 elif
2032 cat > $TMPC <<EOF &&
2033 #include <xenctrl.h>
2034 #include <xs.h>
2035 int main(void) {
2036 xs_daemon_open();
2037 xc_interface_open();
2038 xc_gnttab_open();
2039 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2040 return 0;
2043 compile_prog "" "$xen_libs"
2044 then
2045 xen_ctrl_version=330
2046 xen=yes
2048 # Xen version unsupported
2049 else
2050 if test "$xen" = "yes" ; then
2051 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2053 xen=no
2056 if test "$xen" = yes; then
2057 libs_softmmu="$xen_libs $libs_softmmu"
2061 if test "$xen_pci_passthrough" != "no"; then
2062 if test "$xen" = "yes" && test "$linux" = "yes" &&
2063 test "$xen_ctrl_version" -ge 340; then
2064 xen_pci_passthrough=yes
2065 else
2066 if test "$xen_pci_passthrough" = "yes"; then
2067 if test "$xen_ctrl_version" -lt 340; then
2068 error_exit "User requested feature Xen PCI Passthrough" \
2069 "This feature does not work with Xen 3.3"
2071 error_exit "User requested feature Xen PCI Passthrough" \
2072 " but this feature requires /sys from Linux"
2074 xen_pci_passthrough=no
2078 ##########################################
2079 # libtool probe
2081 if ! has $libtool; then
2082 libtool=
2085 # MacOSX ships with a libtool which isn't the GNU one; weed this
2086 # out by checking whether libtool supports the --version switch
2087 if test -n "$libtool"; then
2088 if ! "$libtool" --version >/dev/null 2>&1; then
2089 libtool=
2093 ##########################################
2094 # Sparse probe
2095 if test "$sparse" != "no" ; then
2096 if has cgcc; then
2097 sparse=yes
2098 else
2099 if test "$sparse" = "yes" ; then
2100 feature_not_found "sparse" "Install sparse binary"
2102 sparse=no
2106 ##########################################
2107 # X11 probe
2108 x11_cflags=
2109 x11_libs=-lX11
2110 if $pkg_config --exists "x11"; then
2111 x11_cflags=`$pkg_config --cflags x11`
2112 x11_libs=`$pkg_config --libs x11`
2115 ##########################################
2116 # GTK probe
2118 if test "$gtkabi" = ""; then
2119 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2120 # Use 3.0 as a fallback if that is available.
2121 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2122 gtkabi=2.0
2123 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2124 gtkabi=3.0
2125 else
2126 gtkabi=2.0
2130 if test "$gtk" != "no"; then
2131 gtkpackage="gtk+-$gtkabi"
2132 gtkx11package="gtk+-x11-$gtkabi"
2133 if test "$gtkabi" = "3.0" ; then
2134 gtkversion="3.0.0"
2135 else
2136 gtkversion="2.18.0"
2138 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2139 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2140 gtk_libs=`$pkg_config --libs $gtkpackage`
2141 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2142 gtk_cflags="$gtk_cflags $x11_cflags"
2143 gtk_libs="$gtk_libs $x11_libs"
2145 libs_softmmu="$gtk_libs $libs_softmmu"
2146 gtk="yes"
2147 elif test "$gtk" = "yes"; then
2148 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2149 else
2150 gtk="no"
2155 ##########################################
2156 # GNUTLS probe
2158 gnutls_works() {
2159 # Unfortunately some distros have bad pkg-config information for gnutls
2160 # such that it claims to exist but you get a compiler error if you try
2161 # to use the options returned by --libs. Specifically, Ubuntu for --static
2162 # builds doesn't work:
2163 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2165 # So sanity check the cflags/libs before assuming gnutls can be used.
2166 if ! $pkg_config --exists "gnutls"; then
2167 return 1
2170 write_c_skeleton
2171 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2174 gnutls_gcrypt=no
2175 gnutls_nettle=no
2176 if test "$gnutls" != "no"; then
2177 if gnutls_works; then
2178 gnutls_cflags=`$pkg_config --cflags gnutls`
2179 gnutls_libs=`$pkg_config --libs gnutls`
2180 libs_softmmu="$gnutls_libs $libs_softmmu"
2181 libs_tools="$gnutls_libs $libs_tools"
2182 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2183 gnutls="yes"
2185 # gnutls_hash_init requires >= 2.9.10
2186 if $pkg_config --exists "gnutls >= 2.9.10"; then
2187 gnutls_hash="yes"
2188 else
2189 gnutls_hash="no"
2192 if $pkg_config --exists 'gnutls >= 3.0'; then
2193 gnutls_gcrypt=no
2194 gnutls_nettle=yes
2195 elif $pkg_config --exists 'gnutls >= 2.12'; then
2196 case `$pkg_config --libs --static gnutls` in
2197 *gcrypt*)
2198 gnutls_gcrypt=yes
2199 gnutls_nettle=no
2201 *nettle*)
2202 gnutls_gcrypt=no
2203 gnutls_nettle=yes
2206 gnutls_gcrypt=yes
2207 gnutls_nettle=no
2209 esac
2210 else
2211 gnutls_gcrypt=yes
2212 gnutls_nettle=no
2214 elif test "$gnutls" = "yes"; then
2215 feature_not_found "gnutls" "Install gnutls devel"
2216 else
2217 gnutls="no"
2218 gnutls_hash="no"
2220 else
2221 gnutls_hash="no"
2224 if test "$gnutls_gcrypt" != "no"; then
2225 if has "libgcrypt-config"; then
2226 gcrypt_cflags=`libgcrypt-config --cflags`
2227 gcrypt_libs=`libgcrypt-config --libs`
2228 libs_softmmu="$gcrypt_libs $libs_softmmu"
2229 libs_tools="$gcrypt_libs $libs_tools"
2230 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2231 else
2232 feature_not_found "gcrypt" "Install gcrypt devel"
2237 if test "$gnutls_nettle" != "no"; then
2238 if $pkg_config --exists "nettle"; then
2239 nettle_cflags=`$pkg_config --cflags nettle`
2240 nettle_libs=`$pkg_config --libs nettle`
2241 nettle_version=`$pkg_config --modversion nettle`
2242 libs_softmmu="$nettle_libs $libs_softmmu"
2243 libs_tools="$nettle_libs $libs_tools"
2244 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2245 else
2246 feature_not_found "nettle" "Install nettle devel"
2251 ##########################################
2252 # VTE probe
2254 if test "$vte" != "no"; then
2255 if test "$gtkabi" = "3.0"; then
2256 vtepackage="vte-2.90"
2257 vteversion="0.32.0"
2258 else
2259 vtepackage="vte"
2260 vteversion="0.24.0"
2262 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2263 vte_cflags=`$pkg_config --cflags $vtepackage`
2264 vte_libs=`$pkg_config --libs $vtepackage`
2265 libs_softmmu="$vte_libs $libs_softmmu"
2266 vte="yes"
2267 elif test "$vte" = "yes"; then
2268 if test "$gtkabi" = "3.0"; then
2269 feature_not_found "vte" "Install libvte-2.90 devel"
2270 else
2271 feature_not_found "vte" "Install libvte devel"
2273 else
2274 vte="no"
2278 ##########################################
2279 # SDL probe
2281 # Look for sdl configuration program (pkg-config or sdl-config). Try
2282 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2284 if test $sdlabi = "2.0"; then
2285 sdl_config=$sdl2_config
2286 sdlname=sdl2
2287 sdlconfigname=sdl2_config
2288 else
2289 sdlname=sdl
2290 sdlconfigname=sdl_config
2293 if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2294 sdl_config=$sdlconfigname
2297 if $pkg_config $sdlname --exists; then
2298 sdlconfig="$pkg_config $sdlname"
2299 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2300 elif has ${sdl_config}; then
2301 sdlconfig="$sdl_config"
2302 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2303 else
2304 if test "$sdl" = "yes" ; then
2305 feature_not_found "sdl" "Install SDL devel"
2307 sdl=no
2309 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2310 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2313 sdl_too_old=no
2314 if test "$sdl" != "no" ; then
2315 cat > $TMPC << EOF
2316 #include <SDL.h>
2317 #undef main /* We don't want SDL to override our main() */
2318 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2320 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2321 if test "$static" = "yes" ; then
2322 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2323 else
2324 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2326 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2327 if test "$_sdlversion" -lt 121 ; then
2328 sdl_too_old=yes
2329 else
2330 sdl=yes
2333 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2334 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2335 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2336 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2337 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2339 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2341 else
2342 sdl=no
2344 fi # static link
2345 else # sdl not found
2346 if test "$sdl" = "yes" ; then
2347 feature_not_found "sdl" "Install SDL devel"
2349 sdl=no
2350 fi # sdl compile test
2353 if test "$sdl" = "yes" ; then
2354 cat > $TMPC <<EOF
2355 #include <SDL.h>
2356 #if defined(SDL_VIDEO_DRIVER_X11)
2357 #include <X11/XKBlib.h>
2358 #else
2359 #error No x11 support
2360 #endif
2361 int main(void) { return 0; }
2363 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2364 sdl_cflags="$sdl_cflags $x11_cflags"
2365 sdl_libs="$sdl_libs $x11_libs"
2367 libs_softmmu="$sdl_libs $libs_softmmu"
2370 ##########################################
2371 # RDMA needs OpenFabrics libraries
2372 if test "$rdma" != "no" ; then
2373 cat > $TMPC <<EOF
2374 #include <rdma/rdma_cma.h>
2375 int main(void) { return 0; }
2377 rdma_libs="-lrdmacm -libverbs"
2378 if compile_prog "" "$rdma_libs" ; then
2379 rdma="yes"
2380 libs_softmmu="$libs_softmmu $rdma_libs"
2381 else
2382 if test "$rdma" = "yes" ; then
2383 error_exit \
2384 " OpenFabrics librdmacm/libibverbs not present." \
2385 " Your options:" \
2386 " (1) Fast: Install infiniband packages from your distro." \
2387 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2388 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2390 rdma="no"
2394 ##########################################
2395 # VNC TLS/WS detection
2396 if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
2397 cat > $TMPC <<EOF
2398 #include <gnutls/gnutls.h>
2399 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2401 if $pkg_config --exists gnutls; then
2402 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2403 vnc_tls_libs=`$pkg_config --libs gnutls 2>/dev/null`
2404 else
2405 vnc_tls_cflags=
2406 vnc_tls_libs=-lgnutls
2408 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
2409 if test "$vnc_tls" != "no" ; then
2410 vnc_tls=yes
2412 libs_softmmu="$vnc_tls_libs $libs_softmmu"
2413 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
2414 else
2415 if test "$vnc_tls" = "yes" ; then
2416 feature_not_found "vnc-tls" "Install gnutls devel"
2418 vnc_tls=no
2422 ##########################################
2423 # VNC SASL detection
2424 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2425 cat > $TMPC <<EOF
2426 #include <sasl/sasl.h>
2427 #include <stdio.h>
2428 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2430 # Assuming Cyrus-SASL installed in /usr prefix
2431 vnc_sasl_cflags=""
2432 vnc_sasl_libs="-lsasl2"
2433 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2434 vnc_sasl=yes
2435 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2436 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2437 else
2438 if test "$vnc_sasl" = "yes" ; then
2439 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2441 vnc_sasl=no
2445 ##########################################
2446 # VNC JPEG detection
2447 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2448 cat > $TMPC <<EOF
2449 #include <stdio.h>
2450 #include <jpeglib.h>
2451 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2453 vnc_jpeg_cflags=""
2454 vnc_jpeg_libs="-ljpeg"
2455 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2456 vnc_jpeg=yes
2457 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2458 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2459 else
2460 if test "$vnc_jpeg" = "yes" ; then
2461 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2463 vnc_jpeg=no
2467 ##########################################
2468 # VNC PNG detection
2469 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2470 cat > $TMPC <<EOF
2471 //#include <stdio.h>
2472 #include <png.h>
2473 #include <stddef.h>
2474 int main(void) {
2475 png_structp png_ptr;
2476 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2477 return png_ptr != 0;
2480 if $pkg_config libpng --exists; then
2481 vnc_png_cflags=`$pkg_config libpng --cflags`
2482 vnc_png_libs=`$pkg_config libpng --libs`
2483 else
2484 vnc_png_cflags=""
2485 vnc_png_libs="-lpng"
2487 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2488 vnc_png=yes
2489 libs_softmmu="$vnc_png_libs $libs_softmmu"
2490 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2491 else
2492 if test "$vnc_png" = "yes" ; then
2493 feature_not_found "vnc-png" "Install libpng devel"
2495 vnc_png=no
2499 ##########################################
2500 # fnmatch() probe, used for ACL routines
2501 fnmatch="no"
2502 cat > $TMPC << EOF
2503 #include <fnmatch.h>
2504 int main(void)
2506 fnmatch("foo", "foo", 0);
2507 return 0;
2510 if compile_prog "" "" ; then
2511 fnmatch="yes"
2514 ##########################################
2515 # uuid_generate() probe, used for vdi block driver
2516 # Note that on some systems (notably MacOSX) no extra library
2517 # need be linked to get the uuid functions.
2518 if test "$uuid" != "no" ; then
2519 uuid_libs="-luuid"
2520 cat > $TMPC << EOF
2521 #include <uuid/uuid.h>
2522 int main(void)
2524 uuid_t my_uuid;
2525 uuid_generate(my_uuid);
2526 return 0;
2529 if compile_prog "" "" ; then
2530 uuid="yes"
2531 elif compile_prog "" "$uuid_libs" ; then
2532 uuid="yes"
2533 libs_softmmu="$uuid_libs $libs_softmmu"
2534 libs_tools="$uuid_libs $libs_tools"
2535 else
2536 if test "$uuid" = "yes" ; then
2537 feature_not_found "uuid" "Install libuuid devel"
2539 uuid=no
2543 if test "$vhdx" = "yes" ; then
2544 if test "$uuid" = "no" ; then
2545 error_exit "uuid required for VHDX support"
2547 elif test "$vhdx" != "no" ; then
2548 if test "$uuid" = "yes" ; then
2549 vhdx=yes
2550 else
2551 vhdx=no
2555 ##########################################
2556 # xfsctl() probe, used for raw-posix
2557 if test "$xfs" != "no" ; then
2558 cat > $TMPC << EOF
2559 #include <stddef.h> /* NULL */
2560 #include <xfs/xfs.h>
2561 int main(void)
2563 xfsctl(NULL, 0, 0, NULL);
2564 return 0;
2567 if compile_prog "" "" ; then
2568 xfs="yes"
2569 else
2570 if test "$xfs" = "yes" ; then
2571 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2573 xfs=no
2577 ##########################################
2578 # vde libraries probe
2579 if test "$vde" != "no" ; then
2580 vde_libs="-lvdeplug"
2581 cat > $TMPC << EOF
2582 #include <stddef.h>
2583 #include <libvdeplug.h>
2584 int main(void)
2586 struct vde_open_args a = {0, 0, 0};
2587 char s[] = "";
2588 vde_open(s, s, &a);
2589 return 0;
2592 if compile_prog "" "$vde_libs" ; then
2593 vde=yes
2594 libs_softmmu="$vde_libs $libs_softmmu"
2595 libs_tools="$vde_libs $libs_tools"
2596 else
2597 if test "$vde" = "yes" ; then
2598 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2600 vde=no
2604 ##########################################
2605 # netmap support probe
2606 # Apart from looking for netmap headers, we make sure that the host API version
2607 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2608 # a minor/major version number. Minor new features will be marked with values up
2609 # to 15, and if something happens that requires a change to the backend we will
2610 # move above 15, submit the backend fixes and modify this two bounds.
2611 if test "$netmap" != "no" ; then
2612 cat > $TMPC << EOF
2613 #include <inttypes.h>
2614 #include <net/if.h>
2615 #include <net/netmap.h>
2616 #include <net/netmap_user.h>
2617 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2618 #error
2619 #endif
2620 int main(void) { return 0; }
2622 if compile_prog "" "" ; then
2623 netmap=yes
2624 else
2625 if test "$netmap" = "yes" ; then
2626 feature_not_found "netmap"
2628 netmap=no
2632 ##########################################
2633 # libcap-ng library probe
2634 if test "$cap_ng" != "no" ; then
2635 cap_libs="-lcap-ng"
2636 cat > $TMPC << EOF
2637 #include <cap-ng.h>
2638 int main(void)
2640 capng_capability_to_name(CAPNG_EFFECTIVE);
2641 return 0;
2644 if compile_prog "" "$cap_libs" ; then
2645 cap_ng=yes
2646 libs_tools="$cap_libs $libs_tools"
2647 else
2648 if test "$cap_ng" = "yes" ; then
2649 feature_not_found "cap_ng" "Install libcap-ng devel"
2651 cap_ng=no
2655 ##########################################
2656 # Sound support libraries probe
2658 audio_drv_probe()
2660 drv=$1
2661 hdr=$2
2662 lib=$3
2663 exp=$4
2664 cfl=$5
2665 cat > $TMPC << EOF
2666 #include <$hdr>
2667 int main(void) { $exp }
2669 if compile_prog "$cfl" "$lib" ; then
2671 else
2672 error_exit "$drv check failed" \
2673 "Make sure to have the $drv libs and headers installed."
2677 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2678 for drv in $audio_drv_list; do
2679 case $drv in
2680 alsa)
2681 audio_drv_probe $drv alsa/asoundlib.h -lasound \
2682 "return snd_pcm_close((snd_pcm_t *)0);"
2683 libs_softmmu="-lasound $libs_softmmu"
2687 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2688 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2689 libs_softmmu="-lpulse $libs_softmmu"
2690 audio_pt_int="yes"
2693 coreaudio)
2694 libs_softmmu="-framework CoreAudio $libs_softmmu"
2697 dsound)
2698 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2699 audio_win_int="yes"
2702 oss)
2703 libs_softmmu="$oss_lib $libs_softmmu"
2706 sdl|wav)
2707 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2711 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2712 error_exit "Unknown driver '$drv' selected" \
2713 "Possible drivers are: $audio_possible_drivers"
2716 esac
2717 done
2719 ##########################################
2720 # BrlAPI probe
2722 if test "$brlapi" != "no" ; then
2723 brlapi_libs="-lbrlapi"
2724 cat > $TMPC << EOF
2725 #include <brlapi.h>
2726 #include <stddef.h>
2727 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2729 if compile_prog "" "$brlapi_libs" ; then
2730 brlapi=yes
2731 libs_softmmu="$brlapi_libs $libs_softmmu"
2732 else
2733 if test "$brlapi" = "yes" ; then
2734 feature_not_found "brlapi" "Install brlapi devel"
2736 brlapi=no
2740 ##########################################
2741 # curses probe
2742 if test "$curses" != "no" ; then
2743 if test "$mingw32" = "yes" ; then
2744 curses_list="-lpdcurses"
2745 else
2746 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2748 curses_found=no
2749 cat > $TMPC << EOF
2750 #include <curses.h>
2751 int main(void) {
2752 const char *s = curses_version();
2753 resize_term(0, 0);
2754 return s != 0;
2757 IFS=:
2758 for curses_lib in $curses_list; do
2759 unset IFS
2760 if compile_prog "" "$curses_lib" ; then
2761 curses_found=yes
2762 libs_softmmu="$curses_lib $libs_softmmu"
2763 break
2765 done
2766 unset IFS
2767 if test "$curses_found" = "yes" ; then
2768 curses=yes
2769 else
2770 if test "$curses" = "yes" ; then
2771 feature_not_found "curses" "Install ncurses devel"
2773 curses=no
2777 ##########################################
2778 # curl probe
2779 if test "$curl" != "no" ; then
2780 if $pkg_config libcurl --exists; then
2781 curlconfig="$pkg_config libcurl"
2782 else
2783 curlconfig=curl-config
2785 cat > $TMPC << EOF
2786 #include <curl/curl.h>
2787 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2789 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2790 curl_libs=`$curlconfig --libs 2>/dev/null`
2791 if compile_prog "$curl_cflags" "$curl_libs" ; then
2792 curl=yes
2793 else
2794 if test "$curl" = "yes" ; then
2795 feature_not_found "curl" "Install libcurl devel"
2797 curl=no
2799 fi # test "$curl"
2801 ##########################################
2802 # bluez support probe
2803 if test "$bluez" != "no" ; then
2804 cat > $TMPC << EOF
2805 #include <bluetooth/bluetooth.h>
2806 int main(void) { return bt_error(0); }
2808 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2809 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2810 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2811 bluez=yes
2812 libs_softmmu="$bluez_libs $libs_softmmu"
2813 else
2814 if test "$bluez" = "yes" ; then
2815 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2817 bluez="no"
2821 ##########################################
2822 # glib support probe
2824 glib_req_ver=2.22
2825 glib_modules=gthread-2.0
2826 if test "$modules" = yes; then
2827 glib_modules="$glib_modules gmodule-2.0"
2830 for i in $glib_modules; do
2831 if $pkg_config --atleast-version=$glib_req_ver $i; then
2832 glib_cflags=`$pkg_config --cflags $i`
2833 glib_libs=`$pkg_config --libs $i`
2834 CFLAGS="$glib_cflags $CFLAGS"
2835 LIBS="$glib_libs $LIBS"
2836 libs_qga="$glib_libs $libs_qga"
2837 else
2838 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2840 done
2842 # g_test_trap_subprocess added in 2.38. Used by some tests.
2843 glib_subprocess=yes
2844 if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2845 glib_subprocess=no
2848 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2849 cat > $TMPC << EOF
2850 #include <glib.h>
2851 int main(void) { return 0; }
2853 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2854 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2855 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2856 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2860 ##########################################
2861 # SHA command probe for modules
2862 if test "$modules" = yes; then
2863 shacmd_probe="sha1sum sha1 shasum"
2864 for c in $shacmd_probe; do
2865 if has $c; then
2866 shacmd="$c"
2867 break
2869 done
2870 if test "$shacmd" = ""; then
2871 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2875 ##########################################
2876 # pixman support probe
2878 if test "$pixman" = ""; then
2879 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2880 pixman="none"
2881 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
2882 pixman="system"
2883 else
2884 pixman="internal"
2887 if test "$pixman" = "none"; then
2888 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2889 error_exit "pixman disabled but system emulation or tools build" \
2890 "enabled. You can turn off pixman only if you also" \
2891 "disable all system emulation targets and the tools" \
2892 "build with '--disable-tools --disable-system'."
2894 pixman_cflags=
2895 pixman_libs=
2896 elif test "$pixman" = "system"; then
2897 # pixman version has been checked above
2898 pixman_cflags=`$pkg_config --cflags pixman-1`
2899 pixman_libs=`$pkg_config --libs pixman-1`
2900 else
2901 if test ! -d ${source_path}/pixman/pixman; then
2902 error_exit "pixman >= 0.21.8 not present. Your options:" \
2903 " (1) Preferred: Install the pixman devel package (any recent" \
2904 " distro should have packages as Xorg needs pixman too)." \
2905 " (2) Fetch the pixman submodule, using:" \
2906 " git submodule update --init pixman"
2908 mkdir -p pixman/pixman
2909 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2910 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2913 ##########################################
2914 # libcap probe
2916 if test "$cap" != "no" ; then
2917 cat > $TMPC <<EOF
2918 #include <stdio.h>
2919 #include <sys/capability.h>
2920 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2922 if compile_prog "" "-lcap" ; then
2923 cap=yes
2924 else
2925 cap=no
2929 ##########################################
2930 # pthread probe
2931 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2933 pthread=no
2934 cat > $TMPC << EOF
2935 #include <pthread.h>
2936 static void *f(void *p) { return NULL; }
2937 int main(void) {
2938 pthread_t thread;
2939 pthread_create(&thread, 0, f, 0);
2940 return 0;
2943 if compile_prog "" "" ; then
2944 pthread=yes
2945 else
2946 for pthread_lib in $PTHREADLIBS_LIST; do
2947 if compile_prog "" "$pthread_lib" ; then
2948 pthread=yes
2949 found=no
2950 for lib_entry in $LIBS; do
2951 if test "$lib_entry" = "$pthread_lib"; then
2952 found=yes
2953 break
2955 done
2956 if test "$found" = "no"; then
2957 LIBS="$pthread_lib $LIBS"
2959 break
2961 done
2964 if test "$mingw32" != yes -a "$pthread" = no; then
2965 error_exit "pthread check failed" \
2966 "Make sure to have the pthread libs and headers installed."
2969 # check for pthread_setname_np
2970 pthread_setname_np=no
2971 cat > $TMPC << EOF
2972 #include <pthread.h>
2974 static void *f(void *p) { return NULL; }
2975 int main(void)
2977 pthread_t thread;
2978 pthread_create(&thread, 0, f, 0);
2979 pthread_setname_np(thread, "QEMU");
2980 return 0;
2983 if compile_prog "" "$pthread_lib" ; then
2984 pthread_setname_np=yes
2987 ##########################################
2988 # rbd probe
2989 if test "$rbd" != "no" ; then
2990 cat > $TMPC <<EOF
2991 #include <stdio.h>
2992 #include <rbd/librbd.h>
2993 int main(void) {
2994 rados_t cluster;
2995 rados_create(&cluster, NULL);
2996 return 0;
2999 rbd_libs="-lrbd -lrados"
3000 if compile_prog "" "$rbd_libs" ; then
3001 rbd=yes
3002 else
3003 if test "$rbd" = "yes" ; then
3004 feature_not_found "rados block device" "Install librbd/ceph devel"
3006 rbd=no
3010 ##########################################
3011 # libssh2 probe
3012 min_libssh2_version=1.2.8
3013 if test "$libssh2" != "no" ; then
3014 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
3015 libssh2_cflags=`$pkg_config libssh2 --cflags`
3016 libssh2_libs=`$pkg_config libssh2 --libs`
3017 libssh2=yes
3018 else
3019 if test "$libssh2" = "yes" ; then
3020 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
3022 libssh2=no
3026 ##########################################
3027 # libssh2_sftp_fsync probe
3029 if test "$libssh2" = "yes"; then
3030 cat > $TMPC <<EOF
3031 #include <stdio.h>
3032 #include <libssh2.h>
3033 #include <libssh2_sftp.h>
3034 int main(void) {
3035 LIBSSH2_SESSION *session;
3036 LIBSSH2_SFTP *sftp;
3037 LIBSSH2_SFTP_HANDLE *sftp_handle;
3038 session = libssh2_session_init ();
3039 sftp = libssh2_sftp_init (session);
3040 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3041 libssh2_sftp_fsync (sftp_handle);
3042 return 0;
3045 # libssh2_cflags/libssh2_libs defined in previous test.
3046 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3047 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3051 ##########################################
3052 # linux-aio probe
3054 if test "$linux_aio" != "no" ; then
3055 cat > $TMPC <<EOF
3056 #include <libaio.h>
3057 #include <sys/eventfd.h>
3058 #include <stddef.h>
3059 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3061 if compile_prog "" "-laio" ; then
3062 linux_aio=yes
3063 else
3064 if test "$linux_aio" = "yes" ; then
3065 feature_not_found "linux AIO" "Install libaio devel"
3067 linux_aio=no
3071 ##########################################
3072 # TPM passthrough is only on x86 Linux
3074 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3075 tpm_passthrough=$tpm
3076 else
3077 tpm_passthrough=no
3080 ##########################################
3081 # attr probe
3083 if test "$attr" != "no" ; then
3084 cat > $TMPC <<EOF
3085 #include <stdio.h>
3086 #include <sys/types.h>
3087 #ifdef CONFIG_LIBATTR
3088 #include <attr/xattr.h>
3089 #else
3090 #include <sys/xattr.h>
3091 #endif
3092 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3094 if compile_prog "" "" ; then
3095 attr=yes
3096 # Older distros have <attr/xattr.h>, and need -lattr:
3097 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3098 attr=yes
3099 LIBS="-lattr $LIBS"
3100 libattr=yes
3101 else
3102 if test "$attr" = "yes" ; then
3103 feature_not_found "ATTR" "Install libc6 or libattr devel"
3105 attr=no
3109 ##########################################
3110 # iovec probe
3111 cat > $TMPC <<EOF
3112 #include <sys/types.h>
3113 #include <sys/uio.h>
3114 #include <unistd.h>
3115 int main(void) { return sizeof(struct iovec); }
3117 iovec=no
3118 if compile_prog "" "" ; then
3119 iovec=yes
3122 ##########################################
3123 # preadv probe
3124 cat > $TMPC <<EOF
3125 #include <sys/types.h>
3126 #include <sys/uio.h>
3127 #include <unistd.h>
3128 int main(void) { return preadv(0, 0, 0, 0); }
3130 preadv=no
3131 if compile_prog "" "" ; then
3132 preadv=yes
3135 ##########################################
3136 # fdt probe
3137 # fdt support is mandatory for at least some target architectures,
3138 # so insist on it if we're building those system emulators.
3139 fdt_required=no
3140 for target in $target_list; do
3141 case $target in
3142 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3143 fdt_required=yes
3145 esac
3146 done
3148 if test "$fdt_required" = "yes"; then
3149 if test "$fdt" = "no"; then
3150 error_exit "fdt disabled but some requested targets require it." \
3151 "You can turn off fdt only if you also disable all the system emulation" \
3152 "targets which need it (by specifying a cut down --target-list)."
3154 fdt=yes
3157 if test "$fdt" != "no" ; then
3158 fdt_libs="-lfdt"
3159 # explicitly check for libfdt_env.h as it is missing in some stable installs
3160 # and test for required functions to make sure we are on a version >= 1.4.0
3161 cat > $TMPC << EOF
3162 #include <libfdt.h>
3163 #include <libfdt_env.h>
3164 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3166 if compile_prog "" "$fdt_libs" ; then
3167 # system DTC is good - use it
3168 fdt=yes
3169 elif test -d ${source_path}/dtc/libfdt ; then
3170 # have submodule DTC - use it
3171 fdt=yes
3172 dtc_internal="yes"
3173 mkdir -p dtc
3174 if [ "$pwd_is_source_path" != "y" ] ; then
3175 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3176 symlink "$source_path/dtc/scripts" "dtc/scripts"
3178 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3179 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3180 elif test "$fdt" = "yes" ; then
3181 # have neither and want - prompt for system/submodule install
3182 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3183 " (1) Preferred: Install the DTC (libfdt) devel package" \
3184 " (2) Fetch the DTC submodule, using:" \
3185 " git submodule update --init dtc"
3186 else
3187 # don't have and don't want
3188 fdt_libs=
3189 fdt=no
3193 libs_softmmu="$libs_softmmu $fdt_libs"
3195 ##########################################
3196 # opengl probe (for sdl2, milkymist-tmu2)
3198 # GLX probe, used by milkymist-tmu2
3199 # this is temporary, code will be switched to egl mid-term.
3200 cat > $TMPC << EOF
3201 #include <X11/Xlib.h>
3202 #include <GL/gl.h>
3203 #include <GL/glx.h>
3204 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3206 if compile_prog "" "-lGL -lX11" ; then
3207 have_glx=yes
3208 else
3209 have_glx=no
3212 if test "$opengl" != "no" ; then
3213 opengl_pkgs="gl glesv2 epoxy egl"
3214 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
3215 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3216 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3217 opengl=yes
3218 else
3219 if test "$opengl" = "yes" ; then
3220 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3222 opengl_cflags=""
3223 opengl_libs=""
3224 opengl=no
3229 ##########################################
3230 # archipelago probe
3231 if test "$archipelago" != "no" ; then
3232 cat > $TMPC <<EOF
3233 #include <stdio.h>
3234 #include <xseg/xseg.h>
3235 #include <xseg/protocol.h>
3236 int main(void) {
3237 xseg_initialize();
3238 return 0;
3241 archipelago_libs=-lxseg
3242 if compile_prog "" "$archipelago_libs"; then
3243 archipelago="yes"
3244 libs_tools="$archipelago_libs $libs_tools"
3245 libs_softmmu="$archipelago_libs $libs_softmmu"
3247 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3248 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3249 echo "license and therefore prevent redistribution."
3250 echo
3251 echo "To disable Archipelago, use --disable-archipelago"
3252 else
3253 if test "$archipelago" = "yes" ; then
3254 feature_not_found "Archipelago backend support" "Install libxseg devel"
3256 archipelago="no"
3261 ##########################################
3262 # glusterfs probe
3263 if test "$glusterfs" != "no" ; then
3264 if $pkg_config --atleast-version=3 glusterfs-api; then
3265 glusterfs="yes"
3266 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3267 glusterfs_libs=`$pkg_config --libs glusterfs-api`
3268 if $pkg_config --atleast-version=5 glusterfs-api; then
3269 glusterfs_discard="yes"
3271 if $pkg_config --atleast-version=6 glusterfs-api; then
3272 glusterfs_zerofill="yes"
3274 else
3275 if test "$glusterfs" = "yes" ; then
3276 feature_not_found "GlusterFS backend support" \
3277 "Install glusterfs-api devel >= 3"
3279 glusterfs="no"
3283 # Check for inotify functions when we are building linux-user
3284 # emulator. This is done because older glibc versions don't
3285 # have syscall stubs for these implemented. In that case we
3286 # don't provide them even if kernel supports them.
3288 inotify=no
3289 cat > $TMPC << EOF
3290 #include <sys/inotify.h>
3293 main(void)
3295 /* try to start inotify */
3296 return inotify_init();
3299 if compile_prog "" "" ; then
3300 inotify=yes
3303 inotify1=no
3304 cat > $TMPC << EOF
3305 #include <sys/inotify.h>
3308 main(void)
3310 /* try to start inotify */
3311 return inotify_init1(0);
3314 if compile_prog "" "" ; then
3315 inotify1=yes
3318 # check if utimensat and futimens are supported
3319 utimens=no
3320 cat > $TMPC << EOF
3321 #define _ATFILE_SOURCE
3322 #include <stddef.h>
3323 #include <fcntl.h>
3324 #include <sys/stat.h>
3326 int main(void)
3328 utimensat(AT_FDCWD, "foo", NULL, 0);
3329 futimens(0, NULL);
3330 return 0;
3333 if compile_prog "" "" ; then
3334 utimens=yes
3337 # check if pipe2 is there
3338 pipe2=no
3339 cat > $TMPC << EOF
3340 #include <unistd.h>
3341 #include <fcntl.h>
3343 int main(void)
3345 int pipefd[2];
3346 return pipe2(pipefd, O_CLOEXEC);
3349 if compile_prog "" "" ; then
3350 pipe2=yes
3353 # check if accept4 is there
3354 accept4=no
3355 cat > $TMPC << EOF
3356 #include <sys/socket.h>
3357 #include <stddef.h>
3359 int main(void)
3361 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3362 return 0;
3365 if compile_prog "" "" ; then
3366 accept4=yes
3369 # check if tee/splice is there. vmsplice was added same time.
3370 splice=no
3371 cat > $TMPC << EOF
3372 #include <unistd.h>
3373 #include <fcntl.h>
3374 #include <limits.h>
3376 int main(void)
3378 int len, fd = 0;
3379 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3380 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3381 return 0;
3384 if compile_prog "" "" ; then
3385 splice=yes
3388 ##########################################
3389 # libnuma probe
3391 if test "$numa" != "no" ; then
3392 cat > $TMPC << EOF
3393 #include <numa.h>
3394 int main(void) { return numa_available(); }
3397 if compile_prog "" "-lnuma" ; then
3398 numa=yes
3399 libs_softmmu="-lnuma $libs_softmmu"
3400 else
3401 if test "$numa" = "yes" ; then
3402 feature_not_found "numa" "install numactl devel"
3404 numa=no
3408 ##########################################
3409 # tcmalloc probe
3411 if test "$tcmalloc" = "yes" ; then
3412 cat > $TMPC << EOF
3413 #include <stdlib.h>
3414 int main(void) { malloc(1); return 0; }
3417 if compile_prog "" "-ltcmalloc" ; then
3418 LIBS="-ltcmalloc $LIBS"
3419 else
3420 feature_not_found "tcmalloc" "install gperftools devel"
3424 ##########################################
3425 # signalfd probe
3426 signalfd="no"
3427 cat > $TMPC << EOF
3428 #include <unistd.h>
3429 #include <sys/syscall.h>
3430 #include <signal.h>
3431 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3434 if compile_prog "" "" ; then
3435 signalfd=yes
3438 # check if eventfd is supported
3439 eventfd=no
3440 cat > $TMPC << EOF
3441 #include <sys/eventfd.h>
3443 int main(void)
3445 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3448 if compile_prog "" "" ; then
3449 eventfd=yes
3452 # check for fallocate
3453 fallocate=no
3454 cat > $TMPC << EOF
3455 #include <fcntl.h>
3457 int main(void)
3459 fallocate(0, 0, 0, 0);
3460 return 0;
3463 if compile_prog "" "" ; then
3464 fallocate=yes
3467 # check for fallocate hole punching
3468 fallocate_punch_hole=no
3469 cat > $TMPC << EOF
3470 #include <fcntl.h>
3471 #include <linux/falloc.h>
3473 int main(void)
3475 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3476 return 0;
3479 if compile_prog "" "" ; then
3480 fallocate_punch_hole=yes
3483 # check that fallocate supports range zeroing inside the file
3484 fallocate_zero_range=no
3485 cat > $TMPC << EOF
3486 #include <fcntl.h>
3487 #include <linux/falloc.h>
3489 int main(void)
3491 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3492 return 0;
3495 if compile_prog "" "" ; then
3496 fallocate_zero_range=yes
3499 # check for posix_fallocate
3500 posix_fallocate=no
3501 cat > $TMPC << EOF
3502 #include <fcntl.h>
3504 int main(void)
3506 posix_fallocate(0, 0, 0);
3507 return 0;
3510 if compile_prog "" "" ; then
3511 posix_fallocate=yes
3514 # check for sync_file_range
3515 sync_file_range=no
3516 cat > $TMPC << EOF
3517 #include <fcntl.h>
3519 int main(void)
3521 sync_file_range(0, 0, 0, 0);
3522 return 0;
3525 if compile_prog "" "" ; then
3526 sync_file_range=yes
3529 # check for linux/fiemap.h and FS_IOC_FIEMAP
3530 fiemap=no
3531 cat > $TMPC << EOF
3532 #include <sys/ioctl.h>
3533 #include <linux/fs.h>
3534 #include <linux/fiemap.h>
3536 int main(void)
3538 ioctl(0, FS_IOC_FIEMAP, 0);
3539 return 0;
3542 if compile_prog "" "" ; then
3543 fiemap=yes
3546 # check for dup3
3547 dup3=no
3548 cat > $TMPC << EOF
3549 #include <unistd.h>
3551 int main(void)
3553 dup3(0, 0, 0);
3554 return 0;
3557 if compile_prog "" "" ; then
3558 dup3=yes
3561 # check for ppoll support
3562 ppoll=no
3563 cat > $TMPC << EOF
3564 #include <poll.h>
3566 int main(void)
3568 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3569 ppoll(&pfd, 1, 0, 0);
3570 return 0;
3573 if compile_prog "" "" ; then
3574 ppoll=yes
3577 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3578 prctl_pr_set_timerslack=no
3579 cat > $TMPC << EOF
3580 #include <sys/prctl.h>
3582 int main(void)
3584 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3585 return 0;
3588 if compile_prog "" "" ; then
3589 prctl_pr_set_timerslack=yes
3592 # check for epoll support
3593 epoll=no
3594 cat > $TMPC << EOF
3595 #include <sys/epoll.h>
3597 int main(void)
3599 epoll_create(0);
3600 return 0;
3603 if compile_prog "" "" ; then
3604 epoll=yes
3607 # epoll_create1 and epoll_pwait are later additions
3608 # so we must check separately for their presence
3609 epoll_create1=no
3610 cat > $TMPC << EOF
3611 #include <sys/epoll.h>
3613 int main(void)
3615 /* Note that we use epoll_create1 as a value, not as
3616 * a function being called. This is necessary so that on
3617 * old SPARC glibc versions where the function was present in
3618 * the library but not declared in the header file we will
3619 * fail the configure check. (Otherwise we will get a compiler
3620 * warning but not an error, and will proceed to fail the
3621 * qemu compile where we compile with -Werror.)
3623 return (int)(uintptr_t)&epoll_create1;
3626 if compile_prog "" "" ; then
3627 epoll_create1=yes
3630 epoll_pwait=no
3631 cat > $TMPC << EOF
3632 #include <sys/epoll.h>
3634 int main(void)
3636 epoll_pwait(0, 0, 0, 0, 0);
3637 return 0;
3640 if compile_prog "" "" ; then
3641 epoll_pwait=yes
3644 # check for sendfile support
3645 sendfile=no
3646 cat > $TMPC << EOF
3647 #include <sys/sendfile.h>
3649 int main(void)
3651 return sendfile(0, 0, 0, 0);
3654 if compile_prog "" "" ; then
3655 sendfile=yes
3658 # check for timerfd support (glibc 2.8 and newer)
3659 timerfd=no
3660 cat > $TMPC << EOF
3661 #include <sys/timerfd.h>
3663 int main(void)
3665 return(timerfd_create(CLOCK_REALTIME, 0));
3668 if compile_prog "" "" ; then
3669 timerfd=yes
3672 # check for setns and unshare support
3673 setns=no
3674 cat > $TMPC << EOF
3675 #include <sched.h>
3677 int main(void)
3679 int ret;
3680 ret = setns(0, 0);
3681 ret = unshare(0);
3682 return ret;
3685 if compile_prog "" "" ; then
3686 setns=yes
3689 # Check if tools are available to build documentation.
3690 if test "$docs" != "no" ; then
3691 if has makeinfo && has pod2man; then
3692 docs=yes
3693 else
3694 if test "$docs" = "yes" ; then
3695 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
3697 docs=no
3701 if test "$want_tools" = ""; then
3702 if test `expr "$target_list" : ".*softmmu.*"` != 0; then
3703 want_tools=yes
3704 else
3705 want_tools=no
3709 # Search for bswap_32 function
3710 byteswap_h=no
3711 cat > $TMPC << EOF
3712 #include <byteswap.h>
3713 int main(void) { return bswap_32(0); }
3715 if compile_prog "" "" ; then
3716 byteswap_h=yes
3719 # Search for bswap32 function
3720 bswap_h=no
3721 cat > $TMPC << EOF
3722 #include <sys/endian.h>
3723 #include <sys/types.h>
3724 #include <machine/bswap.h>
3725 int main(void) { return bswap32(0); }
3727 if compile_prog "" "" ; then
3728 bswap_h=yes
3731 ##########################################
3732 # Do we have libiscsi >= 1.9.0
3733 if test "$libiscsi" != "no" ; then
3734 if $pkg_config --atleast-version=1.9.0 libiscsi; then
3735 libiscsi="yes"
3736 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3737 libiscsi_libs=$($pkg_config --libs libiscsi)
3738 else
3739 if test "$libiscsi" = "yes" ; then
3740 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
3742 libiscsi="no"
3746 ##########################################
3747 # Do we need libm
3748 cat > $TMPC << EOF
3749 #include <math.h>
3750 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3752 if compile_prog "" "" ; then
3754 elif compile_prog "" "-lm" ; then
3755 LIBS="-lm $LIBS"
3756 libs_qga="-lm $libs_qga"
3757 else
3758 error_exit "libm check failed"
3761 ##########################################
3762 # Do we need librt
3763 # uClibc provides 2 versions of clock_gettime(), one with realtime
3764 # support and one without. This means that the clock_gettime() don't
3765 # need -lrt. We still need it for timer_create() so we check for this
3766 # function in addition.
3767 cat > $TMPC <<EOF
3768 #include <signal.h>
3769 #include <time.h>
3770 int main(void) {
3771 timer_create(CLOCK_REALTIME, NULL, NULL);
3772 return clock_gettime(CLOCK_REALTIME, NULL);
3776 if compile_prog "" "" ; then
3778 # we need pthread for static linking. use previous pthread test result
3779 elif compile_prog "" "$pthread_lib -lrt" ; then
3780 LIBS="$LIBS -lrt"
3781 libs_qga="$libs_qga -lrt"
3784 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3785 "$aix" != "yes" -a "$haiku" != "yes" ; then
3786 libs_softmmu="-lutil $libs_softmmu"
3789 ##########################################
3790 # spice probe
3791 if test "$spice" != "no" ; then
3792 cat > $TMPC << EOF
3793 #include <spice.h>
3794 int main(void) { spice_server_new(); return 0; }
3796 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3797 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
3798 if $pkg_config --atleast-version=0.12.0 spice-server && \
3799 $pkg_config --atleast-version=0.12.3 spice-protocol && \
3800 compile_prog "$spice_cflags" "$spice_libs" ; then
3801 spice="yes"
3802 libs_softmmu="$libs_softmmu $spice_libs"
3803 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
3804 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3805 spice_server_version=$($pkg_config --modversion spice-server)
3806 else
3807 if test "$spice" = "yes" ; then
3808 feature_not_found "spice" \
3809 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3811 spice="no"
3815 # check for libcacard for smartcard support
3816 smartcard_cflags=""
3817 # TODO - what's the minimal nss version we support?
3818 if test "$smartcard_nss" != "no"; then
3819 cat > $TMPC << EOF
3820 #include <pk11pub.h>
3821 int main(void) { PK11_FreeSlot(0); return 0; }
3823 # FIXME: do not include $glib_* in here
3824 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3825 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3826 test_cflags="$nss_cflags"
3827 # The header files in nss < 3.13.3 have a bug which causes them to
3828 # emit a warning. If we're going to compile QEMU with -Werror, then
3829 # test that the headers don't have this bug. Otherwise we would pass
3830 # the configure test but fail to compile QEMU later.
3831 if test "$werror" = "yes"; then
3832 test_cflags="-Werror $test_cflags"
3834 if test -n "$libtool" &&
3835 $pkg_config --atleast-version=3.12.8 nss && \
3836 compile_prog "$test_cflags" "$nss_libs"; then
3837 smartcard_nss="yes"
3838 else
3839 if test "$smartcard_nss" = "yes"; then
3840 feature_not_found "nss" "Install nss devel >= 3.12.8"
3842 smartcard_nss="no"
3846 # check for libusb
3847 if test "$libusb" != "no" ; then
3848 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
3849 libusb="yes"
3850 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3851 libusb_libs=$($pkg_config --libs libusb-1.0)
3852 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3853 libs_softmmu="$libs_softmmu $libusb_libs"
3854 else
3855 if test "$libusb" = "yes"; then
3856 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
3858 libusb="no"
3862 # check for usbredirparser for usb network redirection support
3863 if test "$usb_redir" != "no" ; then
3864 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
3865 usb_redir="yes"
3866 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3867 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
3868 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
3869 libs_softmmu="$libs_softmmu $usb_redir_libs"
3870 else
3871 if test "$usb_redir" = "yes"; then
3872 feature_not_found "usb-redir" "Install usbredir devel"
3874 usb_redir="no"
3878 ##########################################
3879 # check if we have VSS SDK headers for win
3881 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3882 case "$vss_win32_sdk" in
3883 "") vss_win32_include="-I$source_path" ;;
3884 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3885 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3886 vss_win32_include="-I$source_path/.sdk/vss"
3887 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3889 *) vss_win32_include="-I$vss_win32_sdk"
3890 esac
3891 cat > $TMPC << EOF
3892 #define __MIDL_user_allocate_free_DEFINED__
3893 #include <inc/win2003/vss.h>
3894 int main(void) { return VSS_CTX_BACKUP; }
3896 if compile_prog "$vss_win32_include" "" ; then
3897 guest_agent_with_vss="yes"
3898 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3899 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3900 else
3901 if test "$vss_win32_sdk" != "" ; then
3902 echo "ERROR: Please download and install Microsoft VSS SDK:"
3903 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3904 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3905 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3906 echo "ERROR: The headers are extracted in the directory \`inc'."
3907 feature_not_found "VSS support"
3909 guest_agent_with_vss="no"
3913 ##########################################
3914 # lookup Windows platform SDK (if not specified)
3915 # The SDK is needed only to build .tlb (type library) file of guest agent
3916 # VSS provider from the source. It is usually unnecessary because the
3917 # pre-compiled .tlb file is included.
3919 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3920 if test -z "$win_sdk"; then
3921 programfiles="$PROGRAMFILES"
3922 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3923 if test -n "$programfiles"; then
3924 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3925 else
3926 feature_not_found "Windows SDK"
3928 elif test "$win_sdk" = "no"; then
3929 win_sdk=""
3933 ##########################################
3934 # check if mingw environment provides a recent ntddscsi.h
3935 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3936 cat > $TMPC << EOF
3937 #include <windows.h>
3938 #include <ntddscsi.h>
3939 int main(void) {
3940 #if !defined(IOCTL_SCSI_GET_ADDRESS)
3941 #error Missing required ioctl definitions
3942 #endif
3943 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3944 return addr.Lun;
3947 if compile_prog "" "" ; then
3948 guest_agent_ntddscsi=yes
3949 libs_qga="-lsetupapi $libs_qga"
3953 ##########################################
3954 # Guest agent Window MSI package
3956 if test "$guest_agent" != yes; then
3957 if test "$guest_agent_msi" = yes; then
3958 error_exit "MSI guest agent package requires guest agent enabled"
3960 guest_agent_msi=no
3961 elif test "$mingw32" != "yes"; then
3962 if test "$guest_agent_msi" = "yes"; then
3963 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
3965 guest_agent_msi=no
3966 elif ! has wixl; then
3967 if test "$guest_agent_msi" = "yes"; then
3968 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3970 guest_agent_msi=no
3973 if test "$guest_agent_msi" != "no"; then
3974 if test "$guest_agent_with_vss" = "yes"; then
3975 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
3978 if test "$QEMU_GA_MANUFACTURER" = ""; then
3979 QEMU_GA_MANUFACTURER=QEMU
3982 if test "$QEMU_GA_DISTRO" = ""; then
3983 QEMU_GA_DISTRO=Linux
3986 if test "$QEMU_GA_VERSION" = ""; then
3987 QEMU_GA_VERSION=`cat $source_path/VERSION`
3990 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3992 case "$cpu" in
3993 x86_64)
3994 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
3996 i386)
3997 QEMU_GA_MSI_ARCH="-D Arch=32"
4000 error_exit "CPU $cpu not supported for building installation package"
4002 esac
4005 ##########################################
4006 # check if we have fdatasync
4008 fdatasync=no
4009 cat > $TMPC << EOF
4010 #include <unistd.h>
4011 int main(void) {
4012 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4013 return fdatasync(0);
4014 #else
4015 #error Not supported
4016 #endif
4019 if compile_prog "" "" ; then
4020 fdatasync=yes
4023 ##########################################
4024 # check if we have madvise
4026 madvise=no
4027 cat > $TMPC << EOF
4028 #include <sys/types.h>
4029 #include <sys/mman.h>
4030 #include <stddef.h>
4031 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4033 if compile_prog "" "" ; then
4034 madvise=yes
4037 ##########################################
4038 # check if we have posix_madvise
4040 posix_madvise=no
4041 cat > $TMPC << EOF
4042 #include <sys/mman.h>
4043 #include <stddef.h>
4044 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4046 if compile_prog "" "" ; then
4047 posix_madvise=yes
4050 ##########################################
4051 # check if we have usable SIGEV_THREAD_ID
4053 sigev_thread_id=no
4054 cat > $TMPC << EOF
4055 #include <signal.h>
4056 int main(void) {
4057 struct sigevent ev;
4058 ev.sigev_notify = SIGEV_THREAD_ID;
4059 ev._sigev_un._tid = 0;
4060 asm volatile("" : : "g"(&ev));
4061 return 0;
4064 if compile_prog "" "" ; then
4065 sigev_thread_id=yes
4068 ##########################################
4069 # check if trace backend exists
4071 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4072 if test "$?" -ne 0 ; then
4073 error_exit "invalid trace backends" \
4074 "Please choose supported trace backends."
4077 ##########################################
4078 # For 'ust' backend, test if ust headers are present
4079 if have_backend "ust"; then
4080 cat > $TMPC << EOF
4081 #include <lttng/tracepoint.h>
4082 int main(void) { return 0; }
4084 if compile_prog "" "" ; then
4085 if $pkg_config lttng-ust --exists; then
4086 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4087 else
4088 lttng_ust_libs="-llttng-ust"
4090 if $pkg_config liburcu-bp --exists; then
4091 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4092 else
4093 urcu_bp_libs="-lurcu-bp"
4096 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4097 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4098 else
4099 error_exit "Trace backend 'ust' missing lttng-ust header files"
4103 ##########################################
4104 # For 'dtrace' backend, test if 'dtrace' command is present
4105 if have_backend "dtrace"; then
4106 if ! has 'dtrace' ; then
4107 error_exit "dtrace command is not found in PATH $PATH"
4109 trace_backend_stap="no"
4110 if has 'stap' ; then
4111 trace_backend_stap="yes"
4115 ##########################################
4116 # check and set a backend for coroutine
4118 # We prefer ucontext, but it's not always possible. The fallback
4119 # is sigcontext. gthread is not selectable except explicitly, because
4120 # it is not functional enough to run QEMU proper. (It is occasionally
4121 # useful for debugging purposes.) On Windows the only valid backend
4122 # is the Windows-specific one.
4124 ucontext_works=no
4125 if test "$darwin" != "yes"; then
4126 cat > $TMPC << EOF
4127 #include <ucontext.h>
4128 #ifdef __stub_makecontext
4129 #error Ignoring glibc stub makecontext which will always fail
4130 #endif
4131 int main(void) { makecontext(0, 0, 0); return 0; }
4133 if compile_prog "" "" ; then
4134 ucontext_works=yes
4138 if test "$coroutine" = ""; then
4139 if test "$mingw32" = "yes"; then
4140 coroutine=win32
4141 elif test "$ucontext_works" = "yes"; then
4142 coroutine=ucontext
4143 else
4144 coroutine=sigaltstack
4146 else
4147 case $coroutine in
4148 windows)
4149 if test "$mingw32" != "yes"; then
4150 error_exit "'windows' coroutine backend only valid for Windows"
4152 # Unfortunately the user visible backend name doesn't match the
4153 # coroutine-*.c filename for this case, so we have to adjust it here.
4154 coroutine=win32
4156 ucontext)
4157 if test "$ucontext_works" != "yes"; then
4158 feature_not_found "ucontext"
4161 gthread|sigaltstack)
4162 if test "$mingw32" = "yes"; then
4163 error_exit "only the 'windows' coroutine backend is valid for Windows"
4167 error_exit "unknown coroutine backend $coroutine"
4169 esac
4172 if test "$coroutine_pool" = ""; then
4173 if test "$coroutine" = "gthread" -o "$coroutine" = "win32"; then
4174 coroutine_pool=no
4175 else
4176 coroutine_pool=yes
4179 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4180 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4183 ##########################################
4184 # check if we have open_by_handle_at
4186 open_by_handle_at=no
4187 cat > $TMPC << EOF
4188 #include <fcntl.h>
4189 #if !defined(AT_EMPTY_PATH)
4190 # error missing definition
4191 #else
4192 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4193 #endif
4195 if compile_prog "" "" ; then
4196 open_by_handle_at=yes
4199 ########################################
4200 # check if we have linux/magic.h
4202 linux_magic_h=no
4203 cat > $TMPC << EOF
4204 #include <linux/magic.h>
4205 int main(void) {
4206 return 0;
4209 if compile_prog "" "" ; then
4210 linux_magic_h=yes
4213 ########################################
4214 # check whether we can disable warning option with a pragma (this is needed
4215 # to silence warnings in the headers of some versions of external libraries).
4216 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4217 # only a warning.
4219 # If we can't selectively disable warning in the code, disable -Werror so that
4220 # the build doesn't fail anyway.
4222 pragma_disable_unused_but_set=no
4223 cat > $TMPC << EOF
4224 #pragma GCC diagnostic push
4225 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4226 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4227 #pragma GCC diagnostic pop
4229 int main(void) {
4230 return 0;
4233 if compile_prog "-Werror" "" ; then
4234 pragma_diagnostic_available=yes
4237 ########################################
4238 # check if we have valgrind/valgrind.h
4240 valgrind_h=no
4241 cat > $TMPC << EOF
4242 #include <valgrind/valgrind.h>
4243 int main(void) {
4244 return 0;
4247 if compile_prog "" "" ; then
4248 valgrind_h=yes
4251 ########################################
4252 # check if environ is declared
4254 has_environ=no
4255 cat > $TMPC << EOF
4256 #include <unistd.h>
4257 int main(void) {
4258 environ = 0;
4259 return 0;
4262 if compile_prog "" "" ; then
4263 has_environ=yes
4266 ########################################
4267 # check if cpuid.h is usable.
4269 cpuid_h=no
4270 cat > $TMPC << EOF
4271 #include <cpuid.h>
4272 int main(void) {
4273 unsigned a, b, c, d;
4274 int max = __get_cpuid_max(0, 0);
4276 if (max >= 1) {
4277 __cpuid(1, a, b, c, d);
4280 if (max >= 7) {
4281 __cpuid_count(7, 0, a, b, c, d);
4284 return 0;
4287 if compile_prog "" "" ; then
4288 cpuid_h=yes
4291 ########################################
4292 # check if __[u]int128_t is usable.
4294 int128=no
4295 cat > $TMPC << EOF
4296 #if defined(__clang_major__) && defined(__clang_minor__)
4297 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4298 # error __int128_t does not work in CLANG before 3.2
4299 # endif
4300 #endif
4301 __int128_t a;
4302 __uint128_t b;
4303 int main (void) {
4304 a = a + b;
4305 b = a * b;
4306 a = a * a;
4307 return 0;
4310 if compile_prog "" "" ; then
4311 int128=yes
4314 ########################################
4315 # check if getauxval is available.
4317 getauxval=no
4318 cat > $TMPC << EOF
4319 #include <sys/auxv.h>
4320 int main(void) {
4321 return getauxval(AT_HWCAP) == 0;
4324 if compile_prog "" "" ; then
4325 getauxval=yes
4328 ########################################
4329 # check if ccache is interfering with
4330 # semantic analysis of macros
4332 ccache_cpp2=no
4333 cat > $TMPC << EOF
4334 static const int Z = 1;
4335 #define fn() ({ Z; })
4336 #define TAUT(X) ((X) == Z)
4337 #define PAREN(X, Y) (X == Y)
4338 #define ID(X) (X)
4339 int main(int argc, char *argv[])
4341 int x = 0, y = 0;
4342 x = ID(x);
4343 x = fn();
4344 fn();
4345 if (PAREN(x, y)) return 0;
4346 if (TAUT(Z)) return 0;
4347 return 0;
4351 if ! compile_object "-Werror"; then
4352 ccache_cpp2=yes
4355 ##########################################
4356 # End of CC checks
4357 # After here, no more $cc or $ld runs
4359 if test "$gcov" = "yes" ; then
4360 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4361 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4362 elif test "$debug" = "no" ; then
4363 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4366 ##########################################
4367 # Do we have libnfs
4368 if test "$libnfs" != "no" ; then
4369 if $pkg_config --atleast-version=1.9.3 libnfs; then
4370 libnfs="yes"
4371 libnfs_libs=$($pkg_config --libs libnfs)
4372 LIBS="$LIBS $libnfs_libs"
4373 else
4374 if test "$libnfs" = "yes" ; then
4375 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4377 libnfs="no"
4381 # Disable zero malloc errors for official releases unless explicitly told to
4382 # enable/disable
4383 if test -z "$zero_malloc" ; then
4384 if test "$z_version" = "50" ; then
4385 zero_malloc="no"
4386 else
4387 zero_malloc="yes"
4391 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4392 if test "$werror" = "yes"; then
4393 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4396 if test "$solaris" = "no" ; then
4397 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
4398 LDFLAGS="-Wl,--warn-common $LDFLAGS"
4402 # test if pod2man has --utf8 option
4403 if pod2man --help | grep -q utf8; then
4404 POD2MAN="pod2man --utf8"
4405 else
4406 POD2MAN="pod2man"
4409 # Use large addresses, ASLR, no-SEH and DEP if available.
4410 if test "$mingw32" = "yes" ; then
4411 if test "$cpu" = i386; then
4412 LDFLAGS="-Wl,--large-address-aware $LDFLAGS"
4414 for flag in --dynamicbase --no-seh --nxcompat; do
4415 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4416 LDFLAGS="-Wl,$flag $LDFLAGS"
4418 done
4421 qemu_confdir=$sysconfdir$confsuffix
4422 qemu_moddir=$libdir$confsuffix
4423 qemu_datadir=$datadir$confsuffix
4424 qemu_localedir="$datadir/locale"
4426 tools=""
4427 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4428 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4429 tools="qemu-nbd\$(EXESUF) $tools"
4431 if test "$softmmu" = yes ; then
4432 if test "$virtfs" != no ; then
4433 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4434 virtfs=yes
4435 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4436 else
4437 if test "$virtfs" = yes; then
4438 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4440 virtfs=no
4444 if [ "$guest_agent" != "no" ]; then
4445 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4446 tools="qemu-ga\$(EXESUF) $tools"
4447 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4448 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4450 guest_agent=yes
4451 elif [ "$guest_agent" != yes ]; then
4452 guest_agent=no
4453 else
4454 error_exit "Guest agent is not supported on this platform"
4458 # Mac OS X ships with a broken assembler
4459 roms=
4460 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4461 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4462 "$softmmu" = yes ; then
4463 roms="optionrom"
4465 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4466 roms="$roms spapr-rtas"
4469 if test "$cpu" = "s390x" ; then
4470 roms="$roms s390-ccw"
4473 # Probe for the need for relocating the user-only binary.
4474 if test "$pie" = "no" ; then
4475 textseg_addr=
4476 case "$cpu" in
4477 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4478 # ??? Rationale for choosing this address
4479 textseg_addr=0x60000000
4481 mips)
4482 # A 256M aligned address, high in the address space, with enough
4483 # room for the code_gen_buffer above it before the stack.
4484 textseg_addr=0x60000000
4486 esac
4487 if [ -n "$textseg_addr" ]; then
4488 cat > $TMPC <<EOF
4489 int main(void) { return 0; }
4491 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4492 if ! compile_prog "" "$textseg_ldflags"; then
4493 # In case ld does not support -Ttext-segment, edit the default linker
4494 # script via sed to set the .text start addr. This is needed on FreeBSD
4495 # at least.
4496 $ld --verbose | sed \
4497 -e '1,/==================================================/d' \
4498 -e '/==================================================/,$d' \
4499 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4500 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4501 textseg_ldflags="-Wl,-T../config-host.ld"
4506 # prepend pixman and ftd flags after all config tests are done
4507 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4508 libs_softmmu="$pixman_libs $libs_softmmu"
4510 echo "Install prefix $prefix"
4511 echo "BIOS directory `eval echo $qemu_datadir`"
4512 echo "binary directory `eval echo $bindir`"
4513 echo "library directory `eval echo $libdir`"
4514 echo "module directory `eval echo $qemu_moddir`"
4515 echo "libexec directory `eval echo $libexecdir`"
4516 echo "include directory `eval echo $includedir`"
4517 echo "config directory `eval echo $sysconfdir`"
4518 if test "$mingw32" = "no" ; then
4519 echo "local state directory `eval echo $local_statedir`"
4520 echo "Manual directory `eval echo $mandir`"
4521 echo "ELF interp prefix $interp_prefix"
4522 else
4523 echo "local state directory queried at runtime"
4524 echo "Windows SDK $win_sdk"
4526 echo "Source path $source_path"
4527 echo "C compiler $cc"
4528 echo "Host C compiler $host_cc"
4529 echo "C++ compiler $cxx"
4530 echo "Objective-C compiler $objcc"
4531 echo "ARFLAGS $ARFLAGS"
4532 echo "CFLAGS $CFLAGS"
4533 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4534 echo "LDFLAGS $LDFLAGS"
4535 echo "make $make"
4536 echo "install $install"
4537 echo "python $python"
4538 if test "$slirp" = "yes" ; then
4539 echo "smbd $smbd"
4541 echo "module support $modules"
4542 echo "host CPU $cpu"
4543 echo "host big endian $bigendian"
4544 echo "target list $target_list"
4545 echo "tcg debug enabled $debug_tcg"
4546 echo "gprof enabled $gprof"
4547 echo "sparse enabled $sparse"
4548 echo "strip binaries $strip_opt"
4549 echo "profiler $profiler"
4550 echo "static build $static"
4551 if test "$darwin" = "yes" ; then
4552 echo "Cocoa support $cocoa"
4554 echo "pixman $pixman"
4555 echo "SDL support $sdl"
4556 echo "GTK support $gtk"
4557 echo "GNUTLS support $gnutls"
4558 echo "GNUTLS hash $gnutls_hash"
4559 echo "GNUTLS gcrypt $gnutls_gcrypt"
4560 echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
4561 echo "VTE support $vte"
4562 echo "curses support $curses"
4563 echo "curl support $curl"
4564 echo "mingw32 support $mingw32"
4565 echo "Audio drivers $audio_drv_list"
4566 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4567 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4568 echo "VirtFS support $virtfs"
4569 echo "VNC support $vnc"
4570 if test "$vnc" = "yes" ; then
4571 echo "VNC TLS support $vnc_tls"
4572 echo "VNC SASL support $vnc_sasl"
4573 echo "VNC JPEG support $vnc_jpeg"
4574 echo "VNC PNG support $vnc_png"
4576 if test -n "$sparc_cpu"; then
4577 echo "Target Sparc Arch $sparc_cpu"
4579 echo "xen support $xen"
4580 if test "$xen" = "yes" ; then
4581 echo "xen ctrl version $xen_ctrl_version"
4583 echo "brlapi support $brlapi"
4584 echo "bluez support $bluez"
4585 echo "Documentation $docs"
4586 echo "Tools $tools"
4587 echo "PIE $pie"
4588 echo "vde support $vde"
4589 echo "netmap support $netmap"
4590 echo "Linux AIO support $linux_aio"
4591 echo "(X)ATTR support $attr"
4592 echo "Install blobs $blobs"
4593 echo "KVM support $kvm"
4594 echo "RDMA support $rdma"
4595 echo "TCG interpreter $tcg_interpreter"
4596 echo "fdt support $fdt"
4597 echo "preadv support $preadv"
4598 echo "fdatasync $fdatasync"
4599 echo "madvise $madvise"
4600 echo "posix_madvise $posix_madvise"
4601 echo "sigev_thread_id $sigev_thread_id"
4602 echo "uuid support $uuid"
4603 echo "libcap-ng support $cap_ng"
4604 echo "vhost-net support $vhost_net"
4605 echo "vhost-scsi support $vhost_scsi"
4606 echo "Trace backends $trace_backends"
4607 if test "$trace_backend" = "simple"; then
4608 echo "Trace output file $trace_file-<pid>"
4610 if test "$spice" = "yes"; then
4611 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4612 else
4613 echo "spice support $spice"
4615 echo "rbd support $rbd"
4616 echo "xfsctl support $xfs"
4617 echo "nss used $smartcard_nss"
4618 echo "libusb $libusb"
4619 echo "usb net redir $usb_redir"
4620 echo "OpenGL support $opengl"
4621 echo "libiscsi support $libiscsi"
4622 echo "libnfs support $libnfs"
4623 echo "build guest agent $guest_agent"
4624 echo "QGA VSS support $guest_agent_with_vss"
4625 echo "QGA w32 disk info $guest_agent_ntddscsi"
4626 echo "seccomp support $seccomp"
4627 echo "coroutine backend $coroutine"
4628 echo "coroutine pool $coroutine_pool"
4629 echo "GlusterFS support $glusterfs"
4630 echo "Archipelago support $archipelago"
4631 echo "gcov $gcov_tool"
4632 echo "gcov enabled $gcov"
4633 echo "TPM support $tpm"
4634 echo "libssh2 support $libssh2"
4635 echo "TPM passthrough $tpm_passthrough"
4636 echo "QOM debugging $qom_cast_debug"
4637 echo "vhdx $vhdx"
4638 echo "lzo support $lzo"
4639 echo "snappy support $snappy"
4640 echo "bzip2 support $bzip2"
4641 echo "NUMA host support $numa"
4642 echo "tcmalloc support $tcmalloc"
4644 if test "$sdl_too_old" = "yes"; then
4645 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4648 config_host_mak="config-host.mak"
4650 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4652 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4653 echo >> $config_host_mak
4655 echo all: >> $config_host_mak
4656 echo "prefix=$prefix" >> $config_host_mak
4657 echo "bindir=$bindir" >> $config_host_mak
4658 echo "libdir=$libdir" >> $config_host_mak
4659 echo "libexecdir=$libexecdir" >> $config_host_mak
4660 echo "includedir=$includedir" >> $config_host_mak
4661 echo "mandir=$mandir" >> $config_host_mak
4662 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4663 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4664 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4665 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4666 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4667 if test "$mingw32" = "no" ; then
4668 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4670 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4671 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4672 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4673 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4674 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4676 echo "ARCH=$ARCH" >> $config_host_mak
4678 if test "$debug_tcg" = "yes" ; then
4679 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4681 if test "$strip_opt" = "yes" ; then
4682 echo "STRIP=${strip}" >> $config_host_mak
4684 if test "$bigendian" = "yes" ; then
4685 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4687 if test "$mingw32" = "yes" ; then
4688 echo "CONFIG_WIN32=y" >> $config_host_mak
4689 echo "CONFIG_INSTALLER=y" >> $config_host_mak
4690 rc_version=`cat "$source_path/VERSION"`
4691 version_major=${rc_version%%.*}
4692 rc_version=${rc_version#*.}
4693 version_minor=${rc_version%%.*}
4694 rc_version=${rc_version#*.}
4695 version_subminor=${rc_version%%.*}
4696 version_micro=0
4697 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4698 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4699 if test "$guest_agent_with_vss" = "yes" ; then
4700 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4701 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4703 if test "$guest_agent_ntddscsi" = "yes" ; then
4704 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4706 if test "$guest_agent_msi" != "no"; then
4707 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4708 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4709 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4710 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4711 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4712 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4713 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4715 else
4716 echo "CONFIG_POSIX=y" >> $config_host_mak
4719 if test "$linux" = "yes" ; then
4720 echo "CONFIG_LINUX=y" >> $config_host_mak
4723 if test "$darwin" = "yes" ; then
4724 echo "CONFIG_DARWIN=y" >> $config_host_mak
4727 if test "$aix" = "yes" ; then
4728 echo "CONFIG_AIX=y" >> $config_host_mak
4731 if test "$solaris" = "yes" ; then
4732 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4733 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4734 if test "$needs_libsunmath" = "yes" ; then
4735 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4738 if test "$haiku" = "yes" ; then
4739 echo "CONFIG_HAIKU=y" >> $config_host_mak
4741 if test "$static" = "yes" ; then
4742 echo "CONFIG_STATIC=y" >> $config_host_mak
4744 if test "$profiler" = "yes" ; then
4745 echo "CONFIG_PROFILER=y" >> $config_host_mak
4747 if test "$slirp" = "yes" ; then
4748 echo "CONFIG_SLIRP=y" >> $config_host_mak
4749 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4751 if test "$vde" = "yes" ; then
4752 echo "CONFIG_VDE=y" >> $config_host_mak
4754 if test "$netmap" = "yes" ; then
4755 echo "CONFIG_NETMAP=y" >> $config_host_mak
4757 if test "$l2tpv3" = "yes" ; then
4758 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4760 if test "$cap_ng" = "yes" ; then
4761 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4763 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4764 for drv in $audio_drv_list; do
4765 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4766 echo "$def=y" >> $config_host_mak
4767 done
4768 if test "$audio_pt_int" = "yes" ; then
4769 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4771 if test "$audio_win_int" = "yes" ; then
4772 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4774 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4775 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4776 if test "$vnc" = "yes" ; then
4777 echo "CONFIG_VNC=y" >> $config_host_mak
4779 if test "$vnc_tls" = "yes" ; then
4780 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4782 if test "$vnc_sasl" = "yes" ; then
4783 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4785 if test "$vnc_jpeg" = "yes" ; then
4786 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4788 if test "$vnc_png" = "yes" ; then
4789 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4791 if test "$fnmatch" = "yes" ; then
4792 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4794 if test "$uuid" = "yes" ; then
4795 echo "CONFIG_UUID=y" >> $config_host_mak
4797 if test "$xfs" = "yes" ; then
4798 echo "CONFIG_XFS=y" >> $config_host_mak
4800 qemu_version=`head "$source_path/VERSION"`
4801 echo "VERSION=$qemu_version" >>$config_host_mak
4802 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4803 echo "SRC_PATH=$source_path" >> $config_host_mak
4804 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4805 if [ "$docs" = "yes" ] ; then
4806 echo "BUILD_DOCS=yes" >> $config_host_mak
4808 if [ "$want_tools" = "yes" ] ; then
4809 echo "BUILD_TOOLS=yes" >> $config_host_mak
4811 if test "$modules" = "yes"; then
4812 # $shacmd can generate a hash started with digit, which the compiler doesn't
4813 # like as an symbol. So prefix it with an underscore
4814 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4815 echo "CONFIG_MODULES=y" >> $config_host_mak
4817 if test "$sdl" = "yes" ; then
4818 echo "CONFIG_SDL=y" >> $config_host_mak
4819 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4820 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4822 if test "$cocoa" = "yes" ; then
4823 echo "CONFIG_COCOA=y" >> $config_host_mak
4825 if test "$curses" = "yes" ; then
4826 echo "CONFIG_CURSES=y" >> $config_host_mak
4828 if test "$utimens" = "yes" ; then
4829 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4831 if test "$pipe2" = "yes" ; then
4832 echo "CONFIG_PIPE2=y" >> $config_host_mak
4834 if test "$accept4" = "yes" ; then
4835 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4837 if test "$splice" = "yes" ; then
4838 echo "CONFIG_SPLICE=y" >> $config_host_mak
4840 if test "$eventfd" = "yes" ; then
4841 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4843 if test "$fallocate" = "yes" ; then
4844 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4846 if test "$fallocate_punch_hole" = "yes" ; then
4847 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4849 if test "$fallocate_zero_range" = "yes" ; then
4850 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4852 if test "$posix_fallocate" = "yes" ; then
4853 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4855 if test "$sync_file_range" = "yes" ; then
4856 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4858 if test "$fiemap" = "yes" ; then
4859 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4861 if test "$dup3" = "yes" ; then
4862 echo "CONFIG_DUP3=y" >> $config_host_mak
4864 if test "$ppoll" = "yes" ; then
4865 echo "CONFIG_PPOLL=y" >> $config_host_mak
4867 if test "$prctl_pr_set_timerslack" = "yes" ; then
4868 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4870 if test "$epoll" = "yes" ; then
4871 echo "CONFIG_EPOLL=y" >> $config_host_mak
4873 if test "$epoll_create1" = "yes" ; then
4874 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4876 if test "$epoll_pwait" = "yes" ; then
4877 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4879 if test "$sendfile" = "yes" ; then
4880 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4882 if test "$timerfd" = "yes" ; then
4883 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4885 if test "$setns" = "yes" ; then
4886 echo "CONFIG_SETNS=y" >> $config_host_mak
4888 if test "$inotify" = "yes" ; then
4889 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4891 if test "$inotify1" = "yes" ; then
4892 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4894 if test "$byteswap_h" = "yes" ; then
4895 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4897 if test "$bswap_h" = "yes" ; then
4898 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4900 if test "$curl" = "yes" ; then
4901 echo "CONFIG_CURL=m" >> $config_host_mak
4902 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4903 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4905 if test "$brlapi" = "yes" ; then
4906 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4908 if test "$bluez" = "yes" ; then
4909 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4910 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4912 if test "$glib_subprocess" = "yes" ; then
4913 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4915 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4916 if test "$gtk" = "yes" ; then
4917 echo "CONFIG_GTK=y" >> $config_host_mak
4918 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4919 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4921 if test "$gnutls" = "yes" ; then
4922 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4924 if test "$gnutls_hash" = "yes" ; then
4925 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4927 if test "$gnutls_gcrypt" = "yes" ; then
4928 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4930 if test "$gnutls_nettle" = "yes" ; then
4931 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
4932 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
4934 if test "$vte" = "yes" ; then
4935 echo "CONFIG_VTE=y" >> $config_host_mak
4936 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4938 if test "$xen" = "yes" ; then
4939 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4940 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4942 if test "$linux_aio" = "yes" ; then
4943 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4945 if test "$attr" = "yes" ; then
4946 echo "CONFIG_ATTR=y" >> $config_host_mak
4948 if test "$libattr" = "yes" ; then
4949 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4951 if test "$virtfs" = "yes" ; then
4952 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4954 if test "$vhost_scsi" = "yes" ; then
4955 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4957 if test "$vhost_net" = "yes" ; then
4958 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4960 if test "$blobs" = "yes" ; then
4961 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4963 if test "$iovec" = "yes" ; then
4964 echo "CONFIG_IOVEC=y" >> $config_host_mak
4966 if test "$preadv" = "yes" ; then
4967 echo "CONFIG_PREADV=y" >> $config_host_mak
4969 if test "$fdt" = "yes" ; then
4970 echo "CONFIG_FDT=y" >> $config_host_mak
4972 if test "$signalfd" = "yes" ; then
4973 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4975 if test "$tcg_interpreter" = "yes" ; then
4976 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4978 if test "$fdatasync" = "yes" ; then
4979 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4981 if test "$madvise" = "yes" ; then
4982 echo "CONFIG_MADVISE=y" >> $config_host_mak
4984 if test "$posix_madvise" = "yes" ; then
4985 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4987 if test "$sigev_thread_id" = "yes" ; then
4988 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4991 if test "$spice" = "yes" ; then
4992 echo "CONFIG_SPICE=y" >> $config_host_mak
4995 if test "$smartcard_nss" = "yes" ; then
4996 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4997 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4998 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
5001 if test "$libusb" = "yes" ; then
5002 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5005 if test "$usb_redir" = "yes" ; then
5006 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5009 if test "$opengl" = "yes" ; then
5010 echo "CONFIG_OPENGL=y" >> $config_host_mak
5011 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5012 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5015 if test "$lzo" = "yes" ; then
5016 echo "CONFIG_LZO=y" >> $config_host_mak
5019 if test "$snappy" = "yes" ; then
5020 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5023 if test "$bzip2" = "yes" ; then
5024 echo "CONFIG_BZIP2=y" >> $config_host_mak
5025 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5028 if test "$libiscsi" = "yes" ; then
5029 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5030 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5031 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5034 if test "$libnfs" = "yes" ; then
5035 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5038 if test "$seccomp" = "yes"; then
5039 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5042 # XXX: suppress that
5043 if [ "$bsd" = "yes" ] ; then
5044 echo "CONFIG_BSD=y" >> $config_host_mak
5047 if test "$zero_malloc" = "yes" ; then
5048 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5050 if test "$qom_cast_debug" = "yes" ; then
5051 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5053 if test "$rbd" = "yes" ; then
5054 echo "CONFIG_RBD=m" >> $config_host_mak
5055 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5056 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5059 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5060 if test "$coroutine_pool" = "yes" ; then
5061 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5062 else
5063 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5066 if test "$open_by_handle_at" = "yes" ; then
5067 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5070 if test "$linux_magic_h" = "yes" ; then
5071 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5074 if test "$pragma_diagnostic_available" = "yes" ; then
5075 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5078 if test "$valgrind_h" = "yes" ; then
5079 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5082 if test "$has_environ" = "yes" ; then
5083 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5086 if test "$cpuid_h" = "yes" ; then
5087 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5090 if test "$int128" = "yes" ; then
5091 echo "CONFIG_INT128=y" >> $config_host_mak
5094 if test "$getauxval" = "yes" ; then
5095 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5098 if test "$glusterfs" = "yes" ; then
5099 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5100 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5101 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5104 if test "$glusterfs_discard" = "yes" ; then
5105 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5108 if test "$glusterfs_zerofill" = "yes" ; then
5109 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5112 if test "$archipelago" = "yes" ; then
5113 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5114 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5117 if test "$libssh2" = "yes" ; then
5118 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5119 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5120 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5123 if test "$vhdx" = "yes" ; then
5124 echo "CONFIG_VHDX=y" >> $config_host_mak
5127 # USB host support
5128 if test "$libusb" = "yes"; then
5129 echo "HOST_USB=libusb legacy" >> $config_host_mak
5130 else
5131 echo "HOST_USB=stub" >> $config_host_mak
5134 # TPM passthrough support?
5135 if test "$tpm" = "yes"; then
5136 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5137 if test "$tpm_passthrough" = "yes"; then
5138 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5142 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5143 if have_backend "nop"; then
5144 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5146 if have_backend "simple"; then
5147 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5148 # Set the appropriate trace file.
5149 trace_file="\"$trace_file-\" FMT_pid"
5151 if have_backend "stderr"; then
5152 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5154 if have_backend "ust"; then
5155 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5157 if have_backend "dtrace"; then
5158 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5159 if test "$trace_backend_stap" = "yes" ; then
5160 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5163 if have_backend "ftrace"; then
5164 if test "$linux" = "yes" ; then
5165 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5166 else
5167 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5170 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5172 if test "$rdma" = "yes" ; then
5173 echo "CONFIG_RDMA=y" >> $config_host_mak
5176 # Hold two types of flag:
5177 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5178 # a thread we have a handle to
5179 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5180 # platform
5181 if test "$pthread_setname_np" = "yes" ; then
5182 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5183 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5186 if test "$tcg_interpreter" = "yes"; then
5187 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5188 elif test "$ARCH" = "sparc64" ; then
5189 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5190 elif test "$ARCH" = "s390x" ; then
5191 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5192 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5193 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5194 elif test "$ARCH" = "ppc64" ; then
5195 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5196 else
5197 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5199 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5201 echo "TOOLS=$tools" >> $config_host_mak
5202 echo "ROMS=$roms" >> $config_host_mak
5203 echo "MAKE=$make" >> $config_host_mak
5204 echo "INSTALL=$install" >> $config_host_mak
5205 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5206 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5207 if test -n "$libtool"; then
5208 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5209 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5210 else
5211 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5212 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5214 echo "PYTHON=$python" >> $config_host_mak
5215 echo "CC=$cc" >> $config_host_mak
5216 if $iasl -h > /dev/null 2>&1; then
5217 echo "IASL=$iasl" >> $config_host_mak
5219 echo "CC_I386=$cc_i386" >> $config_host_mak
5220 echo "HOST_CC=$host_cc" >> $config_host_mak
5221 echo "CXX=$cxx" >> $config_host_mak
5222 echo "OBJCC=$objcc" >> $config_host_mak
5223 echo "AR=$ar" >> $config_host_mak
5224 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5225 echo "AS=$as" >> $config_host_mak
5226 echo "CPP=$cpp" >> $config_host_mak
5227 echo "OBJCOPY=$objcopy" >> $config_host_mak
5228 echo "LD=$ld" >> $config_host_mak
5229 echo "NM=$nm" >> $config_host_mak
5230 echo "WINDRES=$windres" >> $config_host_mak
5231 echo "LIBTOOL=$libtool" >> $config_host_mak
5232 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5233 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5234 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5235 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5236 if test "$sparse" = "yes" ; then
5237 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5238 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5239 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5240 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5241 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5243 if test "$cross_prefix" != ""; then
5244 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5245 else
5246 echo "AUTOCONF_HOST := " >> $config_host_mak
5248 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5249 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5250 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5251 echo "LIBS+=$LIBS" >> $config_host_mak
5252 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5253 echo "EXESUF=$EXESUF" >> $config_host_mak
5254 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5255 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5256 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5257 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5258 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5259 if test "$gcov" = "yes" ; then
5260 echo "CONFIG_GCOV=y" >> $config_host_mak
5261 echo "GCOV=$gcov_tool" >> $config_host_mak
5264 # use included Linux headers
5265 if test "$linux" = "yes" ; then
5266 mkdir -p linux-headers
5267 case "$cpu" in
5268 i386|x86_64|x32)
5269 linux_arch=x86
5271 ppcemb|ppc|ppc64)
5272 linux_arch=powerpc
5274 s390x)
5275 linux_arch=s390
5277 aarch64)
5278 linux_arch=arm64
5280 mips64)
5281 linux_arch=mips
5284 # For most CPUs the kernel architecture name and QEMU CPU name match.
5285 linux_arch="$cpu"
5287 esac
5288 # For non-KVM architectures we will not have asm headers
5289 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5290 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5294 for target in $target_list; do
5295 target_dir="$target"
5296 config_target_mak=$target_dir/config-target.mak
5297 target_name=`echo $target | cut -d '-' -f 1`
5298 target_bigendian="no"
5300 case "$target_name" in
5301 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5302 target_bigendian=yes
5304 esac
5305 target_softmmu="no"
5306 target_user_only="no"
5307 target_linux_user="no"
5308 target_bsd_user="no"
5309 case "$target" in
5310 ${target_name}-softmmu)
5311 target_softmmu="yes"
5313 ${target_name}-linux-user)
5314 if test "$linux" != "yes" ; then
5315 error_exit "Target '$target' is only available on a Linux host"
5317 target_user_only="yes"
5318 target_linux_user="yes"
5320 ${target_name}-bsd-user)
5321 if test "$bsd" != "yes" ; then
5322 error_exit "Target '$target' is only available on a BSD host"
5324 target_user_only="yes"
5325 target_bsd_user="yes"
5328 error_exit "Target '$target' not recognised"
5329 exit 1
5331 esac
5333 mkdir -p $target_dir
5334 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5336 bflt="no"
5337 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5338 gdb_xml_files=""
5340 TARGET_ARCH="$target_name"
5341 TARGET_BASE_ARCH=""
5342 TARGET_ABI_DIR=""
5344 case "$target_name" in
5345 i386)
5347 x86_64)
5348 TARGET_BASE_ARCH=i386
5350 alpha)
5352 arm|armeb)
5353 TARGET_ARCH=arm
5354 bflt="yes"
5355 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5357 aarch64)
5358 TARGET_BASE_ARCH=arm
5359 bflt="yes"
5360 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5362 cris)
5364 lm32)
5366 m68k)
5367 bflt="yes"
5368 gdb_xml_files="cf-core.xml cf-fp.xml"
5370 microblaze|microblazeel)
5371 TARGET_ARCH=microblaze
5372 bflt="yes"
5374 mips|mipsel)
5375 TARGET_ARCH=mips
5376 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5378 mipsn32|mipsn32el)
5379 TARGET_ARCH=mips64
5380 TARGET_BASE_ARCH=mips
5381 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5382 echo "TARGET_ABI32=y" >> $config_target_mak
5384 mips64|mips64el)
5385 TARGET_ARCH=mips64
5386 TARGET_BASE_ARCH=mips
5387 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5389 moxie)
5391 or32)
5392 TARGET_ARCH=openrisc
5393 TARGET_BASE_ARCH=openrisc
5395 ppc)
5396 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5398 ppcemb)
5399 TARGET_BASE_ARCH=ppc
5400 TARGET_ABI_DIR=ppc
5401 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5403 ppc64)
5404 TARGET_BASE_ARCH=ppc
5405 TARGET_ABI_DIR=ppc
5406 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5408 ppc64le)
5409 TARGET_ARCH=ppc64
5410 TARGET_BASE_ARCH=ppc
5411 TARGET_ABI_DIR=ppc
5412 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5414 ppc64abi32)
5415 TARGET_ARCH=ppc64
5416 TARGET_BASE_ARCH=ppc
5417 TARGET_ABI_DIR=ppc
5418 echo "TARGET_ABI32=y" >> $config_target_mak
5419 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5421 sh4|sh4eb)
5422 TARGET_ARCH=sh4
5423 bflt="yes"
5425 sparc)
5427 sparc64)
5428 TARGET_BASE_ARCH=sparc
5430 sparc32plus)
5431 TARGET_ARCH=sparc64
5432 TARGET_BASE_ARCH=sparc
5433 TARGET_ABI_DIR=sparc
5434 echo "TARGET_ABI32=y" >> $config_target_mak
5436 s390x)
5437 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5439 tricore)
5441 unicore32)
5443 xtensa|xtensaeb)
5444 TARGET_ARCH=xtensa
5447 error_exit "Unsupported target CPU"
5449 esac
5450 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5451 if [ "$TARGET_BASE_ARCH" = "" ]; then
5452 TARGET_BASE_ARCH=$TARGET_ARCH
5455 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5457 upper() {
5458 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5461 target_arch_name="`upper $TARGET_ARCH`"
5462 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5463 echo "TARGET_NAME=$target_name" >> $config_target_mak
5464 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5465 if [ "$TARGET_ABI_DIR" = "" ]; then
5466 TARGET_ABI_DIR=$TARGET_ARCH
5468 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5469 if [ "$HOST_VARIANT_DIR" != "" ]; then
5470 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5472 case "$target_name" in
5473 i386|x86_64)
5474 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5475 echo "CONFIG_XEN=y" >> $config_target_mak
5476 if test "$xen_pci_passthrough" = yes; then
5477 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5482 esac
5483 case "$target_name" in
5484 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
5485 # Make sure the target and host cpus are compatible
5486 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5487 \( "$target_name" = "$cpu" -o \
5488 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5489 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5490 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5491 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
5492 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
5493 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
5494 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5495 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5496 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
5497 echo "CONFIG_KVM=y" >> $config_target_mak
5498 if test "$vhost_net" = "yes" ; then
5499 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5502 esac
5503 if test "$target_bigendian" = "yes" ; then
5504 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5506 if test "$target_softmmu" = "yes" ; then
5507 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5509 if test "$target_user_only" = "yes" ; then
5510 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5511 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5513 if test "$target_linux_user" = "yes" ; then
5514 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5516 list=""
5517 if test ! -z "$gdb_xml_files" ; then
5518 for x in $gdb_xml_files; do
5519 list="$list $source_path/gdb-xml/$x"
5520 done
5521 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5524 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5525 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5527 if test "$target_bsd_user" = "yes" ; then
5528 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5531 # generate QEMU_CFLAGS/LDFLAGS for targets
5533 cflags=""
5534 ldflags=""
5536 for i in $ARCH $TARGET_BASE_ARCH ; do
5537 case "$i" in
5538 alpha)
5539 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5540 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5542 aarch64)
5543 if test -n "${cxx}"; then
5544 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5545 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5548 arm)
5549 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5550 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5551 if test -n "${cxx}"; then
5552 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5553 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5556 cris)
5557 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5558 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5560 hppa)
5561 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5562 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5564 i386|x86_64|x32)
5565 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5566 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5568 ia64*)
5569 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5570 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5572 lm32)
5573 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5574 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5576 m68k)
5577 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5578 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5580 microblaze*)
5581 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5582 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5584 mips*)
5585 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5586 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5588 moxie*)
5589 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5590 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5592 or32)
5593 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5594 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5596 ppc*)
5597 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5598 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5600 s390*)
5601 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5602 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5604 sh4)
5605 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5606 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5608 sparc*)
5609 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5610 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5612 xtensa*)
5613 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5614 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5616 esac
5617 done
5618 if test "$tcg_interpreter" = "yes" ; then
5619 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5620 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5623 case "$ARCH" in
5624 alpha)
5625 # Ensure there's only a single GP
5626 cflags="-msmall-data $cflags"
5628 esac
5630 if test "$gprof" = "yes" ; then
5631 echo "TARGET_GPROF=yes" >> $config_target_mak
5632 if test "$target_linux_user" = "yes" ; then
5633 cflags="-p $cflags"
5634 ldflags="-p $ldflags"
5636 if test "$target_softmmu" = "yes" ; then
5637 ldflags="-p $ldflags"
5638 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5642 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5643 ldflags="$ldflags $textseg_ldflags"
5646 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5647 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5649 done # for target in $targets
5651 if [ "$pixman" = "internal" ]; then
5652 echo "config-host.h: subdir-pixman" >> $config_host_mak
5655 if [ "$dtc_internal" = "yes" ]; then
5656 echo "config-host.h: subdir-dtc" >> $config_host_mak
5659 if test "$numa" = "yes"; then
5660 echo "CONFIG_NUMA=y" >> $config_host_mak
5663 if test "$ccache_cpp2" = "yes"; then
5664 echo "export CCACHE_CPP2=y" >> $config_host_mak
5667 # build tree in object directory in case the source is not in the current directory
5668 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5669 DIRS="$DIRS fsdev"
5670 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5671 DIRS="$DIRS roms/seabios roms/vgabios"
5672 DIRS="$DIRS qapi-generated"
5673 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5674 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5675 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5676 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5677 FILES="$FILES pc-bios/spapr-rtas/Makefile"
5678 FILES="$FILES pc-bios/s390-ccw/Makefile"
5679 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5680 FILES="$FILES pc-bios/qemu-icon.bmp"
5681 for bios_file in \
5682 $source_path/pc-bios/*.bin \
5683 $source_path/pc-bios/*.aml \
5684 $source_path/pc-bios/*.rom \
5685 $source_path/pc-bios/*.dtb \
5686 $source_path/pc-bios/*.img \
5687 $source_path/pc-bios/openbios-* \
5688 $source_path/pc-bios/u-boot.* \
5689 $source_path/pc-bios/palcode-*
5691 FILES="$FILES pc-bios/`basename $bios_file`"
5692 done
5693 for test_file in `find $source_path/tests/acpi-test-data -type f`
5695 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5696 done
5697 mkdir -p $DIRS
5698 for f in $FILES ; do
5699 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5700 symlink "$source_path/$f" "$f"
5702 done
5704 # temporary config to build submodules
5705 for rom in seabios vgabios ; do
5706 config_mak=roms/$rom/config.mak
5707 echo "# Automatically generated by configure - do not modify" > $config_mak
5708 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5709 echo "AS=$as" >> $config_mak
5710 echo "CC=$cc" >> $config_mak
5711 echo "BCC=bcc" >> $config_mak
5712 echo "CPP=$cpp" >> $config_mak
5713 echo "OBJCOPY=objcopy" >> $config_mak
5714 echo "IASL=$iasl" >> $config_mak
5715 echo "LD=$ld" >> $config_mak
5716 done
5718 # set up qemu-iotests in this build directory
5719 iotests_common_env="tests/qemu-iotests/common.env"
5720 iotests_check="tests/qemu-iotests/check"
5722 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5723 echo >> "$iotests_common_env"
5724 echo "export PYTHON='$python'" >> "$iotests_common_env"
5726 if [ ! -e "$iotests_check" ]; then
5727 symlink "$source_path/$iotests_check" "$iotests_check"
5730 # Save the configure command line for later reuse.
5731 cat <<EOD >config.status
5732 #!/bin/sh
5733 # Generated by configure.
5734 # Run this file to recreate the current configuration.
5735 # Compiler output produced by configure, useful for debugging
5736 # configure, is in config.log if it exists.
5738 printf "exec" >>config.status
5739 printf " '%s'" "$0" "$@" >>config.status
5740 echo >>config.status
5741 chmod +x config.status
5743 rm -r "$TMPDIR1"