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="$QEMU_CFLAGS $optarg" 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 # and test for required functions to make sure we are on a version >= 1.4.0 3119 cat > $TMPC << EOF 3120#include <libfdt.h> 3121#include <libfdt_env.h> 3122int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; } 3123EOF 3124 if compile_prog "" "$fdt_libs" ; then 3125 # system DTC is good - use it 3126 fdt=yes 3127 elif test -d ${source_path}/dtc/libfdt ; then 3128 # have submodule DTC - use it 3129 fdt=yes 3130 dtc_internal="yes" 3131 mkdir -p dtc 3132 if [ "$pwd_is_source_path" != "y" ] ; then 3133 symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3134 symlink "$source_path/dtc/scripts" "dtc/scripts" 3135 fi 3136 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3137 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3138 elif test "$fdt" = "yes" ; then 3139 # have neither and want - prompt for system/submodule install 3140 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \ 3141 " (1) Preferred: Install the DTC (libfdt) devel package" \ 3142 " (2) Fetch the DTC submodule, using:" \ 3143 " git submodule update --init dtc" 3144 else 3145 # don't have and don't want 3146 fdt_libs= 3147 fdt=no 3148 fi 3149fi 3150 3151libs_softmmu="$libs_softmmu $fdt_libs" 3152 3153########################################## 3154# opengl probe (for sdl2, milkymist-tmu2) 3155 3156# GLX probe, used by milkymist-tmu2 3157# this is temporary, code will be switched to egl mid-term. 3158cat > $TMPC << EOF 3159#include <X11/Xlib.h> 3160#include <GL/gl.h> 3161#include <GL/glx.h> 3162int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; } 3163EOF 3164if compile_prog "" "-lGL -lX11" ; then 3165 have_glx=yes 3166else 3167 have_glx=no 3168fi 3169 3170if test "$opengl" != "no" ; then 3171 opengl_pkgs="gl glesv2 epoxy egl" 3172 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then 3173 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3174 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3175 opengl=yes 3176 else 3177 if test "$opengl" = "yes" ; then 3178 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 3179 fi 3180 opengl_cflags="" 3181 opengl_libs="" 3182 opengl=no 3183 fi 3184fi 3185 3186 3187########################################## 3188# archipelago probe 3189if test "$archipelago" != "no" ; then 3190 cat > $TMPC <<EOF 3191#include <stdio.h> 3192#include <xseg/xseg.h> 3193#include <xseg/protocol.h> 3194int main(void) { 3195 xseg_initialize(); 3196 return 0; 3197} 3198EOF 3199 archipelago_libs=-lxseg 3200 if compile_prog "" "$archipelago_libs"; then 3201 archipelago="yes" 3202 libs_tools="$archipelago_libs $libs_tools" 3203 libs_softmmu="$archipelago_libs $libs_softmmu" 3204 3205 echo "WARNING: Please check the licenses of QEMU and libxseg carefully." 3206 echo "GPLv3 versions of libxseg may not be compatible with QEMU's" 3207 echo "license and therefore prevent redistribution." 3208 echo 3209 echo "To disable Archipelago, use --disable-archipelago" 3210 else 3211 if test "$archipelago" = "yes" ; then 3212 feature_not_found "Archipelago backend support" "Install libxseg devel" 3213 fi 3214 archipelago="no" 3215 fi 3216fi 3217 3218 3219########################################## 3220# glusterfs probe 3221if test "$glusterfs" != "no" ; then 3222 if $pkg_config --atleast-version=3 glusterfs-api; then 3223 glusterfs="yes" 3224 glusterfs_cflags=`$pkg_config --cflags glusterfs-api` 3225 glusterfs_libs=`$pkg_config --libs glusterfs-api` 3226 if $pkg_config --atleast-version=5 glusterfs-api; then 3227 glusterfs_discard="yes" 3228 fi 3229 if $pkg_config --atleast-version=6 glusterfs-api; then 3230 glusterfs_zerofill="yes" 3231 fi 3232 else 3233 if test "$glusterfs" = "yes" ; then 3234 feature_not_found "GlusterFS backend support" \ 3235 "Install glusterfs-api devel >= 3" 3236 fi 3237 glusterfs="no" 3238 fi 3239fi 3240 3241# Check for inotify functions when we are building linux-user 3242# emulator. This is done because older glibc versions don't 3243# have syscall stubs for these implemented. In that case we 3244# don't provide them even if kernel supports them. 3245# 3246inotify=no 3247cat > $TMPC << EOF 3248#include <sys/inotify.h> 3249 3250int 3251main(void) 3252{ 3253 /* try to start inotify */ 3254 return inotify_init(); 3255} 3256EOF 3257if compile_prog "" "" ; then 3258 inotify=yes 3259fi 3260 3261inotify1=no 3262cat > $TMPC << EOF 3263#include <sys/inotify.h> 3264 3265int 3266main(void) 3267{ 3268 /* try to start inotify */ 3269 return inotify_init1(0); 3270} 3271EOF 3272if compile_prog "" "" ; then 3273 inotify1=yes 3274fi 3275 3276# check if utimensat and futimens are supported 3277utimens=no 3278cat > $TMPC << EOF 3279#define _ATFILE_SOURCE 3280#include <stddef.h> 3281#include <fcntl.h> 3282#include <sys/stat.h> 3283 3284int main(void) 3285{ 3286 utimensat(AT_FDCWD, "foo", NULL, 0); 3287 futimens(0, NULL); 3288 return 0; 3289} 3290EOF 3291if compile_prog "" "" ; then 3292 utimens=yes 3293fi 3294 3295# check if pipe2 is there 3296pipe2=no 3297cat > $TMPC << EOF 3298#include <unistd.h> 3299#include <fcntl.h> 3300 3301int main(void) 3302{ 3303 int pipefd[2]; 3304 return pipe2(pipefd, O_CLOEXEC); 3305} 3306EOF 3307if compile_prog "" "" ; then 3308 pipe2=yes 3309fi 3310 3311# check if accept4 is there 3312accept4=no 3313cat > $TMPC << EOF 3314#include <sys/socket.h> 3315#include <stddef.h> 3316 3317int main(void) 3318{ 3319 accept4(0, NULL, NULL, SOCK_CLOEXEC); 3320 return 0; 3321} 3322EOF 3323if compile_prog "" "" ; then 3324 accept4=yes 3325fi 3326 3327# check if tee/splice is there. vmsplice was added same time. 3328splice=no 3329cat > $TMPC << EOF 3330#include <unistd.h> 3331#include <fcntl.h> 3332#include <limits.h> 3333 3334int main(void) 3335{ 3336 int len, fd = 0; 3337 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 3338 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 3339 return 0; 3340} 3341EOF 3342if compile_prog "" "" ; then 3343 splice=yes 3344fi 3345 3346########################################## 3347# libnuma probe 3348 3349if test "$numa" != "no" ; then 3350 cat > $TMPC << EOF 3351#include <numa.h> 3352int main(void) { return numa_available(); } 3353EOF 3354 3355 if compile_prog "" "-lnuma" ; then 3356 numa=yes 3357 libs_softmmu="-lnuma $libs_softmmu" 3358 else 3359 if test "$numa" = "yes" ; then 3360 feature_not_found "numa" "install numactl devel" 3361 fi 3362 numa=no 3363 fi 3364fi 3365 3366########################################## 3367# tcmalloc probe 3368 3369if test "$tcmalloc" = "yes" ; then 3370 cat > $TMPC << EOF 3371#include <stdlib.h> 3372int main(void) { malloc(1); return 0; } 3373EOF 3374 3375 if compile_prog "" "-ltcmalloc" ; then 3376 LIBS="-ltcmalloc $LIBS" 3377 else 3378 feature_not_found "tcmalloc" "install gperftools devel" 3379 fi 3380fi 3381 3382########################################## 3383# signalfd probe 3384signalfd="no" 3385cat > $TMPC << EOF 3386#include <unistd.h> 3387#include <sys/syscall.h> 3388#include <signal.h> 3389int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3390EOF 3391 3392if compile_prog "" "" ; then 3393 signalfd=yes 3394fi 3395 3396# check if eventfd is supported 3397eventfd=no 3398cat > $TMPC << EOF 3399#include <sys/eventfd.h> 3400 3401int main(void) 3402{ 3403 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3404} 3405EOF 3406if compile_prog "" "" ; then 3407 eventfd=yes 3408fi 3409 3410# check for fallocate 3411fallocate=no 3412cat > $TMPC << EOF 3413#include <fcntl.h> 3414 3415int main(void) 3416{ 3417 fallocate(0, 0, 0, 0); 3418 return 0; 3419} 3420EOF 3421if compile_prog "" "" ; then 3422 fallocate=yes 3423fi 3424 3425# check for fallocate hole punching 3426fallocate_punch_hole=no 3427cat > $TMPC << EOF 3428#include <fcntl.h> 3429#include <linux/falloc.h> 3430 3431int main(void) 3432{ 3433 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 3434 return 0; 3435} 3436EOF 3437if compile_prog "" "" ; then 3438 fallocate_punch_hole=yes 3439fi 3440 3441# check that fallocate supports range zeroing inside the file 3442fallocate_zero_range=no 3443cat > $TMPC << EOF 3444#include <fcntl.h> 3445#include <linux/falloc.h> 3446 3447int main(void) 3448{ 3449 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 3450 return 0; 3451} 3452EOF 3453if compile_prog "" "" ; then 3454 fallocate_zero_range=yes 3455fi 3456 3457# check for posix_fallocate 3458posix_fallocate=no 3459cat > $TMPC << EOF 3460#include <fcntl.h> 3461 3462int main(void) 3463{ 3464 posix_fallocate(0, 0, 0); 3465 return 0; 3466} 3467EOF 3468if compile_prog "" "" ; then 3469 posix_fallocate=yes 3470fi 3471 3472# check for sync_file_range 3473sync_file_range=no 3474cat > $TMPC << EOF 3475#include <fcntl.h> 3476 3477int main(void) 3478{ 3479 sync_file_range(0, 0, 0, 0); 3480 return 0; 3481} 3482EOF 3483if compile_prog "" "" ; then 3484 sync_file_range=yes 3485fi 3486 3487# check for linux/fiemap.h and FS_IOC_FIEMAP 3488fiemap=no 3489cat > $TMPC << EOF 3490#include <sys/ioctl.h> 3491#include <linux/fs.h> 3492#include <linux/fiemap.h> 3493 3494int main(void) 3495{ 3496 ioctl(0, FS_IOC_FIEMAP, 0); 3497 return 0; 3498} 3499EOF 3500if compile_prog "" "" ; then 3501 fiemap=yes 3502fi 3503 3504# check for dup3 3505dup3=no 3506cat > $TMPC << EOF 3507#include <unistd.h> 3508 3509int main(void) 3510{ 3511 dup3(0, 0, 0); 3512 return 0; 3513} 3514EOF 3515if compile_prog "" "" ; then 3516 dup3=yes 3517fi 3518 3519# check for ppoll support 3520ppoll=no 3521cat > $TMPC << EOF 3522#include <poll.h> 3523 3524int main(void) 3525{ 3526 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 3527 ppoll(&pfd, 1, 0, 0); 3528 return 0; 3529} 3530EOF 3531if compile_prog "" "" ; then 3532 ppoll=yes 3533fi 3534 3535# check for prctl(PR_SET_TIMERSLACK , ... ) support 3536prctl_pr_set_timerslack=no 3537cat > $TMPC << EOF 3538#include <sys/prctl.h> 3539 3540int main(void) 3541{ 3542 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 3543 return 0; 3544} 3545EOF 3546if compile_prog "" "" ; then 3547 prctl_pr_set_timerslack=yes 3548fi 3549 3550# check for epoll support 3551epoll=no 3552cat > $TMPC << EOF 3553#include <sys/epoll.h> 3554 3555int main(void) 3556{ 3557 epoll_create(0); 3558 return 0; 3559} 3560EOF 3561if compile_prog "" "" ; then 3562 epoll=yes 3563fi 3564 3565# epoll_create1 and epoll_pwait are later additions 3566# so we must check separately for their presence 3567epoll_create1=no 3568cat > $TMPC << EOF 3569#include <sys/epoll.h> 3570 3571int main(void) 3572{ 3573 /* Note that we use epoll_create1 as a value, not as 3574 * a function being called. This is necessary so that on 3575 * old SPARC glibc versions where the function was present in 3576 * the library but not declared in the header file we will 3577 * fail the configure check. (Otherwise we will get a compiler 3578 * warning but not an error, and will proceed to fail the 3579 * qemu compile where we compile with -Werror.) 3580 */ 3581 return (int)(uintptr_t)&epoll_create1; 3582} 3583EOF 3584if compile_prog "" "" ; then 3585 epoll_create1=yes 3586fi 3587 3588epoll_pwait=no 3589cat > $TMPC << EOF 3590#include <sys/epoll.h> 3591 3592int main(void) 3593{ 3594 epoll_pwait(0, 0, 0, 0, 0); 3595 return 0; 3596} 3597EOF 3598if compile_prog "" "" ; then 3599 epoll_pwait=yes 3600fi 3601 3602# check for sendfile support 3603sendfile=no 3604cat > $TMPC << EOF 3605#include <sys/sendfile.h> 3606 3607int main(void) 3608{ 3609 return sendfile(0, 0, 0, 0); 3610} 3611EOF 3612if compile_prog "" "" ; then 3613 sendfile=yes 3614fi 3615 3616# check for timerfd support (glibc 2.8 and newer) 3617timerfd=no 3618cat > $TMPC << EOF 3619#include <sys/timerfd.h> 3620 3621int main(void) 3622{ 3623 return(timerfd_create(CLOCK_REALTIME, 0)); 3624} 3625EOF 3626if compile_prog "" "" ; then 3627 timerfd=yes 3628fi 3629 3630# check for setns and unshare support 3631setns=no 3632cat > $TMPC << EOF 3633#include <sched.h> 3634 3635int main(void) 3636{ 3637 int ret; 3638 ret = setns(0, 0); 3639 ret = unshare(0); 3640 return ret; 3641} 3642EOF 3643if compile_prog "" "" ; then 3644 setns=yes 3645fi 3646 3647# Check if tools are available to build documentation. 3648if test "$docs" != "no" ; then 3649 if has makeinfo && has pod2man; then 3650 docs=yes 3651 else 3652 if test "$docs" = "yes" ; then 3653 feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 3654 fi 3655 docs=no 3656 fi 3657fi 3658 3659# Search for bswap_32 function 3660byteswap_h=no 3661cat > $TMPC << EOF 3662#include <byteswap.h> 3663int main(void) { return bswap_32(0); } 3664EOF 3665if compile_prog "" "" ; then 3666 byteswap_h=yes 3667fi 3668 3669# Search for bswap32 function 3670bswap_h=no 3671cat > $TMPC << EOF 3672#include <sys/endian.h> 3673#include <sys/types.h> 3674#include <machine/bswap.h> 3675int main(void) { return bswap32(0); } 3676EOF 3677if compile_prog "" "" ; then 3678 bswap_h=yes 3679fi 3680 3681########################################## 3682# Do we have libiscsi >= 1.9.0 3683if test "$libiscsi" != "no" ; then 3684 if $pkg_config --atleast-version=1.9.0 libiscsi; then 3685 libiscsi="yes" 3686 libiscsi_cflags=$($pkg_config --cflags libiscsi) 3687 libiscsi_libs=$($pkg_config --libs libiscsi) 3688 else 3689 if test "$libiscsi" = "yes" ; then 3690 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 3691 fi 3692 libiscsi="no" 3693 fi 3694fi 3695 3696########################################## 3697# Do we need libm 3698cat > $TMPC << EOF 3699#include <math.h> 3700int main(int argc, char **argv) { return isnan(sin((double)argc)); } 3701EOF 3702if compile_prog "" "" ; then 3703 : 3704elif compile_prog "" "-lm" ; then 3705 LIBS="-lm $LIBS" 3706 libs_qga="-lm $libs_qga" 3707else 3708 error_exit "libm check failed" 3709fi 3710 3711########################################## 3712# Do we need librt 3713# uClibc provides 2 versions of clock_gettime(), one with realtime 3714# support and one without. This means that the clock_gettime() don't 3715# need -lrt. We still need it for timer_create() so we check for this 3716# function in addition. 3717cat > $TMPC <<EOF 3718#include <signal.h> 3719#include <time.h> 3720int main(void) { 3721 timer_create(CLOCK_REALTIME, NULL, NULL); 3722 return clock_gettime(CLOCK_REALTIME, NULL); 3723} 3724EOF 3725 3726if compile_prog "" "" ; then 3727 : 3728# we need pthread for static linking. use previous pthread test result 3729elif compile_prog "" "$pthread_lib -lrt" ; then 3730 LIBS="$LIBS -lrt" 3731 libs_qga="$libs_qga -lrt" 3732fi 3733 3734if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 3735 "$aix" != "yes" -a "$haiku" != "yes" ; then 3736 libs_softmmu="-lutil $libs_softmmu" 3737fi 3738 3739########################################## 3740# spice probe 3741if test "$spice" != "no" ; then 3742 cat > $TMPC << EOF 3743#include <spice.h> 3744int main(void) { spice_server_new(); return 0; } 3745EOF 3746 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 3747 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 3748 if $pkg_config --atleast-version=0.12.0 spice-server && \ 3749 $pkg_config --atleast-version=0.12.3 spice-protocol && \ 3750 compile_prog "$spice_cflags" "$spice_libs" ; then 3751 spice="yes" 3752 libs_softmmu="$libs_softmmu $spice_libs" 3753 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 3754 spice_protocol_version=$($pkg_config --modversion spice-protocol) 3755 spice_server_version=$($pkg_config --modversion spice-server) 3756 else 3757 if test "$spice" = "yes" ; then 3758 feature_not_found "spice" \ 3759 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 3760 fi 3761 spice="no" 3762 fi 3763fi 3764 3765# check for libcacard for smartcard support 3766smartcard_cflags="" 3767# TODO - what's the minimal nss version we support? 3768if test "$smartcard_nss" != "no"; then 3769 cat > $TMPC << EOF 3770#include <pk11pub.h> 3771int main(void) { PK11_FreeSlot(0); return 0; } 3772EOF 3773 # FIXME: do not include $glib_* in here 3774 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" 3775 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" 3776 test_cflags="$nss_cflags" 3777 # The header files in nss < 3.13.3 have a bug which causes them to 3778 # emit a warning. If we're going to compile QEMU with -Werror, then 3779 # test that the headers don't have this bug. Otherwise we would pass 3780 # the configure test but fail to compile QEMU later. 3781 if test "$werror" = "yes"; then 3782 test_cflags="-Werror $test_cflags" 3783 fi 3784 if test -n "$libtool" && 3785 $pkg_config --atleast-version=3.12.8 nss && \ 3786 compile_prog "$test_cflags" "$nss_libs"; then 3787 smartcard_nss="yes" 3788 else 3789 if test "$smartcard_nss" = "yes"; then 3790 feature_not_found "nss" "Install nss devel >= 3.12.8" 3791 fi 3792 smartcard_nss="no" 3793 fi 3794fi 3795 3796# check for libusb 3797if test "$libusb" != "no" ; then 3798 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 3799 libusb="yes" 3800 libusb_cflags=$($pkg_config --cflags libusb-1.0) 3801 libusb_libs=$($pkg_config --libs libusb-1.0) 3802 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags" 3803 libs_softmmu="$libs_softmmu $libusb_libs" 3804 else 3805 if test "$libusb" = "yes"; then 3806 feature_not_found "libusb" "Install libusb devel >= 1.0.13" 3807 fi 3808 libusb="no" 3809 fi 3810fi 3811 3812# check for usbredirparser for usb network redirection support 3813if test "$usb_redir" != "no" ; then 3814 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 3815 usb_redir="yes" 3816 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 3817 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 3818 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 3819 libs_softmmu="$libs_softmmu $usb_redir_libs" 3820 else 3821 if test "$usb_redir" = "yes"; then 3822 feature_not_found "usb-redir" "Install usbredir devel" 3823 fi 3824 usb_redir="no" 3825 fi 3826fi 3827 3828########################################## 3829# check if we have VSS SDK headers for win 3830 3831if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 3832 case "$vss_win32_sdk" in 3833 "") vss_win32_include="-I$source_path" ;; 3834 *\ *) # The SDK is installed in "Program Files" by default, but we cannot 3835 # handle path with spaces. So we symlink the headers into ".sdk/vss". 3836 vss_win32_include="-I$source_path/.sdk/vss" 3837 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 3838 ;; 3839 *) vss_win32_include="-I$vss_win32_sdk" 3840 esac 3841 cat > $TMPC << EOF 3842#define __MIDL_user_allocate_free_DEFINED__ 3843#include <inc/win2003/vss.h> 3844int main(void) { return VSS_CTX_BACKUP; } 3845EOF 3846 if compile_prog "$vss_win32_include" "" ; then 3847 guest_agent_with_vss="yes" 3848 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 3849 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 3850 else 3851 if test "$vss_win32_sdk" != "" ; then 3852 echo "ERROR: Please download and install Microsoft VSS SDK:" 3853 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 3854 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 3855 echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 3856 echo "ERROR: The headers are extracted in the directory \`inc'." 3857 feature_not_found "VSS support" 3858 fi 3859 guest_agent_with_vss="no" 3860 fi 3861fi 3862 3863########################################## 3864# lookup Windows platform SDK (if not specified) 3865# The SDK is needed only to build .tlb (type library) file of guest agent 3866# VSS provider from the source. It is usually unnecessary because the 3867# pre-compiled .tlb file is included. 3868 3869if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 3870 if test -z "$win_sdk"; then 3871 programfiles="$PROGRAMFILES" 3872 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 3873 if test -n "$programfiles"; then 3874 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 3875 else 3876 feature_not_found "Windows SDK" 3877 fi 3878 elif test "$win_sdk" = "no"; then 3879 win_sdk="" 3880 fi 3881fi 3882 3883########################################## 3884 3885########################################## 3886# check if we have fdatasync 3887 3888fdatasync=no 3889cat > $TMPC << EOF 3890#include <unistd.h> 3891int main(void) { 3892#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 3893return fdatasync(0); 3894#else 3895#error Not supported 3896#endif 3897} 3898EOF 3899if compile_prog "" "" ; then 3900 fdatasync=yes 3901fi 3902 3903########################################## 3904# check if we have madvise 3905 3906madvise=no 3907cat > $TMPC << EOF 3908#include <sys/types.h> 3909#include <sys/mman.h> 3910#include <stddef.h> 3911int main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 3912EOF 3913if compile_prog "" "" ; then 3914 madvise=yes 3915fi 3916 3917########################################## 3918# check if we have posix_madvise 3919 3920posix_madvise=no 3921cat > $TMPC << EOF 3922#include <sys/mman.h> 3923#include <stddef.h> 3924int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 3925EOF 3926if compile_prog "" "" ; then 3927 posix_madvise=yes 3928fi 3929 3930########################################## 3931# check if we have usable SIGEV_THREAD_ID 3932 3933sigev_thread_id=no 3934cat > $TMPC << EOF 3935#include <signal.h> 3936int main(void) { 3937 struct sigevent ev; 3938 ev.sigev_notify = SIGEV_THREAD_ID; 3939 ev._sigev_un._tid = 0; 3940 asm volatile("" : : "g"(&ev)); 3941 return 0; 3942} 3943EOF 3944if compile_prog "" "" ; then 3945 sigev_thread_id=yes 3946fi 3947 3948########################################## 3949# check if trace backend exists 3950 3951$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 3952if test "$?" -ne 0 ; then 3953 error_exit "invalid trace backends" \ 3954 "Please choose supported trace backends." 3955fi 3956 3957########################################## 3958# For 'ust' backend, test if ust headers are present 3959if have_backend "ust"; then 3960 cat > $TMPC << EOF 3961#include <lttng/tracepoint.h> 3962int main(void) { return 0; } 3963EOF 3964 if compile_prog "" "" ; then 3965 if $pkg_config lttng-ust --exists; then 3966 lttng_ust_libs=`$pkg_config --libs lttng-ust` 3967 else 3968 lttng_ust_libs="-llttng-ust" 3969 fi 3970 if $pkg_config liburcu-bp --exists; then 3971 urcu_bp_libs=`$pkg_config --libs liburcu-bp` 3972 else 3973 urcu_bp_libs="-lurcu-bp" 3974 fi 3975 3976 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 3977 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 3978 else 3979 error_exit "Trace backend 'ust' missing lttng-ust header files" 3980 fi 3981fi 3982 3983########################################## 3984# For 'dtrace' backend, test if 'dtrace' command is present 3985if have_backend "dtrace"; then 3986 if ! has 'dtrace' ; then 3987 error_exit "dtrace command is not found in PATH $PATH" 3988 fi 3989 trace_backend_stap="no" 3990 if has 'stap' ; then 3991 trace_backend_stap="yes" 3992 fi 3993fi 3994 3995########################################## 3996# check and set a backend for coroutine 3997 3998# We prefer ucontext, but it's not always possible. The fallback 3999# is sigcontext. gthread is not selectable except explicitly, because 4000# it is not functional enough to run QEMU proper. (It is occasionally 4001# useful for debugging purposes.) On Windows the only valid backend 4002# is the Windows-specific one. 4003 4004ucontext_works=no 4005if test "$darwin" != "yes"; then 4006 cat > $TMPC << EOF 4007#include <ucontext.h> 4008#ifdef __stub_makecontext 4009#error Ignoring glibc stub makecontext which will always fail 4010#endif 4011int main(void) { makecontext(0, 0, 0); return 0; } 4012EOF 4013 if compile_prog "" "" ; then 4014 ucontext_works=yes 4015 fi 4016fi 4017 4018if test "$coroutine" = ""; then 4019 if test "$mingw32" = "yes"; then 4020 coroutine=win32 4021 elif test "$ucontext_works" = "yes"; then 4022 coroutine=ucontext 4023 else 4024 coroutine=sigaltstack 4025 fi 4026else 4027 case $coroutine in 4028 windows) 4029 if test "$mingw32" != "yes"; then 4030 error_exit "'windows' coroutine backend only valid for Windows" 4031 fi 4032 # Unfortunately the user visible backend name doesn't match the 4033 # coroutine-*.c filename for this case, so we have to adjust it here. 4034 coroutine=win32 4035 ;; 4036 ucontext) 4037 if test "$ucontext_works" != "yes"; then 4038 feature_not_found "ucontext" 4039 fi 4040 ;; 4041 gthread|sigaltstack) 4042 if test "$mingw32" = "yes"; then 4043 error_exit "only the 'windows' coroutine backend is valid for Windows" 4044 fi 4045 ;; 4046 *) 4047 error_exit "unknown coroutine backend $coroutine" 4048 ;; 4049 esac 4050fi 4051 4052if test "$coroutine_pool" = ""; then 4053 if test "$coroutine" = "gthread"; then 4054 coroutine_pool=no 4055 else 4056 coroutine_pool=yes 4057 fi 4058fi 4059if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then 4060 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" 4061fi 4062 4063########################################## 4064# check if we have open_by_handle_at 4065 4066open_by_handle_at=no 4067cat > $TMPC << EOF 4068#include <fcntl.h> 4069#if !defined(AT_EMPTY_PATH) 4070# error missing definition 4071#else 4072int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4073#endif 4074EOF 4075if compile_prog "" "" ; then 4076 open_by_handle_at=yes 4077fi 4078 4079######################################## 4080# check if we have linux/magic.h 4081 4082linux_magic_h=no 4083cat > $TMPC << EOF 4084#include <linux/magic.h> 4085int main(void) { 4086 return 0; 4087} 4088EOF 4089if compile_prog "" "" ; then 4090 linux_magic_h=yes 4091fi 4092 4093######################################## 4094# check whether we can disable warning option with a pragma (this is needed 4095# to silence warnings in the headers of some versions of external libraries). 4096# This test has to be compiled with -Werror as otherwise an unknown pragma is 4097# only a warning. 4098# 4099# If we can't selectively disable warning in the code, disable -Werror so that 4100# the build doesn't fail anyway. 4101 4102pragma_disable_unused_but_set=no 4103cat > $TMPC << EOF 4104#pragma GCC diagnostic push 4105#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4106#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4107#pragma GCC diagnostic pop 4108 4109int main(void) { 4110 return 0; 4111} 4112EOF 4113if compile_prog "-Werror" "" ; then 4114 pragma_diagnostic_available=yes 4115else 4116 werror=no 4117fi 4118 4119######################################## 4120# check if we have valgrind/valgrind.h 4121 4122valgrind_h=no 4123cat > $TMPC << EOF 4124#include <valgrind/valgrind.h> 4125int main(void) { 4126 return 0; 4127} 4128EOF 4129if compile_prog "" "" ; then 4130 valgrind_h=yes 4131fi 4132 4133######################################## 4134# check if environ is declared 4135 4136has_environ=no 4137cat > $TMPC << EOF 4138#include <unistd.h> 4139int main(void) { 4140 environ = 0; 4141 return 0; 4142} 4143EOF 4144if compile_prog "" "" ; then 4145 has_environ=yes 4146fi 4147 4148######################################## 4149# check if cpuid.h is usable. 4150 4151cpuid_h=no 4152cat > $TMPC << EOF 4153#include <cpuid.h> 4154int main(void) { 4155 unsigned a, b, c, d; 4156 int max = __get_cpuid_max(0, 0); 4157 4158 if (max >= 1) { 4159 __cpuid(1, a, b, c, d); 4160 } 4161 4162 if (max >= 7) { 4163 __cpuid_count(7, 0, a, b, c, d); 4164 } 4165 4166 return 0; 4167} 4168EOF 4169if compile_prog "" "" ; then 4170 cpuid_h=yes 4171fi 4172 4173######################################## 4174# check if __[u]int128_t is usable. 4175 4176int128=no 4177cat > $TMPC << EOF 4178#if defined(__clang_major__) && defined(__clang_minor__) 4179# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4180# error __int128_t does not work in CLANG before 3.2 4181# endif 4182#endif 4183__int128_t a; 4184__uint128_t b; 4185int main (void) { 4186 a = a + b; 4187 b = a * b; 4188 a = a * a; 4189 return 0; 4190} 4191EOF 4192if compile_prog "" "" ; then 4193 int128=yes 4194fi 4195 4196######################################## 4197# check if getauxval is available. 4198 4199getauxval=no 4200cat > $TMPC << EOF 4201#include <sys/auxv.h> 4202int main(void) { 4203 return getauxval(AT_HWCAP) == 0; 4204} 4205EOF 4206if compile_prog "" "" ; then 4207 getauxval=yes 4208fi 4209 4210######################################## 4211# check if ccache is interfering with 4212# semantic analysis of macros 4213 4214ccache_cpp2=no 4215cat > $TMPC << EOF 4216static const int Z = 1; 4217#define fn() ({ Z; }) 4218#define TAUT(X) ((X) == Z) 4219#define PAREN(X, Y) (X == Y) 4220#define ID(X) (X) 4221int main(int argc, char *argv[]) 4222{ 4223 int x = 0, y = 0; 4224 x = ID(x); 4225 x = fn(); 4226 fn(); 4227 if (PAREN(x, y)) return 0; 4228 if (TAUT(Z)) return 0; 4229 return 0; 4230} 4231EOF 4232 4233if ! compile_object "-Werror"; then 4234 ccache_cpp2=yes 4235fi 4236 4237########################################## 4238# End of CC checks 4239# After here, no more $cc or $ld runs 4240 4241if test "$gcov" = "yes" ; then 4242 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 4243 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 4244elif test "$debug" = "no" ; then 4245 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 4246fi 4247 4248########################################## 4249# Do we have libnfs 4250if test "$libnfs" != "no" ; then 4251 if $pkg_config --atleast-version=1.9.3 libnfs; then 4252 libnfs="yes" 4253 libnfs_libs=$($pkg_config --libs libnfs) 4254 LIBS="$LIBS $libnfs_libs" 4255 else 4256 if test "$libnfs" = "yes" ; then 4257 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 4258 fi 4259 libnfs="no" 4260 fi 4261fi 4262 4263# Disable zero malloc errors for official releases unless explicitly told to 4264# enable/disable 4265if test -z "$zero_malloc" ; then 4266 if test "$z_version" = "50" ; then 4267 zero_malloc="no" 4268 else 4269 zero_malloc="yes" 4270 fi 4271fi 4272 4273# Now we've finished running tests it's OK to add -Werror to the compiler flags 4274if test "$werror" = "yes"; then 4275 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 4276fi 4277 4278if test "$solaris" = "no" ; then 4279 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 4280 LDFLAGS="-Wl,--warn-common $LDFLAGS" 4281 fi 4282fi 4283 4284# test if pod2man has --utf8 option 4285if pod2man --help | grep -q utf8; then 4286 POD2MAN="pod2man --utf8" 4287else 4288 POD2MAN="pod2man" 4289fi 4290 4291# Use ASLR, no-SEH and DEP if available 4292if test "$mingw32" = "yes" ; then 4293 for flag in --dynamicbase --no-seh --nxcompat; do 4294 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 4295 LDFLAGS="-Wl,$flag $LDFLAGS" 4296 fi 4297 done 4298fi 4299 4300qemu_confdir=$sysconfdir$confsuffix 4301qemu_moddir=$libdir$confsuffix 4302qemu_datadir=$datadir$confsuffix 4303qemu_localedir="$datadir/locale" 4304 4305tools="" 4306if test "$want_tools" = "yes" ; then 4307 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 4308 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 4309 tools="qemu-nbd\$(EXESUF) $tools" 4310 fi 4311fi 4312if test "$softmmu" = yes ; then 4313 if test "$virtfs" != no ; then 4314 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 4315 virtfs=yes 4316 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 4317 else 4318 if test "$virtfs" = yes; then 4319 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel" 4320 fi 4321 virtfs=no 4322 fi 4323 fi 4324fi 4325if [ "$guest_agent" != "no" ]; then 4326 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 4327 tools="qemu-ga\$(EXESUF) $tools" 4328 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then 4329 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools" 4330 fi 4331 guest_agent=yes 4332 elif [ "$guest_agent" != yes ]; then 4333 guest_agent=no 4334 else 4335 error_exit "Guest agent is not supported on this platform" 4336 fi 4337fi 4338 4339# Mac OS X ships with a broken assembler 4340roms= 4341if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 4342 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 4343 "$softmmu" = yes ; then 4344 roms="optionrom" 4345fi 4346if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 4347 roms="$roms spapr-rtas" 4348fi 4349 4350if test "$cpu" = "s390x" ; then 4351 roms="$roms s390-ccw" 4352fi 4353 4354# Probe for the need for relocating the user-only binary. 4355if test "$pie" = "no" ; then 4356 textseg_addr= 4357 case "$cpu" in 4358 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 4359 # ??? Rationale for choosing this address 4360 textseg_addr=0x60000000 4361 ;; 4362 mips) 4363 # A 256M aligned address, high in the address space, with enough 4364 # room for the code_gen_buffer above it before the stack. 4365 textseg_addr=0x60000000 4366 ;; 4367 esac 4368 if [ -n "$textseg_addr" ]; then 4369 cat > $TMPC <<EOF 4370 int main(void) { return 0; } 4371EOF 4372 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 4373 if ! compile_prog "" "$textseg_ldflags"; then 4374 # In case ld does not support -Ttext-segment, edit the default linker 4375 # script via sed to set the .text start addr. This is needed on FreeBSD 4376 # at least. 4377 $ld --verbose | sed \ 4378 -e '1,/==================================================/d' \ 4379 -e '/==================================================/,$d' \ 4380 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 4381 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 4382 textseg_ldflags="-Wl,-T../config-host.ld" 4383 fi 4384 fi 4385fi 4386 4387# prepend pixman and ftd flags after all config tests are done 4388QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 4389libs_softmmu="$pixman_libs $libs_softmmu" 4390 4391echo "Install prefix $prefix" 4392echo "BIOS directory `eval echo $qemu_datadir`" 4393echo "binary directory `eval echo $bindir`" 4394echo "library directory `eval echo $libdir`" 4395echo "module directory `eval echo $qemu_moddir`" 4396echo "libexec directory `eval echo $libexecdir`" 4397echo "include directory `eval echo $includedir`" 4398echo "config directory `eval echo $sysconfdir`" 4399if test "$mingw32" = "no" ; then 4400echo "local state directory `eval echo $local_statedir`" 4401echo "Manual directory `eval echo $mandir`" 4402echo "ELF interp prefix $interp_prefix" 4403else 4404echo "local state directory queried at runtime" 4405echo "Windows SDK $win_sdk" 4406fi 4407echo "Source path $source_path" 4408echo "C compiler $cc" 4409echo "Host C compiler $host_cc" 4410echo "C++ compiler $cxx" 4411echo "Objective-C compiler $objcc" 4412echo "ARFLAGS $ARFLAGS" 4413echo "CFLAGS $CFLAGS" 4414echo "QEMU_CFLAGS $QEMU_CFLAGS" 4415echo "LDFLAGS $LDFLAGS" 4416echo "make $make" 4417echo "install $install" 4418echo "python $python" 4419if test "$slirp" = "yes" ; then 4420 echo "smbd $smbd" 4421fi 4422echo "module support $modules" 4423echo "host CPU $cpu" 4424echo "host big endian $bigendian" 4425echo "target list $target_list" 4426echo "tcg debug enabled $debug_tcg" 4427echo "gprof enabled $gprof" 4428echo "sparse enabled $sparse" 4429echo "strip binaries $strip_opt" 4430echo "profiler $profiler" 4431echo "static build $static" 4432if test "$darwin" = "yes" ; then 4433 echo "Cocoa support $cocoa" 4434fi 4435echo "pixman $pixman" 4436echo "SDL support $sdl" 4437echo "GTK support $gtk" 4438echo "VTE support $vte" 4439echo "curses support $curses" 4440echo "curl support $curl" 4441echo "mingw32 support $mingw32" 4442echo "Audio drivers $audio_drv_list" 4443echo "Block whitelist (rw) $block_drv_rw_whitelist" 4444echo "Block whitelist (ro) $block_drv_ro_whitelist" 4445echo "VirtFS support $virtfs" 4446echo "VNC support $vnc" 4447if test "$vnc" = "yes" ; then 4448 echo "VNC TLS support $vnc_tls" 4449 echo "VNC SASL support $vnc_sasl" 4450 echo "VNC JPEG support $vnc_jpeg" 4451 echo "VNC PNG support $vnc_png" 4452 echo "VNC WS support $vnc_ws" 4453fi 4454if test -n "$sparc_cpu"; then 4455 echo "Target Sparc Arch $sparc_cpu" 4456fi 4457echo "xen support $xen" 4458if test "$xen" = "yes" ; then 4459 echo "xen ctrl version $xen_ctrl_version" 4460fi 4461echo "brlapi support $brlapi" 4462echo "bluez support $bluez" 4463echo "Documentation $docs" 4464echo "GUEST_BASE $guest_base" 4465echo "PIE $pie" 4466echo "vde support $vde" 4467echo "netmap support $netmap" 4468echo "Linux AIO support $linux_aio" 4469echo "ATTR/XATTR support $attr" 4470echo "Install blobs $blobs" 4471echo "KVM support $kvm" 4472echo "RDMA support $rdma" 4473echo "TCG interpreter $tcg_interpreter" 4474echo "fdt support $fdt" 4475echo "preadv support $preadv" 4476echo "fdatasync $fdatasync" 4477echo "madvise $madvise" 4478echo "posix_madvise $posix_madvise" 4479echo "sigev_thread_id $sigev_thread_id" 4480echo "uuid support $uuid" 4481echo "libcap-ng support $cap_ng" 4482echo "vhost-net support $vhost_net" 4483echo "vhost-scsi support $vhost_scsi" 4484echo "Trace backends $trace_backends" 4485if test "$trace_backend" = "simple"; then 4486echo "Trace output file $trace_file-<pid>" 4487fi 4488if test "$spice" = "yes"; then 4489echo "spice support $spice ($spice_protocol_version/$spice_server_version)" 4490else 4491echo "spice support $spice" 4492fi 4493echo "rbd support $rbd" 4494echo "xfsctl support $xfs" 4495echo "nss used $smartcard_nss" 4496echo "libusb $libusb" 4497echo "usb net redir $usb_redir" 4498echo "OpenGL support $opengl" 4499echo "libiscsi support $libiscsi" 4500echo "libnfs support $libnfs" 4501echo "build guest agent $guest_agent" 4502echo "QGA VSS support $guest_agent_with_vss" 4503echo "seccomp support $seccomp" 4504echo "coroutine backend $coroutine" 4505echo "coroutine pool $coroutine_pool" 4506echo "GlusterFS support $glusterfs" 4507echo "Archipelago support $archipelago" 4508echo "gcov $gcov_tool" 4509echo "gcov enabled $gcov" 4510echo "TPM support $tpm" 4511echo "libssh2 support $libssh2" 4512echo "TPM passthrough $tpm_passthrough" 4513echo "QOM debugging $qom_cast_debug" 4514echo "vhdx $vhdx" 4515echo "Quorum $quorum" 4516echo "lzo support $lzo" 4517echo "snappy support $snappy" 4518echo "bzip2 support $bzip2" 4519echo "NUMA host support $numa" 4520echo "tcmalloc support $tcmalloc" 4521 4522if test "$sdl_too_old" = "yes"; then 4523echo "-> Your SDL version is too old - please upgrade to have SDL support" 4524fi 4525 4526config_host_mak="config-host.mak" 4527 4528echo "# Automatically generated by configure - do not modify" >config-all-disas.mak 4529 4530echo "# Automatically generated by configure - do not modify" > $config_host_mak 4531echo >> $config_host_mak 4532 4533echo all: >> $config_host_mak 4534echo "prefix=$prefix" >> $config_host_mak 4535echo "bindir=$bindir" >> $config_host_mak 4536echo "libdir=$libdir" >> $config_host_mak 4537echo "libexecdir=$libexecdir" >> $config_host_mak 4538echo "includedir=$includedir" >> $config_host_mak 4539echo "mandir=$mandir" >> $config_host_mak 4540echo "sysconfdir=$sysconfdir" >> $config_host_mak 4541echo "qemu_confdir=$qemu_confdir" >> $config_host_mak 4542echo "qemu_datadir=$qemu_datadir" >> $config_host_mak 4543echo "qemu_docdir=$qemu_docdir" >> $config_host_mak 4544echo "qemu_moddir=$qemu_moddir" >> $config_host_mak 4545if test "$mingw32" = "no" ; then 4546 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 4547fi 4548echo "qemu_helperdir=$libexecdir" >> $config_host_mak 4549echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 4550echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 4551echo "qemu_localedir=$qemu_localedir" >> $config_host_mak 4552echo "libs_softmmu=$libs_softmmu" >> $config_host_mak 4553 4554echo "ARCH=$ARCH" >> $config_host_mak 4555 4556if test "$debug_tcg" = "yes" ; then 4557 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 4558fi 4559if test "$strip_opt" = "yes" ; then 4560 echo "STRIP=${strip}" >> $config_host_mak 4561fi 4562if test "$bigendian" = "yes" ; then 4563 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 4564fi 4565if test "$mingw32" = "yes" ; then 4566 echo "CONFIG_WIN32=y" >> $config_host_mak 4567 rc_version=`cat $source_path/VERSION` 4568 version_major=${rc_version%%.*} 4569 rc_version=${rc_version#*.} 4570 version_minor=${rc_version%%.*} 4571 rc_version=${rc_version#*.} 4572 version_subminor=${rc_version%%.*} 4573 version_micro=0 4574 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4575 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4576 if test "$guest_agent_with_vss" = "yes" ; then 4577 echo "CONFIG_QGA_VSS=y" >> $config_host_mak 4578 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 4579 fi 4580else 4581 echo "CONFIG_POSIX=y" >> $config_host_mak 4582fi 4583 4584if test "$linux" = "yes" ; then 4585 echo "CONFIG_LINUX=y" >> $config_host_mak 4586fi 4587 4588if test "$darwin" = "yes" ; then 4589 echo "CONFIG_DARWIN=y" >> $config_host_mak 4590fi 4591 4592if test "$aix" = "yes" ; then 4593 echo "CONFIG_AIX=y" >> $config_host_mak 4594fi 4595 4596if test "$solaris" = "yes" ; then 4597 echo "CONFIG_SOLARIS=y" >> $config_host_mak 4598 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 4599 if test "$needs_libsunmath" = "yes" ; then 4600 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 4601 fi 4602fi 4603if test "$haiku" = "yes" ; then 4604 echo "CONFIG_HAIKU=y" >> $config_host_mak 4605fi 4606if test "$static" = "yes" ; then 4607 echo "CONFIG_STATIC=y" >> $config_host_mak 4608fi 4609if test "$profiler" = "yes" ; then 4610 echo "CONFIG_PROFILER=y" >> $config_host_mak 4611fi 4612if test "$slirp" = "yes" ; then 4613 echo "CONFIG_SLIRP=y" >> $config_host_mak 4614 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 4615fi 4616if test "$vde" = "yes" ; then 4617 echo "CONFIG_VDE=y" >> $config_host_mak 4618fi 4619if test "$netmap" = "yes" ; then 4620 echo "CONFIG_NETMAP=y" >> $config_host_mak 4621fi 4622if test "$l2tpv3" = "yes" ; then 4623 echo "CONFIG_L2TPV3=y" >> $config_host_mak 4624fi 4625if test "$cap_ng" = "yes" ; then 4626 echo "CONFIG_LIBCAP=y" >> $config_host_mak 4627fi 4628echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 4629for drv in $audio_drv_list; do 4630 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 4631 echo "$def=y" >> $config_host_mak 4632 if test "$drv" = "fmod"; then 4633 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 4634 fi 4635done 4636if test "$audio_pt_int" = "yes" ; then 4637 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 4638fi 4639if test "$audio_win_int" = "yes" ; then 4640 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 4641fi 4642echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 4643echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 4644if test "$vnc" = "yes" ; then 4645 echo "CONFIG_VNC=y" >> $config_host_mak 4646fi 4647if test "$vnc_tls" = "yes" ; then 4648 echo "CONFIG_VNC_TLS=y" >> $config_host_mak 4649fi 4650if test "$vnc_sasl" = "yes" ; then 4651 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 4652fi 4653if test "$vnc_jpeg" = "yes" ; then 4654 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 4655fi 4656if test "$vnc_png" = "yes" ; then 4657 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 4658fi 4659if test "$vnc_ws" = "yes" ; then 4660 echo "CONFIG_VNC_WS=y" >> $config_host_mak 4661 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak 4662fi 4663if test "$fnmatch" = "yes" ; then 4664 echo "CONFIG_FNMATCH=y" >> $config_host_mak 4665fi 4666if test "$uuid" = "yes" ; then 4667 echo "CONFIG_UUID=y" >> $config_host_mak 4668fi 4669if test "$xfs" = "yes" ; then 4670 echo "CONFIG_XFS=y" >> $config_host_mak 4671fi 4672qemu_version=`head $source_path/VERSION` 4673echo "VERSION=$qemu_version" >>$config_host_mak 4674echo "PKGVERSION=$pkgversion" >>$config_host_mak 4675echo "SRC_PATH=$source_path" >> $config_host_mak 4676echo "TARGET_DIRS=$target_list" >> $config_host_mak 4677if [ "$docs" = "yes" ] ; then 4678 echo "BUILD_DOCS=yes" >> $config_host_mak 4679fi 4680if test "$modules" = "yes"; then 4681 # $shacmd can generate a hash started with digit, which the compiler doesn't 4682 # like as an symbol. So prefix it with an underscore 4683 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak 4684 echo "CONFIG_MODULES=y" >> $config_host_mak 4685fi 4686if test "$sdl" = "yes" ; then 4687 echo "CONFIG_SDL=y" >> $config_host_mak 4688 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 4689 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 4690fi 4691if test "$cocoa" = "yes" ; then 4692 echo "CONFIG_COCOA=y" >> $config_host_mak 4693fi 4694if test "$curses" = "yes" ; then 4695 echo "CONFIG_CURSES=y" >> $config_host_mak 4696fi 4697if test "$utimens" = "yes" ; then 4698 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 4699fi 4700if test "$pipe2" = "yes" ; then 4701 echo "CONFIG_PIPE2=y" >> $config_host_mak 4702fi 4703if test "$accept4" = "yes" ; then 4704 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 4705fi 4706if test "$splice" = "yes" ; then 4707 echo "CONFIG_SPLICE=y" >> $config_host_mak 4708fi 4709if test "$eventfd" = "yes" ; then 4710 echo "CONFIG_EVENTFD=y" >> $config_host_mak 4711fi 4712if test "$fallocate" = "yes" ; then 4713 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 4714fi 4715if test "$fallocate_punch_hole" = "yes" ; then 4716 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 4717fi 4718if test "$fallocate_zero_range" = "yes" ; then 4719 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 4720fi 4721if test "$posix_fallocate" = "yes" ; then 4722 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 4723fi 4724if test "$sync_file_range" = "yes" ; then 4725 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 4726fi 4727if test "$fiemap" = "yes" ; then 4728 echo "CONFIG_FIEMAP=y" >> $config_host_mak 4729fi 4730if test "$dup3" = "yes" ; then 4731 echo "CONFIG_DUP3=y" >> $config_host_mak 4732fi 4733if test "$ppoll" = "yes" ; then 4734 echo "CONFIG_PPOLL=y" >> $config_host_mak 4735fi 4736if test "$prctl_pr_set_timerslack" = "yes" ; then 4737 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 4738fi 4739if test "$epoll" = "yes" ; then 4740 echo "CONFIG_EPOLL=y" >> $config_host_mak 4741fi 4742if test "$epoll_create1" = "yes" ; then 4743 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 4744fi 4745if test "$epoll_pwait" = "yes" ; then 4746 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 4747fi 4748if test "$sendfile" = "yes" ; then 4749 echo "CONFIG_SENDFILE=y" >> $config_host_mak 4750fi 4751if test "$timerfd" = "yes" ; then 4752 echo "CONFIG_TIMERFD=y" >> $config_host_mak 4753fi 4754if test "$setns" = "yes" ; then 4755 echo "CONFIG_SETNS=y" >> $config_host_mak 4756fi 4757if test "$inotify" = "yes" ; then 4758 echo "CONFIG_INOTIFY=y" >> $config_host_mak 4759fi 4760if test "$inotify1" = "yes" ; then 4761 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 4762fi 4763if test "$byteswap_h" = "yes" ; then 4764 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 4765fi 4766if test "$bswap_h" = "yes" ; then 4767 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 4768fi 4769if test "$curl" = "yes" ; then 4770 echo "CONFIG_CURL=m" >> $config_host_mak 4771 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 4772 echo "CURL_LIBS=$curl_libs" >> $config_host_mak 4773fi 4774if test "$brlapi" = "yes" ; then 4775 echo "CONFIG_BRLAPI=y" >> $config_host_mak 4776fi 4777if test "$bluez" = "yes" ; then 4778 echo "CONFIG_BLUEZ=y" >> $config_host_mak 4779 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 4780fi 4781if test "glib_subprocess" = "yes" ; then 4782 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 4783fi 4784echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 4785if test "$gtk" = "yes" ; then 4786 echo "CONFIG_GTK=y" >> $config_host_mak 4787 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 4788 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 4789fi 4790if test "$vte" = "yes" ; then 4791 echo "CONFIG_VTE=y" >> $config_host_mak 4792 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 4793fi 4794if test "$xen" = "yes" ; then 4795 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 4796 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 4797fi 4798if test "$linux_aio" = "yes" ; then 4799 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 4800fi 4801if test "$attr" = "yes" ; then 4802 echo "CONFIG_ATTR=y" >> $config_host_mak 4803fi 4804if test "$libattr" = "yes" ; then 4805 echo "CONFIG_LIBATTR=y" >> $config_host_mak 4806fi 4807if test "$virtfs" = "yes" ; then 4808 echo "CONFIG_VIRTFS=y" >> $config_host_mak 4809fi 4810if test "$vhost_scsi" = "yes" ; then 4811 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 4812fi 4813if test "$vhost_net" = "yes" ; then 4814 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 4815fi 4816if test "$blobs" = "yes" ; then 4817 echo "INSTALL_BLOBS=yes" >> $config_host_mak 4818fi 4819if test "$iovec" = "yes" ; then 4820 echo "CONFIG_IOVEC=y" >> $config_host_mak 4821fi 4822if test "$preadv" = "yes" ; then 4823 echo "CONFIG_PREADV=y" >> $config_host_mak 4824fi 4825if test "$fdt" = "yes" ; then 4826 echo "CONFIG_FDT=y" >> $config_host_mak 4827fi 4828if test "$signalfd" = "yes" ; then 4829 echo "CONFIG_SIGNALFD=y" >> $config_host_mak 4830fi 4831if test "$tcg_interpreter" = "yes" ; then 4832 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 4833fi 4834if test "$fdatasync" = "yes" ; then 4835 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 4836fi 4837if test "$madvise" = "yes" ; then 4838 echo "CONFIG_MADVISE=y" >> $config_host_mak 4839fi 4840if test "$posix_madvise" = "yes" ; then 4841 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 4842fi 4843if test "$sigev_thread_id" = "yes" ; then 4844 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak 4845fi 4846 4847if test "$spice" = "yes" ; then 4848 echo "CONFIG_SPICE=y" >> $config_host_mak 4849fi 4850 4851if test "$smartcard_nss" = "yes" ; then 4852 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 4853 echo "NSS_LIBS=$nss_libs" >> $config_host_mak 4854 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak 4855fi 4856 4857if test "$libusb" = "yes" ; then 4858 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 4859fi 4860 4861if test "$usb_redir" = "yes" ; then 4862 echo "CONFIG_USB_REDIR=y" >> $config_host_mak 4863fi 4864 4865if test "$opengl" = "yes" ; then 4866 echo "CONFIG_OPENGL=y" >> $config_host_mak 4867 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak 4868 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 4869fi 4870 4871if test "$lzo" = "yes" ; then 4872 echo "CONFIG_LZO=y" >> $config_host_mak 4873fi 4874 4875if test "$snappy" = "yes" ; then 4876 echo "CONFIG_SNAPPY=y" >> $config_host_mak 4877fi 4878 4879if test "$bzip2" = "yes" ; then 4880 echo "CONFIG_BZIP2=y" >> $config_host_mak 4881 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 4882fi 4883 4884if test "$libiscsi" = "yes" ; then 4885 echo "CONFIG_LIBISCSI=m" >> $config_host_mak 4886 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 4887 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 4888fi 4889 4890if test "$libnfs" = "yes" ; then 4891 echo "CONFIG_LIBNFS=y" >> $config_host_mak 4892fi 4893 4894if test "$seccomp" = "yes"; then 4895 echo "CONFIG_SECCOMP=y" >> $config_host_mak 4896fi 4897 4898# XXX: suppress that 4899if [ "$bsd" = "yes" ] ; then 4900 echo "CONFIG_BSD=y" >> $config_host_mak 4901fi 4902 4903if test "$zero_malloc" = "yes" ; then 4904 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 4905fi 4906if test "$qom_cast_debug" = "yes" ; then 4907 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 4908fi 4909if test "$rbd" = "yes" ; then 4910 echo "CONFIG_RBD=m" >> $config_host_mak 4911 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 4912 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 4913fi 4914 4915echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 4916if test "$coroutine_pool" = "yes" ; then 4917 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 4918else 4919 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 4920fi 4921 4922if test "$open_by_handle_at" = "yes" ; then 4923 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 4924fi 4925 4926if test "$linux_magic_h" = "yes" ; then 4927 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 4928fi 4929 4930if test "$pragma_diagnostic_available" = "yes" ; then 4931 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 4932fi 4933 4934if test "$valgrind_h" = "yes" ; then 4935 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 4936fi 4937 4938if test "$has_environ" = "yes" ; then 4939 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 4940fi 4941 4942if test "$cpuid_h" = "yes" ; then 4943 echo "CONFIG_CPUID_H=y" >> $config_host_mak 4944fi 4945 4946if test "$int128" = "yes" ; then 4947 echo "CONFIG_INT128=y" >> $config_host_mak 4948fi 4949 4950if test "$getauxval" = "yes" ; then 4951 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 4952fi 4953 4954if test "$glusterfs" = "yes" ; then 4955 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 4956 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 4957 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 4958fi 4959 4960if test "$glusterfs_discard" = "yes" ; then 4961 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 4962fi 4963 4964if test "$glusterfs_zerofill" = "yes" ; then 4965 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 4966fi 4967 4968if test "$archipelago" = "yes" ; then 4969 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak 4970 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak 4971fi 4972 4973if test "$libssh2" = "yes" ; then 4974 echo "CONFIG_LIBSSH2=m" >> $config_host_mak 4975 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 4976 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 4977fi 4978 4979if test "$quorum" = "yes" ; then 4980 echo "CONFIG_QUORUM=y" >> $config_host_mak 4981fi 4982 4983if test "$vhdx" = "yes" ; then 4984 echo "CONFIG_VHDX=y" >> $config_host_mak 4985fi 4986 4987# USB host support 4988if test "$libusb" = "yes"; then 4989 echo "HOST_USB=libusb legacy" >> $config_host_mak 4990else 4991 echo "HOST_USB=stub" >> $config_host_mak 4992fi 4993 4994# TPM passthrough support? 4995if test "$tpm" = "yes"; then 4996 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 4997 if test "$tpm_passthrough" = "yes"; then 4998 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 4999 fi 5000fi 5001 5002echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 5003if have_backend "nop"; then 5004 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 5005fi 5006if have_backend "simple"; then 5007 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 5008 # Set the appropriate trace file. 5009 trace_file="\"$trace_file-\" FMT_pid" 5010fi 5011if have_backend "stderr"; then 5012 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak 5013fi 5014if have_backend "ust"; then 5015 echo "CONFIG_TRACE_UST=y" >> $config_host_mak 5016fi 5017if have_backend "dtrace"; then 5018 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 5019 if test "$trace_backend_stap" = "yes" ; then 5020 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 5021 fi 5022fi 5023if have_backend "ftrace"; then 5024 if test "$linux" = "yes" ; then 5025 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 5026 else 5027 feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 5028 fi 5029fi 5030echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 5031 5032if test "$rdma" = "yes" ; then 5033 echo "CONFIG_RDMA=y" >> $config_host_mak 5034fi 5035 5036# Hold two types of flag: 5037# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 5038# a thread we have a handle to 5039# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 5040# platform 5041if test "$pthread_setname_np" = "yes" ; then 5042 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 5043 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 5044fi 5045 5046if test "$tcg_interpreter" = "yes"; then 5047 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 5048elif test "$ARCH" = "sparc64" ; then 5049 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 5050elif test "$ARCH" = "s390x" ; then 5051 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 5052elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 5053 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 5054elif test "$ARCH" = "ppc64" ; then 5055 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 5056else 5057 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 5058fi 5059QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 5060 5061echo "TOOLS=$tools" >> $config_host_mak 5062echo "ROMS=$roms" >> $config_host_mak 5063echo "MAKE=$make" >> $config_host_mak 5064echo "INSTALL=$install" >> $config_host_mak 5065echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 5066echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 5067if test -n "$libtool"; then 5068 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak 5069 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak 5070else 5071 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 5072 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 5073fi 5074echo "PYTHON=$python" >> $config_host_mak 5075echo "CC=$cc" >> $config_host_mak 5076if $iasl -h > /dev/null 2>&1; then 5077 echo "IASL=$iasl" >> $config_host_mak 5078fi 5079echo "CC_I386=$cc_i386" >> $config_host_mak 5080echo "HOST_CC=$host_cc" >> $config_host_mak 5081echo "CXX=$cxx" >> $config_host_mak 5082echo "OBJCC=$objcc" >> $config_host_mak 5083echo "AR=$ar" >> $config_host_mak 5084echo "ARFLAGS=$ARFLAGS" >> $config_host_mak 5085echo "AS=$as" >> $config_host_mak 5086echo "CPP=$cpp" >> $config_host_mak 5087echo "OBJCOPY=$objcopy" >> $config_host_mak 5088echo "LD=$ld" >> $config_host_mak 5089echo "NM=$nm" >> $config_host_mak 5090echo "WINDRES=$windres" >> $config_host_mak 5091echo "LIBTOOL=$libtool" >> $config_host_mak 5092echo "CFLAGS=$CFLAGS" >> $config_host_mak 5093echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 5094echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 5095echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 5096if test "$sparse" = "yes" ; then 5097 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 5098 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 5099 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 5100 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 5101 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 5102fi 5103if test "$cross_prefix" != ""; then 5104 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 5105else 5106 echo "AUTOCONF_HOST := " >> $config_host_mak 5107fi 5108echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 5109echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 5110echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak 5111echo "LIBS+=$LIBS" >> $config_host_mak 5112echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 5113echo "EXESUF=$EXESUF" >> $config_host_mak 5114echo "DSOSUF=$DSOSUF" >> $config_host_mak 5115echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 5116echo "LIBS_QGA+=$libs_qga" >> $config_host_mak 5117echo "POD2MAN=$POD2MAN" >> $config_host_mak 5118echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 5119if test "$gcov" = "yes" ; then 5120 echo "CONFIG_GCOV=y" >> $config_host_mak 5121 echo "GCOV=$gcov_tool" >> $config_host_mak 5122fi 5123 5124# use included Linux headers 5125if test "$linux" = "yes" ; then 5126 mkdir -p linux-headers 5127 case "$cpu" in 5128 i386|x86_64|x32) 5129 linux_arch=x86 5130 ;; 5131 ppcemb|ppc|ppc64) 5132 linux_arch=powerpc 5133 ;; 5134 s390x) 5135 linux_arch=s390 5136 ;; 5137 aarch64) 5138 linux_arch=arm64 5139 ;; 5140 mips64) 5141 linux_arch=mips 5142 ;; 5143 *) 5144 # For most CPUs the kernel architecture name and QEMU CPU name match. 5145 linux_arch="$cpu" 5146 ;; 5147 esac 5148 # For non-KVM architectures we will not have asm headers 5149 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 5150 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 5151 fi 5152fi 5153 5154for target in $target_list; do 5155target_dir="$target" 5156config_target_mak=$target_dir/config-target.mak 5157target_name=`echo $target | cut -d '-' -f 1` 5158target_bigendian="no" 5159 5160case "$target_name" in 5161 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 5162 target_bigendian=yes 5163 ;; 5164esac 5165target_softmmu="no" 5166target_user_only="no" 5167target_linux_user="no" 5168target_bsd_user="no" 5169case "$target" in 5170 ${target_name}-softmmu) 5171 target_softmmu="yes" 5172 ;; 5173 ${target_name}-linux-user) 5174 if test "$linux" != "yes" ; then 5175 error_exit "Target '$target' is only available on a Linux host" 5176 fi 5177 target_user_only="yes" 5178 target_linux_user="yes" 5179 ;; 5180 ${target_name}-bsd-user) 5181 if test "$bsd" != "yes" ; then 5182 error_exit "Target '$target' is only available on a BSD host" 5183 fi 5184 target_user_only="yes" 5185 target_bsd_user="yes" 5186 ;; 5187 *) 5188 error_exit "Target '$target' not recognised" 5189 exit 1 5190 ;; 5191esac 5192 5193mkdir -p $target_dir 5194echo "# Automatically generated by configure - do not modify" > $config_target_mak 5195 5196bflt="no" 5197interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"` 5198gdb_xml_files="" 5199 5200TARGET_ARCH="$target_name" 5201TARGET_BASE_ARCH="" 5202TARGET_ABI_DIR="" 5203 5204case "$target_name" in 5205 i386) 5206 ;; 5207 x86_64) 5208 TARGET_BASE_ARCH=i386 5209 ;; 5210 alpha) 5211 ;; 5212 arm|armeb) 5213 TARGET_ARCH=arm 5214 bflt="yes" 5215 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 5216 ;; 5217 aarch64) 5218 TARGET_BASE_ARCH=arm 5219 bflt="yes" 5220 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 5221 ;; 5222 cris) 5223 ;; 5224 lm32) 5225 ;; 5226 m68k) 5227 bflt="yes" 5228 gdb_xml_files="cf-core.xml cf-fp.xml" 5229 ;; 5230 microblaze|microblazeel) 5231 TARGET_ARCH=microblaze 5232 bflt="yes" 5233 ;; 5234 mips|mipsel) 5235 TARGET_ARCH=mips 5236 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 5237 ;; 5238 mipsn32|mipsn32el) 5239 TARGET_ARCH=mips64 5240 TARGET_BASE_ARCH=mips 5241 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 5242 echo "TARGET_ABI32=y" >> $config_target_mak 5243 ;; 5244 mips64|mips64el) 5245 TARGET_ARCH=mips64 5246 TARGET_BASE_ARCH=mips 5247 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 5248 ;; 5249 moxie) 5250 ;; 5251 or32) 5252 TARGET_ARCH=openrisc 5253 TARGET_BASE_ARCH=openrisc 5254 ;; 5255 ppc) 5256 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5257 ;; 5258 ppcemb) 5259 TARGET_BASE_ARCH=ppc 5260 TARGET_ABI_DIR=ppc 5261 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5262 ;; 5263 ppc64) 5264 TARGET_BASE_ARCH=ppc 5265 TARGET_ABI_DIR=ppc 5266 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5267 ;; 5268 ppc64le) 5269 TARGET_ARCH=ppc64 5270 TARGET_BASE_ARCH=ppc 5271 TARGET_ABI_DIR=ppc 5272 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5273 ;; 5274 ppc64abi32) 5275 TARGET_ARCH=ppc64 5276 TARGET_BASE_ARCH=ppc 5277 TARGET_ABI_DIR=ppc 5278 echo "TARGET_ABI32=y" >> $config_target_mak 5279 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5280 ;; 5281 sh4|sh4eb) 5282 TARGET_ARCH=sh4 5283 bflt="yes" 5284 ;; 5285 sparc) 5286 ;; 5287 sparc64) 5288 TARGET_BASE_ARCH=sparc 5289 ;; 5290 sparc32plus) 5291 TARGET_ARCH=sparc64 5292 TARGET_BASE_ARCH=sparc 5293 TARGET_ABI_DIR=sparc 5294 echo "TARGET_ABI32=y" >> $config_target_mak 5295 ;; 5296 s390x) 5297 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml" 5298 ;; 5299 tricore) 5300 ;; 5301 unicore32) 5302 ;; 5303 xtensa|xtensaeb) 5304 TARGET_ARCH=xtensa 5305 ;; 5306 *) 5307 error_exit "Unsupported target CPU" 5308 ;; 5309esac 5310# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 5311if [ "$TARGET_BASE_ARCH" = "" ]; then 5312 TARGET_BASE_ARCH=$TARGET_ARCH 5313fi 5314 5315symlink "$source_path/Makefile.target" "$target_dir/Makefile" 5316 5317upper() { 5318 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 5319} 5320 5321target_arch_name="`upper $TARGET_ARCH`" 5322echo "TARGET_$target_arch_name=y" >> $config_target_mak 5323echo "TARGET_NAME=$target_name" >> $config_target_mak 5324echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 5325if [ "$TARGET_ABI_DIR" = "" ]; then 5326 TARGET_ABI_DIR=$TARGET_ARCH 5327fi 5328echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 5329if [ "$HOST_VARIANT_DIR" != "" ]; then 5330 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 5331fi 5332case "$target_name" in 5333 i386|x86_64) 5334 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 5335 echo "CONFIG_XEN=y" >> $config_target_mak 5336 if test "$xen_pci_passthrough" = yes; then 5337 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 5338 fi 5339 fi 5340 ;; 5341 *) 5342esac 5343case "$target_name" in 5344 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips) 5345 # Make sure the target and host cpus are compatible 5346 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 5347 \( "$target_name" = "$cpu" -o \ 5348 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 5349 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \ 5350 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \ 5351 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 5352 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \ 5353 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \ 5354 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \ 5355 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \ 5356 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then 5357 echo "CONFIG_KVM=y" >> $config_target_mak 5358 if test "$vhost_net" = "yes" ; then 5359 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 5360 fi 5361 fi 5362esac 5363if test "$target_bigendian" = "yes" ; then 5364 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 5365fi 5366if test "$target_softmmu" = "yes" ; then 5367 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 5368fi 5369if test "$target_user_only" = "yes" ; then 5370 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 5371 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 5372fi 5373if test "$target_linux_user" = "yes" ; then 5374 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 5375fi 5376list="" 5377if test ! -z "$gdb_xml_files" ; then 5378 for x in $gdb_xml_files; do 5379 list="$list $source_path/gdb-xml/$x" 5380 done 5381 echo "TARGET_XML_FILES=$list" >> $config_target_mak 5382fi 5383 5384if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 5385 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 5386fi 5387if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 5388 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 5389fi 5390if test "$target_bsd_user" = "yes" ; then 5391 echo "CONFIG_BSD_USER=y" >> $config_target_mak 5392fi 5393 5394# generate QEMU_CFLAGS/LDFLAGS for targets 5395 5396cflags="" 5397ldflags="" 5398 5399for i in $ARCH $TARGET_BASE_ARCH ; do 5400 case "$i" in 5401 alpha) 5402 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 5403 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak 5404 ;; 5405 aarch64) 5406 if test -n "${cxx}"; then 5407 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 5408 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 5409 fi 5410 ;; 5411 arm) 5412 echo "CONFIG_ARM_DIS=y" >> $config_target_mak 5413 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak 5414 if test -n "${cxx}"; then 5415 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 5416 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 5417 fi 5418 ;; 5419 cris) 5420 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 5421 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak 5422 ;; 5423 hppa) 5424 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 5425 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak 5426 ;; 5427 i386|x86_64|x32) 5428 echo "CONFIG_I386_DIS=y" >> $config_target_mak 5429 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak 5430 ;; 5431 ia64*) 5432 echo "CONFIG_IA64_DIS=y" >> $config_target_mak 5433 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak 5434 ;; 5435 lm32) 5436 echo "CONFIG_LM32_DIS=y" >> $config_target_mak 5437 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak 5438 ;; 5439 m68k) 5440 echo "CONFIG_M68K_DIS=y" >> $config_target_mak 5441 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak 5442 ;; 5443 microblaze*) 5444 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 5445 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak 5446 ;; 5447 mips*) 5448 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 5449 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak 5450 ;; 5451 moxie*) 5452 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak 5453 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak 5454 ;; 5455 or32) 5456 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak 5457 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak 5458 ;; 5459 ppc*) 5460 echo "CONFIG_PPC_DIS=y" >> $config_target_mak 5461 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak 5462 ;; 5463 s390*) 5464 echo "CONFIG_S390_DIS=y" >> $config_target_mak 5465 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak 5466 ;; 5467 sh4) 5468 echo "CONFIG_SH4_DIS=y" >> $config_target_mak 5469 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak 5470 ;; 5471 sparc*) 5472 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 5473 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak 5474 ;; 5475 xtensa*) 5476 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak 5477 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak 5478 ;; 5479 esac 5480done 5481if test "$tcg_interpreter" = "yes" ; then 5482 echo "CONFIG_TCI_DIS=y" >> $config_target_mak 5483 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak 5484fi 5485 5486case "$ARCH" in 5487alpha) 5488 # Ensure there's only a single GP 5489 cflags="-msmall-data $cflags" 5490;; 5491esac 5492 5493if test "$gprof" = "yes" ; then 5494 echo "TARGET_GPROF=yes" >> $config_target_mak 5495 if test "$target_linux_user" = "yes" ; then 5496 cflags="-p $cflags" 5497 ldflags="-p $ldflags" 5498 fi 5499 if test "$target_softmmu" = "yes" ; then 5500 ldflags="-p $ldflags" 5501 echo "GPROF_CFLAGS=-p" >> $config_target_mak 5502 fi 5503fi 5504 5505if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 5506 ldflags="$ldflags $textseg_ldflags" 5507fi 5508 5509echo "LDFLAGS+=$ldflags" >> $config_target_mak 5510echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 5511 5512done # for target in $targets 5513 5514if [ "$pixman" = "internal" ]; then 5515 echo "config-host.h: subdir-pixman" >> $config_host_mak 5516fi 5517 5518if test "$rdma" = "yes" ; then 5519echo "CONFIG_RDMA=y" >> $config_host_mak 5520fi 5521 5522if [ "$dtc_internal" = "yes" ]; then 5523 echo "config-host.h: subdir-dtc" >> $config_host_mak 5524fi 5525 5526if test "$numa" = "yes"; then 5527 echo "CONFIG_NUMA=y" >> $config_host_mak 5528fi 5529 5530if test "$ccache_cpp2" = "yes"; then 5531 echo "export CCACHE_CPP2=y" >> $config_host_mak 5532fi 5533 5534# build tree in object directory in case the source is not in the current directory 5535DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" 5536DIRS="$DIRS fsdev" 5537DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 5538DIRS="$DIRS roms/seabios roms/vgabios" 5539DIRS="$DIRS qapi-generated" 5540FILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 5541FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 5542FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 5543FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 5544FILES="$FILES pc-bios/spapr-rtas/Makefile" 5545FILES="$FILES pc-bios/s390-ccw/Makefile" 5546FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 5547FILES="$FILES pc-bios/qemu-icon.bmp" 5548for bios_file in \ 5549 $source_path/pc-bios/*.bin \ 5550 $source_path/pc-bios/*.aml \ 5551 $source_path/pc-bios/*.rom \ 5552 $source_path/pc-bios/*.dtb \ 5553 $source_path/pc-bios/*.img \ 5554 $source_path/pc-bios/openbios-* \ 5555 $source_path/pc-bios/u-boot.* \ 5556 $source_path/pc-bios/palcode-* 5557do 5558 FILES="$FILES pc-bios/`basename $bios_file`" 5559done 5560for test_file in `find $source_path/tests/acpi-test-data -type f` 5561do 5562 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`" 5563done 5564mkdir -p $DIRS 5565for f in $FILES ; do 5566 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 5567 symlink "$source_path/$f" "$f" 5568 fi 5569done 5570 5571# temporary config to build submodules 5572for rom in seabios vgabios ; do 5573 config_mak=roms/$rom/config.mak 5574 echo "# Automatically generated by configure - do not modify" > $config_mak 5575 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 5576 echo "AS=$as" >> $config_mak 5577 echo "CC=$cc" >> $config_mak 5578 echo "BCC=bcc" >> $config_mak 5579 echo "CPP=$cpp" >> $config_mak 5580 echo "OBJCOPY=objcopy" >> $config_mak 5581 echo "IASL=$iasl" >> $config_mak 5582 echo "LD=$ld" >> $config_mak 5583done 5584 5585# set up qemu-iotests in this build directory 5586iotests_common_env="tests/qemu-iotests/common.env" 5587iotests_check="tests/qemu-iotests/check" 5588 5589echo "# Automatically generated by configure - do not modify" > "$iotests_common_env" 5590echo >> "$iotests_common_env" 5591echo "export PYTHON='$python'" >> "$iotests_common_env" 5592 5593if [ ! -e "$iotests_check" ]; then 5594 symlink "$source_path/$iotests_check" "$iotests_check" 5595fi 5596 5597# Save the configure command line for later reuse. 5598cat <<EOD >config.status 5599#!/bin/sh 5600# Generated by configure. 5601# Run this file to recreate the current configuration. 5602# Compiler output produced by configure, useful for debugging 5603# configure, is in config.log if it exists. 5604EOD 5605printf "exec" >>config.status 5606printf " '%s'" "$0" "$@" >>config.status 5607echo >>config.status 5608chmod +x config.status 5609 5610rm -r "$TMPDIR1" 5611