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="$optarg $LDFLAGS" 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-modules enable modules support 1286 --enable-debug-tcg enable TCG debugging 1287 --disable-debug-tcg disable TCG debugging (default) 1288 --enable-debug-info enable debugging information (default) 1289 --disable-debug-info disable debugging information 1290 --enable-debug enable common debug build options 1291 --enable-sparse enable sparse checker 1292 --disable-sparse disable sparse checker (default) 1293 --disable-strip disable stripping binaries 1294 --disable-werror disable compilation abort on warning 1295 --disable-stack-protector disable compiler-provided stack protection 1296 --disable-sdl disable SDL 1297 --enable-sdl enable SDL 1298 --with-sdlabi select preferred SDL ABI 1.2 or 2.0 1299 --disable-gtk disable gtk UI 1300 --enable-gtk enable gtk UI 1301 --with-gtkabi select preferred GTK ABI 2.0 or 3.0 1302 --disable-virtfs disable VirtFS 1303 --enable-virtfs enable VirtFS 1304 --disable-vnc disable VNC 1305 --enable-vnc enable VNC 1306 --disable-cocoa disable Cocoa (Mac OS X only) 1307 --enable-cocoa enable Cocoa (default on Mac OS X) 1308 --audio-drv-list=LIST set audio drivers list: 1309 Available drivers: $audio_possible_drivers 1310 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 1311 --block-drv-rw-whitelist=L 1312 set block driver read-write whitelist 1313 (affects only QEMU, not qemu-img) 1314 --block-drv-ro-whitelist=L 1315 set block driver read-only whitelist 1316 (affects only QEMU, not qemu-img) 1317 --disable-xen disable xen backend driver support 1318 --enable-xen enable xen backend driver support 1319 --disable-xen-pci-passthrough 1320 --enable-xen-pci-passthrough 1321 --disable-brlapi disable BrlAPI 1322 --enable-brlapi enable BrlAPI 1323 --disable-vnc-tls disable TLS encryption for VNC server 1324 --enable-vnc-tls enable TLS encryption for VNC server 1325 --disable-vnc-sasl disable SASL encryption for VNC server 1326 --enable-vnc-sasl enable SASL encryption for VNC server 1327 --disable-vnc-jpeg disable JPEG lossy compression for VNC server 1328 --enable-vnc-jpeg enable JPEG lossy compression for VNC server 1329 --disable-vnc-png disable PNG compression for VNC server (default) 1330 --enable-vnc-png enable PNG compression for VNC server 1331 --disable-vnc-ws disable Websockets support for VNC server 1332 --enable-vnc-ws enable Websockets support for VNC server 1333 --disable-curses disable curses output 1334 --enable-curses enable curses output 1335 --disable-curl disable curl connectivity 1336 --enable-curl enable curl connectivity 1337 --disable-fdt disable fdt device tree 1338 --enable-fdt enable fdt device tree 1339 --disable-bluez disable bluez stack connectivity 1340 --enable-bluez enable bluez stack connectivity 1341 --disable-slirp disable SLIRP userspace network connectivity 1342 --disable-kvm disable KVM acceleration support 1343 --enable-kvm enable KVM acceleration support 1344 --disable-rdma disable RDMA-based migration support 1345 --enable-rdma enable RDMA-based migration support 1346 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 1347 --enable-system enable all system emulation targets 1348 --disable-system disable all system emulation targets 1349 --enable-user enable supported user emulation targets 1350 --disable-user disable all user emulation targets 1351 --enable-linux-user enable all linux usermode emulation targets 1352 --disable-linux-user disable all linux usermode emulation targets 1353 --enable-bsd-user enable all BSD usermode emulation targets 1354 --disable-bsd-user disable all BSD usermode emulation targets 1355 --enable-guest-base enable GUEST_BASE support for usermode 1356 emulation targets 1357 --disable-guest-base disable GUEST_BASE support 1358 --enable-pie build Position Independent Executables 1359 --disable-pie do not build Position Independent Executables 1360 --oss-lib path to OSS library 1361 --cpu=CPU Build for host CPU [$cpu] 1362 --disable-uuid disable uuid support 1363 --enable-uuid enable uuid support 1364 --disable-vde disable support for vde network 1365 --enable-vde enable support for vde network 1366 --disable-netmap disable support for netmap network 1367 --enable-netmap enable support for netmap network 1368 --disable-linux-aio disable Linux AIO support 1369 --enable-linux-aio enable Linux AIO support 1370 --disable-cap-ng disable libcap-ng support 1371 --enable-cap-ng enable libcap-ng support 1372 --disable-attr disable attr and xattr support 1373 --enable-attr enable attr and xattr support 1374 --disable-blobs disable installing provided firmware blobs 1375 --enable-docs enable documentation build 1376 --disable-docs disable documentation build 1377 --disable-vhost-net disable vhost-net acceleration support 1378 --enable-vhost-net enable vhost-net acceleration support 1379 --enable-trace-backends=B Set trace backend 1380 Available backends: $($python $source_path/scripts/tracetool.py --list-backends) 1381 --with-trace-file=NAME Full PATH,NAME of file to store traces 1382 Default:trace-<pid> 1383 --disable-spice disable spice 1384 --enable-spice enable spice 1385 --enable-rbd enable building the rados block device (rbd) 1386 --disable-libiscsi disable iscsi support 1387 --enable-libiscsi enable iscsi support 1388 --disable-libnfs disable nfs support 1389 --enable-libnfs enable nfs support 1390 --disable-smartcard-nss disable smartcard nss support 1391 --enable-smartcard-nss enable smartcard nss support 1392 --disable-libusb disable libusb (for usb passthrough) 1393 --enable-libusb enable libusb (for usb passthrough) 1394 --disable-usb-redir disable usb network redirection support 1395 --enable-usb-redir enable usb network redirection support 1396 --enable-lzo enable the support of lzo compression library 1397 --enable-snappy enable the support of snappy compression library 1398 --enable-bzip2 enable the support of bzip2 compression library (for 1399 reading bzip2-compressed dmg images) 1400 --disable-guest-agent disable building of the QEMU Guest Agent 1401 --enable-guest-agent enable building of the QEMU Guest Agent 1402 --enable-guest-agent-msi enable building guest agent Windows MSI installation package 1403 --disable-guest-agent-msi disable building guest agent Windows MSI installation 1404 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1405 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1406 --disable-seccomp disable seccomp support 1407 --enable-seccomp enable seccomp support 1408 --with-coroutine=BACKEND coroutine backend. Supported options: 1409 gthread, ucontext, sigaltstack, windows 1410 --disable-coroutine-pool disable coroutine freelist (worse performance) 1411 --enable-coroutine-pool enable coroutine freelist (better performance) 1412 --enable-glusterfs enable GlusterFS backend 1413 --disable-glusterfs disable GlusterFS backend 1414 --enable-archipelago enable Archipelago backend 1415 --disable-archipelago disable Archipelago backend 1416 --enable-gcov enable test coverage analysis with gcov 1417 --gcov=GCOV use specified gcov [$gcov_tool] 1418 --disable-tpm disable TPM support 1419 --enable-tpm enable TPM support 1420 --disable-libssh2 disable ssh block device support 1421 --enable-libssh2 enable ssh block device support 1422 --disable-vhdx disable support for the Microsoft VHDX image format 1423 --enable-vhdx enable support for the Microsoft VHDX image format 1424 --disable-quorum disable quorum block filter support 1425 --enable-quorum enable quorum block filter support 1426 --disable-numa disable libnuma support 1427 --enable-numa enable libnuma support 1428 --disable-tcmalloc disable tcmalloc support 1429 --enable-tcmalloc enable tcmalloc support 1430 1431NOTE: The object files are built at the place where configure is launched 1432EOF 1433exit 0 1434fi 1435 1436# Now we have handled --enable-tcg-interpreter and know we're not just 1437# printing the help message, bail out if the host CPU isn't supported. 1438if test "$ARCH" = "unknown"; then 1439 if test "$tcg_interpreter" = "yes" ; then 1440 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1441 ARCH=tci 1442 else 1443 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1444 fi 1445fi 1446 1447# Consult white-list to determine whether to enable werror 1448# by default. Only enable by default for git builds 1449z_version=`cut -f3 -d. $source_path/VERSION` 1450 1451if test -z "$werror" ; then 1452 if test -d "$source_path/.git" -a \ 1453 "$linux" = "yes" ; then 1454 werror="yes" 1455 else 1456 werror="no" 1457 fi 1458fi 1459 1460# check that the C compiler works. 1461write_c_skeleton; 1462if compile_object ; then 1463 : C compiler works ok 1464else 1465 error_exit "\"$cc\" either does not exist or does not work" 1466fi 1467 1468# Check that the C++ compiler exists and works with the C compiler 1469if has $cxx; then 1470 cat > $TMPC <<EOF 1471int c_function(void); 1472int main(void) { return c_function(); } 1473EOF 1474 1475 compile_object 1476 1477 cat > $TMPCXX <<EOF 1478extern "C" { 1479 int c_function(void); 1480} 1481int c_function(void) { return 42; } 1482EOF 1483 1484 update_cxxflags 1485 1486 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then 1487 # C++ compiler $cxx works ok with C compiler $cc 1488 : 1489 else 1490 echo "C++ compiler $cxx does not work with C compiler $cc" 1491 echo "Disabling C++ specific optional code" 1492 cxx= 1493 fi 1494else 1495 echo "No C++ compiler available; disabling C++ specific optional code" 1496 cxx= 1497fi 1498 1499gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 1500gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 1501gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 1502gcc_flags="-Wendif-labels $gcc_flags" 1503gcc_flags="-Wno-initializer-overrides $gcc_flags" 1504gcc_flags="-Wno-string-plus-int $gcc_flags" 1505# Note that we do not add -Werror to gcc_flags here, because that would 1506# enable it for all configure tests. If a configure test failed due 1507# to -Werror this would just silently disable some features, 1508# so it's too error prone. 1509 1510cc_has_warning_flag() { 1511 write_c_skeleton; 1512 1513 # Use the positive sense of the flag when testing for -Wno-wombat 1514 # support (gcc will happily accept the -Wno- form of unknown 1515 # warning options). 1516 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 1517 compile_prog "-Werror $optflag" "" 1518} 1519 1520for flag in $gcc_flags; do 1521 if cc_has_warning_flag $flag ; then 1522 QEMU_CFLAGS="$QEMU_CFLAGS $flag" 1523 fi 1524done 1525 1526if test "$stack_protector" != "no"; then 1527 gcc_flags="-fstack-protector-strong -fstack-protector-all" 1528 sp_on=0 1529 for flag in $gcc_flags; do 1530 # We need to check both a compile and a link, since some compiler 1531 # setups fail only on a .c->.o compile and some only at link time 1532 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC && 1533 compile_prog "-Werror $flag" ""; then 1534 QEMU_CFLAGS="$QEMU_CFLAGS $flag" 1535 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag" 1536 sp_on=1 1537 break 1538 fi 1539 done 1540 if test "$stack_protector" = yes; then 1541 if test $sp_on = 0; then 1542 error_exit "Stack protector not supported" 1543 fi 1544 fi 1545fi 1546 1547# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and 1548# large functions that use global variables. The bug is in all releases of 1549# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in 1550# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013. 1551cat > $TMPC << EOF 1552#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2)) 1553int main(void) { return 0; } 1554#else 1555#error No bug in this compiler. 1556#endif 1557EOF 1558if compile_prog "-Werror -fno-gcse" "" ; then 1559 TRANSLATE_OPT_CFLAGS=-fno-gcse 1560fi 1561 1562if test "$static" = "yes" ; then 1563 if test "$modules" = "yes" ; then 1564 error_exit "static and modules are mutually incompatible" 1565 fi 1566 if test "$pie" = "yes" ; then 1567 error_exit "static and pie are mutually incompatible" 1568 else 1569 pie="no" 1570 fi 1571fi 1572 1573# Unconditional check for compiler __thread support 1574 cat > $TMPC << EOF 1575static __thread int tls_var; 1576int main(void) { return tls_var; } 1577EOF 1578 1579if ! compile_prog "-Werror" "" ; then 1580 error_exit "Your compiler does not support the __thread specifier for " \ 1581 "Thread-Local Storage (TLS). Please upgrade to a version that does." 1582fi 1583 1584if test "$pie" = ""; then 1585 case "$cpu-$targetos" in 1586 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 1587 ;; 1588 *) 1589 pie="no" 1590 ;; 1591 esac 1592fi 1593 1594if test "$pie" != "no" ; then 1595 cat > $TMPC << EOF 1596 1597#ifdef __linux__ 1598# define THREAD __thread 1599#else 1600# define THREAD 1601#endif 1602 1603static THREAD int tls_var; 1604 1605int main(void) { return tls_var; } 1606 1607EOF 1608 if compile_prog "-fPIE -DPIE" "-pie"; then 1609 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 1610 LDFLAGS="-pie $LDFLAGS" 1611 pie="yes" 1612 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 1613 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 1614 fi 1615 else 1616 if test "$pie" = "yes"; then 1617 error_exit "PIE not available due to missing toolchain support" 1618 else 1619 echo "Disabling PIE due to missing toolchain support" 1620 pie="no" 1621 fi 1622 fi 1623 1624 if compile_prog "-Werror -fno-pie" "-nopie"; then 1625 CFLAGS_NOPIE="-fno-pie" 1626 LDFLAGS_NOPIE="-nopie" 1627 fi 1628fi 1629 1630# check for broken gcc and libtool in RHEL5 1631if test -n "$libtool" -a "$pie" != "no" ; then 1632 cat > $TMPC <<EOF 1633 1634void *f(unsigned char *buf, int len); 1635void *g(unsigned char *buf, int len); 1636 1637void * 1638f(unsigned char *buf, int len) 1639{ 1640 return (void*)0L; 1641} 1642 1643void * 1644g(unsigned char *buf, int len) 1645{ 1646 return f(buf, len); 1647} 1648 1649EOF 1650 if ! libtool_prog; then 1651 echo "Disabling libtool due to broken toolchain support" 1652 libtool= 1653 fi 1654fi 1655 1656########################################## 1657# __sync_fetch_and_and requires at least -march=i486. Many toolchains 1658# use i686 as default anyway, but for those that don't, an explicit 1659# specification is necessary 1660 1661if test "$cpu" = "i386"; then 1662 cat > $TMPC << EOF 1663static int sfaa(int *ptr) 1664{ 1665 return __sync_fetch_and_and(ptr, 0); 1666} 1667 1668int main(void) 1669{ 1670 int val = 42; 1671 val = __sync_val_compare_and_swap(&val, 0, 1); 1672 sfaa(&val); 1673 return val; 1674} 1675EOF 1676 if ! compile_prog "" "" ; then 1677 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 1678 fi 1679fi 1680 1681######################################### 1682# Solaris specific configure tool chain decisions 1683 1684if test "$solaris" = "yes" ; then 1685 if has $install; then 1686 : 1687 else 1688 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 1689 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 1690 "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1691 fi 1692 if test "`path_of $install`" = "/usr/sbin/install" ; then 1693 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 1694 "try ginstall from the GNU fileutils available from www.blastwave.org" \ 1695 "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1696 fi 1697 if has ar; then 1698 : 1699 else 1700 if test -f /usr/ccs/bin/ar ; then 1701 error_exit "No path includes ar" \ 1702 "Add /usr/ccs/bin to your path and rerun configure" 1703 fi 1704 error_exit "No path includes ar" 1705 fi 1706fi 1707 1708if test -z "${target_list+xxx}" ; then 1709 target_list="$default_target_list" 1710else 1711 target_list=`echo "$target_list" | sed -e 's/,/ /g'` 1712fi 1713 1714# Check that we recognised the target name; this allows a more 1715# friendly error message than if we let it fall through. 1716for target in $target_list; do 1717 case " $default_target_list " in 1718 *" $target "*) 1719 ;; 1720 *) 1721 error_exit "Unknown target name '$target'" 1722 ;; 1723 esac 1724done 1725 1726# see if system emulation was really requested 1727case " $target_list " in 1728 *"-softmmu "*) softmmu=yes 1729 ;; 1730 *) softmmu=no 1731 ;; 1732esac 1733 1734feature_not_found() { 1735 feature=$1 1736 remedy=$2 1737 1738 error_exit "User requested feature $feature" \ 1739 "configure was not able to find it." \ 1740 "$remedy" 1741} 1742 1743# --- 1744# big/little endian test 1745cat > $TMPC << EOF 1746short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 1747short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 1748extern int foo(short *, short *); 1749int main(int argc, char *argv[]) { 1750 return foo(big_endian, little_endian); 1751} 1752EOF 1753 1754if compile_object ; then 1755 if grep -q BiGeNdIaN $TMPO ; then 1756 bigendian="yes" 1757 elif grep -q LiTtLeEnDiAn $TMPO ; then 1758 bigendian="no" 1759 else 1760 echo big/little test failed 1761 fi 1762else 1763 echo big/little test failed 1764fi 1765 1766########################################## 1767# L2TPV3 probe 1768 1769cat > $TMPC <<EOF 1770#include <sys/socket.h> 1771#include <linux/ip.h> 1772int main(void) { return sizeof(struct mmsghdr); } 1773EOF 1774if compile_prog "" "" ; then 1775 l2tpv3=yes 1776else 1777 l2tpv3=no 1778fi 1779 1780########################################## 1781# pkg-config probe 1782 1783if ! has "$pkg_config_exe"; then 1784 error_exit "pkg-config binary '$pkg_config_exe' not found" 1785fi 1786 1787########################################## 1788# NPTL probe 1789 1790if test "$linux_user" = "yes"; then 1791 cat > $TMPC <<EOF 1792#include <sched.h> 1793#include <linux/futex.h> 1794int main(void) { 1795#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1796#error bork 1797#endif 1798 return 0; 1799} 1800EOF 1801 if ! compile_object ; then 1802 feature_not_found "nptl" "Install glibc and linux kernel headers." 1803 fi 1804fi 1805 1806########################################## 1807# zlib check 1808 1809if test "$zlib" != "no" ; then 1810 cat > $TMPC << EOF 1811#include <zlib.h> 1812int main(void) { zlibVersion(); return 0; } 1813EOF 1814 if compile_prog "" "-lz" ; then 1815 : 1816 else 1817 error_exit "zlib check failed" \ 1818 "Make sure to have the zlib libs and headers installed." 1819 fi 1820fi 1821LIBS="$LIBS -lz" 1822 1823########################################## 1824# lzo check 1825 1826if test "$lzo" != "no" ; then 1827 cat > $TMPC << EOF 1828#include <lzo/lzo1x.h> 1829int main(void) { lzo_version(); return 0; } 1830EOF 1831 if compile_prog "" "-llzo2" ; then 1832 libs_softmmu="$libs_softmmu -llzo2" 1833 lzo="yes" 1834 else 1835 if test "$lzo" = "yes"; then 1836 feature_not_found "liblzo2" "Install liblzo2 devel" 1837 fi 1838 lzo="no" 1839 fi 1840fi 1841 1842########################################## 1843# snappy check 1844 1845if test "$snappy" != "no" ; then 1846 cat > $TMPC << EOF 1847#include <snappy-c.h> 1848int main(void) { snappy_max_compressed_length(4096); return 0; } 1849EOF 1850 if compile_prog "" "-lsnappy" ; then 1851 libs_softmmu="$libs_softmmu -lsnappy" 1852 snappy="yes" 1853 else 1854 if test "$snappy" = "yes"; then 1855 feature_not_found "libsnappy" "Install libsnappy devel" 1856 fi 1857 snappy="no" 1858 fi 1859fi 1860 1861########################################## 1862# bzip2 check 1863 1864if test "$bzip2" != "no" ; then 1865 cat > $TMPC << EOF 1866#include <bzlib.h> 1867int main(void) { BZ2_bzlibVersion(); return 0; } 1868EOF 1869 if compile_prog "" "-lbz2" ; then 1870 bzip2="yes" 1871 else 1872 if test "$bzip2" = "yes"; then 1873 feature_not_found "libbzip2" "Install libbzip2 devel" 1874 fi 1875 bzip2="no" 1876 fi 1877fi 1878 1879########################################## 1880# libseccomp check 1881 1882if test "$seccomp" != "no" ; then 1883 if test "$cpu" = "i386" || test "$cpu" = "x86_64" && 1884 $pkg_config --atleast-version=2.1.1 libseccomp; then 1885 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`" 1886 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`" 1887 seccomp="yes" 1888 else 1889 if test "$seccomp" = "yes"; then 1890 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1" 1891 fi 1892 seccomp="no" 1893 fi 1894fi 1895########################################## 1896# xen probe 1897 1898if test "$xen" != "no" ; then 1899 xen_libs="-lxenstore -lxenctrl -lxenguest" 1900 1901 # First we test whether Xen headers and libraries are available. 1902 # If no, we are done and there is no Xen support. 1903 # If yes, more tests are run to detect the Xen version. 1904 1905 # Xen (any) 1906 cat > $TMPC <<EOF 1907#include <xenctrl.h> 1908int main(void) { 1909 return 0; 1910} 1911EOF 1912 if ! compile_prog "" "$xen_libs" ; then 1913 # Xen not found 1914 if test "$xen" = "yes" ; then 1915 feature_not_found "xen" "Install xen devel" 1916 fi 1917 xen=no 1918 1919 # Xen unstable 1920 elif 1921 cat > $TMPC <<EOF && 1922#include <xenctrl.h> 1923#include <xenstore.h> 1924#include <stdint.h> 1925#include <xen/hvm/hvm_info_table.h> 1926#if !defined(HVM_MAX_VCPUS) 1927# error HVM_MAX_VCPUS not defined 1928#endif 1929int main(void) { 1930 xc_interface *xc; 1931 xs_daemon_open(); 1932 xc = xc_interface_open(0, 0, 0); 1933 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1934 xc_gnttab_open(NULL, 0); 1935 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1936 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 1937 xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 1938 return 0; 1939} 1940EOF 1941 compile_prog "" "$xen_libs" 1942 then 1943 xen_ctrl_version=450 1944 xen=yes 1945 1946 elif 1947 cat > $TMPC <<EOF && 1948#include <xenctrl.h> 1949#include <xenstore.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 xc_interface *xc; 1957 xs_daemon_open(); 1958 xc = xc_interface_open(0, 0, 0); 1959 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1960 xc_gnttab_open(NULL, 0); 1961 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1962 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 1963 return 0; 1964} 1965EOF 1966 compile_prog "" "$xen_libs" 1967 then 1968 xen_ctrl_version=420 1969 xen=yes 1970 1971 elif 1972 cat > $TMPC <<EOF && 1973#include <xenctrl.h> 1974#include <xs.h> 1975#include <stdint.h> 1976#include <xen/hvm/hvm_info_table.h> 1977#if !defined(HVM_MAX_VCPUS) 1978# error HVM_MAX_VCPUS not defined 1979#endif 1980int main(void) { 1981 xs_daemon_open(); 1982 xc_interface_open(0, 0, 0); 1983 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1984 xc_gnttab_open(NULL, 0); 1985 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1986 return 0; 1987} 1988EOF 1989 compile_prog "" "$xen_libs" 1990 then 1991 xen_ctrl_version=410 1992 xen=yes 1993 1994 # Xen 4.0.0 1995 elif 1996 cat > $TMPC <<EOF && 1997#include <xenctrl.h> 1998#include <xs.h> 1999#include <stdint.h> 2000#include <xen/hvm/hvm_info_table.h> 2001#if !defined(HVM_MAX_VCPUS) 2002# error HVM_MAX_VCPUS not defined 2003#endif 2004int main(void) { 2005 struct xen_add_to_physmap xatp = { 2006 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 2007 }; 2008 xs_daemon_open(); 2009 xc_interface_open(); 2010 xc_gnttab_open(); 2011 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2012 xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 2013 return 0; 2014} 2015EOF 2016 compile_prog "" "$xen_libs" 2017 then 2018 xen_ctrl_version=400 2019 xen=yes 2020 2021 # Xen 3.4.0 2022 elif 2023 cat > $TMPC <<EOF && 2024#include <xenctrl.h> 2025#include <xs.h> 2026int main(void) { 2027 struct xen_add_to_physmap xatp = { 2028 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 2029 }; 2030 xs_daemon_open(); 2031 xc_interface_open(); 2032 xc_gnttab_open(); 2033 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2034 xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 2035 return 0; 2036} 2037EOF 2038 compile_prog "" "$xen_libs" 2039 then 2040 xen_ctrl_version=340 2041 xen=yes 2042 2043 # Xen 3.3.0 2044 elif 2045 cat > $TMPC <<EOF && 2046#include <xenctrl.h> 2047#include <xs.h> 2048int main(void) { 2049 xs_daemon_open(); 2050 xc_interface_open(); 2051 xc_gnttab_open(); 2052 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2053 return 0; 2054} 2055EOF 2056 compile_prog "" "$xen_libs" 2057 then 2058 xen_ctrl_version=330 2059 xen=yes 2060 2061 # Xen version unsupported 2062 else 2063 if test "$xen" = "yes" ; then 2064 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)" 2065 fi 2066 xen=no 2067 fi 2068 2069 if test "$xen" = yes; then 2070 libs_softmmu="$xen_libs $libs_softmmu" 2071 fi 2072fi 2073 2074if test "$xen_pci_passthrough" != "no"; then 2075 if test "$xen" = "yes" && test "$linux" = "yes" && 2076 test "$xen_ctrl_version" -ge 340; then 2077 xen_pci_passthrough=yes 2078 else 2079 if test "$xen_pci_passthrough" = "yes"; then 2080 if test "$xen_ctrl_version" -lt 340; then 2081 error_exit "User requested feature Xen PCI Passthrough" \ 2082 "This feature does not work with Xen 3.3" 2083 fi 2084 error_exit "User requested feature Xen PCI Passthrough" \ 2085 " but this feature requires /sys from Linux" 2086 fi 2087 xen_pci_passthrough=no 2088 fi 2089fi 2090 2091########################################## 2092# libtool probe 2093 2094if ! has $libtool; then 2095 libtool= 2096fi 2097 2098# MacOSX ships with a libtool which isn't the GNU one; weed this 2099# out by checking whether libtool supports the --version switch 2100if test -n "$libtool"; then 2101 if ! "$libtool" --version >/dev/null 2>&1; then 2102 libtool= 2103 fi 2104fi 2105 2106########################################## 2107# Sparse probe 2108if test "$sparse" != "no" ; then 2109 if has cgcc; then 2110 sparse=yes 2111 else 2112 if test "$sparse" = "yes" ; then 2113 feature_not_found "sparse" "Install sparse binary" 2114 fi 2115 sparse=no 2116 fi 2117fi 2118 2119########################################## 2120# X11 probe 2121x11_cflags= 2122x11_libs=-lX11 2123if $pkg_config --exists "x11"; then 2124 x11_cflags=`$pkg_config --cflags x11` 2125 x11_libs=`$pkg_config --libs x11` 2126fi 2127 2128########################################## 2129# GTK probe 2130 2131if test "$gtkabi" = ""; then 2132 # The GTK ABI was not specified explicitly, so try whether 2.0 is available. 2133 # Use 3.0 as a fallback if that is available. 2134 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then 2135 gtkabi=2.0 2136 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then 2137 gtkabi=3.0 2138 else 2139 gtkabi=2.0 2140 fi 2141fi 2142 2143if test "$gtk" != "no"; then 2144 gtkpackage="gtk+-$gtkabi" 2145 gtkx11package="gtk+-x11-$gtkabi" 2146 if test "$gtkabi" = "3.0" ; then 2147 gtkversion="3.0.0" 2148 else 2149 gtkversion="2.18.0" 2150 fi 2151 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 2152 gtk_cflags=`$pkg_config --cflags $gtkpackage` 2153 gtk_libs=`$pkg_config --libs $gtkpackage` 2154 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 2155 gtk_cflags="$gtk_cflags $x11_cflags" 2156 gtk_libs="$gtk_libs $x11_libs" 2157 fi 2158 libs_softmmu="$gtk_libs $libs_softmmu" 2159 gtk="yes" 2160 elif test "$gtk" = "yes"; then 2161 feature_not_found "gtk" "Install gtk2 or gtk3 devel" 2162 else 2163 gtk="no" 2164 fi 2165fi 2166 2167########################################## 2168# VTE probe 2169 2170if test "$vte" != "no"; then 2171 if test "$gtkabi" = "3.0"; then 2172 vtepackage="vte-2.90" 2173 vteversion="0.32.0" 2174 else 2175 vtepackage="vte" 2176 vteversion="0.24.0" 2177 fi 2178 if $pkg_config --exists "$vtepackage >= $vteversion"; then 2179 vte_cflags=`$pkg_config --cflags $vtepackage` 2180 vte_libs=`$pkg_config --libs $vtepackage` 2181 libs_softmmu="$vte_libs $libs_softmmu" 2182 vte="yes" 2183 elif test "$vte" = "yes"; then 2184 if test "$gtkabi" = "3.0"; then 2185 feature_not_found "vte" "Install libvte-2.90 devel" 2186 else 2187 feature_not_found "vte" "Install libvte devel" 2188 fi 2189 else 2190 vte="no" 2191 fi 2192fi 2193 2194########################################## 2195# SDL probe 2196 2197# Look for sdl configuration program (pkg-config or sdl-config). Try 2198# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 2199 2200if test $sdlabi = "2.0"; then 2201 sdl_config=$sdl2_config 2202 sdlname=sdl2 2203 sdlconfigname=sdl2_config 2204else 2205 sdlname=sdl 2206 sdlconfigname=sdl_config 2207fi 2208 2209if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then 2210 sdl_config=$sdlconfigname 2211fi 2212 2213if $pkg_config $sdlname --exists; then 2214 sdlconfig="$pkg_config $sdlname" 2215 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 2216elif has ${sdl_config}; then 2217 sdlconfig="$sdl_config" 2218 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 2219else 2220 if test "$sdl" = "yes" ; then 2221 feature_not_found "sdl" "Install SDL devel" 2222 fi 2223 sdl=no 2224fi 2225if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 2226 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 2227fi 2228 2229sdl_too_old=no 2230if test "$sdl" != "no" ; then 2231 cat > $TMPC << EOF 2232#include <SDL.h> 2233#undef main /* We don't want SDL to override our main() */ 2234int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 2235EOF 2236 sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 2237 if test "$static" = "yes" ; then 2238 sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 2239 else 2240 sdl_libs=`$sdlconfig --libs 2> /dev/null` 2241 fi 2242 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 2243 if test "$_sdlversion" -lt 121 ; then 2244 sdl_too_old=yes 2245 else 2246 if test "$cocoa" = "no" ; then 2247 sdl=yes 2248 fi 2249 fi 2250 2251 # static link with sdl ? (note: sdl.pc's --static --libs is broken) 2252 if test "$sdl" = "yes" -a "$static" = "yes" ; then 2253 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 2254 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 2255 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 2256 fi 2257 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 2258 : 2259 else 2260 sdl=no 2261 fi 2262 fi # static link 2263 else # sdl not found 2264 if test "$sdl" = "yes" ; then 2265 feature_not_found "sdl" "Install SDL devel" 2266 fi 2267 sdl=no 2268 fi # sdl compile test 2269fi 2270 2271if test "$sdl" = "yes" ; then 2272 cat > $TMPC <<EOF 2273#include <SDL.h> 2274#if defined(SDL_VIDEO_DRIVER_X11) 2275#include <X11/XKBlib.h> 2276#else 2277#error No x11 support 2278#endif 2279int main(void) { return 0; } 2280EOF 2281 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 2282 sdl_cflags="$sdl_cflags $x11_cflags" 2283 sdl_libs="$sdl_libs $x11_libs" 2284 fi 2285 libs_softmmu="$sdl_libs $libs_softmmu" 2286fi 2287 2288########################################## 2289# RDMA needs OpenFabrics libraries 2290if test "$rdma" != "no" ; then 2291 cat > $TMPC <<EOF 2292#include <rdma/rdma_cma.h> 2293int main(void) { return 0; } 2294EOF 2295 rdma_libs="-lrdmacm -libverbs" 2296 if compile_prog "" "$rdma_libs" ; then 2297 rdma="yes" 2298 libs_softmmu="$libs_softmmu $rdma_libs" 2299 else 2300 if test "$rdma" = "yes" ; then 2301 error_exit \ 2302 " OpenFabrics librdmacm/libibverbs not present." \ 2303 " Your options:" \ 2304 " (1) Fast: Install infiniband packages from your distro." \ 2305 " (2) Cleanest: Install libraries from www.openfabrics.org" \ 2306 " (3) Also: Install softiwarp if you don't have RDMA hardware" 2307 fi 2308 rdma="no" 2309 fi 2310fi 2311 2312########################################## 2313# VNC TLS/WS detection 2314if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then 2315 cat > $TMPC <<EOF 2316#include <gnutls/gnutls.h> 2317int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 2318EOF 2319 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 2320 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 2321 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then 2322 if test "$vnc_tls" != "no" ; then 2323 vnc_tls=yes 2324 fi 2325 if test "$vnc_ws" != "no" ; then 2326 vnc_ws=yes 2327 fi 2328 libs_softmmu="$vnc_tls_libs $libs_softmmu" 2329 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags" 2330 else 2331 if test "$vnc_tls" = "yes" ; then 2332 feature_not_found "vnc-tls" "Install gnutls devel" 2333 fi 2334 if test "$vnc_ws" = "yes" ; then 2335 feature_not_found "vnc-ws" "Install gnutls devel" 2336 fi 2337 vnc_tls=no 2338 vnc_ws=no 2339 fi 2340fi 2341 2342########################################## 2343# Quorum probe (check for gnutls) 2344if test "$quorum" != "no" ; then 2345cat > $TMPC <<EOF 2346#include <gnutls/gnutls.h> 2347#include <gnutls/crypto.h> 2348int main(void) {char data[4096], digest[32]; 2349gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest); 2350return 0; 2351} 2352EOF 2353quorum_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 2354quorum_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 2355if compile_prog "$quorum_tls_cflags" "$quorum_tls_libs" ; then 2356 qcow_tls=yes 2357 libs_softmmu="$quorum_tls_libs $libs_softmmu" 2358 libs_tools="$quorum_tls_libs $libs_softmmu" 2359 QEMU_CFLAGS="$QEMU_CFLAGS $quorum_tls_cflags" 2360 quorum="yes" 2361else 2362 if test "$quorum" = "yes"; then 2363 feature_not_found "gnutls" "gnutls > 2.10.0 required to compile Quorum" 2364 fi 2365 quorum="no" 2366fi 2367fi 2368 2369########################################## 2370# VNC SASL detection 2371if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 2372 cat > $TMPC <<EOF 2373#include <sasl/sasl.h> 2374#include <stdio.h> 2375int main(void) { sasl_server_init(NULL, "qemu"); return 0; } 2376EOF 2377 # Assuming Cyrus-SASL installed in /usr prefix 2378 vnc_sasl_cflags="" 2379 vnc_sasl_libs="-lsasl2" 2380 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 2381 vnc_sasl=yes 2382 libs_softmmu="$vnc_sasl_libs $libs_softmmu" 2383 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 2384 else 2385 if test "$vnc_sasl" = "yes" ; then 2386 feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 2387 fi 2388 vnc_sasl=no 2389 fi 2390fi 2391 2392########################################## 2393# VNC JPEG detection 2394if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 2395cat > $TMPC <<EOF 2396#include <stdio.h> 2397#include <jpeglib.h> 2398int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 2399EOF 2400 vnc_jpeg_cflags="" 2401 vnc_jpeg_libs="-ljpeg" 2402 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 2403 vnc_jpeg=yes 2404 libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 2405 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 2406 else 2407 if test "$vnc_jpeg" = "yes" ; then 2408 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 2409 fi 2410 vnc_jpeg=no 2411 fi 2412fi 2413 2414########################################## 2415# VNC PNG detection 2416if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 2417cat > $TMPC <<EOF 2418//#include <stdio.h> 2419#include <png.h> 2420#include <stddef.h> 2421int main(void) { 2422 png_structp png_ptr; 2423 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 2424 return png_ptr != 0; 2425} 2426EOF 2427 if $pkg_config libpng --exists; then 2428 vnc_png_cflags=`$pkg_config libpng --cflags` 2429 vnc_png_libs=`$pkg_config libpng --libs` 2430 else 2431 vnc_png_cflags="" 2432 vnc_png_libs="-lpng" 2433 fi 2434 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 2435 vnc_png=yes 2436 libs_softmmu="$vnc_png_libs $libs_softmmu" 2437 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 2438 else 2439 if test "$vnc_png" = "yes" ; then 2440 feature_not_found "vnc-png" "Install libpng devel" 2441 fi 2442 vnc_png=no 2443 fi 2444fi 2445 2446########################################## 2447# fnmatch() probe, used for ACL routines 2448fnmatch="no" 2449cat > $TMPC << EOF 2450#include <fnmatch.h> 2451int main(void) 2452{ 2453 fnmatch("foo", "foo", 0); 2454 return 0; 2455} 2456EOF 2457if compile_prog "" "" ; then 2458 fnmatch="yes" 2459fi 2460 2461########################################## 2462# uuid_generate() probe, used for vdi block driver 2463# Note that on some systems (notably MacOSX) no extra library 2464# need be linked to get the uuid functions. 2465if test "$uuid" != "no" ; then 2466 uuid_libs="-luuid" 2467 cat > $TMPC << EOF 2468#include <uuid/uuid.h> 2469int main(void) 2470{ 2471 uuid_t my_uuid; 2472 uuid_generate(my_uuid); 2473 return 0; 2474} 2475EOF 2476 if compile_prog "" "" ; then 2477 uuid="yes" 2478 elif compile_prog "" "$uuid_libs" ; then 2479 uuid="yes" 2480 libs_softmmu="$uuid_libs $libs_softmmu" 2481 libs_tools="$uuid_libs $libs_tools" 2482 else 2483 if test "$uuid" = "yes" ; then 2484 feature_not_found "uuid" "Install libuuid devel" 2485 fi 2486 uuid=no 2487 fi 2488fi 2489 2490if test "$vhdx" = "yes" ; then 2491 if test "$uuid" = "no" ; then 2492 error_exit "uuid required for VHDX support" 2493 fi 2494elif test "$vhdx" != "no" ; then 2495 if test "$uuid" = "yes" ; then 2496 vhdx=yes 2497 else 2498 vhdx=no 2499 fi 2500fi 2501 2502########################################## 2503# xfsctl() probe, used for raw-posix 2504if test "$xfs" != "no" ; then 2505 cat > $TMPC << EOF 2506#include <stddef.h> /* NULL */ 2507#include <xfs/xfs.h> 2508int main(void) 2509{ 2510 xfsctl(NULL, 0, 0, NULL); 2511 return 0; 2512} 2513EOF 2514 if compile_prog "" "" ; then 2515 xfs="yes" 2516 else 2517 if test "$xfs" = "yes" ; then 2518 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 2519 fi 2520 xfs=no 2521 fi 2522fi 2523 2524########################################## 2525# vde libraries probe 2526if test "$vde" != "no" ; then 2527 vde_libs="-lvdeplug" 2528 cat > $TMPC << EOF 2529#include <libvdeplug.h> 2530int main(void) 2531{ 2532 struct vde_open_args a = {0, 0, 0}; 2533 char s[] = ""; 2534 vde_open(s, s, &a); 2535 return 0; 2536} 2537EOF 2538 if compile_prog "" "$vde_libs" ; then 2539 vde=yes 2540 libs_softmmu="$vde_libs $libs_softmmu" 2541 libs_tools="$vde_libs $libs_tools" 2542 else 2543 if test "$vde" = "yes" ; then 2544 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 2545 fi 2546 vde=no 2547 fi 2548fi 2549 2550########################################## 2551# netmap support probe 2552# Apart from looking for netmap headers, we make sure that the host API version 2553# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 2554# a minor/major version number. Minor new features will be marked with values up 2555# to 15, and if something happens that requires a change to the backend we will 2556# move above 15, submit the backend fixes and modify this two bounds. 2557if test "$netmap" != "no" ; then 2558 cat > $TMPC << EOF 2559#include <inttypes.h> 2560#include <net/if.h> 2561#include <net/netmap.h> 2562#include <net/netmap_user.h> 2563#if (NETMAP_API < 11) || (NETMAP_API > 15) 2564#error 2565#endif 2566int main(void) { return 0; } 2567EOF 2568 if compile_prog "" "" ; then 2569 netmap=yes 2570 else 2571 if test "$netmap" = "yes" ; then 2572 feature_not_found "netmap" 2573 fi 2574 netmap=no 2575 fi 2576fi 2577 2578########################################## 2579# libcap-ng library probe 2580if test "$cap_ng" != "no" ; then 2581 cap_libs="-lcap-ng" 2582 cat > $TMPC << EOF 2583#include <cap-ng.h> 2584int main(void) 2585{ 2586 capng_capability_to_name(CAPNG_EFFECTIVE); 2587 return 0; 2588} 2589EOF 2590 if compile_prog "" "$cap_libs" ; then 2591 cap_ng=yes 2592 libs_tools="$cap_libs $libs_tools" 2593 else 2594 if test "$cap_ng" = "yes" ; then 2595 feature_not_found "cap_ng" "Install libcap-ng devel" 2596 fi 2597 cap_ng=no 2598 fi 2599fi 2600 2601########################################## 2602# Sound support libraries probe 2603 2604audio_drv_probe() 2605{ 2606 drv=$1 2607 hdr=$2 2608 lib=$3 2609 exp=$4 2610 cfl=$5 2611 cat > $TMPC << EOF 2612#include <$hdr> 2613int main(void) { $exp } 2614EOF 2615 if compile_prog "$cfl" "$lib" ; then 2616 : 2617 else 2618 error_exit "$drv check failed" \ 2619 "Make sure to have the $drv libs and headers installed." 2620 fi 2621} 2622 2623audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 2624for drv in $audio_drv_list; do 2625 case $drv in 2626 alsa) 2627 audio_drv_probe $drv alsa/asoundlib.h -lasound \ 2628 "return snd_pcm_close((snd_pcm_t *)0);" 2629 libs_softmmu="-lasound $libs_softmmu" 2630 ;; 2631 2632 pa) 2633 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \ 2634 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;" 2635 libs_softmmu="-lpulse $libs_softmmu" 2636 audio_pt_int="yes" 2637 ;; 2638 2639 coreaudio) 2640 libs_softmmu="-framework CoreAudio $libs_softmmu" 2641 ;; 2642 2643 dsound) 2644 libs_softmmu="-lole32 -ldxguid $libs_softmmu" 2645 audio_win_int="yes" 2646 ;; 2647 2648 oss) 2649 libs_softmmu="$oss_lib $libs_softmmu" 2650 ;; 2651 2652 sdl|wav) 2653 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 2654 ;; 2655 2656 *) 2657 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 2658 error_exit "Unknown driver '$drv' selected" \ 2659 "Possible drivers are: $audio_possible_drivers" 2660 } 2661 ;; 2662 esac 2663done 2664 2665########################################## 2666# BrlAPI probe 2667 2668if test "$brlapi" != "no" ; then 2669 brlapi_libs="-lbrlapi" 2670 cat > $TMPC << EOF 2671#include <brlapi.h> 2672#include <stddef.h> 2673int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 2674EOF 2675 if compile_prog "" "$brlapi_libs" ; then 2676 brlapi=yes 2677 libs_softmmu="$brlapi_libs $libs_softmmu" 2678 else 2679 if test "$brlapi" = "yes" ; then 2680 feature_not_found "brlapi" "Install brlapi devel" 2681 fi 2682 brlapi=no 2683 fi 2684fi 2685 2686########################################## 2687# curses probe 2688if test "$curses" != "no" ; then 2689 if test "$mingw32" = "yes" ; then 2690 curses_list="-lpdcurses" 2691 else 2692 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses" 2693 fi 2694 curses_found=no 2695 cat > $TMPC << EOF 2696#include <curses.h> 2697int main(void) { 2698 const char *s = curses_version(); 2699 resize_term(0, 0); 2700 return s != 0; 2701} 2702EOF 2703 IFS=: 2704 for curses_lib in $curses_list; do 2705 unset IFS 2706 if compile_prog "" "$curses_lib" ; then 2707 curses_found=yes 2708 libs_softmmu="$curses_lib $libs_softmmu" 2709 break 2710 fi 2711 done 2712 unset IFS 2713 if test "$curses_found" = "yes" ; then 2714 curses=yes 2715 else 2716 if test "$curses" = "yes" ; then 2717 feature_not_found "curses" "Install ncurses devel" 2718 fi 2719 curses=no 2720 fi 2721fi 2722 2723########################################## 2724# curl probe 2725if test "$curl" != "no" ; then 2726 if $pkg_config libcurl --exists; then 2727 curlconfig="$pkg_config libcurl" 2728 else 2729 curlconfig=curl-config 2730 fi 2731 cat > $TMPC << EOF 2732#include <curl/curl.h> 2733int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 2734EOF 2735 curl_cflags=`$curlconfig --cflags 2>/dev/null` 2736 curl_libs=`$curlconfig --libs 2>/dev/null` 2737 if compile_prog "$curl_cflags" "$curl_libs" ; then 2738 curl=yes 2739 else 2740 if test "$curl" = "yes" ; then 2741 feature_not_found "curl" "Install libcurl devel" 2742 fi 2743 curl=no 2744 fi 2745fi # test "$curl" 2746 2747########################################## 2748# bluez support probe 2749if test "$bluez" != "no" ; then 2750 cat > $TMPC << EOF 2751#include <bluetooth/bluetooth.h> 2752int main(void) { return bt_error(0); } 2753EOF 2754 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null` 2755 bluez_libs=`$pkg_config --libs bluez 2> /dev/null` 2756 if compile_prog "$bluez_cflags" "$bluez_libs" ; then 2757 bluez=yes 2758 libs_softmmu="$bluez_libs $libs_softmmu" 2759 else 2760 if test "$bluez" = "yes" ; then 2761 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 2762 fi 2763 bluez="no" 2764 fi 2765fi 2766 2767########################################## 2768# glib support probe 2769 2770glib_req_ver=2.22 2771glib_modules=gthread-2.0 2772if test "$modules" = yes; then 2773 glib_modules="$glib_modules gmodule-2.0" 2774fi 2775 2776for i in $glib_modules; do 2777 if $pkg_config --atleast-version=$glib_req_ver $i; then 2778 glib_cflags=`$pkg_config --cflags $i` 2779 glib_libs=`$pkg_config --libs $i` 2780 CFLAGS="$glib_cflags $CFLAGS" 2781 LIBS="$glib_libs $LIBS" 2782 libs_qga="$glib_libs $libs_qga" 2783 else 2784 error_exit "glib-$glib_req_ver $i is required to compile QEMU" 2785 fi 2786done 2787 2788# g_test_trap_subprocess added in 2.38. Used by some tests. 2789glib_subprocess=yes 2790if ! $pkg_config --atleast-version=2.38 glib-2.0; then 2791 glib_subprocess=no 2792fi 2793 2794# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 2795cat > $TMPC << EOF 2796#include <glib.h> 2797int main(void) { return 0; } 2798EOF 2799if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 2800 if cc_has_warning_flag "-Wno-unknown-attributes"; then 2801 glib_cflags="-Wno-unknown-attributes $glib_cflags" 2802 CFLAGS="-Wno-unknown-attributes $CFLAGS" 2803 fi 2804fi 2805 2806########################################## 2807# SHA command probe for modules 2808if test "$modules" = yes; then 2809 shacmd_probe="sha1sum sha1 shasum" 2810 for c in $shacmd_probe; do 2811 if has $c; then 2812 shacmd="$c" 2813 break 2814 fi 2815 done 2816 if test "$shacmd" = ""; then 2817 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 2818 fi 2819fi 2820 2821########################################## 2822# pixman support probe 2823 2824if test "$pixman" = ""; then 2825 if test "$want_tools" = "no" -a "$softmmu" = "no"; then 2826 pixman="none" 2827 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 2828 pixman="system" 2829 else 2830 pixman="internal" 2831 fi 2832fi 2833if test "$pixman" = "none"; then 2834 if test "$want_tools" != "no" -o "$softmmu" != "no"; then 2835 error_exit "pixman disabled but system emulation or tools build" \ 2836 "enabled. You can turn off pixman only if you also" \ 2837 "disable all system emulation targets and the tools" \ 2838 "build with '--disable-tools --disable-system'." 2839 fi 2840 pixman_cflags= 2841 pixman_libs= 2842elif test "$pixman" = "system"; then 2843 # pixman version has been checked above 2844 pixman_cflags=`$pkg_config --cflags pixman-1` 2845 pixman_libs=`$pkg_config --libs pixman-1` 2846else 2847 if test ! -d ${source_path}/pixman/pixman; then 2848 error_exit "pixman >= 0.21.8 not present. Your options:" \ 2849 " (1) Preferred: Install the pixman devel package (any recent" \ 2850 " distro should have packages as Xorg needs pixman too)." \ 2851 " (2) Fetch the pixman submodule, using:" \ 2852 " git submodule update --init pixman" 2853 fi 2854 mkdir -p pixman/pixman 2855 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman" 2856 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1" 2857fi 2858 2859########################################## 2860# libcap probe 2861 2862if test "$cap" != "no" ; then 2863 cat > $TMPC <<EOF 2864#include <stdio.h> 2865#include <sys/capability.h> 2866int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 2867EOF 2868 if compile_prog "" "-lcap" ; then 2869 cap=yes 2870 else 2871 cap=no 2872 fi 2873fi 2874 2875########################################## 2876# pthread probe 2877PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 2878 2879pthread=no 2880cat > $TMPC << EOF 2881#include <pthread.h> 2882static void *f(void *p) { return NULL; } 2883int main(void) { 2884 pthread_t thread; 2885 pthread_create(&thread, 0, f, 0); 2886 return 0; 2887} 2888EOF 2889if compile_prog "" "" ; then 2890 pthread=yes 2891else 2892 for pthread_lib in $PTHREADLIBS_LIST; do 2893 if compile_prog "" "$pthread_lib" ; then 2894 pthread=yes 2895 found=no 2896 for lib_entry in $LIBS; do 2897 if test "$lib_entry" = "$pthread_lib"; then 2898 found=yes 2899 break 2900 fi 2901 done 2902 if test "$found" = "no"; then 2903 LIBS="$pthread_lib $LIBS" 2904 fi 2905 break 2906 fi 2907 done 2908fi 2909 2910if test "$mingw32" != yes -a "$pthread" = no; then 2911 error_exit "pthread check failed" \ 2912 "Make sure to have the pthread libs and headers installed." 2913fi 2914 2915# check for pthread_setname_np 2916pthread_setname_np=no 2917cat > $TMPC << EOF 2918#include <pthread.h> 2919 2920static void *f(void *p) { return NULL; } 2921int main(void) 2922{ 2923 pthread_t thread; 2924 pthread_create(&thread, 0, f, 0); 2925 pthread_setname_np(thread, "QEMU"); 2926 return 0; 2927} 2928EOF 2929if compile_prog "" "$pthread_lib" ; then 2930 pthread_setname_np=yes 2931fi 2932 2933########################################## 2934# rbd probe 2935if test "$rbd" != "no" ; then 2936 cat > $TMPC <<EOF 2937#include <stdio.h> 2938#include <rbd/librbd.h> 2939int main(void) { 2940 rados_t cluster; 2941 rados_create(&cluster, NULL); 2942 return 0; 2943} 2944EOF 2945 rbd_libs="-lrbd -lrados" 2946 if compile_prog "" "$rbd_libs" ; then 2947 rbd=yes 2948 else 2949 if test "$rbd" = "yes" ; then 2950 feature_not_found "rados block device" "Install librbd/ceph devel" 2951 fi 2952 rbd=no 2953 fi 2954fi 2955 2956########################################## 2957# libssh2 probe 2958min_libssh2_version=1.2.8 2959if test "$libssh2" != "no" ; then 2960 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 2961 libssh2_cflags=`$pkg_config libssh2 --cflags` 2962 libssh2_libs=`$pkg_config libssh2 --libs` 2963 libssh2=yes 2964 else 2965 if test "$libssh2" = "yes" ; then 2966 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 2967 fi 2968 libssh2=no 2969 fi 2970fi 2971 2972########################################## 2973# libssh2_sftp_fsync probe 2974 2975if test "$libssh2" = "yes"; then 2976 cat > $TMPC <<EOF 2977#include <stdio.h> 2978#include <libssh2.h> 2979#include <libssh2_sftp.h> 2980int main(void) { 2981 LIBSSH2_SESSION *session; 2982 LIBSSH2_SFTP *sftp; 2983 LIBSSH2_SFTP_HANDLE *sftp_handle; 2984 session = libssh2_session_init (); 2985 sftp = libssh2_sftp_init (session); 2986 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 2987 libssh2_sftp_fsync (sftp_handle); 2988 return 0; 2989} 2990EOF 2991 # libssh2_cflags/libssh2_libs defined in previous test. 2992 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 2993 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 2994 fi 2995fi 2996 2997########################################## 2998# linux-aio probe 2999 3000if test "$linux_aio" != "no" ; then 3001 cat > $TMPC <<EOF 3002#include <libaio.h> 3003#include <sys/eventfd.h> 3004#include <stddef.h> 3005int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 3006EOF 3007 if compile_prog "" "-laio" ; then 3008 linux_aio=yes 3009 else 3010 if test "$linux_aio" = "yes" ; then 3011 feature_not_found "linux AIO" "Install libaio devel" 3012 fi 3013 linux_aio=no 3014 fi 3015fi 3016 3017########################################## 3018# TPM passthrough is only on x86 Linux 3019 3020if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 3021 tpm_passthrough=$tpm 3022else 3023 tpm_passthrough=no 3024fi 3025 3026########################################## 3027# attr probe 3028 3029if test "$attr" != "no" ; then 3030 cat > $TMPC <<EOF 3031#include <stdio.h> 3032#include <sys/types.h> 3033#ifdef CONFIG_LIBATTR 3034#include <attr/xattr.h> 3035#else 3036#include <sys/xattr.h> 3037#endif 3038int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3039EOF 3040 if compile_prog "" "" ; then 3041 attr=yes 3042 # Older distros have <attr/xattr.h>, and need -lattr: 3043 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3044 attr=yes 3045 LIBS="-lattr $LIBS" 3046 libattr=yes 3047 else 3048 if test "$attr" = "yes" ; then 3049 feature_not_found "ATTR" "Install libc6 or libattr devel" 3050 fi 3051 attr=no 3052 fi 3053fi 3054 3055########################################## 3056# iovec probe 3057cat > $TMPC <<EOF 3058#include <sys/types.h> 3059#include <sys/uio.h> 3060#include <unistd.h> 3061int main(void) { return sizeof(struct iovec); } 3062EOF 3063iovec=no 3064if compile_prog "" "" ; then 3065 iovec=yes 3066fi 3067 3068########################################## 3069# preadv probe 3070cat > $TMPC <<EOF 3071#include <sys/types.h> 3072#include <sys/uio.h> 3073#include <unistd.h> 3074int main(void) { return preadv(0, 0, 0, 0); } 3075EOF 3076preadv=no 3077if compile_prog "" "" ; then 3078 preadv=yes 3079fi 3080 3081########################################## 3082# fdt probe 3083# fdt support is mandatory for at least some target architectures, 3084# so insist on it if we're building those system emulators. 3085fdt_required=no 3086for target in $target_list; do 3087 case $target in 3088 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu) 3089 fdt_required=yes 3090 ;; 3091 esac 3092done 3093 3094if test "$fdt_required" = "yes"; then 3095 if test "$fdt" = "no"; then 3096 error_exit "fdt disabled but some requested targets require it." \ 3097 "You can turn off fdt only if you also disable all the system emulation" \ 3098 "targets which need it (by specifying a cut down --target-list)." 3099 fi 3100 fdt=yes 3101fi 3102 3103if test "$fdt" != "no" ; then 3104 fdt_libs="-lfdt" 3105 # explicitly check for libfdt_env.h as it is missing in some stable installs 3106 # and test for required functions to make sure we are on a version >= 1.4.0 3107 cat > $TMPC << EOF 3108#include <libfdt.h> 3109#include <libfdt_env.h> 3110int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; } 3111EOF 3112 if compile_prog "" "$fdt_libs" ; then 3113 # system DTC is good - use it 3114 fdt=yes 3115 elif test -d ${source_path}/dtc/libfdt ; then 3116 # have submodule DTC - use it 3117 fdt=yes 3118 dtc_internal="yes" 3119 mkdir -p dtc 3120 if [ "$pwd_is_source_path" != "y" ] ; then 3121 symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3122 symlink "$source_path/dtc/scripts" "dtc/scripts" 3123 fi 3124 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3125 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3126 elif test "$fdt" = "yes" ; then 3127 # have neither and want - prompt for system/submodule install 3128 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \ 3129 " (1) Preferred: Install the DTC (libfdt) devel package" \ 3130 " (2) Fetch the DTC submodule, using:" \ 3131 " git submodule update --init dtc" 3132 else 3133 # don't have and don't want 3134 fdt_libs= 3135 fdt=no 3136 fi 3137fi 3138 3139libs_softmmu="$libs_softmmu $fdt_libs" 3140 3141########################################## 3142# opengl probe (for sdl2, milkymist-tmu2) 3143 3144# GLX probe, used by milkymist-tmu2 3145# this is temporary, code will be switched to egl mid-term. 3146cat > $TMPC << EOF 3147#include <X11/Xlib.h> 3148#include <GL/gl.h> 3149#include <GL/glx.h> 3150int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; } 3151EOF 3152if compile_prog "" "-lGL -lX11" ; then 3153 have_glx=yes 3154else 3155 have_glx=no 3156fi 3157 3158if test "$opengl" != "no" ; then 3159 opengl_pkgs="gl glesv2 epoxy egl" 3160 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then 3161 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3162 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3163 opengl=yes 3164 else 3165 if test "$opengl" = "yes" ; then 3166 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 3167 fi 3168 opengl_cflags="" 3169 opengl_libs="" 3170 opengl=no 3171 fi 3172fi 3173 3174 3175########################################## 3176# archipelago probe 3177if test "$archipelago" != "no" ; then 3178 cat > $TMPC <<EOF 3179#include <stdio.h> 3180#include <xseg/xseg.h> 3181#include <xseg/protocol.h> 3182int main(void) { 3183 xseg_initialize(); 3184 return 0; 3185} 3186EOF 3187 archipelago_libs=-lxseg 3188 if compile_prog "" "$archipelago_libs"; then 3189 archipelago="yes" 3190 libs_tools="$archipelago_libs $libs_tools" 3191 libs_softmmu="$archipelago_libs $libs_softmmu" 3192 3193 echo "WARNING: Please check the licenses of QEMU and libxseg carefully." 3194 echo "GPLv3 versions of libxseg may not be compatible with QEMU's" 3195 echo "license and therefore prevent redistribution." 3196 echo 3197 echo "To disable Archipelago, use --disable-archipelago" 3198 else 3199 if test "$archipelago" = "yes" ; then 3200 feature_not_found "Archipelago backend support" "Install libxseg devel" 3201 fi 3202 archipelago="no" 3203 fi 3204fi 3205 3206 3207########################################## 3208# glusterfs probe 3209if test "$glusterfs" != "no" ; then 3210 if $pkg_config --atleast-version=3 glusterfs-api; then 3211 glusterfs="yes" 3212 glusterfs_cflags=`$pkg_config --cflags glusterfs-api` 3213 glusterfs_libs=`$pkg_config --libs glusterfs-api` 3214 if $pkg_config --atleast-version=5 glusterfs-api; then 3215 glusterfs_discard="yes" 3216 fi 3217 if $pkg_config --atleast-version=6 glusterfs-api; then 3218 glusterfs_zerofill="yes" 3219 fi 3220 else 3221 if test "$glusterfs" = "yes" ; then 3222 feature_not_found "GlusterFS backend support" \ 3223 "Install glusterfs-api devel >= 3" 3224 fi 3225 glusterfs="no" 3226 fi 3227fi 3228 3229# Check for inotify functions when we are building linux-user 3230# emulator. This is done because older glibc versions don't 3231# have syscall stubs for these implemented. In that case we 3232# don't provide them even if kernel supports them. 3233# 3234inotify=no 3235cat > $TMPC << EOF 3236#include <sys/inotify.h> 3237 3238int 3239main(void) 3240{ 3241 /* try to start inotify */ 3242 return inotify_init(); 3243} 3244EOF 3245if compile_prog "" "" ; then 3246 inotify=yes 3247fi 3248 3249inotify1=no 3250cat > $TMPC << EOF 3251#include <sys/inotify.h> 3252 3253int 3254main(void) 3255{ 3256 /* try to start inotify */ 3257 return inotify_init1(0); 3258} 3259EOF 3260if compile_prog "" "" ; then 3261 inotify1=yes 3262fi 3263 3264# check if utimensat and futimens are supported 3265utimens=no 3266cat > $TMPC << EOF 3267#define _ATFILE_SOURCE 3268#include <stddef.h> 3269#include <fcntl.h> 3270#include <sys/stat.h> 3271 3272int main(void) 3273{ 3274 utimensat(AT_FDCWD, "foo", NULL, 0); 3275 futimens(0, NULL); 3276 return 0; 3277} 3278EOF 3279if compile_prog "" "" ; then 3280 utimens=yes 3281fi 3282 3283# check if pipe2 is there 3284pipe2=no 3285cat > $TMPC << EOF 3286#include <unistd.h> 3287#include <fcntl.h> 3288 3289int main(void) 3290{ 3291 int pipefd[2]; 3292 return pipe2(pipefd, O_CLOEXEC); 3293} 3294EOF 3295if compile_prog "" "" ; then 3296 pipe2=yes 3297fi 3298 3299# check if accept4 is there 3300accept4=no 3301cat > $TMPC << EOF 3302#include <sys/socket.h> 3303#include <stddef.h> 3304 3305int main(void) 3306{ 3307 accept4(0, NULL, NULL, SOCK_CLOEXEC); 3308 return 0; 3309} 3310EOF 3311if compile_prog "" "" ; then 3312 accept4=yes 3313fi 3314 3315# check if tee/splice is there. vmsplice was added same time. 3316splice=no 3317cat > $TMPC << EOF 3318#include <unistd.h> 3319#include <fcntl.h> 3320#include <limits.h> 3321 3322int main(void) 3323{ 3324 int len, fd = 0; 3325 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 3326 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 3327 return 0; 3328} 3329EOF 3330if compile_prog "" "" ; then 3331 splice=yes 3332fi 3333 3334########################################## 3335# libnuma probe 3336 3337if test "$numa" != "no" ; then 3338 cat > $TMPC << EOF 3339#include <numa.h> 3340int main(void) { return numa_available(); } 3341EOF 3342 3343 if compile_prog "" "-lnuma" ; then 3344 numa=yes 3345 libs_softmmu="-lnuma $libs_softmmu" 3346 else 3347 if test "$numa" = "yes" ; then 3348 feature_not_found "numa" "install numactl devel" 3349 fi 3350 numa=no 3351 fi 3352fi 3353 3354########################################## 3355# tcmalloc probe 3356 3357if test "$tcmalloc" = "yes" ; then 3358 cat > $TMPC << EOF 3359#include <stdlib.h> 3360int main(void) { malloc(1); return 0; } 3361EOF 3362 3363 if compile_prog "" "-ltcmalloc" ; then 3364 LIBS="-ltcmalloc $LIBS" 3365 else 3366 feature_not_found "tcmalloc" "install gperftools devel" 3367 fi 3368fi 3369 3370########################################## 3371# signalfd probe 3372signalfd="no" 3373cat > $TMPC << EOF 3374#include <unistd.h> 3375#include <sys/syscall.h> 3376#include <signal.h> 3377int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3378EOF 3379 3380if compile_prog "" "" ; then 3381 signalfd=yes 3382fi 3383 3384# check if eventfd is supported 3385eventfd=no 3386cat > $TMPC << EOF 3387#include <sys/eventfd.h> 3388 3389int main(void) 3390{ 3391 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3392} 3393EOF 3394if compile_prog "" "" ; then 3395 eventfd=yes 3396fi 3397 3398# check for fallocate 3399fallocate=no 3400cat > $TMPC << EOF 3401#include <fcntl.h> 3402 3403int main(void) 3404{ 3405 fallocate(0, 0, 0, 0); 3406 return 0; 3407} 3408EOF 3409if compile_prog "" "" ; then 3410 fallocate=yes 3411fi 3412 3413# check for fallocate hole punching 3414fallocate_punch_hole=no 3415cat > $TMPC << EOF 3416#include <fcntl.h> 3417#include <linux/falloc.h> 3418 3419int main(void) 3420{ 3421 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 3422 return 0; 3423} 3424EOF 3425if compile_prog "" "" ; then 3426 fallocate_punch_hole=yes 3427fi 3428 3429# check that fallocate supports range zeroing inside the file 3430fallocate_zero_range=no 3431cat > $TMPC << EOF 3432#include <fcntl.h> 3433#include <linux/falloc.h> 3434 3435int main(void) 3436{ 3437 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 3438 return 0; 3439} 3440EOF 3441if compile_prog "" "" ; then 3442 fallocate_zero_range=yes 3443fi 3444 3445# check for posix_fallocate 3446posix_fallocate=no 3447cat > $TMPC << EOF 3448#include <fcntl.h> 3449 3450int main(void) 3451{ 3452 posix_fallocate(0, 0, 0); 3453 return 0; 3454} 3455EOF 3456if compile_prog "" "" ; then 3457 posix_fallocate=yes 3458fi 3459 3460# check for sync_file_range 3461sync_file_range=no 3462cat > $TMPC << EOF 3463#include <fcntl.h> 3464 3465int main(void) 3466{ 3467 sync_file_range(0, 0, 0, 0); 3468 return 0; 3469} 3470EOF 3471if compile_prog "" "" ; then 3472 sync_file_range=yes 3473fi 3474 3475# check for linux/fiemap.h and FS_IOC_FIEMAP 3476fiemap=no 3477cat > $TMPC << EOF 3478#include <sys/ioctl.h> 3479#include <linux/fs.h> 3480#include <linux/fiemap.h> 3481 3482int main(void) 3483{ 3484 ioctl(0, FS_IOC_FIEMAP, 0); 3485 return 0; 3486} 3487EOF 3488if compile_prog "" "" ; then 3489 fiemap=yes 3490fi 3491 3492# check for dup3 3493dup3=no 3494cat > $TMPC << EOF 3495#include <unistd.h> 3496 3497int main(void) 3498{ 3499 dup3(0, 0, 0); 3500 return 0; 3501} 3502EOF 3503if compile_prog "" "" ; then 3504 dup3=yes 3505fi 3506 3507# check for ppoll support 3508ppoll=no 3509cat > $TMPC << EOF 3510#include <poll.h> 3511 3512int main(void) 3513{ 3514 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 3515 ppoll(&pfd, 1, 0, 0); 3516 return 0; 3517} 3518EOF 3519if compile_prog "" "" ; then 3520 ppoll=yes 3521fi 3522 3523# check for prctl(PR_SET_TIMERSLACK , ... ) support 3524prctl_pr_set_timerslack=no 3525cat > $TMPC << EOF 3526#include <sys/prctl.h> 3527 3528int main(void) 3529{ 3530 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 3531 return 0; 3532} 3533EOF 3534if compile_prog "" "" ; then 3535 prctl_pr_set_timerslack=yes 3536fi 3537 3538# check for epoll support 3539epoll=no 3540cat > $TMPC << EOF 3541#include <sys/epoll.h> 3542 3543int main(void) 3544{ 3545 epoll_create(0); 3546 return 0; 3547} 3548EOF 3549if compile_prog "" "" ; then 3550 epoll=yes 3551fi 3552 3553# epoll_create1 and epoll_pwait are later additions 3554# so we must check separately for their presence 3555epoll_create1=no 3556cat > $TMPC << EOF 3557#include <sys/epoll.h> 3558 3559int main(void) 3560{ 3561 /* Note that we use epoll_create1 as a value, not as 3562 * a function being called. This is necessary so that on 3563 * old SPARC glibc versions where the function was present in 3564 * the library but not declared in the header file we will 3565 * fail the configure check. (Otherwise we will get a compiler 3566 * warning but not an error, and will proceed to fail the 3567 * qemu compile where we compile with -Werror.) 3568 */ 3569 return (int)(uintptr_t)&epoll_create1; 3570} 3571EOF 3572if compile_prog "" "" ; then 3573 epoll_create1=yes 3574fi 3575 3576epoll_pwait=no 3577cat > $TMPC << EOF 3578#include <sys/epoll.h> 3579 3580int main(void) 3581{ 3582 epoll_pwait(0, 0, 0, 0, 0); 3583 return 0; 3584} 3585EOF 3586if compile_prog "" "" ; then 3587 epoll_pwait=yes 3588fi 3589 3590# check for sendfile support 3591sendfile=no 3592cat > $TMPC << EOF 3593#include <sys/sendfile.h> 3594 3595int main(void) 3596{ 3597 return sendfile(0, 0, 0, 0); 3598} 3599EOF 3600if compile_prog "" "" ; then 3601 sendfile=yes 3602fi 3603 3604# check for timerfd support (glibc 2.8 and newer) 3605timerfd=no 3606cat > $TMPC << EOF 3607#include <sys/timerfd.h> 3608 3609int main(void) 3610{ 3611 return(timerfd_create(CLOCK_REALTIME, 0)); 3612} 3613EOF 3614if compile_prog "" "" ; then 3615 timerfd=yes 3616fi 3617 3618# check for setns and unshare support 3619setns=no 3620cat > $TMPC << EOF 3621#include <sched.h> 3622 3623int main(void) 3624{ 3625 int ret; 3626 ret = setns(0, 0); 3627 ret = unshare(0); 3628 return ret; 3629} 3630EOF 3631if compile_prog "" "" ; then 3632 setns=yes 3633fi 3634 3635# Check if tools are available to build documentation. 3636if test "$docs" != "no" ; then 3637 if has makeinfo && has pod2man; then 3638 docs=yes 3639 else 3640 if test "$docs" = "yes" ; then 3641 feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 3642 fi 3643 docs=no 3644 fi 3645fi 3646 3647# Search for bswap_32 function 3648byteswap_h=no 3649cat > $TMPC << EOF 3650#include <byteswap.h> 3651int main(void) { return bswap_32(0); } 3652EOF 3653if compile_prog "" "" ; then 3654 byteswap_h=yes 3655fi 3656 3657# Search for bswap32 function 3658bswap_h=no 3659cat > $TMPC << EOF 3660#include <sys/endian.h> 3661#include <sys/types.h> 3662#include <machine/bswap.h> 3663int main(void) { return bswap32(0); } 3664EOF 3665if compile_prog "" "" ; then 3666 bswap_h=yes 3667fi 3668 3669########################################## 3670# Do we have libiscsi >= 1.9.0 3671if test "$libiscsi" != "no" ; then 3672 if $pkg_config --atleast-version=1.9.0 libiscsi; then 3673 libiscsi="yes" 3674 libiscsi_cflags=$($pkg_config --cflags libiscsi) 3675 libiscsi_libs=$($pkg_config --libs libiscsi) 3676 else 3677 if test "$libiscsi" = "yes" ; then 3678 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 3679 fi 3680 libiscsi="no" 3681 fi 3682fi 3683 3684########################################## 3685# Do we need libm 3686cat > $TMPC << EOF 3687#include <math.h> 3688int main(int argc, char **argv) { return isnan(sin((double)argc)); } 3689EOF 3690if compile_prog "" "" ; then 3691 : 3692elif compile_prog "" "-lm" ; then 3693 LIBS="-lm $LIBS" 3694 libs_qga="-lm $libs_qga" 3695else 3696 error_exit "libm check failed" 3697fi 3698 3699########################################## 3700# Do we need librt 3701# uClibc provides 2 versions of clock_gettime(), one with realtime 3702# support and one without. This means that the clock_gettime() don't 3703# need -lrt. We still need it for timer_create() so we check for this 3704# function in addition. 3705cat > $TMPC <<EOF 3706#include <signal.h> 3707#include <time.h> 3708int main(void) { 3709 timer_create(CLOCK_REALTIME, NULL, NULL); 3710 return clock_gettime(CLOCK_REALTIME, NULL); 3711} 3712EOF 3713 3714if compile_prog "" "" ; then 3715 : 3716# we need pthread for static linking. use previous pthread test result 3717elif compile_prog "" "$pthread_lib -lrt" ; then 3718 LIBS="$LIBS -lrt" 3719 libs_qga="$libs_qga -lrt" 3720fi 3721 3722if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 3723 "$aix" != "yes" -a "$haiku" != "yes" ; then 3724 libs_softmmu="-lutil $libs_softmmu" 3725fi 3726 3727########################################## 3728# spice probe 3729if test "$spice" != "no" ; then 3730 cat > $TMPC << EOF 3731#include <spice.h> 3732int main(void) { spice_server_new(); return 0; } 3733EOF 3734 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 3735 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 3736 if $pkg_config --atleast-version=0.12.0 spice-server && \ 3737 $pkg_config --atleast-version=0.12.3 spice-protocol && \ 3738 compile_prog "$spice_cflags" "$spice_libs" ; then 3739 spice="yes" 3740 libs_softmmu="$libs_softmmu $spice_libs" 3741 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 3742 spice_protocol_version=$($pkg_config --modversion spice-protocol) 3743 spice_server_version=$($pkg_config --modversion spice-server) 3744 else 3745 if test "$spice" = "yes" ; then 3746 feature_not_found "spice" \ 3747 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 3748 fi 3749 spice="no" 3750 fi 3751fi 3752 3753# check for libcacard for smartcard support 3754smartcard_cflags="" 3755# TODO - what's the minimal nss version we support? 3756if test "$smartcard_nss" != "no"; then 3757 cat > $TMPC << EOF 3758#include <pk11pub.h> 3759int main(void) { PK11_FreeSlot(0); return 0; } 3760EOF 3761 # FIXME: do not include $glib_* in here 3762 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" 3763 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" 3764 test_cflags="$nss_cflags" 3765 # The header files in nss < 3.13.3 have a bug which causes them to 3766 # emit a warning. If we're going to compile QEMU with -Werror, then 3767 # test that the headers don't have this bug. Otherwise we would pass 3768 # the configure test but fail to compile QEMU later. 3769 if test "$werror" = "yes"; then 3770 test_cflags="-Werror $test_cflags" 3771 fi 3772 if test -n "$libtool" && 3773 $pkg_config --atleast-version=3.12.8 nss && \ 3774 compile_prog "$test_cflags" "$nss_libs"; then 3775 smartcard_nss="yes" 3776 else 3777 if test "$smartcard_nss" = "yes"; then 3778 feature_not_found "nss" "Install nss devel >= 3.12.8" 3779 fi 3780 smartcard_nss="no" 3781 fi 3782fi 3783 3784# check for libusb 3785if test "$libusb" != "no" ; then 3786 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 3787 libusb="yes" 3788 libusb_cflags=$($pkg_config --cflags libusb-1.0) 3789 libusb_libs=$($pkg_config --libs libusb-1.0) 3790 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags" 3791 libs_softmmu="$libs_softmmu $libusb_libs" 3792 else 3793 if test "$libusb" = "yes"; then 3794 feature_not_found "libusb" "Install libusb devel >= 1.0.13" 3795 fi 3796 libusb="no" 3797 fi 3798fi 3799 3800# check for usbredirparser for usb network redirection support 3801if test "$usb_redir" != "no" ; then 3802 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 3803 usb_redir="yes" 3804 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 3805 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 3806 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 3807 libs_softmmu="$libs_softmmu $usb_redir_libs" 3808 else 3809 if test "$usb_redir" = "yes"; then 3810 feature_not_found "usb-redir" "Install usbredir devel" 3811 fi 3812 usb_redir="no" 3813 fi 3814fi 3815 3816########################################## 3817# check if we have VSS SDK headers for win 3818 3819if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 3820 case "$vss_win32_sdk" in 3821 "") vss_win32_include="-I$source_path" ;; 3822 *\ *) # The SDK is installed in "Program Files" by default, but we cannot 3823 # handle path with spaces. So we symlink the headers into ".sdk/vss". 3824 vss_win32_include="-I$source_path/.sdk/vss" 3825 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 3826 ;; 3827 *) vss_win32_include="-I$vss_win32_sdk" 3828 esac 3829 cat > $TMPC << EOF 3830#define __MIDL_user_allocate_free_DEFINED__ 3831#include <inc/win2003/vss.h> 3832int main(void) { return VSS_CTX_BACKUP; } 3833EOF 3834 if compile_prog "$vss_win32_include" "" ; then 3835 guest_agent_with_vss="yes" 3836 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 3837 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 3838 else 3839 if test "$vss_win32_sdk" != "" ; then 3840 echo "ERROR: Please download and install Microsoft VSS SDK:" 3841 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 3842 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 3843 echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 3844 echo "ERROR: The headers are extracted in the directory \`inc'." 3845 feature_not_found "VSS support" 3846 fi 3847 guest_agent_with_vss="no" 3848 fi 3849fi 3850 3851########################################## 3852# lookup Windows platform SDK (if not specified) 3853# The SDK is needed only to build .tlb (type library) file of guest agent 3854# VSS provider from the source. It is usually unnecessary because the 3855# pre-compiled .tlb file is included. 3856 3857if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 3858 if test -z "$win_sdk"; then 3859 programfiles="$PROGRAMFILES" 3860 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 3861 if test -n "$programfiles"; then 3862 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 3863 else 3864 feature_not_found "Windows SDK" 3865 fi 3866 elif test "$win_sdk" = "no"; then 3867 win_sdk="" 3868 fi 3869fi 3870 3871########################################## 3872# Guest agent Window MSI package 3873 3874if test "$guest_agent" != yes; then 3875 if test "$guest_agent_msi" = yes; then 3876 error_exit "MSI guest agent package requires guest agent enabled" 3877 fi 3878 guest_agent_msi=no 3879elif test "$mingw32" != "yes"; then 3880 if test "$guest_agent_msi" = "yes"; then 3881 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 3882 fi 3883 guest_agent_msi=no 3884elif ! has wixl; then 3885 if test "$guest_agent_msi" = "yes"; then 3886 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 3887 fi 3888 guest_agent_msi=no 3889fi 3890 3891if test "$guest_agent_msi" != "no"; then 3892 if test "$guest_agent_with_vss" = "yes"; then 3893 QEMU_GA_MSI_WITH_VSS="-D InstallVss" 3894 fi 3895 3896 if test "$QEMU_GA_MANUFACTURER" = ""; then 3897 QEMU_GA_MANUFACTURER=QEMU 3898 fi 3899 3900 if test "$QEMU_GA_DISTRO" = ""; then 3901 QEMU_GA_DISTRO=Linux 3902 fi 3903 3904 if test "$QEMU_GA_VERSION" = ""; then 3905 QEMU_GA_VERSION=`cat $source_path/VERSION` 3906 fi 3907 3908 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin" 3909 3910 case "$cpu" in 3911 x86_64) 3912 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 3913 ;; 3914 i386) 3915 QEMU_GA_MSI_ARCH="-D Arch=32" 3916 ;; 3917 *) 3918 error_exit "CPU $cpu not supported for building installation package" 3919 ;; 3920 esac 3921fi 3922 3923########################################## 3924# check if we have fdatasync 3925 3926fdatasync=no 3927cat > $TMPC << EOF 3928#include <unistd.h> 3929int main(void) { 3930#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 3931return fdatasync(0); 3932#else 3933#error Not supported 3934#endif 3935} 3936EOF 3937if compile_prog "" "" ; then 3938 fdatasync=yes 3939fi 3940 3941########################################## 3942# check if we have madvise 3943 3944madvise=no 3945cat > $TMPC << EOF 3946#include <sys/types.h> 3947#include <sys/mman.h> 3948#include <stddef.h> 3949int main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 3950EOF 3951if compile_prog "" "" ; then 3952 madvise=yes 3953fi 3954 3955########################################## 3956# check if we have posix_madvise 3957 3958posix_madvise=no 3959cat > $TMPC << EOF 3960#include <sys/mman.h> 3961#include <stddef.h> 3962int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 3963EOF 3964if compile_prog "" "" ; then 3965 posix_madvise=yes 3966fi 3967 3968########################################## 3969# check if we have usable SIGEV_THREAD_ID 3970 3971sigev_thread_id=no 3972cat > $TMPC << EOF 3973#include <signal.h> 3974int main(void) { 3975 struct sigevent ev; 3976 ev.sigev_notify = SIGEV_THREAD_ID; 3977 ev._sigev_un._tid = 0; 3978 asm volatile("" : : "g"(&ev)); 3979 return 0; 3980} 3981EOF 3982if compile_prog "" "" ; then 3983 sigev_thread_id=yes 3984fi 3985 3986########################################## 3987# check if trace backend exists 3988 3989$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 3990if test "$?" -ne 0 ; then 3991 error_exit "invalid trace backends" \ 3992 "Please choose supported trace backends." 3993fi 3994 3995########################################## 3996# For 'ust' backend, test if ust headers are present 3997if have_backend "ust"; then 3998 cat > $TMPC << EOF 3999#include <lttng/tracepoint.h> 4000int main(void) { return 0; } 4001EOF 4002 if compile_prog "" "" ; then 4003 if $pkg_config lttng-ust --exists; then 4004 lttng_ust_libs=`$pkg_config --libs lttng-ust` 4005 else 4006 lttng_ust_libs="-llttng-ust" 4007 fi 4008 if $pkg_config liburcu-bp --exists; then 4009 urcu_bp_libs=`$pkg_config --libs liburcu-bp` 4010 else 4011 urcu_bp_libs="-lurcu-bp" 4012 fi 4013 4014 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 4015 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 4016 else 4017 error_exit "Trace backend 'ust' missing lttng-ust header files" 4018 fi 4019fi 4020 4021########################################## 4022# For 'dtrace' backend, test if 'dtrace' command is present 4023if have_backend "dtrace"; then 4024 if ! has 'dtrace' ; then 4025 error_exit "dtrace command is not found in PATH $PATH" 4026 fi 4027 trace_backend_stap="no" 4028 if has 'stap' ; then 4029 trace_backend_stap="yes" 4030 fi 4031fi 4032 4033########################################## 4034# check and set a backend for coroutine 4035 4036# We prefer ucontext, but it's not always possible. The fallback 4037# is sigcontext. gthread is not selectable except explicitly, because 4038# it is not functional enough to run QEMU proper. (It is occasionally 4039# useful for debugging purposes.) On Windows the only valid backend 4040# is the Windows-specific one. 4041 4042ucontext_works=no 4043if test "$darwin" != "yes"; then 4044 cat > $TMPC << EOF 4045#include <ucontext.h> 4046#ifdef __stub_makecontext 4047#error Ignoring glibc stub makecontext which will always fail 4048#endif 4049int main(void) { makecontext(0, 0, 0); return 0; } 4050EOF 4051 if compile_prog "" "" ; then 4052 ucontext_works=yes 4053 fi 4054fi 4055 4056if test "$coroutine" = ""; then 4057 if test "$mingw32" = "yes"; then 4058 coroutine=win32 4059 elif test "$ucontext_works" = "yes"; then 4060 coroutine=ucontext 4061 else 4062 coroutine=sigaltstack 4063 fi 4064else 4065 case $coroutine in 4066 windows) 4067 if test "$mingw32" != "yes"; then 4068 error_exit "'windows' coroutine backend only valid for Windows" 4069 fi 4070 # Unfortunately the user visible backend name doesn't match the 4071 # coroutine-*.c filename for this case, so we have to adjust it here. 4072 coroutine=win32 4073 ;; 4074 ucontext) 4075 if test "$ucontext_works" != "yes"; then 4076 feature_not_found "ucontext" 4077 fi 4078 ;; 4079 gthread|sigaltstack) 4080 if test "$mingw32" = "yes"; then 4081 error_exit "only the 'windows' coroutine backend is valid for Windows" 4082 fi 4083 ;; 4084 *) 4085 error_exit "unknown coroutine backend $coroutine" 4086 ;; 4087 esac 4088fi 4089 4090if test "$coroutine_pool" = ""; then 4091 if test "$coroutine" = "gthread"; then 4092 coroutine_pool=no 4093 else 4094 coroutine_pool=yes 4095 fi 4096fi 4097if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then 4098 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" 4099fi 4100 4101########################################## 4102# check if we have open_by_handle_at 4103 4104open_by_handle_at=no 4105cat > $TMPC << EOF 4106#include <fcntl.h> 4107#if !defined(AT_EMPTY_PATH) 4108# error missing definition 4109#else 4110int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4111#endif 4112EOF 4113if compile_prog "" "" ; then 4114 open_by_handle_at=yes 4115fi 4116 4117######################################## 4118# check if we have linux/magic.h 4119 4120linux_magic_h=no 4121cat > $TMPC << EOF 4122#include <linux/magic.h> 4123int main(void) { 4124 return 0; 4125} 4126EOF 4127if compile_prog "" "" ; then 4128 linux_magic_h=yes 4129fi 4130 4131######################################## 4132# check whether we can disable warning option with a pragma (this is needed 4133# to silence warnings in the headers of some versions of external libraries). 4134# This test has to be compiled with -Werror as otherwise an unknown pragma is 4135# only a warning. 4136# 4137# If we can't selectively disable warning in the code, disable -Werror so that 4138# the build doesn't fail anyway. 4139 4140pragma_disable_unused_but_set=no 4141cat > $TMPC << EOF 4142#pragma GCC diagnostic push 4143#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4144#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4145#pragma GCC diagnostic pop 4146 4147int main(void) { 4148 return 0; 4149} 4150EOF 4151if compile_prog "-Werror" "" ; then 4152 pragma_diagnostic_available=yes 4153else 4154 werror=no 4155fi 4156 4157######################################## 4158# check if we have valgrind/valgrind.h 4159 4160valgrind_h=no 4161cat > $TMPC << EOF 4162#include <valgrind/valgrind.h> 4163int main(void) { 4164 return 0; 4165} 4166EOF 4167if compile_prog "" "" ; then 4168 valgrind_h=yes 4169fi 4170 4171######################################## 4172# check if environ is declared 4173 4174has_environ=no 4175cat > $TMPC << EOF 4176#include <unistd.h> 4177int main(void) { 4178 environ = 0; 4179 return 0; 4180} 4181EOF 4182if compile_prog "" "" ; then 4183 has_environ=yes 4184fi 4185 4186######################################## 4187# check if cpuid.h is usable. 4188 4189cpuid_h=no 4190cat > $TMPC << EOF 4191#include <cpuid.h> 4192int main(void) { 4193 unsigned a, b, c, d; 4194 int max = __get_cpuid_max(0, 0); 4195 4196 if (max >= 1) { 4197 __cpuid(1, a, b, c, d); 4198 } 4199 4200 if (max >= 7) { 4201 __cpuid_count(7, 0, a, b, c, d); 4202 } 4203 4204 return 0; 4205} 4206EOF 4207if compile_prog "" "" ; then 4208 cpuid_h=yes 4209fi 4210 4211######################################## 4212# check if __[u]int128_t is usable. 4213 4214int128=no 4215cat > $TMPC << EOF 4216#if defined(__clang_major__) && defined(__clang_minor__) 4217# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4218# error __int128_t does not work in CLANG before 3.2 4219# endif 4220#endif 4221__int128_t a; 4222__uint128_t b; 4223int main (void) { 4224 a = a + b; 4225 b = a * b; 4226 a = a * a; 4227 return 0; 4228} 4229EOF 4230if compile_prog "" "" ; then 4231 int128=yes 4232fi 4233 4234######################################## 4235# check if getauxval is available. 4236 4237getauxval=no 4238cat > $TMPC << EOF 4239#include <sys/auxv.h> 4240int main(void) { 4241 return getauxval(AT_HWCAP) == 0; 4242} 4243EOF 4244if compile_prog "" "" ; then 4245 getauxval=yes 4246fi 4247 4248######################################## 4249# check if ccache is interfering with 4250# semantic analysis of macros 4251 4252ccache_cpp2=no 4253cat > $TMPC << EOF 4254static const int Z = 1; 4255#define fn() ({ Z; }) 4256#define TAUT(X) ((X) == Z) 4257#define PAREN(X, Y) (X == Y) 4258#define ID(X) (X) 4259int main(int argc, char *argv[]) 4260{ 4261 int x = 0, y = 0; 4262 x = ID(x); 4263 x = fn(); 4264 fn(); 4265 if (PAREN(x, y)) return 0; 4266 if (TAUT(Z)) return 0; 4267 return 0; 4268} 4269EOF 4270 4271if ! compile_object "-Werror"; then 4272 ccache_cpp2=yes 4273fi 4274 4275########################################## 4276# End of CC checks 4277# After here, no more $cc or $ld runs 4278 4279if test "$gcov" = "yes" ; then 4280 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 4281 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 4282elif test "$debug" = "no" ; then 4283 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 4284fi 4285 4286########################################## 4287# Do we have libnfs 4288if test "$libnfs" != "no" ; then 4289 if $pkg_config --atleast-version=1.9.3 libnfs; then 4290 libnfs="yes" 4291 libnfs_libs=$($pkg_config --libs libnfs) 4292 LIBS="$LIBS $libnfs_libs" 4293 else 4294 if test "$libnfs" = "yes" ; then 4295 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 4296 fi 4297 libnfs="no" 4298 fi 4299fi 4300 4301# Disable zero malloc errors for official releases unless explicitly told to 4302# enable/disable 4303if test -z "$zero_malloc" ; then 4304 if test "$z_version" = "50" ; then 4305 zero_malloc="no" 4306 else 4307 zero_malloc="yes" 4308 fi 4309fi 4310 4311# Now we've finished running tests it's OK to add -Werror to the compiler flags 4312if test "$werror" = "yes"; then 4313 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 4314fi 4315 4316if test "$solaris" = "no" ; then 4317 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 4318 LDFLAGS="-Wl,--warn-common $LDFLAGS" 4319 fi 4320fi 4321 4322# test if pod2man has --utf8 option 4323if pod2man --help | grep -q utf8; then 4324 POD2MAN="pod2man --utf8" 4325else 4326 POD2MAN="pod2man" 4327fi 4328 4329# Use ASLR, no-SEH and DEP if available 4330if test "$mingw32" = "yes" ; then 4331 for flag in --dynamicbase --no-seh --nxcompat; do 4332 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 4333 LDFLAGS="-Wl,$flag $LDFLAGS" 4334 fi 4335 done 4336fi 4337 4338qemu_confdir=$sysconfdir$confsuffix 4339qemu_moddir=$libdir$confsuffix 4340qemu_datadir=$datadir$confsuffix 4341qemu_localedir="$datadir/locale" 4342 4343tools="" 4344if test "$want_tools" = "yes" ; then 4345 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 4346 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 4347 tools="qemu-nbd\$(EXESUF) $tools" 4348 fi 4349fi 4350if test "$softmmu" = yes ; then 4351 if test "$virtfs" != no ; then 4352 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 4353 virtfs=yes 4354 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 4355 else 4356 if test "$virtfs" = yes; then 4357 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel" 4358 fi 4359 virtfs=no 4360 fi 4361 fi 4362fi 4363if [ "$guest_agent" != "no" ]; then 4364 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 4365 tools="qemu-ga\$(EXESUF) $tools" 4366 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then 4367 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools" 4368 fi 4369 guest_agent=yes 4370 elif [ "$guest_agent" != yes ]; then 4371 guest_agent=no 4372 else 4373 error_exit "Guest agent is not supported on this platform" 4374 fi 4375fi 4376 4377# Mac OS X ships with a broken assembler 4378roms= 4379if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 4380 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 4381 "$softmmu" = yes ; then 4382 roms="optionrom" 4383fi 4384if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 4385 roms="$roms spapr-rtas" 4386fi 4387 4388if test "$cpu" = "s390x" ; then 4389 roms="$roms s390-ccw" 4390fi 4391 4392# Probe for the need for relocating the user-only binary. 4393if test "$pie" = "no" ; then 4394 textseg_addr= 4395 case "$cpu" in 4396 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 4397 # ??? Rationale for choosing this address 4398 textseg_addr=0x60000000 4399 ;; 4400 mips) 4401 # A 256M aligned address, high in the address space, with enough 4402 # room for the code_gen_buffer above it before the stack. 4403 textseg_addr=0x60000000 4404 ;; 4405 esac 4406 if [ -n "$textseg_addr" ]; then 4407 cat > $TMPC <<EOF 4408 int main(void) { return 0; } 4409EOF 4410 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 4411 if ! compile_prog "" "$textseg_ldflags"; then 4412 # In case ld does not support -Ttext-segment, edit the default linker 4413 # script via sed to set the .text start addr. This is needed on FreeBSD 4414 # at least. 4415 $ld --verbose | sed \ 4416 -e '1,/==================================================/d' \ 4417 -e '/==================================================/,$d' \ 4418 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 4419 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 4420 textseg_ldflags="-Wl,-T../config-host.ld" 4421 fi 4422 fi 4423fi 4424 4425# prepend pixman and ftd flags after all config tests are done 4426QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 4427libs_softmmu="$pixman_libs $libs_softmmu" 4428 4429echo "Install prefix $prefix" 4430echo "BIOS directory `eval echo $qemu_datadir`" 4431echo "binary directory `eval echo $bindir`" 4432echo "library directory `eval echo $libdir`" 4433echo "module directory `eval echo $qemu_moddir`" 4434echo "libexec directory `eval echo $libexecdir`" 4435echo "include directory `eval echo $includedir`" 4436echo "config directory `eval echo $sysconfdir`" 4437if test "$mingw32" = "no" ; then 4438echo "local state directory `eval echo $local_statedir`" 4439echo "Manual directory `eval echo $mandir`" 4440echo "ELF interp prefix $interp_prefix" 4441else 4442echo "local state directory queried at runtime" 4443echo "Windows SDK $win_sdk" 4444fi 4445echo "Source path $source_path" 4446echo "C compiler $cc" 4447echo "Host C compiler $host_cc" 4448echo "C++ compiler $cxx" 4449echo "Objective-C compiler $objcc" 4450echo "ARFLAGS $ARFLAGS" 4451echo "CFLAGS $CFLAGS" 4452echo "QEMU_CFLAGS $QEMU_CFLAGS" 4453echo "LDFLAGS $LDFLAGS" 4454echo "make $make" 4455echo "install $install" 4456echo "python $python" 4457if test "$slirp" = "yes" ; then 4458 echo "smbd $smbd" 4459fi 4460echo "module support $modules" 4461echo "host CPU $cpu" 4462echo "host big endian $bigendian" 4463echo "target list $target_list" 4464echo "tcg debug enabled $debug_tcg" 4465echo "gprof enabled $gprof" 4466echo "sparse enabled $sparse" 4467echo "strip binaries $strip_opt" 4468echo "profiler $profiler" 4469echo "static build $static" 4470if test "$darwin" = "yes" ; then 4471 echo "Cocoa support $cocoa" 4472fi 4473echo "pixman $pixman" 4474echo "SDL support $sdl" 4475echo "GTK support $gtk" 4476echo "VTE support $vte" 4477echo "curses support $curses" 4478echo "curl support $curl" 4479echo "mingw32 support $mingw32" 4480echo "Audio drivers $audio_drv_list" 4481echo "Block whitelist (rw) $block_drv_rw_whitelist" 4482echo "Block whitelist (ro) $block_drv_ro_whitelist" 4483echo "VirtFS support $virtfs" 4484echo "VNC support $vnc" 4485if test "$vnc" = "yes" ; then 4486 echo "VNC TLS support $vnc_tls" 4487 echo "VNC SASL support $vnc_sasl" 4488 echo "VNC JPEG support $vnc_jpeg" 4489 echo "VNC PNG support $vnc_png" 4490 echo "VNC WS support $vnc_ws" 4491fi 4492if test -n "$sparc_cpu"; then 4493 echo "Target Sparc Arch $sparc_cpu" 4494fi 4495echo "xen support $xen" 4496if test "$xen" = "yes" ; then 4497 echo "xen ctrl version $xen_ctrl_version" 4498fi 4499echo "brlapi support $brlapi" 4500echo "bluez support $bluez" 4501echo "Documentation $docs" 4502echo "GUEST_BASE $guest_base" 4503echo "PIE $pie" 4504echo "vde support $vde" 4505echo "netmap support $netmap" 4506echo "Linux AIO support $linux_aio" 4507echo "ATTR/XATTR support $attr" 4508echo "Install blobs $blobs" 4509echo "KVM support $kvm" 4510echo "RDMA support $rdma" 4511echo "TCG interpreter $tcg_interpreter" 4512echo "fdt support $fdt" 4513echo "preadv support $preadv" 4514echo "fdatasync $fdatasync" 4515echo "madvise $madvise" 4516echo "posix_madvise $posix_madvise" 4517echo "sigev_thread_id $sigev_thread_id" 4518echo "uuid support $uuid" 4519echo "libcap-ng support $cap_ng" 4520echo "vhost-net support $vhost_net" 4521echo "vhost-scsi support $vhost_scsi" 4522echo "Trace backends $trace_backends" 4523if test "$trace_backend" = "simple"; then 4524echo "Trace output file $trace_file-<pid>" 4525fi 4526if test "$spice" = "yes"; then 4527echo "spice support $spice ($spice_protocol_version/$spice_server_version)" 4528else 4529echo "spice support $spice" 4530fi 4531echo "rbd support $rbd" 4532echo "xfsctl support $xfs" 4533echo "nss used $smartcard_nss" 4534echo "libusb $libusb" 4535echo "usb net redir $usb_redir" 4536echo "OpenGL support $opengl" 4537echo "libiscsi support $libiscsi" 4538echo "libnfs support $libnfs" 4539echo "build guest agent $guest_agent" 4540echo "QGA VSS support $guest_agent_with_vss" 4541echo "seccomp support $seccomp" 4542echo "coroutine backend $coroutine" 4543echo "coroutine pool $coroutine_pool" 4544echo "GlusterFS support $glusterfs" 4545echo "Archipelago support $archipelago" 4546echo "gcov $gcov_tool" 4547echo "gcov enabled $gcov" 4548echo "TPM support $tpm" 4549echo "libssh2 support $libssh2" 4550echo "TPM passthrough $tpm_passthrough" 4551echo "QOM debugging $qom_cast_debug" 4552echo "vhdx $vhdx" 4553echo "Quorum $quorum" 4554echo "lzo support $lzo" 4555echo "snappy support $snappy" 4556echo "bzip2 support $bzip2" 4557echo "NUMA host support $numa" 4558echo "tcmalloc support $tcmalloc" 4559 4560if test "$sdl_too_old" = "yes"; then 4561echo "-> Your SDL version is too old - please upgrade to have SDL support" 4562fi 4563 4564config_host_mak="config-host.mak" 4565 4566echo "# Automatically generated by configure - do not modify" >config-all-disas.mak 4567 4568echo "# Automatically generated by configure - do not modify" > $config_host_mak 4569echo >> $config_host_mak 4570 4571echo all: >> $config_host_mak 4572echo "prefix=$prefix" >> $config_host_mak 4573echo "bindir=$bindir" >> $config_host_mak 4574echo "libdir=$libdir" >> $config_host_mak 4575echo "libexecdir=$libexecdir" >> $config_host_mak 4576echo "includedir=$includedir" >> $config_host_mak 4577echo "mandir=$mandir" >> $config_host_mak 4578echo "sysconfdir=$sysconfdir" >> $config_host_mak 4579echo "qemu_confdir=$qemu_confdir" >> $config_host_mak 4580echo "qemu_datadir=$qemu_datadir" >> $config_host_mak 4581echo "qemu_docdir=$qemu_docdir" >> $config_host_mak 4582echo "qemu_moddir=$qemu_moddir" >> $config_host_mak 4583if test "$mingw32" = "no" ; then 4584 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 4585fi 4586echo "qemu_helperdir=$libexecdir" >> $config_host_mak 4587echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 4588echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 4589echo "qemu_localedir=$qemu_localedir" >> $config_host_mak 4590echo "libs_softmmu=$libs_softmmu" >> $config_host_mak 4591 4592echo "ARCH=$ARCH" >> $config_host_mak 4593 4594if test "$debug_tcg" = "yes" ; then 4595 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 4596fi 4597if test "$strip_opt" = "yes" ; then 4598 echo "STRIP=${strip}" >> $config_host_mak 4599fi 4600if test "$bigendian" = "yes" ; then 4601 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 4602fi 4603if test "$mingw32" = "yes" ; then 4604 echo "CONFIG_WIN32=y" >> $config_host_mak 4605 rc_version=`cat $source_path/VERSION` 4606 version_major=${rc_version%%.*} 4607 rc_version=${rc_version#*.} 4608 version_minor=${rc_version%%.*} 4609 rc_version=${rc_version#*.} 4610 version_subminor=${rc_version%%.*} 4611 version_micro=0 4612 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4613 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4614 if test "$guest_agent_with_vss" = "yes" ; then 4615 echo "CONFIG_QGA_VSS=y" >> $config_host_mak 4616 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 4617 fi 4618 if test "$guest_agent_msi" != "no"; then 4619 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 4620 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 4621 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 4622 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 4623 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 4624 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 4625 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 4626 fi 4627else 4628 echo "CONFIG_POSIX=y" >> $config_host_mak 4629fi 4630 4631if test "$linux" = "yes" ; then 4632 echo "CONFIG_LINUX=y" >> $config_host_mak 4633fi 4634 4635if test "$darwin" = "yes" ; then 4636 echo "CONFIG_DARWIN=y" >> $config_host_mak 4637fi 4638 4639if test "$aix" = "yes" ; then 4640 echo "CONFIG_AIX=y" >> $config_host_mak 4641fi 4642 4643if test "$solaris" = "yes" ; then 4644 echo "CONFIG_SOLARIS=y" >> $config_host_mak 4645 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 4646 if test "$needs_libsunmath" = "yes" ; then 4647 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 4648 fi 4649fi 4650if test "$haiku" = "yes" ; then 4651 echo "CONFIG_HAIKU=y" >> $config_host_mak 4652fi 4653if test "$static" = "yes" ; then 4654 echo "CONFIG_STATIC=y" >> $config_host_mak 4655fi 4656if test "$profiler" = "yes" ; then 4657 echo "CONFIG_PROFILER=y" >> $config_host_mak 4658fi 4659if test "$slirp" = "yes" ; then 4660 echo "CONFIG_SLIRP=y" >> $config_host_mak 4661 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 4662fi 4663if test "$vde" = "yes" ; then 4664 echo "CONFIG_VDE=y" >> $config_host_mak 4665fi 4666if test "$netmap" = "yes" ; then 4667 echo "CONFIG_NETMAP=y" >> $config_host_mak 4668fi 4669if test "$l2tpv3" = "yes" ; then 4670 echo "CONFIG_L2TPV3=y" >> $config_host_mak 4671fi 4672if test "$cap_ng" = "yes" ; then 4673 echo "CONFIG_LIBCAP=y" >> $config_host_mak 4674fi 4675echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 4676for drv in $audio_drv_list; do 4677 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 4678 echo "$def=y" >> $config_host_mak 4679done 4680if test "$audio_pt_int" = "yes" ; then 4681 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 4682fi 4683if test "$audio_win_int" = "yes" ; then 4684 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 4685fi 4686echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 4687echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 4688if test "$vnc" = "yes" ; then 4689 echo "CONFIG_VNC=y" >> $config_host_mak 4690fi 4691if test "$vnc_tls" = "yes" ; then 4692 echo "CONFIG_VNC_TLS=y" >> $config_host_mak 4693fi 4694if test "$vnc_sasl" = "yes" ; then 4695 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 4696fi 4697if test "$vnc_jpeg" = "yes" ; then 4698 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 4699fi 4700if test "$vnc_png" = "yes" ; then 4701 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 4702fi 4703if test "$vnc_ws" = "yes" ; then 4704 echo "CONFIG_VNC_WS=y" >> $config_host_mak 4705 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak 4706fi 4707if test "$fnmatch" = "yes" ; then 4708 echo "CONFIG_FNMATCH=y" >> $config_host_mak 4709fi 4710if test "$uuid" = "yes" ; then 4711 echo "CONFIG_UUID=y" >> $config_host_mak 4712fi 4713if test "$xfs" = "yes" ; then 4714 echo "CONFIG_XFS=y" >> $config_host_mak 4715fi 4716qemu_version=`head $source_path/VERSION` 4717echo "VERSION=$qemu_version" >>$config_host_mak 4718echo "PKGVERSION=$pkgversion" >>$config_host_mak 4719echo "SRC_PATH=$source_path" >> $config_host_mak 4720echo "TARGET_DIRS=$target_list" >> $config_host_mak 4721if [ "$docs" = "yes" ] ; then 4722 echo "BUILD_DOCS=yes" >> $config_host_mak 4723fi 4724if test "$modules" = "yes"; then 4725 # $shacmd can generate a hash started with digit, which the compiler doesn't 4726 # like as an symbol. So prefix it with an underscore 4727 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak 4728 echo "CONFIG_MODULES=y" >> $config_host_mak 4729fi 4730if test "$sdl" = "yes" ; then 4731 echo "CONFIG_SDL=y" >> $config_host_mak 4732 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 4733 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 4734fi 4735if test "$cocoa" = "yes" ; then 4736 echo "CONFIG_COCOA=y" >> $config_host_mak 4737fi 4738if test "$curses" = "yes" ; then 4739 echo "CONFIG_CURSES=y" >> $config_host_mak 4740fi 4741if test "$utimens" = "yes" ; then 4742 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 4743fi 4744if test "$pipe2" = "yes" ; then 4745 echo "CONFIG_PIPE2=y" >> $config_host_mak 4746fi 4747if test "$accept4" = "yes" ; then 4748 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 4749fi 4750if test "$splice" = "yes" ; then 4751 echo "CONFIG_SPLICE=y" >> $config_host_mak 4752fi 4753if test "$eventfd" = "yes" ; then 4754 echo "CONFIG_EVENTFD=y" >> $config_host_mak 4755fi 4756if test "$fallocate" = "yes" ; then 4757 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 4758fi 4759if test "$fallocate_punch_hole" = "yes" ; then 4760 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 4761fi 4762if test "$fallocate_zero_range" = "yes" ; then 4763 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 4764fi 4765if test "$posix_fallocate" = "yes" ; then 4766 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 4767fi 4768if test "$sync_file_range" = "yes" ; then 4769 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 4770fi 4771if test "$fiemap" = "yes" ; then 4772 echo "CONFIG_FIEMAP=y" >> $config_host_mak 4773fi 4774if test "$dup3" = "yes" ; then 4775 echo "CONFIG_DUP3=y" >> $config_host_mak 4776fi 4777if test "$ppoll" = "yes" ; then 4778 echo "CONFIG_PPOLL=y" >> $config_host_mak 4779fi 4780if test "$prctl_pr_set_timerslack" = "yes" ; then 4781 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 4782fi 4783if test "$epoll" = "yes" ; then 4784 echo "CONFIG_EPOLL=y" >> $config_host_mak 4785fi 4786if test "$epoll_create1" = "yes" ; then 4787 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 4788fi 4789if test "$epoll_pwait" = "yes" ; then 4790 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 4791fi 4792if test "$sendfile" = "yes" ; then 4793 echo "CONFIG_SENDFILE=y" >> $config_host_mak 4794fi 4795if test "$timerfd" = "yes" ; then 4796 echo "CONFIG_TIMERFD=y" >> $config_host_mak 4797fi 4798if test "$setns" = "yes" ; then 4799 echo "CONFIG_SETNS=y" >> $config_host_mak 4800fi 4801if test "$inotify" = "yes" ; then 4802 echo "CONFIG_INOTIFY=y" >> $config_host_mak 4803fi 4804if test "$inotify1" = "yes" ; then 4805 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 4806fi 4807if test "$byteswap_h" = "yes" ; then 4808 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 4809fi 4810if test "$bswap_h" = "yes" ; then 4811 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 4812fi 4813if test "$curl" = "yes" ; then 4814 echo "CONFIG_CURL=m" >> $config_host_mak 4815 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 4816 echo "CURL_LIBS=$curl_libs" >> $config_host_mak 4817fi 4818if test "$brlapi" = "yes" ; then 4819 echo "CONFIG_BRLAPI=y" >> $config_host_mak 4820fi 4821if test "$bluez" = "yes" ; then 4822 echo "CONFIG_BLUEZ=y" >> $config_host_mak 4823 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 4824fi 4825if test "glib_subprocess" = "yes" ; then 4826 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 4827fi 4828echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 4829if test "$gtk" = "yes" ; then 4830 echo "CONFIG_GTK=y" >> $config_host_mak 4831 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 4832 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 4833fi 4834if test "$vte" = "yes" ; then 4835 echo "CONFIG_VTE=y" >> $config_host_mak 4836 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 4837fi 4838if test "$xen" = "yes" ; then 4839 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 4840 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 4841fi 4842if test "$linux_aio" = "yes" ; then 4843 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 4844fi 4845if test "$attr" = "yes" ; then 4846 echo "CONFIG_ATTR=y" >> $config_host_mak 4847fi 4848if test "$libattr" = "yes" ; then 4849 echo "CONFIG_LIBATTR=y" >> $config_host_mak 4850fi 4851if test "$virtfs" = "yes" ; then 4852 echo "CONFIG_VIRTFS=y" >> $config_host_mak 4853fi 4854if test "$vhost_scsi" = "yes" ; then 4855 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 4856fi 4857if test "$vhost_net" = "yes" ; then 4858 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 4859fi 4860if test "$blobs" = "yes" ; then 4861 echo "INSTALL_BLOBS=yes" >> $config_host_mak 4862fi 4863if test "$iovec" = "yes" ; then 4864 echo "CONFIG_IOVEC=y" >> $config_host_mak 4865fi 4866if test "$preadv" = "yes" ; then 4867 echo "CONFIG_PREADV=y" >> $config_host_mak 4868fi 4869if test "$fdt" = "yes" ; then 4870 echo "CONFIG_FDT=y" >> $config_host_mak 4871fi 4872if test "$signalfd" = "yes" ; then 4873 echo "CONFIG_SIGNALFD=y" >> $config_host_mak 4874fi 4875if test "$tcg_interpreter" = "yes" ; then 4876 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 4877fi 4878if test "$fdatasync" = "yes" ; then 4879 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 4880fi 4881if test "$madvise" = "yes" ; then 4882 echo "CONFIG_MADVISE=y" >> $config_host_mak 4883fi 4884if test "$posix_madvise" = "yes" ; then 4885 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 4886fi 4887if test "$sigev_thread_id" = "yes" ; then 4888 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak 4889fi 4890 4891if test "$spice" = "yes" ; then 4892 echo "CONFIG_SPICE=y" >> $config_host_mak 4893fi 4894 4895if test "$smartcard_nss" = "yes" ; then 4896 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 4897 echo "NSS_LIBS=$nss_libs" >> $config_host_mak 4898 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak 4899fi 4900 4901if test "$libusb" = "yes" ; then 4902 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 4903fi 4904 4905if test "$usb_redir" = "yes" ; then 4906 echo "CONFIG_USB_REDIR=y" >> $config_host_mak 4907fi 4908 4909if test "$opengl" = "yes" ; then 4910 echo "CONFIG_OPENGL=y" >> $config_host_mak 4911 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak 4912 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 4913fi 4914 4915if test "$lzo" = "yes" ; then 4916 echo "CONFIG_LZO=y" >> $config_host_mak 4917fi 4918 4919if test "$snappy" = "yes" ; then 4920 echo "CONFIG_SNAPPY=y" >> $config_host_mak 4921fi 4922 4923if test "$bzip2" = "yes" ; then 4924 echo "CONFIG_BZIP2=y" >> $config_host_mak 4925 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 4926fi 4927 4928if test "$libiscsi" = "yes" ; then 4929 echo "CONFIG_LIBISCSI=m" >> $config_host_mak 4930 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 4931 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 4932fi 4933 4934if test "$libnfs" = "yes" ; then 4935 echo "CONFIG_LIBNFS=y" >> $config_host_mak 4936fi 4937 4938if test "$seccomp" = "yes"; then 4939 echo "CONFIG_SECCOMP=y" >> $config_host_mak 4940fi 4941 4942# XXX: suppress that 4943if [ "$bsd" = "yes" ] ; then 4944 echo "CONFIG_BSD=y" >> $config_host_mak 4945fi 4946 4947if test "$zero_malloc" = "yes" ; then 4948 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 4949fi 4950if test "$qom_cast_debug" = "yes" ; then 4951 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 4952fi 4953if test "$rbd" = "yes" ; then 4954 echo "CONFIG_RBD=m" >> $config_host_mak 4955 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 4956 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 4957fi 4958 4959echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 4960if test "$coroutine_pool" = "yes" ; then 4961 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 4962else 4963 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 4964fi 4965 4966if test "$open_by_handle_at" = "yes" ; then 4967 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 4968fi 4969 4970if test "$linux_magic_h" = "yes" ; then 4971 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 4972fi 4973 4974if test "$pragma_diagnostic_available" = "yes" ; then 4975 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 4976fi 4977 4978if test "$valgrind_h" = "yes" ; then 4979 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 4980fi 4981 4982if test "$has_environ" = "yes" ; then 4983 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 4984fi 4985 4986if test "$cpuid_h" = "yes" ; then 4987 echo "CONFIG_CPUID_H=y" >> $config_host_mak 4988fi 4989 4990if test "$int128" = "yes" ; then 4991 echo "CONFIG_INT128=y" >> $config_host_mak 4992fi 4993 4994if test "$getauxval" = "yes" ; then 4995 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 4996fi 4997 4998if test "$glusterfs" = "yes" ; then 4999 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 5000 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 5001 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 5002fi 5003 5004if test "$glusterfs_discard" = "yes" ; then 5005 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 5006fi 5007 5008if test "$glusterfs_zerofill" = "yes" ; then 5009 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 5010fi 5011 5012if test "$archipelago" = "yes" ; then 5013 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak 5014 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak 5015fi 5016 5017if test "$libssh2" = "yes" ; then 5018 echo "CONFIG_LIBSSH2=m" >> $config_host_mak 5019 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 5020 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 5021fi 5022 5023if test "$quorum" = "yes" ; then 5024 echo "CONFIG_QUORUM=y" >> $config_host_mak 5025fi 5026 5027if test "$vhdx" = "yes" ; then 5028 echo "CONFIG_VHDX=y" >> $config_host_mak 5029fi 5030 5031# USB host support 5032if test "$libusb" = "yes"; then 5033 echo "HOST_USB=libusb legacy" >> $config_host_mak 5034else 5035 echo "HOST_USB=stub" >> $config_host_mak 5036fi 5037 5038# TPM passthrough support? 5039if test "$tpm" = "yes"; then 5040 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 5041 if test "$tpm_passthrough" = "yes"; then 5042 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 5043 fi 5044fi 5045 5046echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 5047if have_backend "nop"; then 5048 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 5049fi 5050if have_backend "simple"; then 5051 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 5052 # Set the appropriate trace file. 5053 trace_file="\"$trace_file-\" FMT_pid" 5054fi 5055if have_backend "stderr"; then 5056 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak 5057fi 5058if have_backend "ust"; then 5059 echo "CONFIG_TRACE_UST=y" >> $config_host_mak 5060fi 5061if have_backend "dtrace"; then 5062 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 5063 if test "$trace_backend_stap" = "yes" ; then 5064 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 5065 fi 5066fi 5067if have_backend "ftrace"; then 5068 if test "$linux" = "yes" ; then 5069 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 5070 else 5071 feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 5072 fi 5073fi 5074echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 5075 5076if test "$rdma" = "yes" ; then 5077 echo "CONFIG_RDMA=y" >> $config_host_mak 5078fi 5079 5080# Hold two types of flag: 5081# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 5082# a thread we have a handle to 5083# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 5084# platform 5085if test "$pthread_setname_np" = "yes" ; then 5086 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 5087 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 5088fi 5089 5090if test "$tcg_interpreter" = "yes"; then 5091 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 5092elif test "$ARCH" = "sparc64" ; then 5093 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 5094elif test "$ARCH" = "s390x" ; then 5095 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 5096elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 5097 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 5098elif test "$ARCH" = "ppc64" ; then 5099 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 5100else 5101 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 5102fi 5103QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 5104 5105echo "TOOLS=$tools" >> $config_host_mak 5106echo "ROMS=$roms" >> $config_host_mak 5107echo "MAKE=$make" >> $config_host_mak 5108echo "INSTALL=$install" >> $config_host_mak 5109echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 5110echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 5111if test -n "$libtool"; then 5112 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak 5113 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak 5114else 5115 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 5116 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 5117fi 5118echo "PYTHON=$python" >> $config_host_mak 5119echo "CC=$cc" >> $config_host_mak 5120if $iasl -h > /dev/null 2>&1; then 5121 echo "IASL=$iasl" >> $config_host_mak 5122fi 5123echo "CC_I386=$cc_i386" >> $config_host_mak 5124echo "HOST_CC=$host_cc" >> $config_host_mak 5125echo "CXX=$cxx" >> $config_host_mak 5126echo "OBJCC=$objcc" >> $config_host_mak 5127echo "AR=$ar" >> $config_host_mak 5128echo "ARFLAGS=$ARFLAGS" >> $config_host_mak 5129echo "AS=$as" >> $config_host_mak 5130echo "CPP=$cpp" >> $config_host_mak 5131echo "OBJCOPY=$objcopy" >> $config_host_mak 5132echo "LD=$ld" >> $config_host_mak 5133echo "NM=$nm" >> $config_host_mak 5134echo "WINDRES=$windres" >> $config_host_mak 5135echo "LIBTOOL=$libtool" >> $config_host_mak 5136echo "CFLAGS=$CFLAGS" >> $config_host_mak 5137echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 5138echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 5139echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 5140if test "$sparse" = "yes" ; then 5141 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 5142 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 5143 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 5144 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 5145 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 5146fi 5147if test "$cross_prefix" != ""; then 5148 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 5149else 5150 echo "AUTOCONF_HOST := " >> $config_host_mak 5151fi 5152echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 5153echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 5154echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak 5155echo "LIBS+=$LIBS" >> $config_host_mak 5156echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 5157echo "EXESUF=$EXESUF" >> $config_host_mak 5158echo "DSOSUF=$DSOSUF" >> $config_host_mak 5159echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 5160echo "LIBS_QGA+=$libs_qga" >> $config_host_mak 5161echo "POD2MAN=$POD2MAN" >> $config_host_mak 5162echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 5163if test "$gcov" = "yes" ; then 5164 echo "CONFIG_GCOV=y" >> $config_host_mak 5165 echo "GCOV=$gcov_tool" >> $config_host_mak 5166fi 5167 5168# use included Linux headers 5169if test "$linux" = "yes" ; then 5170 mkdir -p linux-headers 5171 case "$cpu" in 5172 i386|x86_64|x32) 5173 linux_arch=x86 5174 ;; 5175 ppcemb|ppc|ppc64) 5176 linux_arch=powerpc 5177 ;; 5178 s390x) 5179 linux_arch=s390 5180 ;; 5181 aarch64) 5182 linux_arch=arm64 5183 ;; 5184 mips64) 5185 linux_arch=mips 5186 ;; 5187 *) 5188 # For most CPUs the kernel architecture name and QEMU CPU name match. 5189 linux_arch="$cpu" 5190 ;; 5191 esac 5192 # For non-KVM architectures we will not have asm headers 5193 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 5194 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 5195 fi 5196fi 5197 5198for target in $target_list; do 5199target_dir="$target" 5200config_target_mak=$target_dir/config-target.mak 5201target_name=`echo $target | cut -d '-' -f 1` 5202target_bigendian="no" 5203 5204case "$target_name" in 5205 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 5206 target_bigendian=yes 5207 ;; 5208esac 5209target_softmmu="no" 5210target_user_only="no" 5211target_linux_user="no" 5212target_bsd_user="no" 5213case "$target" in 5214 ${target_name}-softmmu) 5215 target_softmmu="yes" 5216 ;; 5217 ${target_name}-linux-user) 5218 if test "$linux" != "yes" ; then 5219 error_exit "Target '$target' is only available on a Linux host" 5220 fi 5221 target_user_only="yes" 5222 target_linux_user="yes" 5223 ;; 5224 ${target_name}-bsd-user) 5225 if test "$bsd" != "yes" ; then 5226 error_exit "Target '$target' is only available on a BSD host" 5227 fi 5228 target_user_only="yes" 5229 target_bsd_user="yes" 5230 ;; 5231 *) 5232 error_exit "Target '$target' not recognised" 5233 exit 1 5234 ;; 5235esac 5236 5237mkdir -p $target_dir 5238echo "# Automatically generated by configure - do not modify" > $config_target_mak 5239 5240bflt="no" 5241interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"` 5242gdb_xml_files="" 5243 5244TARGET_ARCH="$target_name" 5245TARGET_BASE_ARCH="" 5246TARGET_ABI_DIR="" 5247 5248case "$target_name" in 5249 i386) 5250 ;; 5251 x86_64) 5252 TARGET_BASE_ARCH=i386 5253 ;; 5254 alpha) 5255 ;; 5256 arm|armeb) 5257 TARGET_ARCH=arm 5258 bflt="yes" 5259 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 5260 ;; 5261 aarch64) 5262 TARGET_BASE_ARCH=arm 5263 bflt="yes" 5264 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 5265 ;; 5266 cris) 5267 ;; 5268 lm32) 5269 ;; 5270 m68k) 5271 bflt="yes" 5272 gdb_xml_files="cf-core.xml cf-fp.xml" 5273 ;; 5274 microblaze|microblazeel) 5275 TARGET_ARCH=microblaze 5276 bflt="yes" 5277 ;; 5278 mips|mipsel) 5279 TARGET_ARCH=mips 5280 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 5281 ;; 5282 mipsn32|mipsn32el) 5283 TARGET_ARCH=mips64 5284 TARGET_BASE_ARCH=mips 5285 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 5286 echo "TARGET_ABI32=y" >> $config_target_mak 5287 ;; 5288 mips64|mips64el) 5289 TARGET_ARCH=mips64 5290 TARGET_BASE_ARCH=mips 5291 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 5292 ;; 5293 moxie) 5294 ;; 5295 or32) 5296 TARGET_ARCH=openrisc 5297 TARGET_BASE_ARCH=openrisc 5298 ;; 5299 ppc) 5300 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5301 ;; 5302 ppcemb) 5303 TARGET_BASE_ARCH=ppc 5304 TARGET_ABI_DIR=ppc 5305 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5306 ;; 5307 ppc64) 5308 TARGET_BASE_ARCH=ppc 5309 TARGET_ABI_DIR=ppc 5310 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5311 ;; 5312 ppc64le) 5313 TARGET_ARCH=ppc64 5314 TARGET_BASE_ARCH=ppc 5315 TARGET_ABI_DIR=ppc 5316 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5317 ;; 5318 ppc64abi32) 5319 TARGET_ARCH=ppc64 5320 TARGET_BASE_ARCH=ppc 5321 TARGET_ABI_DIR=ppc 5322 echo "TARGET_ABI32=y" >> $config_target_mak 5323 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 5324 ;; 5325 sh4|sh4eb) 5326 TARGET_ARCH=sh4 5327 bflt="yes" 5328 ;; 5329 sparc) 5330 ;; 5331 sparc64) 5332 TARGET_BASE_ARCH=sparc 5333 ;; 5334 sparc32plus) 5335 TARGET_ARCH=sparc64 5336 TARGET_BASE_ARCH=sparc 5337 TARGET_ABI_DIR=sparc 5338 echo "TARGET_ABI32=y" >> $config_target_mak 5339 ;; 5340 s390x) 5341 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml" 5342 ;; 5343 tricore) 5344 ;; 5345 unicore32) 5346 ;; 5347 xtensa|xtensaeb) 5348 TARGET_ARCH=xtensa 5349 ;; 5350 *) 5351 error_exit "Unsupported target CPU" 5352 ;; 5353esac 5354# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 5355if [ "$TARGET_BASE_ARCH" = "" ]; then 5356 TARGET_BASE_ARCH=$TARGET_ARCH 5357fi 5358 5359symlink "$source_path/Makefile.target" "$target_dir/Makefile" 5360 5361upper() { 5362 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 5363} 5364 5365target_arch_name="`upper $TARGET_ARCH`" 5366echo "TARGET_$target_arch_name=y" >> $config_target_mak 5367echo "TARGET_NAME=$target_name" >> $config_target_mak 5368echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 5369if [ "$TARGET_ABI_DIR" = "" ]; then 5370 TARGET_ABI_DIR=$TARGET_ARCH 5371fi 5372echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 5373if [ "$HOST_VARIANT_DIR" != "" ]; then 5374 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 5375fi 5376case "$target_name" in 5377 i386|x86_64) 5378 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 5379 echo "CONFIG_XEN=y" >> $config_target_mak 5380 if test "$xen_pci_passthrough" = yes; then 5381 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 5382 fi 5383 fi 5384 ;; 5385 *) 5386esac 5387case "$target_name" in 5388 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips) 5389 # Make sure the target and host cpus are compatible 5390 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 5391 \( "$target_name" = "$cpu" -o \ 5392 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 5393 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \ 5394 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \ 5395 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 5396 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \ 5397 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \ 5398 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \ 5399 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \ 5400 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then 5401 echo "CONFIG_KVM=y" >> $config_target_mak 5402 if test "$vhost_net" = "yes" ; then 5403 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 5404 fi 5405 fi 5406esac 5407if test "$target_bigendian" = "yes" ; then 5408 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 5409fi 5410if test "$target_softmmu" = "yes" ; then 5411 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 5412fi 5413if test "$target_user_only" = "yes" ; then 5414 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 5415 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 5416fi 5417if test "$target_linux_user" = "yes" ; then 5418 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 5419fi 5420list="" 5421if test ! -z "$gdb_xml_files" ; then 5422 for x in $gdb_xml_files; do 5423 list="$list $source_path/gdb-xml/$x" 5424 done 5425 echo "TARGET_XML_FILES=$list" >> $config_target_mak 5426fi 5427 5428if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 5429 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 5430fi 5431if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 5432 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 5433fi 5434if test "$target_bsd_user" = "yes" ; then 5435 echo "CONFIG_BSD_USER=y" >> $config_target_mak 5436fi 5437 5438# generate QEMU_CFLAGS/LDFLAGS for targets 5439 5440cflags="" 5441ldflags="" 5442 5443for i in $ARCH $TARGET_BASE_ARCH ; do 5444 case "$i" in 5445 alpha) 5446 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 5447 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak 5448 ;; 5449 aarch64) 5450 if test -n "${cxx}"; then 5451 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 5452 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 5453 fi 5454 ;; 5455 arm) 5456 echo "CONFIG_ARM_DIS=y" >> $config_target_mak 5457 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak 5458 if test -n "${cxx}"; then 5459 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 5460 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 5461 fi 5462 ;; 5463 cris) 5464 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 5465 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak 5466 ;; 5467 hppa) 5468 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 5469 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak 5470 ;; 5471 i386|x86_64|x32) 5472 echo "CONFIG_I386_DIS=y" >> $config_target_mak 5473 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak 5474 ;; 5475 ia64*) 5476 echo "CONFIG_IA64_DIS=y" >> $config_target_mak 5477 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak 5478 ;; 5479 lm32) 5480 echo "CONFIG_LM32_DIS=y" >> $config_target_mak 5481 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak 5482 ;; 5483 m68k) 5484 echo "CONFIG_M68K_DIS=y" >> $config_target_mak 5485 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak 5486 ;; 5487 microblaze*) 5488 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 5489 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak 5490 ;; 5491 mips*) 5492 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 5493 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak 5494 ;; 5495 moxie*) 5496 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak 5497 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak 5498 ;; 5499 or32) 5500 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak 5501 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak 5502 ;; 5503 ppc*) 5504 echo "CONFIG_PPC_DIS=y" >> $config_target_mak 5505 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak 5506 ;; 5507 s390*) 5508 echo "CONFIG_S390_DIS=y" >> $config_target_mak 5509 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak 5510 ;; 5511 sh4) 5512 echo "CONFIG_SH4_DIS=y" >> $config_target_mak 5513 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak 5514 ;; 5515 sparc*) 5516 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 5517 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak 5518 ;; 5519 xtensa*) 5520 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak 5521 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak 5522 ;; 5523 esac 5524done 5525if test "$tcg_interpreter" = "yes" ; then 5526 echo "CONFIG_TCI_DIS=y" >> $config_target_mak 5527 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak 5528fi 5529 5530case "$ARCH" in 5531alpha) 5532 # Ensure there's only a single GP 5533 cflags="-msmall-data $cflags" 5534;; 5535esac 5536 5537if test "$gprof" = "yes" ; then 5538 echo "TARGET_GPROF=yes" >> $config_target_mak 5539 if test "$target_linux_user" = "yes" ; then 5540 cflags="-p $cflags" 5541 ldflags="-p $ldflags" 5542 fi 5543 if test "$target_softmmu" = "yes" ; then 5544 ldflags="-p $ldflags" 5545 echo "GPROF_CFLAGS=-p" >> $config_target_mak 5546 fi 5547fi 5548 5549if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 5550 ldflags="$ldflags $textseg_ldflags" 5551fi 5552 5553echo "LDFLAGS+=$ldflags" >> $config_target_mak 5554echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 5555 5556done # for target in $targets 5557 5558if [ "$pixman" = "internal" ]; then 5559 echo "config-host.h: subdir-pixman" >> $config_host_mak 5560fi 5561 5562if test "$rdma" = "yes" ; then 5563echo "CONFIG_RDMA=y" >> $config_host_mak 5564fi 5565 5566if [ "$dtc_internal" = "yes" ]; then 5567 echo "config-host.h: subdir-dtc" >> $config_host_mak 5568fi 5569 5570if test "$numa" = "yes"; then 5571 echo "CONFIG_NUMA=y" >> $config_host_mak 5572fi 5573 5574if test "$ccache_cpp2" = "yes"; then 5575 echo "export CCACHE_CPP2=y" >> $config_host_mak 5576fi 5577 5578# build tree in object directory in case the source is not in the current directory 5579DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" 5580DIRS="$DIRS fsdev" 5581DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 5582DIRS="$DIRS roms/seabios roms/vgabios" 5583DIRS="$DIRS qapi-generated" 5584FILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 5585FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 5586FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 5587FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 5588FILES="$FILES pc-bios/spapr-rtas/Makefile" 5589FILES="$FILES pc-bios/s390-ccw/Makefile" 5590FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 5591FILES="$FILES pc-bios/qemu-icon.bmp" 5592for bios_file in \ 5593 $source_path/pc-bios/*.bin \ 5594 $source_path/pc-bios/*.aml \ 5595 $source_path/pc-bios/*.rom \ 5596 $source_path/pc-bios/*.dtb \ 5597 $source_path/pc-bios/*.img \ 5598 $source_path/pc-bios/openbios-* \ 5599 $source_path/pc-bios/u-boot.* \ 5600 $source_path/pc-bios/palcode-* 5601do 5602 FILES="$FILES pc-bios/`basename $bios_file`" 5603done 5604for test_file in `find $source_path/tests/acpi-test-data -type f` 5605do 5606 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`" 5607done 5608mkdir -p $DIRS 5609for f in $FILES ; do 5610 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 5611 symlink "$source_path/$f" "$f" 5612 fi 5613done 5614 5615# temporary config to build submodules 5616for rom in seabios vgabios ; do 5617 config_mak=roms/$rom/config.mak 5618 echo "# Automatically generated by configure - do not modify" > $config_mak 5619 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 5620 echo "AS=$as" >> $config_mak 5621 echo "CC=$cc" >> $config_mak 5622 echo "BCC=bcc" >> $config_mak 5623 echo "CPP=$cpp" >> $config_mak 5624 echo "OBJCOPY=objcopy" >> $config_mak 5625 echo "IASL=$iasl" >> $config_mak 5626 echo "LD=$ld" >> $config_mak 5627done 5628 5629# set up qemu-iotests in this build directory 5630iotests_common_env="tests/qemu-iotests/common.env" 5631iotests_check="tests/qemu-iotests/check" 5632 5633echo "# Automatically generated by configure - do not modify" > "$iotests_common_env" 5634echo >> "$iotests_common_env" 5635echo "export PYTHON='$python'" >> "$iotests_common_env" 5636 5637if [ ! -e "$iotests_check" ]; then 5638 symlink "$source_path/$iotests_check" "$iotests_check" 5639fi 5640 5641# Save the configure command line for later reuse. 5642cat <<EOD >config.status 5643#!/bin/sh 5644# Generated by configure. 5645# Run this file to recreate the current configuration. 5646# Compiler output produced by configure, useful for debugging 5647# configure, is in config.log if it exists. 5648EOD 5649printf "exec" >>config.status 5650printf " '%s'" "$0" "$@" >>config.status 5651echo >>config.status 5652chmod +x config.status 5653 5654rm -r "$TMPDIR1" 5655