fix bad indentation in pcie_cap_slot_write_config()
[qemu/ar7.git] / configure
blob60cbd84fffbb3a2b1e840ca487c787e50b09ddeb
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 # Don't allow CCACHE, if present, to use cached results of compile tests!
12 export CCACHE_RECACHE=yes
14 # Temporary directory used for files created while
15 # configure runs. Since it is in the build directory
16 # we can safely blow away any previous version of it
17 # (and we need not jump through hoops to try to delete
18 # it when configure exits.)
19 TMPDIR1="config-temp"
20 rm -rf "${TMPDIR1}"
21 mkdir -p "${TMPDIR1}"
22 if [ $? -ne 0 ]; then
23 echo "ERROR: failed to create temporary directory"
24 exit 1
27 TMPB="qemu-conf"
28 TMPC="${TMPDIR1}/${TMPB}.c"
29 TMPO="${TMPDIR1}/${TMPB}.o"
30 TMPCXX="${TMPDIR1}/${TMPB}.cxx"
31 TMPL="${TMPDIR1}/${TMPB}.lo"
32 TMPA="${TMPDIR1}/lib${TMPB}.la"
33 TMPE="${TMPDIR1}/${TMPB}.exe"
35 rm -f config.log
37 # Print a helpful header at the top of config.log
38 echo "# QEMU configure log $(date)" >> config.log
39 printf "# Configured with:" >> config.log
40 printf " '%s'" "$0" "$@" >> config.log
41 echo >> config.log
42 echo "#" >> config.log
44 error_exit() {
45 echo
46 echo "ERROR: $1"
47 while test -n "$2"; do
48 echo " $2"
49 shift
50 done
51 echo
52 exit 1
55 do_compiler() {
56 # Run the compiler, capturing its output to the log. First argument
57 # is compiler binary to execute.
58 local compiler="$1"
59 shift
60 echo $compiler "$@" >> config.log
61 $compiler "$@" >> config.log 2>&1 || return $?
62 # Test passed. If this is an --enable-werror build, rerun
63 # the test with -Werror and bail out if it fails. This
64 # makes warning-generating-errors in configure test code
65 # obvious to developers.
66 if test "$werror" != "yes"; then
67 return 0
69 # Don't bother rerunning the compile if we were already using -Werror
70 case "$*" in
71 *-Werror*)
72 return 0
74 esac
75 echo $compiler -Werror "$@" >> config.log
76 $compiler -Werror "$@" >> config.log 2>&1 && return $?
77 error_exit "configure test passed without -Werror but failed with -Werror." \
78 "This is probably a bug in the configure script. The failing command" \
79 "will be at the bottom of config.log." \
80 "You can run configure with --disable-werror to bypass this check."
83 do_cc() {
84 do_compiler "$cc" "$@"
87 do_cxx() {
88 do_compiler "$cxx" "$@"
91 update_cxxflags() {
92 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
93 # options which some versions of GCC's C++ compiler complain about
94 # because they only make sense for C programs.
95 QEMU_CXXFLAGS=
96 for arg in $QEMU_CFLAGS; do
97 case $arg in
98 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
99 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
102 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
104 esac
105 done
108 compile_object() {
109 local_cflags="$1"
110 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
113 compile_prog() {
114 local_cflags="$1"
115 local_ldflags="$2"
116 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
119 do_libtool() {
120 local mode=$1
121 shift
122 # Run the compiler, capturing its output to the log.
123 echo $libtool $mode --tag=CC $cc "$@" >> config.log
124 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
125 # Test passed. If this is an --enable-werror build, rerun
126 # the test with -Werror and bail out if it fails. This
127 # makes warning-generating-errors in configure test code
128 # obvious to developers.
129 if test "$werror" != "yes"; then
130 return 0
132 # Don't bother rerunning the compile if we were already using -Werror
133 case "$*" in
134 *-Werror*)
135 return 0
137 esac
138 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
139 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
140 error_exit "configure test passed without -Werror but failed with -Werror." \
141 "This is probably a bug in the configure script. The failing command" \
142 "will be at the bottom of config.log." \
143 "You can run configure with --disable-werror to bypass this check."
146 libtool_prog() {
147 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
148 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
151 # symbolically link $1 to $2. Portable version of "ln -sf".
152 symlink() {
153 rm -rf "$2"
154 mkdir -p "$(dirname "$2")"
155 ln -s "$1" "$2"
158 # check whether a command is available to this shell (may be either an
159 # executable or a builtin)
160 has() {
161 type "$1" >/dev/null 2>&1
164 # search for an executable in PATH
165 path_of() {
166 local_command="$1"
167 local_ifs="$IFS"
168 local_dir=""
170 # pathname has a dir component?
171 if [ "${local_command#*/}" != "$local_command" ]; then
172 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
173 echo "$local_command"
174 return 0
177 if [ -z "$local_command" ]; then
178 return 1
181 IFS=:
182 for local_dir in $PATH; do
183 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
184 echo "$local_dir/$local_command"
185 IFS="${local_ifs:-$(printf ' \t\n')}"
186 return 0
188 done
189 # not found
190 IFS="${local_ifs:-$(printf ' \t\n')}"
191 return 1
194 have_backend () {
195 echo "$trace_backends" | grep "$1" >/dev/null
198 # default parameters
199 source_path=`dirname "$0"`
200 cpu=""
201 iasl="iasl"
202 interp_prefix="/usr/gnemul/qemu-%M"
203 static="no"
204 cross_prefix=""
205 audio_drv_list=""
206 block_drv_rw_whitelist=""
207 block_drv_ro_whitelist=""
208 host_cc="cc"
209 libs_softmmu=""
210 libs_tools=""
211 audio_pt_int=""
212 audio_win_int=""
213 cc_i386=i386-pc-linux-gnu-gcc
214 libs_qga=""
215 debug_info="yes"
216 stack_protector=""
218 # Don't accept a target_list environment variable.
219 unset target_list
221 # Default value for a variable defining feature "foo".
222 # * foo="no" feature will only be used if --enable-foo arg is given
223 # * foo="" feature will be searched for, and if found, will be used
224 # unless --disable-foo is given
225 # * foo="yes" this value will only be set by --enable-foo flag.
226 # feature will searched for,
227 # if not found, configure exits with error
229 # Always add --enable-foo and --disable-foo command line args.
230 # Distributions want to ensure that several features are compiled in, and it
231 # is impossible without a --enable-foo that exits if a feature is not found.
233 bluez=""
234 brlapi=""
235 curl=""
236 curses=""
237 docs=""
238 fdt=""
239 netmap="no"
240 pixman=""
241 sdl=""
242 sdlabi="1.2"
243 virtfs=""
244 vnc="yes"
245 sparse="no"
246 uuid=""
247 vde=""
248 vnc_sasl=""
249 vnc_jpeg=""
250 vnc_png=""
251 xen=""
252 xen_ctrl_version=""
253 xen_pci_passthrough=""
254 linux_aio=""
255 cap_ng=""
256 attr=""
257 libattr=""
258 xfs=""
260 vhost_net="no"
261 vhost_scsi="no"
262 kvm="no"
263 rdma=""
264 gprof="no"
265 debug_tcg="no"
266 debug="no"
267 fortify_source=""
268 strip_opt="yes"
269 tcg_interpreter="no"
270 bigendian="no"
271 mingw32="no"
272 gcov="no"
273 gcov_tool="gcov"
274 EXESUF=""
275 DSOSUF=".so"
276 LDFLAGS_SHARED="-shared"
277 modules="no"
278 prefix="/usr/local"
279 mandir="\${prefix}/share/man"
280 datadir="\${prefix}/share"
281 qemu_docdir="\${prefix}/share/doc/qemu"
282 bindir="\${prefix}/bin"
283 libdir="\${prefix}/lib"
284 libexecdir="\${prefix}/libexec"
285 includedir="\${prefix}/include"
286 sysconfdir="\${prefix}/etc"
287 local_statedir="\${prefix}/var"
288 confsuffix="/qemu"
289 slirp="yes"
290 oss_lib=""
291 bsd="no"
292 linux="no"
293 solaris="no"
294 profiler="no"
295 cocoa="no"
296 softmmu="yes"
297 linux_user="no"
298 bsd_user="no"
299 aix="no"
300 blobs="yes"
301 pkgversion=""
302 pie=""
303 zero_malloc=""
304 qom_cast_debug="yes"
305 trace_backends="nop"
306 trace_file="trace"
307 spice=""
308 rbd=""
309 smartcard=""
310 libusb=""
311 usb_redir=""
312 opengl=""
313 zlib="yes"
314 lzo=""
315 snappy=""
316 bzip2=""
317 guest_agent=""
318 guest_agent_with_vss="no"
319 guest_agent_ntddscsi="no"
320 guest_agent_msi=""
321 vss_win32_sdk=""
322 win_sdk="no"
323 want_tools="yes"
324 libiscsi=""
325 libnfs=""
326 coroutine=""
327 coroutine_pool=""
328 seccomp=""
329 glusterfs=""
330 glusterfs_discard="no"
331 glusterfs_zerofill="no"
332 archipelago="no"
333 gtk=""
334 gtkabi=""
335 gtk_gl="no"
336 gnutls=""
337 gnutls_hash=""
338 nettle=""
339 gcrypt=""
340 vte=""
341 virglrenderer=""
342 tpm="yes"
343 libssh2=""
344 vhdx=""
345 numa=""
346 tcmalloc="no"
347 jemalloc="no"
349 # parse CC options first
350 for opt do
351 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
352 case "$opt" in
353 --cross-prefix=*) cross_prefix="$optarg"
355 --cc=*) CC="$optarg"
357 --cxx=*) CXX="$optarg"
359 --source-path=*) source_path="$optarg"
361 --cpu=*) cpu="$optarg"
363 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
364 EXTRA_CFLAGS="$optarg"
366 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
367 EXTRA_LDFLAGS="$optarg"
369 --enable-debug-info) debug_info="yes"
371 --disable-debug-info) debug_info="no"
373 esac
374 done
375 # OS specific
376 # Using uname is really, really broken. Once we have the right set of checks
377 # we can eliminate its usage altogether.
379 # Preferred compiler:
380 # ${CC} (if set)
381 # ${cross_prefix}gcc (if cross-prefix specified)
382 # system compiler
383 if test -z "${CC}${cross_prefix}"; then
384 cc="$host_cc"
385 else
386 cc="${CC-${cross_prefix}gcc}"
389 if test -z "${CXX}${cross_prefix}"; then
390 cxx="c++"
391 else
392 cxx="${CXX-${cross_prefix}g++}"
395 ar="${AR-${cross_prefix}ar}"
396 as="${AS-${cross_prefix}as}"
397 cpp="${CPP-$cc -E}"
398 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
399 ld="${LD-${cross_prefix}ld}"
400 libtool="${LIBTOOL-${cross_prefix}libtool}"
401 nm="${NM-${cross_prefix}nm}"
402 strip="${STRIP-${cross_prefix}strip}"
403 windres="${WINDRES-${cross_prefix}windres}"
404 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
405 query_pkg_config() {
406 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
408 pkg_config=query_pkg_config
409 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
410 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
412 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
413 ARFLAGS="${ARFLAGS-rv}"
415 # default flags for all hosts
416 QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
417 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
418 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
419 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
420 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
421 if test "$debug_info" = "yes"; then
422 CFLAGS="-g $CFLAGS"
423 LDFLAGS="-g $LDFLAGS"
426 # make source path absolute
427 source_path=`cd "$source_path"; pwd`
429 # running configure in the source tree?
430 # we know that's the case if configure is there.
431 if test -f "./configure"; then
432 pwd_is_source_path="y"
433 else
434 pwd_is_source_path="n"
437 check_define() {
438 cat > $TMPC <<EOF
439 #if !defined($1)
440 #error $1 not defined
441 #endif
442 int main(void) { return 0; }
444 compile_object
447 check_include() {
448 cat > $TMPC <<EOF
449 #include <$1>
450 int main(void) { return 0; }
452 compile_object
455 write_c_skeleton() {
456 cat > $TMPC <<EOF
457 int main(void) { return 0; }
461 if check_define __linux__ ; then
462 targetos="Linux"
463 elif check_define _WIN32 ; then
464 targetos='MINGW32'
465 elif check_define __OpenBSD__ ; then
466 targetos='OpenBSD'
467 elif check_define __sun__ ; then
468 targetos='SunOS'
469 elif check_define __HAIKU__ ; then
470 targetos='Haiku'
471 else
472 targetos=`uname -s`
475 # Some host OSes need non-standard checks for which CPU to use.
476 # Note that these checks are broken for cross-compilation: if you're
477 # cross-compiling to one of these OSes then you'll need to specify
478 # the correct CPU with the --cpu option.
479 case $targetos in
480 Darwin)
481 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
482 # run 64-bit userspace code.
483 # If the user didn't specify a CPU explicitly and the kernel says this is
484 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
485 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
486 cpu="x86_64"
489 SunOS)
490 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
491 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
492 cpu="x86_64"
494 esac
496 if test ! -z "$cpu" ; then
497 # command line argument
499 elif check_define __i386__ ; then
500 cpu="i386"
501 elif check_define __x86_64__ ; then
502 if check_define __ILP32__ ; then
503 cpu="x32"
504 else
505 cpu="x86_64"
507 elif check_define __sparc__ ; then
508 if check_define __arch64__ ; then
509 cpu="sparc64"
510 else
511 cpu="sparc"
513 elif check_define _ARCH_PPC ; then
514 if check_define _ARCH_PPC64 ; then
515 cpu="ppc64"
516 else
517 cpu="ppc"
519 elif check_define __mips__ ; then
520 cpu="mips"
521 elif check_define __ia64__ ; then
522 cpu="ia64"
523 elif check_define __s390__ ; then
524 if check_define __s390x__ ; then
525 cpu="s390x"
526 else
527 cpu="s390"
529 elif check_define __arm__ ; then
530 cpu="arm"
531 elif check_define __aarch64__ ; then
532 cpu="aarch64"
533 elif check_define __hppa__ ; then
534 cpu="hppa"
535 else
536 cpu=`uname -m`
539 ARCH=
540 # Normalise host CPU name and set ARCH.
541 # Note that this case should only have supported host CPUs, not guests.
542 case "$cpu" in
543 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
544 cpu="$cpu"
546 i386|i486|i586|i686|i86pc|BePC)
547 cpu="i386"
549 x86_64|amd64)
550 cpu="x86_64"
552 armv*b|armv*l|arm)
553 cpu="arm"
555 aarch64)
556 cpu="aarch64"
558 mips*)
559 cpu="mips"
561 sparc|sun4[cdmuv])
562 cpu="sparc"
565 # This will result in either an error or falling back to TCI later
566 ARCH=unknown
568 esac
569 if test -z "$ARCH"; then
570 ARCH="$cpu"
573 # OS specific
575 # host *BSD for user mode
576 HOST_VARIANT_DIR=""
578 case $targetos in
579 CYGWIN*)
580 mingw32="yes"
581 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
582 audio_possible_drivers="sdl"
583 audio_drv_list="sdl"
585 MINGW32*)
586 mingw32="yes"
587 audio_possible_drivers="dsound sdl"
588 if check_include dsound.h; then
589 audio_drv_list="dsound"
590 else
591 audio_drv_list=""
594 GNU/kFreeBSD)
595 bsd="yes"
596 audio_drv_list="oss"
597 audio_possible_drivers="oss sdl pa"
599 FreeBSD)
600 bsd="yes"
601 make="${MAKE-gmake}"
602 audio_drv_list="oss"
603 audio_possible_drivers="oss sdl pa"
604 # needed for kinfo_getvmmap(3) in libutil.h
605 LIBS="-lutil $LIBS"
606 netmap="" # enable netmap autodetect
607 HOST_VARIANT_DIR="freebsd"
609 DragonFly)
610 bsd="yes"
611 make="${MAKE-gmake}"
612 audio_drv_list="oss"
613 audio_possible_drivers="oss sdl pa"
614 HOST_VARIANT_DIR="dragonfly"
616 NetBSD)
617 bsd="yes"
618 make="${MAKE-gmake}"
619 audio_drv_list="oss"
620 audio_possible_drivers="oss sdl"
621 oss_lib="-lossaudio"
622 HOST_VARIANT_DIR="netbsd"
624 OpenBSD)
625 bsd="yes"
626 make="${MAKE-gmake}"
627 audio_drv_list="sdl"
628 audio_possible_drivers="sdl"
629 HOST_VARIANT_DIR="openbsd"
631 Darwin)
632 bsd="yes"
633 darwin="yes"
634 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
635 if [ "$cpu" = "x86_64" ] ; then
636 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
637 LDFLAGS="-arch x86_64 $LDFLAGS"
639 cocoa="yes"
640 audio_drv_list="coreaudio"
641 audio_possible_drivers="coreaudio sdl"
642 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
643 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
644 # Disable attempts to use ObjectiveC features in os/object.h since they
645 # won't work when we're compiling with gcc as a C compiler.
646 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
647 HOST_VARIANT_DIR="darwin"
649 SunOS)
650 solaris="yes"
651 make="${MAKE-gmake}"
652 install="${INSTALL-ginstall}"
653 ld="gld"
654 smbd="${SMBD-/usr/sfw/sbin/smbd}"
655 needs_libsunmath="no"
656 solarisrev=`uname -r | cut -f2 -d.`
657 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
658 if test "$solarisrev" -le 9 ; then
659 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
660 needs_libsunmath="yes"
661 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
662 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
663 LIBS="-lsunmath $LIBS"
664 else
665 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
666 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
667 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
668 "Studio 11 can be downloaded from www.sun.com."
672 if test -f /usr/include/sys/soundcard.h ; then
673 audio_drv_list="oss"
675 audio_possible_drivers="oss sdl"
676 # needed for CMSG_ macros in sys/socket.h
677 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
678 # needed for TIOCWIN* defines in termios.h
679 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
680 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
681 solarisnetlibs="-lsocket -lnsl -lresolv"
682 LIBS="$solarisnetlibs $LIBS"
683 libs_qga="$solarisnetlibs $libs_qga"
685 AIX)
686 aix="yes"
687 make="${MAKE-gmake}"
689 Haiku)
690 haiku="yes"
691 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
692 LIBS="-lposix_error_mapper -lnetwork $LIBS"
695 audio_drv_list="oss"
696 audio_possible_drivers="oss alsa sdl pa"
697 linux="yes"
698 linux_user="yes"
699 kvm="yes"
700 vhost_net="yes"
701 vhost_scsi="yes"
702 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
704 esac
706 if [ "$bsd" = "yes" ] ; then
707 if [ "$darwin" != "yes" ] ; then
708 bsd_user="yes"
712 : ${make=${MAKE-make}}
713 : ${install=${INSTALL-install}}
714 : ${python=${PYTHON-python}}
715 : ${smbd=${SMBD-/usr/sbin/smbd}}
717 # Default objcc to clang if available, otherwise use CC
718 if has clang; then
719 objcc=clang
720 else
721 objcc="$cc"
724 if test "$mingw32" = "yes" ; then
725 EXESUF=".exe"
726 DSOSUF=".dll"
727 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
728 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
729 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
730 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
731 write_c_skeleton;
732 if compile_prog "" "-liberty" ; then
733 LIBS="-liberty $LIBS"
735 prefix="c:/Program Files/QEMU"
736 mandir="\${prefix}"
737 datadir="\${prefix}"
738 qemu_docdir="\${prefix}"
739 bindir="\${prefix}"
740 sysconfdir="\${prefix}"
741 local_statedir=
742 confsuffix=""
743 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
746 werror=""
748 for opt do
749 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
750 case "$opt" in
751 --help|-h) show_help=yes
753 --version|-V) exec cat $source_path/VERSION
755 --prefix=*) prefix="$optarg"
757 --interp-prefix=*) interp_prefix="$optarg"
759 --source-path=*)
761 --cross-prefix=*)
763 --cc=*)
765 --host-cc=*) host_cc="$optarg"
767 --cxx=*)
769 --iasl=*) iasl="$optarg"
771 --objcc=*) objcc="$optarg"
773 --make=*) make="$optarg"
775 --install=*) install="$optarg"
777 --python=*) python="$optarg"
779 --gcov=*) gcov_tool="$optarg"
781 --smbd=*) smbd="$optarg"
783 --extra-cflags=*)
785 --extra-ldflags=*)
787 --enable-debug-info)
789 --disable-debug-info)
791 --enable-modules)
792 modules="yes"
794 --disable-modules)
795 modules="no"
797 --cpu=*)
799 --target-list=*) target_list="$optarg"
801 --enable-trace-backends=*) trace_backends="$optarg"
803 # XXX: backwards compatibility
804 --enable-trace-backend=*) trace_backends="$optarg"
806 --with-trace-file=*) trace_file="$optarg"
808 --enable-gprof) gprof="yes"
810 --enable-gcov) gcov="yes"
812 --static)
813 static="yes"
814 LDFLAGS="-static $LDFLAGS"
815 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
817 --mandir=*) mandir="$optarg"
819 --bindir=*) bindir="$optarg"
821 --libdir=*) libdir="$optarg"
823 --libexecdir=*) libexecdir="$optarg"
825 --includedir=*) includedir="$optarg"
827 --datadir=*) datadir="$optarg"
829 --with-confsuffix=*) confsuffix="$optarg"
831 --docdir=*) qemu_docdir="$optarg"
833 --sysconfdir=*) sysconfdir="$optarg"
835 --localstatedir=*) local_statedir="$optarg"
837 --sbindir=*|--sharedstatedir=*|\
838 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
839 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
840 # These switches are silently ignored, for compatibility with
841 # autoconf-generated configure scripts. This allows QEMU's
842 # configure to be used by RPM and similar macros that set
843 # lots of directory switches by default.
845 --with-system-pixman) pixman="system"
847 --without-system-pixman) pixman="internal"
849 --without-pixman) pixman="none"
851 --disable-sdl) sdl="no"
853 --enable-sdl) sdl="yes"
855 --with-sdlabi=*) sdlabi="$optarg"
857 --disable-qom-cast-debug) qom_cast_debug="no"
859 --enable-qom-cast-debug) qom_cast_debug="yes"
861 --disable-virtfs) virtfs="no"
863 --enable-virtfs) virtfs="yes"
865 --disable-vnc) vnc="no"
867 --enable-vnc) vnc="yes"
869 --oss-lib=*) oss_lib="$optarg"
871 --audio-drv-list=*) audio_drv_list="$optarg"
873 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
875 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
877 --enable-debug-tcg) debug_tcg="yes"
879 --disable-debug-tcg) debug_tcg="no"
881 --enable-debug)
882 # Enable debugging options that aren't excessively noisy
883 debug_tcg="yes"
884 debug="yes"
885 strip_opt="no"
886 fortify_source="no"
888 --enable-sparse) sparse="yes"
890 --disable-sparse) sparse="no"
892 --disable-strip) strip_opt="no"
894 --disable-vnc-sasl) vnc_sasl="no"
896 --enable-vnc-sasl) vnc_sasl="yes"
898 --disable-vnc-jpeg) vnc_jpeg="no"
900 --enable-vnc-jpeg) vnc_jpeg="yes"
902 --disable-vnc-png) vnc_png="no"
904 --enable-vnc-png) vnc_png="yes"
906 --disable-slirp) slirp="no"
908 --disable-uuid) uuid="no"
910 --enable-uuid) uuid="yes"
912 --disable-vde) vde="no"
914 --enable-vde) vde="yes"
916 --disable-netmap) netmap="no"
918 --enable-netmap) netmap="yes"
920 --disable-xen) xen="no"
922 --enable-xen) xen="yes"
924 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
926 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
928 --disable-brlapi) brlapi="no"
930 --enable-brlapi) brlapi="yes"
932 --disable-bluez) bluez="no"
934 --enable-bluez) bluez="yes"
936 --disable-kvm) kvm="no"
938 --enable-kvm) kvm="yes"
940 --disable-tcg-interpreter) tcg_interpreter="no"
942 --enable-tcg-interpreter) tcg_interpreter="yes"
944 --disable-cap-ng) cap_ng="no"
946 --enable-cap-ng) cap_ng="yes"
948 --disable-spice) spice="no"
950 --enable-spice) spice="yes"
952 --disable-libiscsi) libiscsi="no"
954 --enable-libiscsi) libiscsi="yes"
956 --disable-libnfs) libnfs="no"
958 --enable-libnfs) libnfs="yes"
960 --enable-profiler) profiler="yes"
962 --disable-cocoa) cocoa="no"
964 --enable-cocoa)
965 cocoa="yes" ;
966 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
968 --disable-system) softmmu="no"
970 --enable-system) softmmu="yes"
972 --disable-user)
973 linux_user="no" ;
974 bsd_user="no" ;
976 --enable-user) ;;
977 --disable-linux-user) linux_user="no"
979 --enable-linux-user) linux_user="yes"
981 --disable-bsd-user) bsd_user="no"
983 --enable-bsd-user) bsd_user="yes"
985 --enable-pie) pie="yes"
987 --disable-pie) pie="no"
989 --enable-werror) werror="yes"
991 --disable-werror) werror="no"
993 --enable-stack-protector) stack_protector="yes"
995 --disable-stack-protector) stack_protector="no"
997 --disable-curses) curses="no"
999 --enable-curses) curses="yes"
1001 --disable-curl) curl="no"
1003 --enable-curl) curl="yes"
1005 --disable-fdt) fdt="no"
1007 --enable-fdt) fdt="yes"
1009 --disable-linux-aio) linux_aio="no"
1011 --enable-linux-aio) linux_aio="yes"
1013 --disable-attr) attr="no"
1015 --enable-attr) attr="yes"
1017 --disable-blobs) blobs="no"
1019 --with-pkgversion=*) pkgversion=" ($optarg)"
1021 --with-coroutine=*) coroutine="$optarg"
1023 --disable-coroutine-pool) coroutine_pool="no"
1025 --enable-coroutine-pool) coroutine_pool="yes"
1027 --disable-docs) docs="no"
1029 --enable-docs) docs="yes"
1031 --disable-vhost-net) vhost_net="no"
1033 --enable-vhost-net) vhost_net="yes"
1035 --disable-vhost-scsi) vhost_scsi="no"
1037 --enable-vhost-scsi) vhost_scsi="yes"
1039 --disable-opengl) opengl="no"
1041 --enable-opengl) opengl="yes"
1043 --disable-rbd) rbd="no"
1045 --enable-rbd) rbd="yes"
1047 --disable-xfsctl) xfs="no"
1049 --enable-xfsctl) xfs="yes"
1051 --disable-smartcard) smartcard="no"
1053 --enable-smartcard) smartcard="yes"
1055 --disable-libusb) libusb="no"
1057 --enable-libusb) libusb="yes"
1059 --disable-usb-redir) usb_redir="no"
1061 --enable-usb-redir) usb_redir="yes"
1063 --disable-zlib-test) zlib="no"
1065 --disable-lzo) lzo="no"
1067 --enable-lzo) lzo="yes"
1069 --disable-snappy) snappy="no"
1071 --enable-snappy) snappy="yes"
1073 --disable-bzip2) bzip2="no"
1075 --enable-bzip2) bzip2="yes"
1077 --enable-guest-agent) guest_agent="yes"
1079 --disable-guest-agent) guest_agent="no"
1081 --enable-guest-agent-msi) guest_agent_msi="yes"
1083 --disable-guest-agent-msi) guest_agent_msi="no"
1085 --with-vss-sdk) vss_win32_sdk=""
1087 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1089 --without-vss-sdk) vss_win32_sdk="no"
1091 --with-win-sdk) win_sdk=""
1093 --with-win-sdk=*) win_sdk="$optarg"
1095 --without-win-sdk) win_sdk="no"
1097 --enable-tools) want_tools="yes"
1099 --disable-tools) want_tools="no"
1101 --enable-seccomp) seccomp="yes"
1103 --disable-seccomp) seccomp="no"
1105 --disable-glusterfs) glusterfs="no"
1107 --enable-glusterfs) glusterfs="yes"
1109 --disable-archipelago) archipelago="no"
1111 --enable-archipelago) archipelago="yes"
1113 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1114 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1116 --disable-gtk) gtk="no"
1118 --enable-gtk) gtk="yes"
1120 --disable-gnutls) gnutls="no"
1122 --enable-gnutls) gnutls="yes"
1124 --disable-nettle) nettle="no"
1126 --enable-nettle) nettle="yes"
1128 --disable-gcrypt) gcrypt="no"
1130 --enable-gcrypt) gcrypt="yes"
1132 --enable-rdma) rdma="yes"
1134 --disable-rdma) rdma="no"
1136 --with-gtkabi=*) gtkabi="$optarg"
1138 --disable-vte) vte="no"
1140 --enable-vte) vte="yes"
1142 --disable-virglrenderer) virglrenderer="no"
1144 --enable-virglrenderer) virglrenderer="yes"
1146 --disable-tpm) tpm="no"
1148 --enable-tpm) tpm="yes"
1150 --disable-libssh2) libssh2="no"
1152 --enable-libssh2) libssh2="yes"
1154 --enable-vhdx) vhdx="yes"
1156 --disable-vhdx) vhdx="no"
1158 --disable-numa) numa="no"
1160 --enable-numa) numa="yes"
1162 --disable-tcmalloc) tcmalloc="no"
1164 --enable-tcmalloc) tcmalloc="yes"
1166 --disable-jemalloc) jemalloc="no"
1168 --enable-jemalloc) jemalloc="yes"
1171 echo "ERROR: unknown option $opt"
1172 echo "Try '$0 --help' for more information"
1173 exit 1
1175 esac
1176 done
1178 if ! has $python; then
1179 error_exit "Python not found. Use --python=/path/to/python"
1182 # Note that if the Python conditional here evaluates True we will exit
1183 # with status 1 which is a shell 'false' value.
1184 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1185 error_exit "Cannot use '$python', Python 2.6 or later is required." \
1186 "Note that Python 3 or later is not yet supported." \
1187 "Use --python=/path/to/python to specify a supported Python."
1190 # Suppress writing compiled files
1191 python="$python -B"
1193 case "$cpu" in
1194 ppc)
1195 CPU_CFLAGS="-m32"
1196 LDFLAGS="-m32 $LDFLAGS"
1198 ppc64)
1199 CPU_CFLAGS="-m64"
1200 LDFLAGS="-m64 $LDFLAGS"
1202 sparc)
1203 LDFLAGS="-m32 $LDFLAGS"
1204 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1206 sparc64)
1207 LDFLAGS="-m64 $LDFLAGS"
1208 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1210 s390)
1211 CPU_CFLAGS="-m31"
1212 LDFLAGS="-m31 $LDFLAGS"
1214 s390x)
1215 CPU_CFLAGS="-m64"
1216 LDFLAGS="-m64 $LDFLAGS"
1218 i386)
1219 CPU_CFLAGS="-m32"
1220 LDFLAGS="-m32 $LDFLAGS"
1221 cc_i386='$(CC) -m32'
1223 x86_64)
1224 CPU_CFLAGS="-m64"
1225 LDFLAGS="-m64 $LDFLAGS"
1226 cc_i386='$(CC) -m32'
1228 x32)
1229 CPU_CFLAGS="-mx32"
1230 LDFLAGS="-mx32 $LDFLAGS"
1231 cc_i386='$(CC) -m32'
1233 # No special flags required for other host CPUs
1234 esac
1236 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1237 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1239 default_target_list=""
1241 mak_wilds=""
1243 if [ "$softmmu" = "yes" ]; then
1244 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1246 if [ "$linux_user" = "yes" ]; then
1247 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1249 if [ "$bsd_user" = "yes" ]; then
1250 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1253 for config in $mak_wilds; do
1254 default_target_list="${default_target_list} $(basename "$config" .mak)"
1255 done
1257 if test x"$show_help" = x"yes" ; then
1258 cat << EOF
1260 Usage: configure [options]
1261 Options: [defaults in brackets after descriptions]
1263 Standard options:
1264 --help print this message
1265 --prefix=PREFIX install in PREFIX [$prefix]
1266 --interp-prefix=PREFIX where to find shared libraries, etc.
1267 use %M for cpu name [$interp_prefix]
1268 --target-list=LIST set target list (default: build everything)
1269 $(echo Available targets: $default_target_list | \
1270 fold -s -w 53 | sed -e 's/^/ /')
1272 Advanced options (experts only):
1273 --source-path=PATH path of source code [$source_path]
1274 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1275 --cc=CC use C compiler CC [$cc]
1276 --iasl=IASL use ACPI compiler IASL [$iasl]
1277 --host-cc=CC use C compiler CC [$host_cc] for code run at
1278 build time
1279 --cxx=CXX use C++ compiler CXX [$cxx]
1280 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1281 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1282 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1283 --make=MAKE use specified make [$make]
1284 --install=INSTALL use specified install [$install]
1285 --python=PYTHON use specified python [$python]
1286 --smbd=SMBD use specified smbd [$smbd]
1287 --static enable static build [$static]
1288 --mandir=PATH install man pages in PATH
1289 --datadir=PATH install firmware in PATH$confsuffix
1290 --docdir=PATH install documentation in PATH$confsuffix
1291 --bindir=PATH install binaries in PATH
1292 --libdir=PATH install libraries in PATH
1293 --sysconfdir=PATH install config in PATH$confsuffix
1294 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1295 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1296 --enable-debug enable common debug build options
1297 --disable-strip disable stripping binaries
1298 --disable-werror disable compilation abort on warning
1299 --disable-stack-protector disable compiler-provided stack protection
1300 --audio-drv-list=LIST set audio drivers list:
1301 Available drivers: $audio_possible_drivers
1302 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1303 --block-drv-rw-whitelist=L
1304 set block driver read-write whitelist
1305 (affects only QEMU, not qemu-img)
1306 --block-drv-ro-whitelist=L
1307 set block driver read-only whitelist
1308 (affects only QEMU, not qemu-img)
1309 --enable-trace-backends=B Set trace backend
1310 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1311 --with-trace-file=NAME Full PATH,NAME of file to store traces
1312 Default:trace-<pid>
1313 --disable-slirp disable SLIRP userspace network connectivity
1314 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1315 --oss-lib path to OSS library
1316 --cpu=CPU Build for host CPU [$cpu]
1317 --with-coroutine=BACKEND coroutine backend. Supported options:
1318 gthread, ucontext, sigaltstack, windows
1319 --enable-gcov enable test coverage analysis with gcov
1320 --gcov=GCOV use specified gcov [$gcov_tool]
1321 --disable-blobs disable installing provided firmware blobs
1322 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1323 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1325 Optional features, enabled with --enable-FEATURE and
1326 disabled with --disable-FEATURE, default is enabled if available:
1328 system all system emulation targets
1329 user supported user emulation targets
1330 linux-user all linux usermode emulation targets
1331 bsd-user all BSD usermode emulation targets
1332 docs build documentation
1333 guest-agent build the QEMU Guest Agent
1334 guest-agent-msi build guest agent Windows MSI installation package
1335 pie Position Independent Executables
1336 modules modules support
1337 debug-tcg TCG debugging (default is disabled)
1338 debug-info debugging information
1339 sparse sparse checker
1341 gnutls GNUTLS cryptography support
1342 nettle nettle cryptography support
1343 gcrypt libgcrypt cryptography support
1344 sdl SDL UI
1345 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1346 gtk gtk UI
1347 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1348 vte vte support for the gtk UI
1349 curses curses UI
1350 vnc VNC UI support
1351 vnc-tls TLS encryption for VNC server
1352 vnc-sasl SASL encryption for VNC server
1353 vnc-jpeg JPEG lossy compression for VNC server
1354 vnc-png PNG compression for VNC server
1355 cocoa Cocoa UI (Mac OS X only)
1356 virtfs VirtFS
1357 xen xen backend driver support
1358 xen-pci-passthrough
1359 brlapi BrlAPI (Braile)
1360 curl curl connectivity
1361 fdt fdt device tree
1362 bluez bluez stack connectivity
1363 kvm KVM acceleration support
1364 rdma RDMA-based migration support
1365 uuid uuid support
1366 vde support for vde network
1367 netmap support for netmap network
1368 linux-aio Linux AIO support
1369 cap-ng libcap-ng support
1370 attr attr and xattr support
1371 vhost-net vhost-net acceleration support
1372 spice spice
1373 rbd rados block device (rbd)
1374 libiscsi iscsi support
1375 libnfs nfs support
1376 smartcard smartcard support (libcacard)
1377 libusb libusb (for usb passthrough)
1378 usb-redir usb network redirection support
1379 lzo support of lzo compression library
1380 snappy support of snappy compression library
1381 bzip2 support of bzip2 compression library
1382 (for reading bzip2-compressed dmg images)
1383 seccomp seccomp support
1384 coroutine-pool coroutine freelist (better performance)
1385 glusterfs GlusterFS backend
1386 archipelago Archipelago backend
1387 tpm TPM support
1388 libssh2 ssh block device support
1389 vhdx support for the Microsoft VHDX image format
1390 numa libnuma support
1391 tcmalloc tcmalloc support
1392 jemalloc jemalloc support
1394 NOTE: The object files are built at the place where configure is launched
1396 exit 0
1399 # Now we have handled --enable-tcg-interpreter and know we're not just
1400 # printing the help message, bail out if the host CPU isn't supported.
1401 if test "$ARCH" = "unknown"; then
1402 if test "$tcg_interpreter" = "yes" ; then
1403 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1404 ARCH=tci
1405 else
1406 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1410 # Consult white-list to determine whether to enable werror
1411 # by default. Only enable by default for git builds
1412 z_version=`cut -f3 -d. $source_path/VERSION`
1414 if test -z "$werror" ; then
1415 if test -d "$source_path/.git" -a \
1416 "$linux" = "yes" ; then
1417 werror="yes"
1418 else
1419 werror="no"
1423 # check that the C compiler works.
1424 write_c_skeleton;
1425 if compile_object ; then
1426 : C compiler works ok
1427 else
1428 error_exit "\"$cc\" either does not exist or does not work"
1431 # Check that the C++ compiler exists and works with the C compiler
1432 if has $cxx; then
1433 cat > $TMPC <<EOF
1434 int c_function(void);
1435 int main(void) { return c_function(); }
1438 compile_object
1440 cat > $TMPCXX <<EOF
1441 extern "C" {
1442 int c_function(void);
1444 int c_function(void) { return 42; }
1447 update_cxxflags
1449 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1450 # C++ compiler $cxx works ok with C compiler $cc
1452 else
1453 echo "C++ compiler $cxx does not work with C compiler $cc"
1454 echo "Disabling C++ specific optional code"
1455 cxx=
1457 else
1458 echo "No C++ compiler available; disabling C++ specific optional code"
1459 cxx=
1462 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1463 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1464 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1465 gcc_flags="-Wendif-labels $gcc_flags"
1466 gcc_flags="-Wno-initializer-overrides $gcc_flags"
1467 gcc_flags="-Wno-string-plus-int $gcc_flags"
1468 # Note that we do not add -Werror to gcc_flags here, because that would
1469 # enable it for all configure tests. If a configure test failed due
1470 # to -Werror this would just silently disable some features,
1471 # so it's too error prone.
1473 cc_has_warning_flag() {
1474 write_c_skeleton;
1476 # Use the positive sense of the flag when testing for -Wno-wombat
1477 # support (gcc will happily accept the -Wno- form of unknown
1478 # warning options).
1479 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1480 compile_prog "-Werror $optflag" ""
1483 for flag in $gcc_flags; do
1484 if cc_has_warning_flag $flag ; then
1485 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1487 done
1489 if test "$stack_protector" != "no"; then
1490 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1491 sp_on=0
1492 for flag in $gcc_flags; do
1493 # We need to check both a compile and a link, since some compiler
1494 # setups fail only on a .c->.o compile and some only at link time
1495 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1496 compile_prog "-Werror $flag" ""; then
1497 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1498 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
1499 sp_on=1
1500 break
1502 done
1503 if test "$stack_protector" = yes; then
1504 if test $sp_on = 0; then
1505 error_exit "Stack protector not supported"
1510 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1511 # large functions that use global variables. The bug is in all releases of
1512 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1513 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1514 cat > $TMPC << EOF
1515 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1516 int main(void) { return 0; }
1517 #else
1518 #error No bug in this compiler.
1519 #endif
1521 if compile_prog "-Werror -fno-gcse" "" ; then
1522 TRANSLATE_OPT_CFLAGS=-fno-gcse
1525 if test "$static" = "yes" ; then
1526 if test "$modules" = "yes" ; then
1527 error_exit "static and modules are mutually incompatible"
1529 if test "$pie" = "yes" ; then
1530 error_exit "static and pie are mutually incompatible"
1531 else
1532 pie="no"
1536 # Unconditional check for compiler __thread support
1537 cat > $TMPC << EOF
1538 static __thread int tls_var;
1539 int main(void) { return tls_var; }
1542 if ! compile_prog "-Werror" "" ; then
1543 error_exit "Your compiler does not support the __thread specifier for " \
1544 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1547 if test "$pie" = ""; then
1548 case "$cpu-$targetos" in
1549 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1552 pie="no"
1554 esac
1557 if test "$pie" != "no" ; then
1558 cat > $TMPC << EOF
1560 #ifdef __linux__
1561 # define THREAD __thread
1562 #else
1563 # define THREAD
1564 #endif
1566 static THREAD int tls_var;
1568 int main(void) { return tls_var; }
1571 if compile_prog "-fPIE -DPIE" "-pie"; then
1572 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1573 LDFLAGS="-pie $LDFLAGS"
1574 pie="yes"
1575 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1576 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1578 else
1579 if test "$pie" = "yes"; then
1580 error_exit "PIE not available due to missing toolchain support"
1581 else
1582 echo "Disabling PIE due to missing toolchain support"
1583 pie="no"
1587 if compile_prog "-Werror -fno-pie" "-nopie"; then
1588 CFLAGS_NOPIE="-fno-pie"
1589 LDFLAGS_NOPIE="-nopie"
1593 # check for broken gcc and libtool in RHEL5
1594 if test -n "$libtool" -a "$pie" != "no" ; then
1595 cat > $TMPC <<EOF
1597 void *f(unsigned char *buf, int len);
1598 void *g(unsigned char *buf, int len);
1600 void *
1601 f(unsigned char *buf, int len)
1603 return (void*)0L;
1606 void *
1607 g(unsigned char *buf, int len)
1609 return f(buf, len);
1613 if ! libtool_prog; then
1614 echo "Disabling libtool due to broken toolchain support"
1615 libtool=
1619 ##########################################
1620 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1621 # use i686 as default anyway, but for those that don't, an explicit
1622 # specification is necessary
1624 if test "$cpu" = "i386"; then
1625 cat > $TMPC << EOF
1626 static int sfaa(int *ptr)
1628 return __sync_fetch_and_and(ptr, 0);
1631 int main(void)
1633 int val = 42;
1634 val = __sync_val_compare_and_swap(&val, 0, 1);
1635 sfaa(&val);
1636 return val;
1639 if ! compile_prog "" "" ; then
1640 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1644 #########################################
1645 # Solaris specific configure tool chain decisions
1647 if test "$solaris" = "yes" ; then
1648 if has $install; then
1650 else
1651 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1652 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1653 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1655 if test "`path_of $install`" = "/usr/sbin/install" ; then
1656 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1657 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1658 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1660 if has ar; then
1662 else
1663 if test -f /usr/ccs/bin/ar ; then
1664 error_exit "No path includes ar" \
1665 "Add /usr/ccs/bin to your path and rerun configure"
1667 error_exit "No path includes ar"
1671 if test -z "${target_list+xxx}" ; then
1672 target_list="$default_target_list"
1673 else
1674 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1677 # Check that we recognised the target name; this allows a more
1678 # friendly error message than if we let it fall through.
1679 for target in $target_list; do
1680 case " $default_target_list " in
1681 *" $target "*)
1684 error_exit "Unknown target name '$target'"
1686 esac
1687 done
1689 # see if system emulation was really requested
1690 case " $target_list " in
1691 *"-softmmu "*) softmmu=yes
1693 *) softmmu=no
1695 esac
1697 feature_not_found() {
1698 feature=$1
1699 remedy=$2
1701 error_exit "User requested feature $feature" \
1702 "configure was not able to find it." \
1703 "$remedy"
1706 # ---
1707 # big/little endian test
1708 cat > $TMPC << EOF
1709 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1710 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1711 extern int foo(short *, short *);
1712 int main(int argc, char *argv[]) {
1713 return foo(big_endian, little_endian);
1717 if compile_object ; then
1718 if grep -q BiGeNdIaN $TMPO ; then
1719 bigendian="yes"
1720 elif grep -q LiTtLeEnDiAn $TMPO ; then
1721 bigendian="no"
1722 else
1723 echo big/little test failed
1725 else
1726 echo big/little test failed
1729 ##########################################
1730 # cocoa implies not SDL or GTK
1731 # (the cocoa UI code currently assumes it is always the active UI
1732 # and doesn't interact well with other UI frontend code)
1733 if test "$cocoa" = "yes"; then
1734 if test "$sdl" = "yes"; then
1735 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1737 if test "$gtk" = "yes"; then
1738 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1740 gtk=no
1741 sdl=no
1744 ##########################################
1745 # L2TPV3 probe
1747 cat > $TMPC <<EOF
1748 #include <sys/socket.h>
1749 #include <linux/ip.h>
1750 int main(void) { return sizeof(struct mmsghdr); }
1752 if compile_prog "" "" ; then
1753 l2tpv3=yes
1754 else
1755 l2tpv3=no
1758 ##########################################
1759 # MinGW / Mingw-w64 localtime_r/gmtime_r check
1761 if test "$mingw32" = "yes"; then
1762 # Some versions of MinGW / Mingw-w64 lack localtime_r
1763 # and gmtime_r entirely.
1765 # Some versions of Mingw-w64 define a macro for
1766 # localtime_r/gmtime_r.
1768 # Some versions of Mingw-w64 will define functions
1769 # for localtime_r/gmtime_r, but only if you have
1770 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1771 # though, unistd.h and pthread.h both define
1772 # that for you.
1774 # So this #undef localtime_r and #include <unistd.h>
1775 # are not in fact redundant.
1776 cat > $TMPC << EOF
1777 #include <unistd.h>
1778 #include <time.h>
1779 #undef localtime_r
1780 int main(void) { localtime_r(NULL, NULL); return 0; }
1782 if compile_prog "" "" ; then
1783 localtime_r="yes"
1784 else
1785 localtime_r="no"
1789 ##########################################
1790 # pkg-config probe
1792 if ! has "$pkg_config_exe"; then
1793 error_exit "pkg-config binary '$pkg_config_exe' not found"
1796 ##########################################
1797 # NPTL probe
1799 if test "$linux_user" = "yes"; then
1800 cat > $TMPC <<EOF
1801 #include <sched.h>
1802 #include <linux/futex.h>
1803 int main(void) {
1804 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1805 #error bork
1806 #endif
1807 return 0;
1810 if ! compile_object ; then
1811 feature_not_found "nptl" "Install glibc and linux kernel headers."
1815 ##########################################
1816 # zlib check
1818 if test "$zlib" != "no" ; then
1819 cat > $TMPC << EOF
1820 #include <zlib.h>
1821 int main(void) { zlibVersion(); return 0; }
1823 if compile_prog "" "-lz" ; then
1825 else
1826 error_exit "zlib check failed" \
1827 "Make sure to have the zlib libs and headers installed."
1830 LIBS="$LIBS -lz"
1832 ##########################################
1833 # lzo check
1835 if test "$lzo" != "no" ; then
1836 cat > $TMPC << EOF
1837 #include <lzo/lzo1x.h>
1838 int main(void) { lzo_version(); return 0; }
1840 if compile_prog "" "-llzo2" ; then
1841 libs_softmmu="$libs_softmmu -llzo2"
1842 lzo="yes"
1843 else
1844 if test "$lzo" = "yes"; then
1845 feature_not_found "liblzo2" "Install liblzo2 devel"
1847 lzo="no"
1851 ##########################################
1852 # snappy check
1854 if test "$snappy" != "no" ; then
1855 cat > $TMPC << EOF
1856 #include <snappy-c.h>
1857 int main(void) { snappy_max_compressed_length(4096); return 0; }
1859 if compile_prog "" "-lsnappy" ; then
1860 libs_softmmu="$libs_softmmu -lsnappy"
1861 snappy="yes"
1862 else
1863 if test "$snappy" = "yes"; then
1864 feature_not_found "libsnappy" "Install libsnappy devel"
1866 snappy="no"
1870 ##########################################
1871 # bzip2 check
1873 if test "$bzip2" != "no" ; then
1874 cat > $TMPC << EOF
1875 #include <bzlib.h>
1876 int main(void) { BZ2_bzlibVersion(); return 0; }
1878 if compile_prog "" "-lbz2" ; then
1879 bzip2="yes"
1880 else
1881 if test "$bzip2" = "yes"; then
1882 feature_not_found "libbzip2" "Install libbzip2 devel"
1884 bzip2="no"
1888 ##########################################
1889 # libseccomp check
1891 if test "$seccomp" != "no" ; then
1892 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1893 $pkg_config --atleast-version=2.1.1 libseccomp; then
1894 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1895 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1896 seccomp="yes"
1897 else
1898 if test "$seccomp" = "yes"; then
1899 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
1901 seccomp="no"
1904 ##########################################
1905 # xen probe
1907 if test "$xen" != "no" ; then
1908 xen_libs="-lxenstore -lxenctrl -lxenguest"
1910 # First we test whether Xen headers and libraries are available.
1911 # If no, we are done and there is no Xen support.
1912 # If yes, more tests are run to detect the Xen version.
1914 # Xen (any)
1915 cat > $TMPC <<EOF
1916 #include <xenctrl.h>
1917 int main(void) {
1918 return 0;
1921 if ! compile_prog "" "$xen_libs" ; then
1922 # Xen not found
1923 if test "$xen" = "yes" ; then
1924 feature_not_found "xen" "Install xen devel"
1926 xen=no
1928 # Xen unstable
1929 elif
1930 cat > $TMPC <<EOF &&
1931 #include <xenctrl.h>
1932 #include <xenstore.h>
1933 #include <stdint.h>
1934 #include <xen/hvm/hvm_info_table.h>
1935 #if !defined(HVM_MAX_VCPUS)
1936 # error HVM_MAX_VCPUS not defined
1937 #endif
1938 int main(void) {
1939 xc_interface *xc;
1940 xs_daemon_open();
1941 xc = xc_interface_open(0, 0, 0);
1942 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1943 xc_gnttab_open(NULL, 0);
1944 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1945 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1946 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
1947 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
1948 return 0;
1951 compile_prog "" "$xen_libs"
1952 then
1953 xen_ctrl_version=460
1954 xen=yes
1956 # Xen 4.5
1957 elif
1958 cat > $TMPC <<EOF &&
1959 #include <xenctrl.h>
1960 #include <xenstore.h>
1961 #include <stdint.h>
1962 #include <xen/hvm/hvm_info_table.h>
1963 #if !defined(HVM_MAX_VCPUS)
1964 # error HVM_MAX_VCPUS not defined
1965 #endif
1966 int main(void) {
1967 xc_interface *xc;
1968 xs_daemon_open();
1969 xc = 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 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1974 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1975 return 0;
1978 compile_prog "" "$xen_libs"
1979 then
1980 xen_ctrl_version=450
1981 xen=yes
1983 elif
1984 cat > $TMPC <<EOF &&
1985 #include <xenctrl.h>
1986 #include <xenstore.h>
1987 #include <stdint.h>
1988 #include <xen/hvm/hvm_info_table.h>
1989 #if !defined(HVM_MAX_VCPUS)
1990 # error HVM_MAX_VCPUS not defined
1991 #endif
1992 int main(void) {
1993 xc_interface *xc;
1994 xs_daemon_open();
1995 xc = xc_interface_open(0, 0, 0);
1996 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1997 xc_gnttab_open(NULL, 0);
1998 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1999 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2000 return 0;
2003 compile_prog "" "$xen_libs"
2004 then
2005 xen_ctrl_version=420
2006 xen=yes
2008 elif
2009 cat > $TMPC <<EOF &&
2010 #include <xenctrl.h>
2011 #include <xs.h>
2012 #include <stdint.h>
2013 #include <xen/hvm/hvm_info_table.h>
2014 #if !defined(HVM_MAX_VCPUS)
2015 # error HVM_MAX_VCPUS not defined
2016 #endif
2017 int main(void) {
2018 xs_daemon_open();
2019 xc_interface_open(0, 0, 0);
2020 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2021 xc_gnttab_open(NULL, 0);
2022 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2023 return 0;
2026 compile_prog "" "$xen_libs"
2027 then
2028 xen_ctrl_version=410
2029 xen=yes
2031 # Xen 4.0.0
2032 elif
2033 cat > $TMPC <<EOF &&
2034 #include <xenctrl.h>
2035 #include <xs.h>
2036 #include <stdint.h>
2037 #include <xen/hvm/hvm_info_table.h>
2038 #if !defined(HVM_MAX_VCPUS)
2039 # error HVM_MAX_VCPUS not defined
2040 #endif
2041 int main(void) {
2042 struct xen_add_to_physmap xatp = {
2043 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2045 xs_daemon_open();
2046 xc_interface_open();
2047 xc_gnttab_open();
2048 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2049 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2050 return 0;
2053 compile_prog "" "$xen_libs"
2054 then
2055 xen_ctrl_version=400
2056 xen=yes
2058 # Xen 3.4.0
2059 elif
2060 cat > $TMPC <<EOF &&
2061 #include <xenctrl.h>
2062 #include <xs.h>
2063 int main(void) {
2064 struct xen_add_to_physmap xatp = {
2065 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2067 xs_daemon_open();
2068 xc_interface_open();
2069 xc_gnttab_open();
2070 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2071 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2072 return 0;
2075 compile_prog "" "$xen_libs"
2076 then
2077 xen_ctrl_version=340
2078 xen=yes
2080 # Xen 3.3.0
2081 elif
2082 cat > $TMPC <<EOF &&
2083 #include <xenctrl.h>
2084 #include <xs.h>
2085 int main(void) {
2086 xs_daemon_open();
2087 xc_interface_open();
2088 xc_gnttab_open();
2089 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2090 return 0;
2093 compile_prog "" "$xen_libs"
2094 then
2095 xen_ctrl_version=330
2096 xen=yes
2098 # Xen version unsupported
2099 else
2100 if test "$xen" = "yes" ; then
2101 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2103 xen=no
2106 if test "$xen" = yes; then
2107 libs_softmmu="$xen_libs $libs_softmmu"
2111 if test "$xen_pci_passthrough" != "no"; then
2112 if test "$xen" = "yes" && test "$linux" = "yes" &&
2113 test "$xen_ctrl_version" -ge 340; then
2114 xen_pci_passthrough=yes
2115 else
2116 if test "$xen_pci_passthrough" = "yes"; then
2117 if test "$xen_ctrl_version" -lt 340; then
2118 error_exit "User requested feature Xen PCI Passthrough" \
2119 "This feature does not work with Xen 3.3"
2121 error_exit "User requested feature Xen PCI Passthrough" \
2122 " but this feature requires /sys from Linux"
2124 xen_pci_passthrough=no
2128 ##########################################
2129 # libtool probe
2131 if ! has $libtool; then
2132 libtool=
2135 # MacOSX ships with a libtool which isn't the GNU one; weed this
2136 # out by checking whether libtool supports the --version switch
2137 if test -n "$libtool"; then
2138 if ! "$libtool" --version >/dev/null 2>&1; then
2139 libtool=
2143 ##########################################
2144 # Sparse probe
2145 if test "$sparse" != "no" ; then
2146 if has cgcc; then
2147 sparse=yes
2148 else
2149 if test "$sparse" = "yes" ; then
2150 feature_not_found "sparse" "Install sparse binary"
2152 sparse=no
2156 ##########################################
2157 # X11 probe
2158 x11_cflags=
2159 x11_libs=-lX11
2160 if $pkg_config --exists "x11"; then
2161 x11_cflags=`$pkg_config --cflags x11`
2162 x11_libs=`$pkg_config --libs x11`
2165 ##########################################
2166 # GTK probe
2168 if test "$gtkabi" = ""; then
2169 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2170 # Use 3.0 as a fallback if that is available.
2171 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2172 gtkabi=2.0
2173 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2174 gtkabi=3.0
2175 else
2176 gtkabi=2.0
2180 if test "$gtk" != "no"; then
2181 gtkpackage="gtk+-$gtkabi"
2182 gtkx11package="gtk+-x11-$gtkabi"
2183 if test "$gtkabi" = "3.0" ; then
2184 gtkversion="3.0.0"
2185 else
2186 gtkversion="2.18.0"
2188 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2189 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2190 gtk_libs=`$pkg_config --libs $gtkpackage`
2191 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2192 gtk_cflags="$gtk_cflags $x11_cflags"
2193 gtk_libs="$gtk_libs $x11_libs"
2195 libs_softmmu="$gtk_libs $libs_softmmu"
2196 gtk="yes"
2197 elif test "$gtk" = "yes"; then
2198 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2199 else
2200 gtk="no"
2205 ##########################################
2206 # GNUTLS probe
2208 gnutls_works() {
2209 # Unfortunately some distros have bad pkg-config information for gnutls
2210 # such that it claims to exist but you get a compiler error if you try
2211 # to use the options returned by --libs. Specifically, Ubuntu for --static
2212 # builds doesn't work:
2213 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2215 # So sanity check the cflags/libs before assuming gnutls can be used.
2216 if ! $pkg_config --exists "gnutls"; then
2217 return 1
2220 write_c_skeleton
2221 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2224 gnutls_gcrypt=no
2225 gnutls_nettle=no
2226 if test "$gnutls" != "no"; then
2227 if gnutls_works; then
2228 gnutls_cflags=`$pkg_config --cflags gnutls`
2229 gnutls_libs=`$pkg_config --libs gnutls`
2230 libs_softmmu="$gnutls_libs $libs_softmmu"
2231 libs_tools="$gnutls_libs $libs_tools"
2232 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2233 gnutls="yes"
2235 # gnutls_hash_init requires >= 2.9.10
2236 if $pkg_config --exists "gnutls >= 2.9.10"; then
2237 gnutls_hash="yes"
2238 else
2239 gnutls_hash="no"
2242 if $pkg_config --exists 'gnutls >= 3.0'; then
2243 gnutls_gcrypt=no
2244 gnutls_nettle=yes
2245 elif $pkg_config --exists 'gnutls >= 2.12'; then
2246 case `$pkg_config --libs --static gnutls` in
2247 *gcrypt*)
2248 gnutls_gcrypt=yes
2249 gnutls_nettle=no
2251 *nettle*)
2252 gnutls_gcrypt=no
2253 gnutls_nettle=yes
2256 gnutls_gcrypt=yes
2257 gnutls_nettle=no
2259 esac
2260 else
2261 gnutls_gcrypt=yes
2262 gnutls_nettle=no
2264 elif test "$gnutls" = "yes"; then
2265 feature_not_found "gnutls" "Install gnutls devel"
2266 else
2267 gnutls="no"
2268 gnutls_hash="no"
2270 else
2271 gnutls_hash="no"
2275 # If user didn't give a --disable/enable-gcrypt flag,
2276 # then mark as disabled if user requested nettle
2277 # explicitly, or if gnutls links to nettle
2278 if test -z "$gcrypt"
2279 then
2280 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2281 then
2282 gcrypt="no"
2286 # If user didn't give a --disable/enable-nettle flag,
2287 # then mark as disabled if user requested gcrypt
2288 # explicitly, or if gnutls links to gcrypt
2289 if test -z "$nettle"
2290 then
2291 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2292 then
2293 nettle="no"
2297 has_libgcrypt_config() {
2298 if ! has "libgcrypt-config"
2299 then
2300 return 1
2303 if test -n "$cross_prefix"
2304 then
2305 host=`libgcrypt-config --host`
2306 if test "$host-" != $cross_prefix
2307 then
2308 return 1
2312 return 0
2315 if test "$gcrypt" != "no"; then
2316 if has_libgcrypt_config; then
2317 gcrypt_cflags=`libgcrypt-config --cflags`
2318 gcrypt_libs=`libgcrypt-config --libs`
2319 # Debian has remove -lgpg-error from libgcrypt-config
2320 # as it "spreads unnecessary dependencies" which in
2321 # turn breaks static builds...
2322 if test "$static" = "yes"
2323 then
2324 gcrypt_libs="$gcrypt_libs -lgpg-error"
2326 libs_softmmu="$gcrypt_libs $libs_softmmu"
2327 libs_tools="$gcrypt_libs $libs_tools"
2328 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2329 gcrypt="yes"
2330 if test -z "$nettle"; then
2331 nettle="no"
2333 else
2334 if test "$gcrypt" = "yes"; then
2335 feature_not_found "gcrypt" "Install gcrypt devel"
2336 else
2337 gcrypt="no"
2343 if test "$nettle" != "no"; then
2344 if $pkg_config --exists "nettle"; then
2345 nettle_cflags=`$pkg_config --cflags nettle`
2346 nettle_libs=`$pkg_config --libs nettle`
2347 nettle_version=`$pkg_config --modversion nettle`
2348 libs_softmmu="$nettle_libs $libs_softmmu"
2349 libs_tools="$nettle_libs $libs_tools"
2350 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2351 nettle="yes"
2352 else
2353 if test "$nettle" = "yes"; then
2354 feature_not_found "nettle" "Install nettle devel"
2355 else
2356 nettle="no"
2361 if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2362 then
2363 error_exit "Only one of gcrypt & nettle can be enabled"
2366 ##########################################
2367 # libtasn1 - only for the TLS creds/session test suite
2369 tasn1=yes
2370 tasn1_cflags=""
2371 tasn1_libs=""
2372 if $pkg_config --exists "libtasn1"; then
2373 tasn1_cflags=`$pkg_config --cflags libtasn1`
2374 tasn1_libs=`$pkg_config --libs libtasn1`
2375 else
2376 tasn1=no
2380 ##########################################
2381 # VTE probe
2383 if test "$vte" != "no"; then
2384 if test "$gtkabi" = "3.0"; then
2385 vtepackage="vte-2.90"
2386 vteversion="0.32.0"
2387 else
2388 vtepackage="vte"
2389 vteversion="0.24.0"
2391 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2392 vte_cflags=`$pkg_config --cflags $vtepackage`
2393 vte_libs=`$pkg_config --libs $vtepackage`
2394 libs_softmmu="$vte_libs $libs_softmmu"
2395 vte="yes"
2396 elif test "$vte" = "yes"; then
2397 if test "$gtkabi" = "3.0"; then
2398 feature_not_found "vte" "Install libvte-2.90 devel"
2399 else
2400 feature_not_found "vte" "Install libvte devel"
2402 else
2403 vte="no"
2407 ##########################################
2408 # SDL probe
2410 # Look for sdl configuration program (pkg-config or sdl-config). Try
2411 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2413 if test $sdlabi = "2.0"; then
2414 sdl_config=$sdl2_config
2415 sdlname=sdl2
2416 sdlconfigname=sdl2_config
2417 else
2418 sdlname=sdl
2419 sdlconfigname=sdl_config
2422 if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2423 sdl_config=$sdlconfigname
2426 if $pkg_config $sdlname --exists; then
2427 sdlconfig="$pkg_config $sdlname"
2428 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2429 elif has ${sdl_config}; then
2430 sdlconfig="$sdl_config"
2431 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2432 else
2433 if test "$sdl" = "yes" ; then
2434 feature_not_found "sdl" "Install SDL devel"
2436 sdl=no
2438 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2439 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2442 sdl_too_old=no
2443 if test "$sdl" != "no" ; then
2444 cat > $TMPC << EOF
2445 #include <SDL.h>
2446 #undef main /* We don't want SDL to override our main() */
2447 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2449 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2450 if test "$static" = "yes" ; then
2451 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2452 else
2453 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2455 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2456 if test "$_sdlversion" -lt 121 ; then
2457 sdl_too_old=yes
2458 else
2459 sdl=yes
2462 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2463 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2464 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2465 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2466 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2468 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2470 else
2471 sdl=no
2473 fi # static link
2474 else # sdl not found
2475 if test "$sdl" = "yes" ; then
2476 feature_not_found "sdl" "Install SDL devel"
2478 sdl=no
2479 fi # sdl compile test
2482 if test "$sdl" = "yes" ; then
2483 cat > $TMPC <<EOF
2484 #include <SDL.h>
2485 #if defined(SDL_VIDEO_DRIVER_X11)
2486 #include <X11/XKBlib.h>
2487 #else
2488 #error No x11 support
2489 #endif
2490 int main(void) { return 0; }
2492 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2493 sdl_cflags="$sdl_cflags $x11_cflags"
2494 sdl_libs="$sdl_libs $x11_libs"
2496 libs_softmmu="$sdl_libs $libs_softmmu"
2499 ##########################################
2500 # RDMA needs OpenFabrics libraries
2501 if test "$rdma" != "no" ; then
2502 cat > $TMPC <<EOF
2503 #include <rdma/rdma_cma.h>
2504 int main(void) { return 0; }
2506 rdma_libs="-lrdmacm -libverbs"
2507 if compile_prog "" "$rdma_libs" ; then
2508 rdma="yes"
2509 libs_softmmu="$libs_softmmu $rdma_libs"
2510 else
2511 if test "$rdma" = "yes" ; then
2512 error_exit \
2513 " OpenFabrics librdmacm/libibverbs not present." \
2514 " Your options:" \
2515 " (1) Fast: Install infiniband packages from your distro." \
2516 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2517 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2519 rdma="no"
2524 ##########################################
2525 # VNC SASL detection
2526 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2527 cat > $TMPC <<EOF
2528 #include <sasl/sasl.h>
2529 #include <stdio.h>
2530 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2532 # Assuming Cyrus-SASL installed in /usr prefix
2533 vnc_sasl_cflags=""
2534 vnc_sasl_libs="-lsasl2"
2535 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2536 vnc_sasl=yes
2537 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2538 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2539 else
2540 if test "$vnc_sasl" = "yes" ; then
2541 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2543 vnc_sasl=no
2547 ##########################################
2548 # VNC JPEG detection
2549 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2550 cat > $TMPC <<EOF
2551 #include <stdio.h>
2552 #include <jpeglib.h>
2553 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2555 vnc_jpeg_cflags=""
2556 vnc_jpeg_libs="-ljpeg"
2557 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2558 vnc_jpeg=yes
2559 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2560 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2561 else
2562 if test "$vnc_jpeg" = "yes" ; then
2563 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2565 vnc_jpeg=no
2569 ##########################################
2570 # VNC PNG detection
2571 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2572 cat > $TMPC <<EOF
2573 //#include <stdio.h>
2574 #include <png.h>
2575 #include <stddef.h>
2576 int main(void) {
2577 png_structp png_ptr;
2578 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2579 return png_ptr != 0;
2582 if $pkg_config libpng --exists; then
2583 vnc_png_cflags=`$pkg_config libpng --cflags`
2584 vnc_png_libs=`$pkg_config libpng --libs`
2585 else
2586 vnc_png_cflags=""
2587 vnc_png_libs="-lpng"
2589 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2590 vnc_png=yes
2591 libs_softmmu="$vnc_png_libs $libs_softmmu"
2592 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2593 else
2594 if test "$vnc_png" = "yes" ; then
2595 feature_not_found "vnc-png" "Install libpng devel"
2597 vnc_png=no
2601 ##########################################
2602 # fnmatch() probe, used for ACL routines
2603 fnmatch="no"
2604 cat > $TMPC << EOF
2605 #include <fnmatch.h>
2606 int main(void)
2608 fnmatch("foo", "foo", 0);
2609 return 0;
2612 if compile_prog "" "" ; then
2613 fnmatch="yes"
2616 ##########################################
2617 # uuid_generate() probe, used for vdi block driver
2618 # Note that on some systems (notably MacOSX) no extra library
2619 # need be linked to get the uuid functions.
2620 if test "$uuid" != "no" ; then
2621 uuid_libs="-luuid"
2622 cat > $TMPC << EOF
2623 #include <uuid/uuid.h>
2624 int main(void)
2626 uuid_t my_uuid;
2627 uuid_generate(my_uuid);
2628 return 0;
2631 if compile_prog "" "" ; then
2632 uuid="yes"
2633 elif compile_prog "" "$uuid_libs" ; then
2634 uuid="yes"
2635 libs_softmmu="$uuid_libs $libs_softmmu"
2636 libs_tools="$uuid_libs $libs_tools"
2637 else
2638 if test "$uuid" = "yes" ; then
2639 feature_not_found "uuid" "Install libuuid devel"
2641 uuid=no
2645 if test "$vhdx" = "yes" ; then
2646 if test "$uuid" = "no" ; then
2647 error_exit "uuid required for VHDX support"
2649 elif test "$vhdx" != "no" ; then
2650 if test "$uuid" = "yes" ; then
2651 vhdx=yes
2652 else
2653 vhdx=no
2657 ##########################################
2658 # xfsctl() probe, used for raw-posix
2659 if test "$xfs" != "no" ; then
2660 cat > $TMPC << EOF
2661 #include <stddef.h> /* NULL */
2662 #include <xfs/xfs.h>
2663 int main(void)
2665 xfsctl(NULL, 0, 0, NULL);
2666 return 0;
2669 if compile_prog "" "" ; then
2670 xfs="yes"
2671 else
2672 if test "$xfs" = "yes" ; then
2673 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2675 xfs=no
2679 ##########################################
2680 # vde libraries probe
2681 if test "$vde" != "no" ; then
2682 vde_libs="-lvdeplug"
2683 cat > $TMPC << EOF
2684 #include <libvdeplug.h>
2685 int main(void)
2687 struct vde_open_args a = {0, 0, 0};
2688 char s[] = "";
2689 vde_open(s, s, &a);
2690 return 0;
2693 if compile_prog "" "$vde_libs" ; then
2694 vde=yes
2695 libs_softmmu="$vde_libs $libs_softmmu"
2696 libs_tools="$vde_libs $libs_tools"
2697 else
2698 if test "$vde" = "yes" ; then
2699 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2701 vde=no
2705 ##########################################
2706 # netmap support probe
2707 # Apart from looking for netmap headers, we make sure that the host API version
2708 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2709 # a minor/major version number. Minor new features will be marked with values up
2710 # to 15, and if something happens that requires a change to the backend we will
2711 # move above 15, submit the backend fixes and modify this two bounds.
2712 if test "$netmap" != "no" ; then
2713 cat > $TMPC << EOF
2714 #include <inttypes.h>
2715 #include <net/if.h>
2716 #include <net/netmap.h>
2717 #include <net/netmap_user.h>
2718 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2719 #error
2720 #endif
2721 int main(void) { return 0; }
2723 if compile_prog "" "" ; then
2724 netmap=yes
2725 else
2726 if test "$netmap" = "yes" ; then
2727 feature_not_found "netmap"
2729 netmap=no
2733 ##########################################
2734 # libcap-ng library probe
2735 if test "$cap_ng" != "no" ; then
2736 cap_libs="-lcap-ng"
2737 cat > $TMPC << EOF
2738 #include <cap-ng.h>
2739 int main(void)
2741 capng_capability_to_name(CAPNG_EFFECTIVE);
2742 return 0;
2745 if compile_prog "" "$cap_libs" ; then
2746 cap_ng=yes
2747 libs_tools="$cap_libs $libs_tools"
2748 else
2749 if test "$cap_ng" = "yes" ; then
2750 feature_not_found "cap_ng" "Install libcap-ng devel"
2752 cap_ng=no
2756 ##########################################
2757 # Sound support libraries probe
2759 audio_drv_probe()
2761 drv=$1
2762 hdr=$2
2763 lib=$3
2764 exp=$4
2765 cfl=$5
2766 cat > $TMPC << EOF
2767 #include <$hdr>
2768 int main(void) { $exp }
2770 if compile_prog "$cfl" "$lib" ; then
2772 else
2773 error_exit "$drv check failed" \
2774 "Make sure to have the $drv libs and headers installed."
2778 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2779 for drv in $audio_drv_list; do
2780 case $drv in
2781 alsa)
2782 audio_drv_probe $drv alsa/asoundlib.h -lasound \
2783 "return snd_pcm_close((snd_pcm_t *)0);"
2784 libs_softmmu="-lasound $libs_softmmu"
2788 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2789 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2790 libs_softmmu="-lpulse $libs_softmmu"
2791 audio_pt_int="yes"
2794 coreaudio)
2795 libs_softmmu="-framework CoreAudio $libs_softmmu"
2798 dsound)
2799 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2800 audio_win_int="yes"
2803 oss)
2804 libs_softmmu="$oss_lib $libs_softmmu"
2807 sdl|wav)
2808 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2812 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2813 error_exit "Unknown driver '$drv' selected" \
2814 "Possible drivers are: $audio_possible_drivers"
2817 esac
2818 done
2820 ##########################################
2821 # BrlAPI probe
2823 if test "$brlapi" != "no" ; then
2824 brlapi_libs="-lbrlapi"
2825 cat > $TMPC << EOF
2826 #include <brlapi.h>
2827 #include <stddef.h>
2828 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2830 if compile_prog "" "$brlapi_libs" ; then
2831 brlapi=yes
2832 libs_softmmu="$brlapi_libs $libs_softmmu"
2833 else
2834 if test "$brlapi" = "yes" ; then
2835 feature_not_found "brlapi" "Install brlapi devel"
2837 brlapi=no
2841 ##########################################
2842 # curses probe
2843 if test "$curses" != "no" ; then
2844 if test "$mingw32" = "yes" ; then
2845 curses_list="-lpdcurses"
2846 else
2847 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2849 curses_found=no
2850 cat > $TMPC << EOF
2851 #include <curses.h>
2852 int main(void) {
2853 const char *s = curses_version();
2854 resize_term(0, 0);
2855 return s != 0;
2858 IFS=:
2859 for curses_lib in $curses_list; do
2860 unset IFS
2861 if compile_prog "" "$curses_lib" ; then
2862 curses_found=yes
2863 libs_softmmu="$curses_lib $libs_softmmu"
2864 break
2866 done
2867 unset IFS
2868 if test "$curses_found" = "yes" ; then
2869 curses=yes
2870 else
2871 if test "$curses" = "yes" ; then
2872 feature_not_found "curses" "Install ncurses devel"
2874 curses=no
2878 ##########################################
2879 # curl probe
2880 if test "$curl" != "no" ; then
2881 if $pkg_config libcurl --exists; then
2882 curlconfig="$pkg_config libcurl"
2883 else
2884 curlconfig=curl-config
2886 cat > $TMPC << EOF
2887 #include <curl/curl.h>
2888 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2890 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2891 curl_libs=`$curlconfig --libs 2>/dev/null`
2892 if compile_prog "$curl_cflags" "$curl_libs" ; then
2893 curl=yes
2894 else
2895 if test "$curl" = "yes" ; then
2896 feature_not_found "curl" "Install libcurl devel"
2898 curl=no
2900 fi # test "$curl"
2902 ##########################################
2903 # bluez support probe
2904 if test "$bluez" != "no" ; then
2905 cat > $TMPC << EOF
2906 #include <bluetooth/bluetooth.h>
2907 int main(void) { return bt_error(0); }
2909 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2910 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2911 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2912 bluez=yes
2913 libs_softmmu="$bluez_libs $libs_softmmu"
2914 else
2915 if test "$bluez" = "yes" ; then
2916 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2918 bluez="no"
2922 ##########################################
2923 # glib support probe
2925 glib_req_ver=2.22
2926 glib_modules=gthread-2.0
2927 if test "$modules" = yes; then
2928 glib_modules="$glib_modules gmodule-2.0"
2931 for i in $glib_modules; do
2932 if $pkg_config --atleast-version=$glib_req_ver $i; then
2933 glib_cflags=`$pkg_config --cflags $i`
2934 glib_libs=`$pkg_config --libs $i`
2935 CFLAGS="$glib_cflags $CFLAGS"
2936 LIBS="$glib_libs $LIBS"
2937 libs_qga="$glib_libs $libs_qga"
2938 else
2939 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2941 done
2943 # g_test_trap_subprocess added in 2.38. Used by some tests.
2944 glib_subprocess=yes
2945 if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2946 glib_subprocess=no
2949 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2950 cat > $TMPC << EOF
2951 #include <glib.h>
2952 int main(void) { return 0; }
2954 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2955 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2956 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2957 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2961 ##########################################
2962 # SHA command probe for modules
2963 if test "$modules" = yes; then
2964 shacmd_probe="sha1sum sha1 shasum"
2965 for c in $shacmd_probe; do
2966 if has $c; then
2967 shacmd="$c"
2968 break
2970 done
2971 if test "$shacmd" = ""; then
2972 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2976 ##########################################
2977 # pixman support probe
2979 if test "$pixman" = ""; then
2980 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2981 pixman="none"
2982 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
2983 pixman="system"
2984 else
2985 pixman="internal"
2988 if test "$pixman" = "none"; then
2989 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2990 error_exit "pixman disabled but system emulation or tools build" \
2991 "enabled. You can turn off pixman only if you also" \
2992 "disable all system emulation targets and the tools" \
2993 "build with '--disable-tools --disable-system'."
2995 pixman_cflags=
2996 pixman_libs=
2997 elif test "$pixman" = "system"; then
2998 # pixman version has been checked above
2999 pixman_cflags=`$pkg_config --cflags pixman-1`
3000 pixman_libs=`$pkg_config --libs pixman-1`
3001 else
3002 if test ! -d ${source_path}/pixman/pixman; then
3003 error_exit "pixman >= 0.21.8 not present. Your options:" \
3004 " (1) Preferred: Install the pixman devel package (any recent" \
3005 " distro should have packages as Xorg needs pixman too)." \
3006 " (2) Fetch the pixman submodule, using:" \
3007 " git submodule update --init pixman"
3009 mkdir -p pixman/pixman
3010 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3011 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3014 ##########################################
3015 # libcap probe
3017 if test "$cap" != "no" ; then
3018 cat > $TMPC <<EOF
3019 #include <stdio.h>
3020 #include <sys/capability.h>
3021 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3023 if compile_prog "" "-lcap" ; then
3024 cap=yes
3025 else
3026 cap=no
3030 ##########################################
3031 # pthread probe
3032 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
3034 pthread=no
3035 cat > $TMPC << EOF
3036 #include <pthread.h>
3037 static void *f(void *p) { return NULL; }
3038 int main(void) {
3039 pthread_t thread;
3040 pthread_create(&thread, 0, f, 0);
3041 return 0;
3044 if compile_prog "" "" ; then
3045 pthread=yes
3046 else
3047 for pthread_lib in $PTHREADLIBS_LIST; do
3048 if compile_prog "" "$pthread_lib" ; then
3049 pthread=yes
3050 found=no
3051 for lib_entry in $LIBS; do
3052 if test "$lib_entry" = "$pthread_lib"; then
3053 found=yes
3054 break
3056 done
3057 if test "$found" = "no"; then
3058 LIBS="$pthread_lib $LIBS"
3060 break
3062 done
3065 if test "$mingw32" != yes -a "$pthread" = no; then
3066 error_exit "pthread check failed" \
3067 "Make sure to have the pthread libs and headers installed."
3070 # check for pthread_setname_np
3071 pthread_setname_np=no
3072 cat > $TMPC << EOF
3073 #include <pthread.h>
3075 static void *f(void *p) { return NULL; }
3076 int main(void)
3078 pthread_t thread;
3079 pthread_create(&thread, 0, f, 0);
3080 pthread_setname_np(thread, "QEMU");
3081 return 0;
3084 if compile_prog "" "$pthread_lib" ; then
3085 pthread_setname_np=yes
3088 ##########################################
3089 # rbd probe
3090 if test "$rbd" != "no" ; then
3091 cat > $TMPC <<EOF
3092 #include <stdio.h>
3093 #include <rbd/librbd.h>
3094 int main(void) {
3095 rados_t cluster;
3096 rados_create(&cluster, NULL);
3097 return 0;
3100 rbd_libs="-lrbd -lrados"
3101 if compile_prog "" "$rbd_libs" ; then
3102 rbd=yes
3103 else
3104 if test "$rbd" = "yes" ; then
3105 feature_not_found "rados block device" "Install librbd/ceph devel"
3107 rbd=no
3111 ##########################################
3112 # libssh2 probe
3113 min_libssh2_version=1.2.8
3114 if test "$libssh2" != "no" ; then
3115 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
3116 libssh2_cflags=`$pkg_config libssh2 --cflags`
3117 libssh2_libs=`$pkg_config libssh2 --libs`
3118 libssh2=yes
3119 else
3120 if test "$libssh2" = "yes" ; then
3121 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
3123 libssh2=no
3127 ##########################################
3128 # libssh2_sftp_fsync probe
3130 if test "$libssh2" = "yes"; then
3131 cat > $TMPC <<EOF
3132 #include <stdio.h>
3133 #include <libssh2.h>
3134 #include <libssh2_sftp.h>
3135 int main(void) {
3136 LIBSSH2_SESSION *session;
3137 LIBSSH2_SFTP *sftp;
3138 LIBSSH2_SFTP_HANDLE *sftp_handle;
3139 session = libssh2_session_init ();
3140 sftp = libssh2_sftp_init (session);
3141 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3142 libssh2_sftp_fsync (sftp_handle);
3143 return 0;
3146 # libssh2_cflags/libssh2_libs defined in previous test.
3147 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3148 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3152 ##########################################
3153 # linux-aio probe
3155 if test "$linux_aio" != "no" ; then
3156 cat > $TMPC <<EOF
3157 #include <libaio.h>
3158 #include <sys/eventfd.h>
3159 #include <stddef.h>
3160 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3162 if compile_prog "" "-laio" ; then
3163 linux_aio=yes
3164 else
3165 if test "$linux_aio" = "yes" ; then
3166 feature_not_found "linux AIO" "Install libaio devel"
3168 linux_aio=no
3172 ##########################################
3173 # TPM passthrough is only on x86 Linux
3175 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3176 tpm_passthrough=$tpm
3177 else
3178 tpm_passthrough=no
3181 ##########################################
3182 # attr probe
3184 if test "$attr" != "no" ; then
3185 cat > $TMPC <<EOF
3186 #include <stdio.h>
3187 #include <sys/types.h>
3188 #ifdef CONFIG_LIBATTR
3189 #include <attr/xattr.h>
3190 #else
3191 #include <sys/xattr.h>
3192 #endif
3193 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3195 if compile_prog "" "" ; then
3196 attr=yes
3197 # Older distros have <attr/xattr.h>, and need -lattr:
3198 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3199 attr=yes
3200 LIBS="-lattr $LIBS"
3201 libattr=yes
3202 else
3203 if test "$attr" = "yes" ; then
3204 feature_not_found "ATTR" "Install libc6 or libattr devel"
3206 attr=no
3210 ##########################################
3211 # iovec probe
3212 cat > $TMPC <<EOF
3213 #include <sys/types.h>
3214 #include <sys/uio.h>
3215 #include <unistd.h>
3216 int main(void) { return sizeof(struct iovec); }
3218 iovec=no
3219 if compile_prog "" "" ; then
3220 iovec=yes
3223 ##########################################
3224 # preadv probe
3225 cat > $TMPC <<EOF
3226 #include <sys/types.h>
3227 #include <sys/uio.h>
3228 #include <unistd.h>
3229 int main(void) { return preadv(0, 0, 0, 0); }
3231 preadv=no
3232 if compile_prog "" "" ; then
3233 preadv=yes
3236 ##########################################
3237 # fdt probe
3238 # fdt support is mandatory for at least some target architectures,
3239 # so insist on it if we're building those system emulators.
3240 fdt_required=no
3241 for target in $target_list; do
3242 case $target in
3243 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3244 fdt_required=yes
3246 esac
3247 done
3249 if test "$fdt_required" = "yes"; then
3250 if test "$fdt" = "no"; then
3251 error_exit "fdt disabled but some requested targets require it." \
3252 "You can turn off fdt only if you also disable all the system emulation" \
3253 "targets which need it (by specifying a cut down --target-list)."
3255 fdt=yes
3258 if test "$fdt" != "no" ; then
3259 fdt_libs="-lfdt"
3260 # explicitly check for libfdt_env.h as it is missing in some stable installs
3261 # and test for required functions to make sure we are on a version >= 1.4.0
3262 cat > $TMPC << EOF
3263 #include <libfdt.h>
3264 #include <libfdt_env.h>
3265 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3267 if compile_prog "" "$fdt_libs" ; then
3268 # system DTC is good - use it
3269 fdt=yes
3270 elif test -d ${source_path}/dtc/libfdt ; then
3271 # have submodule DTC - use it
3272 fdt=yes
3273 dtc_internal="yes"
3274 mkdir -p dtc
3275 if [ "$pwd_is_source_path" != "y" ] ; then
3276 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3277 symlink "$source_path/dtc/scripts" "dtc/scripts"
3279 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3280 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3281 elif test "$fdt" = "yes" ; then
3282 # have neither and want - prompt for system/submodule install
3283 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3284 " (1) Preferred: Install the DTC (libfdt) devel package" \
3285 " (2) Fetch the DTC submodule, using:" \
3286 " git submodule update --init dtc"
3287 else
3288 # don't have and don't want
3289 fdt_libs=
3290 fdt=no
3294 libs_softmmu="$libs_softmmu $fdt_libs"
3296 ##########################################
3297 # opengl probe (for sdl2, gtk, milkymist-tmu2)
3299 if test "$opengl" != "no" ; then
3300 opengl_pkgs="epoxy"
3301 if $pkg_config $opengl_pkgs x11; then
3302 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3303 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3304 opengl=yes
3305 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3306 gtk_gl="yes"
3308 else
3309 if test "$opengl" = "yes" ; then
3310 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3312 opengl_cflags=""
3313 opengl_libs=""
3314 opengl=no
3319 ##########################################
3320 # archipelago probe
3321 if test "$archipelago" != "no" ; then
3322 cat > $TMPC <<EOF
3323 #include <stdio.h>
3324 #include <xseg/xseg.h>
3325 #include <xseg/protocol.h>
3326 int main(void) {
3327 xseg_initialize();
3328 return 0;
3331 archipelago_libs=-lxseg
3332 if compile_prog "" "$archipelago_libs"; then
3333 archipelago="yes"
3334 libs_tools="$archipelago_libs $libs_tools"
3335 libs_softmmu="$archipelago_libs $libs_softmmu"
3337 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3338 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3339 echo "license and therefore prevent redistribution."
3340 echo
3341 echo "To disable Archipelago, use --disable-archipelago"
3342 else
3343 if test "$archipelago" = "yes" ; then
3344 feature_not_found "Archipelago backend support" "Install libxseg devel"
3346 archipelago="no"
3351 ##########################################
3352 # glusterfs probe
3353 if test "$glusterfs" != "no" ; then
3354 if $pkg_config --atleast-version=3 glusterfs-api; then
3355 glusterfs="yes"
3356 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3357 glusterfs_libs=`$pkg_config --libs glusterfs-api`
3358 if $pkg_config --atleast-version=5 glusterfs-api; then
3359 glusterfs_discard="yes"
3361 if $pkg_config --atleast-version=6 glusterfs-api; then
3362 glusterfs_zerofill="yes"
3364 else
3365 if test "$glusterfs" = "yes" ; then
3366 feature_not_found "GlusterFS backend support" \
3367 "Install glusterfs-api devel >= 3"
3369 glusterfs="no"
3373 # Check for inotify functions when we are building linux-user
3374 # emulator. This is done because older glibc versions don't
3375 # have syscall stubs for these implemented. In that case we
3376 # don't provide them even if kernel supports them.
3378 inotify=no
3379 cat > $TMPC << EOF
3380 #include <sys/inotify.h>
3383 main(void)
3385 /* try to start inotify */
3386 return inotify_init();
3389 if compile_prog "" "" ; then
3390 inotify=yes
3393 inotify1=no
3394 cat > $TMPC << EOF
3395 #include <sys/inotify.h>
3398 main(void)
3400 /* try to start inotify */
3401 return inotify_init1(0);
3404 if compile_prog "" "" ; then
3405 inotify1=yes
3408 # check if utimensat and futimens are supported
3409 utimens=no
3410 cat > $TMPC << EOF
3411 #define _ATFILE_SOURCE
3412 #include <stddef.h>
3413 #include <fcntl.h>
3414 #include <sys/stat.h>
3416 int main(void)
3418 utimensat(AT_FDCWD, "foo", NULL, 0);
3419 futimens(0, NULL);
3420 return 0;
3423 if compile_prog "" "" ; then
3424 utimens=yes
3427 # check if pipe2 is there
3428 pipe2=no
3429 cat > $TMPC << EOF
3430 #include <unistd.h>
3431 #include <fcntl.h>
3433 int main(void)
3435 int pipefd[2];
3436 return pipe2(pipefd, O_CLOEXEC);
3439 if compile_prog "" "" ; then
3440 pipe2=yes
3443 # check if accept4 is there
3444 accept4=no
3445 cat > $TMPC << EOF
3446 #include <sys/socket.h>
3447 #include <stddef.h>
3449 int main(void)
3451 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3452 return 0;
3455 if compile_prog "" "" ; then
3456 accept4=yes
3459 # check if tee/splice is there. vmsplice was added same time.
3460 splice=no
3461 cat > $TMPC << EOF
3462 #include <unistd.h>
3463 #include <fcntl.h>
3464 #include <limits.h>
3466 int main(void)
3468 int len, fd = 0;
3469 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3470 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3471 return 0;
3474 if compile_prog "" "" ; then
3475 splice=yes
3478 ##########################################
3479 # libnuma probe
3481 if test "$numa" != "no" ; then
3482 cat > $TMPC << EOF
3483 #include <numa.h>
3484 int main(void) { return numa_available(); }
3487 if compile_prog "" "-lnuma" ; then
3488 numa=yes
3489 libs_softmmu="-lnuma $libs_softmmu"
3490 else
3491 if test "$numa" = "yes" ; then
3492 feature_not_found "numa" "install numactl devel"
3494 numa=no
3498 if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3499 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3500 exit 1
3503 ##########################################
3504 # tcmalloc probe
3506 if test "$tcmalloc" = "yes" ; then
3507 cat > $TMPC << EOF
3508 #include <stdlib.h>
3509 int main(void) { malloc(1); return 0; }
3512 if compile_prog "" "-ltcmalloc" ; then
3513 LIBS="-ltcmalloc $LIBS"
3514 else
3515 feature_not_found "tcmalloc" "install gperftools devel"
3519 ##########################################
3520 # jemalloc probe
3522 if test "$jemalloc" = "yes" ; then
3523 cat > $TMPC << EOF
3524 #include <stdlib.h>
3525 int main(void) { malloc(1); return 0; }
3528 if compile_prog "" "-ljemalloc" ; then
3529 LIBS="-ljemalloc $LIBS"
3530 else
3531 feature_not_found "jemalloc" "install jemalloc devel"
3535 ##########################################
3536 # signalfd probe
3537 signalfd="no"
3538 cat > $TMPC << EOF
3539 #include <unistd.h>
3540 #include <sys/syscall.h>
3541 #include <signal.h>
3542 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3545 if compile_prog "" "" ; then
3546 signalfd=yes
3549 # check if eventfd is supported
3550 eventfd=no
3551 cat > $TMPC << EOF
3552 #include <sys/eventfd.h>
3554 int main(void)
3556 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3559 if compile_prog "" "" ; then
3560 eventfd=yes
3563 # check if memfd is supported
3564 memfd=no
3565 cat > $TMPC << EOF
3566 #include <sys/memfd.h>
3568 int main(void)
3570 return memfd_create("foo", MFD_ALLOW_SEALING);
3573 if compile_prog "" "" ; then
3574 memfd=yes
3579 # check for fallocate
3580 fallocate=no
3581 cat > $TMPC << EOF
3582 #include <fcntl.h>
3584 int main(void)
3586 fallocate(0, 0, 0, 0);
3587 return 0;
3590 if compile_prog "" "" ; then
3591 fallocate=yes
3594 # check for fallocate hole punching
3595 fallocate_punch_hole=no
3596 cat > $TMPC << EOF
3597 #include <fcntl.h>
3598 #include <linux/falloc.h>
3600 int main(void)
3602 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3603 return 0;
3606 if compile_prog "" "" ; then
3607 fallocate_punch_hole=yes
3610 # check that fallocate supports range zeroing inside the file
3611 fallocate_zero_range=no
3612 cat > $TMPC << EOF
3613 #include <fcntl.h>
3614 #include <linux/falloc.h>
3616 int main(void)
3618 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3619 return 0;
3622 if compile_prog "" "" ; then
3623 fallocate_zero_range=yes
3626 # check for posix_fallocate
3627 posix_fallocate=no
3628 cat > $TMPC << EOF
3629 #include <fcntl.h>
3631 int main(void)
3633 posix_fallocate(0, 0, 0);
3634 return 0;
3637 if compile_prog "" "" ; then
3638 posix_fallocate=yes
3641 # check for sync_file_range
3642 sync_file_range=no
3643 cat > $TMPC << EOF
3644 #include <fcntl.h>
3646 int main(void)
3648 sync_file_range(0, 0, 0, 0);
3649 return 0;
3652 if compile_prog "" "" ; then
3653 sync_file_range=yes
3656 # check for linux/fiemap.h and FS_IOC_FIEMAP
3657 fiemap=no
3658 cat > $TMPC << EOF
3659 #include <sys/ioctl.h>
3660 #include <linux/fs.h>
3661 #include <linux/fiemap.h>
3663 int main(void)
3665 ioctl(0, FS_IOC_FIEMAP, 0);
3666 return 0;
3669 if compile_prog "" "" ; then
3670 fiemap=yes
3673 # check for dup3
3674 dup3=no
3675 cat > $TMPC << EOF
3676 #include <unistd.h>
3678 int main(void)
3680 dup3(0, 0, 0);
3681 return 0;
3684 if compile_prog "" "" ; then
3685 dup3=yes
3688 # check for ppoll support
3689 ppoll=no
3690 cat > $TMPC << EOF
3691 #include <poll.h>
3693 int main(void)
3695 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3696 ppoll(&pfd, 1, 0, 0);
3697 return 0;
3700 if compile_prog "" "" ; then
3701 ppoll=yes
3704 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3705 prctl_pr_set_timerslack=no
3706 cat > $TMPC << EOF
3707 #include <sys/prctl.h>
3709 int main(void)
3711 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3712 return 0;
3715 if compile_prog "" "" ; then
3716 prctl_pr_set_timerslack=yes
3719 # check for epoll support
3720 epoll=no
3721 cat > $TMPC << EOF
3722 #include <sys/epoll.h>
3724 int main(void)
3726 epoll_create(0);
3727 return 0;
3730 if compile_prog "" "" ; then
3731 epoll=yes
3734 # epoll_create1 and epoll_pwait are later additions
3735 # so we must check separately for their presence
3736 epoll_create1=no
3737 cat > $TMPC << EOF
3738 #include <sys/epoll.h>
3740 int main(void)
3742 /* Note that we use epoll_create1 as a value, not as
3743 * a function being called. This is necessary so that on
3744 * old SPARC glibc versions where the function was present in
3745 * the library but not declared in the header file we will
3746 * fail the configure check. (Otherwise we will get a compiler
3747 * warning but not an error, and will proceed to fail the
3748 * qemu compile where we compile with -Werror.)
3750 return (int)(uintptr_t)&epoll_create1;
3753 if compile_prog "" "" ; then
3754 epoll_create1=yes
3757 epoll_pwait=no
3758 cat > $TMPC << EOF
3759 #include <sys/epoll.h>
3761 int main(void)
3763 epoll_pwait(0, 0, 0, 0, 0);
3764 return 0;
3767 if compile_prog "" "" ; then
3768 epoll_pwait=yes
3771 # check for sendfile support
3772 sendfile=no
3773 cat > $TMPC << EOF
3774 #include <sys/sendfile.h>
3776 int main(void)
3778 return sendfile(0, 0, 0, 0);
3781 if compile_prog "" "" ; then
3782 sendfile=yes
3785 # check for timerfd support (glibc 2.8 and newer)
3786 timerfd=no
3787 cat > $TMPC << EOF
3788 #include <sys/timerfd.h>
3790 int main(void)
3792 return(timerfd_create(CLOCK_REALTIME, 0));
3795 if compile_prog "" "" ; then
3796 timerfd=yes
3799 # check for setns and unshare support
3800 setns=no
3801 cat > $TMPC << EOF
3802 #include <sched.h>
3804 int main(void)
3806 int ret;
3807 ret = setns(0, 0);
3808 ret = unshare(0);
3809 return ret;
3812 if compile_prog "" "" ; then
3813 setns=yes
3816 # Check if tools are available to build documentation.
3817 if test "$docs" != "no" ; then
3818 if has makeinfo && has pod2man; then
3819 docs=yes
3820 else
3821 if test "$docs" = "yes" ; then
3822 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
3824 docs=no
3828 # Search for bswap_32 function
3829 byteswap_h=no
3830 cat > $TMPC << EOF
3831 #include <byteswap.h>
3832 int main(void) { return bswap_32(0); }
3834 if compile_prog "" "" ; then
3835 byteswap_h=yes
3838 # Search for bswap32 function
3839 bswap_h=no
3840 cat > $TMPC << EOF
3841 #include <sys/endian.h>
3842 #include <sys/types.h>
3843 #include <machine/bswap.h>
3844 int main(void) { return bswap32(0); }
3846 if compile_prog "" "" ; then
3847 bswap_h=yes
3850 ##########################################
3851 # Do we have libiscsi >= 1.9.0
3852 if test "$libiscsi" != "no" ; then
3853 if $pkg_config --atleast-version=1.9.0 libiscsi; then
3854 libiscsi="yes"
3855 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3856 libiscsi_libs=$($pkg_config --libs libiscsi)
3857 else
3858 if test "$libiscsi" = "yes" ; then
3859 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
3861 libiscsi="no"
3865 ##########################################
3866 # Do we need libm
3867 cat > $TMPC << EOF
3868 #include <math.h>
3869 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3871 if compile_prog "" "" ; then
3873 elif compile_prog "" "-lm" ; then
3874 LIBS="-lm $LIBS"
3875 libs_qga="-lm $libs_qga"
3876 else
3877 error_exit "libm check failed"
3880 ##########################################
3881 # Do we need librt
3882 # uClibc provides 2 versions of clock_gettime(), one with realtime
3883 # support and one without. This means that the clock_gettime() don't
3884 # need -lrt. We still need it for timer_create() so we check for this
3885 # function in addition.
3886 cat > $TMPC <<EOF
3887 #include <signal.h>
3888 #include <time.h>
3889 int main(void) {
3890 timer_create(CLOCK_REALTIME, NULL, NULL);
3891 return clock_gettime(CLOCK_REALTIME, NULL);
3895 if compile_prog "" "" ; then
3897 # we need pthread for static linking. use previous pthread test result
3898 elif compile_prog "" "$pthread_lib -lrt" ; then
3899 LIBS="$LIBS -lrt"
3900 libs_qga="$libs_qga -lrt"
3903 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3904 "$aix" != "yes" -a "$haiku" != "yes" ; then
3905 libs_softmmu="-lutil $libs_softmmu"
3908 ##########################################
3909 # spice probe
3910 if test "$spice" != "no" ; then
3911 cat > $TMPC << EOF
3912 #include <spice.h>
3913 int main(void) { spice_server_new(); return 0; }
3915 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3916 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
3917 if $pkg_config --atleast-version=0.12.0 spice-server && \
3918 $pkg_config --atleast-version=0.12.3 spice-protocol && \
3919 compile_prog "$spice_cflags" "$spice_libs" ; then
3920 spice="yes"
3921 libs_softmmu="$libs_softmmu $spice_libs"
3922 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
3923 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3924 spice_server_version=$($pkg_config --modversion spice-server)
3925 else
3926 if test "$spice" = "yes" ; then
3927 feature_not_found "spice" \
3928 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3930 spice="no"
3934 # check for smartcard support
3935 smartcard_cflags=""
3936 if test "$smartcard" != "no"; then
3937 if $pkg_config libcacard; then
3938 libcacard_cflags=$($pkg_config --cflags libcacard)
3939 libcacard_libs=$($pkg_config --libs libcacard)
3940 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3941 libs_softmmu="$libs_softmmu $libcacard_libs"
3942 smartcard="yes"
3943 else
3944 if test "$smartcard" = "yes"; then
3945 feature_not_found "smartcard" "Install libcacard devel"
3947 smartcard="no"
3951 # check for libusb
3952 if test "$libusb" != "no" ; then
3953 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
3954 libusb="yes"
3955 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3956 libusb_libs=$($pkg_config --libs libusb-1.0)
3957 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3958 libs_softmmu="$libs_softmmu $libusb_libs"
3959 else
3960 if test "$libusb" = "yes"; then
3961 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
3963 libusb="no"
3967 # check for usbredirparser for usb network redirection support
3968 if test "$usb_redir" != "no" ; then
3969 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
3970 usb_redir="yes"
3971 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3972 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
3973 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
3974 libs_softmmu="$libs_softmmu $usb_redir_libs"
3975 else
3976 if test "$usb_redir" = "yes"; then
3977 feature_not_found "usb-redir" "Install usbredir devel"
3979 usb_redir="no"
3983 ##########################################
3984 # check if we have VSS SDK headers for win
3986 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3987 case "$vss_win32_sdk" in
3988 "") vss_win32_include="-I$source_path" ;;
3989 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3990 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3991 vss_win32_include="-I$source_path/.sdk/vss"
3992 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3994 *) vss_win32_include="-I$vss_win32_sdk"
3995 esac
3996 cat > $TMPC << EOF
3997 #define __MIDL_user_allocate_free_DEFINED__
3998 #include <inc/win2003/vss.h>
3999 int main(void) { return VSS_CTX_BACKUP; }
4001 if compile_prog "$vss_win32_include" "" ; then
4002 guest_agent_with_vss="yes"
4003 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4004 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4005 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4006 else
4007 if test "$vss_win32_sdk" != "" ; then
4008 echo "ERROR: Please download and install Microsoft VSS SDK:"
4009 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4010 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4011 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4012 echo "ERROR: The headers are extracted in the directory \`inc'."
4013 feature_not_found "VSS support"
4015 guest_agent_with_vss="no"
4019 ##########################################
4020 # lookup Windows platform SDK (if not specified)
4021 # The SDK is needed only to build .tlb (type library) file of guest agent
4022 # VSS provider from the source. It is usually unnecessary because the
4023 # pre-compiled .tlb file is included.
4025 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4026 if test -z "$win_sdk"; then
4027 programfiles="$PROGRAMFILES"
4028 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4029 if test -n "$programfiles"; then
4030 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4031 else
4032 feature_not_found "Windows SDK"
4034 elif test "$win_sdk" = "no"; then
4035 win_sdk=""
4039 ##########################################
4040 # check if mingw environment provides a recent ntddscsi.h
4041 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4042 cat > $TMPC << EOF
4043 #include <windows.h>
4044 #include <ntddscsi.h>
4045 int main(void) {
4046 #if !defined(IOCTL_SCSI_GET_ADDRESS)
4047 #error Missing required ioctl definitions
4048 #endif
4049 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4050 return addr.Lun;
4053 if compile_prog "" "" ; then
4054 guest_agent_ntddscsi=yes
4055 libs_qga="-lsetupapi $libs_qga"
4059 ##########################################
4060 # virgl renderer probe
4062 if test "$virglrenderer" != "no" ; then
4063 cat > $TMPC << EOF
4064 #include <virglrenderer.h>
4065 int main(void) { virgl_renderer_poll(); return 0; }
4067 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4068 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4069 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4070 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4071 virglrenderer="yes"
4072 else
4073 if test "$virglrenderer" = "yes" ; then
4074 feature_not_found "virglrenderer"
4076 virglrenderer="no"
4080 ##########################################
4081 # check if we have fdatasync
4083 fdatasync=no
4084 cat > $TMPC << EOF
4085 #include <unistd.h>
4086 int main(void) {
4087 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4088 return fdatasync(0);
4089 #else
4090 #error Not supported
4091 #endif
4094 if compile_prog "" "" ; then
4095 fdatasync=yes
4098 ##########################################
4099 # check if we have madvise
4101 madvise=no
4102 cat > $TMPC << EOF
4103 #include <sys/types.h>
4104 #include <sys/mman.h>
4105 #include <stddef.h>
4106 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4108 if compile_prog "" "" ; then
4109 madvise=yes
4112 ##########################################
4113 # check if we have posix_madvise
4115 posix_madvise=no
4116 cat > $TMPC << EOF
4117 #include <sys/mman.h>
4118 #include <stddef.h>
4119 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4121 if compile_prog "" "" ; then
4122 posix_madvise=yes
4125 ##########################################
4126 # check if we have usable SIGEV_THREAD_ID
4128 sigev_thread_id=no
4129 cat > $TMPC << EOF
4130 #include <signal.h>
4131 int main(void) {
4132 struct sigevent ev;
4133 ev.sigev_notify = SIGEV_THREAD_ID;
4134 ev._sigev_un._tid = 0;
4135 asm volatile("" : : "g"(&ev));
4136 return 0;
4139 if compile_prog "" "" ; then
4140 sigev_thread_id=yes
4143 ##########################################
4144 # check if trace backend exists
4146 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4147 if test "$?" -ne 0 ; then
4148 error_exit "invalid trace backends" \
4149 "Please choose supported trace backends."
4152 ##########################################
4153 # For 'ust' backend, test if ust headers are present
4154 if have_backend "ust"; then
4155 cat > $TMPC << EOF
4156 #include <lttng/tracepoint.h>
4157 int main(void) { return 0; }
4159 if compile_prog "" "" ; then
4160 if $pkg_config lttng-ust --exists; then
4161 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4162 else
4163 lttng_ust_libs="-llttng-ust"
4165 if $pkg_config liburcu-bp --exists; then
4166 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4167 else
4168 urcu_bp_libs="-lurcu-bp"
4171 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4172 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4173 else
4174 error_exit "Trace backend 'ust' missing lttng-ust header files"
4178 ##########################################
4179 # For 'dtrace' backend, test if 'dtrace' command is present
4180 if have_backend "dtrace"; then
4181 if ! has 'dtrace' ; then
4182 error_exit "dtrace command is not found in PATH $PATH"
4184 trace_backend_stap="no"
4185 if has 'stap' ; then
4186 trace_backend_stap="yes"
4190 ##########################################
4191 # check and set a backend for coroutine
4193 # We prefer ucontext, but it's not always possible. The fallback
4194 # is sigcontext. gthread is not selectable except explicitly, because
4195 # it is not functional enough to run QEMU proper. (It is occasionally
4196 # useful for debugging purposes.) On Windows the only valid backend
4197 # is the Windows-specific one.
4199 ucontext_works=no
4200 if test "$darwin" != "yes"; then
4201 cat > $TMPC << EOF
4202 #include <ucontext.h>
4203 #ifdef __stub_makecontext
4204 #error Ignoring glibc stub makecontext which will always fail
4205 #endif
4206 int main(void) { makecontext(0, 0, 0); return 0; }
4208 if compile_prog "" "" ; then
4209 ucontext_works=yes
4213 if test "$coroutine" = ""; then
4214 if test "$mingw32" = "yes"; then
4215 coroutine=win32
4216 elif test "$ucontext_works" = "yes"; then
4217 coroutine=ucontext
4218 else
4219 coroutine=sigaltstack
4221 else
4222 case $coroutine in
4223 windows)
4224 if test "$mingw32" != "yes"; then
4225 error_exit "'windows' coroutine backend only valid for Windows"
4227 # Unfortunately the user visible backend name doesn't match the
4228 # coroutine-*.c filename for this case, so we have to adjust it here.
4229 coroutine=win32
4231 ucontext)
4232 if test "$ucontext_works" != "yes"; then
4233 feature_not_found "ucontext"
4236 gthread|sigaltstack)
4237 if test "$mingw32" = "yes"; then
4238 error_exit "only the 'windows' coroutine backend is valid for Windows"
4242 error_exit "unknown coroutine backend $coroutine"
4244 esac
4247 if test "$coroutine_pool" = ""; then
4248 if test "$coroutine" = "gthread"; then
4249 coroutine_pool=no
4250 else
4251 coroutine_pool=yes
4254 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4255 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4258 ##########################################
4259 # check if we have open_by_handle_at
4261 open_by_handle_at=no
4262 cat > $TMPC << EOF
4263 #include <fcntl.h>
4264 #if !defined(AT_EMPTY_PATH)
4265 # error missing definition
4266 #else
4267 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4268 #endif
4270 if compile_prog "" "" ; then
4271 open_by_handle_at=yes
4274 ########################################
4275 # check if we have linux/magic.h
4277 linux_magic_h=no
4278 cat > $TMPC << EOF
4279 #include <linux/magic.h>
4280 int main(void) {
4281 return 0;
4284 if compile_prog "" "" ; then
4285 linux_magic_h=yes
4288 ########################################
4289 # check whether we can disable warning option with a pragma (this is needed
4290 # to silence warnings in the headers of some versions of external libraries).
4291 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4292 # only a warning.
4294 # If we can't selectively disable warning in the code, disable -Werror so that
4295 # the build doesn't fail anyway.
4297 pragma_disable_unused_but_set=no
4298 cat > $TMPC << EOF
4299 #pragma GCC diagnostic push
4300 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4301 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4302 #pragma GCC diagnostic pop
4304 int main(void) {
4305 return 0;
4308 if compile_prog "-Werror" "" ; then
4309 pragma_diagnostic_available=yes
4310 else
4311 werror=no
4314 ########################################
4315 # check if we have valgrind/valgrind.h
4317 valgrind_h=no
4318 cat > $TMPC << EOF
4319 #include <valgrind/valgrind.h>
4320 int main(void) {
4321 return 0;
4324 if compile_prog "" "" ; then
4325 valgrind_h=yes
4328 ########################################
4329 # check if environ is declared
4331 has_environ=no
4332 cat > $TMPC << EOF
4333 #include <unistd.h>
4334 int main(void) {
4335 environ = 0;
4336 return 0;
4339 if compile_prog "" "" ; then
4340 has_environ=yes
4343 ########################################
4344 # check if cpuid.h is usable.
4346 cpuid_h=no
4347 cat > $TMPC << EOF
4348 #include <cpuid.h>
4349 int main(void) {
4350 unsigned a, b, c, d;
4351 int max = __get_cpuid_max(0, 0);
4353 if (max >= 1) {
4354 __cpuid(1, a, b, c, d);
4357 if (max >= 7) {
4358 __cpuid_count(7, 0, a, b, c, d);
4361 return 0;
4364 if compile_prog "" "" ; then
4365 cpuid_h=yes
4368 ########################################
4369 # check if __[u]int128_t is usable.
4371 int128=no
4372 cat > $TMPC << EOF
4373 #if defined(__clang_major__) && defined(__clang_minor__)
4374 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4375 # error __int128_t does not work in CLANG before 3.2
4376 # endif
4377 #endif
4378 __int128_t a;
4379 __uint128_t b;
4380 int main (void) {
4381 a = a + b;
4382 b = a * b;
4383 a = a * a;
4384 return 0;
4387 if compile_prog "" "" ; then
4388 int128=yes
4391 ########################################
4392 # check if getauxval is available.
4394 getauxval=no
4395 cat > $TMPC << EOF
4396 #include <sys/auxv.h>
4397 int main(void) {
4398 return getauxval(AT_HWCAP) == 0;
4401 if compile_prog "" "" ; then
4402 getauxval=yes
4405 ########################################
4406 # check if ccache is interfering with
4407 # semantic analysis of macros
4409 unset CCACHE_CPP2
4410 ccache_cpp2=no
4411 cat > $TMPC << EOF
4412 static const int Z = 1;
4413 #define fn() ({ Z; })
4414 #define TAUT(X) ((X) == Z)
4415 #define PAREN(X, Y) (X == Y)
4416 #define ID(X) (X)
4417 int main(int argc, char *argv[])
4419 int x = 0, y = 0;
4420 x = ID(x);
4421 x = fn();
4422 fn();
4423 if (PAREN(x, y)) return 0;
4424 if (TAUT(Z)) return 0;
4425 return 0;
4429 if ! compile_object "-Werror"; then
4430 ccache_cpp2=yes
4433 #################################################
4434 # clang does not support glibc + FORTIFY_SOURCE.
4436 if test "$fortify_source" != "no"; then
4437 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4438 fortify_source="no";
4439 elif echo | $cxx -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4440 fortify_source="no";
4441 else
4442 fortify_source="yes"
4446 ##########################################
4447 # End of CC checks
4448 # After here, no more $cc or $ld runs
4450 if test "$gcov" = "yes" ; then
4451 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4452 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4453 elif test "$fortify_source" = "yes" ; then
4454 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4457 ##########################################
4458 # Do we have libnfs
4459 if test "$libnfs" != "no" ; then
4460 if $pkg_config --atleast-version=1.9.3 libnfs; then
4461 libnfs="yes"
4462 libnfs_libs=$($pkg_config --libs libnfs)
4463 LIBS="$LIBS $libnfs_libs"
4464 else
4465 if test "$libnfs" = "yes" ; then
4466 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4468 libnfs="no"
4472 # Disable zero malloc errors for official releases unless explicitly told to
4473 # enable/disable
4474 if test -z "$zero_malloc" ; then
4475 if test "$z_version" = "50" ; then
4476 zero_malloc="no"
4477 else
4478 zero_malloc="yes"
4482 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4483 if test "$werror" = "yes"; then
4484 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4487 if test "$solaris" = "no" ; then
4488 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
4489 LDFLAGS="-Wl,--warn-common $LDFLAGS"
4493 # test if pod2man has --utf8 option
4494 if pod2man --help | grep -q utf8; then
4495 POD2MAN="pod2man --utf8"
4496 else
4497 POD2MAN="pod2man"
4500 # Use ASLR, no-SEH and DEP if available
4501 if test "$mingw32" = "yes" ; then
4502 for flag in --dynamicbase --no-seh --nxcompat; do
4503 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4504 LDFLAGS="-Wl,$flag $LDFLAGS"
4506 done
4509 qemu_confdir=$sysconfdir$confsuffix
4510 qemu_moddir=$libdir$confsuffix
4511 qemu_datadir=$datadir$confsuffix
4512 qemu_localedir="$datadir/locale"
4514 tools=""
4515 if test "$want_tools" = "yes" ; then
4516 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4517 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4518 tools="qemu-nbd\$(EXESUF) $tools"
4519 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4522 if test "$softmmu" = yes ; then
4523 if test "$virtfs" != no ; then
4524 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4525 virtfs=yes
4526 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4527 else
4528 if test "$virtfs" = yes; then
4529 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4531 virtfs=no
4536 # Probe for guest agent support/options
4538 if [ "$guest_agent" != "no" ]; then
4539 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4540 tools="qemu-ga $tools"
4541 guest_agent=yes
4542 elif [ "$guest_agent" != yes ]; then
4543 guest_agent=no
4544 else
4545 error_exit "Guest agent is not supported on this platform"
4549 # Guest agent Window MSI package
4551 if test "$guest_agent" != yes; then
4552 if test "$guest_agent_msi" = yes; then
4553 error_exit "MSI guest agent package requires guest agent enabled"
4555 guest_agent_msi=no
4556 elif test "$mingw32" != "yes"; then
4557 if test "$guest_agent_msi" = "yes"; then
4558 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4560 guest_agent_msi=no
4561 elif ! has wixl; then
4562 if test "$guest_agent_msi" = "yes"; then
4563 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4565 guest_agent_msi=no
4566 else
4567 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4568 # disabled explicitly
4569 if test "$guest_agent_msi" != "no"; then
4570 guest_agent_msi=yes
4574 if test "$guest_agent_msi" = "yes"; then
4575 if test "$guest_agent_with_vss" = "yes"; then
4576 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4579 if test "$QEMU_GA_MANUFACTURER" = ""; then
4580 QEMU_GA_MANUFACTURER=QEMU
4583 if test "$QEMU_GA_DISTRO" = ""; then
4584 QEMU_GA_DISTRO=Linux
4587 if test "$QEMU_GA_VERSION" = ""; then
4588 QEMU_GA_VERSION=`cat $source_path/VERSION`
4591 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4593 case "$cpu" in
4594 x86_64)
4595 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4597 i386)
4598 QEMU_GA_MSI_ARCH="-D Arch=32"
4601 error_exit "CPU $cpu not supported for building installation package"
4603 esac
4606 # Mac OS X ships with a broken assembler
4607 roms=
4608 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4609 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4610 "$softmmu" = yes ; then
4611 roms="optionrom"
4613 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4614 roms="$roms spapr-rtas"
4617 if test "$cpu" = "s390x" ; then
4618 roms="$roms s390-ccw"
4621 # Probe for the need for relocating the user-only binary.
4622 if test "$pie" = "no" ; then
4623 textseg_addr=
4624 case "$cpu" in
4625 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4626 # ??? Rationale for choosing this address
4627 textseg_addr=0x60000000
4629 mips)
4630 # A 256M aligned address, high in the address space, with enough
4631 # room for the code_gen_buffer above it before the stack.
4632 textseg_addr=0x60000000
4634 esac
4635 if [ -n "$textseg_addr" ]; then
4636 cat > $TMPC <<EOF
4637 int main(void) { return 0; }
4639 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4640 if ! compile_prog "" "$textseg_ldflags"; then
4641 # In case ld does not support -Ttext-segment, edit the default linker
4642 # script via sed to set the .text start addr. This is needed on FreeBSD
4643 # at least.
4644 $ld --verbose | sed \
4645 -e '1,/==================================================/d' \
4646 -e '/==================================================/,$d' \
4647 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4648 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4649 textseg_ldflags="-Wl,-T../config-host.ld"
4654 # prepend pixman and ftd flags after all config tests are done
4655 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4656 libs_softmmu="$pixman_libs $libs_softmmu"
4658 echo "Install prefix $prefix"
4659 echo "BIOS directory `eval echo $qemu_datadir`"
4660 echo "binary directory `eval echo $bindir`"
4661 echo "library directory `eval echo $libdir`"
4662 echo "module directory `eval echo $qemu_moddir`"
4663 echo "libexec directory `eval echo $libexecdir`"
4664 echo "include directory `eval echo $includedir`"
4665 echo "config directory `eval echo $sysconfdir`"
4666 if test "$mingw32" = "no" ; then
4667 echo "local state directory `eval echo $local_statedir`"
4668 echo "Manual directory `eval echo $mandir`"
4669 echo "ELF interp prefix $interp_prefix"
4670 else
4671 echo "local state directory queried at runtime"
4672 echo "Windows SDK $win_sdk"
4674 echo "Source path $source_path"
4675 echo "C compiler $cc"
4676 echo "Host C compiler $host_cc"
4677 echo "C++ compiler $cxx"
4678 echo "Objective-C compiler $objcc"
4679 echo "ARFLAGS $ARFLAGS"
4680 echo "CFLAGS $CFLAGS"
4681 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4682 echo "LDFLAGS $LDFLAGS"
4683 echo "make $make"
4684 echo "install $install"
4685 echo "python $python"
4686 if test "$slirp" = "yes" ; then
4687 echo "smbd $smbd"
4689 echo "module support $modules"
4690 echo "host CPU $cpu"
4691 echo "host big endian $bigendian"
4692 echo "target list $target_list"
4693 echo "tcg debug enabled $debug_tcg"
4694 echo "gprof enabled $gprof"
4695 echo "sparse enabled $sparse"
4696 echo "strip binaries $strip_opt"
4697 echo "profiler $profiler"
4698 echo "static build $static"
4699 if test "$darwin" = "yes" ; then
4700 echo "Cocoa support $cocoa"
4702 echo "pixman $pixman"
4703 echo "SDL support $sdl"
4704 echo "GTK support $gtk"
4705 echo "GTK GL support $gtk_gl"
4706 echo "GNUTLS support $gnutls"
4707 echo "GNUTLS hash $gnutls_hash"
4708 echo "libgcrypt $gcrypt"
4709 echo "nettle $nettle ${nettle+($nettle_version)}"
4710 echo "libtasn1 $tasn1"
4711 echo "VTE support $vte"
4712 echo "curses support $curses"
4713 echo "virgl support $virglrenderer"
4714 echo "curl support $curl"
4715 echo "mingw32 support $mingw32"
4716 echo "Audio drivers $audio_drv_list"
4717 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4718 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4719 echo "VirtFS support $virtfs"
4720 echo "VNC support $vnc"
4721 if test "$vnc" = "yes" ; then
4722 echo "VNC SASL support $vnc_sasl"
4723 echo "VNC JPEG support $vnc_jpeg"
4724 echo "VNC PNG support $vnc_png"
4726 if test -n "$sparc_cpu"; then
4727 echo "Target Sparc Arch $sparc_cpu"
4729 echo "xen support $xen"
4730 if test "$xen" = "yes" ; then
4731 echo "xen ctrl version $xen_ctrl_version"
4733 echo "brlapi support $brlapi"
4734 echo "bluez support $bluez"
4735 echo "Documentation $docs"
4736 echo "PIE $pie"
4737 echo "vde support $vde"
4738 echo "netmap support $netmap"
4739 echo "Linux AIO support $linux_aio"
4740 echo "ATTR/XATTR support $attr"
4741 echo "Install blobs $blobs"
4742 echo "KVM support $kvm"
4743 echo "RDMA support $rdma"
4744 echo "TCG interpreter $tcg_interpreter"
4745 echo "fdt support $fdt"
4746 echo "preadv support $preadv"
4747 echo "fdatasync $fdatasync"
4748 echo "madvise $madvise"
4749 echo "posix_madvise $posix_madvise"
4750 echo "sigev_thread_id $sigev_thread_id"
4751 echo "uuid support $uuid"
4752 echo "libcap-ng support $cap_ng"
4753 echo "vhost-net support $vhost_net"
4754 echo "vhost-scsi support $vhost_scsi"
4755 echo "Trace backends $trace_backends"
4756 if test "$trace_backend" = "simple"; then
4757 echo "Trace output file $trace_file-<pid>"
4759 if test "$spice" = "yes"; then
4760 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4761 else
4762 echo "spice support $spice"
4764 echo "rbd support $rbd"
4765 echo "xfsctl support $xfs"
4766 echo "smartcard support $smartcard"
4767 echo "libusb $libusb"
4768 echo "usb net redir $usb_redir"
4769 echo "OpenGL support $opengl"
4770 echo "libiscsi support $libiscsi"
4771 echo "libnfs support $libnfs"
4772 echo "build guest agent $guest_agent"
4773 echo "QGA VSS support $guest_agent_with_vss"
4774 echo "QGA w32 disk info $guest_agent_ntddscsi"
4775 echo "QGA MSI support $guest_agent_msi"
4776 echo "seccomp support $seccomp"
4777 echo "coroutine backend $coroutine"
4778 echo "coroutine pool $coroutine_pool"
4779 echo "GlusterFS support $glusterfs"
4780 echo "Archipelago support $archipelago"
4781 echo "gcov $gcov_tool"
4782 echo "gcov enabled $gcov"
4783 echo "TPM support $tpm"
4784 echo "libssh2 support $libssh2"
4785 echo "TPM passthrough $tpm_passthrough"
4786 echo "QOM debugging $qom_cast_debug"
4787 echo "vhdx $vhdx"
4788 echo "lzo support $lzo"
4789 echo "snappy support $snappy"
4790 echo "bzip2 support $bzip2"
4791 echo "NUMA host support $numa"
4792 echo "tcmalloc support $tcmalloc"
4793 echo "jemalloc support $jemalloc"
4795 if test "$sdl_too_old" = "yes"; then
4796 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4799 config_host_mak="config-host.mak"
4801 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4803 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4804 echo >> $config_host_mak
4806 echo all: >> $config_host_mak
4807 echo "prefix=$prefix" >> $config_host_mak
4808 echo "bindir=$bindir" >> $config_host_mak
4809 echo "libdir=$libdir" >> $config_host_mak
4810 echo "libexecdir=$libexecdir" >> $config_host_mak
4811 echo "includedir=$includedir" >> $config_host_mak
4812 echo "mandir=$mandir" >> $config_host_mak
4813 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4814 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4815 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4816 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4817 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4818 if test "$mingw32" = "no" ; then
4819 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4821 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4822 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4823 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4824 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4825 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4827 echo "ARCH=$ARCH" >> $config_host_mak
4829 if test "$debug_tcg" = "yes" ; then
4830 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4832 if test "$strip_opt" = "yes" ; then
4833 echo "STRIP=${strip}" >> $config_host_mak
4835 if test "$bigendian" = "yes" ; then
4836 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4838 if test "$mingw32" = "yes" ; then
4839 echo "CONFIG_WIN32=y" >> $config_host_mak
4840 rc_version=`cat $source_path/VERSION`
4841 version_major=${rc_version%%.*}
4842 rc_version=${rc_version#*.}
4843 version_minor=${rc_version%%.*}
4844 rc_version=${rc_version#*.}
4845 version_subminor=${rc_version%%.*}
4846 version_micro=0
4847 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4848 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4849 if test "$guest_agent_with_vss" = "yes" ; then
4850 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4851 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
4852 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4854 if test "$guest_agent_ntddscsi" = "yes" ; then
4855 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4857 if test "$guest_agent_msi" = "yes"; then
4858 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4859 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4860 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4861 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4862 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4863 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4864 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4866 else
4867 echo "CONFIG_POSIX=y" >> $config_host_mak
4870 if test "$linux" = "yes" ; then
4871 echo "CONFIG_LINUX=y" >> $config_host_mak
4874 if test "$darwin" = "yes" ; then
4875 echo "CONFIG_DARWIN=y" >> $config_host_mak
4878 if test "$aix" = "yes" ; then
4879 echo "CONFIG_AIX=y" >> $config_host_mak
4882 if test "$solaris" = "yes" ; then
4883 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4884 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4885 if test "$needs_libsunmath" = "yes" ; then
4886 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4889 if test "$haiku" = "yes" ; then
4890 echo "CONFIG_HAIKU=y" >> $config_host_mak
4892 if test "$static" = "yes" ; then
4893 echo "CONFIG_STATIC=y" >> $config_host_mak
4895 if test "$profiler" = "yes" ; then
4896 echo "CONFIG_PROFILER=y" >> $config_host_mak
4898 if test "$slirp" = "yes" ; then
4899 echo "CONFIG_SLIRP=y" >> $config_host_mak
4900 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4902 if test "$vde" = "yes" ; then
4903 echo "CONFIG_VDE=y" >> $config_host_mak
4905 if test "$netmap" = "yes" ; then
4906 echo "CONFIG_NETMAP=y" >> $config_host_mak
4908 if test "$l2tpv3" = "yes" ; then
4909 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4911 if test "$cap_ng" = "yes" ; then
4912 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4914 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4915 for drv in $audio_drv_list; do
4916 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4917 echo "$def=y" >> $config_host_mak
4918 done
4919 if test "$audio_pt_int" = "yes" ; then
4920 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4922 if test "$audio_win_int" = "yes" ; then
4923 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4925 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4926 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4927 if test "$vnc" = "yes" ; then
4928 echo "CONFIG_VNC=y" >> $config_host_mak
4930 if test "$vnc_sasl" = "yes" ; then
4931 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4933 if test "$vnc_jpeg" = "yes" ; then
4934 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4936 if test "$vnc_png" = "yes" ; then
4937 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4939 if test "$fnmatch" = "yes" ; then
4940 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4942 if test "$uuid" = "yes" ; then
4943 echo "CONFIG_UUID=y" >> $config_host_mak
4945 if test "$xfs" = "yes" ; then
4946 echo "CONFIG_XFS=y" >> $config_host_mak
4948 qemu_version=`head $source_path/VERSION`
4949 echo "VERSION=$qemu_version" >>$config_host_mak
4950 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4951 echo "SRC_PATH=$source_path" >> $config_host_mak
4952 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4953 if [ "$docs" = "yes" ] ; then
4954 echo "BUILD_DOCS=yes" >> $config_host_mak
4956 if test "$modules" = "yes"; then
4957 # $shacmd can generate a hash started with digit, which the compiler doesn't
4958 # like as an symbol. So prefix it with an underscore
4959 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4960 echo "CONFIG_MODULES=y" >> $config_host_mak
4962 if test "$sdl" = "yes" ; then
4963 echo "CONFIG_SDL=y" >> $config_host_mak
4964 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4965 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4967 if test "$cocoa" = "yes" ; then
4968 echo "CONFIG_COCOA=y" >> $config_host_mak
4970 if test "$curses" = "yes" ; then
4971 echo "CONFIG_CURSES=y" >> $config_host_mak
4973 if test "$utimens" = "yes" ; then
4974 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4976 if test "$pipe2" = "yes" ; then
4977 echo "CONFIG_PIPE2=y" >> $config_host_mak
4979 if test "$accept4" = "yes" ; then
4980 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4982 if test "$splice" = "yes" ; then
4983 echo "CONFIG_SPLICE=y" >> $config_host_mak
4985 if test "$eventfd" = "yes" ; then
4986 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4988 if test "$memfd" = "yes" ; then
4989 echo "CONFIG_MEMFD=y" >> $config_host_mak
4991 if test "$fallocate" = "yes" ; then
4992 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4994 if test "$fallocate_punch_hole" = "yes" ; then
4995 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4997 if test "$fallocate_zero_range" = "yes" ; then
4998 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5000 if test "$posix_fallocate" = "yes" ; then
5001 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5003 if test "$sync_file_range" = "yes" ; then
5004 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5006 if test "$fiemap" = "yes" ; then
5007 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5009 if test "$dup3" = "yes" ; then
5010 echo "CONFIG_DUP3=y" >> $config_host_mak
5012 if test "$ppoll" = "yes" ; then
5013 echo "CONFIG_PPOLL=y" >> $config_host_mak
5015 if test "$prctl_pr_set_timerslack" = "yes" ; then
5016 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5018 if test "$epoll" = "yes" ; then
5019 echo "CONFIG_EPOLL=y" >> $config_host_mak
5021 if test "$epoll_create1" = "yes" ; then
5022 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5024 if test "$epoll_pwait" = "yes" ; then
5025 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5027 if test "$sendfile" = "yes" ; then
5028 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5030 if test "$timerfd" = "yes" ; then
5031 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5033 if test "$setns" = "yes" ; then
5034 echo "CONFIG_SETNS=y" >> $config_host_mak
5036 if test "$inotify" = "yes" ; then
5037 echo "CONFIG_INOTIFY=y" >> $config_host_mak
5039 if test "$inotify1" = "yes" ; then
5040 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5042 if test "$byteswap_h" = "yes" ; then
5043 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5045 if test "$bswap_h" = "yes" ; then
5046 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5048 if test "$curl" = "yes" ; then
5049 echo "CONFIG_CURL=m" >> $config_host_mak
5050 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5051 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5053 if test "$brlapi" = "yes" ; then
5054 echo "CONFIG_BRLAPI=y" >> $config_host_mak
5056 if test "$bluez" = "yes" ; then
5057 echo "CONFIG_BLUEZ=y" >> $config_host_mak
5058 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5060 if test "$glib_subprocess" = "yes" ; then
5061 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5063 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
5064 if test "$gtk" = "yes" ; then
5065 echo "CONFIG_GTK=y" >> $config_host_mak
5066 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5067 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5068 if test "$gtk_gl" = "yes" ; then
5069 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5072 if test "$gnutls" = "yes" ; then
5073 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5075 if test "$gnutls_hash" = "yes" ; then
5076 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5078 if test "$gcrypt" = "yes" ; then
5079 echo "CONFIG_GCRYPT=y" >> $config_host_mak
5081 if test "$nettle" = "yes" ; then
5082 echo "CONFIG_NETTLE=y" >> $config_host_mak
5083 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5085 if test "$tasn1" = "yes" ; then
5086 echo "CONFIG_TASN1=y" >> $config_host_mak
5088 if test "$vte" = "yes" ; then
5089 echo "CONFIG_VTE=y" >> $config_host_mak
5090 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5092 if test "$virglrenderer" = "yes" ; then
5093 echo "CONFIG_VIRGL=y" >> $config_host_mak
5094 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5095 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5097 if test "$xen" = "yes" ; then
5098 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5099 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5101 if test "$linux_aio" = "yes" ; then
5102 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5104 if test "$attr" = "yes" ; then
5105 echo "CONFIG_ATTR=y" >> $config_host_mak
5107 if test "$libattr" = "yes" ; then
5108 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5110 if test "$virtfs" = "yes" ; then
5111 echo "CONFIG_VIRTFS=y" >> $config_host_mak
5113 if test "$vhost_scsi" = "yes" ; then
5114 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5116 if test "$vhost_net" = "yes" ; then
5117 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5119 if test "$blobs" = "yes" ; then
5120 echo "INSTALL_BLOBS=yes" >> $config_host_mak
5122 if test "$iovec" = "yes" ; then
5123 echo "CONFIG_IOVEC=y" >> $config_host_mak
5125 if test "$preadv" = "yes" ; then
5126 echo "CONFIG_PREADV=y" >> $config_host_mak
5128 if test "$fdt" = "yes" ; then
5129 echo "CONFIG_FDT=y" >> $config_host_mak
5131 if test "$signalfd" = "yes" ; then
5132 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5134 if test "$tcg_interpreter" = "yes" ; then
5135 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5137 if test "$fdatasync" = "yes" ; then
5138 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5140 if test "$madvise" = "yes" ; then
5141 echo "CONFIG_MADVISE=y" >> $config_host_mak
5143 if test "$posix_madvise" = "yes" ; then
5144 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5146 if test "$sigev_thread_id" = "yes" ; then
5147 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5150 if test "$spice" = "yes" ; then
5151 echo "CONFIG_SPICE=y" >> $config_host_mak
5154 if test "$smartcard" = "yes" ; then
5155 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5158 if test "$libusb" = "yes" ; then
5159 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5162 if test "$usb_redir" = "yes" ; then
5163 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5166 if test "$opengl" = "yes" ; then
5167 echo "CONFIG_OPENGL=y" >> $config_host_mak
5168 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
5169 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5172 if test "$lzo" = "yes" ; then
5173 echo "CONFIG_LZO=y" >> $config_host_mak
5176 if test "$snappy" = "yes" ; then
5177 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5180 if test "$bzip2" = "yes" ; then
5181 echo "CONFIG_BZIP2=y" >> $config_host_mak
5182 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5185 if test "$libiscsi" = "yes" ; then
5186 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5187 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5188 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5191 if test "$libnfs" = "yes" ; then
5192 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5195 if test "$seccomp" = "yes"; then
5196 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5199 # XXX: suppress that
5200 if [ "$bsd" = "yes" ] ; then
5201 echo "CONFIG_BSD=y" >> $config_host_mak
5204 if test "$zero_malloc" = "yes" ; then
5205 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5207 if test "$localtime_r" = "yes" ; then
5208 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5210 if test "$qom_cast_debug" = "yes" ; then
5211 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5213 if test "$rbd" = "yes" ; then
5214 echo "CONFIG_RBD=m" >> $config_host_mak
5215 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5216 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5219 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5220 if test "$coroutine_pool" = "yes" ; then
5221 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5222 else
5223 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5226 if test "$open_by_handle_at" = "yes" ; then
5227 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5230 if test "$linux_magic_h" = "yes" ; then
5231 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5234 if test "$pragma_diagnostic_available" = "yes" ; then
5235 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5238 if test "$valgrind_h" = "yes" ; then
5239 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5242 if test "$has_environ" = "yes" ; then
5243 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5246 if test "$cpuid_h" = "yes" ; then
5247 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5250 if test "$int128" = "yes" ; then
5251 echo "CONFIG_INT128=y" >> $config_host_mak
5254 if test "$getauxval" = "yes" ; then
5255 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5258 if test "$glusterfs" = "yes" ; then
5259 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5260 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5261 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5264 if test "$glusterfs_discard" = "yes" ; then
5265 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5268 if test "$glusterfs_zerofill" = "yes" ; then
5269 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5272 if test "$archipelago" = "yes" ; then
5273 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5274 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5277 if test "$libssh2" = "yes" ; then
5278 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5279 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5280 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5283 if test "$vhdx" = "yes" ; then
5284 echo "CONFIG_VHDX=y" >> $config_host_mak
5287 # USB host support
5288 if test "$libusb" = "yes"; then
5289 echo "HOST_USB=libusb legacy" >> $config_host_mak
5290 else
5291 echo "HOST_USB=stub" >> $config_host_mak
5294 # TPM passthrough support?
5295 if test "$tpm" = "yes"; then
5296 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5297 if test "$tpm_passthrough" = "yes"; then
5298 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5302 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5303 if have_backend "nop"; then
5304 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5306 if have_backend "simple"; then
5307 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5308 # Set the appropriate trace file.
5309 trace_file="\"$trace_file-\" FMT_pid"
5311 if have_backend "stderr"; then
5312 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5314 if have_backend "ust"; then
5315 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5317 if have_backend "dtrace"; then
5318 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5319 if test "$trace_backend_stap" = "yes" ; then
5320 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5323 if have_backend "ftrace"; then
5324 if test "$linux" = "yes" ; then
5325 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5326 else
5327 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5330 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5332 if test "$rdma" = "yes" ; then
5333 echo "CONFIG_RDMA=y" >> $config_host_mak
5336 # Hold two types of flag:
5337 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5338 # a thread we have a handle to
5339 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5340 # platform
5341 if test "$pthread_setname_np" = "yes" ; then
5342 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5343 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5346 if test "$tcg_interpreter" = "yes"; then
5347 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5348 elif test "$ARCH" = "sparc64" ; then
5349 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5350 elif test "$ARCH" = "s390x" ; then
5351 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5352 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5353 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5354 elif test "$ARCH" = "ppc64" ; then
5355 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5356 else
5357 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5359 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5361 echo "TOOLS=$tools" >> $config_host_mak
5362 echo "ROMS=$roms" >> $config_host_mak
5363 echo "MAKE=$make" >> $config_host_mak
5364 echo "INSTALL=$install" >> $config_host_mak
5365 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5366 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5367 if test -n "$libtool"; then
5368 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5369 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5370 else
5371 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5372 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5374 echo "PYTHON=$python" >> $config_host_mak
5375 echo "CC=$cc" >> $config_host_mak
5376 if $iasl -h > /dev/null 2>&1; then
5377 echo "IASL=$iasl" >> $config_host_mak
5379 echo "CC_I386=$cc_i386" >> $config_host_mak
5380 echo "HOST_CC=$host_cc" >> $config_host_mak
5381 echo "CXX=$cxx" >> $config_host_mak
5382 echo "OBJCC=$objcc" >> $config_host_mak
5383 echo "AR=$ar" >> $config_host_mak
5384 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5385 echo "AS=$as" >> $config_host_mak
5386 echo "CPP=$cpp" >> $config_host_mak
5387 echo "OBJCOPY=$objcopy" >> $config_host_mak
5388 echo "LD=$ld" >> $config_host_mak
5389 echo "NM=$nm" >> $config_host_mak
5390 echo "WINDRES=$windres" >> $config_host_mak
5391 echo "LIBTOOL=$libtool" >> $config_host_mak
5392 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5393 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5394 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5395 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5396 if test "$sparse" = "yes" ; then
5397 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5398 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5399 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5400 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5401 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5403 if test "$cross_prefix" != ""; then
5404 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5405 else
5406 echo "AUTOCONF_HOST := " >> $config_host_mak
5408 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5409 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5410 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5411 echo "LIBS+=$LIBS" >> $config_host_mak
5412 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5413 echo "EXESUF=$EXESUF" >> $config_host_mak
5414 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5415 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5416 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5417 echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5418 echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5419 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5420 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5421 if test "$gcov" = "yes" ; then
5422 echo "CONFIG_GCOV=y" >> $config_host_mak
5423 echo "GCOV=$gcov_tool" >> $config_host_mak
5426 # use included Linux headers
5427 if test "$linux" = "yes" ; then
5428 mkdir -p linux-headers
5429 case "$cpu" in
5430 i386|x86_64|x32)
5431 linux_arch=x86
5433 ppcemb|ppc|ppc64)
5434 linux_arch=powerpc
5436 s390x)
5437 linux_arch=s390
5439 aarch64)
5440 linux_arch=arm64
5442 mips64)
5443 linux_arch=mips
5446 # For most CPUs the kernel architecture name and QEMU CPU name match.
5447 linux_arch="$cpu"
5449 esac
5450 # For non-KVM architectures we will not have asm headers
5451 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5452 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5456 for target in $target_list; do
5457 target_dir="$target"
5458 config_target_mak=$target_dir/config-target.mak
5459 target_name=`echo $target | cut -d '-' -f 1`
5460 target_bigendian="no"
5462 case "$target_name" in
5463 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5464 target_bigendian=yes
5466 esac
5467 target_softmmu="no"
5468 target_user_only="no"
5469 target_linux_user="no"
5470 target_bsd_user="no"
5471 case "$target" in
5472 ${target_name}-softmmu)
5473 target_softmmu="yes"
5475 ${target_name}-linux-user)
5476 if test "$linux" != "yes" ; then
5477 error_exit "Target '$target' is only available on a Linux host"
5479 target_user_only="yes"
5480 target_linux_user="yes"
5482 ${target_name}-bsd-user)
5483 if test "$bsd" != "yes" ; then
5484 error_exit "Target '$target' is only available on a BSD host"
5486 target_user_only="yes"
5487 target_bsd_user="yes"
5490 error_exit "Target '$target' not recognised"
5491 exit 1
5493 esac
5495 mkdir -p $target_dir
5496 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5498 bflt="no"
5499 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5500 gdb_xml_files=""
5502 TARGET_ARCH="$target_name"
5503 TARGET_BASE_ARCH=""
5504 TARGET_ABI_DIR=""
5506 case "$target_name" in
5507 i386)
5509 x86_64)
5510 TARGET_BASE_ARCH=i386
5512 alpha)
5514 arm|armeb)
5515 TARGET_ARCH=arm
5516 bflt="yes"
5517 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5519 aarch64)
5520 TARGET_BASE_ARCH=arm
5521 bflt="yes"
5522 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5524 cris)
5526 lm32)
5528 m68k)
5529 bflt="yes"
5530 gdb_xml_files="cf-core.xml cf-fp.xml"
5532 microblaze|microblazeel)
5533 TARGET_ARCH=microblaze
5534 bflt="yes"
5536 mips|mipsel)
5537 TARGET_ARCH=mips
5538 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5540 mipsn32|mipsn32el)
5541 TARGET_ARCH=mips64
5542 TARGET_BASE_ARCH=mips
5543 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5544 echo "TARGET_ABI32=y" >> $config_target_mak
5546 mips64|mips64el)
5547 TARGET_ARCH=mips64
5548 TARGET_BASE_ARCH=mips
5549 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5551 moxie)
5553 or32)
5554 TARGET_ARCH=openrisc
5555 TARGET_BASE_ARCH=openrisc
5557 ppc)
5558 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5560 ppcemb)
5561 TARGET_BASE_ARCH=ppc
5562 TARGET_ABI_DIR=ppc
5563 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5565 ppc64)
5566 TARGET_BASE_ARCH=ppc
5567 TARGET_ABI_DIR=ppc
5568 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5570 ppc64le)
5571 TARGET_ARCH=ppc64
5572 TARGET_BASE_ARCH=ppc
5573 TARGET_ABI_DIR=ppc
5574 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5576 ppc64abi32)
5577 TARGET_ARCH=ppc64
5578 TARGET_BASE_ARCH=ppc
5579 TARGET_ABI_DIR=ppc
5580 echo "TARGET_ABI32=y" >> $config_target_mak
5581 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5583 sh4|sh4eb)
5584 TARGET_ARCH=sh4
5585 bflt="yes"
5587 sparc)
5589 sparc64)
5590 TARGET_BASE_ARCH=sparc
5592 sparc32plus)
5593 TARGET_ARCH=sparc64
5594 TARGET_BASE_ARCH=sparc
5595 TARGET_ABI_DIR=sparc
5596 echo "TARGET_ABI32=y" >> $config_target_mak
5598 s390x)
5599 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
5601 tilegx)
5603 tricore)
5605 unicore32)
5607 xtensa|xtensaeb)
5608 TARGET_ARCH=xtensa
5611 error_exit "Unsupported target CPU"
5613 esac
5614 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5615 if [ "$TARGET_BASE_ARCH" = "" ]; then
5616 TARGET_BASE_ARCH=$TARGET_ARCH
5619 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5621 upper() {
5622 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5625 target_arch_name="`upper $TARGET_ARCH`"
5626 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5627 echo "TARGET_NAME=$target_name" >> $config_target_mak
5628 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5629 if [ "$TARGET_ABI_DIR" = "" ]; then
5630 TARGET_ABI_DIR=$TARGET_ARCH
5632 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5633 if [ "$HOST_VARIANT_DIR" != "" ]; then
5634 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5636 case "$target_name" in
5637 i386|x86_64)
5638 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5639 echo "CONFIG_XEN=y" >> $config_target_mak
5640 if test "$xen_pci_passthrough" = yes; then
5641 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5646 esac
5647 case "$target_name" in
5648 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
5649 # Make sure the target and host cpus are compatible
5650 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5651 \( "$target_name" = "$cpu" -o \
5652 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5653 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5654 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5655 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
5656 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
5657 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
5658 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5659 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5660 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
5661 echo "CONFIG_KVM=y" >> $config_target_mak
5662 if test "$vhost_net" = "yes" ; then
5663 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5666 esac
5667 if test "$target_bigendian" = "yes" ; then
5668 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5670 if test "$target_softmmu" = "yes" ; then
5671 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5673 if test "$target_user_only" = "yes" ; then
5674 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5675 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5677 if test "$target_linux_user" = "yes" ; then
5678 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5680 list=""
5681 if test ! -z "$gdb_xml_files" ; then
5682 for x in $gdb_xml_files; do
5683 list="$list $source_path/gdb-xml/$x"
5684 done
5685 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5688 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5689 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5691 if test "$target_bsd_user" = "yes" ; then
5692 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5695 # generate QEMU_CFLAGS/LDFLAGS for targets
5697 cflags=""
5698 ldflags=""
5700 disas_config() {
5701 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5702 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5705 for i in $ARCH $TARGET_BASE_ARCH ; do
5706 case "$i" in
5707 alpha)
5708 disas_config "ALPHA"
5710 aarch64)
5711 if test -n "${cxx}"; then
5712 disas_config "ARM_A64"
5715 arm)
5716 disas_config "ARM"
5717 if test -n "${cxx}"; then
5718 disas_config "ARM_A64"
5721 cris)
5722 disas_config "CRIS"
5724 hppa)
5725 disas_config "HPPA"
5727 i386|x86_64|x32)
5728 disas_config "I386"
5730 ia64*)
5731 disas_config "IA64"
5733 lm32)
5734 disas_config "LM32"
5736 m68k)
5737 disas_config "M68K"
5739 microblaze*)
5740 disas_config "MICROBLAZE"
5742 mips*)
5743 disas_config "MIPS"
5745 moxie*)
5746 disas_config "MOXIE"
5748 or32)
5749 disas_config "OPENRISC"
5751 ppc*)
5752 disas_config "PPC"
5754 s390*)
5755 disas_config "S390"
5757 sh4)
5758 disas_config "SH4"
5760 sparc*)
5761 disas_config "SPARC"
5763 xtensa*)
5764 disas_config "XTENSA"
5766 esac
5767 done
5768 if test "$tcg_interpreter" = "yes" ; then
5769 disas_config "TCI"
5772 case "$ARCH" in
5773 alpha)
5774 # Ensure there's only a single GP
5775 cflags="-msmall-data $cflags"
5777 esac
5779 if test "$gprof" = "yes" ; then
5780 echo "TARGET_GPROF=yes" >> $config_target_mak
5781 if test "$target_linux_user" = "yes" ; then
5782 cflags="-p $cflags"
5783 ldflags="-p $ldflags"
5785 if test "$target_softmmu" = "yes" ; then
5786 ldflags="-p $ldflags"
5787 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5791 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5792 ldflags="$ldflags $textseg_ldflags"
5795 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5796 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5798 done # for target in $targets
5800 if [ "$pixman" = "internal" ]; then
5801 echo "config-host.h: subdir-pixman" >> $config_host_mak
5804 if [ "$dtc_internal" = "yes" ]; then
5805 echo "config-host.h: subdir-dtc" >> $config_host_mak
5808 if test "$numa" = "yes"; then
5809 echo "CONFIG_NUMA=y" >> $config_host_mak
5812 if test "$ccache_cpp2" = "yes"; then
5813 echo "export CCACHE_CPP2=y" >> $config_host_mak
5816 # build tree in object directory in case the source is not in the current directory
5817 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5818 DIRS="$DIRS fsdev"
5819 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5820 DIRS="$DIRS roms/seabios roms/vgabios"
5821 DIRS="$DIRS qapi-generated"
5822 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5823 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5824 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5825 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5826 FILES="$FILES pc-bios/spapr-rtas/Makefile"
5827 FILES="$FILES pc-bios/s390-ccw/Makefile"
5828 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5829 FILES="$FILES pc-bios/qemu-icon.bmp"
5830 for bios_file in \
5831 $source_path/pc-bios/*.bin \
5832 $source_path/pc-bios/*.aml \
5833 $source_path/pc-bios/*.rom \
5834 $source_path/pc-bios/*.dtb \
5835 $source_path/pc-bios/*.img \
5836 $source_path/pc-bios/openbios-* \
5837 $source_path/pc-bios/u-boot.* \
5838 $source_path/pc-bios/palcode-*
5840 FILES="$FILES pc-bios/`basename $bios_file`"
5841 done
5842 for test_file in `find $source_path/tests/acpi-test-data -type f`
5844 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5845 done
5846 mkdir -p $DIRS
5847 for f in $FILES ; do
5848 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5849 symlink "$source_path/$f" "$f"
5851 done
5853 # temporary config to build submodules
5854 for rom in seabios vgabios ; do
5855 config_mak=roms/$rom/config.mak
5856 echo "# Automatically generated by configure - do not modify" > $config_mak
5857 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5858 echo "AS=$as" >> $config_mak
5859 echo "CC=$cc" >> $config_mak
5860 echo "BCC=bcc" >> $config_mak
5861 echo "CPP=$cpp" >> $config_mak
5862 echo "OBJCOPY=objcopy" >> $config_mak
5863 echo "IASL=$iasl" >> $config_mak
5864 echo "LD=$ld" >> $config_mak
5865 done
5867 # set up qemu-iotests in this build directory
5868 iotests_common_env="tests/qemu-iotests/common.env"
5869 iotests_check="tests/qemu-iotests/check"
5871 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5872 echo >> "$iotests_common_env"
5873 echo "export PYTHON='$python'" >> "$iotests_common_env"
5875 if [ ! -e "$iotests_check" ]; then
5876 symlink "$source_path/$iotests_check" "$iotests_check"
5879 # Save the configure command line for later reuse.
5880 cat <<EOD >config.status
5881 #!/bin/sh
5882 # Generated by configure.
5883 # Run this file to recreate the current configuration.
5884 # Compiler output produced by configure, useful for debugging
5885 # configure, is in config.log if it exists.
5887 printf "exec" >>config.status
5888 printf " '%s'" "$0" "$@" >>config.status
5889 echo >>config.status
5890 chmod +x config.status
5892 rm -r "$TMPDIR1"