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