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