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