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