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