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