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