1#!/bin/sh 2# 3# qemu configure script (c) 2003 Fabrice Bellard 4# 5 6# Unset some variables known to interfere with behavior of common tools, 7# just as autoconf does. 8CLICOLOR_FORCE= GREP_OPTIONS= 9unset CLICOLOR_FORCE GREP_OPTIONS 10 11# Temporary directory used for files created while 12# configure runs. Since it is in the build directory 13# we can safely blow away any previous version of it 14# (and we need not jump through hoops to try to delete 15# it when configure exits.) 16TMPDIR1="config-temp" 17rm -rf "${TMPDIR1}" 18mkdir -p "${TMPDIR1}" 19if [ $? -ne 0 ]; then 20 echo "ERROR: failed to create temporary directory" 21 exit 1 22fi 23 24TMPB="qemu-conf" 25TMPC="${TMPDIR1}/${TMPB}.c" 26TMPO="${TMPDIR1}/${TMPB}.o" 27TMPCXX="${TMPDIR1}/${TMPB}.cxx" 28TMPL="${TMPDIR1}/${TMPB}.lo" 29TMPA="${TMPDIR1}/lib${TMPB}.la" 30TMPE="${TMPDIR1}/${TMPB}.exe" 31 32rm -f config.log 33 34# Print a helpful header at the top of config.log 35echo "# QEMU configure log $(date)" >> config.log 36printf "# Configured with:" >> config.log 37printf " '%s'" "$0" "$@" >> config.log 38echo >> config.log 39echo "#" >> config.log 40 41error_exit() { 42 echo 43 echo "ERROR: $1" 44 while test -n "$2"; do 45 echo " $2" 46 shift 47 done 48 echo 49 exit 1 50} 51 52do_compiler() { 53 # Run the compiler, capturing its output to the log. First argument 54 # is compiler binary to execute. 55 local compiler="$1" 56 shift 57 echo $compiler "$@" >> config.log 58 $compiler "$@" >> config.log 2>&1 || return $? 59 # Test passed. If this is an --enable-werror build, rerun 60 # the test with -Werror and bail out if it fails. This 61 # makes warning-generating-errors in configure test code 62 # obvious to developers. 63 if test "$werror" != "yes"; then 64 return 0 65 fi 66 # Don't bother rerunning the compile if we were already using -Werror 67 case "$*" in 68 *-Werror*) 69 return 0 70 ;; 71 esac 72 echo $compiler -Werror "$@" >> config.log 73 $compiler -Werror "$@" >> config.log 2>&1 && return $? 74 error_exit "configure test passed without -Werror but failed with -Werror." \ 75 "This is probably a bug in the configure script. The failing command" \ 76 "will be at the bottom of config.log." \ 77 "You can run configure with --disable-werror to bypass this check." 78} 79 80do_cc() { 81 do_compiler "$cc" "$@" 82} 83 84do_cxx() { 85 do_compiler "$cxx" "$@" 86} 87 88update_cxxflags() { 89 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those 90 # options which some versions of GCC's C++ compiler complain about 91 # because they only make sense for C programs. 92 QEMU_CXXFLAGS= 93 for arg in $QEMU_CFLAGS; do 94 case $arg in 95 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\ 96 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls) 97 ;; 98 *) 99 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg 100 ;; 101 esac 102 done 103} 104 105compile_object() { 106 local_cflags="$1" 107 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC 108} 109 110compile_prog() { 111 local_cflags="$1" 112 local_ldflags="$2" 113 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags 114} 115 116do_libtool() { 117 local mode=$1 118 shift 119 # Run the compiler, capturing its output to the log. 120 echo $libtool $mode --tag=CC $cc "$@" >> config.log 121 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $? 122 # Test passed. If this is an --enable-werror build, rerun 123 # the test with -Werror and bail out if it fails. This 124 # makes warning-generating-errors in configure test code 125 # obvious to developers. 126 if test "$werror" != "yes"; then 127 return 0 128 fi 129 # Don't bother rerunning the compile if we were already using -Werror 130 case "$*" in 131 *-Werror*) 132 return 0 133 ;; 134 esac 135 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 136 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $? 137 error_exit "configure test passed without -Werror but failed with -Werror." \ 138 "This is probably a bug in the configure script. The failing command" \ 139 "will be at the bottom of config.log." \ 140 "You can run configure with --disable-werror to bypass this check." 141} 142 143libtool_prog() { 144 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $? 145 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib 146} 147 148# symbolically link $1 to $2. Portable version of "ln -sf". 149symlink() { 150 rm -rf "$2" 151 mkdir -p "$(dirname "$2")" 152 ln -s "$1" "$2" 153} 154 155# check whether a command is available to this shell (may be either an 156# executable or a builtin) 157has() { 158 type "$1" >/dev/null 2>&1 159} 160 161# search for an executable in PATH 162path_of() { 163 local_command="$1" 164 local_ifs="$IFS" 165 local_dir="" 166 167 # pathname has a dir component? 168 if [ "${local_command#*/}" != "$local_command" ]; then 169 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 170 echo "$local_command" 171 return 0 172 fi 173 fi 174 if [ -z "$local_command" ]; then 175 return 1 176 fi 177 178 IFS=: 179 for local_dir in $PATH; do 180 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 181 echo "$local_dir/$local_command" 182 IFS="${local_ifs:-$(printf ' \t\n')}" 183 return 0 184 fi 185 done 186 # not found 187 IFS="${local_ifs:-$(printf ' \t\n')}" 188 return 1 189} 190 191have_backend () { 192 echo "$trace_backends" | grep "$1" >/dev/null 193} 194 195# default parameters 196source_path=`dirname "$0"` 197cpu="" 198iasl="iasl" 199interp_prefix="/usr/gnemul/qemu-%M" 200static="no" 201cross_prefix="" 202audio_drv_list="" 203block_drv_rw_whitelist="" 204block_drv_ro_whitelist="" 205host_cc="cc" 206libs_softmmu="" 207libs_tools="" 208audio_pt_int="" 209audio_win_int="" 210cc_i386=i386-pc-linux-gnu-gcc 211libs_qga="" 212debug_info="yes" 213stack_protector="" 214 215# Don't accept a target_list environment variable. 216unset target_list 217 218# Default value for a variable defining feature "foo". 219# * foo="no" feature will only be used if --enable-foo arg is given 220# * foo="" feature will be searched for, and if found, will be used 221# unless --disable-foo is given 222# * foo="yes" this value will only be set by --enable-foo flag. 223# feature will searched for, 224# if not found, configure exits with error 225# 226# Always add --enable-foo and --disable-foo command line args. 227# Distributions want to ensure that several features are compiled in, and it 228# is impossible without a --enable-foo that exits if a feature is not found. 229 230bluez="" 231brlapi="" 232curl="" 233curses="" 234docs="" 235fdt="" 236netmap="no" 237pixman="" 238sdl="" 239sdlabi="1.2" 240virtfs="" 241vnc="yes" 242sparse="no" 243uuid="" 244vde="" 245vnc_tls="" 246vnc_sasl="" 247vnc_jpeg="" 248vnc_png="" 249vnc_ws="" 250xen="" 251xen_ctrl_version="" 252xen_pci_passthrough="" 253linux_aio="" 254cap_ng="" 255attr="" 256libattr="" 257xfs="" 258 259vhost_net="no" 260vhost_scsi="no" 261kvm="no" 262rdma="" 263gprof="no" 264debug_tcg="no" 265debug="no" 266strip_opt="yes" 267tcg_interpreter="no" 268bigendian="no" 269mingw32="no" 270gcov="no" 271gcov_tool="gcov" 272EXESUF="" 273DSOSUF=".so" 274LDFLAGS_SHARED="-shared" 275modules="no" 276prefix="/usr/local" 277mandir="\${prefix}/share/man" 278datadir="\${prefix}/share" 279qemu_docdir="\${prefix}/share/doc/qemu" 280bindir="\${prefix}/bin" 281libdir="\${prefix}/lib" 282libexecdir="\${prefix}/libexec" 283includedir="\${prefix}/include" 284sysconfdir="\${prefix}/etc" 285local_statedir="\${prefix}/var" 286confsuffix="/qemu" 287slirp="yes" 288oss_lib="" 289bsd="no" 290linux="no" 291solaris="no" 292profiler="no" 293cocoa="no" 294softmmu="yes" 295linux_user="no" 296bsd_user="no" 297guest_base="yes" 298aix="no" 299blobs="yes" 300pkgversion="" 301pie="" 302zero_malloc="" 303qom_cast_debug="yes" 304trace_backends="nop" 305trace_file="trace" 306spice="" 307rbd="" 308smartcard_nss="" 309libusb="" 310usb_redir="" 311opengl="" 312zlib="yes" 313lzo="" 314snappy="" 315bzip2="" 316guest_agent="" 317guest_agent_with_vss="no" 318guest_agent_msi="" 319vss_win32_sdk="" 320win_sdk="no" 321want_tools="yes" 322libiscsi="" 323libnfs="" 324coroutine="" 325coroutine_pool="" 326seccomp="" 327glusterfs="" 328glusterfs_discard="no" 329glusterfs_zerofill="no" 330archipelago="no" 331gtk="" 332gtkabi="" 333gnutls="" 334gnutls_hash="" 335vte="" 336tpm="yes" 337libssh2="" 338vhdx="" 339quorum="" 340numa="" 341tcmalloc="no" 342 343# parse CC options first 344for opt do 345 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 346 case "$opt" in 347 --cross-prefix=*) cross_prefix="$optarg" 348 ;; 349 --cc=*) CC="$optarg" 350 ;; 351 --cxx=*) CXX="$optarg" 352 ;; 353 --source-path=*) source_path="$optarg" 354 ;; 355 --cpu=*) cpu="$optarg" 356 ;; 357 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg" 358 EXTRA_CFLAGS="$optarg" 359 ;; 360 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg" 361 EXTRA_LDFLAGS="$optarg" 362 ;; 363 --enable-debug-info) debug_info="yes" 364 ;; 365 --disable-debug-info) debug_info="no" 366 ;; 367 esac 368done 369# OS specific 370# Using uname is really, really broken. Once we have the right set of checks 371# we can eliminate its usage altogether. 372 373# Preferred compiler: 374# ${CC} (if set) 375# ${cross_prefix}gcc (if cross-prefix specified) 376# system compiler 377if test -z "${CC}${cross_prefix}"; then 378 cc="$host_cc" 379else 380 cc="${CC-${cross_prefix}gcc}" 381fi 382 383if test -z "${CXX}${cross_prefix}"; then 384 cxx="c++" 385else 386 cxx="${CXX-${cross_prefix}g++}" 387fi 388 389ar="${AR-${cross_prefix}ar}" 390as="${AS-${cross_prefix}as}" 391cpp="${CPP-$cc -E}" 392objcopy="${OBJCOPY-${cross_prefix}objcopy}" 393ld="${LD-${cross_prefix}ld}" 394libtool="${LIBTOOL-${cross_prefix}libtool}" 395nm="${NM-${cross_prefix}nm}" 396strip="${STRIP-${cross_prefix}strip}" 397windres="${WINDRES-${cross_prefix}windres}" 398pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 399query_pkg_config() { 400 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 401} 402pkg_config=query_pkg_config 403sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}" 404sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 405 406# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 407ARFLAGS="${ARFLAGS-rv}" 408 409# default flags for all hosts 410QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS" 411QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 412QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 413QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 414QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include" 415if test "$debug_info" = "yes"; then 416 CFLAGS="-g $CFLAGS" 417 LDFLAGS="-g $LDFLAGS" 418fi 419 420# make source path absolute 421source_path=`cd "$source_path"; pwd` 422 423# running configure in the source tree? 424# we know that's the case if configure is there. 425if test -f "./configure"; then 426 pwd_is_source_path="y" 427else 428 pwd_is_source_path="n" 429fi 430 431check_define() { 432cat > $TMPC <<EOF 433#if !defined($1) 434#error $1 not defined 435#endif 436int main(void) { return 0; } 437EOF 438 compile_object 439} 440 441check_include() { 442cat > $TMPC <<EOF 443#include <$1> 444int main(void) { return 0; } 445EOF 446 compile_object 447} 448 449write_c_skeleton() { 450 cat > $TMPC <<EOF 451int main(void) { return 0; } 452EOF 453} 454 455if check_define __linux__ ; then 456 targetos="Linux" 457elif check_define _WIN32 ; then 458 targetos='MINGW32' 459elif check_define __OpenBSD__ ; then 460 targetos='OpenBSD' 461elif check_define __sun__ ; then 462 targetos='SunOS' 463elif check_define __HAIKU__ ; then 464 targetos='Haiku' 465else 466 targetos=`uname -s` 467fi 468 469# Some host OSes need non-standard checks for which CPU to use. 470# Note that these checks are broken for cross-compilation: if you're 471# cross-compiling to one of these OSes then you'll need to specify 472# the correct CPU with the --cpu option. 473case $targetos in 474Darwin) 475 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 476 # run 64-bit userspace code. 477 # If the user didn't specify a CPU explicitly and the kernel says this is 478 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 479 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 480 cpu="x86_64" 481 fi 482 ;; 483SunOS) 484 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo 485 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 486 cpu="x86_64" 487 fi 488esac 489 490if test ! -z "$cpu" ; then 491 # command line argument 492 : 493elif check_define __i386__ ; then 494 cpu="i386" 495elif check_define __x86_64__ ; then 496 if check_define __ILP32__ ; then 497 cpu="x32" 498 else 499 cpu="x86_64" 500 fi 501elif check_define __sparc__ ; then 502 if check_define __arch64__ ; then 503 cpu="sparc64" 504 else 505 cpu="sparc" 506 fi 507elif check_define _ARCH_PPC ; then 508 if check_define _ARCH_PPC64 ; then 509 cpu="ppc64" 510 else 511 cpu="ppc" 512 fi 513elif check_define __mips__ ; then 514 cpu="mips" 515elif check_define __ia64__ ; then 516 cpu="ia64" 517elif check_define __s390__ ; then 518 if check_define __s390x__ ; then 519 cpu="s390x" 520 else 521 cpu="s390" 522 fi 523elif check_define __arm__ ; then 524 cpu="arm" 525elif check_define __aarch64__ ; then 526 cpu="aarch64" 527elif check_define __hppa__ ; then 528 cpu="hppa" 529else 530 cpu=`uname -m` 531fi 532 533ARCH= 534# Normalise host CPU name and set ARCH. 535# Note that this case should only have supported host CPUs, not guests. 536case "$cpu" in 537 ia64|ppc|ppc64|s390|s390x|sparc64|x32) 538 cpu="$cpu" 539 ;; 540 i386|i486|i586|i686|i86pc|BePC) 541 cpu="i386" 542 ;; 543 x86_64|amd64) 544 cpu="x86_64" 545 ;; 546 armv*b|armv*l|arm) 547 cpu="arm" 548 ;; 549 aarch64) 550 cpu="aarch64" 551 ;; 552 mips*) 553 cpu="mips" 554 ;; 555 sparc|sun4[cdmuv]) 556 cpu="sparc" 557 ;; 558 *) 559 # This will result in either an error or falling back to TCI later 560 ARCH=unknown 561 ;; 562esac 563if test -z "$ARCH"; then 564 ARCH="$cpu" 565fi 566 567# OS specific 568 569# host *BSD for user mode 570HOST_VARIANT_DIR="" 571 572case $targetos in 573CYGWIN*) 574 mingw32="yes" 575 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS" 576 audio_possible_drivers="sdl" 577 audio_drv_list="sdl" 578;; 579MINGW32*) 580 mingw32="yes" 581 audio_possible_drivers="dsound sdl" 582 if check_include dsound.h; then 583 audio_drv_list="dsound" 584 else 585 audio_drv_list="" 586 fi 587;; 588GNU/kFreeBSD) 589 bsd="yes" 590 audio_drv_list="oss" 591 audio_possible_drivers="oss sdl pa" 592;; 593FreeBSD) 594 bsd="yes" 595 make="${MAKE-gmake}" 596 audio_drv_list="oss" 597 audio_possible_drivers="oss sdl pa" 598 # needed for kinfo_getvmmap(3) in libutil.h 599 LIBS="-lutil $LIBS" 600 netmap="" # enable netmap autodetect 601 HOST_VARIANT_DIR="freebsd" 602;; 603DragonFly) 604 bsd="yes" 605 make="${MAKE-gmake}" 606 audio_drv_list="oss" 607 audio_possible_drivers="oss sdl pa" 608 HOST_VARIANT_DIR="dragonfly" 609;; 610NetBSD) 611 bsd="yes" 612 make="${MAKE-gmake}" 613 audio_drv_list="oss" 614 audio_possible_drivers="oss sdl" 615 oss_lib="-lossaudio" 616 HOST_VARIANT_DIR="netbsd" 617;; 618OpenBSD) 619 bsd="yes" 620 make="${MAKE-gmake}" 621 audio_drv_list="sdl" 622 audio_possible_drivers="sdl" 623 HOST_VARIANT_DIR="openbsd" 624;; 625Darwin) 626 bsd="yes" 627 darwin="yes" 628 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 629 if [ "$cpu" = "x86_64" ] ; then 630 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 631 LDFLAGS="-arch x86_64 $LDFLAGS" 632 fi 633 cocoa="yes" 634 audio_drv_list="coreaudio" 635 audio_possible_drivers="coreaudio sdl" 636 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 637 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 638 # Disable attempts to use ObjectiveC features in os/object.h since they 639 # won't work when we're compiling with gcc as a C compiler. 640 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 641 HOST_VARIANT_DIR="darwin" 642;; 643SunOS) 644 solaris="yes" 645 make="${MAKE-gmake}" 646 install="${INSTALL-ginstall}" 647 ld="gld" 648 smbd="${SMBD-/usr/sfw/sbin/smbd}" 649 needs_libsunmath="no" 650 solarisrev=`uname -r | cut -f2 -d.` 651 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 652 if test "$solarisrev" -le 9 ; then 653 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then 654 needs_libsunmath="yes" 655 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS" 656 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS" 657 LIBS="-lsunmath $LIBS" 658 else 659 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \ 660 "libsunmath from the Sun Studio compilers tools, due to a lack of" \ 661 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \ 662 "Studio 11 can be downloaded from www.sun.com." 663 fi 664 fi 665 fi 666 if test -f /usr/include/sys/soundcard.h ; then 667 audio_drv_list="oss" 668 fi 669 audio_possible_drivers="oss sdl" 670# needed for CMSG_ macros in sys/socket.h 671 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 672# needed for TIOCWIN* defines in termios.h 673 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 674 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 675 solarisnetlibs="-lsocket -lnsl -lresolv" 676 LIBS="$solarisnetlibs $LIBS" 677 libs_qga="$solarisnetlibs $libs_qga" 678;; 679AIX) 680 aix="yes" 681 make="${MAKE-gmake}" 682;; 683Haiku) 684 haiku="yes" 685 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 686 LIBS="-lposix_error_mapper -lnetwork $LIBS" 687;; 688*) 689 audio_drv_list="oss" 690 audio_possible_drivers="oss alsa sdl pa" 691 linux="yes" 692 linux_user="yes" 693 kvm="yes" 694 vhost_net="yes" 695 vhost_scsi="yes" 696 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES" 697;; 698esac 699 700if [ "$bsd" = "yes" ] ; then 701 if [ "$darwin" != "yes" ] ; then 702 bsd_user="yes" 703 fi 704fi 705 706: ${make=${MAKE-make}} 707: ${install=${INSTALL-install}} 708: ${python=${PYTHON-python}} 709: ${smbd=${SMBD-/usr/sbin/smbd}} 710 711# Default objcc to clang if available, otherwise use CC 712if has clang; then 713 objcc=clang 714else 715 objcc="$cc" 716fi 717 718if test "$mingw32" = "yes" ; then 719 EXESUF=".exe" 720 DSOSUF=".dll" 721 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 722 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 723 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 724 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 725 write_c_skeleton; 726 if compile_prog "" "-liberty" ; then 727 LIBS="-liberty $LIBS" 728 fi 729 prefix="c:/Program Files/QEMU" 730 mandir="\${prefix}" 731 datadir="\${prefix}" 732 qemu_docdir="\${prefix}" 733 bindir="\${prefix}" 734 sysconfdir="\${prefix}" 735 local_statedir= 736 confsuffix="" 737 libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga" 738fi 739 740werror="" 741 742for opt do 743 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 744 case "$opt" in 745 --help|-h) show_help=yes 746 ;; 747 --version|-V) exec cat $source_path/VERSION 748 ;; 749 --prefix=*) prefix="$optarg" 750 ;; 751 --interp-prefix=*) interp_prefix="$optarg" 752 ;; 753 --source-path=*) 754 ;; 755 --cross-prefix=*) 756 ;; 757 --cc=*) 758 ;; 759 --host-cc=*) host_cc="$optarg" 760 ;; 761 --cxx=*) 762 ;; 763 --iasl=*) iasl="$optarg" 764 ;; 765 --objcc=*) objcc="$optarg" 766 ;; 767 --make=*) make="$optarg" 768 ;; 769 --install=*) install="$optarg" 770 ;; 771 --python=*) python="$optarg" 772 ;; 773 --gcov=*) gcov_tool="$optarg" 774 ;; 775 --smbd=*) smbd="$optarg" 776 ;; 777 --extra-cflags=*) 778 ;; 779 --extra-ldflags=*) 780 ;; 781 --enable-debug-info) 782 ;; 783 --disable-debug-info) 784 ;; 785 --enable-modules) 786 modules="yes" 787 ;; 788 --cpu=*) 789 ;; 790 --target-list=*) target_list="$optarg" 791 ;; 792 --enable-trace-backends=*) trace_backends="$optarg" 793 ;; 794 # XXX: backwards compatibility 795 --enable-trace-backend=*) trace_backends="$optarg" 796 ;; 797 --with-trace-file=*) trace_file="$optarg" 798 ;; 799 --enable-gprof) gprof="yes" 800 ;; 801 --enable-gcov) gcov="yes" 802 ;; 803 --static) 804 static="yes" 805 LDFLAGS="-static $LDFLAGS" 806 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 807 ;; 808 --mandir=*) mandir="$optarg" 809 ;; 810 --bindir=*) bindir="$optarg" 811 ;; 812 --libdir=*) libdir="$optarg" 813 ;; 814 --libexecdir=*) libexecdir="$optarg" 815 ;; 816 --includedir=*) includedir="$optarg" 817 ;; 818 --datadir=*) datadir="$optarg" 819 ;; 820 --with-confsuffix=*) confsuffix="$optarg" 821 ;; 822 --docdir=*) qemu_docdir="$optarg" 823 ;; 824 --sysconfdir=*) sysconfdir="$optarg" 825 ;; 826 --localstatedir=*) local_statedir="$optarg" 827 ;; 828 --sbindir=*|--sharedstatedir=*|\ 829 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 830 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 831 # These switches are silently ignored, for compatibility with 832 # autoconf-generated configure scripts. This allows QEMU's 833 # configure to be used by RPM and similar macros that set 834 # lots of directory switches by default. 835 ;; 836 --with-system-pixman) pixman="system" 837 ;; 838 --without-system-pixman) pixman="internal" 839 ;; 840 --without-pixman) pixman="none" 841 ;; 842 --disable-sdl) sdl="no" 843 ;; 844 --enable-sdl) sdl="yes" 845 ;; 846 --with-sdlabi=*) sdlabi="$optarg" 847 ;; 848 --disable-qom-cast-debug) qom_cast_debug="no" 849 ;; 850 --enable-qom-cast-debug) qom_cast_debug="yes" 851 ;; 852 --disable-virtfs) virtfs="no" 853 ;; 854 --enable-virtfs) virtfs="yes" 855 ;; 856 --disable-vnc) vnc="no" 857 ;; 858 --enable-vnc) vnc="yes" 859 ;; 860 --oss-lib=*) oss_lib="$optarg" 861 ;; 862 --audio-drv-list=*) audio_drv_list="$optarg" 863 ;; 864 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 865 ;; 866 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 867 ;; 868 --enable-debug-tcg) debug_tcg="yes" 869 ;; 870 --disable-debug-tcg) debug_tcg="no" 871 ;; 872 --enable-debug) 873 # Enable debugging options that aren't excessively noisy 874 debug_tcg="yes" 875 debug="yes" 876 strip_opt="no" 877 ;; 878 --enable-sparse) sparse="yes" 879 ;; 880 --disable-sparse) sparse="no" 881 ;; 882 --disable-strip) strip_opt="no" 883 ;; 884 --disable-vnc-tls) vnc_tls="no" 885 ;; 886 --enable-vnc-tls) vnc_tls="yes" 887 ;; 888 --disable-vnc-sasl) vnc_sasl="no" 889 ;; 890 --enable-vnc-sasl) vnc_sasl="yes" 891 ;; 892 --disable-vnc-jpeg) vnc_jpeg="no" 893 ;; 894 --enable-vnc-jpeg) vnc_jpeg="yes" 895 ;; 896 --disable-vnc-png) vnc_png="no" 897 ;; 898 --enable-vnc-png) vnc_png="yes" 899 ;; 900 --disable-vnc-ws) vnc_ws="no" 901 ;; 902 --enable-vnc-ws) vnc_ws="yes" 903 ;; 904 --disable-slirp) slirp="no" 905 ;; 906 --disable-uuid) uuid="no" 907 ;; 908 --enable-uuid) uuid="yes" 909 ;; 910 --disable-vde) vde="no" 911 ;; 912 --enable-vde) vde="yes" 913 ;; 914 --disable-netmap) netmap="no" 915 ;; 916 --enable-netmap) netmap="yes" 917 ;; 918 --disable-xen) xen="no" 919 ;; 920 --enable-xen) xen="yes" 921 ;; 922 --disable-xen-pci-passthrough) xen_pci_passthrough="no" 923 ;; 924 --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 925 ;; 926 --disable-brlapi) brlapi="no" 927 ;; 928 --enable-brlapi) brlapi="yes" 929 ;; 930 --disable-bluez) bluez="no" 931 ;; 932 --enable-bluez) bluez="yes" 933 ;; 934 --disable-kvm) kvm="no" 935 ;; 936 --enable-kvm) kvm="yes" 937 ;; 938 --disable-tcg-interpreter) tcg_interpreter="no" 939 ;; 940 --enable-tcg-interpreter) tcg_interpreter="yes" 941 ;; 942 --disable-cap-ng) cap_ng="no" 943 ;; 944 --enable-cap-ng) cap_ng="yes" 945 ;; 946 --disable-spice) spice="no" 947 ;; 948 --enable-spice) spice="yes" 949 ;; 950 --disable-libiscsi) libiscsi="no" 951 ;; 952 --enable-libiscsi) libiscsi="yes" 953 ;; 954 --disable-libnfs) libnfs="no" 955 ;; 956 --enable-libnfs) libnfs="yes" 957 ;; 958 --enable-profiler) profiler="yes" 959 ;; 960 --disable-cocoa) cocoa="no" 961 ;; 962 --enable-cocoa) 963 cocoa="yes" ; 964 sdl="no" ; 965 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" 966 ;; 967 --disable-system) softmmu="no" 968 ;; 969 --enable-system) softmmu="yes" 970 ;; 971 --disable-user) 972 linux_user="no" ; 973 bsd_user="no" ; 974 ;; 975 --enable-user) ;; 976 --disable-linux-user) linux_user="no" 977 ;; 978 --enable-linux-user) linux_user="yes" 979 ;; 980 --disable-bsd-user) bsd_user="no" 981 ;; 982 --enable-bsd-user) bsd_user="yes" 983 ;; 984 --enable-guest-base) guest_base="yes" 985 ;; 986 --disable-guest-base) guest_base="no" 987 ;; 988 --enable-pie) pie="yes" 989 ;; 990 --disable-pie) pie="no" 991 ;; 992 --enable-werror) werror="yes" 993 ;; 994 --disable-werror) werror="no" 995 ;; 996 --enable-stack-protector) stack_protector="yes" 997 ;; 998 --disable-stack-protector) stack_protector="no" 999 ;; 1000 --disable-curses) curses="no" 1001 ;; 1002 --enable-curses) curses="yes" 1003 ;; 1004 --disable-curl) curl="no" 1005 ;; 1006 --enable-curl) curl="yes" 1007 ;; 1008 --disable-fdt) fdt="no" 1009 ;; 1010 --enable-fdt) fdt="yes" 1011 ;; 1012 --disable-linux-aio) linux_aio="no" 1013 ;; 1014 --enable-linux-aio) linux_aio="yes" 1015 ;; 1016 --disable-attr) attr="no" 1017 ;; 1018 --enable-attr) attr="yes" 1019 ;; 1020 --disable-blobs) blobs="no" 1021 ;; 1022 --with-pkgversion=*) pkgversion=" ($optarg)" 1023 ;; 1024 --with-coroutine=*) coroutine="$optarg" 1025 ;; 1026 --disable-coroutine-pool) coroutine_pool="no" 1027 ;; 1028 --enable-coroutine-pool) coroutine_pool="yes" 1029 ;; 1030 --disable-docs) docs="no" 1031 ;; 1032 --enable-docs) docs="yes" 1033 ;; 1034 --disable-vhost-net) vhost_net="no" 1035 ;; 1036 --enable-vhost-net) vhost_net="yes" 1037 ;; 1038 --disable-vhost-scsi) vhost_scsi="no" 1039 ;; 1040 --enable-vhost-scsi) vhost_scsi="yes" 1041 ;; 1042 --disable-opengl) opengl="no" 1043 ;; 1044 --enable-opengl) opengl="yes" 1045 ;; 1046 --disable-rbd) rbd="no" 1047 ;; 1048 --enable-rbd) rbd="yes" 1049 ;; 1050 --disable-xfsctl) xfs="no" 1051 ;; 1052 --enable-xfsctl) xfs="yes" 1053 ;; 1054 --disable-smartcard-nss) smartcard_nss="no" 1055 ;; 1056 --enable-smartcard-nss) smartcard_nss="yes" 1057 ;; 1058 --disable-libusb) libusb="no" 1059 ;; 1060 --enable-libusb) libusb="yes" 1061 ;; 1062 --disable-usb-redir) usb_redir="no" 1063 ;; 1064 --enable-usb-redir) usb_redir="yes" 1065 ;; 1066 --disable-zlib-test) zlib="no" 1067 ;; 1068 --disable-lzo) lzo="no" 1069 ;; 1070 --enable-lzo) lzo="yes" 1071 ;; 1072 --disable-snappy) snappy="no" 1073 ;; 1074 --enable-snappy) snappy="yes" 1075 ;; 1076 --disable-bzip2) bzip2="no" 1077 ;; 1078 --enable-bzip2) bzip2="yes" 1079 ;; 1080 --enable-guest-agent) guest_agent="yes" 1081 ;; 1082 --disable-guest-agent) guest_agent="no" 1083 ;; 1084 --enable-guest-agent-msi) guest_agent_msi="yes" 1085 ;; 1086 --disable-guest-agent-msi) guest_agent_msi="no" 1087 ;; 1088 --with-vss-sdk) vss_win32_sdk="" 1089 ;; 1090 --with-vss-sdk=*) vss_win32_sdk="$optarg" 1091 ;; 1092 --without-vss-sdk) vss_win32_sdk="no" 1093 ;; 1094 --with-win-sdk) win_sdk="" 1095 ;; 1096 --with-win-sdk=*) win_sdk="$optarg" 1097 ;; 1098 --without-win-sdk) win_sdk="no" 1099 ;; 1100 --enable-tools) want_tools="yes" 1101 ;; 1102 --disable-tools) want_tools="no" 1103 ;; 1104 --enable-seccomp) seccomp="yes" 1105 ;; 1106 --disable-seccomp) seccomp="no" 1107 ;; 1108 --disable-glusterfs) glusterfs="no" 1109 ;; 1110 --enable-glusterfs) glusterfs="yes" 1111 ;; 1112 --disable-archipelago) archipelago="no" 1113 ;; 1114 --enable-archipelago) archipelago="yes" 1115 ;; 1116 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 1117 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1118 ;; 1119 --disable-gtk) gtk="no" 1120 ;; 1121 --enable-gtk) gtk="yes" 1122 ;; 1123 --disable-gnutls) gnutls="no" 1124 ;; 1125 --enable-gnutls) gnutls="yes" 1126 ;; 1127 --enable-rdma) rdma="yes" 1128 ;; 1129 --disable-rdma) rdma="no" 1130 ;; 1131 --with-gtkabi=*) gtkabi="$optarg" 1132 ;; 1133 --disable-vte) vte="no" 1134 ;; 1135 --enable-vte) vte="yes" 1136 ;; 1137 --disable-tpm) tpm="no" 1138 ;; 1139 --enable-tpm) tpm="yes" 1140 ;; 1141 --disable-libssh2) libssh2="no" 1142 ;; 1143 --enable-libssh2) libssh2="yes" 1144 ;; 1145 --enable-vhdx) vhdx="yes" 1146 ;; 1147 --disable-vhdx) vhdx="no" 1148 ;; 1149 --disable-quorum) quorum="no" 1150 ;; 1151 --enable-quorum) quorum="yes" 1152 ;; 1153 --disable-numa) numa="no" 1154 ;; 1155 --enable-numa) numa="yes" 1156 ;; 1157 --disable-tcmalloc) tcmalloc="no" 1158 ;; 1159 --enable-tcmalloc) tcmalloc="yes" 1160 ;; 1161 *) 1162 echo "ERROR: unknown option $opt" 1163 echo "Try '$0 --help' for more information" 1164 exit 1 1165 ;; 1166 esac 1167done 1168 1169if ! has $python; then 1170 error_exit "Python not found. Use --python=/path/to/python" 1171fi 1172 1173# Note that if the Python conditional here evaluates True we will exit 1174# with status 1 which is a shell 'false' value. 1175if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then 1176 error_exit "Cannot use '$python', Python 2.4 or later is required." \ 1177 "Note that Python 3 or later is not yet supported." \ 1178 "Use --python=/path/to/python to specify a supported Python." 1179fi 1180 1181# The -B switch was added in Python 2.6. 1182# If it is supplied, compiled files are not written. 1183# Use it for Python versions which support it. 1184if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then 1185 python="$python -B" 1186fi 1187 1188case "$cpu" in 1189 ppc) 1190 CPU_CFLAGS="-m32" 1191 LDFLAGS="-m32 $LDFLAGS" 1192 ;; 1193 ppc64) 1194 CPU_CFLAGS="-m64" 1195 LDFLAGS="-m64 $LDFLAGS" 1196 ;; 1197 sparc) 1198 LDFLAGS="-m32 $LDFLAGS" 1199 CPU_CFLAGS="-m32 -mcpu=ultrasparc" 1200 ;; 1201 sparc64) 1202 LDFLAGS="-m64 $LDFLAGS" 1203 CPU_CFLAGS="-m64 -mcpu=ultrasparc" 1204 ;; 1205 s390) 1206 CPU_CFLAGS="-m31" 1207 LDFLAGS="-m31 $LDFLAGS" 1208 ;; 1209 s390x) 1210 CPU_CFLAGS="-m64" 1211 LDFLAGS="-m64 $LDFLAGS" 1212 ;; 1213 i386) 1214 CPU_CFLAGS="-m32" 1215 LDFLAGS="-m32 $LDFLAGS" 1216 cc_i386='$(CC) -m32' 1217 ;; 1218 x86_64) 1219 CPU_CFLAGS="-m64" 1220 LDFLAGS="-m64 $LDFLAGS" 1221 cc_i386='$(CC) -m32' 1222 ;; 1223 x32) 1224 CPU_CFLAGS="-mx32" 1225 LDFLAGS="-mx32 $LDFLAGS" 1226 cc_i386='$(CC) -m32' 1227 ;; 1228 # No special flags required for other host CPUs 1229esac 1230 1231QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 1232EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS" 1233 1234default_target_list="" 1235 1236mak_wilds="" 1237 1238if [ "$softmmu" = "yes" ]; then 1239 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 1240fi 1241if [ "$linux_user" = "yes" ]; then 1242 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 1243fi 1244if [ "$bsd_user" = "yes" ]; then 1245 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 1246fi 1247 1248for config in $mak_wilds; do 1249 default_target_list="${default_target_list} $(basename "$config" .mak)" 1250done 1251 1252if test x"$show_help" = x"yes" ; then 1253cat << EOF 1254 1255Usage: configure [options] 1256Options: [defaults in brackets after descriptions] 1257 1258Standard options: 1259 --help print this message 1260 --prefix=PREFIX install in PREFIX [$prefix] 1261 --interp-prefix=PREFIX where to find shared libraries, etc. 1262 use %M for cpu name [$interp_prefix] 1263 --target-list=LIST set target list (default: build everything) 1264$(echo Available targets: $default_target_list | \ 1265 fold -s -w 53 | sed -e 's/^/ /') 1266 1267Advanced options (experts only): 1268 --source-path=PATH path of source code [$source_path] 1269 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 1270 --cc=CC use C compiler CC [$cc] 1271 --iasl=IASL use ACPI compiler IASL [$iasl] 1272 --host-cc=CC use C compiler CC [$host_cc] for code run at 1273 build time 1274 --cxx=CXX use C++ compiler CXX [$cxx] 1275 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 1276 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 1277 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 1278 --make=MAKE use specified make [$make] 1279 --install=INSTALL use specified install [$install] 1280 --python=PYTHON use specified python [$python] 1281 --smbd=SMBD use specified smbd [$smbd] 1282 --static enable static build [$static] 1283 --mandir=PATH install man pages in PATH 1284 --datadir=PATH install firmware in PATH$confsuffix 1285 --docdir=PATH install documentation in PATH$confsuffix 1286 --bindir=PATH install binaries in PATH 1287 --libdir=PATH install libraries in PATH 1288 --sysconfdir=PATH install config in PATH$confsuffix 1289 --localstatedir=PATH install local state in PATH (set at runtime on win32) 1290 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 1291 --enable-debug enable common debug build options 1292 --disable-strip disable stripping binaries 1293 --disable-werror disable compilation abort on warning 1294 --disable-stack-protector disable compiler-provided stack protection 1295 --audio-drv-list=LIST set audio drivers list: 1296 Available drivers: $audio_possible_drivers 1297 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 1298 --block-drv-rw-whitelist=L 1299 set block driver read-write whitelist 1300 (affects only QEMU, not qemu-img) 1301 --block-drv-ro-whitelist=L 1302 set block driver read-only whitelist 1303 (affects only QEMU, not qemu-img) 1304 --enable-trace-backends=B Set trace backend 1305 Available backends: $($python $source_path/scripts/tracetool.py --list-backends) 1306 --with-trace-file=NAME Full PATH,NAME of file to store traces 1307 Default:trace-<pid> 1308 --disable-slirp disable SLIRP userspace network connectivity 1309 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 1310 --oss-lib path to OSS library 1311 --cpu=CPU Build for host CPU [$cpu] 1312 --with-coroutine=BACKEND coroutine backend. Supported options: 1313 gthread, ucontext, sigaltstack, windows 1314 --enable-gcov enable test coverage analysis with gcov 1315 --gcov=GCOV use specified gcov [$gcov_tool] 1316 --disable-blobs disable installing provided firmware blobs 1317 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1318 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1319 1320Optional features, enabled with --enable-FEATURE and 1321disabled with --disable-FEATURE, default is enabled if available: 1322 1323 system all system emulation targets 1324 user supported user emulation targets 1325 linux-user all linux usermode emulation targets 1326 bsd-user all BSD usermode emulation targets 1327 guest-base GUEST_BASE support for usermode emulation targets 1328 docs build documentation 1329 guest-agent build the QEMU Guest Agent 1330 guest-agent-msi build guest agent Windows MSI installation package 1331 pie Position Independent Executables 1332 modules modules support 1333 debug-tcg TCG debugging (default is disabled) 1334 debug-info debugging information 1335 sparse sparse checker 1336 1337 gnutls GNUTLS cryptography support 1338 sdl SDL UI 1339 --with-sdlabi select preferred SDL ABI 1.2 or 2.0 1340 gtk gtk UI 1341 --with-gtkabi select preferred GTK ABI 2.0 or 3.0 1342 vte vte support for the gtk UI 1343 curses curses UI 1344 vnc VNC UI support 1345 vnc-tls TLS encryption for VNC server 1346 vnc-sasl SASL encryption for VNC server 1347 vnc-jpeg JPEG lossy compression for VNC server 1348 vnc-png PNG compression for VNC server 1349 vnc-ws Websockets support for VNC server 1350 cocoa Cocoa UI (Mac OS X only) 1351 virtfs VirtFS 1352 xen xen backend driver support 1353 xen-pci-passthrough 1354 brlapi BrlAPI (Braile) 1355 curl curl connectivity 1356 fdt fdt device tree 1357 bluez bluez stack connectivity 1358 kvm KVM acceleration support 1359 rdma RDMA-based migration support 1360 uuid uuid support 1361 vde support for vde network 1362 netmap support for netmap network 1363 linux-aio Linux AIO support 1364 cap-ng libcap-ng support 1365 attr attr and xattr support 1366 vhost-net vhost-net acceleration support 1367 spice spice 1368 rbd rados block device (rbd) 1369 libiscsi iscsi support 1370 libnfs nfs support 1371 smartcard-nss smartcard nss support 1372 libusb libusb (for usb passthrough) 1373 usb-redir usb network redirection support 1374 lzo support of lzo compression library 1375 snappy support of snappy compression library 1376 bzip2 support of bzip2 compression library 1377 (for reading bzip2-compressed dmg images) 1378 seccomp seccomp support 1379 coroutine-pool coroutine freelist (better performance) 1380 glusterfs GlusterFS backend 1381 archipelago Archipelago backend 1382 tpm TPM support 1383 libssh2 ssh block device support 1384 vhdx support for the Microsoft VHDX image format 1385 quorum quorum block filter support 1386 numa libnuma support 1387 tcmalloc tcmalloc support 1388 1389NOTE: The object files are built at the place where configure is launched 1390EOF 1391exit 0 1392fi 1393 1394# Now we have handled --enable-tcg-interpreter and know we're not just 1395# printing the help message, bail out if the host CPU isn't supported. 1396if test "$ARCH" = "unknown"; then 1397 if test "$tcg_interpreter" = "yes" ; then 1398 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1399 ARCH=tci 1400 else 1401 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1402 fi 1403fi 1404 1405# Consult white-list to determine whether to enable werror 1406# by default. Only enable by default for git builds 1407z_version=`cut -f3 -d. $source_path/VERSION` 1408 1409if test -z "$werror" ; then 1410 if test -d "$source_path/.git" -a \ 1411 "$linux" = "yes" ; then 1412 werror="yes" 1413 else 1414 werror="no" 1415 fi 1416fi 1417 1418# check that the C compiler works. 1419write_c_skeleton; 1420if compile_object ; then 1421 : C compiler works ok 1422else 1423 error_exit "\"$cc\" either does not exist or does not work" 1424fi 1425 1426# Check that the C++ compiler exists and works with the C compiler 1427if has $cxx; then 1428 cat > $TMPC <<EOF 1429int c_function(void); 1430int main(void) { return c_function(); } 1431EOF 1432 1433 compile_object 1434 1435 cat > $TMPCXX <<EOF 1436extern "C" { 1437 int c_function(void); 1438} 1439int c_function(void) { return 42; } 1440EOF 1441 1442 update_cxxflags 1443 1444 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then 1445 # C++ compiler $cxx works ok with C compiler $cc 1446 : 1447 else 1448 echo "C++ compiler $cxx does not work with C compiler $cc" 1449 echo "Disabling C++ specific optional code" 1450 cxx= 1451 fi 1452else 1453 echo "No C++ compiler available; disabling C++ specific optional code" 1454 cxx= 1455fi 1456 1457gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 1458gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 1459gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 1460gcc_flags="-Wendif-labels $gcc_flags" 1461gcc_flags="-Wno-initializer-overrides $gcc_flags" 1462gcc_flags="-Wno-string-plus-int $gcc_flags" 1463# Note that we do not add -Werror to gcc_flags here, because that would 1464# enable it for all configure tests. If a configure test failed due 1465# to -Werror this would just silently disable some features, 1466# so it's too error prone. 1467 1468cc_has_warning_flag() { 1469 write_c_skeleton; 1470 1471 # Use the positive sense of the flag when testing for -Wno-wombat 1472 # support (gcc will happily accept the -Wno- form of unknown 1473 # warning options). 1474 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 1475 compile_prog "-Werror $optflag" "" 1476} 1477 1478for flag in $gcc_flags; do 1479 if cc_has_warning_flag $flag ; then 1480 QEMU_CFLAGS="$QEMU_CFLAGS $flag" 1481 fi 1482done 1483 1484if test "$stack_protector" != "no"; then 1485 gcc_flags="-fstack-protector-strong -fstack-protector-all" 1486 sp_on=0 1487 for flag in $gcc_flags; do 1488 # We need to check both a compile and a link, since some compiler 1489 # setups fail only on a .c->.o compile and some only at link time 1490 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC && 1491 compile_prog "-Werror $flag" ""; then 1492 QEMU_CFLAGS="$QEMU_CFLAGS $flag" 1493 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag" 1494 sp_on=1 1495 break 1496 fi 1497 done 1498 if test "$stack_protector" = yes; then 1499 if test $sp_on = 0; then 1500 error_exit "Stack protector not supported" 1501 fi 1502 fi 1503fi 1504 1505# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and 1506# large functions that use global variables. The bug is in all releases of 1507# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in 1508# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013. 1509cat > $TMPC << EOF 1510#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2)) 1511int main(void) { return 0; } 1512#else 1513#error No bug in this compiler. 1514#endif 1515EOF 1516if compile_prog "-Werror -fno-gcse" "" ; then 1517 TRANSLATE_OPT_CFLAGS=-fno-gcse 1518fi 1519 1520if test "$static" = "yes" ; then 1521 if test "$modules" = "yes" ; then 1522 error_exit "static and modules are mutually incompatible" 1523 fi 1524 if test "$pie" = "yes" ; then 1525 error_exit "static and pie are mutually incompatible" 1526 else 1527 pie="no" 1528 fi 1529fi 1530 1531# Unconditional check for compiler __thread support 1532 cat > $TMPC << EOF 1533static __thread int tls_var; 1534int main(void) { return tls_var; } 1535EOF 1536 1537if ! compile_prog "-Werror" "" ; then 1538 error_exit "Your compiler does not support the __thread specifier for " \ 1539 "Thread-Local Storage (TLS). Please upgrade to a version that does." 1540fi 1541 1542if test "$pie" = ""; then 1543 case "$cpu-$targetos" in 1544 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 1545 ;; 1546 *) 1547 pie="no" 1548 ;; 1549 esac 1550fi 1551 1552if test "$pie" != "no" ; then 1553 cat > $TMPC << EOF 1554 1555#ifdef __linux__ 1556# define THREAD __thread 1557#else 1558# define THREAD 1559#endif 1560 1561static THREAD int tls_var; 1562 1563int main(void) { return tls_var; } 1564 1565EOF 1566 if compile_prog "-fPIE -DPIE" "-pie"; then 1567 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 1568 LDFLAGS="-pie $LDFLAGS" 1569 pie="yes" 1570 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 1571 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 1572 fi 1573 else 1574 if test "$pie" = "yes"; then 1575 error_exit "PIE not available due to missing toolchain support" 1576 else 1577 echo "Disabling PIE due to missing toolchain support" 1578 pie="no" 1579 fi 1580 fi 1581 1582 if compile_prog "-Werror -fno-pie" "-nopie"; then 1583 CFLAGS_NOPIE="-fno-pie" 1584 LDFLAGS_NOPIE="-nopie" 1585 fi 1586fi 1587 1588# check for broken gcc and libtool in RHEL5 1589if test -n "$libtool" -a "$pie" != "no" ; then 1590 cat > $TMPC <<EOF 1591 1592void *f(unsigned char *buf, int len); 1593void *g(unsigned char *buf, int len); 1594 1595void * 1596f(unsigned char *buf, int len) 1597{ 1598 return (void*)0L; 1599} 1600 1601void * 1602g(unsigned char *buf, int len) 1603{ 1604 return f(buf, len); 1605} 1606 1607EOF 1608 if ! libtool_prog; then 1609 echo "Disabling libtool due to broken toolchain support" 1610 libtool= 1611 fi 1612fi 1613 1614########################################## 1615# __sync_fetch_and_and requires at least -march=i486. Many toolchains 1616# use i686 as default anyway, but for those that don't, an explicit 1617# specification is necessary 1618 1619if test "$cpu" = "i386"; then 1620 cat > $TMPC << EOF 1621static int sfaa(int *ptr) 1622{ 1623 return __sync_fetch_and_and(ptr, 0); 1624} 1625 1626int main(void) 1627{ 1628 int val = 42; 1629 val = __sync_val_compare_and_swap(&val, 0, 1); 1630 sfaa(&val); 1631 return val; 1632} 1633EOF 1634 if ! compile_prog "" "" ; then 1635 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 1636 fi 1637fi 1638 1639######################################### 1640# Solaris specific configure tool chain decisions 1641 1642if test "$solaris" = "yes" ; then 1643 if has $install; then 1644 : 1645 else 1646 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 1647 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 1648 "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1649 fi 1650 if test "`path_of $install`" = "/usr/sbin/install" ; then 1651 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 1652 "try ginstall from the GNU fileutils available from www.blastwave.org" \ 1653 "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1654 fi 1655 if has ar; then 1656 : 1657 else 1658 if test -f /usr/ccs/bin/ar ; then 1659 error_exit "No path includes ar" \ 1660 "Add /usr/ccs/bin to your path and rerun configure" 1661 fi 1662 error_exit "No path includes ar" 1663 fi 1664fi 1665 1666if test -z "${target_list+xxx}" ; then 1667 target_list="$default_target_list" 1668else 1669 target_list=`echo "$target_list" | sed -e 's/,/ /g'` 1670fi 1671 1672# Check that we recognised the target name; this allows a more 1673# friendly error message than if we let it fall through. 1674for target in $target_list; do 1675 case " $default_target_list " in 1676 *" $target "*) 1677 ;; 1678 *) 1679 error_exit "Unknown target name '$target'" 1680 ;; 1681 esac 1682done 1683 1684# see if system emulation was really requested 1685case " $target_list " in 1686 *"-softmmu "*) softmmu=yes 1687 ;; 1688 *) softmmu=no 1689 ;; 1690esac 1691 1692feature_not_found() { 1693 feature=$1 1694 remedy=$2 1695 1696 error_exit "User requested feature $feature" \ 1697 "configure was not able to find it." \ 1698 "$remedy" 1699} 1700 1701# --- 1702# big/little endian test 1703cat > $TMPC << EOF 1704short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 1705short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 1706extern int foo(short *, short *); 1707int main(int argc, char *argv[]) { 1708 return foo(big_endian, little_endian); 1709} 1710EOF 1711 1712if compile_object ; then 1713 if grep -q BiGeNdIaN $TMPO ; then 1714 bigendian="yes" 1715 elif grep -q LiTtLeEnDiAn $TMPO ; then 1716 bigendian="no" 1717 else 1718 echo big/little test failed 1719 fi 1720else 1721 echo big/little test failed 1722fi 1723 1724########################################## 1725# L2TPV3 probe 1726 1727cat > $TMPC <<EOF 1728#include <sys/socket.h> 1729#include <linux/ip.h> 1730int main(void) { return sizeof(struct mmsghdr); } 1731EOF 1732if compile_prog "" "" ; then 1733 l2tpv3=yes 1734else 1735 l2tpv3=no 1736fi 1737 1738########################################## 1739# pkg-config probe 1740 1741if ! has "$pkg_config_exe"; then 1742 error_exit "pkg-config binary '$pkg_config_exe' not found" 1743fi 1744 1745########################################## 1746# NPTL probe 1747 1748if test "$linux_user" = "yes"; then 1749 cat > $TMPC <<EOF 1750#include <sched.h> 1751#include <linux/futex.h> 1752int main(void) { 1753#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1754#error bork 1755#endif 1756 return 0; 1757} 1758EOF 1759 if ! compile_object ; then 1760 feature_not_found "nptl" "Install glibc and linux kernel headers." 1761 fi 1762fi 1763 1764########################################## 1765# zlib check 1766 1767if test "$zlib" != "no" ; then 1768 cat > $TMPC << EOF 1769#include <zlib.h> 1770int main(void) { zlibVersion(); return 0; } 1771EOF 1772 if compile_prog "" "-lz" ; then 1773 : 1774 else 1775 error_exit "zlib check failed" \ 1776 "Make sure to have the zlib libs and headers installed." 1777 fi 1778fi 1779LIBS="$LIBS -lz" 1780 1781########################################## 1782# lzo check 1783 1784if test "$lzo" != "no" ; then 1785 cat > $TMPC << EOF 1786#include <lzo/lzo1x.h> 1787int main(void) { lzo_version(); return 0; } 1788EOF 1789 if compile_prog "" "-llzo2" ; then 1790 libs_softmmu="$libs_softmmu -llzo2" 1791 lzo="yes" 1792 else 1793 if test "$lzo" = "yes"; then 1794 feature_not_found "liblzo2" "Install liblzo2 devel" 1795 fi 1796 lzo="no" 1797 fi 1798fi 1799 1800########################################## 1801# snappy check 1802 1803if test "$snappy" != "no" ; then 1804 cat > $TMPC << EOF 1805#include <snappy-c.h> 1806int main(void) { snappy_max_compressed_length(4096); return 0; } 1807EOF 1808 if compile_prog "" "-lsnappy" ; then 1809 libs_softmmu="$libs_softmmu -lsnappy" 1810 snappy="yes" 1811 else 1812 if test "$snappy" = "yes"; then 1813 feature_not_found "libsnappy" "Install libsnappy devel" 1814 fi 1815 snappy="no" 1816 fi 1817fi 1818 1819########################################## 1820# bzip2 check 1821 1822if test "$bzip2" != "no" ; then 1823 cat > $TMPC << EOF 1824#include <bzlib.h> 1825int main(void) { BZ2_bzlibVersion(); return 0; } 1826EOF 1827 if compile_prog "" "-lbz2" ; then 1828 bzip2="yes" 1829 else 1830 if test "$bzip2" = "yes"; then 1831 feature_not_found "libbzip2" "Install libbzip2 devel" 1832 fi 1833 bzip2="no" 1834 fi 1835fi 1836 1837########################################## 1838# libseccomp check 1839 1840if test "$seccomp" != "no" ; then 1841 if test "$cpu" = "i386" || test "$cpu" = "x86_64" && 1842 $pkg_config --atleast-version=2.1.1 libseccomp; then 1843 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`" 1844 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`" 1845 seccomp="yes" 1846 else 1847 if test "$seccomp" = "yes"; then 1848 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1" 1849 fi 1850 seccomp="no" 1851 fi 1852fi 1853########################################## 1854# xen probe 1855 1856if test "$xen" != "no" ; then 1857 xen_libs="-lxenstore -lxenctrl -lxenguest" 1858 1859 # First we test whether Xen headers and libraries are available. 1860 # If no, we are done and there is no Xen support. 1861 # If yes, more tests are run to detect the Xen version. 1862 1863 # Xen (any) 1864 cat > $TMPC <<EOF 1865#include <xenctrl.h> 1866int main(void) { 1867 return 0; 1868} 1869EOF 1870 if ! compile_prog "" "$xen_libs" ; then 1871 # Xen not found 1872 if test "$xen" = "yes" ; then 1873 feature_not_found "xen" "Install xen devel" 1874 fi 1875 xen=no 1876 1877 # Xen unstable 1878 elif 1879 cat > $TMPC <<EOF && 1880#include <xenctrl.h> 1881#include <xenstore.h> 1882#include <stdint.h> 1883#include <xen/hvm/hvm_info_table.h> 1884#if !defined(HVM_MAX_VCPUS) 1885# error HVM_MAX_VCPUS not defined 1886#endif 1887int main(void) { 1888 xc_interface *xc; 1889 xs_daemon_open(); 1890 xc = xc_interface_open(0, 0, 0); 1891 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1892 xc_gnttab_open(NULL, 0); 1893 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1894 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 1895 xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 1896 return 0; 1897} 1898EOF 1899 compile_prog "" "$xen_libs" 1900 then 1901 xen_ctrl_version=450 1902 xen=yes 1903 1904 elif 1905 cat > $TMPC <<EOF && 1906#include <xenctrl.h> 1907#include <xenstore.h> 1908#include <stdint.h> 1909#include <xen/hvm/hvm_info_table.h> 1910#if !defined(HVM_MAX_VCPUS) 1911# error HVM_MAX_VCPUS not defined 1912#endif 1913int main(void) { 1914 xc_interface *xc; 1915 xs_daemon_open(); 1916 xc = xc_interface_open(0, 0, 0); 1917 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1918 xc_gnttab_open(NULL, 0); 1919 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1920 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 1921 return 0; 1922} 1923EOF 1924 compile_prog "" "$xen_libs" 1925 then 1926 xen_ctrl_version=420 1927 xen=yes 1928 1929 elif 1930 cat > $TMPC <<EOF && 1931#include <xenctrl.h> 1932#include <xs.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 1938int main(void) { 1939 xs_daemon_open(); 1940 xc_interface_open(0, 0, 0); 1941 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1942 xc_gnttab_open(NULL, 0); 1943 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1944 return 0; 1945} 1946EOF 1947 compile_prog "" "$xen_libs" 1948 then 1949 xen_ctrl_version=410 1950 xen=yes 1951 1952 # Xen 4.0.0 1953 elif 1954 cat > $TMPC <<EOF && 1955#include <xenctrl.h> 1956#include <xs.h> 1957#include <stdint.h> 1958#include <xen/hvm/hvm_info_table.h> 1959#if !defined(HVM_MAX_VCPUS) 1960# error HVM_MAX_VCPUS not defined 1961#endif 1962int main(void) { 1963 struct xen_add_to_physmap xatp = { 1964 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1965 }; 1966 xs_daemon_open(); 1967 xc_interface_open(); 1968 xc_gnttab_open(); 1969 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1970 xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1971 return 0; 1972} 1973EOF 1974 compile_prog "" "$xen_libs" 1975 then 1976 xen_ctrl_version=400 1977 xen=yes 1978 1979 # Xen 3.4.0 1980 elif 1981 cat > $TMPC <<EOF && 1982#include <xenctrl.h> 1983#include <xs.h> 1984int main(void) { 1985 struct xen_add_to_physmap xatp = { 1986 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1987 }; 1988 xs_daemon_open(); 1989 xc_interface_open(); 1990 xc_gnttab_open(); 1991 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1992 xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1993 return 0; 1994} 1995EOF 1996 compile_prog "" "$xen_libs" 1997 then 1998 xen_ctrl_version=340 1999 xen=yes 2000 2001 # Xen 3.3.0 2002 elif 2003 cat > $TMPC <<EOF && 2004#include <xenctrl.h> 2005#include <xs.h> 2006int main(void) { 2007 xs_daemon_open(); 2008 xc_interface_open(); 2009 xc_gnttab_open(); 2010 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2011 return 0; 2012} 2013EOF 2014 compile_prog "" "$xen_libs" 2015 then 2016 xen_ctrl_version=330 2017 xen=yes 2018 2019 # Xen version unsupported 2020 else 2021 if test "$xen" = "yes" ; then 2022 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)" 2023 fi 2024 xen=no 2025 fi 2026 2027 if test "$xen" = yes; then 2028 libs_softmmu="$xen_libs $libs_softmmu" 2029 fi 2030fi 2031 2032if test "$xen_pci_passthrough" != "no"; then 2033 if test "$xen" = "yes" && test "$linux" = "yes" && 2034 test "$xen_ctrl_version" -ge 340; then 2035 xen_pci_passthrough=yes 2036 else 2037 if test "$xen_pci_passthrough" = "yes"; then 2038 if test "$xen_ctrl_version" -lt 340; then 2039 error_exit "User requested feature Xen PCI Passthrough" \ 2040 "This feature does not work with Xen 3.3" 2041 fi 2042 error_exit "User requested feature Xen PCI Passthrough" \ 2043 " but this feature requires /sys from Linux" 2044 fi 2045 xen_pci_passthrough=no 2046 fi 2047fi 2048 2049########################################## 2050# libtool probe 2051 2052if ! has $libtool; then 2053 libtool= 2054fi 2055 2056# MacOSX ships with a libtool which isn't the GNU one; weed this 2057# out by checking whether libtool supports the --version switch 2058if test -n "$libtool"; then 2059 if ! "$libtool" --version >/dev/null 2>&1; then 2060 libtool= 2061 fi 2062fi 2063 2064########################################## 2065# Sparse probe 2066if test "$sparse" != "no" ; then 2067 if has cgcc; then 2068 sparse=yes 2069 else 2070 if test "$sparse" = "yes" ; then 2071 feature_not_found "sparse" "Install sparse binary" 2072 fi 2073 sparse=no 2074 fi 2075fi 2076 2077########################################## 2078# X11 probe 2079x11_cflags= 2080x11_libs=-lX11 2081if $pkg_config --exists "x11"; then 2082 x11_cflags=`$pkg_config --cflags x11` 2083 x11_libs=`$pkg_config --libs x11` 2084fi 2085 2086########################################## 2087# GTK probe 2088 2089if test "$gtkabi" = ""; then 2090 # The GTK ABI was not specified explicitly, so try whether 2.0 is available. 2091 # Use 3.0 as a fallback if that is available. 2092 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then 2093 gtkabi=2.0 2094 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then 2095 gtkabi=3.0 2096 else 2097 gtkabi=2.0 2098 fi 2099fi 2100 2101if test "$gtk" != "no"; then 2102 gtkpackage="gtk+-$gtkabi" 2103 gtkx11package="gtk+-x11-$gtkabi" 2104 if test "$gtkabi" = "3.0" ; then 2105 gtkversion="3.0.0" 2106 else 2107 gtkversion="2.18.0" 2108 fi 2109 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 2110 gtk_cflags=`$pkg_config --cflags $gtkpackage` 2111 gtk_libs=`$pkg_config --libs $gtkpackage` 2112 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 2113 gtk_cflags="$gtk_cflags $x11_cflags" 2114 gtk_libs="$gtk_libs $x11_libs" 2115 fi 2116 libs_softmmu="$gtk_libs $libs_softmmu" 2117 gtk="yes" 2118 elif test "$gtk" = "yes"; then 2119 feature_not_found "gtk" "Install gtk2 or gtk3 devel" 2120 else 2121 gtk="no" 2122 fi 2123fi 2124 2125 2126########################################## 2127# GNUTLS probe 2128 2129if test "$gnutls" != "no"; then 2130 if $pkg_config --exists "gnutls"; then 2131 gnutls_cflags=`$pkg_config --cflags gnutls` 2132 gnutls_libs=`$pkg_config --libs gnutls` 2133 libs_softmmu="$gnutls_libs $libs_softmmu" 2134 libs_tools="$gnutls_libs $libs_tools" 2135 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" 2136 gnutls="yes" 2137 2138 # gnutls_hash_init requires >= 2.9.10 2139 if $pkg_config --exists "gnutls >= 2.9.10"; then 2140 gnutls_hash="yes" 2141 else 2142 gnutls_hash="no" 2143 fi 2144 elif test "$gnutls" = "yes"; then 2145 feature_not_found "gnutls" "Install gnutls devel" 2146 else 2147 gnutls="no" 2148 gnutls_hash="no" 2149 fi 2150else 2151 gnutls_hash="no" 2152fi 2153 2154 2155########################################## 2156# VTE probe 2157 2158if test "$vte" != "no"; then 2159 if test "$gtkabi" = "3.0"; then 2160 vtepackage="vte-2.90" 2161 vteversion="0.32.0" 2162 else 2163 vtepackage="vte" 2164 vteversion="0.24.0" 2165 fi 2166 if $pkg_config --exists "$vtepackage >= $vteversion"; then 2167 vte_cflags=`$pkg_config --cflags $vtepackage` 2168 vte_libs=`$pkg_config --libs $vtepackage` 2169 libs_softmmu="$vte_libs $libs_softmmu" 2170 vte="yes" 2171 elif test "$vte" = "yes"; then 2172 if test "$gtkabi" = "3.0"; then 2173 feature_not_found "vte" "Install libvte-2.90 devel" 2174 else 2175 feature_not_found "vte" "Install libvte devel" 2176 fi 2177 else 2178 vte="no" 2179 fi 2180fi 2181 2182########################################## 2183# SDL probe 2184 2185# Look for sdl configuration program (pkg-config or sdl-config). Try 2186# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 2187 2188if test $sdlabi = "2.0"; then 2189 sdl_config=$sdl2_config 2190 sdlname=sdl2 2191 sdlconfigname=sdl2_config 2192else 2193 sdlname=sdl 2194 sdlconfigname=sdl_config 2195fi 2196 2197if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then 2198 sdl_config=$sdlconfigname 2199fi 2200 2201if $pkg_config $sdlname --exists; then 2202 sdlconfig="$pkg_config $sdlname" 2203 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 2204elif has ${sdl_config}; then 2205 sdlconfig="$sdl_config" 2206 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 2207else 2208 if test "$sdl" = "yes" ; then 2209 feature_not_found "sdl" "Install SDL devel" 2210 fi 2211 sdl=no 2212fi 2213if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 2214 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 2215fi 2216 2217sdl_too_old=no 2218if test "$sdl" != "no" ; then 2219 cat > $TMPC << EOF 2220#include <SDL.h> 2221#undef main /* We don't want SDL to override our main() */ 2222int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 2223EOF 2224 sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 2225 if test "$static" = "yes" ; then 2226 sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 2227 else 2228 sdl_libs=`$sdlconfig --libs 2> /dev/null` 2229 fi 2230 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 2231 if test "$_sdlversion" -lt 121 ; then 2232 sdl_too_old=yes 2233 else 2234 if test "$cocoa" = "no" ; then 2235 sdl=yes 2236 fi 2237 fi 2238 2239 # static link with sdl ? (note: sdl.pc's --static --libs is broken) 2240 if test "$sdl" = "yes" -a "$static" = "yes" ; then 2241 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 2242 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 2243 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 2244 fi 2245 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 2246 : 2247 else 2248 sdl=no 2249 fi 2250 fi # static link 2251 else # sdl not found 2252 if test "$sdl" = "yes" ; then 2253 feature_not_found "sdl" "Install SDL devel" 2254 fi 2255 sdl=no 2256 fi # sdl compile test 2257fi 2258 2259if test "$sdl" = "yes" ; then 2260 cat > $TMPC <<EOF 2261#include <SDL.h> 2262#if defined(SDL_VIDEO_DRIVER_X11) 2263#include <X11/XKBlib.h> 2264#else 2265#error No x11 support 2266#endif 2267int main(void) { return 0; } 2268EOF 2269 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 2270 sdl_cflags="$sdl_cflags $x11_cflags" 2271 sdl_libs="$sdl_libs $x11_libs" 2272 fi 2273 libs_softmmu="$sdl_libs $libs_softmmu" 2274fi 2275 2276########################################## 2277# RDMA needs OpenFabrics libraries 2278if test "$rdma" != "no" ; then 2279 cat > $TMPC <<EOF 2280#include <rdma/rdma_cma.h> 2281int main(void) { return 0; } 2282EOF 2283 rdma_libs="-lrdmacm -libverbs" 2284 if compile_prog "" "$rdma_libs" ; then 2285 rdma="yes" 2286 libs_softmmu="$libs_softmmu $rdma_libs" 2287 else 2288 if test "$rdma" = "yes" ; then 2289 error_exit \ 2290 " OpenFabrics librdmacm/libibverbs not present." \ 2291 " Your options:" \ 2292 " (1) Fast: Install infiniband packages from your distro." \ 2293 " (2) Cleanest: Install libraries from www.openfabrics.org" \ 2294 " (3) Also: Install softiwarp if you don't have RDMA hardware" 2295 fi 2296 rdma="no" 2297 fi 2298fi 2299 2300########################################## 2301# VNC TLS/WS detection 2302if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then 2303 cat > $TMPC <<EOF 2304#include <gnutls/gnutls.h> 2305int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 2306EOF 2307 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 2308 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 2309 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then 2310 if test "$vnc_tls" != "no" ; then 2311 vnc_tls=yes 2312 fi 2313 if test "$vnc_ws" != "no" ; then 2314 vnc_ws=yes 2315 fi 2316 libs_softmmu="$vnc_tls_libs $libs_softmmu" 2317 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags" 2318 else 2319 if test "$vnc_tls" = "yes" ; then 2320 feature_not_found "vnc-tls" "Install gnutls devel" 2321 fi 2322 if test "$vnc_ws" = "yes" ; then 2323 feature_not_found "vnc-ws" "Install gnutls devel" 2324 fi 2325 vnc_tls=no 2326 vnc_ws=no 2327 fi 2328fi 2329 2330########################################## 2331# Quorum probe (check for gnutls) 2332if test "$quorum" != "no" ; then 2333cat > $TMPC <<EOF 2334#include <gnutls/gnutls.h> 2335#include <gnutls/crypto.h> 2336int main(void) {char data[4096], digest[32]; 2337gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest); 2338return 0; 2339} 2340EOF 2341quorum_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 2342quorum_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 2343if compile_prog "$quorum_tls_cflags" "$quorum_tls_libs" ; then 2344 qcow_tls=yes 2345 libs_softmmu="$quorum_tls_libs $libs_softmmu" 2346 libs_tools="$quorum_tls_libs $libs_softmmu" 2347 QEMU_CFLAGS="$QEMU_CFLAGS $quorum_tls_cflags" 2348 quorum="yes" 2349else 2350 if test "$quorum" = "yes"; then 2351 feature_not_found "gnutls" "gnutls > 2.10.0 required to compile Quorum" 2352 fi 2353 quorum="no" 2354fi 2355fi 2356 2357########################################## 2358# VNC SASL detection 2359if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 2360 cat > $TMPC <<EOF 2361#include <sasl/sasl.h> 2362#include <stdio.h> 2363int main(void) { sasl_server_init(NULL, "qemu"); return 0; } 2364EOF 2365 # Assuming Cyrus-SASL installed in /usr prefix 2366 vnc_sasl_cflags="" 2367 vnc_sasl_libs="-lsasl2" 2368 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 2369 vnc_sasl=yes 2370 libs_softmmu="$vnc_sasl_libs $libs_softmmu" 2371 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 2372 else 2373 if test "$vnc_sasl" = "yes" ; then 2374 feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 2375 fi 2376 vnc_sasl=no 2377 fi 2378fi 2379 2380########################################## 2381# VNC JPEG detection 2382if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 2383cat > $TMPC <<EOF 2384#include <stdio.h> 2385#include <jpeglib.h> 2386int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 2387EOF 2388 vnc_jpeg_cflags="" 2389 vnc_jpeg_libs="-ljpeg" 2390 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 2391 vnc_jpeg=yes 2392 libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 2393 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 2394 else 2395 if test "$vnc_jpeg" = "yes" ; then 2396 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 2397 fi 2398 vnc_jpeg=no 2399 fi 2400fi 2401 2402########################################## 2403# VNC PNG detection 2404if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 2405cat > $TMPC <<EOF 2406//#include <stdio.h> 2407#include <png.h> 2408#include <stddef.h> 2409int main(void) { 2410 png_structp png_ptr; 2411 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 2412 return png_ptr != 0; 2413} 2414EOF 2415 if $pkg_config libpng --exists; then 2416 vnc_png_cflags=`$pkg_config libpng --cflags` 2417 vnc_png_libs=`$pkg_config libpng --libs` 2418 else 2419 vnc_png_cflags="" 2420 vnc_png_libs="-lpng" 2421 fi 2422 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 2423 vnc_png=yes 2424 libs_softmmu="$vnc_png_libs $libs_softmmu" 2425 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 2426 else 2427 if test "$vnc_png" = "yes" ; then 2428 feature_not_found "vnc-png" "Install libpng devel" 2429 fi 2430 vnc_png=no 2431 fi 2432fi 2433 2434########################################## 2435# fnmatch() probe, used for ACL routines 2436fnmatch="no" 2437cat > $TMPC << EOF 2438#include <fnmatch.h> 2439int main(void) 2440{ 2441 fnmatch("foo", "foo", 0); 2442 return 0; 2443} 2444EOF 2445if compile_prog "" "" ; then 2446 fnmatch="yes" 2447fi 2448 2449########################################## 2450# uuid_generate() probe, used for vdi block driver 2451# Note that on some systems (notably MacOSX) no extra library 2452# need be linked to get the uuid functions. 2453if test "$uuid" != "no" ; then 2454 uuid_libs="-luuid" 2455 cat > $TMPC << EOF 2456#include <uuid/uuid.h> 2457int main(void) 2458{ 2459 uuid_t my_uuid; 2460 uuid_generate(my_uuid); 2461 return 0; 2462} 2463EOF 2464 if compile_prog "" "" ; then 2465 uuid="yes" 2466 elif compile_prog "" "$uuid_libs" ; then 2467 uuid="yes" 2468 libs_softmmu="$uuid_libs $libs_softmmu" 2469 libs_tools="$uuid_libs $libs_tools" 2470 else 2471 if test "$uuid" = "yes" ; then 2472 feature_not_found "uuid" "Install libuuid devel" 2473 fi 2474 uuid=no 2475 fi 2476fi 2477 2478if test "$vhdx" = "yes" ; then 2479 if test "$uuid" = "no" ; then 2480 error_exit "uuid required for VHDX support" 2481 fi 2482elif test "$vhdx" != "no" ; then 2483 if test "$uuid" = "yes" ; then 2484 vhdx=yes 2485 else 2486 vhdx=no 2487 fi 2488fi 2489 2490########################################## 2491# xfsctl() probe, used for raw-posix 2492if test "$xfs" != "no" ; then 2493 cat > $TMPC << EOF 2494#include <stddef.h> /* NULL */ 2495#include <xfs/xfs.h> 2496int main(void) 2497{ 2498 xfsctl(NULL, 0, 0, NULL); 2499 return 0; 2500} 2501EOF 2502 if compile_prog "" "" ; then 2503 xfs="yes" 2504 else 2505 if test "$xfs" = "yes" ; then 2506 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 2507 fi 2508 xfs=no 2509 fi 2510fi 2511 2512########################################## 2513# vde libraries probe 2514if test "$vde" != "no" ; then 2515 vde_libs="-lvdeplug" 2516 cat > $TMPC << EOF 2517#include <libvdeplug.h> 2518int main(void) 2519{ 2520 struct vde_open_args a = {0, 0, 0}; 2521 char s[] = ""; 2522 vde_open(s, s, &a); 2523 return 0; 2524} 2525EOF 2526 if compile_prog "" "$vde_libs" ; then 2527 vde=yes 2528 libs_softmmu="$vde_libs $libs_softmmu" 2529 libs_tools="$vde_libs $libs_tools" 2530 else 2531 if test "$vde" = "yes" ; then 2532 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 2533 fi 2534 vde=no 2535 fi 2536fi 2537 2538########################################## 2539# netmap support probe 2540# Apart from looking for netmap headers, we make sure that the host API version 2541# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 2542# a minor/major version number. Minor new features will be marked with values up 2543# to 15, and if something happens that requires a change to the backend we will 2544# move above 15, submit the backend fixes and modify this two bounds. 2545if test "$netmap" != "no" ; then 2546 cat > $TMPC << EOF 2547#include <inttypes.h> 2548#include <net/if.h> 2549#include <net/netmap.h> 2550#include <net/netmap_user.h> 2551#if (NETMAP_API < 11) || (NETMAP_API > 15) 2552#error 2553#endif 2554int main(void) { return 0; } 2555EOF 2556 if compile_prog "" "" ; then 2557 netmap=yes 2558 else 2559 if test "$netmap" = "yes" ; then 2560 feature_not_found "netmap" 2561 fi 2562 netmap=no 2563 fi 2564fi 2565 2566########################################## 2567# libcap-ng library probe 2568if test "$cap_ng" != "no" ; then 2569 cap_libs="-lcap-ng" 2570 cat > $TMPC << EOF 2571#include <cap-ng.h> 2572int main(void) 2573{ 2574 capng_capability_to_name(CAPNG_EFFECTIVE); 2575 return 0; 2576} 2577EOF 2578 if compile_prog "" "$cap_libs" ; then 2579 cap_ng=yes 2580 libs_tools="$cap_libs $libs_tools" 2581 else 2582 if test "$cap_ng" = "yes" ; then 2583 feature_not_found "cap_ng" "Install libcap-ng devel" 2584 fi 2585 cap_ng=no 2586 fi 2587fi 2588 2589########################################## 2590# Sound support libraries probe 2591 2592audio_drv_probe() 2593{ 2594 drv=$1 2595 hdr=$2 2596 lib=$3 2597 exp=$4 2598 cfl=$5 2599 cat > $TMPC << EOF 2600#include <$hdr> 2601int main(void) { $exp } 2602EOF 2603 if compile_prog "$cfl" "$lib" ; then 2604 : 2605 else 2606 error_exit "$drv check failed" \ 2607 "Make sure to have the $drv libs and headers installed." 2608 fi 2609} 2610 2611audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 2612for drv in $audio_drv_list; do 2613 case $drv in 2614 alsa) 2615 audio_drv_probe $drv alsa/asoundlib.h -lasound \ 2616 "return snd_pcm_close((snd_pcm_t *)0);" 2617 libs_softmmu="-lasound $libs_softmmu" 2618 ;; 2619 2620 pa) 2621 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \ 2622 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;" 2623 libs_softmmu="-lpulse $libs_softmmu" 2624 audio_pt_int="yes" 2625 ;; 2626 2627 coreaudio) 2628 libs_softmmu="-framework CoreAudio $libs_softmmu" 2629 ;; 2630 2631 dsound) 2632 libs_softmmu="-lole32 -ldxguid $libs_softmmu" 2633 audio_win_int="yes" 2634 ;; 2635 2636 oss) 2637 libs_softmmu="$oss_lib $libs_softmmu" 2638 ;; 2639 2640 sdl|wav) 2641 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 2642 ;; 2643 2644 *) 2645 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 2646 error_exit "Unknown driver '$drv' selected" \ 2647 "Possible drivers are: $audio_possible_drivers" 2648 } 2649 ;; 2650 esac 2651done 2652 2653########################################## 2654# BrlAPI probe 2655 2656if test "$brlapi" != "no" ; then 2657 brlapi_libs="-lbrlapi" 2658 cat > $TMPC << EOF 2659#include <brlapi.h> 2660#include <stddef.h> 2661int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 2662EOF 2663 if compile_prog "" "$brlapi_libs" ; then 2664 brlapi=yes 2665 libs_softmmu="$brlapi_libs $libs_softmmu" 2666 else 2667 if test "$brlapi" = "yes" ; then 2668 feature_not_found "brlapi" "Install brlapi devel" 2669 fi 2670 brlapi=no 2671 fi 2672fi 2673 2674########################################## 2675# curses probe 2676if test "$curses" != "no" ; then 2677 if test "$mingw32" = "yes" ; then 2678 curses_list="-lpdcurses" 2679 else 2680 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses" 2681 fi 2682 curses_found=no 2683 cat > $TMPC << EOF 2684#include <curses.h> 2685int main(void) { 2686 const char *s = curses_version(); 2687 resize_term(0, 0); 2688 return s != 0; 2689} 2690EOF 2691 IFS=: 2692 for curses_lib in $curses_list; do 2693 unset IFS 2694 if compile_prog "" "$curses_lib" ; then 2695 curses_found=yes 2696 libs_softmmu="$curses_lib $libs_softmmu" 2697 break 2698 fi 2699 done 2700 unset IFS 2701 if test "$curses_found" = "yes" ; then 2702 curses=yes 2703 else 2704 if test "$curses" = "yes" ; then 2705 feature_not_found "curses" "Install ncurses devel" 2706 fi 2707 curses=no 2708 fi 2709fi 2710 2711########################################## 2712# curl probe 2713if test "$curl" != "no" ; then 2714 if $pkg_config libcurl --exists; then 2715 curlconfig="$pkg_config libcurl" 2716 else 2717 curlconfig=curl-config 2718 fi 2719 cat > $TMPC << EOF 2720#include <curl/curl.h> 2721int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 2722EOF 2723 curl_cflags=`$curlconfig --cflags 2>/dev/null` 2724 curl_libs=`$curlconfig --libs 2>/dev/null` 2725 if compile_prog "$curl_cflags" "$curl_libs" ; then 2726 curl=yes 2727 else 2728 if test "$curl" = "yes" ; then 2729 feature_not_found "curl" "Install libcurl devel" 2730 fi 2731 curl=no 2732 fi 2733fi # test "$curl" 2734 2735########################################## 2736# bluez support probe 2737if test "$bluez" != "no" ; then 2738 cat > $TMPC << EOF 2739#include <bluetooth/bluetooth.h> 2740int main(void) { return bt_error(0); } 2741EOF 2742 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null` 2743 bluez_libs=`$pkg_config --libs bluez 2> /dev/null` 2744 if compile_prog "$bluez_cflags" "$bluez_libs" ; then 2745 bluez=yes 2746 libs_softmmu="$bluez_libs $libs_softmmu" 2747 else 2748 if test "$bluez" = "yes" ; then 2749 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 2750 fi 2751 bluez="no" 2752 fi 2753fi 2754 2755########################################## 2756# glib support probe 2757 2758glib_req_ver=2.22 2759glib_modules=gthread-2.0 2760if test "$modules" = yes; then 2761 glib_modules="$glib_modules gmodule-2.0" 2762fi 2763 2764for i in $glib_modules; do 2765 if $pkg_config --atleast-version=$glib_req_ver $i; then 2766 glib_cflags=`$pkg_config --cflags $i` 2767 glib_libs=`$pkg_config --libs $i` 2768 CFLAGS="$glib_cflags $CFLAGS" 2769 LIBS="$glib_libs $LIBS" 2770 libs_qga="$glib_libs $libs_qga" 2771 else 2772 error_exit "glib-$glib_req_ver $i is required to compile QEMU" 2773 fi 2774done 2775 2776# g_test_trap_subprocess added in 2.38. Used by some tests. 2777glib_subprocess=yes 2778if ! $pkg_config --atleast-version=2.38 glib-2.0; then 2779 glib_subprocess=no 2780fi 2781 2782# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 2783cat > $TMPC << EOF 2784#include <glib.h> 2785int main(void) { return 0; } 2786EOF 2787if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 2788 if cc_has_warning_flag "-Wno-unknown-attributes"; then 2789 glib_cflags="-Wno-unknown-attributes $glib_cflags" 2790 CFLAGS="-Wno-unknown-attributes $CFLAGS" 2791 fi 2792fi 2793 2794########################################## 2795# SHA command probe for modules 2796if test "$modules" = yes; then 2797 shacmd_probe="sha1sum sha1 shasum" 2798 for c in $shacmd_probe; do 2799 if has $c; then 2800 shacmd="$c" 2801 break 2802 fi 2803 done 2804 if test "$shacmd" = ""; then 2805 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 2806 fi 2807fi 2808 2809########################################## 2810# pixman support probe 2811 2812if test "$pixman" = ""; then 2813 if test "$want_tools" = "no" -a "$softmmu" = "no"; then 2814 pixman="none" 2815 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 2816 pixman="system" 2817 else 2818 pixman="internal" 2819 fi 2820fi 2821if test "$pixman" = "none"; then 2822 if test "$want_tools" != "no" -o "$softmmu" != "no"; then 2823 error_exit "pixman disabled but system emulation or tools build" \ 2824 "enabled. You can turn off pixman only if you also" \ 2825 "disable all system emulation targets and the tools" \ 2826 "build with '--disable-tools --disable-system'." 2827 fi 2828 pixman_cflags= 2829 pixman_libs= 2830elif test "$pixman" = "system"; then 2831 # pixman version has been checked above 2832 pixman_cflags=`$pkg_config --cflags pixman-1` 2833 pixman_libs=`$pkg_config --libs pixman-1` 2834else 2835 if test ! -d ${source_path}/pixman/pixman; then 2836 error_exit "pixman >= 0.21.8 not present. Your options:" \ 2837 " (1) Preferred: Install the pixman devel package (any recent" \ 2838 " distro should have packages as Xorg needs pixman too)." \ 2839 " (2) Fetch the pixman submodule, using:" \ 2840 " git submodule update --init pixman" 2841 fi 2842 mkdir -p pixman/pixman 2843 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman" 2844 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1" 2845fi 2846 2847########################################## 2848# libcap probe 2849 2850if test "$cap" != "no" ; then 2851 cat > $TMPC <<EOF 2852#include <stdio.h> 2853#include <sys/capability.h> 2854int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 2855EOF 2856 if compile_prog "" "-lcap" ; then 2857 cap=yes 2858 else 2859 cap=no 2860 fi 2861fi 2862 2863########################################## 2864# pthread probe 2865PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 2866 2867pthread=no 2868cat > $TMPC << EOF 2869#include <pthread.h> 2870static void *f(void *p) { return NULL; } 2871int main(void) { 2872 pthread_t thread; 2873 pthread_create(&thread, 0, f, 0); 2874 return 0; 2875} 2876EOF 2877if compile_prog "" "" ; then 2878 pthread=yes 2879else 2880 for pthread_lib in $PTHREADLIBS_LIST; do 2881 if compile_prog "" "$pthread_lib" ; then 2882 pthread=yes 2883 found=no 2884 for lib_entry in $LIBS; do 2885 if test "$lib_entry" = "$pthread_lib"; then 2886 found=yes 2887 break 2888 fi 2889 done 2890 if test "$found" = "no"; then 2891 LIBS="$pthread_lib $LIBS" 2892 fi 2893 break 2894 fi 2895 done 2896fi 2897 2898if test "$mingw32" != yes -a "$pthread" = no; then 2899 error_exit "pthread check failed" \ 2900 "Make sure to have the pthread libs and headers installed." 2901fi 2902 2903# check for pthread_setname_np 2904pthread_setname_np=no 2905cat > $TMPC << EOF 2906#include <pthread.h> 2907 2908static void *f(void *p) { return NULL; } 2909int main(void) 2910{ 2911 pthread_t thread; 2912 pthread_create(&thread, 0, f, 0); 2913 pthread_setname_np(thread, "QEMU"); 2914 return 0; 2915} 2916EOF 2917if compile_prog "" "$pthread_lib" ; then 2918 pthread_setname_np=yes 2919fi 2920 2921########################################## 2922# rbd probe 2923if test "$rbd" != "no" ; then 2924 cat > $TMPC <<EOF 2925#include <stdio.h> 2926#include <rbd/librbd.h> 2927int main(void) { 2928 rados_t cluster; 2929 rados_create(&cluster, NULL); 2930 return 0; 2931} 2932EOF 2933 rbd_libs="-lrbd -lrados" 2934 if compile_prog "" "$rbd_libs" ; then 2935 rbd=yes 2936 else 2937 if test "$rbd" = "yes" ; then 2938 feature_not_found "rados block device" "Install librbd/ceph devel" 2939 fi 2940 rbd=no 2941 fi 2942fi 2943 2944########################################## 2945# libssh2 probe 2946min_libssh2_version=1.2.8 2947if test "$libssh2" != "no" ; then 2948 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 2949 libssh2_cflags=`$pkg_config libssh2 --cflags` 2950 libssh2_libs=`$pkg_config libssh2 --libs` 2951 libssh2=yes 2952 else 2953 if test "$libssh2" = "yes" ; then 2954 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 2955 fi 2956 libssh2=no 2957 fi 2958fi 2959 2960########################################## 2961# libssh2_sftp_fsync probe 2962 2963if test "$libssh2" = "yes"; then 2964 cat > $TMPC <<EOF 2965#include <stdio.h> 2966#include <libssh2.h> 2967#include <libssh2_sftp.h> 2968int main(void) { 2969 LIBSSH2_SESSION *session; 2970 LIBSSH2_SFTP *sftp; 2971 LIBSSH2_SFTP_HANDLE *sftp_handle; 2972 session = libssh2_session_init (); 2973 sftp = libssh2_sftp_init (session); 2974 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 2975 libssh2_sftp_fsync (sftp_handle); 2976 return 0; 2977} 2978EOF 2979 # libssh2_cflags/libssh2_libs defined in previous test. 2980 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 2981 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 2982 fi 2983fi 2984 2985########################################## 2986# linux-aio probe 2987 2988if test "$linux_aio" != "no" ; then 2989 cat > $TMPC <<EOF 2990#include <libaio.h> 2991#include <sys/eventfd.h> 2992#include <stddef.h> 2993int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 2994EOF 2995 if compile_prog "" "-laio" ; then 2996 linux_aio=yes 2997 else 2998 if test "$linux_aio" = "yes" ; then 2999 feature_not_found "linux AIO" "Install libaio devel" 3000 fi 3001 linux_aio=no 3002 fi 3003fi 3004 3005########################################## 3006# TPM passthrough is only on x86 Linux 3007 3008if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 3009 tpm_passthrough=$tpm 3010else 3011 tpm_passthrough=no 3012fi 3013 3014########################################## 3015# attr probe 3016 3017if test "$attr" != "no" ; then 3018 cat > $TMPC <<EOF 3019#include <stdio.h> 3020#include <sys/types.h> 3021#ifdef CONFIG_LIBATTR 3022#include <attr/xattr.h> 3023#else 3024#include <sys/xattr.h> 3025#endif 3026int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3027EOF 3028 if compile_prog "" "" ; then 3029 attr=yes 3030 # Older distros have <attr/xattr.h>, and need -lattr: 3031 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3032 attr=yes 3033 LIBS="-lattr $LIBS" 3034 libattr=yes 3035 else 3036 if test "$attr" = "yes" ; then 3037 feature_not_found "ATTR" "Install libc6 or libattr devel" 3038 fi 3039 attr=no 3040 fi 3041fi 3042 3043########################################## 3044# iovec probe 3045cat > $TMPC <<EOF 3046#include <sys/types.h> 3047#include <sys/uio.h> 3048#include <unistd.h> 3049int main(void) { return sizeof(struct iovec); } 3050EOF 3051iovec=no 3052if compile_prog "" "" ; then 3053 iovec=yes 3054fi 3055 3056########################################## 3057# preadv probe 3058cat > $TMPC <<EOF 3059#include <sys/types.h> 3060#include <sys/uio.h> 3061#include <unistd.h> 3062int main(void) { return preadv(0, 0, 0, 0); } 3063EOF 3064preadv=no 3065if compile_prog "" "" ; then 3066 preadv=yes 3067fi 3068 3069########################################## 3070# fdt probe 3071# fdt support is mandatory for at least some target architectures, 3072# so insist on it if we're building those system emulators. 3073fdt_required=no 3074for target in $target_list; do 3075 case $target in 3076 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu) 3077 fdt_required=yes 3078 ;; 3079 esac 3080done 3081 3082if test "$fdt_required" = "yes"; then 3083 if test "$fdt" = "no"; then 3084 error_exit "fdt disabled but some requested targets require it." \ 3085 "You can turn off fdt only if you also disable all the system emulation" \ 3086 "targets which need it (by specifying a cut down --target-list)." 3087 fi 3088 fdt=yes 3089fi 3090 3091if test "$fdt" != "no" ; then 3092 fdt_libs="-lfdt" 3093 # explicitly check for libfdt_env.h as it is missing in some stable installs 3094 # and test for required functions to make sure we are on a version >= 1.4.0 3095 cat > $TMPC << EOF 3096#include <libfdt.h> 3097#include <libfdt_env.h> 3098int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; } 3099EOF 3100 if compile_prog "" "$fdt_libs" ; then 3101 # system DTC is good - use it 3102 fdt=yes 3103 elif test -d ${source_path}/dtc/libfdt ; then 3104 # have submodule DTC - use it 3105 fdt=yes 3106 dtc_internal="yes" 3107 mkdir -p dtc 3108 if [ "$pwd_is_source_path" != "y" ] ; then 3109 symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3110 symlink "$source_path/dtc/scripts" "dtc/scripts" 3111 fi 3112 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3113 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3114 elif test "$fdt" = "yes" ; then 3115 # have neither and want - prompt for system/submodule install 3116 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \ 3117 " (1) Preferred: Install the DTC (libfdt) devel package" \ 3118 " (2) Fetch the DTC submodule, using:" \ 3119 " git submodule update --init dtc" 3120 else 3121 # don't have and don't want 3122 fdt_libs= 3123 fdt=no 3124 fi 3125fi 3126 3127libs_softmmu="$libs_softmmu $fdt_libs" 3128 3129########################################## 3130# opengl probe (for sdl2, milkymist-tmu2) 3131 3132# GLX probe, used by milkymist-tmu2 3133# this is temporary, code will be switched to egl mid-term. 3134cat > $TMPC << EOF 3135#include <X11/Xlib.h> 3136#include <GL/gl.h> 3137#include <GL/glx.h> 3138int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; } 3139EOF 3140if compile_prog "" "-lGL -lX11" ; then 3141 have_glx=yes 3142else 3143 have_glx=no 3144fi 3145 3146if test "$opengl" != "no" ; then 3147 opengl_pkgs="gl glesv2 epoxy egl" 3148 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then 3149 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3150 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3151 opengl=yes 3152 else 3153 if test "$opengl" = "yes" ; then 3154 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 3155 fi 3156 opengl_cflags="" 3157 opengl_libs="" 3158 opengl=no 3159 fi 3160fi 3161 3162 3163########################################## 3164# archipelago probe 3165if test "$archipelago" != "no" ; then 3166 cat > $TMPC <<EOF 3167#include <stdio.h> 3168#include <xseg/xseg.h> 3169#include <xseg/protocol.h> 3170int main(void) { 3171 xseg_initialize(); 3172 return 0; 3173} 3174EOF 3175 archipelago_libs=-lxseg 3176 if compile_prog "" "$archipelago_libs"; then 3177 archipelago="yes" 3178 libs_tools="$archipelago_libs $libs_tools" 3179 libs_softmmu="$archipelago_libs $libs_softmmu" 3180 3181 echo "WARNING: Please check the licenses of QEMU and libxseg carefully." 3182 echo "GPLv3 versions of libxseg may not be compatible with QEMU's" 3183 echo "license and therefore prevent redistribution." 3184 echo 3185 echo "To disable Archipelago, use --disable-archipelago" 3186 else 3187 if test "$archipelago" = "yes" ; then 3188 feature_not_found "Archipelago backend support" "Install libxseg devel" 3189 fi 3190 archipelago="no" 3191 fi 3192fi 3193 3194 3195########################################## 3196# glusterfs probe 3197if test "$glusterfs" != "no" ; then 3198 if $pkg_config --atleast-version=3 glusterfs-api; then 3199 glusterfs="yes" 3200 glusterfs_cflags=`$pkg_config --cflags glusterfs-api` 3201 glusterfs_libs=`$pkg_config --libs glusterfs-api` 3202 if $pkg_config --atleast-version=5 glusterfs-api; then 3203 glusterfs_discard="yes" 3204 fi 3205 if $pkg_config --atleast-version=6 glusterfs-api; then 3206 glusterfs_zerofill="yes" 3207 fi 3208 else 3209 if test "$glusterfs" = "yes" ; then 3210 feature_not_found "GlusterFS backend support" \ 3211 "Install glusterfs-api devel >= 3" 3212 fi 3213 glusterfs="no" 3214 fi 3215fi 3216 3217# Check for inotify functions when we are building linux-user 3218# emulator. This is done because older glibc versions don't 3219# have syscall stubs for these implemented. In that case we 3220# don't provide them even if kernel supports them. 3221# 3222inotify=no 3223cat > $TMPC << EOF 3224#include <sys/inotify.h> 3225 3226int 3227main(void) 3228{ 3229 /* try to start inotify */ 3230 return inotify_init(); 3231} 3232EOF 3233if compile_prog "" "" ; then 3234 inotify=yes 3235fi 3236 3237inotify1=no 3238cat > $TMPC << EOF 3239#include <sys/inotify.h> 3240 3241int 3242main(void) 3243{ 3244 /* try to start inotify */ 3245 return inotify_init1(0); 3246} 3247EOF 3248if compile_prog "" "" ; then 3249 inotify1=yes 3250fi 3251 3252# check if utimensat and futimens are supported 3253utimens=no 3254cat > $TMPC << EOF 3255#define _ATFILE_SOURCE 3256#include <stddef.h> 3257#include <fcntl.h> 3258#include <sys/stat.h> 3259 3260int main(void) 3261{ 3262 utimensat(AT_FDCWD, "foo", NULL, 0); 3263 futimens(0, NULL); 3264 return 0; 3265} 3266EOF 3267if compile_prog "" "" ; then 3268 utimens=yes 3269fi 3270 3271# check if pipe2 is there 3272pipe2=no 3273cat > $TMPC << EOF 3274#include <unistd.h> 3275#include <fcntl.h> 3276 3277int main(void) 3278{ 3279 int pipefd[2]; 3280 return pipe2(pipefd, O_CLOEXEC); 3281} 3282EOF 3283if compile_prog "" "" ; then 3284 pipe2=yes 3285fi 3286 3287# check if accept4 is there 3288accept4=no 3289cat > $TMPC << EOF 3290#include <sys/socket.h> 3291#include <stddef.h> 3292 3293int main(void) 3294{ 3295 accept4(0, NULL, NULL, SOCK_CLOEXEC); 3296 return 0; 3297} 3298EOF 3299if compile_prog "" "" ; then 3300 accept4=yes 3301fi 3302 3303# check if tee/splice is there. vmsplice was added same time. 3304splice=no 3305cat > $TMPC << EOF 3306#include <unistd.h> 3307#include <fcntl.h> 3308#include <limits.h> 3309 3310int main(void) 3311{ 3312 int len, fd = 0; 3313 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 3314 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 3315 return 0; 3316} 3317EOF 3318if compile_prog "" "" ; then 3319 splice=yes 3320fi 3321 3322########################################## 3323# libnuma probe 3324 3325if test "$numa" != "no" ; then 3326 cat > $TMPC << EOF 3327#include <numa.h> 3328int main(void) { return numa_available(); } 3329EOF 3330 3331 if compile_prog "" "-lnuma" ; then 3332 numa=yes 3333 libs_softmmu="-lnuma $libs_softmmu" 3334 else 3335 if test "$numa" = "yes" ; then 3336 feature_not_found "numa" "install numactl devel" 3337 fi 3338 numa=no 3339 fi 3340fi 3341 3342########################################## 3343# tcmalloc probe 3344 3345if test "$tcmalloc" = "yes" ; then 3346 cat > $TMPC << EOF 3347#include <stdlib.h> 3348int main(void) { malloc(1); return 0; } 3349EOF 3350 3351 if compile_prog "" "-ltcmalloc" ; then 3352 LIBS="-ltcmalloc $LIBS" 3353 else 3354 feature_not_found "tcmalloc" "install gperftools devel" 3355 fi 3356fi 3357 3358########################################## 3359# signalfd probe 3360signalfd="no" 3361cat > $TMPC << EOF 3362#include <unistd.h> 3363#include <sys/syscall.h> 3364#include <signal.h> 3365int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3366EOF 3367 3368if compile_prog "" "" ; then 3369 signalfd=yes 3370fi 3371 3372# check if eventfd is supported 3373eventfd=no 3374cat > $TMPC << EOF 3375#include <sys/eventfd.h> 3376 3377int main(void) 3378{ 3379 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3380} 3381EOF 3382if compile_prog "" "" ; then 3383 eventfd=yes 3384fi 3385 3386# check for fallocate 3387fallocate=no 3388cat > $TMPC << EOF 3389#include <fcntl.h> 3390 3391int main(void) 3392{ 3393 fallocate(0, 0, 0, 0); 3394 return 0; 3395} 3396EOF 3397if compile_prog "" "" ; then 3398 fallocate=yes 3399fi 3400 3401# check for fallocate hole punching 3402fallocate_punch_hole=no 3403cat > $TMPC << EOF 3404#include <fcntl.h> 3405#include <linux/falloc.h> 3406 3407int main(void) 3408{ 3409 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 3410 return 0; 3411} 3412EOF 3413if compile_prog "" "" ; then 3414 fallocate_punch_hole=yes 3415fi 3416 3417# check that fallocate supports range zeroing inside the file 3418fallocate_zero_range=no 3419cat > $TMPC << EOF 3420#include <fcntl.h> 3421#include <linux/falloc.h> 3422 3423int main(void) 3424{ 3425 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 3426 return 0; 3427} 3428EOF 3429if compile_prog "" "" ; then 3430 fallocate_zero_range=yes 3431fi 3432 3433# check for posix_fallocate 3434posix_fallocate=no 3435cat > $TMPC << EOF 3436#include <fcntl.h> 3437 3438int main(void) 3439{ 3440 posix_fallocate(0, 0, 0); 3441 return 0; 3442} 3443EOF 3444if compile_prog "" "" ; then 3445 posix_fallocate=yes 3446fi 3447 3448# check for sync_file_range 3449sync_file_range=no 3450cat > $TMPC << EOF 3451#include <fcntl.h> 3452 3453int main(void) 3454{ 3455 sync_file_range(0, 0, 0, 0); 3456 return 0; 3457} 3458EOF 3459if compile_prog "" "" ; then 3460 sync_file_range=yes 3461fi 3462 3463# check for linux/fiemap.h and FS_IOC_FIEMAP 3464fiemap=no 3465cat > $TMPC << EOF 3466#include <sys/ioctl.h> 3467#include <linux/fs.h> 3468#include <linux/fiemap.h> 3469 3470int main(void) 3471{ 3472 ioctl(0, FS_IOC_FIEMAP, 0); 3473 return 0; 3474} 3475EOF 3476if compile_prog "" "" ; then 3477 fiemap=yes 3478fi 3479 3480# check for dup3 3481dup3=no 3482cat > $TMPC << EOF 3483#include <unistd.h> 3484 3485int main(void) 3486{ 3487 dup3(0, 0, 0); 3488 return 0; 3489} 3490EOF 3491if compile_prog "" "" ; then 3492 dup3=yes 3493fi 3494 3495# check for ppoll support 3496ppoll=no 3497cat > $TMPC << EOF 3498#include <poll.h> 3499 3500int main(void) 3501{ 3502 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 3503 ppoll(&pfd, 1, 0, 0); 3504 return 0; 3505} 3506EOF 3507if compile_prog "" "" ; then 3508 ppoll=yes 3509fi 3510 3511# check for prctl(PR_SET_TIMERSLACK , ... ) support 3512prctl_pr_set_timerslack=no 3513cat > $TMPC << EOF 3514#include <sys/prctl.h> 3515 3516int main(void) 3517{ 3518 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 3519 return 0; 3520} 3521EOF 3522if compile_prog "" "" ; then 3523 prctl_pr_set_timerslack=yes 3524fi 3525 3526# check for epoll support 3527epoll=no 3528cat > $TMPC << EOF 3529#include <sys/epoll.h> 3530 3531int main(void) 3532{ 3533 epoll_create(0); 3534 return 0; 3535} 3536EOF 3537if compile_prog "" "" ; then 3538 epoll=yes 3539fi 3540 3541# epoll_create1 and epoll_pwait are later additions 3542# so we must check separately for their presence 3543epoll_create1=no 3544cat > $TMPC << EOF 3545#include <sys/epoll.h> 3546 3547int main(void) 3548{ 3549 /* Note that we use epoll_create1 as a value, not as 3550 * a function being called. This is necessary so that on 3551 * old SPARC glibc versions where the function was present in 3552 * the library but not declared in the header file we will 3553 * fail the configure check. (Otherwise we will get a compiler 3554 * warning but not an error, and will proceed to fail the 3555 * qemu compile where we compile with -Werror.) 3556 */ 3557 return (int)(uintptr_t)&epoll_create1; 3558} 3559EOF 3560if compile_prog "" "" ; then 3561 epoll_create1=yes 3562fi 3563 3564epoll_pwait=no 3565cat > $TMPC << EOF 3566#include <sys/epoll.h> 3567 3568int main(void) 3569{ 3570 epoll_pwait(0, 0, 0, 0, 0); 3571 return 0; 3572} 3573EOF 3574if compile_prog "" "" ; then 3575 epoll_pwait=yes 3576fi 3577 3578# check for sendfile support 3579sendfile=no 3580cat > $TMPC << EOF 3581#include <sys/sendfile.h> 3582 3583int main(void) 3584{ 3585 return sendfile(0, 0, 0, 0); 3586} 3587EOF 3588if compile_prog "" "" ; then 3589 sendfile=yes 3590fi 3591 3592# check for timerfd support (glibc 2.8 and newer) 3593timerfd=no 3594cat > $TMPC << EOF 3595#include <sys/timerfd.h> 3596 3597int main(void) 3598{ 3599 return(timerfd_create(CLOCK_REALTIME, 0)); 3600} 3601EOF 3602if compile_prog "" "" ; then 3603 timerfd=yes 3604fi 3605 3606# check for setns and unshare support 3607setns=no 3608cat > $TMPC << EOF 3609#include <sched.h> 3610 3611int main(void) 3612{ 3613 int ret; 3614 ret = setns(0, 0); 3615 ret = unshare(0); 3616 return ret; 3617} 3618EOF 3619if compile_prog "" "" ; then 3620 setns=yes 3621fi 3622 3623# Check if tools are available to build documentation. 3624if test "$docs" != "no" ; then 3625 if has makeinfo && has pod2man; then 3626 docs=yes 3627 else 3628 if test "$docs" = "yes" ; then 3629 feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 3630 fi 3631 docs=no 3632 fi 3633fi 3634 3635# Search for bswap_32 function 3636byteswap_h=no 3637cat > $TMPC << EOF 3638#include <byteswap.h> 3639int main(void) { return bswap_32(0); } 3640EOF 3641if compile_prog "" "" ; then 3642 byteswap_h=yes 3643fi 3644 3645# Search for bswap32 function 3646bswap_h=no 3647cat > $TMPC << EOF 3648#include <sys/endian.h> 3649#include <sys/types.h> 3650#include <machine/bswap.h> 3651int main(void) { return bswap32(0); } 3652EOF 3653if compile_prog "" "" ; then 3654 bswap_h=yes 3655fi 3656 3657########################################## 3658# Do we have libiscsi >= 1.9.0 3659if test "$libiscsi" != "no" ; then 3660 if $pkg_config --atleast-version=1.9.0 libiscsi; then 3661 libiscsi="yes" 3662 libiscsi_cflags=$($pkg_config --cflags libiscsi) 3663 libiscsi_libs=$($pkg_config --libs libiscsi) 3664 else 3665 if test "$libiscsi" = "yes" ; then 3666 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 3667 fi 3668 libiscsi="no" 3669 fi 3670fi 3671 3672########################################## 3673# Do we need libm 3674cat > $TMPC << EOF 3675#include <math.h> 3676int main(int argc, char **argv) { return isnan(sin((double)argc)); } 3677EOF 3678if compile_prog "" "" ; then 3679 : 3680elif compile_prog "" "-lm" ; then 3681 LIBS="-lm $LIBS" 3682 libs_qga="-lm $libs_qga" 3683else 3684 error_exit "libm check failed" 3685fi 3686 3687########################################## 3688# Do we need librt 3689# uClibc provides 2 versions of clock_gettime(), one with realtime 3690# support and one without. This means that the clock_gettime() don't 3691# need -lrt. We still need it for timer_create() so we check for this 3692# function in addition. 3693cat > $TMPC <<EOF 3694#include <signal.h> 3695#include <time.h> 3696int main(void) { 3697 timer_create(CLOCK_REALTIME, NULL, NULL); 3698 return clock_gettime(CLOCK_REALTIME, NULL); 3699} 3700EOF 3701 3702if compile_prog "" "" ; then 3703 : 3704# we need pthread for static linking. use previous pthread test result 3705elif compile_prog "" "$pthread_lib -lrt" ; then 3706 LIBS="$LIBS -lrt" 3707 libs_qga="$libs_qga -lrt" 3708fi 3709 3710if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 3711 "$aix" != "yes" -a "$haiku" != "yes" ; then 3712 libs_softmmu="-lutil $libs_softmmu" 3713fi 3714 3715########################################## 3716# spice probe 3717if test "$spice" != "no" ; then 3718 cat > $TMPC << EOF 3719#include <spice.h> 3720int main(void) { spice_server_new(); return 0; } 3721EOF 3722 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 3723 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 3724 if $pkg_config --atleast-version=0.12.0 spice-server && \ 3725 $pkg_config --atleast-version=0.12.3 spice-protocol && \ 3726 compile_prog "$spice_cflags" "$spice_libs" ; then 3727 spice="yes" 3728 libs_softmmu="$libs_softmmu $spice_libs" 3729 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 3730 spice_protocol_version=$($pkg_config --modversion spice-protocol) 3731 spice_server_version=$($pkg_config --modversion spice-server) 3732 else 3733 if test "$spice" = "yes" ; then 3734 feature_not_found "spice" \ 3735 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 3736 fi 3737 spice="no" 3738 fi 3739fi 3740 3741# check for libcacard for smartcard support 3742smartcard_cflags="" 3743# TODO - what's the minimal nss version we support? 3744if test "$smartcard_nss" != "no"; then 3745 cat > $TMPC << EOF 3746#include <pk11pub.h> 3747int main(void) { PK11_FreeSlot(0); return 0; } 3748EOF 3749 # FIXME: do not include $glib_* in here 3750 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" 3751 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" 3752 test_cflags="$nss_cflags" 3753 # The header files in nss < 3.13.3 have a bug which causes them to 3754 # emit a warning. If we're going to compile QEMU with -Werror, then 3755 # test that the headers don't have this bug. Otherwise we would pass 3756 # the configure test but fail to compile QEMU later. 3757 if test "$werror" = "yes"; then 3758 test_cflags="-Werror $test_cflags" 3759 fi 3760 if test -n "$libtool" && 3761 $pkg_config --atleast-version=3.12.8 nss && \ 3762 compile_prog "$test_cflags" "$nss_libs"; then 3763 smartcard_nss="yes" 3764 else 3765 if test "$smartcard_nss" = "yes"; then 3766 feature_not_found "nss" "Install nss devel >= 3.12.8" 3767 fi 3768 smartcard_nss="no" 3769 fi 3770fi 3771 3772# check for libusb 3773if test "$libusb" != "no" ; then 3774 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 3775 libusb="yes" 3776 libusb_cflags=$($pkg_config --cflags libusb-1.0) 3777 libusb_libs=$($pkg_config --libs libusb-1.0) 3778 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags" 3779 libs_softmmu="$libs_softmmu $libusb_libs" 3780 else 3781 if test "$libusb" = "yes"; then 3782 feature_not_found "libusb" "Install libusb devel >= 1.0.13" 3783 fi 3784 libusb="no" 3785 fi 3786fi 3787 3788# check for usbredirparser for usb network redirection support 3789if test "$usb_redir" != "no" ; then 3790 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 3791 usb_redir="yes" 3792 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 3793 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 3794 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 3795 libs_softmmu="$libs_softmmu $usb_redir_libs" 3796 else 3797 if test "$usb_redir" = "yes"; then 3798 feature_not_found "usb-redir" "Install usbredir devel" 3799 fi 3800 usb_redir="no" 3801 fi 3802fi 3803 3804########################################## 3805# check if we have VSS SDK headers for win 3806 3807if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 3808 case "$vss_win32_sdk" in 3809 "") vss_win32_include="-I$source_path" ;; 3810 *\ *) # The SDK is installed in "Program Files" by default, but we cannot 3811 # handle path with spaces. So we symlink the headers into ".sdk/vss". 3812 vss_win32_include="-I$source_path/.sdk/vss" 3813 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 3814 ;; 3815 *) vss_win32_include="-I$vss_win32_sdk" 3816 esac 3817 cat > $TMPC << EOF 3818#define __MIDL_user_allocate_free_DEFINED__ 3819#include <inc/win2003/vss.h> 3820int main(void) { return VSS_CTX_BACKUP; } 3821EOF 3822 if compile_prog "$vss_win32_include" "" ; then 3823 guest_agent_with_vss="yes" 3824 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 3825 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 3826 else 3827 if test "$vss_win32_sdk" != "" ; then 3828 echo "ERROR: Please download and install Microsoft VSS SDK:" 3829 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 3830 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 3831 echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 3832 echo "ERROR: The headers are extracted in the directory \`inc'." 3833 feature_not_found "VSS support" 3834 fi 3835 guest_agent_with_vss="no" 3836 fi 3837fi 3838 3839########################################## 3840# lookup Windows platform SDK (if not specified) 3841# The SDK is needed only to build .tlb (type library) file of guest agent 3842# VSS provider from the source. It is usually unnecessary because the 3843# pre-compiled .tlb file is included. 3844 3845if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 3846 if test -z "$win_sdk"; then 3847 programfiles="$PROGRAMFILES" 3848 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 3849 if test -n "$programfiles"; then 3850 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 3851 else 3852 feature_not_found "Windows SDK" 3853 fi 3854 elif test "$win_sdk" = "no"; then 3855 win_sdk="" 3856 fi 3857fi 3858 3859########################################## 3860# Guest agent Window MSI package 3861 3862if test "$guest_agent" != yes; then 3863 if test "$guest_agent_msi" = yes; then 3864 error_exit "MSI guest agent package requires guest agent enabled" 3865 fi 3866 guest_agent_msi=no 3867elif test "$mingw32" != "yes"; then 3868 if test "$guest_agent_msi" = "yes"; then 3869 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 3870 fi 3871 guest_agent_msi=no 3872elif ! has wixl; then 3873 if test "$guest_agent_msi" = "yes"; then 3874 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 3875 fi 3876 guest_agent_msi=no 3877fi 3878 3879if test "$guest_agent_msi" != "no"; then 3880 if test "$guest_agent_with_vss" = "yes"; then 3881 QEMU_GA_MSI_WITH_VSS="-D InstallVss" 3882 fi 3883 3884 if test "$QEMU_GA_MANUFACTURER" = ""; then 3885 QEMU_GA_MANUFACTURER=QEMU 3886 fi 3887 3888 if test "$QEMU_GA_DISTRO" = ""; then 3889 QEMU_GA_DISTRO=Linux 3890 fi 3891 3892 if test "$QEMU_GA_VERSION" = ""; then 3893 QEMU_GA_VERSION=`cat $source_path/VERSION` 3894 fi 3895 3896 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin" 3897 3898 case "$cpu" in 3899 x86_64) 3900 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 3901 ;; 3902 i386) 3903 QEMU_GA_MSI_ARCH="-D Arch=32" 3904 ;; 3905 *) 3906 error_exit "CPU $cpu not supported for building installation package" 3907 ;; 3908 esac 3909fi 3910 3911########################################## 3912# check if we have fdatasync 3913 3914fdatasync=no 3915cat > $TMPC << EOF 3916#include <unistd.h> 3917int main(void) { 3918#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 3919return fdatasync(0); 3920#else 3921#error Not supported 3922#endif 3923} 3924EOF 3925if compile_prog "" "" ; then 3926 fdatasync=yes 3927fi 3928 3929########################################## 3930# check if we have madvise 3931 3932madvise=no 3933cat > $TMPC << EOF 3934#include <sys/types.h> 3935#include <sys/mman.h> 3936#include <stddef.h> 3937int main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 3938EOF 3939if compile_prog "" "" ; then 3940 madvise=yes 3941fi 3942 3943########################################## 3944# check if we have posix_madvise 3945 3946posix_madvise=no 3947cat > $TMPC << EOF 3948#include <sys/mman.h> 3949#include <stddef.h> 3950int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 3951EOF 3952if compile_prog "" "" ; then 3953 posix_madvise=yes 3954fi 3955 3956########################################## 3957# check if we have usable SIGEV_THREAD_ID 3958 3959sigev_thread_id=no 3960cat > $TMPC << EOF 3961#include <signal.h> 3962int main(void) { 3963 struct sigevent ev; 3964 ev.sigev_notify = SIGEV_THREAD_ID; 3965 ev._sigev_un._tid = 0; 3966 asm volatile("" : : "g"(&ev)); 3967 return 0; 3968} 3969EOF 3970if compile_prog "" "" ; then 3971 sigev_thread_id=yes 3972fi 3973 3974########################################## 3975# check if trace backend exists 3976 3977$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 3978if test "$?" -ne 0 ; then 3979 error_exit "invalid trace backends" \ 3980 "Please choose supported trace backends." 3981fi 3982 3983########################################## 3984# For 'ust' backend, test if ust headers are present 3985if have_backend "ust"; then 3986 cat > $TMPC << EOF 3987#include <lttng/tracepoint.h> 3988int main(void) { return 0; } 3989EOF 3990 if compile_prog "" "" ; then 3991 if $pkg_config lttng-ust --exists; then 3992 lttng_ust_libs=`$pkg_config --libs lttng-ust` 3993 else 3994 lttng_ust_libs="-llttng-ust" 3995 fi 3996 if $pkg_config liburcu-bp --exists; then 3997 urcu_bp_libs=`$pkg_config --libs liburcu-bp` 3998 else 3999 urcu_bp_libs="-lurcu-bp" 4000 fi 4001 4002 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 4003 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 4004 else 4005 error_exit "Trace backend 'ust' missing lttng-ust header files" 4006 fi 4007fi 4008 4009########################################## 4010# For 'dtrace' backend, test if 'dtrace' command is present 4011if have_backend "dtrace"; then 4012 if ! has 'dtrace' ; then 4013 error_exit "dtrace command is not found in PATH $PATH" 4014 fi 4015 trace_backend_stap="no" 4016 if has 'stap' ; then 4017 trace_backend_stap="yes" 4018 fi 4019fi 4020 4021########################################## 4022# check and set a backend for coroutine 4023 4024# We prefer ucontext, but it's not always possible. The fallback 4025# is sigcontext. gthread is not selectable except explicitly, because 4026# it is not functional enough to run QEMU proper. (It is occasionally 4027# useful for debugging purposes.) On Windows the only valid backend 4028# is the Windows-specific one. 4029 4030ucontext_works=no 4031if test "$darwin" != "yes"; then 4032 cat > $TMPC << EOF 4033#include <ucontext.h> 4034#ifdef __stub_makecontext 4035#error Ignoring glibc stub makecontext which will always fail 4036#endif 4037int main(void) { makecontext(0, 0, 0); return 0; } 4038EOF 4039 if compile_prog "" "" ; then 4040 ucontext_works=yes 4041 fi 4042fi 4043 4044if test "$coroutine" = ""; then 4045 if test "$mingw32" = "yes"; then 4046 coroutine=win32 4047 elif test "$ucontext_works" = "yes"; then 4048 coroutine=ucontext 4049 else 4050 coroutine=sigaltstack 4051 fi 4052else 4053 case $coroutine in 4054 windows) 4055 if test "$mingw32" != "yes"; then 4056 error_exit "'windows' coroutine backend only valid for Windows" 4057 fi 4058 # Unfortunately the user visible backend name doesn't match the 4059 # coroutine-*.c filename for this case, so we have to adjust it here. 4060 coroutine=win32 4061 ;; 4062 ucontext) 4063 if test "$ucontext_works" != "yes"; then 4064 feature_not_found "ucontext" 4065 fi 4066 ;; 4067 gthread|sigaltstack) 4068 if test "$mingw32" = "yes"; then 4069 error_exit "only the 'windows' coroutine backend is valid for Windows" 4070 fi 4071 ;; 4072 *) 4073 error_exit "unknown coroutine backend $coroutine" 4074 ;; 4075 esac 4076fi 4077 4078if test "$coroutine_pool" = ""; then 4079 if test "$coroutine" = "gthread"; then 4080 coroutine_pool=no 4081 else 4082 coroutine_pool=yes 4083 fi 4084fi 4085if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then 4086 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" 4087fi 4088 4089########################################## 4090# check if we have open_by_handle_at 4091 4092open_by_handle_at=no 4093cat > $TMPC << EOF 4094#include <fcntl.h> 4095#if !defined(AT_EMPTY_PATH) 4096# error missing definition 4097#else 4098int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4099#endif 4100EOF 4101if compile_prog "" "" ; then 4102 open_by_handle_at=yes 4103fi 4104 4105######################################## 4106# check if we have linux/magic.h 4107 4108linux_magic_h=no 4109cat > $TMPC << EOF 4110#include <linux/magic.h> 4111int main(void) { 4112 return 0; 4113} 4114EOF 4115if compile_prog "" "" ; then 4116 linux_magic_h=yes 4117fi 4118 4119######################################## 4120# check whether we can disable warning option with a pragma (this is needed 4121# to silence warnings in the headers of some versions of external libraries). 4122# This test has to be compiled with -Werror as otherwise an unknown pragma is 4123# only a warning. 4124# 4125# If we can't selectively disable warning in the code, disable -Werror so that 4126# the build doesn't fail anyway. 4127 4128pragma_disable_unused_but_set=no 4129cat > $TMPC << EOF 4130#pragma GCC diagnostic push 4131#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4132#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4133#pragma GCC diagnostic pop 4134 4135int main(void) { 4136 return 0; 4137} 4138EOF 4139if compile_prog "-Werror" "" ; then 4140 pragma_diagnostic_available=yes 4141else 4142 werror=no 4143fi 4144 4145######################################## 4146# check if we have valgrind/valgrind.h 4147 4148valgrind_h=no 4149cat > $TMPC << EOF 4150#include <valgrind/valgrind.h> 4151int main(void) { 4152 return 0; 4153} 4154EOF 4155if compile_prog "" "" ; then 4156 valgrind_h=yes 4157fi 4158 4159######################################## 4160# check if environ is declared 4161 4162has_environ=no 4163cat > $TMPC << EOF 4164#include <unistd.h> 4165int main(void) { 4166 environ = 0; 4167 return 0; 4168} 4169EOF 4170if compile_prog "" "" ; then 4171 has_environ=yes 4172fi 4173 4174######################################## 4175# check if cpuid.h is usable. 4176 4177cpuid_h=no 4178cat > $TMPC << EOF 4179#include <cpuid.h> 4180int main(void) { 4181 unsigned a, b, c, d; 4182 int max = __get_cpuid_max(0, 0); 4183 4184 if (max >= 1) { 4185 __cpuid(1, a, b, c, d); 4186 } 4187 4188 if (max >= 7) { 4189 __cpuid_count(7, 0, a, b, c, d); 4190 } 4191 4192 return 0; 4193} 4194EOF 4195if compile_prog "" "" ; then 4196 cpuid_h=yes 4197fi 4198 4199######################################## 4200# check if __[u]int128_t is usable. 4201 4202int128=no 4203cat > $TMPC << EOF 4204#if defined(__clang_major__) && defined(__clang_minor__) 4205# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4206# error __int128_t does not work in CLANG before 3.2 4207# endif 4208#endif 4209__int128_t a; 4210__uint128_t b; 4211int main (void) { 4212 a = a + b; 4213 b = a * b; 4214 a = a * a; 4215 return 0; 4216} 4217EOF 4218if compile_prog "" "" ; then 4219 int128=yes 4220fi 4221 4222######################################## 4223# check if getauxval is available. 4224 4225getauxval=no 4226cat > $TMPC << EOF 4227#include <sys/auxv.h> 4228int main(void) { 4229 return getauxval(AT_HWCAP) == 0; 4230} 4231EOF 4232if compile_prog "" "" ; then 4233 getauxval=yes 4234fi 4235 4236######################################## 4237# check if ccache is interfering with 4238# semantic analysis of macros 4239 4240ccache_cpp2=no 4241cat > $TMPC << EOF 4242static const int Z = 1; 4243#define fn() ({ Z; }) 4244#define TAUT(X) ((X) == Z) 4245#define PAREN(X, Y) (X == Y) 4246#define ID(X) (X) 4247int main(int argc, char *argv[]) 4248{ 4249 int x = 0, y = 0; 4250 x = ID(x); 4251 x = fn(); 4252 fn(); 4253 if (PAREN(x, y)) return 0; 4254 if (TAUT(Z)) return 0; 4255 return 0; 4256} 4257EOF 4258 4259if ! compile_object "-Werror"; then 4260 ccache_cpp2=yes 4261fi 4262 4263########################################## 4264# End of CC checks 4265# After here, no more $cc or $ld runs 4266 4267if test "$gcov" = "yes" ; then 4268 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 4269 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 4270elif test "$debug" = "no" ; then 4271 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 4272fi 4273 4274########################################## 4275# Do we have libnfs 4276if test "$libnfs" != "no" ; then 4277 if $pkg_config --atleast-version=1.9.3 libnfs; then 4278 libnfs="yes" 4279 libnfs_libs=$($pkg_config --libs libnfs) 4280 LIBS="$LIBS $libnfs_libs" 4281 else 4282 if test "$libnfs" = "yes" ; then 4283 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 4284 fi 4285 libnfs="no" 4286 fi 4287fi 4288 4289# Disable zero malloc errors for official releases unless explicitly told to 4290# enable/disable 4291if test -z "$zero_malloc" ; then 4292 if test "$z_version" = "50" ; then 4293 zero_malloc="no" 4294 else 4295 zero_malloc="yes" 4296 fi 4297fi 4298 4299# Now we've finished running tests it's OK to add -Werror to the compiler flags 4300if test "$werror" = "yes"; then 4301 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 4302fi 4303 4304if test "$solaris" = "no" ; then 4305 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 4306 LDFLAGS="-Wl,--warn-common $LDFLAGS" 4307 fi 4308fi 4309 4310# test if pod2man has --utf8 option 4311if pod2man --help | grep -q utf8; then 4312 POD2MAN="pod2man --utf8" 4313else 4314 POD2MAN="pod2man" 4315fi 4316 4317# Use ASLR, no-SEH and DEP if available 4318if test "$mingw32" = "yes" ; then 4319 for flag in --dynamicbase --no-seh --nxcompat; do 4320 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 4321 LDFLAGS="-Wl,$flag $LDFLAGS" 4322 fi 4323 done 4324fi 4325 4326qemu_confdir=$sysconfdir$confsuffix 4327qemu_moddir=$libdir$confsuffix 4328qemu_datadir=$datadir$confsuffix 4329qemu_localedir="$datadir/locale" 4330 4331tools="" 4332if test "$want_tools" = "yes" ; then 4333 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 4334 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 4335 tools="qemu-nbd\$(EXESUF) $tools" 4336 fi 4337fi 4338if test "$softmmu" = yes ; then 4339 if test "$virtfs" != no ; then 4340 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 4341 virtfs=yes 4342 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 4343 else 4344 if test "$virtfs" = yes; then 4345 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel" 4346 fi 4347 virtfs=no 4348 fi 4349 fi 4350fi 4351if [ "$guest_agent" != "no" ]; then 4352 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 4353 tools="qemu-ga\$(EXESUF) $tools" 4354 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then 4355 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools" 4356 fi 4357 guest_agent=yes 4358 elif [ "$guest_agent" != yes ]; then 4359 guest_agent=no 4360 else 4361 error_exit "Guest agent is not supported on this platform" 4362 fi 4363fi 4364 4365# Mac OS X ships with a broken assembler 4366roms= 4367if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 4368 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 4369 "$softmmu" = yes ; then 4370 roms="optionrom" 4371fi 4372if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 4373 roms="$roms spapr-rtas" 4374fi 4375 4376if test "$cpu" = "s390x" ; then 4377 roms="$roms s390-ccw" 4378fi 4379 4380# Probe for the need for relocating the user-only binary. 4381if test "$pie" = "no" ; then 4382 textseg_addr= 4383 case "$cpu" in 4384 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 4385 # ??? Rationale for choosing this address 4386 textseg_addr=0x60000000 4387 ;; 4388 mips) 4389 # A 256M aligned address, high in the address space, with enough 4390 # room for the code_gen_buffer above it before the stack. 4391 textseg_addr=0x60000000 4392 ;; 4393 esac 4394 if [ -n "$textseg_addr" ]; then 4395 cat > $TMPC <<EOF 4396 int main(void) { return 0; } 4397EOF 4398 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 4399 if ! compile_prog "" "$textseg_ldflags"; then 4400 # In case ld does not support -Ttext-segment, edit the default linker 4401 # script via sed to set the .text start addr. This is needed on FreeBSD 4402 # at least. 4403 $ld --verbose | sed \ 4404 -e '1,/==================================================/d' \ 4405 -e '/==================================================/,$d' \ 4406 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 4407 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 4408 textseg_ldflags="-Wl,-T../config-host.ld" 4409 fi 4410 fi 4411fi 4412 4413# prepend pixman and ftd flags after all config tests are done 4414QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 4415libs_softmmu="$pixman_libs $libs_softmmu" 4416 4417echo "Install prefix $prefix" 4418echo "BIOS directory `eval echo $qemu_datadir`" 4419echo "binary directory `eval echo $bindir`" 4420echo "library directory `eval echo $libdir`" 4421echo "module directory `eval echo $qemu_moddir`" 4422echo "libexec directory `eval echo $libexecdir`" 4423echo "include directory `eval echo $includedir`" 4424echo "config directory `eval echo $sysconfdir`" 4425if test "$mingw32" = "no" ; then 4426echo "local state directory `eval echo $local_statedir`" 4427echo "Manual directory `eval echo $mandir`" 4428echo "ELF interp prefix $interp_prefix" 4429else 4430echo "local state directory queried at runtime" 4431echo "Windows SDK $win_sdk" 4432fi 4433echo "Source path $source_path" 4434echo "C compiler $cc" 4435echo "Host C compiler $host_cc" 4436echo "C++ compiler $cxx" 4437echo "Objective-C compiler $objcc" 4438echo "ARFLAGS $ARFLAGS" 4439echo "CFLAGS $CFLAGS" 4440echo "QEMU_CFLAGS $QEMU_CFLAGS" 4441echo "LDFLAGS $LDFLAGS" 4442echo "make $make" 4443echo "install $install" 4444echo "python $python" 4445if test "$slirp" = "yes" ; then 4446 echo "smbd $smbd" 4447fi 4448echo "module support $modules" 4449echo "host CPU $cpu" 4450echo "host big endian $bigendian" 4451echo "target list $target_list" 4452echo "tcg debug enabled $debug_tcg" 4453echo "gprof enabled $gprof" 4454echo "sparse enabled $sparse" 4455echo "strip binaries $strip_opt" 4456echo "profiler $profiler" 4457echo "static build $static" 4458if test "$darwin" = "yes" ; then 4459 echo "Cocoa support $cocoa" 4460fi 4461echo "pixman $pixman" 4462echo "SDL support $sdl" 4463echo "GTK support $gtk" 4464echo "GNUTLS support $gnutls" 4465echo "GNUTLS hash $gnutls_hash" 4466echo "VTE support $vte" 4467echo "curses support $curses" 4468echo "curl support $curl" 4469echo "mingw32 support $mingw32" 4470echo "Audio drivers $audio_drv_list" 4471echo "Block whitelist (rw) $block_drv_rw_whitelist" 4472echo "Block whitelist (ro) $block_drv_ro_whitelist" 4473echo "VirtFS support $virtfs" 4474echo "VNC support $vnc" 4475if test "$vnc" = "yes" ; then 4476 echo "VNC TLS support $vnc_tls" 4477 echo "VNC SASL support $vnc_sasl" 4478 echo "VNC JPEG support $vnc_jpeg" 4479 echo "VNC PNG support $vnc_png" 4480 echo "VNC WS support $vnc_ws" 4481fi 4482if test -n "$sparc_cpu"; then 4483 echo "Target Sparc Arch $sparc_cpu" 4484fi 4485echo "xen support $xen" 4486if test "$xen" = "yes" ; then 4487 echo "xen ctrl version $xen_ctrl_version" 4488fi 4489echo "brlapi support $brlapi" 4490echo "bluez support $bluez" 4491echo "Documentation $docs" 4492echo "GUEST_BASE $guest_base" 4493echo "PIE $pie" 4494echo "vde support $vde" 4495echo "netmap support $netmap" 4496echo "Linux AIO support $linux_aio" 4497echo "ATTR/XATTR support $attr" 4498echo "Install blobs $blobs" 4499echo "KVM support $kvm" 4500echo "RDMA support $rdma" 4501echo "TCG interpreter $tcg_interpreter" 4502echo "fdt support $fdt" 4503echo "preadv support $preadv" 4504echo "fdatasync $fdatasync" 4505echo "madvise $madvise" 4506echo "posix_madvise $posix_madvise" 4507echo "sigev_thread_id $sigev_thread_id" 4508echo "uuid support $uuid" 4509echo "libcap-ng support $cap_ng" 4510echo "vhost-net support $vhost_net" 4511echo "vhost-scsi support $vhost_scsi" 4512echo "Trace backends $trace_backends" 4513if test "$trace_backend" = "simple"; then 4514echo "Trace output file $trace_file-<pid>" 4515fi 4516if test "$spice" = "yes"; then 4517echo "spice support $spice ($spice_protocol_version/$spice_server_version)" 4518else 4519echo "spice support $spice" 4520fi 4521echo "rbd support $rbd" 4522echo "xfsctl support $xfs" 4523echo "nss used $smartcard_nss" 4524echo "libusb $libusb" 4525echo "usb net redir $usb_redir" 4526echo "OpenGL support $opengl" 4527echo "libiscsi support $libiscsi" 4528echo "libnfs support $libnfs" 4529echo "build guest agent $guest_agent" 4530echo "QGA VSS support $guest_agent_with_vss" 4531echo "seccomp support $seccomp" 4532echo "coroutine backend $coroutine" 4533echo "coroutine pool $coroutine_pool" 4534echo "GlusterFS support $glusterfs" 4535echo "Archipelago support $archipelago" 4536echo "gcov $gcov_tool" 4537echo "gcov enabled $gcov" 4538echo "TPM support $tpm" 4539echo "libssh2 support $libssh2" 4540echo "TPM passthrough $tpm_passthrough" 4541echo "QOM debugging $qom_cast_debug" 4542echo "vhdx $vhdx" 4543echo "Quorum $quorum" 4544echo "lzo support $lzo" 4545echo "snappy support $snappy" 4546echo "bzip2 support $bzip2" 4547echo "NUMA host support $numa" 4548echo "tcmalloc support $tcmalloc" 4549 4550if test "$sdl_too_old" = "yes"; then 4551echo "-> Your SDL version is too old - please upgrade to have SDL support" 4552fi 4553 4554config_host_mak="config-host.mak" 4555 4556echo "# Automatically generated by configure - do not modify" >config-all-disas.mak 4557 4558echo "# Automatically generated by configure - do not modify" > $config_host_mak 4559echo >> $config_host_mak 4560 4561echo all: >> $config_host_mak 4562echo "prefix=$prefix" >> $config_host_mak 4563echo "bindir=$bindir" >> $config_host_mak 4564echo "libdir=$libdir" >> $config_host_mak 4565echo "libexecdir=$libexecdir" >> $config_host_mak 4566echo "includedir=$includedir" >> $config_host_mak 4567echo "mandir=$mandir" >> $config_host_mak 4568echo "sysconfdir=$sysconfdir" >> $config_host_mak 4569echo "qemu_confdir=$qemu_confdir" >> $config_host_mak 4570echo "qemu_datadir=$qemu_datadir" >> $config_host_mak 4571echo "qemu_docdir=$qemu_docdir" >> $config_host_mak 4572echo "qemu_moddir=$qemu_moddir" >> $config_host_mak 4573if test "$mingw32" = "no" ; then 4574 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 4575fi 4576echo "qemu_helperdir=$libexecdir" >> $config_host_mak 4577echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 4578echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 4579echo "qemu_localedir=$qemu_localedir" >> $config_host_mak 4580echo "libs_softmmu=$libs_softmmu" >> $config_host_mak 4581 4582echo "ARCH=$ARCH" >> $config_host_mak 4583 4584if test "$debug_tcg" = "yes" ; then 4585 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 4586fi 4587if test "$strip_opt" = "yes" ; then 4588 echo "STRIP=${strip}" >> $config_host_mak 4589fi 4590if test "$bigendian" = "yes" ; then 4591 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 4592fi 4593if test "$mingw32" = "yes" ; then 4594 echo "CONFIG_WIN32=y" >> $config_host_mak 4595 rc_version=`cat $source_path/VERSION` 4596 version_major=${rc_version%%.*} 4597 rc_version=${rc_version#*.} 4598 version_minor=${rc_version%%.*} 4599 rc_version=${rc_version#*.} 4600 version_subminor=${rc_version%%.*} 4601 version_micro=0 4602 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4603 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4604 if test "$guest_agent_with_vss" = "yes" ; then 4605 echo "CONFIG_QGA_VSS=y" >> $config_host_mak 4606 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 4607 fi 4608 if test "$guest_agent_msi" != "no"; then 4609 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 4610 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 4611 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 4612 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 4613 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 4614 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 4615 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 4616 fi 4617else 4618 echo "CONFIG_POSIX=y" >> $config_host_mak 4619fi 4620 4621if test "$linux" = "yes" ; then 4622 echo "CONFIG_LINUX=y" >> $config_host_mak 4623fi 4624 4625if test "$darwin" = "yes" ; then 4626 echo "CONFIG_DARWIN=y" >> $config_host_mak 4627fi 4628 4629if test "$aix" = "yes" ; then 4630 echo "CONFIG_AIX=y" >> $config_host_mak 4631fi 4632 4633if test "$solaris" = "yes" ; then 4634 echo "CONFIG_SOLARIS=y" >> $config_host_mak 4635 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 4636 if test "$needs_libsunmath" = "yes" ; then 4637 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 4638 fi 4639fi 4640if test "$haiku" = "yes" ; then 4641 echo "CONFIG_HAIKU=y" >> $config_host_mak 4642fi 4643if test "$static" = "yes" ; then 4644 echo "CONFIG_STATIC=y" >> $config_host_mak 4645fi 4646if test "$profiler" = "yes" ; then 4647 echo "CONFIG_PROFILER=y" >> $config_host_mak 4648fi 4649if test "$slirp" = "yes" ; then 4650 echo "CONFIG_SLIRP=y" >> $config_host_mak 4651 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 4652fi 4653if test "$vde" = "yes" ; then 4654 echo "CONFIG_VDE=y" >> $config_host_mak 4655fi 4656if test "$netmap" = "yes" ; then 4657 echo "CONFIG_NETMAP=y" >> $config_host_mak 4658fi 4659if test "$l2tpv3" = "yes" ; then 4660 echo "CONFIG_L2TPV3=y" >> $config_host_mak 4661fi 4662if test "$cap_ng" = "yes" ; then 4663 echo "CONFIG_LIBCAP=y" >> $config_host_mak 4664fi 4665echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 4666for drv in $audio_drv_list; do 4667 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 4668 echo "$def=y" >> $config_host_mak 4669done 4670if test "$audio_pt_int" = "yes" ; then 4671 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 4672fi 4673if test "$audio_win_int" = "yes" ; then 4674 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 4675fi 4676echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 4677echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 4678if test "$vnc" = "yes" ; then 4679 echo "CONFIG_VNC=y" >> $config_host_mak 4680fi 4681if test "$vnc_tls" = "yes" ; then 4682 echo "CONFIG_VNC_TLS=y" >> $config_host_mak 4683fi 4684if test "$vnc_sasl" = "yes" ; then 4685 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 4686fi 4687if test "$vnc_jpeg" = "yes" ; then 4688 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 4689fi 4690if test "$vnc_png" = "yes" ; then 4691 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 4692fi 4693if test "$vnc_ws" = "yes" ; then 4694 echo "CONFIG_VNC_WS=y" >> $config_host_mak 4695 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak 4696fi 4697if test "$fnmatch" = "yes" ; then 4698 echo "CONFIG_FNMATCH=y" >> $config_host_mak 4699fi 4700if test "$uuid" = "yes" ; then 4701 echo "CONFIG_UUID=y" >> $config_host_mak 4702fi 4703if test "$xfs" = "yes" ; then 4704 echo "CONFIG_XFS=y" >> $config_host_mak 4705fi 4706qemu_version=`head $source_path/VERSION` 4707echo "VERSION=$qemu_version" >>$config_host_mak 4708echo "PKGVERSION=$pkgversion" >>$config_host_mak 4709echo "SRC_PATH=$source_path" >> $config_host_mak 4710echo "TARGET_DIRS=$target_list" >> $config_host_mak 4711if [ "$docs" = "yes" ] ; then 4712 echo "BUILD_DOCS=yes" >> $config_host_mak 4713fi 4714if test "$modules" = "yes"; then 4715 # $shacmd can generate a hash started with digit, which the compiler doesn't 4716 # like as an symbol. So prefix it with an underscore 4717 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak 4718 echo "CONFIG_MODULES=y" >> $config_host_mak 4719fi 4720if test "$sdl" = "yes" ; then 4721 echo "CONFIG_SDL=y" >> $config_host_mak 4722 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 4723 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 4724fi 4725if test "$cocoa" = "yes" ; then 4726 echo "CONFIG_COCOA=y" >> $config_host_mak 4727fi 4728if test "$curses" = "yes" ; then 4729 echo "CONFIG_CURSES=y" >> $config_host_mak 4730fi 4731if test "$utimens" = "yes" ; then 4732 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 4733fi 4734if test "$pipe2" = "yes" ; then 4735 echo "CONFIG_PIPE2=y" >> $config_host_mak 4736fi 4737if test "$accept4" = "yes" ; then 4738 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 4739fi 4740if test "$splice" = "yes" ; then 4741 echo "CONFIG_SPLICE=y" >> $config_host_mak 4742fi 4743if test "$eventfd" = "yes" ; then 4744 echo "CONFIG_EVENTFD=y" >> $config_host_mak 4745fi 4746if test "$fallocate" = "yes" ; then 4747 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 4748fi 4749if test "$fallocate_punch_hole" = "yes" ; then 4750 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 4751fi 4752if test "$fallocate_zero_range" = "yes" ; then 4753 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 4754fi 4755if test "$posix_fallocate" = "yes" ; then 4756 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 4757fi 4758if test "$sync_file_range" = "yes" ; then 4759 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 4760fi 4761if test "$fiemap" = "yes" ; then 4762 echo "CONFIG_FIEMAP=y" >> $config_host_mak 4763fi 4764if test "$dup3" = "yes" ; then 4765 echo "CONFIG_DUP3=y" >> $config_host_mak 4766fi 4767if test "$ppoll" = "yes" ; then 4768 echo "CONFIG_PPOLL=y" >> $config_host_mak 4769fi 4770if test "$prctl_pr_set_timerslack" = "yes" ; then 4771 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 4772fi 4773if test "$epoll" = "yes" ; then 4774 echo "CONFIG_EPOLL=y" >> $config_host_mak 4775fi 4776if test "$epoll_create1" = "yes" ; then 4777 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 4778fi 4779if test "$epoll_pwait" = "yes" ; then 4780 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 4781fi 4782if test "$sendfile" = "yes" ; then 4783 echo "CONFIG_SENDFILE=y" >> $config_host_mak 4784fi 4785if test "$timerfd" = "yes" ; then 4786 echo "CONFIG_TIMERFD=y" >> $config_host_mak 4787fi 4788if test "$setns" = "yes" ; then 4789 echo "CONFIG_SETNS=y" >> $config_host_mak 4790fi 4791if test "$inotify" = "yes" ; then 4792 echo "CONFIG_INOTIFY=y" >> $config_host_mak 4793fi 4794if test "$inotify1" = "yes" ; then 4795 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 4796fi 4797if test "$byteswap_h" = "yes" ; then 4798 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 4799fi 4800if test "$bswap_h" = "yes" ; then 4801 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 4802fi 4803if test "$curl" = "yes" ; then 4804 echo "CONFIG_CURL=m" >> $config_host_mak 4805 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 4806 echo "CURL_LIBS=$curl_libs" >> $config_host_mak 4807fi 4808if test "$brlapi" = "yes" ; then 4809 echo "CONFIG_BRLAPI=y" >> $config_host_mak 4810fi 4811if test "$bluez" = "yes" ; then 4812 echo "CONFIG_BLUEZ=y" >> $config_host_mak 4813 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 4814fi 4815if test "$glib_subprocess" = "yes" ; then 4816 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 4817fi 4818echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 4819if test "$gtk" = "yes" ; then 4820 echo "CONFIG_GTK=y" >> $config_host_mak 4821 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 4822 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 4823fi 4824if test "$gnutls" = "yes" ; then 4825 echo "CONFIG_GNUTLS=y" >> $config_host_mak 4826fi 4827if test "$gnutls_hash" = "yes" ; then 4828 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak 4829fi 4830if test "$vte" = "yes" ; then 4831 echo "CONFIG_VTE=y" >> $config_host_mak 4832 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 4833fi 4834if test "$xen" = "yes" ; then 4835 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 4836 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 4837fi 4838if test "$linux_aio" = "yes" ; then 4839 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 4840fi 4841if test "$attr" = "yes" ; then 4842 echo "CONFIG_ATTR=y" >> $config_host_mak 4843fi 4844if test "$libattr" = "yes" ; then 4845 echo "CONFIG_LIBATTR=y" >> $config_host_mak 4846fi 4847if test "$virtfs" = "yes" ; then 4848 echo "CONFIG_VIRTFS=y" >> $config_host_mak 4849fi 4850if test "$vhost_scsi" = "yes" ; then 4851 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 4852fi 4853if test "$vhost_net" = "yes" ; then 4854 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 4855fi 4856if test "$blobs" = "yes" ; then 4857 echo "INSTALL_BLOBS=yes" >> $config_host_mak 4858fi 4859if test "$iovec" = "yes" ; then 4860 echo "CONFIG_IOVEC=y" >> $config_host_mak 4861fi 4862if test "$preadv" = "yes" ; then 4863 echo "CONFIG_PREADV=y" >> $config_host_mak 4864fi 4865if test "$fdt" = "yes" ; then 4866 echo "CONFIG_FDT=y" >> $config_host_mak 4867fi 4868if test "$signalfd" = "yes" ; then 4869 echo "CONFIG_SIGNALFD=y" >> $config_host_mak 4870fi 4871if test "$tcg_interpreter" = "yes" ; then 4872 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 4873fi 4874if test "$fdatasync" = "yes" ; then 4875 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 4876fi 4877if test "$madvise" = "yes" ; then 4878 echo "CONFIG_MADVISE=y" >> $config_host_mak 4879fi 4880if test "$posix_madvise" = "yes" ; then 4881 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 4882fi 4883if test "$sigev_thread_id" = "yes" ; then 4884 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak 4885fi 4886 4887if test "$spice" = "yes" ; then 4888 echo "CONFIG_SPICE=y" >> $config_host_mak 4889fi 4890 4891if test "$smartcard_nss" = "yes" ; then 4892 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 4893 echo "NSS_LIBS=$nss_libs" >> $config_host_mak 4894 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak 4895fi 4896 4897if test "$libusb" = "yes" ; then 4898 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 4899fi 4900 4901if test "$usb_redir" = "yes" ; then 4902 echo "CONFIG_USB_REDIR=y" >> $config_host_mak 4903fi 4904 4905if test "$opengl" = "yes" ; then 4906 echo "CONFIG_OPENGL=y" >> $config_host_mak 4907 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak 4908 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 4909fi 4910 4911if test "$lzo" = "yes" ; then 4912 echo "CONFIG_LZO=y" >> $config_host_mak 4913fi 4914 4915if test "$snappy" = "yes" ; then 4916 echo "CONFIG_SNAPPY=y" >> $config_host_mak 4917fi 4918 4919if test "$bzip2" = "yes" ; then 4920 echo "CONFIG_BZIP2=y" >> $config_host_mak 4921 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 4922fi 4923 4924if test "$libiscsi" = "yes" ; then 4925 echo "CONFIG_LIBISCSI=m" >> $config_host_mak 4926 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 4927 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 4928fi 4929 4930if test "$libnfs" = "yes" ; then 4931 echo "CONFIG_LIBNFS=y" >> $config_host_mak 4932fi 4933 4934if test "$seccomp" = "yes"; then 4935 echo "CONFIG_SECCOMP=y" >> $config_host_mak 4936fi 4937 4938# XXX: suppress that 4939if [ "$bsd" = "yes" ] ; then 4940 echo "CONFIG_BSD=y" >> $config_host_mak 4941fi 4942 4943if test "$zero_malloc" = "yes" ; then 4944 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 4945fi 4946if test "$qom_cast_debug" = "yes" ; then 4947 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 4948fi 4949if test "$rbd" = "yes" ; then 4950 echo "CONFIG_RBD=m" >> $config_host_mak 4951 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 4952 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 4953fi 4954 4955echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 4956if test "$coroutine_pool" = "yes" ; then 4957 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 4958else 4959 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 4960fi 4961 4962if test "$open_by_handle_at" = "yes" ; then 4963 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 4964fi 4965 4966if test "$linux_magic_h" = "yes" ; then 4967 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 4968fi 4969 4970if test "$pragma_diagnostic_available" = "yes" ; then 4971 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 4972fi 4973 4974if test "$valgrind_h" = "yes" ; then 4975 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 4976fi 4977 4978if test "$has_environ" = "yes" ; then 4979 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 4980fi 4981 4982if test "$cpuid_h" = "yes" ; then 4983 echo "CONFIG_CPUID_H=y" >> $config_host_mak 4984fi 4985 4986if test "$int128" = "yes" ; then 4987 echo "CONFIG_INT128=y" >> $config_host_mak 4988fi 4989 4990if test "$getauxval" = "yes" ; then 4991 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 4992fi 4993 4994if test "$glusterfs" = "yes" ; then 4995 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 4996 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 4997 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 4998fi 4999 5000if test "$glusterfs_discard" = "yes" ; then 5001 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 5002fi 5003 5004if test "$glusterfs_zerofill" = "yes" ; then 5005 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 5006fi 5007 5008if test "$archipelago" = "yes" ; then 5009 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak 5010 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak 5011fi 5012 5013if test "$libssh2" = "yes" ; then 5014 echo "CONFIG_LIBSSH2=m" >> $config_host_mak 5015 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 5016 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 5017fi 5018 5019if test "$quorum" = "yes" ; then 5020 echo "CONFIG_QUORUM=y" >> $config_host_mak 5021fi 5022 5023if test "$vhdx" = "yes" ; then 5024 echo "CONFIG_VHDX=y" >> $config_host_mak 5025fi 5026 5027# USB host support 5028if test "$libusb" = "yes"; then 5029 echo "HOST_USB=libusb legacy" >> $config_host_mak 5030else 5031 echo "HOST_USB=stub" >> $config_host_mak 5032fi 5033 5034# TPM passthrough support? 5035if test "$tpm" = "yes"; then 5036 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 5037 if test "$tpm_passthrough" = "yes"; then 5038 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 5039 fi 5040fi 5041 5042echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 5043if have_backend "nop"; then 5044 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 5045fi 5046if have_backend "simple"; then 5047 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 5048 # Set the appropriate trace file. 5049 trace_file="\"$trace_file-\" FMT_pid" 5050fi 5051if have_backend "stderr"; then 5052 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak 5053fi 5054if have_backend "ust"; then 5055 echo "CONFIG_TRACE_UST=y" >> $config_host_mak 5056fi 5057if have_backend "dtrace"; then 5058 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 5059 if test "$trace_backend_stap" = "yes" ; then 5060 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 5061 fi 5062fi 5063if have_backend "ftrace"; then 5064 if test "$linux" = "yes" ; then 5065 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 5066 else 5067 feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 5068 fi 5069fi 5070echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 5071 5072if test "$rdma" = "yes" ; then 5073 echo "CONFIG_RDMA=y" >> $config_host_mak 5074fi 5075 5076# Hold two types of flag: 5077# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 5078# a thread we have a handle to 5079# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 5080# platform 5081if test "$pthread_setname_np" = "yes" ; then 5082 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 5083 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 5084fi 5085 5086if test "$tcg_interpreter" = "yes"; then 5087 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 5088elif test "$ARCH" = "sparc64" ; then 5089 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 5090elif test "$ARCH" = "s390x" ; then 5091 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 5092elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 5093 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 5094elif test "$ARCH" = "ppc64" ; then 5095 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 5096else 5097 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 5098fi 5099QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 5100 5101echo "TOOLS=$tools" >> $config_host_mak 5102echo "ROMS=$roms" >> $config_host_mak 5103echo "MAKE=$make" >> $config_host_mak 5104echo "INSTALL=$install" >> $config_host_mak 5105echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 5106echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 5107if test -n "$libtool"; then 5108 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak 5109 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak 5110else 5111 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 5112 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 5113fi 5114echo "PYTHON=$python" >> $config_host_mak 5115echo "CC=$cc" >> $config_host_mak 5116if $iasl -h > /dev/null 2>&1; then 5117 echo "IASL=$iasl" >> $config_host_mak 5118fi 5119echo "CC_I386=$cc_i386" >> $config_host_mak 5120echo "HOST_CC=$host_cc" >> $config_host_mak 5121echo "CXX=$cxx" >> $config_host_mak 5122echo "OBJCC=$objcc" >> $config_host_mak 5123echo "AR=$ar" >> $config_host_mak 5124echo "ARFLAGS=$ARFLAGS" >> $config_host_mak 5125echo "AS=$as" >> $config_host_mak 5126echo "CPP=$cpp" >> $config_host_mak 5127echo "OBJCOPY=$objcopy" >> $config_host_mak 5128echo "LD=$ld" >> $config_host_mak 5129echo "NM=$nm" >> $config_host_mak 5130echo "WINDRES=$windres" >> $config_host_mak 5131echo "LIBTOOL=$libtool" >> $config_host_mak 5132echo "CFLAGS=$CFLAGS" >> $config_host_mak 5133echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 5134echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 5135echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 5136if test "$sparse" = "yes" ; then 5137 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 5138 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 5139 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 5140 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 5141 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 5142fi 5143if test "$cross_prefix" != ""; then 5144 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 5145else 5146 echo "AUTOCONF_HOST := " >> $config_host_mak 5147fi 5148echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 5149echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 5150echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak 5151echo "LIBS+=$LIBS" >> $config_host_mak 5152echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 5153echo "EXESUF=$EXESUF" >> $config_host_mak 5154echo "DSOSUF=$DSOSUF" >> $config_host_mak 5155echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 5156echo "LIBS_QGA+=$libs_qga" >> $config_host_mak 5157echo "POD2MAN=$POD2MAN" >> $config_host_mak 5158echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 5159if test "$gcov" = "yes" ; then 5160 echo "CONFIG_GCOV=y" >> $config_host_mak 5161 echo "GCOV=$gcov_tool" >> $config_host_mak 5162fi 5163 5164# use included Linux headers 5165if test "$linux" = "yes" ; then 5166 mkdir -p linux-headers 5167 case "$cpu" in 5168 i386|x86_64|x32) 5169 linux_arch=x86 5170 ;; 5171 ppcemb|ppc|ppc64) 5172 linux_arch=powerpc 5173 ;; 5174 s390x) 5175 linux_arch=s390 5176 ;; 5177 aarch64) 5178 linux_arch=arm64 5179 ;; 5180 mips64) 5181 linux_arch=mips 5182 ;; 5183 *) 5184 # For most CPUs the kernel architecture name and QEMU CPU name match. 5185 linux_arch="$cpu" 5186 ;; 5187 esac 5188 # For non-KVM architectures we will not have asm headers 5189 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 5190 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 5191 fi 5192fi 5193 5194for target in $target_list; do 5195target_dir="$target" 5196config_target_mak=$target_dir/config-target.mak 5197target_name=`echo $target | cut -d '-' -f 1` 5198target_bigendian="no" 5199 5200case "$target_name" in 5201 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 5202 target_bigendian=yes 5203 ;; 5204esac 5205target_softmmu="no" 5206target_user_only="no" 5207target_linux_user="no" 5208target_bsd_user="no" 5209case "$target" in 5210 ${target_name}-softmmu) 5211 target_softmmu="yes" 5212 ;; 5213 ${target_name}-linux-user) 5214 if test "$linux" != "yes" ; then 5215 error_exit "Target '$target' is only available on a Linux host" 5216 fi 5217 target_user_only="yes" 5218 target_linux_user="yes" 5219 ;; 5220 ${target_name}-bsd-user) 5221 if test "$bsd" != "yes" ; then 5222 error_exit "Target '$target' is only available on a BSD host" 5223 fi 5224 target_user_only="yes" 5225 target_bsd_user="yes" 5226 ;; 5227 *) 5228 error_exit "Target '$target' not recognised" 5229 exit 1 5230 ;; 5231esac 5232 5233mkdir -p $target_dir 5234echo "# Automatically generated by configure - do not modify" > $config_target_mak 5235 5236bflt="no" 5237interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"` 5238gdb_xml_files="" 5239 5240TARGET_ARCH="$target_name" 5241TARGET_BASE_ARCH="" 5242TARGET_ABI_DIR="" 5243 5244case "$target_name" in 5245 i386) 5246 ;; 5247 x86_64) 5248 TARGET_BASE_ARCH=i386 5249 ;; 5250 alpha) 5251 ;; 5252 arm|armeb) 5253 TARGET_ARCH=arm 5254 bflt="yes" 5255 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 5256 ;; 5257 aarch64) 5258 TARGET_BASE_ARCH=arm 5259 bflt="yes" 5260 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 5261 ;; 5262 cris) 5263 ;; 5264 lm32) 5265 ;; 5266 m68k) 5267 bflt="yes" 5268 gdb_xml_files="cf-core.xml cf-fp.xml" 5269 ;; 5270 microblaze|microblazeel) 5271 TARGET_ARCH=microblaze 5272 bflt="yes" 5273 ;; 5274 mips|mipsel) 5275 TARGET_ARCH=mips 5276 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 5277 ;; 5278 mipsn32|mipsn32el) 5279 TARGET_ARCH=mips64 5280 TARGET_BASE_ARCH=mips 5281 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 5282 echo "TARGET_ABI32=y" >> $config_target_mak 5283 ;; 5284 mips64|mips64el) 5285 TARGET_ARCH=mips64 5286 TARGET_BASE_ARCH=mips 5287 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 5288 ;; 5289 moxie) 5290 ;; 5291 or32) 5292 TARGET_ARCH=openrisc 5293 TARGET_BASE_ARCH=openrisc 5294 ;; 5295 ppc) 5296 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5297 ;; 5298 ppcemb) 5299 TARGET_BASE_ARCH=ppc 5300 TARGET_ABI_DIR=ppc 5301 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5302 ;; 5303 ppc64) 5304 TARGET_BASE_ARCH=ppc 5305 TARGET_ABI_DIR=ppc 5306 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5307 ;; 5308 ppc64le) 5309 TARGET_ARCH=ppc64 5310 TARGET_BASE_ARCH=ppc 5311 TARGET_ABI_DIR=ppc 5312 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5313 ;; 5314 ppc64abi32) 5315 TARGET_ARCH=ppc64 5316 TARGET_BASE_ARCH=ppc 5317 TARGET_ABI_DIR=ppc 5318 echo "TARGET_ABI32=y" >> $config_target_mak 5319 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5320 ;; 5321 sh4|sh4eb) 5322 TARGET_ARCH=sh4 5323 bflt="yes" 5324 ;; 5325 sparc) 5326 ;; 5327 sparc64) 5328 TARGET_BASE_ARCH=sparc 5329 ;; 5330 sparc32plus) 5331 TARGET_ARCH=sparc64 5332 TARGET_BASE_ARCH=sparc 5333 TARGET_ABI_DIR=sparc 5334 echo "TARGET_ABI32=y" >> $config_target_mak 5335 ;; 5336 s390x) 5337 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml" 5338 ;; 5339 tricore) 5340 ;; 5341 unicore32) 5342 ;; 5343 xtensa|xtensaeb) 5344 TARGET_ARCH=xtensa 5345 ;; 5346 *) 5347 error_exit "Unsupported target CPU" 5348 ;; 5349esac 5350# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 5351if [ "$TARGET_BASE_ARCH" = "" ]; then 5352 TARGET_BASE_ARCH=$TARGET_ARCH 5353fi 5354 5355symlink "$source_path/Makefile.target" "$target_dir/Makefile" 5356 5357upper() { 5358 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 5359} 5360 5361target_arch_name="`upper $TARGET_ARCH`" 5362echo "TARGET_$target_arch_name=y" >> $config_target_mak 5363echo "TARGET_NAME=$target_name" >> $config_target_mak 5364echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 5365if [ "$TARGET_ABI_DIR" = "" ]; then 5366 TARGET_ABI_DIR=$TARGET_ARCH 5367fi 5368echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 5369if [ "$HOST_VARIANT_DIR" != "" ]; then 5370 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 5371fi 5372case "$target_name" in 5373 i386|x86_64) 5374 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 5375 echo "CONFIG_XEN=y" >> $config_target_mak 5376 if test "$xen_pci_passthrough" = yes; then 5377 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 5378 fi 5379 fi 5380 ;; 5381 *) 5382esac 5383case "$target_name" in 5384 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips) 5385 # Make sure the target and host cpus are compatible 5386 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 5387 \( "$target_name" = "$cpu" -o \ 5388 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 5389 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \ 5390 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \ 5391 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 5392 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \ 5393 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \ 5394 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \ 5395 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \ 5396 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then 5397 echo "CONFIG_KVM=y" >> $config_target_mak 5398 if test "$vhost_net" = "yes" ; then 5399 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 5400 fi 5401 fi 5402esac 5403if test "$target_bigendian" = "yes" ; then 5404 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 5405fi 5406if test "$target_softmmu" = "yes" ; then 5407 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 5408fi 5409if test "$target_user_only" = "yes" ; then 5410 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 5411 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 5412fi 5413if test "$target_linux_user" = "yes" ; then 5414 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 5415fi 5416list="" 5417if test ! -z "$gdb_xml_files" ; then 5418 for x in $gdb_xml_files; do 5419 list="$list $source_path/gdb-xml/$x" 5420 done 5421 echo "TARGET_XML_FILES=$list" >> $config_target_mak 5422fi 5423 5424if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 5425 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 5426fi 5427if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 5428 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 5429fi 5430if test "$target_bsd_user" = "yes" ; then 5431 echo "CONFIG_BSD_USER=y" >> $config_target_mak 5432fi 5433 5434# generate QEMU_CFLAGS/LDFLAGS for targets 5435 5436cflags="" 5437ldflags="" 5438 5439for i in $ARCH $TARGET_BASE_ARCH ; do 5440 case "$i" in 5441 alpha) 5442 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 5443 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak 5444 ;; 5445 aarch64) 5446 if test -n "${cxx}"; then 5447 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 5448 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 5449 fi 5450 ;; 5451 arm) 5452 echo "CONFIG_ARM_DIS=y" >> $config_target_mak 5453 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak 5454 if test -n "${cxx}"; then 5455 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 5456 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 5457 fi 5458 ;; 5459 cris) 5460 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 5461 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak 5462 ;; 5463 hppa) 5464 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 5465 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak 5466 ;; 5467 i386|x86_64|x32) 5468 echo "CONFIG_I386_DIS=y" >> $config_target_mak 5469 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak 5470 ;; 5471 ia64*) 5472 echo "CONFIG_IA64_DIS=y" >> $config_target_mak 5473 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak 5474 ;; 5475 lm32) 5476 echo "CONFIG_LM32_DIS=y" >> $config_target_mak 5477 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak 5478 ;; 5479 m68k) 5480 echo "CONFIG_M68K_DIS=y" >> $config_target_mak 5481 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak 5482 ;; 5483 microblaze*) 5484 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 5485 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak 5486 ;; 5487 mips*) 5488 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 5489 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak 5490 ;; 5491 moxie*) 5492 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak 5493 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak 5494 ;; 5495 or32) 5496 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak 5497 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak 5498 ;; 5499 ppc*) 5500 echo "CONFIG_PPC_DIS=y" >> $config_target_mak 5501 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak 5502 ;; 5503 s390*) 5504 echo "CONFIG_S390_DIS=y" >> $config_target_mak 5505 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak 5506 ;; 5507 sh4) 5508 echo "CONFIG_SH4_DIS=y" >> $config_target_mak 5509 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak 5510 ;; 5511 sparc*) 5512 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 5513 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak 5514 ;; 5515 xtensa*) 5516 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak 5517 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak 5518 ;; 5519 esac 5520done 5521if test "$tcg_interpreter" = "yes" ; then 5522 echo "CONFIG_TCI_DIS=y" >> $config_target_mak 5523 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak 5524fi 5525 5526case "$ARCH" in 5527alpha) 5528 # Ensure there's only a single GP 5529 cflags="-msmall-data $cflags" 5530;; 5531esac 5532 5533if test "$gprof" = "yes" ; then 5534 echo "TARGET_GPROF=yes" >> $config_target_mak 5535 if test "$target_linux_user" = "yes" ; then 5536 cflags="-p $cflags" 5537 ldflags="-p $ldflags" 5538 fi 5539 if test "$target_softmmu" = "yes" ; then 5540 ldflags="-p $ldflags" 5541 echo "GPROF_CFLAGS=-p" >> $config_target_mak 5542 fi 5543fi 5544 5545if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 5546 ldflags="$ldflags $textseg_ldflags" 5547fi 5548 5549echo "LDFLAGS+=$ldflags" >> $config_target_mak 5550echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 5551 5552done # for target in $targets 5553 5554if [ "$pixman" = "internal" ]; then 5555 echo "config-host.h: subdir-pixman" >> $config_host_mak 5556fi 5557 5558if test "$rdma" = "yes" ; then 5559echo "CONFIG_RDMA=y" >> $config_host_mak 5560fi 5561 5562if [ "$dtc_internal" = "yes" ]; then 5563 echo "config-host.h: subdir-dtc" >> $config_host_mak 5564fi 5565 5566if test "$numa" = "yes"; then 5567 echo "CONFIG_NUMA=y" >> $config_host_mak 5568fi 5569 5570if test "$ccache_cpp2" = "yes"; then 5571 echo "export CCACHE_CPP2=y" >> $config_host_mak 5572fi 5573 5574# build tree in object directory in case the source is not in the current directory 5575DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" 5576DIRS="$DIRS fsdev" 5577DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 5578DIRS="$DIRS roms/seabios roms/vgabios" 5579DIRS="$DIRS qapi-generated" 5580FILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 5581FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 5582FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 5583FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 5584FILES="$FILES pc-bios/spapr-rtas/Makefile" 5585FILES="$FILES pc-bios/s390-ccw/Makefile" 5586FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 5587FILES="$FILES pc-bios/qemu-icon.bmp" 5588for bios_file in \ 5589 $source_path/pc-bios/*.bin \ 5590 $source_path/pc-bios/*.aml \ 5591 $source_path/pc-bios/*.rom \ 5592 $source_path/pc-bios/*.dtb \ 5593 $source_path/pc-bios/*.img \ 5594 $source_path/pc-bios/openbios-* \ 5595 $source_path/pc-bios/u-boot.* \ 5596 $source_path/pc-bios/palcode-* 5597do 5598 FILES="$FILES pc-bios/`basename $bios_file`" 5599done 5600for test_file in `find $source_path/tests/acpi-test-data -type f` 5601do 5602 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`" 5603done 5604mkdir -p $DIRS 5605for f in $FILES ; do 5606 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 5607 symlink "$source_path/$f" "$f" 5608 fi 5609done 5610 5611# temporary config to build submodules 5612for rom in seabios vgabios ; do 5613 config_mak=roms/$rom/config.mak 5614 echo "# Automatically generated by configure - do not modify" > $config_mak 5615 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 5616 echo "AS=$as" >> $config_mak 5617 echo "CC=$cc" >> $config_mak 5618 echo "BCC=bcc" >> $config_mak 5619 echo "CPP=$cpp" >> $config_mak 5620 echo "OBJCOPY=objcopy" >> $config_mak 5621 echo "IASL=$iasl" >> $config_mak 5622 echo "LD=$ld" >> $config_mak 5623done 5624 5625# set up qemu-iotests in this build directory 5626iotests_common_env="tests/qemu-iotests/common.env" 5627iotests_check="tests/qemu-iotests/check" 5628 5629echo "# Automatically generated by configure - do not modify" > "$iotests_common_env" 5630echo >> "$iotests_common_env" 5631echo "export PYTHON='$python'" >> "$iotests_common_env" 5632 5633if [ ! -e "$iotests_check" ]; then 5634 symlink "$source_path/$iotests_check" "$iotests_check" 5635fi 5636 5637# Save the configure command line for later reuse. 5638cat <<EOD >config.status 5639#!/bin/sh 5640# Generated by configure. 5641# Run this file to recreate the current configuration. 5642# Compiler output produced by configure, useful for debugging 5643# configure, is in config.log if it exists. 5644EOD 5645printf "exec" >>config.status 5646printf " '%s'" "$0" "$@" >>config.status 5647echo >>config.status 5648chmod +x config.status 5649 5650rm -r "$TMPDIR1" 5651