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