1#!/bin/sh 2# 3# qemu configure script (c) 2003 Fabrice Bellard 4# 5# set temporary file name 6if test ! -z "$TMPDIR" ; then 7 TMPDIR1="${TMPDIR}" 8elif test ! -z "$TEMPDIR" ; then 9 TMPDIR1="${TEMPDIR}" 10else 11 TMPDIR1="/tmp" 12fi 13 14TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c" 15TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o" 16TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe" 17 18# NB: do not call "exit" in the trap handler; this is buggy with some shells; 19# see <1285349658-3122-1-git-send-email-loic.minier@linaro.org> 20trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM 21rm -f config.log 22 23# Print a helpful header at the top of config.log 24echo "# QEMU configure log $(date)" >> config.log 25printf "# Configured with:" >> config.log 26printf " '%s'" "$0" "$@" >> config.log 27echo >> config.log 28echo "#" >> config.log 29 30do_cc() { 31 # Run the compiler, capturing its output to the log. 32 echo $cc "$@" >> config.log 33 $cc "$@" >> config.log 2>&1 || return $? 34 # Test passed. If this is an --enable-werror build, rerun 35 # the test with -Werror and bail out if it fails. This 36 # makes warning-generating-errors in configure test code 37 # obvious to developers. 38 if test "$werror" != "yes"; then 39 return 0 40 fi 41 # Don't bother rerunning the compile if we were already using -Werror 42 case "$*" in 43 *-Werror*) 44 return 0 45 ;; 46 esac 47 echo $cc -Werror "$@" >> config.log 48 $cc -Werror "$@" >> config.log 2>&1 && return $? 49 echo "ERROR: configure test passed without -Werror but failed with -Werror." 50 echo "This is probably a bug in the configure script. The failing command" 51 echo "will be at the bottom of config.log." 52 echo "You can run configure with --disable-werror to bypass this check." 53 exit 1 54} 55 56compile_object() { 57 do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC 58} 59 60compile_prog() { 61 local_cflags="$1" 62 local_ldflags="$2" 63 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags 64} 65 66# symbolically link $1 to $2. Portable version of "ln -sf". 67symlink() { 68 rm -rf "$2" 69 mkdir -p "$(dirname "$2")" 70 ln -s "$1" "$2" 71} 72 73# check whether a command is available to this shell (may be either an 74# executable or a builtin) 75has() { 76 type "$1" >/dev/null 2>&1 77} 78 79# search for an executable in PATH 80path_of() { 81 local_command="$1" 82 local_ifs="$IFS" 83 local_dir="" 84 85 # pathname has a dir component? 86 if [ "${local_command#*/}" != "$local_command" ]; then 87 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 88 echo "$local_command" 89 return 0 90 fi 91 fi 92 if [ -z "$local_command" ]; then 93 return 1 94 fi 95 96 IFS=: 97 for local_dir in $PATH; do 98 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 99 echo "$local_dir/$local_command" 100 IFS="${local_ifs:-$(printf ' \t\n')}" 101 return 0 102 fi 103 done 104 # not found 105 IFS="${local_ifs:-$(printf ' \t\n')}" 106 return 1 107} 108 109# default parameters 110source_path=`dirname "$0"` 111cpu="" 112interp_prefix="/usr/gnemul/qemu-%M" 113static="no" 114cross_prefix="" 115audio_drv_list="" 116audio_card_list="ac97 es1370 sb16 hda" 117audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda" 118block_drv_whitelist="" 119host_cc="gcc" 120libs_softmmu="" 121libs_tools="" 122audio_pt_int="" 123audio_win_int="" 124cc_i386=i386-pc-linux-gnu-gcc 125libs_qga="" 126debug_info="yes" 127 128target_list="" 129 130# Default value for a variable defining feature "foo". 131# * foo="no" feature will only be used if --enable-foo arg is given 132# * foo="" feature will be searched for, and if found, will be used 133# unless --disable-foo is given 134# * foo="yes" this value will only be set by --enable-foo flag. 135# feature will searched for, 136# if not found, configure exits with error 137# 138# Always add --enable-foo and --disable-foo command line args. 139# Distributions want to ensure that several features are compiled in, and it 140# is impossible without a --enable-foo that exits if a feature is not found. 141 142bluez="" 143brlapi="" 144curl="" 145curses="" 146docs="" 147fdt="" 148nptl="" 149sdl="" 150virtfs="" 151vnc="yes" 152sparse="no" 153uuid="" 154vde="" 155vnc_tls="" 156vnc_sasl="" 157vnc_jpeg="" 158vnc_png="" 159xen="" 160xen_ctrl_version="" 161xen_pci_passthrough="" 162linux_aio="" 163cap_ng="" 164attr="" 165libattr="" 166xfs="" 167 168vhost_net="no" 169kvm="no" 170gprof="no" 171debug_tcg="no" 172debug="no" 173strip_opt="yes" 174tcg_interpreter="no" 175bigendian="no" 176mingw32="no" 177EXESUF="" 178prefix="/usr/local" 179mandir="\${prefix}/share/man" 180datadir="\${prefix}/share" 181qemu_docdir="\${prefix}/share/doc/qemu" 182bindir="\${prefix}/bin" 183libdir="\${prefix}/lib" 184libexecdir="\${prefix}/libexec" 185includedir="\${prefix}/include" 186sysconfdir="\${prefix}/etc" 187confsuffix="/qemu" 188slirp="yes" 189fmod_lib="" 190fmod_inc="" 191oss_lib="" 192bsd="no" 193linux="no" 194solaris="no" 195profiler="no" 196cocoa="no" 197softmmu="yes" 198linux_user="no" 199bsd_user="no" 200guest_base="" 201uname_release="" 202mixemu="no" 203aix="no" 204blobs="yes" 205pkgversion="" 206pie="" 207zero_malloc="" 208trace_backend="nop" 209trace_file="trace" 210spice="" 211rbd="" 212smartcard="" 213smartcard_nss="" 214usb_redir="" 215opengl="" 216zlib="yes" 217guest_agent="yes" 218want_tools="yes" 219libiscsi="" 220coroutine="" 221seccomp="" 222 223# parse CC options first 224for opt do 225 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 226 case "$opt" in 227 --cross-prefix=*) cross_prefix="$optarg" 228 ;; 229 --cc=*) CC="$optarg" 230 ;; 231 --source-path=*) source_path="$optarg" 232 ;; 233 --cpu=*) cpu="$optarg" 234 ;; 235 --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS" 236 ;; 237 --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS" 238 ;; 239 --enable-debug-info) debug_info="yes" 240 ;; 241 --disable-debug-info) debug_info="no" 242 ;; 243 esac 244done 245# OS specific 246# Using uname is really, really broken. Once we have the right set of checks 247# we can eliminate its usage altogether. 248 249cc="${CC-${cross_prefix}gcc}" 250ar="${AR-${cross_prefix}ar}" 251objcopy="${OBJCOPY-${cross_prefix}objcopy}" 252ld="${LD-${cross_prefix}ld}" 253libtool="${LIBTOOL-${cross_prefix}libtool}" 254strip="${STRIP-${cross_prefix}strip}" 255windres="${WINDRES-${cross_prefix}windres}" 256pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 257query_pkg_config() { 258 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 259} 260pkg_config=query_pkg_config 261sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}" 262 263# default flags for all hosts 264QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS" 265QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 266QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 267QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 268QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/fpu" 269if test "$debug_info" = "yes"; then 270 CFLAGS="-g $CFLAGS" 271 LDFLAGS="-g $LDFLAGS" 272fi 273 274# make source path absolute 275source_path=`cd "$source_path"; pwd` 276 277check_define() { 278cat > $TMPC <<EOF 279#if !defined($1) 280#error $1 not defined 281#endif 282int main(void) { return 0; } 283EOF 284 compile_object 285} 286 287if check_define __linux__ ; then 288 targetos="Linux" 289elif check_define _WIN32 ; then 290 targetos='MINGW32' 291elif check_define __OpenBSD__ ; then 292 targetos='OpenBSD' 293elif check_define __sun__ ; then 294 targetos='SunOS' 295elif check_define __HAIKU__ ; then 296 targetos='Haiku' 297else 298 targetos=`uname -s` 299fi 300 301# Some host OSes need non-standard checks for which CPU to use. 302# Note that these checks are broken for cross-compilation: if you're 303# cross-compiling to one of these OSes then you'll need to specify 304# the correct CPU with the --cpu option. 305case $targetos in 306Darwin) 307 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 308 # run 64-bit userspace code. 309 # If the user didn't specify a CPU explicitly and the kernel says this is 310 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 311 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 312 cpu="x86_64" 313 fi 314 ;; 315SunOS) 316 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo 317 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 318 cpu="x86_64" 319 fi 320esac 321 322if test ! -z "$cpu" ; then 323 # command line argument 324 : 325elif check_define __i386__ ; then 326 cpu="i386" 327elif check_define __x86_64__ ; then 328 cpu="x86_64" 329elif check_define __sparc__ ; then 330 if check_define __arch64__ ; then 331 cpu="sparc64" 332 else 333 cpu="sparc" 334 fi 335elif check_define _ARCH_PPC ; then 336 if check_define _ARCH_PPC64 ; then 337 cpu="ppc64" 338 else 339 cpu="ppc" 340 fi 341elif check_define __mips__ ; then 342 cpu="mips" 343elif check_define __ia64__ ; then 344 cpu="ia64" 345elif check_define __s390__ ; then 346 if check_define __s390x__ ; then 347 cpu="s390x" 348 else 349 cpu="s390" 350 fi 351elif check_define __arm__ ; then 352 cpu="arm" 353elif check_define __hppa__ ; then 354 cpu="hppa" 355else 356 cpu=`uname -m` 357fi 358 359ARCH= 360# Normalise host CPU name and set ARCH. 361# Note that this case should only have supported host CPUs, not guests. 362case "$cpu" in 363 ia64|ppc|ppc64|s390|s390x|sparc64) 364 cpu="$cpu" 365 ;; 366 i386|i486|i586|i686|i86pc|BePC) 367 cpu="i386" 368 ;; 369 x86_64|amd64) 370 cpu="x86_64" 371 ;; 372 armv*b|armv*l|arm) 373 cpu="arm" 374 ;; 375 hppa|parisc|parisc64) 376 cpu="hppa" 377 ;; 378 mips*) 379 cpu="mips" 380 ;; 381 sparc|sun4[cdmuv]) 382 cpu="sparc" 383 ;; 384 *) 385 # This will result in either an error or falling back to TCI later 386 ARCH=unknown 387 ;; 388esac 389if test -z "$ARCH"; then 390 ARCH="$cpu" 391fi 392 393# OS specific 394 395case $targetos in 396CYGWIN*) 397 mingw32="yes" 398 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS" 399 audio_possible_drivers="winwave sdl" 400 audio_drv_list="winwave" 401;; 402MINGW32*) 403 mingw32="yes" 404 audio_possible_drivers="winwave dsound sdl fmod" 405 audio_drv_list="winwave" 406;; 407GNU/kFreeBSD) 408 bsd="yes" 409 audio_drv_list="oss" 410 audio_possible_drivers="oss sdl esd pa" 411;; 412FreeBSD) 413 bsd="yes" 414 make="${MAKE-gmake}" 415 audio_drv_list="oss" 416 audio_possible_drivers="oss sdl esd pa" 417 # needed for kinfo_getvmmap(3) in libutil.h 418 LIBS="-lutil $LIBS" 419;; 420DragonFly) 421 bsd="yes" 422 make="${MAKE-gmake}" 423 audio_drv_list="oss" 424 audio_possible_drivers="oss sdl esd pa" 425;; 426NetBSD) 427 bsd="yes" 428 make="${MAKE-gmake}" 429 audio_drv_list="oss" 430 audio_possible_drivers="oss sdl esd" 431 oss_lib="-lossaudio" 432;; 433OpenBSD) 434 bsd="yes" 435 make="${MAKE-gmake}" 436 audio_drv_list="oss" 437 audio_possible_drivers="oss sdl esd" 438 oss_lib="-lossaudio" 439;; 440Darwin) 441 bsd="yes" 442 darwin="yes" 443 if [ "$cpu" = "x86_64" ] ; then 444 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 445 LDFLAGS="-arch x86_64 $LDFLAGS" 446 else 447 QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS" 448 fi 449 cocoa="yes" 450 audio_drv_list="coreaudio" 451 audio_possible_drivers="coreaudio sdl fmod" 452 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 453 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 454 # Disable attempts to use ObjectiveC features in os/object.h since they 455 # won't work when we're compiling with gcc as a C compiler. 456 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 457;; 458SunOS) 459 solaris="yes" 460 make="${MAKE-gmake}" 461 install="${INSTALL-ginstall}" 462 ld="gld" 463 smbd="${SMBD-/usr/sfw/sbin/smbd}" 464 needs_libsunmath="no" 465 solarisrev=`uname -r | cut -f2 -d.` 466 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 467 if test "$solarisrev" -le 9 ; then 468 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then 469 needs_libsunmath="yes" 470 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS" 471 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS" 472 LIBS="-lsunmath $LIBS" 473 else 474 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" 475 echo "libsunmath from the Sun Studio compilers tools, due to a lack of" 476 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" 477 echo "Studio 11 can be downloaded from www.sun.com." 478 exit 1 479 fi 480 fi 481 fi 482 if test -f /usr/include/sys/soundcard.h ; then 483 audio_drv_list="oss" 484 fi 485 audio_possible_drivers="oss sdl" 486# needed for CMSG_ macros in sys/socket.h 487 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 488# needed for TIOCWIN* defines in termios.h 489 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 490 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 491 solarisnetlibs="-lsocket -lnsl -lresolv" 492 LIBS="$solarisnetlibs $LIBS" 493 libs_qga="$solarisnetlibs $libs_qga" 494;; 495AIX) 496 aix="yes" 497 make="${MAKE-gmake}" 498;; 499Haiku) 500 haiku="yes" 501 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 502 LIBS="-lposix_error_mapper -lnetwork $LIBS" 503;; 504*) 505 audio_drv_list="oss" 506 audio_possible_drivers="oss alsa sdl esd pa" 507 linux="yes" 508 linux_user="yes" 509 usb="linux" 510 kvm="yes" 511 vhost_net="yes" 512 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 513 audio_possible_drivers="$audio_possible_drivers fmod" 514 fi 515;; 516esac 517 518if [ "$bsd" = "yes" ] ; then 519 if [ "$darwin" != "yes" ] ; then 520 usb="bsd" 521 bsd_user="yes" 522 fi 523fi 524 525: ${make=${MAKE-make}} 526: ${install=${INSTALL-install}} 527: ${python=${PYTHON-python}} 528: ${smbd=${SMBD-/usr/sbin/smbd}} 529 530# Default objcc to clang if available, otherwise use CC 531if has clang; then 532 objcc=clang 533else 534 objcc="$cc" 535fi 536 537if test "$mingw32" = "yes" ; then 538 EXESUF=".exe" 539 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 540 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 541 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 542 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 543cat > $TMPC << EOF 544int main(void) { return 0; } 545EOF 546 if compile_prog "" "-liberty" ; then 547 LIBS="-liberty $LIBS" 548 fi 549 prefix="c:/Program Files/QEMU" 550 mandir="\${prefix}" 551 datadir="\${prefix}" 552 qemu_docdir="\${prefix}" 553 bindir="\${prefix}" 554 sysconfdir="\${prefix}" 555 confsuffix="" 556 libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga" 557fi 558 559werror="" 560 561for opt do 562 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 563 case "$opt" in 564 --help|-h) show_help=yes 565 ;; 566 --version|-V) exec cat $source_path/VERSION 567 ;; 568 --prefix=*) prefix="$optarg" 569 ;; 570 --interp-prefix=*) interp_prefix="$optarg" 571 ;; 572 --source-path=*) 573 ;; 574 --cross-prefix=*) 575 ;; 576 --cc=*) 577 ;; 578 --host-cc=*) host_cc="$optarg" 579 ;; 580 --objcc=*) objcc="$optarg" 581 ;; 582 --make=*) make="$optarg" 583 ;; 584 --install=*) install="$optarg" 585 ;; 586 --python=*) python="$optarg" 587 ;; 588 --smbd=*) smbd="$optarg" 589 ;; 590 --extra-cflags=*) 591 ;; 592 --extra-ldflags=*) 593 ;; 594 --enable-debug-info) 595 ;; 596 --disable-debug-info) 597 ;; 598 --cpu=*) 599 ;; 600 --target-list=*) target_list="$optarg" 601 ;; 602 --enable-trace-backend=*) trace_backend="$optarg" 603 ;; 604 --with-trace-file=*) trace_file="$optarg" 605 ;; 606 --enable-gprof) gprof="yes" 607 ;; 608 --static) 609 static="yes" 610 LDFLAGS="-static $LDFLAGS" 611 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 612 ;; 613 --mandir=*) mandir="$optarg" 614 ;; 615 --bindir=*) bindir="$optarg" 616 ;; 617 --libdir=*) libdir="$optarg" 618 ;; 619 --libexecdir=*) libexecdir="$optarg" 620 ;; 621 --includedir=*) includedir="$optarg" 622 ;; 623 --datadir=*) datadir="$optarg" 624 ;; 625 --with-confsuffix=*) confsuffix="$optarg" 626 ;; 627 --docdir=*) qemu_docdir="$optarg" 628 ;; 629 --sysconfdir=*) sysconfdir="$optarg" 630 ;; 631 --sbindir=*|--sharedstatedir=*|--localstatedir=*|\ 632 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 633 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 634 # These switches are silently ignored, for compatibility with 635 # autoconf-generated configure scripts. This allows QEMU's 636 # configure to be used by RPM and similar macros that set 637 # lots of directory switches by default. 638 ;; 639 --disable-sdl) sdl="no" 640 ;; 641 --enable-sdl) sdl="yes" 642 ;; 643 --disable-virtfs) virtfs="no" 644 ;; 645 --enable-virtfs) virtfs="yes" 646 ;; 647 --disable-vnc) vnc="no" 648 ;; 649 --enable-vnc) vnc="yes" 650 ;; 651 --fmod-lib=*) fmod_lib="$optarg" 652 ;; 653 --fmod-inc=*) fmod_inc="$optarg" 654 ;; 655 --oss-lib=*) oss_lib="$optarg" 656 ;; 657 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'` 658 ;; 659 --audio-drv-list=*) audio_drv_list="$optarg" 660 ;; 661 --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 662 ;; 663 --enable-debug-tcg) debug_tcg="yes" 664 ;; 665 --disable-debug-tcg) debug_tcg="no" 666 ;; 667 --enable-debug) 668 # Enable debugging options that aren't excessively noisy 669 debug_tcg="yes" 670 debug="yes" 671 strip_opt="no" 672 ;; 673 --enable-sparse) sparse="yes" 674 ;; 675 --disable-sparse) sparse="no" 676 ;; 677 --disable-strip) strip_opt="no" 678 ;; 679 --disable-vnc-tls) vnc_tls="no" 680 ;; 681 --enable-vnc-tls) vnc_tls="yes" 682 ;; 683 --disable-vnc-sasl) vnc_sasl="no" 684 ;; 685 --enable-vnc-sasl) vnc_sasl="yes" 686 ;; 687 --disable-vnc-jpeg) vnc_jpeg="no" 688 ;; 689 --enable-vnc-jpeg) vnc_jpeg="yes" 690 ;; 691 --disable-vnc-png) vnc_png="no" 692 ;; 693 --enable-vnc-png) vnc_png="yes" 694 ;; 695 --disable-slirp) slirp="no" 696 ;; 697 --disable-uuid) uuid="no" 698 ;; 699 --enable-uuid) uuid="yes" 700 ;; 701 --disable-vde) vde="no" 702 ;; 703 --enable-vde) vde="yes" 704 ;; 705 --disable-xen) xen="no" 706 ;; 707 --enable-xen) xen="yes" 708 ;; 709 --disable-xen-pci-passthrough) xen_pci_passthrough="no" 710 ;; 711 --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 712 ;; 713 --disable-brlapi) brlapi="no" 714 ;; 715 --enable-brlapi) brlapi="yes" 716 ;; 717 --disable-bluez) bluez="no" 718 ;; 719 --enable-bluez) bluez="yes" 720 ;; 721 --disable-kvm) kvm="no" 722 ;; 723 --enable-kvm) kvm="yes" 724 ;; 725 --disable-tcg-interpreter) tcg_interpreter="no" 726 ;; 727 --enable-tcg-interpreter) tcg_interpreter="yes" 728 ;; 729 --disable-cap-ng) cap_ng="no" 730 ;; 731 --enable-cap-ng) cap_ng="yes" 732 ;; 733 --disable-spice) spice="no" 734 ;; 735 --enable-spice) spice="yes" 736 ;; 737 --disable-libiscsi) libiscsi="no" 738 ;; 739 --enable-libiscsi) libiscsi="yes" 740 ;; 741 --enable-profiler) profiler="yes" 742 ;; 743 --disable-cocoa) cocoa="no" 744 ;; 745 --enable-cocoa) 746 cocoa="yes" ; 747 sdl="no" ; 748 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" 749 ;; 750 --disable-system) softmmu="no" 751 ;; 752 --enable-system) softmmu="yes" 753 ;; 754 --disable-user) 755 linux_user="no" ; 756 bsd_user="no" ; 757 ;; 758 --enable-user) ;; 759 --disable-linux-user) linux_user="no" 760 ;; 761 --enable-linux-user) linux_user="yes" 762 ;; 763 --disable-bsd-user) bsd_user="no" 764 ;; 765 --enable-bsd-user) bsd_user="yes" 766 ;; 767 --enable-guest-base) guest_base="yes" 768 ;; 769 --disable-guest-base) guest_base="no" 770 ;; 771 --enable-pie) pie="yes" 772 ;; 773 --disable-pie) pie="no" 774 ;; 775 --enable-uname-release=*) uname_release="$optarg" 776 ;; 777 --enable-werror) werror="yes" 778 ;; 779 --disable-werror) werror="no" 780 ;; 781 --disable-curses) curses="no" 782 ;; 783 --enable-curses) curses="yes" 784 ;; 785 --disable-curl) curl="no" 786 ;; 787 --enable-curl) curl="yes" 788 ;; 789 --disable-fdt) fdt="no" 790 ;; 791 --enable-fdt) fdt="yes" 792 ;; 793 --disable-nptl) nptl="no" 794 ;; 795 --enable-nptl) nptl="yes" 796 ;; 797 --enable-mixemu) mixemu="yes" 798 ;; 799 --disable-linux-aio) linux_aio="no" 800 ;; 801 --enable-linux-aio) linux_aio="yes" 802 ;; 803 --disable-attr) attr="no" 804 ;; 805 --enable-attr) attr="yes" 806 ;; 807 --disable-blobs) blobs="no" 808 ;; 809 --with-pkgversion=*) pkgversion=" ($optarg)" 810 ;; 811 --with-coroutine=*) coroutine="$optarg" 812 ;; 813 --disable-docs) docs="no" 814 ;; 815 --enable-docs) docs="yes" 816 ;; 817 --disable-vhost-net) vhost_net="no" 818 ;; 819 --enable-vhost-net) vhost_net="yes" 820 ;; 821 --disable-opengl) opengl="no" 822 ;; 823 --enable-opengl) opengl="yes" 824 ;; 825 --disable-rbd) rbd="no" 826 ;; 827 --enable-rbd) rbd="yes" 828 ;; 829 --disable-xfsctl) xfs="no" 830 ;; 831 --enable-xfsctl) xfs="yes" 832 ;; 833 --disable-smartcard) smartcard="no" 834 ;; 835 --enable-smartcard) smartcard="yes" 836 ;; 837 --disable-smartcard-nss) smartcard_nss="no" 838 ;; 839 --enable-smartcard-nss) smartcard_nss="yes" 840 ;; 841 --disable-usb-redir) usb_redir="no" 842 ;; 843 --enable-usb-redir) usb_redir="yes" 844 ;; 845 --disable-zlib-test) zlib="no" 846 ;; 847 --enable-guest-agent) guest_agent="yes" 848 ;; 849 --disable-guest-agent) guest_agent="no" 850 ;; 851 --enable-tools) want_tools="yes" 852 ;; 853 --disable-tools) want_tools="no" 854 ;; 855 --enable-seccomp) seccomp="yes" 856 ;; 857 --disable-seccomp) seccomp="no" 858 ;; 859 *) echo "ERROR: unknown option $opt"; show_help="yes" 860 ;; 861 esac 862done 863 864host_guest_base="no" 865case "$cpu" in 866 sparc) 867 LDFLAGS="-m32 $LDFLAGS" 868 QEMU_CFLAGS="-m32 -mcpu=ultrasparc $QEMU_CFLAGS" 869 host_guest_base="yes" 870 ;; 871 sparc64) 872 LDFLAGS="-m64 $LDFLAGS" 873 QEMU_CFLAGS="-m64 -mcpu=ultrasparc $QEMU_CFLAGS" 874 host_guest_base="yes" 875 ;; 876 s390) 877 QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS" 878 LDFLAGS="-m31 $LDFLAGS" 879 host_guest_base="yes" 880 ;; 881 s390x) 882 QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS" 883 LDFLAGS="-m64 $LDFLAGS" 884 host_guest_base="yes" 885 ;; 886 i386) 887 QEMU_CFLAGS="-m32 $QEMU_CFLAGS" 888 LDFLAGS="-m32 $LDFLAGS" 889 cc_i386='$(CC) -m32' 890 host_guest_base="yes" 891 ;; 892 x86_64) 893 QEMU_CFLAGS="-m64 $QEMU_CFLAGS" 894 LDFLAGS="-m64 $LDFLAGS" 895 cc_i386='$(CC) -m32' 896 host_guest_base="yes" 897 ;; 898 arm*) 899 host_guest_base="yes" 900 ;; 901 ppc*) 902 host_guest_base="yes" 903 ;; 904 mips*) 905 host_guest_base="yes" 906 ;; 907 ia64*) 908 host_guest_base="yes" 909 ;; 910 hppa*) 911 host_guest_base="yes" 912 ;; 913 unicore32*) 914 host_guest_base="yes" 915 ;; 916esac 917 918[ -z "$guest_base" ] && guest_base="$host_guest_base" 919 920 921default_target_list="" 922 923# these targets are portable 924if [ "$softmmu" = "yes" ] ; then 925 default_target_list="\ 926i386-softmmu \ 927x86_64-softmmu \ 928alpha-softmmu \ 929arm-softmmu \ 930cris-softmmu \ 931lm32-softmmu \ 932m68k-softmmu \ 933microblaze-softmmu \ 934microblazeel-softmmu \ 935mips-softmmu \ 936mipsel-softmmu \ 937mips64-softmmu \ 938mips64el-softmmu \ 939or32-softmmu \ 940ppc-softmmu \ 941ppcemb-softmmu \ 942ppc64-softmmu \ 943sh4-softmmu \ 944sh4eb-softmmu \ 945sparc-softmmu \ 946sparc64-softmmu \ 947s390x-softmmu \ 948xtensa-softmmu \ 949xtensaeb-softmmu \ 950unicore32-softmmu \ 951" 952fi 953# the following are Linux specific 954if [ "$linux_user" = "yes" ] ; then 955 default_target_list="${default_target_list}\ 956i386-linux-user \ 957x86_64-linux-user \ 958alpha-linux-user \ 959arm-linux-user \ 960armeb-linux-user \ 961cris-linux-user \ 962m68k-linux-user \ 963microblaze-linux-user \ 964microblazeel-linux-user \ 965mips-linux-user \ 966mipsel-linux-user \ 967or32-linux-user \ 968ppc-linux-user \ 969ppc64-linux-user \ 970ppc64abi32-linux-user \ 971sh4-linux-user \ 972sh4eb-linux-user \ 973sparc-linux-user \ 974sparc64-linux-user \ 975sparc32plus-linux-user \ 976unicore32-linux-user \ 977s390x-linux-user \ 978" 979fi 980# the following are BSD specific 981if [ "$bsd_user" = "yes" ] ; then 982 default_target_list="${default_target_list}\ 983i386-bsd-user \ 984x86_64-bsd-user \ 985sparc-bsd-user \ 986sparc64-bsd-user \ 987" 988fi 989 990if test x"$show_help" = x"yes" ; then 991cat << EOF 992 993Usage: configure [options] 994Options: [defaults in brackets after descriptions] 995 996EOF 997echo "Standard options:" 998echo " --help print this message" 999echo " --prefix=PREFIX install in PREFIX [$prefix]" 1000echo " --interp-prefix=PREFIX where to find shared libraries, etc." 1001echo " use %M for cpu name [$interp_prefix]" 1002echo " --target-list=LIST set target list (default: build everything)" 1003echo "Available targets: $default_target_list" | \ 1004 fold -s -w 53 | sed -e 's/^/ /' 1005echo "" 1006echo "Advanced options (experts only):" 1007echo " --source-path=PATH path of source code [$source_path]" 1008echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]" 1009echo " --cc=CC use C compiler CC [$cc]" 1010echo " --host-cc=CC use C compiler CC [$host_cc] for code run at" 1011echo " build time" 1012echo " --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]" 1013echo " --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS" 1014echo " --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS" 1015echo " --make=MAKE use specified make [$make]" 1016echo " --install=INSTALL use specified install [$install]" 1017echo " --python=PYTHON use specified python [$python]" 1018echo " --smbd=SMBD use specified smbd [$smbd]" 1019echo " --static enable static build [$static]" 1020echo " --mandir=PATH install man pages in PATH" 1021echo " --datadir=PATH install firmware in PATH$confsuffix" 1022echo " --docdir=PATH install documentation in PATH$confsuffix" 1023echo " --bindir=PATH install binaries in PATH" 1024echo " --sysconfdir=PATH install config in PATH$confsuffix" 1025echo " --with-confsuffix=SUFFIX suffix for QEMU data inside datadir and sysconfdir [$confsuffix]" 1026echo " --enable-debug-tcg enable TCG debugging" 1027echo " --disable-debug-tcg disable TCG debugging (default)" 1028echo " --enable-debug enable common debug build options" 1029echo " --enable-sparse enable sparse checker" 1030echo " --disable-sparse disable sparse checker (default)" 1031echo " --disable-strip disable stripping binaries" 1032echo " --disable-werror disable compilation abort on warning" 1033echo " --disable-sdl disable SDL" 1034echo " --enable-sdl enable SDL" 1035echo " --disable-virtfs disable VirtFS" 1036echo " --enable-virtfs enable VirtFS" 1037echo " --disable-vnc disable VNC" 1038echo " --enable-vnc enable VNC" 1039echo " --disable-cocoa disable Cocoa (Mac OS X only)" 1040echo " --enable-cocoa enable Cocoa (default on Mac OS X)" 1041echo " --audio-drv-list=LIST set audio drivers list:" 1042echo " Available drivers: $audio_possible_drivers" 1043echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_list]" 1044echo " Available cards: $audio_possible_cards" 1045echo " --block-drv-whitelist=L set block driver whitelist" 1046echo " (affects only QEMU, not qemu-img)" 1047echo " --enable-mixemu enable mixer emulation" 1048echo " --disable-xen disable xen backend driver support" 1049echo " --enable-xen enable xen backend driver support" 1050echo " --disable-xen-pci-passthrough" 1051echo " --enable-xen-pci-passthrough" 1052echo " --disable-brlapi disable BrlAPI" 1053echo " --enable-brlapi enable BrlAPI" 1054echo " --disable-vnc-tls disable TLS encryption for VNC server" 1055echo " --enable-vnc-tls enable TLS encryption for VNC server" 1056echo " --disable-vnc-sasl disable SASL encryption for VNC server" 1057echo " --enable-vnc-sasl enable SASL encryption for VNC server" 1058echo " --disable-vnc-jpeg disable JPEG lossy compression for VNC server" 1059echo " --enable-vnc-jpeg enable JPEG lossy compression for VNC server" 1060echo " --disable-vnc-png disable PNG compression for VNC server (default)" 1061echo " --enable-vnc-png enable PNG compression for VNC server" 1062echo " --disable-curses disable curses output" 1063echo " --enable-curses enable curses output" 1064echo " --disable-curl disable curl connectivity" 1065echo " --enable-curl enable curl connectivity" 1066echo " --disable-fdt disable fdt device tree" 1067echo " --enable-fdt enable fdt device tree" 1068echo " --disable-bluez disable bluez stack connectivity" 1069echo " --enable-bluez enable bluez stack connectivity" 1070echo " --disable-slirp disable SLIRP userspace network connectivity" 1071echo " --disable-kvm disable KVM acceleration support" 1072echo " --enable-kvm enable KVM acceleration support" 1073echo " --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)" 1074echo " --disable-nptl disable usermode NPTL support" 1075echo " --enable-nptl enable usermode NPTL support" 1076echo " --enable-system enable all system emulation targets" 1077echo " --disable-system disable all system emulation targets" 1078echo " --enable-user enable supported user emulation targets" 1079echo " --disable-user disable all user emulation targets" 1080echo " --enable-linux-user enable all linux usermode emulation targets" 1081echo " --disable-linux-user disable all linux usermode emulation targets" 1082echo " --enable-bsd-user enable all BSD usermode emulation targets" 1083echo " --disable-bsd-user disable all BSD usermode emulation targets" 1084echo " --enable-guest-base enable GUEST_BASE support for usermode" 1085echo " emulation targets" 1086echo " --disable-guest-base disable GUEST_BASE support" 1087echo " --enable-pie build Position Independent Executables" 1088echo " --disable-pie do not build Position Independent Executables" 1089echo " --fmod-lib path to FMOD library" 1090echo " --fmod-inc path to FMOD includes" 1091echo " --oss-lib path to OSS library" 1092echo " --enable-uname-release=R Return R for uname -r in usermode emulation" 1093echo " --cpu=CPU Build for host CPU [$cpu]" 1094echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9" 1095echo " --disable-uuid disable uuid support" 1096echo " --enable-uuid enable uuid support" 1097echo " --disable-vde disable support for vde network" 1098echo " --enable-vde enable support for vde network" 1099echo " --disable-linux-aio disable Linux AIO support" 1100echo " --enable-linux-aio enable Linux AIO support" 1101echo " --disable-cap-ng disable libcap-ng support" 1102echo " --enable-cap-ng enable libcap-ng support" 1103echo " --disable-attr disables attr and xattr support" 1104echo " --enable-attr enable attr and xattr support" 1105echo " --disable-blobs disable installing provided firmware blobs" 1106echo " --enable-docs enable documentation build" 1107echo " --disable-docs disable documentation build" 1108echo " --disable-vhost-net disable vhost-net acceleration support" 1109echo " --enable-vhost-net enable vhost-net acceleration support" 1110echo " --enable-trace-backend=B Set trace backend" 1111echo " Available backends:" $($python "$source_path"/scripts/tracetool.py --list-backends) 1112echo " --with-trace-file=NAME Full PATH,NAME of file to store traces" 1113echo " Default:trace-<pid>" 1114echo " --disable-spice disable spice" 1115echo " --enable-spice enable spice" 1116echo " --enable-rbd enable building the rados block device (rbd)" 1117echo " --disable-libiscsi disable iscsi support" 1118echo " --enable-libiscsi enable iscsi support" 1119echo " --disable-smartcard disable smartcard support" 1120echo " --enable-smartcard enable smartcard support" 1121echo " --disable-smartcard-nss disable smartcard nss support" 1122echo " --enable-smartcard-nss enable smartcard nss support" 1123echo " --disable-usb-redir disable usb network redirection support" 1124echo " --enable-usb-redir enable usb network redirection support" 1125echo " --disable-guest-agent disable building of the QEMU Guest Agent" 1126echo " --enable-guest-agent enable building of the QEMU Guest Agent" 1127echo " --disable-seccomp disable seccomp support" 1128echo " --enable-seccomp enables seccomp support" 1129echo " --with-coroutine=BACKEND coroutine backend. Supported options:" 1130echo " gthread, ucontext, sigaltstack, windows" 1131echo "" 1132echo "NOTE: The object files are built at the place where configure is launched" 1133exit 1 1134fi 1135 1136# Now we have handled --enable-tcg-interpreter and know we're not just 1137# printing the help message, bail out if the host CPU isn't supported. 1138if test "$ARCH" = "unknown"; then 1139 if test "$tcg_interpreter" = "yes" ; then 1140 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1141 ARCH=tci 1142 else 1143 echo "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1144 exit 1 1145 fi 1146fi 1147 1148# check that the C compiler works. 1149cat > $TMPC <<EOF 1150int main(void) { return 0; } 1151EOF 1152 1153if compile_object ; then 1154 : C compiler works ok 1155else 1156 echo "ERROR: \"$cc\" either does not exist or does not work" 1157 exit 1 1158fi 1159 1160# Consult white-list to determine whether to enable werror 1161# by default. Only enable by default for git builds 1162z_version=`cut -f3 -d. $source_path/VERSION` 1163 1164if test -z "$werror" ; then 1165 if test "$z_version" = "50" -a \ 1166 "$linux" = "yes" ; then 1167 werror="yes" 1168 else 1169 werror="no" 1170 fi 1171fi 1172 1173gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 1174gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 1175gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 1176gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags" 1177# Note that we do not add -Werror to gcc_flags here, because that would 1178# enable it for all configure tests. If a configure test failed due 1179# to -Werror this would just silently disable some features, 1180# so it's too error prone. 1181cat > $TMPC << EOF 1182int main(void) { return 0; } 1183EOF 1184for flag in $gcc_flags; do 1185 if compile_prog "-Werror $flag" "" ; then 1186 QEMU_CFLAGS="$QEMU_CFLAGS $flag" 1187 fi 1188done 1189 1190if test "$static" = "yes" ; then 1191 if test "$pie" = "yes" ; then 1192 echo "static and pie are mutually incompatible" 1193 exit 1 1194 else 1195 pie="no" 1196 fi 1197fi 1198 1199if test "$pie" = ""; then 1200 case "$cpu-$targetos" in 1201 i386-Linux|x86_64-Linux|i386-OpenBSD|x86_64-OpenBSD) 1202 ;; 1203 *) 1204 pie="no" 1205 ;; 1206 esac 1207fi 1208 1209if test "$pie" != "no" ; then 1210 cat > $TMPC << EOF 1211 1212#ifdef __linux__ 1213# define THREAD __thread 1214#else 1215# define THREAD 1216#endif 1217 1218static THREAD int tls_var; 1219 1220int main(void) { return tls_var; } 1221 1222EOF 1223 if compile_prog "-fPIE -DPIE" "-pie"; then 1224 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 1225 LDFLAGS="-pie $LDFLAGS" 1226 pie="yes" 1227 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 1228 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 1229 fi 1230 else 1231 if test "$pie" = "yes"; then 1232 echo "PIE not available due to missing toolchain support" 1233 exit 1 1234 else 1235 echo "Disabling PIE due to missing toolchain support" 1236 pie="no" 1237 fi 1238 fi 1239fi 1240 1241# 1242# Solaris specific configure tool chain decisions 1243# 1244if test "$solaris" = "yes" ; then 1245 if has $install; then 1246 : 1247 else 1248 echo "Solaris install program not found. Use --install=/usr/ucb/install or" 1249 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils" 1250 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1251 exit 1 1252 fi 1253 if test "`path_of $install`" = "/usr/sbin/install" ; then 1254 echo "Error: Solaris /usr/sbin/install is not an appropriate install program." 1255 echo "try ginstall from the GNU fileutils available from www.blastwave.org" 1256 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1257 exit 1 1258 fi 1259 if has ar; then 1260 : 1261 else 1262 echo "Error: No path includes ar" 1263 if test -f /usr/ccs/bin/ar ; then 1264 echo "Add /usr/ccs/bin to your path and rerun configure" 1265 fi 1266 exit 1 1267 fi 1268fi 1269 1270if ! has $python; then 1271 echo "Python not found. Use --python=/path/to/python" 1272 exit 1 1273fi 1274 1275# Note that if the Python conditional here evaluates True we will exit 1276# with status 1 which is a shell 'false' value. 1277if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then 1278 echo "Cannot use '$python', Python 2.4 or later is required." 1279 echo "Note that Python 3 or later is not yet supported." 1280 echo "Use --python=/path/to/python to specify a supported Python." 1281 exit 1 1282fi 1283 1284if test -z "$target_list" ; then 1285 target_list="$default_target_list" 1286else 1287 target_list=`echo "$target_list" | sed -e 's/,/ /g'` 1288fi 1289# see if system emulation was really requested 1290case " $target_list " in 1291 *"-softmmu "*) softmmu=yes 1292 ;; 1293 *) softmmu=no 1294 ;; 1295esac 1296 1297feature_not_found() { 1298 feature=$1 1299 1300 echo "ERROR" 1301 echo "ERROR: User requested feature $feature" 1302 echo "ERROR: configure was not able to find it" 1303 echo "ERROR" 1304 exit 1; 1305} 1306 1307if test -z "$cross_prefix" ; then 1308 1309# --- 1310# big/little endian test 1311cat > $TMPC << EOF 1312#include <inttypes.h> 1313int main(int argc, char ** argv){ 1314 volatile uint32_t i=0x01234567; 1315 return (*((uint8_t*)(&i))) == 0x67; 1316} 1317EOF 1318 1319if compile_prog "" "" ; then 1320$TMPE && bigendian="yes" 1321else 1322echo big/little test failed 1323fi 1324 1325else 1326 1327# if cross compiling, cannot launch a program, so make a static guess 1328case "$cpu" in 1329 arm) 1330 # ARM can be either way; ask the compiler which one we are 1331 if check_define __ARMEB__; then 1332 bigendian=yes 1333 fi 1334 ;; 1335 hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64) 1336 bigendian=yes 1337 ;; 1338esac 1339 1340fi 1341 1342########################################## 1343# NPTL probe 1344 1345if test "$nptl" != "no" ; then 1346 cat > $TMPC <<EOF 1347#include <sched.h> 1348#include <linux/futex.h> 1349int main(void) { 1350#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1351#error bork 1352#endif 1353 return 0; 1354} 1355EOF 1356 1357 if compile_object ; then 1358 nptl=yes 1359 else 1360 if test "$nptl" = "yes" ; then 1361 feature_not_found "nptl" 1362 fi 1363 nptl=no 1364 fi 1365fi 1366 1367########################################## 1368# zlib check 1369 1370if test "$zlib" != "no" ; then 1371 cat > $TMPC << EOF 1372#include <zlib.h> 1373int main(void) { zlibVersion(); return 0; } 1374EOF 1375 if compile_prog "" "-lz" ; then 1376 : 1377 else 1378 echo 1379 echo "Error: zlib check failed" 1380 echo "Make sure to have the zlib libs and headers installed." 1381 echo 1382 exit 1 1383 fi 1384fi 1385 1386########################################## 1387# libseccomp check 1388 1389if test "$seccomp" != "no" ; then 1390 if $pkg_config libseccomp --modversion >/dev/null 2>&1; then 1391 LIBS=`$pkg_config --libs libseccomp` 1392 seccomp="yes" 1393 else 1394 if test "$seccomp" = "yes"; then 1395 feature_not_found "libseccomp" 1396 fi 1397 seccomp="no" 1398 fi 1399fi 1400########################################## 1401# xen probe 1402 1403if test "$xen" != "no" ; then 1404 xen_libs="-lxenstore -lxenctrl -lxenguest" 1405 1406 # First we test whether Xen headers and libraries are available. 1407 # If no, we are done and there is no Xen support. 1408 # If yes, more tests are run to detect the Xen version. 1409 1410 # Xen (any) 1411 cat > $TMPC <<EOF 1412#include <xenctrl.h> 1413int main(void) { 1414 return 0; 1415} 1416EOF 1417 if ! compile_prog "" "$xen_libs" ; then 1418 # Xen not found 1419 if test "$xen" = "yes" ; then 1420 feature_not_found "xen" 1421 fi 1422 xen=no 1423 1424 # Xen unstable 1425 elif 1426 cat > $TMPC <<EOF && 1427#include <xenctrl.h> 1428#include <xenstore.h> 1429#include <stdint.h> 1430#include <xen/hvm/hvm_info_table.h> 1431#if !defined(HVM_MAX_VCPUS) 1432# error HVM_MAX_VCPUS not defined 1433#endif 1434int main(void) { 1435 xc_interface *xc; 1436 xs_daemon_open(); 1437 xc = xc_interface_open(0, 0, 0); 1438 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1439 xc_gnttab_open(NULL, 0); 1440 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1441 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 1442 return 0; 1443} 1444EOF 1445 compile_prog "" "$xen_libs" 1446 then 1447 xen_ctrl_version=420 1448 xen=yes 1449 1450 elif 1451 cat > $TMPC <<EOF && 1452#include <xenctrl.h> 1453#include <xs.h> 1454#include <stdint.h> 1455#include <xen/hvm/hvm_info_table.h> 1456#if !defined(HVM_MAX_VCPUS) 1457# error HVM_MAX_VCPUS not defined 1458#endif 1459int main(void) { 1460 xs_daemon_open(); 1461 xc_interface_open(0, 0, 0); 1462 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1463 xc_gnttab_open(NULL, 0); 1464 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1465 return 0; 1466} 1467EOF 1468 compile_prog "" "$xen_libs" 1469 then 1470 xen_ctrl_version=410 1471 xen=yes 1472 1473 # Xen 4.0.0 1474 elif 1475 cat > $TMPC <<EOF && 1476#include <xenctrl.h> 1477#include <xs.h> 1478#include <stdint.h> 1479#include <xen/hvm/hvm_info_table.h> 1480#if !defined(HVM_MAX_VCPUS) 1481# error HVM_MAX_VCPUS not defined 1482#endif 1483int main(void) { 1484 struct xen_add_to_physmap xatp = { 1485 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1486 }; 1487 xs_daemon_open(); 1488 xc_interface_open(); 1489 xc_gnttab_open(); 1490 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1491 xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1492 return 0; 1493} 1494EOF 1495 compile_prog "" "$xen_libs" 1496 then 1497 xen_ctrl_version=400 1498 xen=yes 1499 1500 # Xen 3.4.0 1501 elif 1502 cat > $TMPC <<EOF && 1503#include <xenctrl.h> 1504#include <xs.h> 1505int main(void) { 1506 struct xen_add_to_physmap xatp = { 1507 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1508 }; 1509 xs_daemon_open(); 1510 xc_interface_open(); 1511 xc_gnttab_open(); 1512 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1513 xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1514 return 0; 1515} 1516EOF 1517 compile_prog "" "$xen_libs" 1518 then 1519 xen_ctrl_version=340 1520 xen=yes 1521 1522 # Xen 3.3.0 1523 elif 1524 cat > $TMPC <<EOF && 1525#include <xenctrl.h> 1526#include <xs.h> 1527int main(void) { 1528 xs_daemon_open(); 1529 xc_interface_open(); 1530 xc_gnttab_open(); 1531 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1532 return 0; 1533} 1534EOF 1535 compile_prog "" "$xen_libs" 1536 then 1537 xen_ctrl_version=330 1538 xen=yes 1539 1540 # Xen version unsupported 1541 else 1542 if test "$xen" = "yes" ; then 1543 feature_not_found "xen (unsupported version)" 1544 fi 1545 xen=no 1546 fi 1547 1548 if test "$xen" = yes; then 1549 libs_softmmu="$xen_libs $libs_softmmu" 1550 fi 1551fi 1552 1553if test "$xen_pci_passthrough" != "no"; then 1554 if test "$xen" = "yes" && test "$linux" = "yes" && 1555 test "$xen_ctrl_version" -ge 340; then 1556 xen_pci_passthrough=yes 1557 else 1558 if test "$xen_pci_passthrough" = "yes"; then 1559 echo "ERROR" 1560 echo "ERROR: User requested feature Xen PCI Passthrough" 1561 echo "ERROR: but this feature require /sys from Linux" 1562 if test "$xen_ctrl_version" -lt 340; then 1563 echo "ERROR: This feature does not work with Xen 3.3" 1564 fi 1565 echo "ERROR" 1566 exit 1; 1567 fi 1568 xen_pci_passthrough=no 1569 fi 1570fi 1571 1572########################################## 1573# pkg-config probe 1574 1575if ! has "$pkg_config_exe"; then 1576 echo "Error: pkg-config binary '$pkg_config_exe' not found" 1577 exit 1 1578fi 1579 1580########################################## 1581# libtool probe 1582 1583if ! has $libtool; then 1584 libtool= 1585fi 1586 1587########################################## 1588# Sparse probe 1589if test "$sparse" != "no" ; then 1590 if has cgcc; then 1591 sparse=yes 1592 else 1593 if test "$sparse" = "yes" ; then 1594 feature_not_found "sparse" 1595 fi 1596 sparse=no 1597 fi 1598fi 1599 1600########################################## 1601# SDL probe 1602 1603# Look for sdl configuration program (pkg-config or sdl-config). Try 1604# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 1605if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then 1606 sdl_config=sdl-config 1607fi 1608 1609if $pkg_config sdl --modversion >/dev/null 2>&1; then 1610 sdlconfig="$pkg_config sdl" 1611 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 1612elif has ${sdl_config}; then 1613 sdlconfig="$sdl_config" 1614 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 1615else 1616 if test "$sdl" = "yes" ; then 1617 feature_not_found "sdl" 1618 fi 1619 sdl=no 1620fi 1621if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 1622 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 1623fi 1624 1625sdl_too_old=no 1626if test "$sdl" != "no" ; then 1627 cat > $TMPC << EOF 1628#include <SDL.h> 1629#undef main /* We don't want SDL to override our main() */ 1630int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 1631EOF 1632 sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 1633 if test "$static" = "yes" ; then 1634 sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 1635 else 1636 sdl_libs=`$sdlconfig --libs 2> /dev/null` 1637 fi 1638 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1639 if test "$_sdlversion" -lt 121 ; then 1640 sdl_too_old=yes 1641 else 1642 if test "$cocoa" = "no" ; then 1643 sdl=yes 1644 fi 1645 fi 1646 1647 # static link with sdl ? (note: sdl.pc's --static --libs is broken) 1648 if test "$sdl" = "yes" -a "$static" = "yes" ; then 1649 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 1650 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 1651 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 1652 fi 1653 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1654 : 1655 else 1656 sdl=no 1657 fi 1658 fi # static link 1659 else # sdl not found 1660 if test "$sdl" = "yes" ; then 1661 feature_not_found "sdl" 1662 fi 1663 sdl=no 1664 fi # sdl compile test 1665fi 1666 1667if test "$sdl" = "yes" ; then 1668 cat > $TMPC <<EOF 1669#include <SDL.h> 1670#if defined(SDL_VIDEO_DRIVER_X11) 1671#include <X11/XKBlib.h> 1672#else 1673#error No x11 support 1674#endif 1675int main(void) { return 0; } 1676EOF 1677 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1678 sdl_libs="$sdl_libs -lX11" 1679 fi 1680 libs_softmmu="$sdl_libs $libs_softmmu" 1681fi 1682 1683########################################## 1684# VNC TLS detection 1685if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then 1686 cat > $TMPC <<EOF 1687#include <gnutls/gnutls.h> 1688int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 1689EOF 1690 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 1691 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 1692 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then 1693 vnc_tls=yes 1694 libs_softmmu="$vnc_tls_libs $libs_softmmu" 1695 else 1696 if test "$vnc_tls" = "yes" ; then 1697 feature_not_found "vnc-tls" 1698 fi 1699 vnc_tls=no 1700 fi 1701fi 1702 1703########################################## 1704# VNC SASL detection 1705if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 1706 cat > $TMPC <<EOF 1707#include <sasl/sasl.h> 1708#include <stdio.h> 1709int main(void) { sasl_server_init(NULL, "qemu"); return 0; } 1710EOF 1711 # Assuming Cyrus-SASL installed in /usr prefix 1712 vnc_sasl_cflags="" 1713 vnc_sasl_libs="-lsasl2" 1714 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 1715 vnc_sasl=yes 1716 libs_softmmu="$vnc_sasl_libs $libs_softmmu" 1717 else 1718 if test "$vnc_sasl" = "yes" ; then 1719 feature_not_found "vnc-sasl" 1720 fi 1721 vnc_sasl=no 1722 fi 1723fi 1724 1725########################################## 1726# VNC JPEG detection 1727if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 1728cat > $TMPC <<EOF 1729#include <stdio.h> 1730#include <jpeglib.h> 1731int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 1732EOF 1733 vnc_jpeg_cflags="" 1734 vnc_jpeg_libs="-ljpeg" 1735 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 1736 vnc_jpeg=yes 1737 libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 1738 else 1739 if test "$vnc_jpeg" = "yes" ; then 1740 feature_not_found "vnc-jpeg" 1741 fi 1742 vnc_jpeg=no 1743 fi 1744fi 1745 1746########################################## 1747# VNC PNG detection 1748if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 1749cat > $TMPC <<EOF 1750//#include <stdio.h> 1751#include <png.h> 1752#include <stddef.h> 1753int main(void) { 1754 png_structp png_ptr; 1755 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 1756 return png_ptr != 0; 1757} 1758EOF 1759 if $pkg_config libpng --modversion >/dev/null 2>&1; then 1760 vnc_png_cflags=`$pkg_config libpng --cflags 2> /dev/null` 1761 vnc_png_libs=`$pkg_config libpng --libs 2> /dev/null` 1762 else 1763 vnc_png_cflags="" 1764 vnc_png_libs="-lpng" 1765 fi 1766 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 1767 vnc_png=yes 1768 libs_softmmu="$vnc_png_libs $libs_softmmu" 1769 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 1770 else 1771 if test "$vnc_png" = "yes" ; then 1772 feature_not_found "vnc-png" 1773 fi 1774 vnc_png=no 1775 fi 1776fi 1777 1778########################################## 1779# fnmatch() probe, used for ACL routines 1780fnmatch="no" 1781cat > $TMPC << EOF 1782#include <fnmatch.h> 1783int main(void) 1784{ 1785 fnmatch("foo", "foo", 0); 1786 return 0; 1787} 1788EOF 1789if compile_prog "" "" ; then 1790 fnmatch="yes" 1791fi 1792 1793########################################## 1794# uuid_generate() probe, used for vdi block driver 1795if test "$uuid" != "no" ; then 1796 uuid_libs="-luuid" 1797 cat > $TMPC << EOF 1798#include <uuid/uuid.h> 1799int main(void) 1800{ 1801 uuid_t my_uuid; 1802 uuid_generate(my_uuid); 1803 return 0; 1804} 1805EOF 1806 if compile_prog "" "$uuid_libs" ; then 1807 uuid="yes" 1808 libs_softmmu="$uuid_libs $libs_softmmu" 1809 libs_tools="$uuid_libs $libs_tools" 1810 else 1811 if test "$uuid" = "yes" ; then 1812 feature_not_found "uuid" 1813 fi 1814 uuid=no 1815 fi 1816fi 1817 1818########################################## 1819# xfsctl() probe, used for raw-posix 1820if test "$xfs" != "no" ; then 1821 cat > $TMPC << EOF 1822#include <stddef.h> /* NULL */ 1823#include <xfs/xfs.h> 1824int main(void) 1825{ 1826 xfsctl(NULL, 0, 0, NULL); 1827 return 0; 1828} 1829EOF 1830 if compile_prog "" "" ; then 1831 xfs="yes" 1832 else 1833 if test "$xfs" = "yes" ; then 1834 feature_not_found "xfs" 1835 fi 1836 xfs=no 1837 fi 1838fi 1839 1840########################################## 1841# vde libraries probe 1842if test "$vde" != "no" ; then 1843 vde_libs="-lvdeplug" 1844 cat > $TMPC << EOF 1845#include <libvdeplug.h> 1846int main(void) 1847{ 1848 struct vde_open_args a = {0, 0, 0}; 1849 char s[] = ""; 1850 vde_open(s, s, &a); 1851 return 0; 1852} 1853EOF 1854 if compile_prog "" "$vde_libs" ; then 1855 vde=yes 1856 libs_softmmu="$vde_libs $libs_softmmu" 1857 libs_tools="$vde_libs $libs_tools" 1858 else 1859 if test "$vde" = "yes" ; then 1860 feature_not_found "vde" 1861 fi 1862 vde=no 1863 fi 1864fi 1865 1866########################################## 1867# libcap-ng library probe 1868if test "$cap_ng" != "no" ; then 1869 cap_libs="-lcap-ng" 1870 cat > $TMPC << EOF 1871#include <cap-ng.h> 1872int main(void) 1873{ 1874 capng_capability_to_name(CAPNG_EFFECTIVE); 1875 return 0; 1876} 1877EOF 1878 if compile_prog "" "$cap_libs" ; then 1879 cap_ng=yes 1880 libs_tools="$cap_libs $libs_tools" 1881 else 1882 if test "$cap_ng" = "yes" ; then 1883 feature_not_found "cap_ng" 1884 fi 1885 cap_ng=no 1886 fi 1887fi 1888 1889########################################## 1890# Sound support libraries probe 1891 1892audio_drv_probe() 1893{ 1894 drv=$1 1895 hdr=$2 1896 lib=$3 1897 exp=$4 1898 cfl=$5 1899 cat > $TMPC << EOF 1900#include <$hdr> 1901int main(void) { $exp } 1902EOF 1903 if compile_prog "$cfl" "$lib" ; then 1904 : 1905 else 1906 echo 1907 echo "Error: $drv check failed" 1908 echo "Make sure to have the $drv libs and headers installed." 1909 echo 1910 exit 1 1911 fi 1912} 1913 1914audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 1915for drv in $audio_drv_list; do 1916 case $drv in 1917 alsa) 1918 audio_drv_probe $drv alsa/asoundlib.h -lasound \ 1919 "return snd_pcm_close((snd_pcm_t *)0);" 1920 libs_softmmu="-lasound $libs_softmmu" 1921 ;; 1922 1923 fmod) 1924 if test -z $fmod_lib || test -z $fmod_inc; then 1925 echo 1926 echo "Error: You must specify path to FMOD library and headers" 1927 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so" 1928 echo 1929 exit 1 1930 fi 1931 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc" 1932 libs_softmmu="$fmod_lib $libs_softmmu" 1933 ;; 1934 1935 esd) 1936 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);' 1937 libs_softmmu="-lesd $libs_softmmu" 1938 audio_pt_int="yes" 1939 ;; 1940 1941 pa) 1942 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \ 1943 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;" 1944 libs_softmmu="-lpulse $libs_softmmu" 1945 audio_pt_int="yes" 1946 ;; 1947 1948 coreaudio) 1949 libs_softmmu="-framework CoreAudio $libs_softmmu" 1950 ;; 1951 1952 dsound) 1953 libs_softmmu="-lole32 -ldxguid $libs_softmmu" 1954 audio_win_int="yes" 1955 ;; 1956 1957 oss) 1958 libs_softmmu="$oss_lib $libs_softmmu" 1959 ;; 1960 1961 sdl|wav) 1962 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 1963 ;; 1964 1965 winwave) 1966 libs_softmmu="-lwinmm $libs_softmmu" 1967 audio_win_int="yes" 1968 ;; 1969 1970 *) 1971 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 1972 echo 1973 echo "Error: Unknown driver '$drv' selected" 1974 echo "Possible drivers are: $audio_possible_drivers" 1975 echo 1976 exit 1 1977 } 1978 ;; 1979 esac 1980done 1981 1982########################################## 1983# BrlAPI probe 1984 1985if test "$brlapi" != "no" ; then 1986 brlapi_libs="-lbrlapi" 1987 cat > $TMPC << EOF 1988#include <brlapi.h> 1989#include <stddef.h> 1990int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 1991EOF 1992 if compile_prog "" "$brlapi_libs" ; then 1993 brlapi=yes 1994 libs_softmmu="$brlapi_libs $libs_softmmu" 1995 else 1996 if test "$brlapi" = "yes" ; then 1997 feature_not_found "brlapi" 1998 fi 1999 brlapi=no 2000 fi 2001fi 2002 2003########################################## 2004# curses probe 2005if test "$mingw32" = "yes" ; then 2006 curses_list="-lpdcurses" 2007else 2008 curses_list="-lncurses -lcurses" 2009fi 2010 2011if test "$curses" != "no" ; then 2012 curses_found=no 2013 cat > $TMPC << EOF 2014#include <curses.h> 2015int main(void) { 2016 const char *s = curses_version(); 2017 resize_term(0, 0); 2018 return s != 0; 2019} 2020EOF 2021 for curses_lib in $curses_list; do 2022 if compile_prog "" "$curses_lib" ; then 2023 curses_found=yes 2024 libs_softmmu="$curses_lib $libs_softmmu" 2025 break 2026 fi 2027 done 2028 if test "$curses_found" = "yes" ; then 2029 curses=yes 2030 else 2031 if test "$curses" = "yes" ; then 2032 feature_not_found "curses" 2033 fi 2034 curses=no 2035 fi 2036fi 2037 2038########################################## 2039# curl probe 2040 2041if $pkg_config libcurl --modversion >/dev/null 2>&1; then 2042 curlconfig="$pkg_config libcurl" 2043else 2044 curlconfig=curl-config 2045fi 2046 2047if test "$curl" != "no" ; then 2048 cat > $TMPC << EOF 2049#include <curl/curl.h> 2050int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 2051EOF 2052 curl_cflags=`$curlconfig --cflags 2>/dev/null` 2053 curl_libs=`$curlconfig --libs 2>/dev/null` 2054 if compile_prog "$curl_cflags" "$curl_libs" ; then 2055 curl=yes 2056 libs_tools="$curl_libs $libs_tools" 2057 libs_softmmu="$curl_libs $libs_softmmu" 2058 else 2059 if test "$curl" = "yes" ; then 2060 feature_not_found "curl" 2061 fi 2062 curl=no 2063 fi 2064fi # test "$curl" 2065 2066########################################## 2067# bluez support probe 2068if test "$bluez" != "no" ; then 2069 cat > $TMPC << EOF 2070#include <bluetooth/bluetooth.h> 2071int main(void) { return bt_error(0); } 2072EOF 2073 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null` 2074 bluez_libs=`$pkg_config --libs bluez 2> /dev/null` 2075 if compile_prog "$bluez_cflags" "$bluez_libs" ; then 2076 bluez=yes 2077 libs_softmmu="$bluez_libs $libs_softmmu" 2078 else 2079 if test "$bluez" = "yes" ; then 2080 feature_not_found "bluez" 2081 fi 2082 bluez="no" 2083 fi 2084fi 2085 2086########################################## 2087# glib support probe 2088 2089if test "$mingw32" = yes; then 2090 # g_poll is required in order to integrate with the glib main loop. 2091 glib_req_ver=2.20 2092else 2093 glib_req_ver=2.12 2094fi 2095if $pkg_config --atleast-version=$glib_req_ver gthread-2.0 > /dev/null 2>&1 2096then 2097 glib_cflags=`$pkg_config --cflags gthread-2.0 2>/dev/null` 2098 glib_libs=`$pkg_config --libs gthread-2.0 2>/dev/null` 2099 LIBS="$glib_libs $LIBS" 2100 libs_qga="$glib_libs $libs_qga" 2101else 2102 echo "glib-$glib_req_ver required to compile QEMU" 2103 exit 1 2104fi 2105 2106########################################## 2107# libcap probe 2108 2109if test "$cap" != "no" ; then 2110 cat > $TMPC <<EOF 2111#include <stdio.h> 2112#include <sys/capability.h> 2113int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 2114EOF 2115 if compile_prog "" "-lcap" ; then 2116 cap=yes 2117 else 2118 cap=no 2119 fi 2120fi 2121 2122########################################## 2123# pthread probe 2124PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 2125 2126pthread=no 2127cat > $TMPC << EOF 2128#include <pthread.h> 2129static void *f(void *p) { return NULL; } 2130int main(void) { 2131 pthread_t thread; 2132 pthread_create(&thread, 0, f, 0); 2133 return 0; 2134} 2135EOF 2136if compile_prog "" "" ; then 2137 pthread=yes 2138else 2139 for pthread_lib in $PTHREADLIBS_LIST; do 2140 if compile_prog "" "$pthread_lib" ; then 2141 pthread=yes 2142 found=no 2143 for lib_entry in $LIBS; do 2144 if test "$lib_entry" = "$pthread_lib"; then 2145 found=yes 2146 break 2147 fi 2148 done 2149 if test "$found" = "no"; then 2150 LIBS="$pthread_lib $LIBS" 2151 fi 2152 break 2153 fi 2154 done 2155fi 2156 2157if test "$mingw32" != yes -a "$pthread" = no; then 2158 echo 2159 echo "Error: pthread check failed" 2160 echo "Make sure to have the pthread libs and headers installed." 2161 echo 2162 exit 1 2163fi 2164 2165########################################## 2166# rbd probe 2167if test "$rbd" != "no" ; then 2168 cat > $TMPC <<EOF 2169#include <stdio.h> 2170#include <rbd/librbd.h> 2171int main(void) { 2172 rados_t cluster; 2173 rados_create(&cluster, NULL); 2174 return 0; 2175} 2176EOF 2177 rbd_libs="-lrbd -lrados" 2178 if compile_prog "" "$rbd_libs" ; then 2179 rbd=yes 2180 libs_tools="$rbd_libs $libs_tools" 2181 libs_softmmu="$rbd_libs $libs_softmmu" 2182 else 2183 if test "$rbd" = "yes" ; then 2184 feature_not_found "rados block device" 2185 fi 2186 rbd=no 2187 fi 2188fi 2189 2190########################################## 2191# linux-aio probe 2192 2193if test "$linux_aio" != "no" ; then 2194 cat > $TMPC <<EOF 2195#include <libaio.h> 2196#include <sys/eventfd.h> 2197#include <stddef.h> 2198int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 2199EOF 2200 if compile_prog "" "-laio" ; then 2201 linux_aio=yes 2202 libs_softmmu="$libs_softmmu -laio" 2203 libs_tools="$libs_tools -laio" 2204 else 2205 if test "$linux_aio" = "yes" ; then 2206 feature_not_found "linux AIO" 2207 fi 2208 linux_aio=no 2209 fi 2210fi 2211 2212########################################## 2213# attr probe 2214 2215if test "$attr" != "no" ; then 2216 cat > $TMPC <<EOF 2217#include <stdio.h> 2218#include <sys/types.h> 2219#ifdef CONFIG_LIBATTR 2220#include <attr/xattr.h> 2221#else 2222#include <sys/xattr.h> 2223#endif 2224int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 2225EOF 2226 if compile_prog "" "" ; then 2227 attr=yes 2228 # Older distros have <attr/xattr.h>, and need -lattr: 2229 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 2230 attr=yes 2231 LIBS="-lattr $LIBS" 2232 libattr=yes 2233 else 2234 if test "$attr" = "yes" ; then 2235 feature_not_found "ATTR" 2236 fi 2237 attr=no 2238 fi 2239fi 2240 2241########################################## 2242# iovec probe 2243cat > $TMPC <<EOF 2244#include <sys/types.h> 2245#include <sys/uio.h> 2246#include <unistd.h> 2247int main(void) { return sizeof(struct iovec); } 2248EOF 2249iovec=no 2250if compile_prog "" "" ; then 2251 iovec=yes 2252fi 2253 2254########################################## 2255# preadv probe 2256cat > $TMPC <<EOF 2257#include <sys/types.h> 2258#include <sys/uio.h> 2259#include <unistd.h> 2260int main(void) { return preadv(0, 0, 0, 0); } 2261EOF 2262preadv=no 2263if compile_prog "" "" ; then 2264 preadv=yes 2265fi 2266 2267########################################## 2268# fdt probe 2269if test "$fdt" != "no" ; then 2270 fdt_libs="-lfdt" 2271 cat > $TMPC << EOF 2272int main(void) { return 0; } 2273EOF 2274 if compile_prog "" "$fdt_libs" ; then 2275 fdt=yes 2276 else 2277 if test "$fdt" = "yes" ; then 2278 feature_not_found "fdt" 2279 fi 2280 fdt_libs= 2281 fdt=no 2282 fi 2283fi 2284 2285########################################## 2286# opengl probe, used by milkymist-tmu2 2287if test "$opengl" != "no" ; then 2288 opengl_libs="-lGL" 2289 cat > $TMPC << EOF 2290#include <X11/Xlib.h> 2291#include <GL/gl.h> 2292#include <GL/glx.h> 2293int main(void) { return GL_VERSION != 0; } 2294EOF 2295 if compile_prog "" "-lGL" ; then 2296 opengl=yes 2297 else 2298 if test "$opengl" = "yes" ; then 2299 feature_not_found "opengl" 2300 fi 2301 opengl_libs= 2302 opengl=no 2303 fi 2304fi 2305 2306# 2307# Check for xxxat() functions when we are building linux-user 2308# emulator. This is done because older glibc versions don't 2309# have syscall stubs for these implemented. 2310# 2311atfile=no 2312cat > $TMPC << EOF 2313#define _ATFILE_SOURCE 2314#include <sys/types.h> 2315#include <fcntl.h> 2316#include <unistd.h> 2317 2318int 2319main(void) 2320{ 2321 /* try to unlink nonexisting file */ 2322 return (unlinkat(AT_FDCWD, "nonexistent_file", 0)); 2323} 2324EOF 2325if compile_prog "" "" ; then 2326 atfile=yes 2327fi 2328 2329# Check for inotify functions when we are building linux-user 2330# emulator. This is done because older glibc versions don't 2331# have syscall stubs for these implemented. In that case we 2332# don't provide them even if kernel supports them. 2333# 2334inotify=no 2335cat > $TMPC << EOF 2336#include <sys/inotify.h> 2337 2338int 2339main(void) 2340{ 2341 /* try to start inotify */ 2342 return inotify_init(); 2343} 2344EOF 2345if compile_prog "" "" ; then 2346 inotify=yes 2347fi 2348 2349inotify1=no 2350cat > $TMPC << EOF 2351#include <sys/inotify.h> 2352 2353int 2354main(void) 2355{ 2356 /* try to start inotify */ 2357 return inotify_init1(0); 2358} 2359EOF 2360if compile_prog "" "" ; then 2361 inotify1=yes 2362fi 2363 2364# check if utimensat and futimens are supported 2365utimens=no 2366cat > $TMPC << EOF 2367#define _ATFILE_SOURCE 2368#include <stddef.h> 2369#include <fcntl.h> 2370#include <sys/stat.h> 2371 2372int main(void) 2373{ 2374 utimensat(AT_FDCWD, "foo", NULL, 0); 2375 futimens(0, NULL); 2376 return 0; 2377} 2378EOF 2379if compile_prog "" "" ; then 2380 utimens=yes 2381fi 2382 2383# check if pipe2 is there 2384pipe2=no 2385cat > $TMPC << EOF 2386#include <unistd.h> 2387#include <fcntl.h> 2388 2389int main(void) 2390{ 2391 int pipefd[2]; 2392 pipe2(pipefd, O_CLOEXEC); 2393 return 0; 2394} 2395EOF 2396if compile_prog "" "" ; then 2397 pipe2=yes 2398fi 2399 2400# check if accept4 is there 2401accept4=no 2402cat > $TMPC << EOF 2403#include <sys/socket.h> 2404#include <stddef.h> 2405 2406int main(void) 2407{ 2408 accept4(0, NULL, NULL, SOCK_CLOEXEC); 2409 return 0; 2410} 2411EOF 2412if compile_prog "" "" ; then 2413 accept4=yes 2414fi 2415 2416# check if tee/splice is there. vmsplice was added same time. 2417splice=no 2418cat > $TMPC << EOF 2419#include <unistd.h> 2420#include <fcntl.h> 2421#include <limits.h> 2422 2423int main(void) 2424{ 2425 int len, fd = 0; 2426 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 2427 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 2428 return 0; 2429} 2430EOF 2431if compile_prog "" "" ; then 2432 splice=yes 2433fi 2434 2435########################################## 2436# signalfd probe 2437signalfd="no" 2438cat > $TMPC << EOF 2439#include <unistd.h> 2440#include <sys/syscall.h> 2441#include <signal.h> 2442int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 2443EOF 2444 2445if compile_prog "" "" ; then 2446 signalfd=yes 2447fi 2448 2449# check if eventfd is supported 2450eventfd=no 2451cat > $TMPC << EOF 2452#include <sys/eventfd.h> 2453 2454int main(void) 2455{ 2456 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 2457} 2458EOF 2459if compile_prog "" "" ; then 2460 eventfd=yes 2461fi 2462 2463# check for fallocate 2464fallocate=no 2465cat > $TMPC << EOF 2466#include <fcntl.h> 2467 2468int main(void) 2469{ 2470 fallocate(0, 0, 0, 0); 2471 return 0; 2472} 2473EOF 2474if compile_prog "" "" ; then 2475 fallocate=yes 2476fi 2477 2478# check for sync_file_range 2479sync_file_range=no 2480cat > $TMPC << EOF 2481#include <fcntl.h> 2482 2483int main(void) 2484{ 2485 sync_file_range(0, 0, 0, 0); 2486 return 0; 2487} 2488EOF 2489if compile_prog "" "" ; then 2490 sync_file_range=yes 2491fi 2492 2493# check for linux/fiemap.h and FS_IOC_FIEMAP 2494fiemap=no 2495cat > $TMPC << EOF 2496#include <sys/ioctl.h> 2497#include <linux/fs.h> 2498#include <linux/fiemap.h> 2499 2500int main(void) 2501{ 2502 ioctl(0, FS_IOC_FIEMAP, 0); 2503 return 0; 2504} 2505EOF 2506if compile_prog "" "" ; then 2507 fiemap=yes 2508fi 2509 2510# check for dup3 2511dup3=no 2512cat > $TMPC << EOF 2513#include <unistd.h> 2514 2515int main(void) 2516{ 2517 dup3(0, 0, 0); 2518 return 0; 2519} 2520EOF 2521if compile_prog "" "" ; then 2522 dup3=yes 2523fi 2524 2525# check for epoll support 2526epoll=no 2527cat > $TMPC << EOF 2528#include <sys/epoll.h> 2529 2530int main(void) 2531{ 2532 epoll_create(0); 2533 return 0; 2534} 2535EOF 2536if compile_prog "" "" ; then 2537 epoll=yes 2538fi 2539 2540# epoll_create1 and epoll_pwait are later additions 2541# so we must check separately for their presence 2542epoll_create1=no 2543cat > $TMPC << EOF 2544#include <sys/epoll.h> 2545 2546int main(void) 2547{ 2548 /* Note that we use epoll_create1 as a value, not as 2549 * a function being called. This is necessary so that on 2550 * old SPARC glibc versions where the function was present in 2551 * the library but not declared in the header file we will 2552 * fail the configure check. (Otherwise we will get a compiler 2553 * warning but not an error, and will proceed to fail the 2554 * qemu compile where we compile with -Werror.) 2555 */ 2556 return (int)(uintptr_t)&epoll_create1; 2557} 2558EOF 2559if compile_prog "" "" ; then 2560 epoll_create1=yes 2561fi 2562 2563epoll_pwait=no 2564cat > $TMPC << EOF 2565#include <sys/epoll.h> 2566 2567int main(void) 2568{ 2569 epoll_pwait(0, 0, 0, 0, 0); 2570 return 0; 2571} 2572EOF 2573if compile_prog "" "" ; then 2574 epoll_pwait=yes 2575fi 2576 2577# Check if tools are available to build documentation. 2578if test "$docs" != "no" ; then 2579 if has makeinfo && has pod2man; then 2580 docs=yes 2581 else 2582 if test "$docs" = "yes" ; then 2583 feature_not_found "docs" 2584 fi 2585 docs=no 2586 fi 2587fi 2588 2589# Search for bswap_32 function 2590byteswap_h=no 2591cat > $TMPC << EOF 2592#include <byteswap.h> 2593int main(void) { return bswap_32(0); } 2594EOF 2595if compile_prog "" "" ; then 2596 byteswap_h=yes 2597fi 2598 2599# Search for bswap_32 function 2600bswap_h=no 2601cat > $TMPC << EOF 2602#include <sys/endian.h> 2603#include <sys/types.h> 2604#include <machine/bswap.h> 2605int main(void) { return bswap32(0); } 2606EOF 2607if compile_prog "" "" ; then 2608 bswap_h=yes 2609fi 2610 2611########################################## 2612# Do we have libiscsi 2613# We check for iscsi_unmap_sync() to make sure we have a 2614# recent enough version of libiscsi. 2615if test "$libiscsi" != "no" ; then 2616 cat > $TMPC << EOF 2617#include <stdio.h> 2618#include <iscsi/iscsi.h> 2619int main(void) { iscsi_unmap_sync(NULL,0,0,0,NULL,0); return 0; } 2620EOF 2621 if compile_prog "" "-liscsi" ; then 2622 libiscsi="yes" 2623 LIBS="$LIBS -liscsi" 2624 else 2625 if test "$libiscsi" = "yes" ; then 2626 feature_not_found "libiscsi" 2627 fi 2628 libiscsi="no" 2629 fi 2630fi 2631 2632 2633########################################## 2634# Do we need libm 2635cat > $TMPC << EOF 2636#include <math.h> 2637int main(void) { return isnan(sin(0.0)); } 2638EOF 2639if compile_prog "" "" ; then 2640 : 2641elif compile_prog "" "-lm" ; then 2642 LIBS="-lm $LIBS" 2643 libs_qga="-lm $libs_qga" 2644else 2645 echo 2646 echo "Error: libm check failed" 2647 echo 2648 exit 1 2649fi 2650 2651########################################## 2652# Do we need librt 2653# uClibc provides 2 versions of clock_gettime(), one with realtime 2654# support and one without. This means that the clock_gettime() don't 2655# need -lrt. We still need it for timer_create() so we check for this 2656# function in addition. 2657cat > $TMPC <<EOF 2658#include <signal.h> 2659#include <time.h> 2660int main(void) { 2661 timer_create(CLOCK_REALTIME, NULL, NULL); 2662 return clock_gettime(CLOCK_REALTIME, NULL); 2663} 2664EOF 2665 2666if compile_prog "" "" ; then 2667 : 2668# we need pthread for static linking. use previous pthread test result 2669elif compile_prog "" "-lrt $pthread_lib" ; then 2670 LIBS="-lrt $LIBS" 2671 libs_qga="-lrt $libs_qga" 2672fi 2673 2674if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 2675 "$aix" != "yes" -a "$haiku" != "yes" ; then 2676 libs_softmmu="-lutil $libs_softmmu" 2677fi 2678 2679########################################## 2680# spice probe 2681if test "$spice" != "no" ; then 2682 cat > $TMPC << EOF 2683#include <spice.h> 2684int main(void) { spice_server_new(); return 0; } 2685EOF 2686 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 2687 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 2688 if $pkg_config --atleast-version=0.8.2 spice-server >/dev/null 2>&1 && \ 2689 $pkg_config --atleast-version=0.8.1 spice-protocol > /dev/null 2>&1 && \ 2690 compile_prog "$spice_cflags" "$spice_libs" ; then 2691 spice="yes" 2692 libs_softmmu="$libs_softmmu $spice_libs" 2693 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 2694 spice_protocol_version=$($pkg_config --modversion spice-protocol) 2695 spice_server_version=$($pkg_config --modversion spice-server) 2696 if $pkg_config --atleast-version=0.12.0 spice-protocol >/dev/null 2>&1; then 2697 spice_qxl_io_monitors_config_async="yes" 2698 fi 2699 if $pkg_config --atleast-version=0.12.2 spice-protocol > /dev/null 2>&1; then 2700 spice_qxl_client_monitors_config="yes" 2701 fi 2702 else 2703 if test "$spice" = "yes" ; then 2704 feature_not_found "spice" 2705 fi 2706 spice="no" 2707 fi 2708fi 2709 2710# check for libcacard for smartcard support 2711if test "$smartcard" != "no" ; then 2712 smartcard="yes" 2713 smartcard_cflags="" 2714 # TODO - what's the minimal nss version we support? 2715 if test "$smartcard_nss" != "no"; then 2716 cat > $TMPC << EOF 2717#include <pk11pub.h> 2718int main(void) { PK11_FreeSlot(0); return 0; } 2719EOF 2720 smartcard_includes="-I\$(SRC_PATH)/libcacard" 2721 libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" 2722 libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" 2723 test_cflags="$libcacard_cflags" 2724 # The header files in nss < 3.13.3 have a bug which causes them to 2725 # emit a warning. If we're going to compile QEMU with -Werror, then 2726 # test that the headers don't have this bug. Otherwise we would pass 2727 # the configure test but fail to compile QEMU later. 2728 if test "$werror" = "yes"; then 2729 test_cflags="-Werror $test_cflags" 2730 fi 2731 if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 && \ 2732 compile_prog "$test_cflags" "$libcacard_libs"; then 2733 smartcard_nss="yes" 2734 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags" 2735 QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes" 2736 libs_softmmu="$libcacard_libs $libs_softmmu" 2737 else 2738 if test "$smartcard_nss" = "yes"; then 2739 feature_not_found "nss" 2740 fi 2741 smartcard_nss="no" 2742 fi 2743 fi 2744fi 2745if test "$smartcard" = "no" ; then 2746 smartcard_nss="no" 2747fi 2748 2749# check for usbredirparser for usb network redirection support 2750if test "$usb_redir" != "no" ; then 2751 if $pkg_config --atleast-version=0.5 libusbredirparser >/dev/null 2>&1 ; then 2752 usb_redir="yes" 2753 usb_redir_cflags=$($pkg_config --cflags libusbredirparser 2>/dev/null) 2754 usb_redir_libs=$($pkg_config --libs libusbredirparser 2>/dev/null) 2755 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 2756 libs_softmmu="$libs_softmmu $usb_redir_libs" 2757 else 2758 if test "$usb_redir" = "yes"; then 2759 feature_not_found "usb-redir" 2760 fi 2761 usb_redir="no" 2762 fi 2763fi 2764 2765########################################## 2766 2767########################################## 2768# check if we have fdatasync 2769 2770fdatasync=no 2771cat > $TMPC << EOF 2772#include <unistd.h> 2773int main(void) { 2774#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 2775return fdatasync(0); 2776#else 2777#error Not supported 2778#endif 2779} 2780EOF 2781if compile_prog "" "" ; then 2782 fdatasync=yes 2783fi 2784 2785########################################## 2786# check if we have madvise 2787 2788madvise=no 2789cat > $TMPC << EOF 2790#include <sys/types.h> 2791#include <sys/mman.h> 2792#include <stddef.h> 2793int main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 2794EOF 2795if compile_prog "" "" ; then 2796 madvise=yes 2797fi 2798 2799########################################## 2800# check if we have posix_madvise 2801 2802posix_madvise=no 2803cat > $TMPC << EOF 2804#include <sys/mman.h> 2805#include <stddef.h> 2806int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 2807EOF 2808if compile_prog "" "" ; then 2809 posix_madvise=yes 2810fi 2811 2812########################################## 2813# check if trace backend exists 2814 2815$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend > /dev/null 2> /dev/null 2816if test "$?" -ne 0 ; then 2817 echo 2818 echo "Error: invalid trace backend" 2819 echo "Please choose a supported trace backend." 2820 echo 2821 exit 1 2822fi 2823 2824########################################## 2825# For 'ust' backend, test if ust headers are present 2826if test "$trace_backend" = "ust"; then 2827 cat > $TMPC << EOF 2828#include <ust/tracepoint.h> 2829#include <ust/marker.h> 2830int main(void) { return 0; } 2831EOF 2832 if compile_prog "" "" ; then 2833 LIBS="-lust -lurcu-bp $LIBS" 2834 libs_qga="-lust -lurcu-bp $libs_qga" 2835 else 2836 echo 2837 echo "Error: Trace backend 'ust' missing libust header files" 2838 echo 2839 exit 1 2840 fi 2841fi 2842 2843########################################## 2844# For 'dtrace' backend, test if 'dtrace' command is present 2845if test "$trace_backend" = "dtrace"; then 2846 if ! has 'dtrace' ; then 2847 echo 2848 echo "Error: dtrace command is not found in PATH $PATH" 2849 echo 2850 exit 1 2851 fi 2852 trace_backend_stap="no" 2853 if has 'stap' ; then 2854 trace_backend_stap="yes" 2855 fi 2856fi 2857 2858########################################## 2859# __sync_fetch_and_and requires at least -march=i486. Many toolchains 2860# use i686 as default anyway, but for those that don't, an explicit 2861# specification is necessary 2862if test "$vhost_net" = "yes" && test "$cpu" = "i386"; then 2863 cat > $TMPC << EOF 2864static int sfaa(int *ptr) 2865{ 2866 return __sync_fetch_and_and(ptr, 0); 2867} 2868 2869int main(int argc, char **argv) 2870{ 2871 int val = 42; 2872 sfaa(&val); 2873 return val; 2874} 2875EOF 2876 if ! compile_prog "" "" ; then 2877 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 2878 fi 2879fi 2880 2881########################################## 2882# check and set a backend for coroutine 2883 2884# default is ucontext, but always fallback to gthread 2885# windows autodetected by make 2886if test "$coroutine" = "" -o "$coroutine" = "ucontext"; then 2887 if test "$darwin" != "yes"; then 2888 cat > $TMPC << EOF 2889#include <ucontext.h> 2890#ifdef __stub_makecontext 2891#error Ignoring glibc stub makecontext which will always fail 2892#endif 2893int main(void) { makecontext(0, 0, 0); return 0; } 2894EOF 2895 if compile_prog "" "" ; then 2896 coroutine_backend=ucontext 2897 else 2898 coroutine_backend=gthread 2899 fi 2900 else 2901 echo "Silently falling back into gthread backend under darwin" 2902 fi 2903elif test "$coroutine" = "gthread" ; then 2904 coroutine_backend=gthread 2905elif test "$coroutine" = "windows" ; then 2906 coroutine_backend=windows 2907elif test "$coroutine" = "sigaltstack" ; then 2908 coroutine_backend=sigaltstack 2909else 2910 echo 2911 echo "Error: unknown coroutine backend $coroutine" 2912 echo 2913 exit 1 2914fi 2915 2916########################################## 2917# check if we have open_by_handle_at 2918 2919open_by_handle_at=no 2920cat > $TMPC << EOF 2921#include <fcntl.h> 2922#if !defined(AT_EMPTY_PATH) 2923# error missing definition 2924#else 2925int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 2926#endif 2927EOF 2928if compile_prog "" "" ; then 2929 open_by_handle_at=yes 2930fi 2931 2932######################################## 2933# check if we have linux/magic.h 2934 2935linux_magic_h=no 2936cat > $TMPC << EOF 2937#include <linux/magic.h> 2938int main(void) { 2939 return 0; 2940} 2941EOF 2942if compile_prog "" "" ; then 2943 linux_magic_h=yes 2944fi 2945 2946######################################## 2947# check whether we can disable the -Wunused-but-set-variable 2948# option with a pragma (this is needed to silence a warning in 2949# some versions of the valgrind VALGRIND_STACK_DEREGISTER macro.) 2950# This test has to be compiled with -Werror as otherwise an 2951# unknown pragma is only a warning. 2952pragma_disable_unused_but_set=no 2953cat > $TMPC << EOF 2954#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 2955int main(void) { 2956 return 0; 2957} 2958EOF 2959if compile_prog "-Werror" "" ; then 2960 pragma_disable_unused_but_set=yes 2961fi 2962 2963######################################## 2964# check if we have valgrind/valgrind.h and valgrind/memcheck.h 2965 2966valgrind_h=no 2967cat > $TMPC << EOF 2968#include <valgrind/valgrind.h> 2969#include <valgrind/memcheck.h> 2970int main(void) { 2971 return 0; 2972} 2973EOF 2974if compile_prog "" "" ; then 2975 valgrind_h=yes 2976fi 2977 2978######################################## 2979# check if environ is declared 2980 2981has_environ=no 2982cat > $TMPC << EOF 2983#include <unistd.h> 2984int main(void) { 2985 environ = 0; 2986 return 0; 2987} 2988EOF 2989if compile_prog "" "" ; then 2990 has_environ=yes 2991fi 2992 2993########################################## 2994# End of CC checks 2995# After here, no more $cc or $ld runs 2996 2997if test "$debug" = "no" ; then 2998 CFLAGS="-O2 -D_FORTIFY_SOURCE=2 $CFLAGS" 2999fi 3000 3001# Disable zero malloc errors for official releases unless explicitly told to 3002# enable/disable 3003if test -z "$zero_malloc" ; then 3004 if test "$z_version" = "50" ; then 3005 zero_malloc="no" 3006 else 3007 zero_malloc="yes" 3008 fi 3009fi 3010 3011# Now we've finished running tests it's OK to add -Werror to the compiler flags 3012if test "$werror" = "yes"; then 3013 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 3014fi 3015 3016if test "$solaris" = "no" ; then 3017 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 3018 LDFLAGS="-Wl,--warn-common $LDFLAGS" 3019 fi 3020fi 3021 3022# test if pod2man has --utf8 option 3023if pod2man --help | grep -q utf8; then 3024 POD2MAN="pod2man --utf8" 3025else 3026 POD2MAN="pod2man" 3027fi 3028 3029# Use ASLR, no-SEH and DEP if available 3030if test "$mingw32" = "yes" ; then 3031 for flag in --dynamicbase --no-seh --nxcompat; do 3032 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 3033 LDFLAGS="-Wl,$flag $LDFLAGS" 3034 fi 3035 done 3036fi 3037 3038qemu_confdir=$sysconfdir$confsuffix 3039qemu_datadir=$datadir$confsuffix 3040 3041tools="" 3042if test "$want_tools" = "yes" ; then 3043 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 3044 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 3045 tools="qemu-nbd\$(EXESUF) $tools" 3046 fi 3047fi 3048if test "$softmmu" = yes ; then 3049 if test "$virtfs" != no ; then 3050 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 3051 virtfs=yes 3052 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 3053 else 3054 if test "$virtfs" = yes; then 3055 echo "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel" 3056 exit 1 3057 fi 3058 virtfs=no 3059 fi 3060 fi 3061 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 3062 if [ "$guest_agent" = "yes" ]; then 3063 tools="qemu-ga\$(EXESUF) $tools" 3064 fi 3065 fi 3066 if test "$smartcard_nss" = "yes" ; then 3067 tools="vscclient\$(EXESUF) $tools" 3068 fi 3069fi 3070 3071# Mac OS X ships with a broken assembler 3072roms= 3073if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 3074 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 3075 "$softmmu" = yes ; then 3076 roms="optionrom" 3077fi 3078if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 3079 roms="$roms spapr-rtas" 3080fi 3081 3082echo "Install prefix $prefix" 3083echo "BIOS directory `eval echo $qemu_datadir`" 3084echo "binary directory `eval echo $bindir`" 3085echo "library directory `eval echo $libdir`" 3086echo "libexec directory `eval echo $libexecdir`" 3087echo "include directory `eval echo $includedir`" 3088echo "config directory `eval echo $sysconfdir`" 3089if test "$mingw32" = "no" ; then 3090echo "Manual directory `eval echo $mandir`" 3091echo "ELF interp prefix $interp_prefix" 3092fi 3093echo "Source path $source_path" 3094echo "C compiler $cc" 3095echo "Host C compiler $host_cc" 3096echo "Objective-C compiler $objcc" 3097echo "CFLAGS $CFLAGS" 3098echo "QEMU_CFLAGS $QEMU_CFLAGS" 3099echo "LDFLAGS $LDFLAGS" 3100echo "make $make" 3101echo "install $install" 3102echo "python $python" 3103if test "$slirp" = "yes" ; then 3104 echo "smbd $smbd" 3105fi 3106echo "host CPU $cpu" 3107echo "host big endian $bigendian" 3108echo "target list $target_list" 3109echo "tcg debug enabled $debug_tcg" 3110echo "gprof enabled $gprof" 3111echo "sparse enabled $sparse" 3112echo "strip binaries $strip_opt" 3113echo "profiler $profiler" 3114echo "static build $static" 3115echo "-Werror enabled $werror" 3116if test "$darwin" = "yes" ; then 3117 echo "Cocoa support $cocoa" 3118fi 3119echo "SDL support $sdl" 3120echo "curses support $curses" 3121echo "curl support $curl" 3122echo "mingw32 support $mingw32" 3123echo "Audio drivers $audio_drv_list" 3124echo "Extra audio cards $audio_card_list" 3125echo "Block whitelist $block_drv_whitelist" 3126echo "Mixer emulation $mixemu" 3127echo "VirtFS support $virtfs" 3128echo "VNC support $vnc" 3129if test "$vnc" = "yes" ; then 3130 echo "VNC TLS support $vnc_tls" 3131 echo "VNC SASL support $vnc_sasl" 3132 echo "VNC JPEG support $vnc_jpeg" 3133 echo "VNC PNG support $vnc_png" 3134fi 3135if test -n "$sparc_cpu"; then 3136 echo "Target Sparc Arch $sparc_cpu" 3137fi 3138echo "xen support $xen" 3139echo "brlapi support $brlapi" 3140echo "bluez support $bluez" 3141echo "Documentation $docs" 3142[ ! -z "$uname_release" ] && \ 3143echo "uname -r $uname_release" 3144echo "NPTL support $nptl" 3145echo "GUEST_BASE $guest_base" 3146echo "PIE $pie" 3147echo "vde support $vde" 3148echo "Linux AIO support $linux_aio" 3149echo "ATTR/XATTR support $attr" 3150echo "Install blobs $blobs" 3151echo "KVM support $kvm" 3152echo "TCG interpreter $tcg_interpreter" 3153echo "fdt support $fdt" 3154echo "preadv support $preadv" 3155echo "fdatasync $fdatasync" 3156echo "madvise $madvise" 3157echo "posix_madvise $posix_madvise" 3158echo "uuid support $uuid" 3159echo "libcap-ng support $cap_ng" 3160echo "vhost-net support $vhost_net" 3161echo "Trace backend $trace_backend" 3162echo "Trace output file $trace_file-<pid>" 3163echo "spice support $spice ($spice_protocol_version/$spice_server_version)" 3164echo "rbd support $rbd" 3165echo "xfsctl support $xfs" 3166echo "nss used $smartcard_nss" 3167echo "usb net redir $usb_redir" 3168echo "OpenGL support $opengl" 3169echo "libiscsi support $libiscsi" 3170echo "build guest agent $guest_agent" 3171echo "seccomp support $seccomp" 3172echo "coroutine backend $coroutine_backend" 3173 3174if test "$sdl_too_old" = "yes"; then 3175echo "-> Your SDL version is too old - please upgrade to have SDL support" 3176fi 3177 3178config_host_mak="config-host.mak" 3179config_host_ld="config-host.ld" 3180 3181echo "# Automatically generated by configure - do not modify" > $config_host_mak 3182printf "# Configured with:" >> $config_host_mak 3183printf " '%s'" "$0" "$@" >> $config_host_mak 3184echo >> $config_host_mak 3185 3186echo all: >> $config_host_mak 3187echo "prefix=$prefix" >> $config_host_mak 3188echo "bindir=$bindir" >> $config_host_mak 3189echo "libdir=$libdir" >> $config_host_mak 3190echo "libexecdir=$libexecdir" >> $config_host_mak 3191echo "includedir=$includedir" >> $config_host_mak 3192echo "mandir=$mandir" >> $config_host_mak 3193echo "sysconfdir=$sysconfdir" >> $config_host_mak 3194echo "qemu_confdir=$qemu_confdir" >> $config_host_mak 3195echo "qemu_datadir=$qemu_datadir" >> $config_host_mak 3196echo "qemu_docdir=$qemu_docdir" >> $config_host_mak 3197echo "CONFIG_QEMU_HELPERDIR=\"$libexecdir\"" >> $config_host_mak 3198 3199echo "ARCH=$ARCH" >> $config_host_mak 3200if test "$debug_tcg" = "yes" ; then 3201 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 3202fi 3203if test "$debug" = "yes" ; then 3204 echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak 3205fi 3206if test "$strip_opt" = "yes" ; then 3207 echo "STRIP=${strip}" >> $config_host_mak 3208fi 3209if test "$bigendian" = "yes" ; then 3210 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 3211fi 3212if test "$mingw32" = "yes" ; then 3213 echo "CONFIG_WIN32=y" >> $config_host_mak 3214 rc_version=`cat $source_path/VERSION` 3215 version_major=${rc_version%%.*} 3216 rc_version=${rc_version#*.} 3217 version_minor=${rc_version%%.*} 3218 rc_version=${rc_version#*.} 3219 version_subminor=${rc_version%%.*} 3220 version_micro=0 3221 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 3222 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 3223else 3224 echo "CONFIG_POSIX=y" >> $config_host_mak 3225fi 3226 3227if test "$linux" = "yes" ; then 3228 echo "CONFIG_LINUX=y" >> $config_host_mak 3229fi 3230 3231if test "$darwin" = "yes" ; then 3232 echo "CONFIG_DARWIN=y" >> $config_host_mak 3233fi 3234 3235if test "$aix" = "yes" ; then 3236 echo "CONFIG_AIX=y" >> $config_host_mak 3237fi 3238 3239if test "$solaris" = "yes" ; then 3240 echo "CONFIG_SOLARIS=y" >> $config_host_mak 3241 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 3242 if test "$needs_libsunmath" = "yes" ; then 3243 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 3244 fi 3245fi 3246if test "$haiku" = "yes" ; then 3247 echo "CONFIG_HAIKU=y" >> $config_host_mak 3248fi 3249if test "$static" = "yes" ; then 3250 echo "CONFIG_STATIC=y" >> $config_host_mak 3251fi 3252if test "$profiler" = "yes" ; then 3253 echo "CONFIG_PROFILER=y" >> $config_host_mak 3254fi 3255if test "$slirp" = "yes" ; then 3256 echo "CONFIG_SLIRP=y" >> $config_host_mak 3257 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 3258 QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES" 3259fi 3260if test "$vde" = "yes" ; then 3261 echo "CONFIG_VDE=y" >> $config_host_mak 3262fi 3263if test "$cap_ng" = "yes" ; then 3264 echo "CONFIG_LIBCAP=y" >> $config_host_mak 3265fi 3266for card in $audio_card_list; do 3267 def=CONFIG_`echo $card | LC_ALL=C tr '[a-z]' '[A-Z]'` 3268 echo "$def=y" >> $config_host_mak 3269done 3270echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 3271for drv in $audio_drv_list; do 3272 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 3273 echo "$def=y" >> $config_host_mak 3274 if test "$drv" = "fmod"; then 3275 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 3276 fi 3277done 3278if test "$audio_pt_int" = "yes" ; then 3279 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 3280fi 3281if test "$audio_win_int" = "yes" ; then 3282 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 3283fi 3284echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak 3285if test "$mixemu" = "yes" ; then 3286 echo "CONFIG_MIXEMU=y" >> $config_host_mak 3287fi 3288if test "$vnc" = "yes" ; then 3289 echo "CONFIG_VNC=y" >> $config_host_mak 3290fi 3291if test "$vnc_tls" = "yes" ; then 3292 echo "CONFIG_VNC_TLS=y" >> $config_host_mak 3293 echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak 3294fi 3295if test "$vnc_sasl" = "yes" ; then 3296 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 3297 echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak 3298fi 3299if test "$vnc_jpeg" = "yes" ; then 3300 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 3301 echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak 3302fi 3303if test "$vnc_png" = "yes" ; then 3304 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 3305 echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak 3306fi 3307if test "$fnmatch" = "yes" ; then 3308 echo "CONFIG_FNMATCH=y" >> $config_host_mak 3309fi 3310if test "$uuid" = "yes" ; then 3311 echo "CONFIG_UUID=y" >> $config_host_mak 3312fi 3313if test "$xfs" = "yes" ; then 3314 echo "CONFIG_XFS=y" >> $config_host_mak 3315fi 3316qemu_version=`head $source_path/VERSION` 3317echo "VERSION=$qemu_version" >>$config_host_mak 3318echo "PKGVERSION=$pkgversion" >>$config_host_mak 3319echo "SRC_PATH=$source_path" >> $config_host_mak 3320echo "TARGET_DIRS=$target_list" >> $config_host_mak 3321if [ "$docs" = "yes" ] ; then 3322 echo "BUILD_DOCS=yes" >> $config_host_mak 3323fi 3324if test "$sdl" = "yes" ; then 3325 echo "CONFIG_SDL=y" >> $config_host_mak 3326 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 3327fi 3328if test "$cocoa" = "yes" ; then 3329 echo "CONFIG_COCOA=y" >> $config_host_mak 3330fi 3331if test "$curses" = "yes" ; then 3332 echo "CONFIG_CURSES=y" >> $config_host_mak 3333fi 3334if test "$atfile" = "yes" ; then 3335 echo "CONFIG_ATFILE=y" >> $config_host_mak 3336fi 3337if test "$utimens" = "yes" ; then 3338 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 3339fi 3340if test "$pipe2" = "yes" ; then 3341 echo "CONFIG_PIPE2=y" >> $config_host_mak 3342fi 3343if test "$accept4" = "yes" ; then 3344 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 3345fi 3346if test "$splice" = "yes" ; then 3347 echo "CONFIG_SPLICE=y" >> $config_host_mak 3348fi 3349if test "$eventfd" = "yes" ; then 3350 echo "CONFIG_EVENTFD=y" >> $config_host_mak 3351fi 3352if test "$fallocate" = "yes" ; then 3353 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 3354fi 3355if test "$sync_file_range" = "yes" ; then 3356 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 3357fi 3358if test "$fiemap" = "yes" ; then 3359 echo "CONFIG_FIEMAP=y" >> $config_host_mak 3360fi 3361if test "$dup3" = "yes" ; then 3362 echo "CONFIG_DUP3=y" >> $config_host_mak 3363fi 3364if test "$epoll" = "yes" ; then 3365 echo "CONFIG_EPOLL=y" >> $config_host_mak 3366fi 3367if test "$epoll_create1" = "yes" ; then 3368 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 3369fi 3370if test "$epoll_pwait" = "yes" ; then 3371 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 3372fi 3373if test "$inotify" = "yes" ; then 3374 echo "CONFIG_INOTIFY=y" >> $config_host_mak 3375fi 3376if test "$inotify1" = "yes" ; then 3377 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 3378fi 3379if test "$byteswap_h" = "yes" ; then 3380 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 3381fi 3382if test "$bswap_h" = "yes" ; then 3383 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 3384fi 3385if test "$curl" = "yes" ; then 3386 echo "CONFIG_CURL=y" >> $config_host_mak 3387 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 3388fi 3389if test "$brlapi" = "yes" ; then 3390 echo "CONFIG_BRLAPI=y" >> $config_host_mak 3391fi 3392if test "$bluez" = "yes" ; then 3393 echo "CONFIG_BLUEZ=y" >> $config_host_mak 3394 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 3395fi 3396echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 3397if test "$xen" = "yes" ; then 3398 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 3399 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 3400fi 3401if test "$linux_aio" = "yes" ; then 3402 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 3403fi 3404if test "$attr" = "yes" ; then 3405 echo "CONFIG_ATTR=y" >> $config_host_mak 3406fi 3407if test "$libattr" = "yes" ; then 3408 echo "CONFIG_LIBATTR=y" >> $config_host_mak 3409fi 3410if test "$virtfs" = "yes" ; then 3411 echo "CONFIG_VIRTFS=y" >> $config_host_mak 3412fi 3413if test "$blobs" = "yes" ; then 3414 echo "INSTALL_BLOBS=yes" >> $config_host_mak 3415fi 3416if test "$iovec" = "yes" ; then 3417 echo "CONFIG_IOVEC=y" >> $config_host_mak 3418fi 3419if test "$preadv" = "yes" ; then 3420 echo "CONFIG_PREADV=y" >> $config_host_mak 3421fi 3422if test "$fdt" = "yes" ; then 3423 echo "CONFIG_FDT=y" >> $config_host_mak 3424fi 3425if test "$signalfd" = "yes" ; then 3426 echo "CONFIG_SIGNALFD=y" >> $config_host_mak 3427fi 3428if test "$tcg_interpreter" = "yes" ; then 3429 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 3430fi 3431if test "$fdatasync" = "yes" ; then 3432 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 3433fi 3434if test "$madvise" = "yes" ; then 3435 echo "CONFIG_MADVISE=y" >> $config_host_mak 3436fi 3437if test "$posix_madvise" = "yes" ; then 3438 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 3439fi 3440 3441if test "$spice" = "yes" ; then 3442 echo "CONFIG_SPICE=y" >> $config_host_mak 3443fi 3444 3445if test "$spice_qxl_io_monitors_config_async" = "yes" ; then 3446 echo "CONFIG_QXL_IO_MONITORS_CONFIG_ASYNC=y" >> $config_host_mak 3447fi 3448 3449if test "$spice_qxl_client_monitors_config" = "yes" ; then 3450 echo "CONFIG_QXL_CLIENT_MONITORS_CONFIG=y" >> $config_host_mak 3451fi 3452 3453if test "$smartcard" = "yes" ; then 3454 echo "CONFIG_SMARTCARD=y" >> $config_host_mak 3455fi 3456 3457if test "$smartcard_nss" = "yes" ; then 3458 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 3459 echo "libcacard_libs=$libcacard_libs" >> $config_host_mak 3460 echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak 3461fi 3462 3463if test "$usb_redir" = "yes" ; then 3464 echo "CONFIG_USB_REDIR=y" >> $config_host_mak 3465fi 3466 3467if test "$opengl" = "yes" ; then 3468 echo "CONFIG_OPENGL=y" >> $config_host_mak 3469fi 3470 3471if test "$libiscsi" = "yes" ; then 3472 echo "CONFIG_LIBISCSI=y" >> $config_host_mak 3473fi 3474 3475if test "$seccomp" = "yes"; then 3476 echo "CONFIG_SECCOMP=y" >> $config_host_mak 3477fi 3478 3479# XXX: suppress that 3480if [ "$bsd" = "yes" ] ; then 3481 echo "CONFIG_BSD=y" >> $config_host_mak 3482fi 3483 3484echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak 3485 3486if test "$zero_malloc" = "yes" ; then 3487 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 3488fi 3489if test "$rbd" = "yes" ; then 3490 echo "CONFIG_RBD=y" >> $config_host_mak 3491fi 3492 3493if test "$coroutine_backend" = "ucontext" ; then 3494 echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak 3495elif test "$coroutine_backend" = "sigaltstack" ; then 3496 echo "CONFIG_SIGALTSTACK_COROUTINE=y" >> $config_host_mak 3497fi 3498 3499if test "$open_by_handle_at" = "yes" ; then 3500 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 3501fi 3502 3503if test "$linux_magic_h" = "yes" ; then 3504 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 3505fi 3506 3507if test "$pragma_disable_unused_but_set" = "yes" ; then 3508 echo "CONFIG_PRAGMA_DISABLE_UNUSED_BUT_SET=y" >> $config_host_mak 3509fi 3510 3511if test "$valgrind_h" = "yes" ; then 3512 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 3513fi 3514 3515if test "$has_environ" = "yes" ; then 3516 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 3517fi 3518 3519# USB host support 3520case "$usb" in 3521linux) 3522 echo "HOST_USB=linux" >> $config_host_mak 3523;; 3524bsd) 3525 echo "HOST_USB=bsd" >> $config_host_mak 3526;; 3527*) 3528 echo "HOST_USB=stub" >> $config_host_mak 3529;; 3530esac 3531 3532# use default implementation for tracing backend-specific routines 3533trace_default=yes 3534echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak 3535if test "$trace_backend" = "nop"; then 3536 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 3537fi 3538if test "$trace_backend" = "simple"; then 3539 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 3540 trace_default=no 3541 # Set the appropriate trace file. 3542 trace_file="\"$trace_file-\" FMT_pid" 3543fi 3544if test "$trace_backend" = "stderr"; then 3545 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak 3546 trace_default=no 3547fi 3548if test "$trace_backend" = "ust"; then 3549 echo "CONFIG_TRACE_UST=y" >> $config_host_mak 3550fi 3551if test "$trace_backend" = "dtrace"; then 3552 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 3553 if test "$trace_backend_stap" = "yes" ; then 3554 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 3555 fi 3556fi 3557echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 3558if test "$trace_default" = "yes"; then 3559 echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak 3560fi 3561 3562echo "TOOLS=$tools" >> $config_host_mak 3563echo "ROMS=$roms" >> $config_host_mak 3564echo "MAKE=$make" >> $config_host_mak 3565echo "INSTALL=$install" >> $config_host_mak 3566echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 3567echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 3568echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 3569echo "PYTHON=$python" >> $config_host_mak 3570echo "CC=$cc" >> $config_host_mak 3571echo "CC_I386=$cc_i386" >> $config_host_mak 3572echo "HOST_CC=$host_cc" >> $config_host_mak 3573echo "OBJCC=$objcc" >> $config_host_mak 3574echo "AR=$ar" >> $config_host_mak 3575echo "OBJCOPY=$objcopy" >> $config_host_mak 3576echo "LD=$ld" >> $config_host_mak 3577echo "WINDRES=$windres" >> $config_host_mak 3578echo "LIBTOOL=$libtool" >> $config_host_mak 3579echo "CFLAGS=$CFLAGS" >> $config_host_mak 3580echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 3581echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 3582if test "$sparse" = "yes" ; then 3583 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 3584 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 3585 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 3586fi 3587echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 3588echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak 3589echo "ARLIBS_END=$arlibs_end" >> $config_host_mak 3590echo "LIBS+=$LIBS" >> $config_host_mak 3591echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 3592echo "EXESUF=$EXESUF" >> $config_host_mak 3593echo "LIBS_QGA+=$libs_qga" >> $config_host_mak 3594echo "POD2MAN=$POD2MAN" >> $config_host_mak 3595 3596# generate list of library paths for linker script 3597 3598$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld} 3599 3600if test -f ${config_host_ld}~ ; then 3601 if cmp -s $config_host_ld ${config_host_ld}~ ; then 3602 mv ${config_host_ld}~ $config_host_ld 3603 else 3604 rm ${config_host_ld}~ 3605 fi 3606fi 3607 3608for d in libdis libdis-user; do 3609 symlink "$source_path/Makefile.dis" "$d/Makefile" 3610 echo > $d/config.mak 3611done 3612 3613# use included Linux headers 3614if test "$linux" = "yes" ; then 3615 mkdir -p linux-headers 3616 case "$cpu" in 3617 i386|x86_64) 3618 linux_arch=x86 3619 ;; 3620 ppcemb|ppc|ppc64) 3621 linux_arch=powerpc 3622 ;; 3623 s390x) 3624 linux_arch=s390 3625 ;; 3626 *) 3627 # For most CPUs the kernel architecture name and QEMU CPU name match. 3628 linux_arch="$cpu" 3629 ;; 3630 esac 3631 # For non-KVM architectures we will not have asm headers 3632 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 3633 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 3634 fi 3635fi 3636 3637for target in $target_list; do 3638target_dir="$target" 3639config_target_mak=$target_dir/config-target.mak 3640target_arch2=`echo $target | cut -d '-' -f 1` 3641target_bigendian="no" 3642 3643case "$target_arch2" in 3644 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 3645 target_bigendian=yes 3646 ;; 3647esac 3648target_softmmu="no" 3649target_user_only="no" 3650target_linux_user="no" 3651target_bsd_user="no" 3652case "$target" in 3653 ${target_arch2}-softmmu) 3654 target_softmmu="yes" 3655 ;; 3656 ${target_arch2}-linux-user) 3657 if test "$linux" != "yes" ; then 3658 echo "ERROR: Target '$target' is only available on a Linux host" 3659 exit 1 3660 fi 3661 target_user_only="yes" 3662 target_linux_user="yes" 3663 ;; 3664 ${target_arch2}-bsd-user) 3665 if test "$bsd" != "yes" ; then 3666 echo "ERROR: Target '$target' is only available on a BSD host" 3667 exit 1 3668 fi 3669 target_user_only="yes" 3670 target_bsd_user="yes" 3671 ;; 3672 *) 3673 echo "ERROR: Target '$target' not recognised" 3674 exit 1 3675 ;; 3676esac 3677 3678mkdir -p $target_dir 3679echo "# Automatically generated by configure - do not modify" > $config_target_mak 3680 3681bflt="no" 3682target_nptl="no" 3683interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"` 3684gdb_xml_files="" 3685target_short_alignment=2 3686target_int_alignment=4 3687target_long_alignment=4 3688target_llong_alignment=8 3689target_libs_softmmu= 3690 3691TARGET_ARCH="$target_arch2" 3692TARGET_BASE_ARCH="" 3693TARGET_ABI_DIR="" 3694 3695case "$target_arch2" in 3696 i386) 3697 target_phys_bits=64 3698 ;; 3699 x86_64) 3700 TARGET_BASE_ARCH=i386 3701 target_phys_bits=64 3702 target_long_alignment=8 3703 ;; 3704 alpha) 3705 target_phys_bits=64 3706 target_long_alignment=8 3707 target_nptl="yes" 3708 ;; 3709 arm|armeb) 3710 TARGET_ARCH=arm 3711 bflt="yes" 3712 target_nptl="yes" 3713 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 3714 target_phys_bits=64 3715 target_llong_alignment=4 3716 target_libs_softmmu="$fdt_libs" 3717 ;; 3718 cris) 3719 target_nptl="yes" 3720 target_phys_bits=32 3721 ;; 3722 lm32) 3723 target_phys_bits=32 3724 target_libs_softmmu="$opengl_libs" 3725 ;; 3726 m68k) 3727 bflt="yes" 3728 gdb_xml_files="cf-core.xml cf-fp.xml" 3729 target_phys_bits=32 3730 target_int_alignment=2 3731 target_long_alignment=2 3732 target_llong_alignment=2 3733 ;; 3734 microblaze|microblazeel) 3735 TARGET_ARCH=microblaze 3736 bflt="yes" 3737 target_nptl="yes" 3738 target_phys_bits=32 3739 target_libs_softmmu="$fdt_libs" 3740 ;; 3741 mips|mipsel) 3742 TARGET_ARCH=mips 3743 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 3744 target_nptl="yes" 3745 target_phys_bits=64 3746 ;; 3747 mipsn32|mipsn32el) 3748 TARGET_ARCH=mipsn32 3749 TARGET_BASE_ARCH=mips 3750 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 3751 target_phys_bits=64 3752 ;; 3753 mips64|mips64el) 3754 TARGET_ARCH=mips64 3755 TARGET_BASE_ARCH=mips 3756 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 3757 target_phys_bits=64 3758 target_long_alignment=8 3759 ;; 3760 or32) 3761 TARGET_ARCH=openrisc 3762 TARGET_BASE_ARCH=openrisc 3763 target_phys_bits=32 3764 ;; 3765 ppc) 3766 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3767 target_phys_bits=64 3768 target_nptl="yes" 3769 target_libs_softmmu="$fdt_libs" 3770 ;; 3771 ppcemb) 3772 TARGET_BASE_ARCH=ppc 3773 TARGET_ABI_DIR=ppc 3774 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3775 target_phys_bits=64 3776 target_nptl="yes" 3777 target_libs_softmmu="$fdt_libs" 3778 ;; 3779 ppc64) 3780 TARGET_BASE_ARCH=ppc 3781 TARGET_ABI_DIR=ppc 3782 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3783 target_phys_bits=64 3784 target_long_alignment=8 3785 target_libs_softmmu="$fdt_libs" 3786 ;; 3787 ppc64abi32) 3788 TARGET_ARCH=ppc64 3789 TARGET_BASE_ARCH=ppc 3790 TARGET_ABI_DIR=ppc 3791 echo "TARGET_ABI32=y" >> $config_target_mak 3792 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3793 target_phys_bits=64 3794 target_libs_softmmu="$fdt_libs" 3795 ;; 3796 sh4|sh4eb) 3797 TARGET_ARCH=sh4 3798 bflt="yes" 3799 target_nptl="yes" 3800 target_phys_bits=32 3801 ;; 3802 sparc) 3803 target_phys_bits=64 3804 ;; 3805 sparc64) 3806 TARGET_BASE_ARCH=sparc 3807 target_phys_bits=64 3808 target_long_alignment=8 3809 ;; 3810 sparc32plus) 3811 TARGET_ARCH=sparc64 3812 TARGET_BASE_ARCH=sparc 3813 TARGET_ABI_DIR=sparc 3814 echo "TARGET_ABI32=y" >> $config_target_mak 3815 target_phys_bits=64 3816 ;; 3817 s390x) 3818 target_nptl="yes" 3819 target_phys_bits=64 3820 target_long_alignment=8 3821 ;; 3822 unicore32) 3823 target_phys_bits=32 3824 ;; 3825 xtensa|xtensaeb) 3826 TARGET_ARCH=xtensa 3827 target_phys_bits=32 3828 ;; 3829 *) 3830 echo "Unsupported target CPU" 3831 exit 1 3832 ;; 3833esac 3834# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 3835if [ "$TARGET_BASE_ARCH" = "" ]; then 3836 TARGET_BASE_ARCH=$TARGET_ARCH 3837fi 3838 3839symlink "$source_path/Makefile.target" "$target_dir/Makefile" 3840 3841upper() { 3842 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 3843} 3844 3845echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak 3846echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak 3847echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak 3848echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak 3849echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak 3850target_arch_name="`upper $TARGET_ARCH`" 3851echo "TARGET_$target_arch_name=y" >> $config_target_mak 3852echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak 3853echo "TARGET_TYPE=TARGET_TYPE_`upper $target_arch2`" >> $config_target_mak 3854echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 3855if [ "$TARGET_ABI_DIR" = "" ]; then 3856 TARGET_ABI_DIR=$TARGET_ARCH 3857fi 3858echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 3859case "$target_arch2" in 3860 i386|x86_64) 3861 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 3862 target_phys_bits=64 3863 echo "CONFIG_XEN=y" >> $config_target_mak 3864 if test "$xen_pci_passthrough" = yes; then 3865 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 3866 fi 3867 else 3868 echo "CONFIG_NO_XEN=y" >> $config_target_mak 3869 fi 3870 ;; 3871 *) 3872 echo "CONFIG_NO_XEN=y" >> $config_target_mak 3873esac 3874case "$target_arch2" in 3875 i386|x86_64|ppcemb|ppc|ppc64|s390x) 3876 # Make sure the target and host cpus are compatible 3877 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 3878 \( "$target_arch2" = "$cpu" -o \ 3879 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 3880 \( "$target_arch2" = "ppc64" -a "$cpu" = "ppc" \) -o \ 3881 \( "$target_arch2" = "ppc" -a "$cpu" = "ppc64" \) -o \ 3882 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 3883 \( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \ 3884 \( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then 3885 echo "CONFIG_KVM=y" >> $config_target_mak 3886 if test "$vhost_net" = "yes" ; then 3887 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 3888 fi 3889 fi 3890esac 3891case "$target_arch2" in 3892 i386|x86_64) 3893 echo "CONFIG_HAVE_GET_MEMORY_MAPPING=y" >> $config_target_mak 3894esac 3895if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then 3896 echo "CONFIG_PSERIES=y" >> $config_target_mak 3897fi 3898if test "$target_bigendian" = "yes" ; then 3899 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 3900fi 3901if test "$target_softmmu" = "yes" ; then 3902 echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak 3903 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 3904 echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak 3905 echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak 3906 echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak 3907 if test "$smartcard_nss" = "yes" ; then 3908 echo "subdir-$target: subdir-libcacard" >> $config_host_mak 3909 fi 3910 case "$target_arch2" in 3911 i386|x86_64) 3912 echo "CONFIG_HAVE_CORE_DUMP=y" >> $config_target_mak 3913 esac 3914fi 3915if test "$target_user_only" = "yes" ; then 3916 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 3917 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 3918fi 3919if test "$target_linux_user" = "yes" ; then 3920 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 3921fi 3922list="" 3923if test ! -z "$gdb_xml_files" ; then 3924 for x in $gdb_xml_files; do 3925 list="$list $source_path/gdb-xml/$x" 3926 done 3927 echo "TARGET_XML_FILES=$list" >> $config_target_mak 3928fi 3929 3930if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 3931 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 3932fi 3933if test "$target_user_only" = "yes" \ 3934 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then 3935 echo "CONFIG_USE_NPTL=y" >> $config_target_mak 3936fi 3937if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 3938 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 3939fi 3940if test "$target_bsd_user" = "yes" ; then 3941 echo "CONFIG_BSD_USER=y" >> $config_target_mak 3942fi 3943 3944# the static way of configuring available audio cards requires this workaround 3945if test "$target_user_only" != "yes" && grep -q CONFIG_PCSPK $source_path/default-configs/$target.mak; then 3946 echo "CONFIG_PCSPK=y" >> $config_target_mak 3947fi 3948 3949# generate QEMU_CFLAGS/LDFLAGS for targets 3950 3951cflags="" 3952includes="" 3953ldflags="" 3954 3955if test "$tcg_interpreter" = "yes"; then 3956 includes="-I\$(SRC_PATH)/tcg/tci $includes" 3957elif test "$ARCH" = "sparc64" ; then 3958 includes="-I\$(SRC_PATH)/tcg/sparc $includes" 3959elif test "$ARCH" = "s390x" ; then 3960 includes="-I\$(SRC_PATH)/tcg/s390 $includes" 3961elif test "$ARCH" = "x86_64" ; then 3962 includes="-I\$(SRC_PATH)/tcg/i386 $includes" 3963else 3964 includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes" 3965fi 3966includes="-I\$(SRC_PATH)/tcg $includes" 3967 3968if test "$linux" = "yes" ; then 3969 includes="-I\$(SRC_PATH)/linux-headers $includes" 3970fi 3971 3972if test "$target_user_only" = "yes" ; then 3973 libdis_config_mak=libdis-user/config.mak 3974else 3975 libdis_config_mak=libdis/config.mak 3976fi 3977 3978for i in $ARCH $TARGET_BASE_ARCH ; do 3979 case "$i" in 3980 alpha) 3981 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 3982 echo "CONFIG_ALPHA_DIS=y" >> $libdis_config_mak 3983 ;; 3984 arm) 3985 echo "CONFIG_ARM_DIS=y" >> $config_target_mak 3986 echo "CONFIG_ARM_DIS=y" >> $libdis_config_mak 3987 ;; 3988 cris) 3989 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 3990 echo "CONFIG_CRIS_DIS=y" >> $libdis_config_mak 3991 ;; 3992 hppa) 3993 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 3994 echo "CONFIG_HPPA_DIS=y" >> $libdis_config_mak 3995 ;; 3996 i386|x86_64) 3997 echo "CONFIG_I386_DIS=y" >> $config_target_mak 3998 echo "CONFIG_I386_DIS=y" >> $libdis_config_mak 3999 ;; 4000 ia64*) 4001 echo "CONFIG_IA64_DIS=y" >> $config_target_mak 4002 echo "CONFIG_IA64_DIS=y" >> $libdis_config_mak 4003 ;; 4004 lm32) 4005 echo "CONFIG_LM32_DIS=y" >> $config_target_mak 4006 echo "CONFIG_LM32_DIS=y" >> $libdis_config_mak 4007 ;; 4008 m68k) 4009 echo "CONFIG_M68K_DIS=y" >> $config_target_mak 4010 echo "CONFIG_M68K_DIS=y" >> $libdis_config_mak 4011 ;; 4012 microblaze*) 4013 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 4014 echo "CONFIG_MICROBLAZE_DIS=y" >> $libdis_config_mak 4015 ;; 4016 mips*) 4017 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 4018 echo "CONFIG_MIPS_DIS=y" >> $libdis_config_mak 4019 ;; 4020 or32) 4021 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak 4022 echo "CONFIG_OPENRISC_DIS=y" >> $libdis_config_mak 4023 ;; 4024 ppc*) 4025 echo "CONFIG_PPC_DIS=y" >> $config_target_mak 4026 echo "CONFIG_PPC_DIS=y" >> $libdis_config_mak 4027 ;; 4028 s390*) 4029 echo "CONFIG_S390_DIS=y" >> $config_target_mak 4030 echo "CONFIG_S390_DIS=y" >> $libdis_config_mak 4031 ;; 4032 sh4) 4033 echo "CONFIG_SH4_DIS=y" >> $config_target_mak 4034 echo "CONFIG_SH4_DIS=y" >> $libdis_config_mak 4035 ;; 4036 sparc*) 4037 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 4038 echo "CONFIG_SPARC_DIS=y" >> $libdis_config_mak 4039 ;; 4040 xtensa*) 4041 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak 4042 echo "CONFIG_XTENSA_DIS=y" >> $libdis_config_mak 4043 ;; 4044 esac 4045done 4046if test "$tcg_interpreter" = "yes" ; then 4047 echo "CONFIG_TCI_DIS=y" >> $config_target_mak 4048 echo "CONFIG_TCI_DIS=y" >> $libdis_config_mak 4049fi 4050 4051case "$ARCH" in 4052alpha) 4053 # Ensure there's only a single GP 4054 cflags="-msmall-data $cflags" 4055;; 4056esac 4057 4058if test "$target_softmmu" = "yes" ; then 4059 case "$TARGET_BASE_ARCH" in 4060 arm) 4061 cflags="-DHAS_AUDIO $cflags" 4062 ;; 4063 lm32) 4064 cflags="-DHAS_AUDIO $cflags" 4065 ;; 4066 i386|mips|ppc) 4067 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags" 4068 ;; 4069 esac 4070fi 4071 4072if test "$gprof" = "yes" ; then 4073 echo "TARGET_GPROF=yes" >> $config_target_mak 4074 if test "$target_linux_user" = "yes" ; then 4075 cflags="-p $cflags" 4076 ldflags="-p $ldflags" 4077 fi 4078 if test "$target_softmmu" = "yes" ; then 4079 ldflags="-p $ldflags" 4080 echo "GPROF_CFLAGS=-p" >> $config_target_mak 4081 fi 4082fi 4083 4084if test "$ARCH" = "tci"; then 4085 linker_script="" 4086else 4087 linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" 4088fi 4089 4090if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 4091 case "$ARCH" in 4092 alpha | s390x) 4093 # The default placement of the application is fine. 4094 ;; 4095 *) 4096 ldflags="$linker_script $ldflags" 4097 ;; 4098 esac 4099fi 4100 4101echo "LDFLAGS+=$ldflags" >> $config_target_mak 4102echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 4103echo "QEMU_INCLUDES+=$includes" >> $config_target_mak 4104 4105done # for target in $targets 4106 4107# build tree in object directory in case the source is not in the current directory 4108DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32" 4109DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas" 4110DIRS="$DIRS roms/seabios roms/vgabios" 4111DIRS="$DIRS qapi-generated" 4112DIRS="$DIRS libcacard libcacard/libcacard libcacard/trace" 4113FILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 4114FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 4115FILES="$FILES tests/tcg/lm32/Makefile libcacard/Makefile" 4116FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 4117FILES="$FILES pc-bios/spapr-rtas/Makefile" 4118FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 4119for bios_file in \ 4120 $source_path/pc-bios/*.bin \ 4121 $source_path/pc-bios/*.rom \ 4122 $source_path/pc-bios/*.dtb \ 4123 $source_path/pc-bios/openbios-* \ 4124 $source_path/pc-bios/palcode-* 4125do 4126 FILES="$FILES pc-bios/`basename $bios_file`" 4127done 4128mkdir -p $DIRS 4129for f in $FILES ; do 4130 if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then 4131 symlink "$source_path/$f" "$f" 4132 fi 4133done 4134 4135# temporary config to build submodules 4136for rom in seabios vgabios ; do 4137 config_mak=roms/$rom/config.mak 4138 echo "# Automatically generated by configure - do not modify" > $config_mak 4139 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 4140 echo "CC=$cc" >> $config_mak 4141 echo "BCC=bcc" >> $config_mak 4142 echo "CPP=${cross_prefix}cpp" >> $config_mak 4143 echo "OBJCOPY=objcopy" >> $config_mak 4144 echo "IASL=iasl" >> $config_mak 4145 echo "LD=$ld" >> $config_mak 4146done 4147 4148for hwlib in 32 64; do 4149 d=libhw$hwlib 4150 symlink "$source_path/Makefile.hw" "$d/Makefile" 4151 echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak 4152done 4153 4154d=libuser 4155symlink "$source_path/Makefile.user" "$d/Makefile" 4156 4157if test "$docs" = "yes" ; then 4158 mkdir -p QMP 4159fi 4160