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