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