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