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