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