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