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