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_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses" 2921 else 2922 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses" 2923 fi 2924 curses_found=no 2925 cat > $TMPC << EOF 2926#include <curses.h> 2927int main(void) { 2928 const char *s = curses_version(); 2929 resize_term(0, 0); 2930 return s != 0; 2931} 2932EOF 2933 IFS=: 2934 for curses_lib in $curses_list; do 2935 unset IFS 2936 if compile_prog "" "$curses_lib" ; then 2937 curses_found=yes 2938 libs_softmmu="$curses_lib $libs_softmmu" 2939 break 2940 fi 2941 done 2942 unset IFS 2943 if test "$curses_found" = "yes" ; then 2944 curses=yes 2945 else 2946 if test "$curses" = "yes" ; then 2947 feature_not_found "curses" "Install ncurses devel" 2948 fi 2949 curses=no 2950 fi 2951fi 2952 2953########################################## 2954# curl probe 2955if test "$curl" != "no" ; then 2956 if $pkg_config libcurl --exists; then 2957 curlconfig="$pkg_config libcurl" 2958 else 2959 curlconfig=curl-config 2960 fi 2961 cat > $TMPC << EOF 2962#include <curl/curl.h> 2963int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 2964EOF 2965 curl_cflags=$($curlconfig --cflags 2>/dev/null) 2966 curl_libs=$($curlconfig --libs 2>/dev/null) 2967 if compile_prog "$curl_cflags" "$curl_libs" ; then 2968 curl=yes 2969 else 2970 if test "$curl" = "yes" ; then 2971 feature_not_found "curl" "Install libcurl devel" 2972 fi 2973 curl=no 2974 fi 2975fi # test "$curl" 2976 2977########################################## 2978# bluez support probe 2979if test "$bluez" != "no" ; then 2980 cat > $TMPC << EOF 2981#include <bluetooth/bluetooth.h> 2982int main(void) { return bt_error(0); } 2983EOF 2984 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null) 2985 bluez_libs=$($pkg_config --libs bluez 2>/dev/null) 2986 if compile_prog "$bluez_cflags" "$bluez_libs" ; then 2987 bluez=yes 2988 libs_softmmu="$bluez_libs $libs_softmmu" 2989 else 2990 if test "$bluez" = "yes" ; then 2991 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 2992 fi 2993 bluez="no" 2994 fi 2995fi 2996 2997########################################## 2998# glib support probe 2999 3000glib_req_ver=2.22 3001glib_modules=gthread-2.0 3002if test "$modules" = yes; then 3003 glib_modules="$glib_modules gmodule-2.0" 3004fi 3005 3006for i in $glib_modules; do 3007 if $pkg_config --atleast-version=$glib_req_ver $i; then 3008 glib_cflags=$($pkg_config --cflags $i) 3009 glib_libs=$($pkg_config --libs $i) 3010 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS" 3011 LIBS="$glib_libs $LIBS" 3012 libs_qga="$glib_libs $libs_qga" 3013 else 3014 error_exit "glib-$glib_req_ver $i is required to compile QEMU" 3015 fi 3016done 3017 3018# Sanity check that the current size_t matches the 3019# size that glib thinks it should be. This catches 3020# problems on multi-arch where people try to build 3021# 32-bit QEMU while pointing at 64-bit glib headers 3022cat > $TMPC <<EOF 3023#include <glib.h> 3024#include <unistd.h> 3025 3026#define QEMU_BUILD_BUG_ON(x) \ 3027 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused)); 3028 3029int main(void) { 3030 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T); 3031 return 0; 3032} 3033EOF 3034 3035if ! compile_prog "$CFLAGS" "$LIBS" ; then 3036 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ 3037 "You probably need to set PKG_CONFIG_LIBDIR"\ 3038 "to point to the right pkg-config files for your"\ 3039 "build target" 3040fi 3041 3042# g_test_trap_subprocess added in 2.38. Used by some tests. 3043glib_subprocess=yes 3044if test "$mingw32" = "yes" || ! $pkg_config --atleast-version=2.38 glib-2.0; then 3045 glib_subprocess=no 3046fi 3047 3048# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 3049cat > $TMPC << EOF 3050#include <glib.h> 3051int main(void) { return 0; } 3052EOF 3053if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 3054 if cc_has_warning_flag "-Wno-unknown-attributes"; then 3055 glib_cflags="-Wno-unknown-attributes $glib_cflags" 3056 CFLAGS="-Wno-unknown-attributes $CFLAGS" 3057 fi 3058fi 3059 3060########################################## 3061# SHA command probe for modules 3062if test "$modules" = yes; then 3063 shacmd_probe="sha1sum sha1 shasum" 3064 for c in $shacmd_probe; do 3065 if has $c; then 3066 shacmd="$c" 3067 break 3068 fi 3069 done 3070 if test "$shacmd" = ""; then 3071 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 3072 fi 3073fi 3074 3075########################################## 3076# pixman support probe 3077 3078if test "$pixman" = ""; then 3079 if test "$want_tools" = "no" -a "$softmmu" = "no"; then 3080 pixman="none" 3081 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 3082 pixman="system" 3083 else 3084 pixman="internal" 3085 fi 3086fi 3087if test "$pixman" = "none"; then 3088 if test "$want_tools" != "no" -o "$softmmu" != "no"; then 3089 error_exit "pixman disabled but system emulation or tools build" \ 3090 "enabled. You can turn off pixman only if you also" \ 3091 "disable all system emulation targets and the tools" \ 3092 "build with '--disable-tools --disable-system'." 3093 fi 3094 pixman_cflags= 3095 pixman_libs= 3096elif test "$pixman" = "system"; then 3097 # pixman version has been checked above 3098 pixman_cflags=$($pkg_config --cflags pixman-1) 3099 pixman_libs=$($pkg_config --libs pixman-1) 3100else 3101 if test ! -d ${source_path}/pixman/pixman; then 3102 error_exit "pixman >= 0.21.8 not present. Your options:" \ 3103 " (1) Preferred: Install the pixman devel package (any recent" \ 3104 " distro should have packages as Xorg needs pixman too)." \ 3105 " (2) Fetch the pixman submodule, using:" \ 3106 " git submodule update --init pixman" 3107 fi 3108 mkdir -p pixman/pixman 3109 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman" 3110 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1" 3111fi 3112 3113########################################## 3114# libcap probe 3115 3116if test "$cap" != "no" ; then 3117 cat > $TMPC <<EOF 3118#include <stdio.h> 3119#include <sys/capability.h> 3120int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 3121EOF 3122 if compile_prog "" "-lcap" ; then 3123 cap=yes 3124 else 3125 cap=no 3126 fi 3127fi 3128 3129########################################## 3130# pthread probe 3131PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 3132 3133pthread=no 3134cat > $TMPC << EOF 3135#include <pthread.h> 3136static void *f(void *p) { return NULL; } 3137int main(void) { 3138 pthread_t thread; 3139 pthread_create(&thread, 0, f, 0); 3140 return 0; 3141} 3142EOF 3143if compile_prog "" "" ; then 3144 pthread=yes 3145else 3146 for pthread_lib in $PTHREADLIBS_LIST; do 3147 if compile_prog "" "$pthread_lib" ; then 3148 pthread=yes 3149 found=no 3150 for lib_entry in $LIBS; do 3151 if test "$lib_entry" = "$pthread_lib"; then 3152 found=yes 3153 break 3154 fi 3155 done 3156 if test "$found" = "no"; then 3157 LIBS="$pthread_lib $LIBS" 3158 fi 3159 PTHREAD_LIB="$pthread_lib" 3160 break 3161 fi 3162 done 3163fi 3164 3165if test "$mingw32" != yes -a "$pthread" = no; then 3166 error_exit "pthread check failed" \ 3167 "Make sure to have the pthread libs and headers installed." 3168fi 3169 3170# check for pthread_setname_np 3171pthread_setname_np=no 3172cat > $TMPC << EOF 3173#include <pthread.h> 3174 3175static void *f(void *p) { return NULL; } 3176int main(void) 3177{ 3178 pthread_t thread; 3179 pthread_create(&thread, 0, f, 0); 3180 pthread_setname_np(thread, "QEMU"); 3181 return 0; 3182} 3183EOF 3184if compile_prog "" "$pthread_lib" ; then 3185 pthread_setname_np=yes 3186fi 3187 3188########################################## 3189# rbd probe 3190if test "$rbd" != "no" ; then 3191 cat > $TMPC <<EOF 3192#include <stdio.h> 3193#include <rbd/librbd.h> 3194int main(void) { 3195 rados_t cluster; 3196 rados_create(&cluster, NULL); 3197 return 0; 3198} 3199EOF 3200 rbd_libs="-lrbd -lrados" 3201 if compile_prog "" "$rbd_libs" ; then 3202 rbd=yes 3203 else 3204 if test "$rbd" = "yes" ; then 3205 feature_not_found "rados block device" "Install librbd/ceph devel" 3206 fi 3207 rbd=no 3208 fi 3209fi 3210 3211########################################## 3212# libssh2 probe 3213min_libssh2_version=1.2.8 3214if test "$libssh2" != "no" ; then 3215 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 3216 libssh2_cflags=$($pkg_config libssh2 --cflags) 3217 libssh2_libs=$($pkg_config libssh2 --libs) 3218 libssh2=yes 3219 else 3220 if test "$libssh2" = "yes" ; then 3221 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 3222 fi 3223 libssh2=no 3224 fi 3225fi 3226 3227########################################## 3228# libssh2_sftp_fsync probe 3229 3230if test "$libssh2" = "yes"; then 3231 cat > $TMPC <<EOF 3232#include <stdio.h> 3233#include <libssh2.h> 3234#include <libssh2_sftp.h> 3235int main(void) { 3236 LIBSSH2_SESSION *session; 3237 LIBSSH2_SFTP *sftp; 3238 LIBSSH2_SFTP_HANDLE *sftp_handle; 3239 session = libssh2_session_init (); 3240 sftp = libssh2_sftp_init (session); 3241 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 3242 libssh2_sftp_fsync (sftp_handle); 3243 return 0; 3244} 3245EOF 3246 # libssh2_cflags/libssh2_libs defined in previous test. 3247 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 3248 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 3249 fi 3250fi 3251 3252########################################## 3253# linux-aio probe 3254 3255if test "$linux_aio" != "no" ; then 3256 cat > $TMPC <<EOF 3257#include <libaio.h> 3258#include <sys/eventfd.h> 3259#include <stddef.h> 3260int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 3261EOF 3262 if compile_prog "" "-laio" ; then 3263 linux_aio=yes 3264 else 3265 if test "$linux_aio" = "yes" ; then 3266 feature_not_found "linux AIO" "Install libaio devel" 3267 fi 3268 linux_aio=no 3269 fi 3270fi 3271 3272########################################## 3273# TPM passthrough is only on x86 Linux 3274 3275if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 3276 tpm_passthrough=$tpm 3277else 3278 tpm_passthrough=no 3279fi 3280 3281########################################## 3282# attr probe 3283 3284if test "$attr" != "no" ; then 3285 cat > $TMPC <<EOF 3286#include <stdio.h> 3287#include <sys/types.h> 3288#ifdef CONFIG_LIBATTR 3289#include <attr/xattr.h> 3290#else 3291#include <sys/xattr.h> 3292#endif 3293int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3294EOF 3295 if compile_prog "" "" ; then 3296 attr=yes 3297 # Older distros have <attr/xattr.h>, and need -lattr: 3298 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3299 attr=yes 3300 LIBS="-lattr $LIBS" 3301 libattr=yes 3302 else 3303 if test "$attr" = "yes" ; then 3304 feature_not_found "ATTR" "Install libc6 or libattr devel" 3305 fi 3306 attr=no 3307 fi 3308fi 3309 3310########################################## 3311# iovec probe 3312cat > $TMPC <<EOF 3313#include <sys/types.h> 3314#include <sys/uio.h> 3315#include <unistd.h> 3316int main(void) { return sizeof(struct iovec); } 3317EOF 3318iovec=no 3319if compile_prog "" "" ; then 3320 iovec=yes 3321fi 3322 3323########################################## 3324# preadv probe 3325cat > $TMPC <<EOF 3326#include <sys/types.h> 3327#include <sys/uio.h> 3328#include <unistd.h> 3329int main(void) { return preadv(0, 0, 0, 0); } 3330EOF 3331preadv=no 3332if compile_prog "" "" ; then 3333 preadv=yes 3334fi 3335 3336########################################## 3337# fdt probe 3338# fdt support is mandatory for at least some target architectures, 3339# so insist on it if we're building those system emulators. 3340fdt_required=no 3341for target in $target_list; do 3342 case $target in 3343 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu) 3344 fdt_required=yes 3345 ;; 3346 esac 3347done 3348 3349if test "$fdt_required" = "yes"; then 3350 if test "$fdt" = "no"; then 3351 error_exit "fdt disabled but some requested targets require it." \ 3352 "You can turn off fdt only if you also disable all the system emulation" \ 3353 "targets which need it (by specifying a cut down --target-list)." 3354 fi 3355 fdt=yes 3356fi 3357 3358if test "$fdt" != "no" ; then 3359 fdt_libs="-lfdt" 3360 # explicitly check for libfdt_env.h as it is missing in some stable installs 3361 # and test for required functions to make sure we are on a version >= 1.4.0 3362 cat > $TMPC << EOF 3363#include <libfdt.h> 3364#include <libfdt_env.h> 3365int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; } 3366EOF 3367 if compile_prog "" "$fdt_libs" ; then 3368 # system DTC is good - use it 3369 fdt=yes 3370 elif test -d ${source_path}/dtc/libfdt ; then 3371 # have submodule DTC - use it 3372 fdt=yes 3373 dtc_internal="yes" 3374 mkdir -p dtc 3375 if [ "$pwd_is_source_path" != "y" ] ; then 3376 symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3377 symlink "$source_path/dtc/scripts" "dtc/scripts" 3378 fi 3379 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3380 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3381 elif test "$fdt" = "yes" ; then 3382 # have neither and want - prompt for system/submodule install 3383 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \ 3384 " (1) Preferred: Install the DTC (libfdt) devel package" \ 3385 " (2) Fetch the DTC submodule, using:" \ 3386 " git submodule update --init dtc" 3387 else 3388 # don't have and don't want 3389 fdt_libs= 3390 fdt=no 3391 fi 3392fi 3393 3394libs_softmmu="$libs_softmmu $fdt_libs" 3395 3396########################################## 3397# opengl probe (for sdl2, gtk, milkymist-tmu2) 3398 3399if test "$opengl" != "no" ; then 3400 opengl_pkgs="epoxy libdrm gbm" 3401 if $pkg_config $opengl_pkgs x11; then 3402 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3403 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3404 opengl=yes 3405 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then 3406 gtk_gl="yes" 3407 fi 3408 else 3409 if test "$opengl" = "yes" ; then 3410 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 3411 fi 3412 opengl_cflags="" 3413 opengl_libs="" 3414 opengl=no 3415 fi 3416fi 3417 3418if test "$opengl" = "yes"; then 3419 cat > $TMPC << EOF 3420#include <epoxy/egl.h> 3421#ifndef EGL_MESA_image_dma_buf_export 3422# error mesa/epoxy lacks support for dmabufs (mesa 10.6+) 3423#endif 3424int main(void) { return 0; } 3425EOF 3426 if compile_prog "" "" ; then 3427 opengl_dmabuf=yes 3428 fi 3429fi 3430 3431########################################## 3432# archipelago probe 3433if test "$archipelago" != "no" ; then 3434 cat > $TMPC <<EOF 3435#include <stdio.h> 3436#include <xseg/xseg.h> 3437#include <xseg/protocol.h> 3438int main(void) { 3439 xseg_initialize(); 3440 return 0; 3441} 3442EOF 3443 archipelago_libs=-lxseg 3444 if compile_prog "" "$archipelago_libs"; then 3445 archipelago="yes" 3446 libs_tools="$archipelago_libs $libs_tools" 3447 libs_softmmu="$archipelago_libs $libs_softmmu" 3448 3449 echo "WARNING: Please check the licenses of QEMU and libxseg carefully." 3450 echo "GPLv3 versions of libxseg may not be compatible with QEMU's" 3451 echo "license and therefore prevent redistribution." 3452 echo 3453 echo "To disable Archipelago, use --disable-archipelago" 3454 else 3455 if test "$archipelago" = "yes" ; then 3456 feature_not_found "Archipelago backend support" "Install libxseg devel" 3457 fi 3458 archipelago="no" 3459 fi 3460fi 3461 3462 3463########################################## 3464# glusterfs probe 3465if test "$glusterfs" != "no" ; then 3466 if $pkg_config --atleast-version=3 glusterfs-api; then 3467 glusterfs="yes" 3468 glusterfs_cflags=$($pkg_config --cflags glusterfs-api) 3469 glusterfs_libs=$($pkg_config --libs glusterfs-api) 3470 if $pkg_config --atleast-version=4 glusterfs-api; then 3471 glusterfs_xlator_opt="yes" 3472 fi 3473 if $pkg_config --atleast-version=5 glusterfs-api; then 3474 glusterfs_discard="yes" 3475 fi 3476 if $pkg_config --atleast-version=6 glusterfs-api; then 3477 glusterfs_zerofill="yes" 3478 fi 3479 else 3480 if test "$glusterfs" = "yes" ; then 3481 feature_not_found "GlusterFS backend support" \ 3482 "Install glusterfs-api devel >= 3" 3483 fi 3484 glusterfs="no" 3485 fi 3486fi 3487 3488# Check for inotify functions when we are building linux-user 3489# emulator. This is done because older glibc versions don't 3490# have syscall stubs for these implemented. In that case we 3491# don't provide them even if kernel supports them. 3492# 3493inotify=no 3494cat > $TMPC << EOF 3495#include <sys/inotify.h> 3496 3497int 3498main(void) 3499{ 3500 /* try to start inotify */ 3501 return inotify_init(); 3502} 3503EOF 3504if compile_prog "" "" ; then 3505 inotify=yes 3506fi 3507 3508inotify1=no 3509cat > $TMPC << EOF 3510#include <sys/inotify.h> 3511 3512int 3513main(void) 3514{ 3515 /* try to start inotify */ 3516 return inotify_init1(0); 3517} 3518EOF 3519if compile_prog "" "" ; then 3520 inotify1=yes 3521fi 3522 3523# check if utimensat and futimens are supported 3524utimens=no 3525cat > $TMPC << EOF 3526#define _ATFILE_SOURCE 3527#include <stddef.h> 3528#include <fcntl.h> 3529#include <sys/stat.h> 3530 3531int main(void) 3532{ 3533 utimensat(AT_FDCWD, "foo", NULL, 0); 3534 futimens(0, NULL); 3535 return 0; 3536} 3537EOF 3538if compile_prog "" "" ; then 3539 utimens=yes 3540fi 3541 3542# check if pipe2 is there 3543pipe2=no 3544cat > $TMPC << EOF 3545#include <unistd.h> 3546#include <fcntl.h> 3547 3548int main(void) 3549{ 3550 int pipefd[2]; 3551 return pipe2(pipefd, O_CLOEXEC); 3552} 3553EOF 3554if compile_prog "" "" ; then 3555 pipe2=yes 3556fi 3557 3558# check if accept4 is there 3559accept4=no 3560cat > $TMPC << EOF 3561#include <sys/socket.h> 3562#include <stddef.h> 3563 3564int main(void) 3565{ 3566 accept4(0, NULL, NULL, SOCK_CLOEXEC); 3567 return 0; 3568} 3569EOF 3570if compile_prog "" "" ; then 3571 accept4=yes 3572fi 3573 3574# check if tee/splice is there. vmsplice was added same time. 3575splice=no 3576cat > $TMPC << EOF 3577#include <unistd.h> 3578#include <fcntl.h> 3579#include <limits.h> 3580 3581int main(void) 3582{ 3583 int len, fd = 0; 3584 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 3585 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 3586 return 0; 3587} 3588EOF 3589if compile_prog "" "" ; then 3590 splice=yes 3591fi 3592 3593########################################## 3594# libnuma probe 3595 3596if test "$numa" != "no" ; then 3597 cat > $TMPC << EOF 3598#include <numa.h> 3599int main(void) { return numa_available(); } 3600EOF 3601 3602 if compile_prog "" "-lnuma" ; then 3603 numa=yes 3604 libs_softmmu="-lnuma $libs_softmmu" 3605 else 3606 if test "$numa" = "yes" ; then 3607 feature_not_found "numa" "install numactl devel" 3608 fi 3609 numa=no 3610 fi 3611fi 3612 3613if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then 3614 echo "ERROR: tcmalloc && jemalloc can't be used at the same time" 3615 exit 1 3616fi 3617 3618########################################## 3619# tcmalloc probe 3620 3621if test "$tcmalloc" = "yes" ; then 3622 cat > $TMPC << EOF 3623#include <stdlib.h> 3624int main(void) { malloc(1); return 0; } 3625EOF 3626 3627 if compile_prog "" "-ltcmalloc" ; then 3628 LIBS="-ltcmalloc $LIBS" 3629 else 3630 feature_not_found "tcmalloc" "install gperftools devel" 3631 fi 3632fi 3633 3634########################################## 3635# jemalloc probe 3636 3637if test "$jemalloc" = "yes" ; then 3638 cat > $TMPC << EOF 3639#include <stdlib.h> 3640int main(void) { malloc(1); return 0; } 3641EOF 3642 3643 if compile_prog "" "-ljemalloc" ; then 3644 LIBS="-ljemalloc $LIBS" 3645 else 3646 feature_not_found "jemalloc" "install jemalloc devel" 3647 fi 3648fi 3649 3650########################################## 3651# signalfd probe 3652signalfd="no" 3653cat > $TMPC << EOF 3654#include <unistd.h> 3655#include <sys/syscall.h> 3656#include <signal.h> 3657int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3658EOF 3659 3660if compile_prog "" "" ; then 3661 signalfd=yes 3662fi 3663 3664# check if eventfd is supported 3665eventfd=no 3666cat > $TMPC << EOF 3667#include <sys/eventfd.h> 3668 3669int main(void) 3670{ 3671 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3672} 3673EOF 3674if compile_prog "" "" ; then 3675 eventfd=yes 3676fi 3677 3678# check if memfd is supported 3679memfd=no 3680cat > $TMPC << EOF 3681#include <sys/memfd.h> 3682 3683int main(void) 3684{ 3685 return memfd_create("foo", MFD_ALLOW_SEALING); 3686} 3687EOF 3688if compile_prog "" "" ; then 3689 memfd=yes 3690fi 3691 3692 3693 3694# check for fallocate 3695fallocate=no 3696cat > $TMPC << EOF 3697#include <fcntl.h> 3698 3699int main(void) 3700{ 3701 fallocate(0, 0, 0, 0); 3702 return 0; 3703} 3704EOF 3705if compile_prog "" "" ; then 3706 fallocate=yes 3707fi 3708 3709# check for fallocate hole punching 3710fallocate_punch_hole=no 3711cat > $TMPC << EOF 3712#include <fcntl.h> 3713#include <linux/falloc.h> 3714 3715int main(void) 3716{ 3717 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 3718 return 0; 3719} 3720EOF 3721if compile_prog "" "" ; then 3722 fallocate_punch_hole=yes 3723fi 3724 3725# check that fallocate supports range zeroing inside the file 3726fallocate_zero_range=no 3727cat > $TMPC << EOF 3728#include <fcntl.h> 3729#include <linux/falloc.h> 3730 3731int main(void) 3732{ 3733 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 3734 return 0; 3735} 3736EOF 3737if compile_prog "" "" ; then 3738 fallocate_zero_range=yes 3739fi 3740 3741# check for posix_fallocate 3742posix_fallocate=no 3743cat > $TMPC << EOF 3744#include <fcntl.h> 3745 3746int main(void) 3747{ 3748 posix_fallocate(0, 0, 0); 3749 return 0; 3750} 3751EOF 3752if compile_prog "" "" ; then 3753 posix_fallocate=yes 3754fi 3755 3756# check for sync_file_range 3757sync_file_range=no 3758cat > $TMPC << EOF 3759#include <fcntl.h> 3760 3761int main(void) 3762{ 3763 sync_file_range(0, 0, 0, 0); 3764 return 0; 3765} 3766EOF 3767if compile_prog "" "" ; then 3768 sync_file_range=yes 3769fi 3770 3771# check for linux/fiemap.h and FS_IOC_FIEMAP 3772fiemap=no 3773cat > $TMPC << EOF 3774#include <sys/ioctl.h> 3775#include <linux/fs.h> 3776#include <linux/fiemap.h> 3777 3778int main(void) 3779{ 3780 ioctl(0, FS_IOC_FIEMAP, 0); 3781 return 0; 3782} 3783EOF 3784if compile_prog "" "" ; then 3785 fiemap=yes 3786fi 3787 3788# check for dup3 3789dup3=no 3790cat > $TMPC << EOF 3791#include <unistd.h> 3792 3793int main(void) 3794{ 3795 dup3(0, 0, 0); 3796 return 0; 3797} 3798EOF 3799if compile_prog "" "" ; then 3800 dup3=yes 3801fi 3802 3803# check for ppoll support 3804ppoll=no 3805cat > $TMPC << EOF 3806#include <poll.h> 3807 3808int main(void) 3809{ 3810 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 3811 ppoll(&pfd, 1, 0, 0); 3812 return 0; 3813} 3814EOF 3815if compile_prog "" "" ; then 3816 ppoll=yes 3817fi 3818 3819# check for prctl(PR_SET_TIMERSLACK , ... ) support 3820prctl_pr_set_timerslack=no 3821cat > $TMPC << EOF 3822#include <sys/prctl.h> 3823 3824int main(void) 3825{ 3826 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 3827 return 0; 3828} 3829EOF 3830if compile_prog "" "" ; then 3831 prctl_pr_set_timerslack=yes 3832fi 3833 3834# check for epoll support 3835epoll=no 3836cat > $TMPC << EOF 3837#include <sys/epoll.h> 3838 3839int main(void) 3840{ 3841 epoll_create(0); 3842 return 0; 3843} 3844EOF 3845if compile_prog "" "" ; then 3846 epoll=yes 3847fi 3848 3849# epoll_create1 is a later addition 3850# so we must check separately for its presence 3851epoll_create1=no 3852cat > $TMPC << EOF 3853#include <sys/epoll.h> 3854 3855int main(void) 3856{ 3857 /* Note that we use epoll_create1 as a value, not as 3858 * a function being called. This is necessary so that on 3859 * old SPARC glibc versions where the function was present in 3860 * the library but not declared in the header file we will 3861 * fail the configure check. (Otherwise we will get a compiler 3862 * warning but not an error, and will proceed to fail the 3863 * qemu compile where we compile with -Werror.) 3864 */ 3865 return (int)(uintptr_t)&epoll_create1; 3866} 3867EOF 3868if compile_prog "" "" ; then 3869 epoll_create1=yes 3870fi 3871 3872# check for sendfile support 3873sendfile=no 3874cat > $TMPC << EOF 3875#include <sys/sendfile.h> 3876 3877int main(void) 3878{ 3879 return sendfile(0, 0, 0, 0); 3880} 3881EOF 3882if compile_prog "" "" ; then 3883 sendfile=yes 3884fi 3885 3886# check for timerfd support (glibc 2.8 and newer) 3887timerfd=no 3888cat > $TMPC << EOF 3889#include <sys/timerfd.h> 3890 3891int main(void) 3892{ 3893 return(timerfd_create(CLOCK_REALTIME, 0)); 3894} 3895EOF 3896if compile_prog "" "" ; then 3897 timerfd=yes 3898fi 3899 3900# check for setns and unshare support 3901setns=no 3902cat > $TMPC << EOF 3903#include <sched.h> 3904 3905int main(void) 3906{ 3907 int ret; 3908 ret = setns(0, 0); 3909 ret = unshare(0); 3910 return ret; 3911} 3912EOF 3913if compile_prog "" "" ; then 3914 setns=yes 3915fi 3916 3917# clock_adjtime probe 3918clock_adjtime=no 3919cat > $TMPC <<EOF 3920#include <time.h> 3921 3922int main(void) 3923{ 3924 return clock_adjtime(0, 0); 3925} 3926EOF 3927clock_adjtime=no 3928if compile_prog "" "" ; then 3929 clock_adjtime=yes 3930fi 3931 3932# syncfs probe 3933syncfs=no 3934cat > $TMPC <<EOF 3935#include <unistd.h> 3936 3937int main(void) 3938{ 3939 return syncfs(0); 3940} 3941EOF 3942syncfs=no 3943if compile_prog "" "" ; then 3944 syncfs=yes 3945fi 3946 3947# Check if tools are available to build documentation. 3948if test "$docs" != "no" ; then 3949 if has makeinfo && has pod2man; then 3950 docs=yes 3951 else 3952 if test "$docs" = "yes" ; then 3953 feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 3954 fi 3955 docs=no 3956 fi 3957fi 3958 3959# Search for bswap_32 function 3960byteswap_h=no 3961cat > $TMPC << EOF 3962#include <byteswap.h> 3963int main(void) { return bswap_32(0); } 3964EOF 3965if compile_prog "" "" ; then 3966 byteswap_h=yes 3967fi 3968 3969# Search for bswap32 function 3970bswap_h=no 3971cat > $TMPC << EOF 3972#include <sys/endian.h> 3973#include <sys/types.h> 3974#include <machine/bswap.h> 3975int main(void) { return bswap32(0); } 3976EOF 3977if compile_prog "" "" ; then 3978 bswap_h=yes 3979fi 3980 3981########################################## 3982# Do we have libiscsi >= 1.9.0 3983if test "$libiscsi" != "no" ; then 3984 if $pkg_config --atleast-version=1.9.0 libiscsi; then 3985 libiscsi="yes" 3986 libiscsi_cflags=$($pkg_config --cflags libiscsi) 3987 libiscsi_libs=$($pkg_config --libs libiscsi) 3988 else 3989 if test "$libiscsi" = "yes" ; then 3990 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 3991 fi 3992 libiscsi="no" 3993 fi 3994fi 3995 3996########################################## 3997# Do we need libm 3998cat > $TMPC << EOF 3999#include <math.h> 4000int main(int argc, char **argv) { return isnan(sin((double)argc)); } 4001EOF 4002if compile_prog "" "" ; then 4003 : 4004elif compile_prog "" "-lm" ; then 4005 LIBS="-lm $LIBS" 4006 libs_qga="-lm $libs_qga" 4007else 4008 error_exit "libm check failed" 4009fi 4010 4011########################################## 4012# Do we need librt 4013# uClibc provides 2 versions of clock_gettime(), one with realtime 4014# support and one without. This means that the clock_gettime() don't 4015# need -lrt. We still need it for timer_create() so we check for this 4016# function in addition. 4017cat > $TMPC <<EOF 4018#include <signal.h> 4019#include <time.h> 4020int main(void) { 4021 timer_create(CLOCK_REALTIME, NULL, NULL); 4022 return clock_gettime(CLOCK_REALTIME, NULL); 4023} 4024EOF 4025 4026if compile_prog "" "" ; then 4027 : 4028# we need pthread for static linking. use previous pthread test result 4029elif compile_prog "" "$pthread_lib -lrt" ; then 4030 LIBS="$LIBS -lrt" 4031 libs_qga="$libs_qga -lrt" 4032fi 4033 4034if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 4035 "$aix" != "yes" -a "$haiku" != "yes" ; then 4036 libs_softmmu="-lutil $libs_softmmu" 4037fi 4038 4039########################################## 4040# spice probe 4041if test "$spice" != "no" ; then 4042 cat > $TMPC << EOF 4043#include <spice.h> 4044int main(void) { spice_server_new(); return 0; } 4045EOF 4046 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 4047 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 4048 if $pkg_config --atleast-version=0.12.0 spice-server && \ 4049 $pkg_config --atleast-version=0.12.3 spice-protocol && \ 4050 compile_prog "$spice_cflags" "$spice_libs" ; then 4051 spice="yes" 4052 libs_softmmu="$libs_softmmu $spice_libs" 4053 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 4054 spice_protocol_version=$($pkg_config --modversion spice-protocol) 4055 spice_server_version=$($pkg_config --modversion spice-server) 4056 else 4057 if test "$spice" = "yes" ; then 4058 feature_not_found "spice" \ 4059 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 4060 fi 4061 spice="no" 4062 fi 4063fi 4064 4065# check for smartcard support 4066smartcard_cflags="" 4067if test "$smartcard" != "no"; then 4068 if $pkg_config libcacard; then 4069 libcacard_cflags=$($pkg_config --cflags libcacard) 4070 libcacard_libs=$($pkg_config --libs libcacard) 4071 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags" 4072 libs_softmmu="$libs_softmmu $libcacard_libs" 4073 smartcard="yes" 4074 else 4075 if test "$smartcard" = "yes"; then 4076 feature_not_found "smartcard" "Install libcacard devel" 4077 fi 4078 smartcard="no" 4079 fi 4080fi 4081 4082# check for libusb 4083if test "$libusb" != "no" ; then 4084 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 4085 libusb="yes" 4086 libusb_cflags=$($pkg_config --cflags libusb-1.0) 4087 libusb_libs=$($pkg_config --libs libusb-1.0) 4088 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags" 4089 libs_softmmu="$libs_softmmu $libusb_libs" 4090 else 4091 if test "$libusb" = "yes"; then 4092 feature_not_found "libusb" "Install libusb devel >= 1.0.13" 4093 fi 4094 libusb="no" 4095 fi 4096fi 4097 4098# check for usbredirparser for usb network redirection support 4099if test "$usb_redir" != "no" ; then 4100 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 4101 usb_redir="yes" 4102 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 4103 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 4104 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 4105 libs_softmmu="$libs_softmmu $usb_redir_libs" 4106 else 4107 if test "$usb_redir" = "yes"; then 4108 feature_not_found "usb-redir" "Install usbredir devel" 4109 fi 4110 usb_redir="no" 4111 fi 4112fi 4113 4114########################################## 4115# check if we have VSS SDK headers for win 4116 4117if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 4118 case "$vss_win32_sdk" in 4119 "") vss_win32_include="-isystem $source_path" ;; 4120 *\ *) # The SDK is installed in "Program Files" by default, but we cannot 4121 # handle path with spaces. So we symlink the headers into ".sdk/vss". 4122 vss_win32_include="-isystem $source_path/.sdk/vss" 4123 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 4124 ;; 4125 *) vss_win32_include="-isystem $vss_win32_sdk" 4126 esac 4127 cat > $TMPC << EOF 4128#define __MIDL_user_allocate_free_DEFINED__ 4129#include <inc/win2003/vss.h> 4130int main(void) { return VSS_CTX_BACKUP; } 4131EOF 4132 if compile_prog "$vss_win32_include" "" ; then 4133 guest_agent_with_vss="yes" 4134 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 4135 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 4136 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" 4137 else 4138 if test "$vss_win32_sdk" != "" ; then 4139 echo "ERROR: Please download and install Microsoft VSS SDK:" 4140 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 4141 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 4142 echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 4143 echo "ERROR: The headers are extracted in the directory \`inc'." 4144 feature_not_found "VSS support" 4145 fi 4146 guest_agent_with_vss="no" 4147 fi 4148fi 4149 4150########################################## 4151# lookup Windows platform SDK (if not specified) 4152# The SDK is needed only to build .tlb (type library) file of guest agent 4153# VSS provider from the source. It is usually unnecessary because the 4154# pre-compiled .tlb file is included. 4155 4156if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 4157 if test -z "$win_sdk"; then 4158 programfiles="$PROGRAMFILES" 4159 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 4160 if test -n "$programfiles"; then 4161 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 4162 else 4163 feature_not_found "Windows SDK" 4164 fi 4165 elif test "$win_sdk" = "no"; then 4166 win_sdk="" 4167 fi 4168fi 4169 4170########################################## 4171# check if mingw environment provides a recent ntddscsi.h 4172if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then 4173 cat > $TMPC << EOF 4174#include <windows.h> 4175#include <ntddscsi.h> 4176int main(void) { 4177#if !defined(IOCTL_SCSI_GET_ADDRESS) 4178#error Missing required ioctl definitions 4179#endif 4180 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 }; 4181 return addr.Lun; 4182} 4183EOF 4184 if compile_prog "" "" ; then 4185 guest_agent_ntddscsi=yes 4186 libs_qga="-lsetupapi $libs_qga" 4187 fi 4188fi 4189 4190########################################## 4191# virgl renderer probe 4192 4193if test "$virglrenderer" != "no" ; then 4194 cat > $TMPC << EOF 4195#include <virglrenderer.h> 4196int main(void) { virgl_renderer_poll(); return 0; } 4197EOF 4198 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null) 4199 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null) 4200 if $pkg_config virglrenderer >/dev/null 2>&1 && \ 4201 compile_prog "$virgl_cflags" "$virgl_libs" ; then 4202 virglrenderer="yes" 4203 else 4204 if test "$virglrenderer" = "yes" ; then 4205 feature_not_found "virglrenderer" 4206 fi 4207 virglrenderer="no" 4208 fi 4209fi 4210 4211########################################## 4212# check if we have fdatasync 4213 4214fdatasync=no 4215cat > $TMPC << EOF 4216#include <unistd.h> 4217int main(void) { 4218#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 4219return fdatasync(0); 4220#else 4221#error Not supported 4222#endif 4223} 4224EOF 4225if compile_prog "" "" ; then 4226 fdatasync=yes 4227fi 4228 4229########################################## 4230# check if we have madvise 4231 4232madvise=no 4233cat > $TMPC << EOF 4234#include <sys/types.h> 4235#include <sys/mman.h> 4236#include <stddef.h> 4237int main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 4238EOF 4239if compile_prog "" "" ; then 4240 madvise=yes 4241fi 4242 4243########################################## 4244# check if we have posix_madvise 4245 4246posix_madvise=no 4247cat > $TMPC << EOF 4248#include <sys/mman.h> 4249#include <stddef.h> 4250int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 4251EOF 4252if compile_prog "" "" ; then 4253 posix_madvise=yes 4254fi 4255 4256########################################## 4257# check if we have posix_syslog 4258 4259posix_syslog=no 4260cat > $TMPC << EOF 4261#include <syslog.h> 4262int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; } 4263EOF 4264if compile_prog "" "" ; then 4265 posix_syslog=yes 4266fi 4267 4268########################################## 4269# check if trace backend exists 4270 4271$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 4272if test "$?" -ne 0 ; then 4273 error_exit "invalid trace backends" \ 4274 "Please choose supported trace backends." 4275fi 4276 4277########################################## 4278# For 'ust' backend, test if ust headers are present 4279if have_backend "ust"; then 4280 cat > $TMPC << EOF 4281#include <lttng/tracepoint.h> 4282int main(void) { return 0; } 4283EOF 4284 if compile_prog "" "" ; then 4285 if $pkg_config lttng-ust --exists; then 4286 lttng_ust_libs=$($pkg_config --libs lttng-ust) 4287 else 4288 lttng_ust_libs="-llttng-ust" 4289 fi 4290 if $pkg_config liburcu-bp --exists; then 4291 urcu_bp_libs=$($pkg_config --libs liburcu-bp) 4292 else 4293 urcu_bp_libs="-lurcu-bp" 4294 fi 4295 4296 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 4297 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 4298 else 4299 error_exit "Trace backend 'ust' missing lttng-ust header files" 4300 fi 4301fi 4302 4303########################################## 4304# For 'dtrace' backend, test if 'dtrace' command is present 4305if have_backend "dtrace"; then 4306 if ! has 'dtrace' ; then 4307 error_exit "dtrace command is not found in PATH $PATH" 4308 fi 4309 trace_backend_stap="no" 4310 if has 'stap' ; then 4311 trace_backend_stap="yes" 4312 fi 4313fi 4314 4315########################################## 4316# check and set a backend for coroutine 4317 4318# We prefer ucontext, but it's not always possible. The fallback 4319# is sigcontext. gthread is not selectable except explicitly, because 4320# it is not functional enough to run QEMU proper. (It is occasionally 4321# useful for debugging purposes.) On Windows the only valid backend 4322# is the Windows-specific one. 4323 4324ucontext_works=no 4325if test "$darwin" != "yes"; then 4326 cat > $TMPC << EOF 4327#include <ucontext.h> 4328#ifdef __stub_makecontext 4329#error Ignoring glibc stub makecontext which will always fail 4330#endif 4331int main(void) { makecontext(0, 0, 0); return 0; } 4332EOF 4333 if compile_prog "" "" ; then 4334 ucontext_works=yes 4335 fi 4336fi 4337 4338if test "$coroutine" = ""; then 4339 if test "$mingw32" = "yes"; then 4340 coroutine=win32 4341 elif test "$ucontext_works" = "yes"; then 4342 coroutine=ucontext 4343 else 4344 coroutine=sigaltstack 4345 fi 4346else 4347 case $coroutine in 4348 windows) 4349 if test "$mingw32" != "yes"; then 4350 error_exit "'windows' coroutine backend only valid for Windows" 4351 fi 4352 # Unfortunately the user visible backend name doesn't match the 4353 # coroutine-*.c filename for this case, so we have to adjust it here. 4354 coroutine=win32 4355 ;; 4356 ucontext) 4357 if test "$ucontext_works" != "yes"; then 4358 feature_not_found "ucontext" 4359 fi 4360 ;; 4361 gthread|sigaltstack) 4362 if test "$mingw32" = "yes"; then 4363 error_exit "only the 'windows' coroutine backend is valid for Windows" 4364 fi 4365 ;; 4366 *) 4367 error_exit "unknown coroutine backend $coroutine" 4368 ;; 4369 esac 4370fi 4371 4372if test "$coroutine_pool" = ""; then 4373 if test "$coroutine" = "gthread"; then 4374 coroutine_pool=no 4375 else 4376 coroutine_pool=yes 4377 fi 4378fi 4379if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then 4380 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" 4381fi 4382 4383if test "$debug_stack_usage" = "yes"; then 4384 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then 4385 error_exit "stack usage debugging is not supported for $cpu" 4386 fi 4387 if test "$coroutine_pool" = "yes"; then 4388 echo "WARN: disabling coroutine pool for stack usage debugging" 4389 coroutine_pool=no 4390 fi 4391fi 4392 4393 4394########################################## 4395# check if we have open_by_handle_at 4396 4397open_by_handle_at=no 4398cat > $TMPC << EOF 4399#include <fcntl.h> 4400#if !defined(AT_EMPTY_PATH) 4401# error missing definition 4402#else 4403int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4404#endif 4405EOF 4406if compile_prog "" "" ; then 4407 open_by_handle_at=yes 4408fi 4409 4410######################################## 4411# check if we have linux/magic.h 4412 4413linux_magic_h=no 4414cat > $TMPC << EOF 4415#include <linux/magic.h> 4416int main(void) { 4417 return 0; 4418} 4419EOF 4420if compile_prog "" "" ; then 4421 linux_magic_h=yes 4422fi 4423 4424######################################## 4425# check whether we can disable warning option with a pragma (this is needed 4426# to silence warnings in the headers of some versions of external libraries). 4427# This test has to be compiled with -Werror as otherwise an unknown pragma is 4428# only a warning. 4429# 4430# If we can't selectively disable warning in the code, disable -Werror so that 4431# the build doesn't fail anyway. 4432 4433pragma_disable_unused_but_set=no 4434cat > $TMPC << EOF 4435#pragma GCC diagnostic push 4436#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4437#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4438#pragma GCC diagnostic pop 4439 4440int main(void) { 4441 return 0; 4442} 4443EOF 4444if compile_prog "-Werror" "" ; then 4445 pragma_diagnostic_available=yes 4446else 4447 werror=no 4448fi 4449 4450######################################## 4451# check if we have valgrind/valgrind.h 4452 4453valgrind_h=no 4454cat > $TMPC << EOF 4455#include <valgrind/valgrind.h> 4456int main(void) { 4457 return 0; 4458} 4459EOF 4460if compile_prog "" "" ; then 4461 valgrind_h=yes 4462fi 4463 4464######################################## 4465# check if environ is declared 4466 4467has_environ=no 4468cat > $TMPC << EOF 4469#include <unistd.h> 4470int main(void) { 4471 environ = 0; 4472 return 0; 4473} 4474EOF 4475if compile_prog "" "" ; then 4476 has_environ=yes 4477fi 4478 4479######################################## 4480# check if cpuid.h is usable. 4481 4482cpuid_h=no 4483cat > $TMPC << EOF 4484#include <cpuid.h> 4485int main(void) { 4486 unsigned a, b, c, d; 4487 int max = __get_cpuid_max(0, 0); 4488 4489 if (max >= 1) { 4490 __cpuid(1, a, b, c, d); 4491 } 4492 4493 if (max >= 7) { 4494 __cpuid_count(7, 0, a, b, c, d); 4495 } 4496 4497 return 0; 4498} 4499EOF 4500if compile_prog "" "" ; then 4501 cpuid_h=yes 4502fi 4503 4504######################################## 4505# check if __[u]int128_t is usable. 4506 4507int128=no 4508cat > $TMPC << EOF 4509#if defined(__clang_major__) && defined(__clang_minor__) 4510# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4511# error __int128_t does not work in CLANG before 3.2 4512# endif 4513#endif 4514__int128_t a; 4515__uint128_t b; 4516int main (void) { 4517 a = a + b; 4518 b = a * b; 4519 a = a * a; 4520 return 0; 4521} 4522EOF 4523if compile_prog "" "" ; then 4524 int128=yes 4525fi 4526 4527######################################### 4528# See if 128-bit atomic operations are supported. 4529 4530atomic128=no 4531if test "$int128" = "yes"; then 4532 cat > $TMPC << EOF 4533int main(void) 4534{ 4535 unsigned __int128 x = 0, y = 0; 4536 y = __atomic_load_16(&x, 0); 4537 __atomic_store_16(&x, y, 0); 4538 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0); 4539 return 0; 4540} 4541EOF 4542 if compile_prog "" "" ; then 4543 atomic128=yes 4544 fi 4545fi 4546 4547######################################### 4548# See if 64-bit atomic operations are supported. 4549# Note that without __atomic builtins, we can only 4550# assume atomic loads/stores max at pointer size. 4551 4552cat > $TMPC << EOF 4553#include <stdint.h> 4554int main(void) 4555{ 4556 uint64_t x = 0, y = 0; 4557#ifdef __ATOMIC_RELAXED 4558 y = __atomic_load_8(&x, 0); 4559 __atomic_store_8(&x, y, 0); 4560 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0); 4561 __atomic_exchange_8(&x, y, 0); 4562 __atomic_fetch_add_8(&x, y, 0); 4563#else 4564 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1]; 4565 __sync_lock_test_and_set(&x, y); 4566 __sync_val_compare_and_swap(&x, y, 0); 4567 __sync_fetch_and_add(&x, y); 4568#endif 4569 return 0; 4570} 4571EOF 4572if compile_prog "" "" ; then 4573 atomic64=yes 4574fi 4575 4576######################################## 4577# check if getauxval is available. 4578 4579getauxval=no 4580cat > $TMPC << EOF 4581#include <sys/auxv.h> 4582int main(void) { 4583 return getauxval(AT_HWCAP) == 0; 4584} 4585EOF 4586if compile_prog "" "" ; then 4587 getauxval=yes 4588fi 4589 4590######################################## 4591# check if ccache is interfering with 4592# semantic analysis of macros 4593 4594unset CCACHE_CPP2 4595ccache_cpp2=no 4596cat > $TMPC << EOF 4597static const int Z = 1; 4598#define fn() ({ Z; }) 4599#define TAUT(X) ((X) == Z) 4600#define PAREN(X, Y) (X == Y) 4601#define ID(X) (X) 4602int main(int argc, char *argv[]) 4603{ 4604 int x = 0, y = 0; 4605 x = ID(x); 4606 x = fn(); 4607 fn(); 4608 if (PAREN(x, y)) return 0; 4609 if (TAUT(Z)) return 0; 4610 return 0; 4611} 4612EOF 4613 4614if ! compile_object "-Werror"; then 4615 ccache_cpp2=yes 4616fi 4617 4618################################################# 4619# clang does not support glibc + FORTIFY_SOURCE. 4620 4621if test "$fortify_source" != "no"; then 4622 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then 4623 fortify_source="no"; 4624 elif test -n "$cxx" && 4625 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then 4626 fortify_source="no"; 4627 else 4628 fortify_source="yes" 4629 fi 4630fi 4631 4632########################################## 4633# check if struct fsxattr is available via linux/fs.h 4634 4635have_fsxattr=no 4636cat > $TMPC << EOF 4637#include <linux/fs.h> 4638struct fsxattr foo; 4639int main(void) { 4640 return 0; 4641} 4642EOF 4643if compile_prog "" "" ; then 4644 have_fsxattr=yes 4645fi 4646 4647########################################## 4648# check if rtnetlink.h exists and is useful 4649have_rtnetlink=no 4650cat > $TMPC << EOF 4651#include <linux/rtnetlink.h> 4652int main(void) { 4653 return IFLA_PROTO_DOWN; 4654} 4655EOF 4656if compile_prog "" "" ; then 4657 have_rtnetlink=yes 4658fi 4659 4660################################################# 4661# Sparc implicitly links with --relax, which is 4662# incompatible with -r, so --no-relax should be 4663# given. It does no harm to give it on other 4664# platforms too. 4665 4666# Note: the prototype is needed since QEMU_CFLAGS 4667# contains -Wmissing-prototypes 4668cat > $TMPC << EOF 4669extern int foo(void); 4670int foo(void) { return 0; } 4671EOF 4672if ! compile_object ""; then 4673 error_exit "Failed to compile object file for LD_REL_FLAGS test" 4674fi 4675if do_cc -nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then 4676 LD_REL_FLAGS="-Wl,--no-relax" 4677fi 4678 4679########################################## 4680# End of CC checks 4681# After here, no more $cc or $ld runs 4682 4683if test "$gcov" = "yes" ; then 4684 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 4685 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 4686elif test "$fortify_source" = "yes" ; then 4687 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 4688elif test "$debug" = "no"; then 4689 CFLAGS="-O2 $CFLAGS" 4690fi 4691 4692########################################## 4693# Do we have libnfs 4694if test "$libnfs" != "no" ; then 4695 if $pkg_config --atleast-version=1.9.3 libnfs; then 4696 libnfs="yes" 4697 libnfs_libs=$($pkg_config --libs libnfs) 4698 else 4699 if test "$libnfs" = "yes" ; then 4700 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 4701 fi 4702 libnfs="no" 4703 fi 4704fi 4705 4706# Now we've finished running tests it's OK to add -Werror to the compiler flags 4707if test "$werror" = "yes"; then 4708 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 4709fi 4710 4711if test "$solaris" = "no" ; then 4712 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 4713 LDFLAGS="-Wl,--warn-common $LDFLAGS" 4714 fi 4715fi 4716 4717# test if pod2man has --utf8 option 4718if pod2man --help | grep -q utf8; then 4719 POD2MAN="pod2man --utf8" 4720else 4721 POD2MAN="pod2man" 4722fi 4723 4724# Use ASLR, no-SEH and DEP if available 4725if test "$mingw32" = "yes" ; then 4726 for flag in --dynamicbase --no-seh --nxcompat; do 4727 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 4728 LDFLAGS="-Wl,$flag $LDFLAGS" 4729 fi 4730 done 4731fi 4732 4733qemu_confdir=$sysconfdir$confsuffix 4734qemu_moddir=$libdir$confsuffix 4735qemu_datadir=$datadir$confsuffix 4736qemu_localedir="$datadir/locale" 4737 4738tools="" 4739if test "$want_tools" = "yes" ; then 4740 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 4741 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 4742 tools="qemu-nbd\$(EXESUF) $tools" 4743 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" 4744 fi 4745fi 4746if test "$softmmu" = yes ; then 4747 if test "$virtfs" != no ; then 4748 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 4749 virtfs=yes 4750 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 4751 else 4752 if test "$virtfs" = yes; then 4753 error_exit "VirtFS is supported only on Linux and requires libcap devel and libattr devel" 4754 fi 4755 virtfs=no 4756 fi 4757 fi 4758fi 4759 4760# Probe for guest agent support/options 4761 4762if [ "$guest_agent" != "no" ]; then 4763 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 4764 tools="qemu-ga $tools" 4765 guest_agent=yes 4766 elif [ "$guest_agent" != yes ]; then 4767 guest_agent=no 4768 else 4769 error_exit "Guest agent is not supported on this platform" 4770 fi 4771fi 4772 4773# Guest agent Window MSI package 4774 4775if test "$guest_agent" != yes; then 4776 if test "$guest_agent_msi" = yes; then 4777 error_exit "MSI guest agent package requires guest agent enabled" 4778 fi 4779 guest_agent_msi=no 4780elif test "$mingw32" != "yes"; then 4781 if test "$guest_agent_msi" = "yes"; then 4782 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 4783 fi 4784 guest_agent_msi=no 4785elif ! has wixl; then 4786 if test "$guest_agent_msi" = "yes"; then 4787 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 4788 fi 4789 guest_agent_msi=no 4790else 4791 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't 4792 # disabled explicitly 4793 if test "$guest_agent_msi" != "no"; then 4794 guest_agent_msi=yes 4795 fi 4796fi 4797 4798if test "$guest_agent_msi" = "yes"; then 4799 if test "$guest_agent_with_vss" = "yes"; then 4800 QEMU_GA_MSI_WITH_VSS="-D InstallVss" 4801 fi 4802 4803 if test "$QEMU_GA_MANUFACTURER" = ""; then 4804 QEMU_GA_MANUFACTURER=QEMU 4805 fi 4806 4807 if test "$QEMU_GA_DISTRO" = ""; then 4808 QEMU_GA_DISTRO=Linux 4809 fi 4810 4811 if test "$QEMU_GA_VERSION" = ""; then 4812 QEMU_GA_VERSION=$(cat $source_path/VERSION) 4813 fi 4814 4815 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin" 4816 4817 case "$cpu" in 4818 x86_64) 4819 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 4820 ;; 4821 i386) 4822 QEMU_GA_MSI_ARCH="-D Arch=32" 4823 ;; 4824 *) 4825 error_exit "CPU $cpu not supported for building installation package" 4826 ;; 4827 esac 4828fi 4829 4830# Mac OS X ships with a broken assembler 4831roms= 4832if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 4833 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 4834 "$softmmu" = yes ; then 4835 # Different host OS linkers have different ideas about the name of the ELF 4836 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd 4837 # variant; and Windows uses i386pe. 4838 for emu in elf_i386 elf_i386_fbsd i386pe; do 4839 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then 4840 ld_i386_emulation="$emu" 4841 roms="optionrom" 4842 break 4843 fi 4844 done 4845fi 4846if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 4847 roms="$roms spapr-rtas" 4848fi 4849 4850if test "$cpu" = "s390x" ; then 4851 roms="$roms s390-ccw" 4852fi 4853 4854# Probe for the need for relocating the user-only binary. 4855if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then 4856 textseg_addr= 4857 case "$cpu" in 4858 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 4859 # ??? Rationale for choosing this address 4860 textseg_addr=0x60000000 4861 ;; 4862 mips) 4863 # A 256M aligned address, high in the address space, with enough 4864 # room for the code_gen_buffer above it before the stack. 4865 textseg_addr=0x60000000 4866 ;; 4867 esac 4868 if [ -n "$textseg_addr" ]; then 4869 cat > $TMPC <<EOF 4870 int main(void) { return 0; } 4871EOF 4872 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 4873 if ! compile_prog "" "$textseg_ldflags"; then 4874 # In case ld does not support -Ttext-segment, edit the default linker 4875 # script via sed to set the .text start addr. This is needed on FreeBSD 4876 # at least. 4877 if ! $ld --verbose >/dev/null 2>&1; then 4878 error_exit \ 4879 "We need to link the QEMU user mode binaries at a" \ 4880 "specific text address. Unfortunately your linker" \ 4881 "doesn't support either the -Ttext-segment option or" \ 4882 "printing the default linker script with --verbose." \ 4883 "If you don't want the user mode binaries, pass the" \ 4884 "--disable-user option to configure." 4885 fi 4886 4887 $ld --verbose | sed \ 4888 -e '1,/==================================================/d' \ 4889 -e '/==================================================/,$d' \ 4890 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 4891 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 4892 textseg_ldflags="-Wl,-T../config-host.ld" 4893 fi 4894 fi 4895fi 4896 4897echo_version() { 4898 if test "$1" = "yes" ; then 4899 echo "($2)" 4900 fi 4901} 4902 4903# prepend pixman and ftd flags after all config tests are done 4904QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 4905libs_softmmu="$pixman_libs $libs_softmmu" 4906 4907echo "Install prefix $prefix" 4908echo "BIOS directory $(eval echo $qemu_datadir)" 4909echo "binary directory $(eval echo $bindir)" 4910echo "library directory $(eval echo $libdir)" 4911echo "module directory $(eval echo $qemu_moddir)" 4912echo "libexec directory $(eval echo $libexecdir)" 4913echo "include directory $(eval echo $includedir)" 4914echo "config directory $(eval echo $sysconfdir)" 4915if test "$mingw32" = "no" ; then 4916echo "local state directory $(eval echo $local_statedir)" 4917echo "Manual directory $(eval echo $mandir)" 4918echo "ELF interp prefix $interp_prefix" 4919else 4920echo "local state directory queried at runtime" 4921echo "Windows SDK $win_sdk" 4922fi 4923echo "Source path $source_path" 4924echo "C compiler $cc" 4925echo "Host C compiler $host_cc" 4926echo "C++ compiler $cxx" 4927echo "Objective-C compiler $objcc" 4928echo "ARFLAGS $ARFLAGS" 4929echo "CFLAGS $CFLAGS" 4930echo "QEMU_CFLAGS $QEMU_CFLAGS" 4931echo "LDFLAGS $LDFLAGS" 4932echo "make $make" 4933echo "install $install" 4934echo "python $python" 4935if test "$slirp" = "yes" ; then 4936 echo "smbd $smbd" 4937fi 4938echo "module support $modules" 4939echo "host CPU $cpu" 4940echo "host big endian $bigendian" 4941echo "target list $target_list" 4942echo "tcg debug enabled $debug_tcg" 4943echo "gprof enabled $gprof" 4944echo "sparse enabled $sparse" 4945echo "strip binaries $strip_opt" 4946echo "profiler $profiler" 4947echo "static build $static" 4948if test "$darwin" = "yes" ; then 4949 echo "Cocoa support $cocoa" 4950fi 4951echo "pixman $pixman" 4952echo "SDL support $sdl $(echo_version $sdl $sdlversion)" 4953echo "GTK support $gtk $(echo_version $gtk $gtk_version)" 4954echo "GTK GL support $gtk_gl" 4955echo "VTE support $vte $(echo_version $vte $vteversion)" 4956echo "TLS priority $tls_priority" 4957echo "GNUTLS support $gnutls" 4958echo "GNUTLS rnd $gnutls_rnd" 4959echo "libgcrypt $gcrypt" 4960echo "libgcrypt kdf $gcrypt_kdf" 4961echo "nettle $nettle $(echo_version $nettle $nettle_version)" 4962echo "nettle kdf $nettle_kdf" 4963echo "libtasn1 $tasn1" 4964echo "curses support $curses" 4965echo "virgl support $virglrenderer" 4966echo "curl support $curl" 4967echo "mingw32 support $mingw32" 4968echo "Audio drivers $audio_drv_list" 4969echo "Block whitelist (rw) $block_drv_rw_whitelist" 4970echo "Block whitelist (ro) $block_drv_ro_whitelist" 4971echo "VirtFS support $virtfs" 4972echo "VNC support $vnc" 4973if test "$vnc" = "yes" ; then 4974 echo "VNC SASL support $vnc_sasl" 4975 echo "VNC JPEG support $vnc_jpeg" 4976 echo "VNC PNG support $vnc_png" 4977fi 4978if test -n "$sparc_cpu"; then 4979 echo "Target Sparc Arch $sparc_cpu" 4980fi 4981echo "xen support $xen" 4982if test "$xen" = "yes" ; then 4983 echo "xen ctrl version $xen_ctrl_version" 4984 echo "pv dom build $xen_pv_domain_build" 4985fi 4986echo "brlapi support $brlapi" 4987echo "bluez support $bluez" 4988echo "Documentation $docs" 4989echo "PIE $pie" 4990echo "vde support $vde" 4991echo "netmap support $netmap" 4992echo "Linux AIO support $linux_aio" 4993echo "ATTR/XATTR support $attr" 4994echo "Install blobs $blobs" 4995echo "KVM support $kvm" 4996echo "RDMA support $rdma" 4997echo "TCG interpreter $tcg_interpreter" 4998echo "fdt support $fdt" 4999echo "preadv support $preadv" 5000echo "fdatasync $fdatasync" 5001echo "madvise $madvise" 5002echo "posix_madvise $posix_madvise" 5003echo "libcap-ng support $cap_ng" 5004echo "vhost-net support $vhost_net" 5005echo "vhost-scsi support $vhost_scsi" 5006echo "vhost-vsock support $vhost_vsock" 5007echo "Trace backends $trace_backends" 5008if have_backend "simple"; then 5009echo "Trace output file $trace_file-<pid>" 5010fi 5011echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)" 5012echo "rbd support $rbd" 5013echo "xfsctl support $xfs" 5014echo "smartcard support $smartcard" 5015echo "libusb $libusb" 5016echo "usb net redir $usb_redir" 5017echo "OpenGL support $opengl" 5018echo "OpenGL dmabufs $opengl_dmabuf" 5019echo "libiscsi support $libiscsi" 5020echo "libnfs support $libnfs" 5021echo "build guest agent $guest_agent" 5022echo "QGA VSS support $guest_agent_with_vss" 5023echo "QGA w32 disk info $guest_agent_ntddscsi" 5024echo "QGA MSI support $guest_agent_msi" 5025echo "seccomp support $seccomp" 5026echo "coroutine backend $coroutine" 5027echo "coroutine pool $coroutine_pool" 5028echo "debug stack usage $debug_stack_usage" 5029echo "GlusterFS support $glusterfs" 5030echo "Archipelago support $archipelago" 5031echo "gcov $gcov_tool" 5032echo "gcov enabled $gcov" 5033echo "TPM support $tpm" 5034echo "libssh2 support $libssh2" 5035echo "TPM passthrough $tpm_passthrough" 5036echo "QOM debugging $qom_cast_debug" 5037echo "lzo support $lzo" 5038echo "snappy support $snappy" 5039echo "bzip2 support $bzip2" 5040echo "NUMA host support $numa" 5041echo "tcmalloc support $tcmalloc" 5042echo "jemalloc support $jemalloc" 5043echo "avx2 optimization $avx2_opt" 5044echo "replication support $replication" 5045 5046if test "$sdl_too_old" = "yes"; then 5047echo "-> Your SDL version is too old - please upgrade to have SDL support" 5048fi 5049 5050config_host_mak="config-host.mak" 5051 5052echo "# Automatically generated by configure - do not modify" >config-all-disas.mak 5053 5054echo "# Automatically generated by configure - do not modify" > $config_host_mak 5055echo >> $config_host_mak 5056 5057echo all: >> $config_host_mak 5058echo "prefix=$prefix" >> $config_host_mak 5059echo "bindir=$bindir" >> $config_host_mak 5060echo "libdir=$libdir" >> $config_host_mak 5061echo "libexecdir=$libexecdir" >> $config_host_mak 5062echo "includedir=$includedir" >> $config_host_mak 5063echo "mandir=$mandir" >> $config_host_mak 5064echo "sysconfdir=$sysconfdir" >> $config_host_mak 5065echo "qemu_confdir=$qemu_confdir" >> $config_host_mak 5066echo "qemu_datadir=$qemu_datadir" >> $config_host_mak 5067echo "qemu_docdir=$qemu_docdir" >> $config_host_mak 5068echo "qemu_moddir=$qemu_moddir" >> $config_host_mak 5069if test "$mingw32" = "no" ; then 5070 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 5071fi 5072echo "qemu_helperdir=$libexecdir" >> $config_host_mak 5073echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 5074echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 5075echo "qemu_localedir=$qemu_localedir" >> $config_host_mak 5076echo "libs_softmmu=$libs_softmmu" >> $config_host_mak 5077 5078echo "ARCH=$ARCH" >> $config_host_mak 5079 5080if test "$debug_tcg" = "yes" ; then 5081 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 5082fi 5083if test "$strip_opt" = "yes" ; then 5084 echo "STRIP=${strip}" >> $config_host_mak 5085fi 5086if test "$bigendian" = "yes" ; then 5087 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 5088fi 5089if test "$mingw32" = "yes" ; then 5090 echo "CONFIG_WIN32=y" >> $config_host_mak 5091 rc_version=$(cat $source_path/VERSION) 5092 version_major=${rc_version%%.*} 5093 rc_version=${rc_version#*.} 5094 version_minor=${rc_version%%.*} 5095 rc_version=${rc_version#*.} 5096 version_subminor=${rc_version%%.*} 5097 version_micro=0 5098 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 5099 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 5100 if test "$guest_agent_with_vss" = "yes" ; then 5101 echo "CONFIG_QGA_VSS=y" >> $config_host_mak 5102 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak 5103 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 5104 fi 5105 if test "$guest_agent_ntddscsi" = "yes" ; then 5106 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak 5107 fi 5108 if test "$guest_agent_msi" = "yes"; then 5109 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 5110 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 5111 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 5112 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 5113 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 5114 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 5115 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 5116 fi 5117else 5118 echo "CONFIG_POSIX=y" >> $config_host_mak 5119fi 5120 5121if test "$linux" = "yes" ; then 5122 echo "CONFIG_LINUX=y" >> $config_host_mak 5123fi 5124 5125if test "$darwin" = "yes" ; then 5126 echo "CONFIG_DARWIN=y" >> $config_host_mak 5127fi 5128 5129if test "$aix" = "yes" ; then 5130 echo "CONFIG_AIX=y" >> $config_host_mak 5131fi 5132 5133if test "$solaris" = "yes" ; then 5134 echo "CONFIG_SOLARIS=y" >> $config_host_mak 5135 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 5136 if test "$needs_libsunmath" = "yes" ; then 5137 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 5138 fi 5139fi 5140if test "$haiku" = "yes" ; then 5141 echo "CONFIG_HAIKU=y" >> $config_host_mak 5142fi 5143if test "$static" = "yes" ; then 5144 echo "CONFIG_STATIC=y" >> $config_host_mak 5145fi 5146if test "$profiler" = "yes" ; then 5147 echo "CONFIG_PROFILER=y" >> $config_host_mak 5148fi 5149if test "$slirp" = "yes" ; then 5150 echo "CONFIG_SLIRP=y" >> $config_host_mak 5151 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 5152fi 5153if test "$vde" = "yes" ; then 5154 echo "CONFIG_VDE=y" >> $config_host_mak 5155fi 5156if test "$netmap" = "yes" ; then 5157 echo "CONFIG_NETMAP=y" >> $config_host_mak 5158fi 5159if test "$l2tpv3" = "yes" ; then 5160 echo "CONFIG_L2TPV3=y" >> $config_host_mak 5161fi 5162if test "$cap_ng" = "yes" ; then 5163 echo "CONFIG_LIBCAP=y" >> $config_host_mak 5164fi 5165echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 5166for drv in $audio_drv_list; do 5167 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]') 5168 echo "$def=y" >> $config_host_mak 5169done 5170if test "$audio_pt_int" = "yes" ; then 5171 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 5172fi 5173if test "$audio_win_int" = "yes" ; then 5174 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 5175fi 5176echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 5177echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 5178if test "$vnc" = "yes" ; then 5179 echo "CONFIG_VNC=y" >> $config_host_mak 5180fi 5181if test "$vnc_sasl" = "yes" ; then 5182 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 5183fi 5184if test "$vnc_jpeg" = "yes" ; then 5185 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 5186fi 5187if test "$vnc_png" = "yes" ; then 5188 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 5189fi 5190if test "$fnmatch" = "yes" ; then 5191 echo "CONFIG_FNMATCH=y" >> $config_host_mak 5192fi 5193if test "$xfs" = "yes" ; then 5194 echo "CONFIG_XFS=y" >> $config_host_mak 5195fi 5196qemu_version=$(head $source_path/VERSION) 5197echo "VERSION=$qemu_version" >>$config_host_mak 5198echo "PKGVERSION=$pkgversion" >>$config_host_mak 5199echo "SRC_PATH=$source_path" >> $config_host_mak 5200echo "TARGET_DIRS=$target_list" >> $config_host_mak 5201if [ "$docs" = "yes" ] ; then 5202 echo "BUILD_DOCS=yes" >> $config_host_mak 5203fi 5204if test "$modules" = "yes"; then 5205 # $shacmd can generate a hash started with digit, which the compiler doesn't 5206 # like as an symbol. So prefix it with an underscore 5207 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak 5208 echo "CONFIG_MODULES=y" >> $config_host_mak 5209fi 5210if test "$sdl" = "yes" ; then 5211 echo "CONFIG_SDL=y" >> $config_host_mak 5212 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 5213 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 5214fi 5215if test "$cocoa" = "yes" ; then 5216 echo "CONFIG_COCOA=y" >> $config_host_mak 5217fi 5218if test "$curses" = "yes" ; then 5219 echo "CONFIG_CURSES=y" >> $config_host_mak 5220fi 5221if test "$utimens" = "yes" ; then 5222 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 5223fi 5224if test "$pipe2" = "yes" ; then 5225 echo "CONFIG_PIPE2=y" >> $config_host_mak 5226fi 5227if test "$accept4" = "yes" ; then 5228 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 5229fi 5230if test "$splice" = "yes" ; then 5231 echo "CONFIG_SPLICE=y" >> $config_host_mak 5232fi 5233if test "$eventfd" = "yes" ; then 5234 echo "CONFIG_EVENTFD=y" >> $config_host_mak 5235fi 5236if test "$memfd" = "yes" ; then 5237 echo "CONFIG_MEMFD=y" >> $config_host_mak 5238fi 5239if test "$fallocate" = "yes" ; then 5240 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 5241fi 5242if test "$fallocate_punch_hole" = "yes" ; then 5243 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 5244fi 5245if test "$fallocate_zero_range" = "yes" ; then 5246 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 5247fi 5248if test "$posix_fallocate" = "yes" ; then 5249 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 5250fi 5251if test "$sync_file_range" = "yes" ; then 5252 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 5253fi 5254if test "$fiemap" = "yes" ; then 5255 echo "CONFIG_FIEMAP=y" >> $config_host_mak 5256fi 5257if test "$dup3" = "yes" ; then 5258 echo "CONFIG_DUP3=y" >> $config_host_mak 5259fi 5260if test "$ppoll" = "yes" ; then 5261 echo "CONFIG_PPOLL=y" >> $config_host_mak 5262fi 5263if test "$prctl_pr_set_timerslack" = "yes" ; then 5264 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 5265fi 5266if test "$epoll" = "yes" ; then 5267 echo "CONFIG_EPOLL=y" >> $config_host_mak 5268fi 5269if test "$epoll_create1" = "yes" ; then 5270 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 5271fi 5272if test "$sendfile" = "yes" ; then 5273 echo "CONFIG_SENDFILE=y" >> $config_host_mak 5274fi 5275if test "$timerfd" = "yes" ; then 5276 echo "CONFIG_TIMERFD=y" >> $config_host_mak 5277fi 5278if test "$setns" = "yes" ; then 5279 echo "CONFIG_SETNS=y" >> $config_host_mak 5280fi 5281if test "$clock_adjtime" = "yes" ; then 5282 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak 5283fi 5284if test "$syncfs" = "yes" ; then 5285 echo "CONFIG_SYNCFS=y" >> $config_host_mak 5286fi 5287if test "$inotify" = "yes" ; then 5288 echo "CONFIG_INOTIFY=y" >> $config_host_mak 5289fi 5290if test "$inotify1" = "yes" ; then 5291 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 5292fi 5293if test "$byteswap_h" = "yes" ; then 5294 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 5295fi 5296if test "$bswap_h" = "yes" ; then 5297 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 5298fi 5299if test "$curl" = "yes" ; then 5300 echo "CONFIG_CURL=m" >> $config_host_mak 5301 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 5302 echo "CURL_LIBS=$curl_libs" >> $config_host_mak 5303fi 5304if test "$brlapi" = "yes" ; then 5305 echo "CONFIG_BRLAPI=y" >> $config_host_mak 5306fi 5307if test "$bluez" = "yes" ; then 5308 echo "CONFIG_BLUEZ=y" >> $config_host_mak 5309 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 5310fi 5311if test "$glib_subprocess" = "yes" ; then 5312 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 5313fi 5314if test "$gtk" = "yes" ; then 5315 echo "CONFIG_GTK=y" >> $config_host_mak 5316 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 5317 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 5318 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak 5319 if test "$gtk_gl" = "yes" ; then 5320 echo "CONFIG_GTK_GL=y" >> $config_host_mak 5321 fi 5322fi 5323echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak 5324if test "$gnutls" = "yes" ; then 5325 echo "CONFIG_GNUTLS=y" >> $config_host_mak 5326fi 5327if test "$gnutls_rnd" = "yes" ; then 5328 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak 5329fi 5330if test "$gcrypt" = "yes" ; then 5331 echo "CONFIG_GCRYPT=y" >> $config_host_mak 5332 if test "$gcrypt_kdf" = "yes" ; then 5333 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak 5334 fi 5335fi 5336if test "$nettle" = "yes" ; then 5337 echo "CONFIG_NETTLE=y" >> $config_host_mak 5338 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak 5339 if test "$nettle_kdf" = "yes" ; then 5340 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak 5341 fi 5342fi 5343if test "$tasn1" = "yes" ; then 5344 echo "CONFIG_TASN1=y" >> $config_host_mak 5345fi 5346if test "$have_ifaddrs_h" = "yes" ; then 5347 echo "HAVE_IFADDRS_H=y" >> $config_host_mak 5348fi 5349if test "$have_broken_size_max" = "yes" ; then 5350 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak 5351fi 5352 5353# Work around a system header bug with some kernel/XFS header 5354# versions where they both try to define 'struct fsxattr': 5355# xfs headers will not try to redefine structs from linux headers 5356# if this macro is set. 5357if test "$have_fsxattr" = "yes" ; then 5358 echo "HAVE_FSXATTR=y" >> $config_host_mak 5359fi 5360if test "$vte" = "yes" ; then 5361 echo "CONFIG_VTE=y" >> $config_host_mak 5362 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 5363fi 5364if test "$virglrenderer" = "yes" ; then 5365 echo "CONFIG_VIRGL=y" >> $config_host_mak 5366 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak 5367 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak 5368fi 5369if test "$xen" = "yes" ; then 5370 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 5371 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 5372 if test "$xen_pv_domain_build" = "yes" ; then 5373 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak 5374 fi 5375fi 5376if test "$linux_aio" = "yes" ; then 5377 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 5378fi 5379if test "$attr" = "yes" ; then 5380 echo "CONFIG_ATTR=y" >> $config_host_mak 5381fi 5382if test "$libattr" = "yes" ; then 5383 echo "CONFIG_LIBATTR=y" >> $config_host_mak 5384fi 5385if test "$virtfs" = "yes" ; then 5386 echo "CONFIG_VIRTFS=y" >> $config_host_mak 5387fi 5388if test "$vhost_scsi" = "yes" ; then 5389 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 5390fi 5391if test "$vhost_net" = "yes" ; then 5392 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 5393fi 5394if test "$vhost_vsock" = "yes" ; then 5395 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak 5396fi 5397if test "$blobs" = "yes" ; then 5398 echo "INSTALL_BLOBS=yes" >> $config_host_mak 5399fi 5400if test "$iovec" = "yes" ; then 5401 echo "CONFIG_IOVEC=y" >> $config_host_mak 5402fi 5403if test "$preadv" = "yes" ; then 5404 echo "CONFIG_PREADV=y" >> $config_host_mak 5405fi 5406if test "$fdt" = "yes" ; then 5407 echo "CONFIG_FDT=y" >> $config_host_mak 5408fi 5409if test "$signalfd" = "yes" ; then 5410 echo "CONFIG_SIGNALFD=y" >> $config_host_mak 5411fi 5412if test "$tcg_interpreter" = "yes" ; then 5413 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 5414fi 5415if test "$fdatasync" = "yes" ; then 5416 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 5417fi 5418if test "$madvise" = "yes" ; then 5419 echo "CONFIG_MADVISE=y" >> $config_host_mak 5420fi 5421if test "$posix_madvise" = "yes" ; then 5422 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 5423fi 5424 5425if test "$spice" = "yes" ; then 5426 echo "CONFIG_SPICE=y" >> $config_host_mak 5427fi 5428 5429if test "$smartcard" = "yes" ; then 5430 echo "CONFIG_SMARTCARD=y" >> $config_host_mak 5431fi 5432 5433if test "$libusb" = "yes" ; then 5434 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 5435fi 5436 5437if test "$usb_redir" = "yes" ; then 5438 echo "CONFIG_USB_REDIR=y" >> $config_host_mak 5439fi 5440 5441if test "$opengl" = "yes" ; then 5442 echo "CONFIG_OPENGL=y" >> $config_host_mak 5443 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak 5444 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 5445 if test "$opengl_dmabuf" = "yes" ; then 5446 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak 5447 fi 5448fi 5449 5450if test "$avx2_opt" = "yes" ; then 5451 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak 5452fi 5453 5454if test "$lzo" = "yes" ; then 5455 echo "CONFIG_LZO=y" >> $config_host_mak 5456fi 5457 5458if test "$snappy" = "yes" ; then 5459 echo "CONFIG_SNAPPY=y" >> $config_host_mak 5460fi 5461 5462if test "$bzip2" = "yes" ; then 5463 echo "CONFIG_BZIP2=y" >> $config_host_mak 5464 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 5465fi 5466 5467if test "$libiscsi" = "yes" ; then 5468 echo "CONFIG_LIBISCSI=m" >> $config_host_mak 5469 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 5470 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 5471fi 5472 5473if test "$libnfs" = "yes" ; then 5474 echo "CONFIG_LIBNFS=m" >> $config_host_mak 5475 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak 5476fi 5477 5478if test "$seccomp" = "yes"; then 5479 echo "CONFIG_SECCOMP=y" >> $config_host_mak 5480fi 5481 5482# XXX: suppress that 5483if [ "$bsd" = "yes" ] ; then 5484 echo "CONFIG_BSD=y" >> $config_host_mak 5485fi 5486 5487if test "$localtime_r" = "yes" ; then 5488 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak 5489fi 5490if test "$qom_cast_debug" = "yes" ; then 5491 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 5492fi 5493if test "$rbd" = "yes" ; then 5494 echo "CONFIG_RBD=m" >> $config_host_mak 5495 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 5496 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 5497fi 5498 5499echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 5500if test "$coroutine_pool" = "yes" ; then 5501 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 5502else 5503 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 5504fi 5505 5506if test "$debug_stack_usage" = "yes" ; then 5507 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak 5508fi 5509 5510if test "$open_by_handle_at" = "yes" ; then 5511 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 5512fi 5513 5514if test "$linux_magic_h" = "yes" ; then 5515 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 5516fi 5517 5518if test "$pragma_diagnostic_available" = "yes" ; then 5519 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 5520fi 5521 5522if test "$valgrind_h" = "yes" ; then 5523 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 5524fi 5525 5526if test "$has_environ" = "yes" ; then 5527 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 5528fi 5529 5530if test "$cpuid_h" = "yes" ; then 5531 echo "CONFIG_CPUID_H=y" >> $config_host_mak 5532fi 5533 5534if test "$int128" = "yes" ; then 5535 echo "CONFIG_INT128=y" >> $config_host_mak 5536fi 5537 5538if test "$atomic128" = "yes" ; then 5539 echo "CONFIG_ATOMIC128=y" >> $config_host_mak 5540fi 5541 5542if test "$atomic64" = "yes" ; then 5543 echo "CONFIG_ATOMIC64=y" >> $config_host_mak 5544fi 5545 5546if test "$getauxval" = "yes" ; then 5547 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 5548fi 5549 5550if test "$glusterfs" = "yes" ; then 5551 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 5552 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 5553 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 5554fi 5555 5556if test "$glusterfs_xlator_opt" = "yes" ; then 5557 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak 5558fi 5559 5560if test "$glusterfs_discard" = "yes" ; then 5561 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 5562fi 5563 5564if test "$glusterfs_zerofill" = "yes" ; then 5565 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 5566fi 5567 5568if test "$archipelago" = "yes" ; then 5569 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak 5570 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak 5571fi 5572 5573if test "$libssh2" = "yes" ; then 5574 echo "CONFIG_LIBSSH2=m" >> $config_host_mak 5575 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 5576 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 5577fi 5578 5579# USB host support 5580if test "$libusb" = "yes"; then 5581 echo "HOST_USB=libusb legacy" >> $config_host_mak 5582else 5583 echo "HOST_USB=stub" >> $config_host_mak 5584fi 5585 5586# TPM passthrough support? 5587if test "$tpm" = "yes"; then 5588 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 5589 if test "$tpm_passthrough" = "yes"; then 5590 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 5591 fi 5592fi 5593 5594echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 5595if have_backend "nop"; then 5596 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 5597fi 5598if have_backend "simple"; then 5599 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 5600 # Set the appropriate trace file. 5601 trace_file="\"$trace_file-\" FMT_pid" 5602fi 5603if have_backend "log"; then 5604 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak 5605fi 5606if have_backend "ust"; then 5607 echo "CONFIG_TRACE_UST=y" >> $config_host_mak 5608fi 5609if have_backend "dtrace"; then 5610 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 5611 if test "$trace_backend_stap" = "yes" ; then 5612 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 5613 fi 5614fi 5615if have_backend "ftrace"; then 5616 if test "$linux" = "yes" ; then 5617 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 5618 else 5619 feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 5620 fi 5621fi 5622if have_backend "syslog"; then 5623 if test "$posix_syslog" = "yes" ; then 5624 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak 5625 else 5626 feature_not_found "syslog(trace backend)" "syslog not available" 5627 fi 5628fi 5629echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 5630 5631if test "$rdma" = "yes" ; then 5632 echo "CONFIG_RDMA=y" >> $config_host_mak 5633fi 5634 5635if test "$have_rtnetlink" = "yes" ; then 5636 echo "CONFIG_RTNETLINK=y" >> $config_host_mak 5637fi 5638 5639if test "$replication" = "yes" ; then 5640 echo "CONFIG_REPLICATION=y" >> $config_host_mak 5641fi 5642 5643# Hold two types of flag: 5644# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 5645# a thread we have a handle to 5646# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 5647# platform 5648if test "$pthread_setname_np" = "yes" ; then 5649 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 5650 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 5651fi 5652 5653if test "$tcg_interpreter" = "yes"; then 5654 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 5655elif test "$ARCH" = "sparc64" ; then 5656 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 5657elif test "$ARCH" = "s390x" ; then 5658 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 5659elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 5660 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 5661elif test "$ARCH" = "ppc64" ; then 5662 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 5663else 5664 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 5665fi 5666QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 5667 5668echo "TOOLS=$tools" >> $config_host_mak 5669echo "ROMS=$roms" >> $config_host_mak 5670echo "MAKE=$make" >> $config_host_mak 5671echo "INSTALL=$install" >> $config_host_mak 5672echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 5673echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 5674echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 5675echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 5676echo "PYTHON=$python" >> $config_host_mak 5677echo "CC=$cc" >> $config_host_mak 5678if $iasl -h > /dev/null 2>&1; then 5679 echo "IASL=$iasl" >> $config_host_mak 5680fi 5681echo "CC_I386=$cc_i386" >> $config_host_mak 5682echo "HOST_CC=$host_cc" >> $config_host_mak 5683echo "CXX=$cxx" >> $config_host_mak 5684echo "OBJCC=$objcc" >> $config_host_mak 5685echo "AR=$ar" >> $config_host_mak 5686echo "ARFLAGS=$ARFLAGS" >> $config_host_mak 5687echo "AS=$as" >> $config_host_mak 5688echo "CCAS=$ccas" >> $config_host_mak 5689echo "CPP=$cpp" >> $config_host_mak 5690echo "OBJCOPY=$objcopy" >> $config_host_mak 5691echo "LD=$ld" >> $config_host_mak 5692echo "NM=$nm" >> $config_host_mak 5693echo "WINDRES=$windres" >> $config_host_mak 5694echo "CFLAGS=$CFLAGS" >> $config_host_mak 5695echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 5696echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 5697echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 5698if test "$sparse" = "yes" ; then 5699 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 5700 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 5701 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 5702 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 5703 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 5704fi 5705if test "$cross_prefix" != ""; then 5706 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 5707else 5708 echo "AUTOCONF_HOST := " >> $config_host_mak 5709fi 5710echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 5711echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 5712echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak 5713echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak 5714echo "LIBS+=$LIBS" >> $config_host_mak 5715echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 5716echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak 5717echo "EXESUF=$EXESUF" >> $config_host_mak 5718echo "DSOSUF=$DSOSUF" >> $config_host_mak 5719echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 5720echo "LIBS_QGA+=$libs_qga" >> $config_host_mak 5721echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak 5722echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak 5723echo "POD2MAN=$POD2MAN" >> $config_host_mak 5724echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 5725if test "$gcov" = "yes" ; then 5726 echo "CONFIG_GCOV=y" >> $config_host_mak 5727 echo "GCOV=$gcov_tool" >> $config_host_mak 5728fi 5729 5730# use included Linux headers 5731if test "$linux" = "yes" ; then 5732 mkdir -p linux-headers 5733 case "$cpu" in 5734 i386|x86_64|x32) 5735 linux_arch=x86 5736 ;; 5737 ppcemb|ppc|ppc64) 5738 linux_arch=powerpc 5739 ;; 5740 s390x) 5741 linux_arch=s390 5742 ;; 5743 aarch64) 5744 linux_arch=arm64 5745 ;; 5746 mips64) 5747 linux_arch=mips 5748 ;; 5749 *) 5750 # For most CPUs the kernel architecture name and QEMU CPU name match. 5751 linux_arch="$cpu" 5752 ;; 5753 esac 5754 # For non-KVM architectures we will not have asm headers 5755 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 5756 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 5757 fi 5758fi 5759 5760for target in $target_list; do 5761target_dir="$target" 5762config_target_mak=$target_dir/config-target.mak 5763target_name=$(echo $target | cut -d '-' -f 1) 5764target_bigendian="no" 5765 5766case "$target_name" in 5767 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 5768 target_bigendian=yes 5769 ;; 5770esac 5771target_softmmu="no" 5772target_user_only="no" 5773target_linux_user="no" 5774target_bsd_user="no" 5775case "$target" in 5776 ${target_name}-softmmu) 5777 target_softmmu="yes" 5778 ;; 5779 ${target_name}-linux-user) 5780 if test "$linux" != "yes" ; then 5781 error_exit "Target '$target' is only available on a Linux host" 5782 fi 5783 target_user_only="yes" 5784 target_linux_user="yes" 5785 ;; 5786 ${target_name}-bsd-user) 5787 if test "$bsd" != "yes" ; then 5788 error_exit "Target '$target' is only available on a BSD host" 5789 fi 5790 target_user_only="yes" 5791 target_bsd_user="yes" 5792 ;; 5793 *) 5794 error_exit "Target '$target' not recognised" 5795 exit 1 5796 ;; 5797esac 5798 5799mkdir -p $target_dir 5800echo "# Automatically generated by configure - do not modify" > $config_target_mak 5801 5802bflt="no" 5803interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g") 5804gdb_xml_files="" 5805 5806TARGET_ARCH="$target_name" 5807TARGET_BASE_ARCH="" 5808TARGET_ABI_DIR="" 5809 5810case "$target_name" in 5811 i386) 5812 ;; 5813 x86_64) 5814 TARGET_BASE_ARCH=i386 5815 ;; 5816 alpha) 5817 ;; 5818 arm|armeb) 5819 TARGET_ARCH=arm 5820 bflt="yes" 5821 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 5822 ;; 5823 aarch64) 5824 TARGET_BASE_ARCH=arm 5825 bflt="yes" 5826 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 5827 ;; 5828 cris) 5829 ;; 5830 lm32) 5831 ;; 5832 m68k) 5833 bflt="yes" 5834 gdb_xml_files="cf-core.xml cf-fp.xml" 5835 ;; 5836 microblaze|microblazeel) 5837 TARGET_ARCH=microblaze 5838 bflt="yes" 5839 ;; 5840 mips|mipsel) 5841 TARGET_ARCH=mips 5842 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 5843 ;; 5844 mipsn32|mipsn32el) 5845 TARGET_ARCH=mips64 5846 TARGET_BASE_ARCH=mips 5847 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 5848 echo "TARGET_ABI32=y" >> $config_target_mak 5849 ;; 5850 mips64|mips64el) 5851 TARGET_ARCH=mips64 5852 TARGET_BASE_ARCH=mips 5853 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 5854 ;; 5855 moxie) 5856 ;; 5857 or32) 5858 TARGET_ARCH=openrisc 5859 TARGET_BASE_ARCH=openrisc 5860 ;; 5861 ppc) 5862 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5863 ;; 5864 ppcemb) 5865 TARGET_BASE_ARCH=ppc 5866 TARGET_ABI_DIR=ppc 5867 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5868 ;; 5869 ppc64) 5870 TARGET_BASE_ARCH=ppc 5871 TARGET_ABI_DIR=ppc 5872 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 5873 ;; 5874 ppc64le) 5875 TARGET_ARCH=ppc64 5876 TARGET_BASE_ARCH=ppc 5877 TARGET_ABI_DIR=ppc 5878 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 5879 ;; 5880 ppc64abi32) 5881 TARGET_ARCH=ppc64 5882 TARGET_BASE_ARCH=ppc 5883 TARGET_ABI_DIR=ppc 5884 echo "TARGET_ABI32=y" >> $config_target_mak 5885 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 5886 ;; 5887 sh4|sh4eb) 5888 TARGET_ARCH=sh4 5889 bflt="yes" 5890 ;; 5891 sparc) 5892 ;; 5893 sparc64) 5894 TARGET_BASE_ARCH=sparc 5895 ;; 5896 sparc32plus) 5897 TARGET_ARCH=sparc64 5898 TARGET_BASE_ARCH=sparc 5899 TARGET_ABI_DIR=sparc 5900 echo "TARGET_ABI32=y" >> $config_target_mak 5901 ;; 5902 s390x) 5903 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml" 5904 ;; 5905 tilegx) 5906 ;; 5907 tricore) 5908 ;; 5909 unicore32) 5910 ;; 5911 xtensa|xtensaeb) 5912 TARGET_ARCH=xtensa 5913 ;; 5914 *) 5915 error_exit "Unsupported target CPU" 5916 ;; 5917esac 5918# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 5919if [ "$TARGET_BASE_ARCH" = "" ]; then 5920 TARGET_BASE_ARCH=$TARGET_ARCH 5921fi 5922 5923symlink "$source_path/Makefile.target" "$target_dir/Makefile" 5924 5925upper() { 5926 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 5927} 5928 5929target_arch_name="$(upper $TARGET_ARCH)" 5930echo "TARGET_$target_arch_name=y" >> $config_target_mak 5931echo "TARGET_NAME=$target_name" >> $config_target_mak 5932echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 5933if [ "$TARGET_ABI_DIR" = "" ]; then 5934 TARGET_ABI_DIR=$TARGET_ARCH 5935fi 5936echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 5937if [ "$HOST_VARIANT_DIR" != "" ]; then 5938 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 5939fi 5940case "$target_name" in 5941 i386|x86_64) 5942 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 5943 echo "CONFIG_XEN=y" >> $config_target_mak 5944 if test "$xen_pci_passthrough" = yes; then 5945 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 5946 fi 5947 fi 5948 ;; 5949 *) 5950esac 5951case "$target_name" in 5952 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips) 5953 # Make sure the target and host cpus are compatible 5954 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 5955 \( "$target_name" = "$cpu" -o \ 5956 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 5957 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \ 5958 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \ 5959 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 5960 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \ 5961 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \ 5962 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \ 5963 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \ 5964 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then 5965 echo "CONFIG_KVM=y" >> $config_target_mak 5966 if test "$vhost_net" = "yes" ; then 5967 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 5968 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak 5969 fi 5970 fi 5971esac 5972if test "$target_bigendian" = "yes" ; then 5973 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 5974fi 5975if test "$target_softmmu" = "yes" ; then 5976 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 5977fi 5978if test "$target_user_only" = "yes" ; then 5979 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 5980 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 5981fi 5982if test "$target_linux_user" = "yes" ; then 5983 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 5984fi 5985list="" 5986if test ! -z "$gdb_xml_files" ; then 5987 for x in $gdb_xml_files; do 5988 list="$list $source_path/gdb-xml/$x" 5989 done 5990 echo "TARGET_XML_FILES=$list" >> $config_target_mak 5991fi 5992 5993if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 5994 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 5995fi 5996if test "$target_bsd_user" = "yes" ; then 5997 echo "CONFIG_BSD_USER=y" >> $config_target_mak 5998fi 5999 6000# generate QEMU_CFLAGS/LDFLAGS for targets 6001 6002cflags="" 6003ldflags="" 6004 6005disas_config() { 6006 echo "CONFIG_${1}_DIS=y" >> $config_target_mak 6007 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak 6008} 6009 6010for i in $ARCH $TARGET_BASE_ARCH ; do 6011 case "$i" in 6012 alpha) 6013 disas_config "ALPHA" 6014 ;; 6015 aarch64) 6016 if test -n "${cxx}"; then 6017 disas_config "ARM_A64" 6018 fi 6019 ;; 6020 arm) 6021 disas_config "ARM" 6022 if test -n "${cxx}"; then 6023 disas_config "ARM_A64" 6024 fi 6025 ;; 6026 cris) 6027 disas_config "CRIS" 6028 ;; 6029 i386|x86_64|x32) 6030 disas_config "I386" 6031 ;; 6032 ia64*) 6033 disas_config "IA64" 6034 ;; 6035 lm32) 6036 disas_config "LM32" 6037 ;; 6038 m68k) 6039 disas_config "M68K" 6040 ;; 6041 microblaze*) 6042 disas_config "MICROBLAZE" 6043 ;; 6044 mips*) 6045 disas_config "MIPS" 6046 ;; 6047 moxie*) 6048 disas_config "MOXIE" 6049 ;; 6050 or32) 6051 disas_config "OPENRISC" 6052 ;; 6053 ppc*) 6054 disas_config "PPC" 6055 ;; 6056 s390*) 6057 disas_config "S390" 6058 ;; 6059 sh4) 6060 disas_config "SH4" 6061 ;; 6062 sparc*) 6063 disas_config "SPARC" 6064 ;; 6065 xtensa*) 6066 disas_config "XTENSA" 6067 ;; 6068 esac 6069done 6070if test "$tcg_interpreter" = "yes" ; then 6071 disas_config "TCI" 6072fi 6073 6074case "$ARCH" in 6075alpha) 6076 # Ensure there's only a single GP 6077 cflags="-msmall-data $cflags" 6078;; 6079esac 6080 6081if test "$gprof" = "yes" ; then 6082 echo "TARGET_GPROF=yes" >> $config_target_mak 6083 if test "$target_linux_user" = "yes" ; then 6084 cflags="-p $cflags" 6085 ldflags="-p $ldflags" 6086 fi 6087 if test "$target_softmmu" = "yes" ; then 6088 ldflags="-p $ldflags" 6089 echo "GPROF_CFLAGS=-p" >> $config_target_mak 6090 fi 6091fi 6092 6093if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 6094 ldflags="$ldflags $textseg_ldflags" 6095fi 6096 6097echo "LDFLAGS+=$ldflags" >> $config_target_mak 6098echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 6099 6100done # for target in $targets 6101 6102if [ "$pixman" = "internal" ]; then 6103 echo "config-host.h: subdir-pixman" >> $config_host_mak 6104fi 6105 6106if [ "$dtc_internal" = "yes" ]; then 6107 echo "config-host.h: subdir-dtc" >> $config_host_mak 6108fi 6109 6110if test "$numa" = "yes"; then 6111 echo "CONFIG_NUMA=y" >> $config_host_mak 6112fi 6113 6114if test "$ccache_cpp2" = "yes"; then 6115 echo "export CCACHE_CPP2=y" >> $config_host_mak 6116fi 6117 6118# build tree in object directory in case the source is not in the current directory 6119DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" 6120DIRS="$DIRS fsdev" 6121DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 6122DIRS="$DIRS roms/seabios roms/vgabios" 6123DIRS="$DIRS qapi-generated" 6124FILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 6125FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 6126FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 6127FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 6128FILES="$FILES pc-bios/spapr-rtas/Makefile" 6129FILES="$FILES pc-bios/s390-ccw/Makefile" 6130FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 6131FILES="$FILES pc-bios/qemu-icon.bmp" 6132for bios_file in \ 6133 $source_path/pc-bios/*.bin \ 6134 $source_path/pc-bios/*.aml \ 6135 $source_path/pc-bios/*.rom \ 6136 $source_path/pc-bios/*.dtb \ 6137 $source_path/pc-bios/*.img \ 6138 $source_path/pc-bios/openbios-* \ 6139 $source_path/pc-bios/u-boot.* \ 6140 $source_path/pc-bios/palcode-* 6141do 6142 FILES="$FILES pc-bios/$(basename $bios_file)" 6143done 6144for test_file in $(find $source_path/tests/acpi-test-data -type f) 6145do 6146 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')" 6147done 6148mkdir -p $DIRS 6149for f in $FILES ; do 6150 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 6151 symlink "$source_path/$f" "$f" 6152 fi 6153done 6154 6155# temporary config to build submodules 6156for rom in seabios vgabios ; do 6157 config_mak=roms/$rom/config.mak 6158 echo "# Automatically generated by configure - do not modify" > $config_mak 6159 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 6160 echo "AS=$as" >> $config_mak 6161 echo "CCAS=$ccas" >> $config_mak 6162 echo "CC=$cc" >> $config_mak 6163 echo "BCC=bcc" >> $config_mak 6164 echo "CPP=$cpp" >> $config_mak 6165 echo "OBJCOPY=objcopy" >> $config_mak 6166 echo "IASL=$iasl" >> $config_mak 6167 echo "LD=$ld" >> $config_mak 6168done 6169 6170# set up tests data directory 6171if [ ! -e tests/data ]; then 6172 symlink "$source_path/tests/data" tests/data 6173fi 6174 6175# set up qemu-iotests in this build directory 6176iotests_common_env="tests/qemu-iotests/common.env" 6177iotests_check="tests/qemu-iotests/check" 6178 6179echo "# Automatically generated by configure - do not modify" > "$iotests_common_env" 6180echo >> "$iotests_common_env" 6181echo "export PYTHON='$python'" >> "$iotests_common_env" 6182 6183if [ ! -e "$iotests_check" ]; then 6184 symlink "$source_path/$iotests_check" "$iotests_check" 6185fi 6186 6187# Save the configure command line for later reuse. 6188cat <<EOD >config.status 6189#!/bin/sh 6190# Generated by configure. 6191# Run this file to recreate the current configuration. 6192# Compiler output produced by configure, useful for debugging 6193# configure, is in config.log if it exists. 6194EOD 6195printf "exec" >>config.status 6196printf " '%s'" "$0" "$@" >>config.status 6197echo ' "$@"' >>config.status 6198chmod +x config.status 6199 6200rm -r "$TMPDIR1" 6201