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