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