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