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 18trap "rm -f $TMPC $TMPO $TMPE ; exit" EXIT INT QUIT TERM 19 20compile_object() { 21 $cc $QEMU_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null 22} 23 24compile_prog() { 25 local_cflags="$1" 26 local_ldflags="$2" 27 $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags > /dev/null 2> /dev/null 28} 29 30# check whether a command is available to this shell (may be either an 31# executable or a builtin) 32has() { 33 type "$1" >/dev/null 2>&1 34} 35 36# search for an executable in PATH 37path_of() { 38 local_command="$1" 39 local_ifs="$IFS" 40 local_dir="" 41 42 # pathname has a dir component? 43 if [ "${local_command#*/}" != "$local_command" ]; then 44 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 45 echo "$local_command" 46 return 0 47 fi 48 fi 49 if [ -z "$local_command" ]; then 50 return 1 51 fi 52 53 IFS=: 54 for local_dir in $PATH; do 55 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 56 echo "$local_dir/$local_command" 57 IFS="${local_ifs:-$(printf ' \t\n')}" 58 return 0 59 fi 60 done 61 # not found 62 IFS="${local_ifs:-$(printf ' \t\n')}" 63 return 1 64} 65 66# default parameters 67cpu="" 68interp_prefix="/usr/gnemul/qemu-%M" 69static="no" 70sparc_cpu="" 71cross_prefix="" 72cc="gcc" 73audio_drv_list="" 74audio_card_list="ac97 es1370 sb16" 75audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus" 76block_drv_whitelist="" 77host_cc="gcc" 78ar="ar" 79make="make" 80install="install" 81objcopy="objcopy" 82ld="ld" 83helper_cflags="" 84libs_softmmu="" 85libs_tools="" 86audio_pt_int="" 87audio_win_int="" 88 89# parse CC options first 90for opt do 91 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 92 case "$opt" in 93 --cross-prefix=*) cross_prefix="$optarg" 94 ;; 95 --cc=*) cc="$optarg" 96 ;; 97 --cpu=*) cpu="$optarg" 98 ;; 99 --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS" 100 ;; 101 --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS" 102 ;; 103 --sparc_cpu=*) 104 sparc_cpu="$optarg" 105 case $sparc_cpu in 106 v7|v8|v8plus|v8plusa) 107 cpu="sparc" 108 ;; 109 v9) 110 cpu="sparc64" 111 ;; 112 *) 113 echo "undefined SPARC architecture. Exiting"; 114 exit 1 115 ;; 116 esac 117 ;; 118 esac 119done 120# OS specific 121# Using uname is really, really broken. Once we have the right set of checks 122# we can eliminate it's usage altogether 123 124cc="${cross_prefix}${cc}" 125ar="${cross_prefix}${ar}" 126objcopy="${cross_prefix}${objcopy}" 127ld="${cross_prefix}${ld}" 128 129# default flags for all hosts 130QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS" 131CFLAGS="-g $CFLAGS" 132QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 133QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 134QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 135QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS" 136QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS" 137LDFLAGS="-g $LDFLAGS" 138 139gcc_flags="-Wold-style-declaration -Wold-style-definition -fstack-protector-all" 140cat > $TMPC << EOF 141int main(void) { return 0; } 142EOF 143for flag in $gcc_flags; do 144 if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then 145 QEMU_CFLAGS="$flag $QEMU_CFLAGS" 146 fi 147done 148 149# check that the C compiler works. 150cat > $TMPC <<EOF 151int main(void) {} 152EOF 153 154if compile_object ; then 155 : C compiler works ok 156else 157 echo "ERROR: \"$cc\" either does not exist or does not work" 158 exit 1 159fi 160 161check_define() { 162cat > $TMPC <<EOF 163#if !defined($1) 164#error Not defined 165#endif 166int main(void) { return 0; } 167EOF 168 compile_object 169} 170 171if test ! -z "$cpu" ; then 172 # command line argument 173 : 174elif check_define __i386__ ; then 175 cpu="i386" 176elif check_define __x86_64__ ; then 177 cpu="x86_64" 178elif check_define __sparc__ ; then 179 # We can't check for 64 bit (when gcc is biarch) or V8PLUSA 180 # They must be specified using --sparc_cpu 181 if check_define __arch64__ ; then 182 cpu="sparc64" 183 else 184 cpu="sparc" 185 fi 186elif check_define _ARCH_PPC ; then 187 if check_define _ARCH_PPC64 ; then 188 cpu="ppc64" 189 else 190 cpu="ppc" 191 fi 192elif check_define __mips__ ; then 193 cpu="mips" 194elif check_define __ia64__ ; then 195 cpu="ia64" 196elif check_define __s390__ ; then 197 if check_define __s390x__ ; then 198 cpu="s390x" 199 else 200 cpu="s390" 201 fi 202else 203 cpu=`uname -m` 204fi 205 206target_list="" 207case "$cpu" in 208 alpha|cris|ia64|m68k|microblaze|ppc|ppc64|sparc64) 209 cpu="$cpu" 210 ;; 211 i386|i486|i586|i686|i86pc|BePC) 212 cpu="i386" 213 ;; 214 x86_64|amd64) 215 cpu="x86_64" 216 ;; 217 armv*b) 218 cpu="armv4b" 219 ;; 220 armv*l) 221 cpu="armv4l" 222 ;; 223 parisc|parisc64) 224 cpu="hppa" 225 ;; 226 mips*) 227 cpu="mips" 228 ;; 229 s390) 230 cpu="s390" 231 ;; 232 s390x) 233 cpu="s390x" 234 ;; 235 sparc|sun4[cdmuv]) 236 cpu="sparc" 237 ;; 238 *) 239 echo "Unsupported CPU = $cpu" 240 exit 1 241 ;; 242esac 243 244# Default value for a variable defining feature "foo". 245# * foo="no" feature will only be used if --enable-foo arg is given 246# * foo="" feature will be searched for, and if found, will be used 247# unless --disable-foo is given 248# * foo="yes" this value will only be set by --enable-foo flag. 249# feature will searched for, 250# if not found, configure exits with error 251# 252# Always add --enable-foo and --disable-foo command line args. 253# Distributions want to ensure that several features are compiled in, and it 254# is impossible without a --enable-foo that exits if a feature is not found. 255 256bluez="" 257brlapi="" 258curl="" 259curses="" 260docs="" 261fdt="" 262kvm="" 263kvm_para="" 264nptl="" 265sdl="" 266sparse="no" 267uuid="" 268vde="" 269vnc_tls="" 270vnc_sasl="" 271vnc_jpeg="" 272vnc_png="" 273vnc_thread="no" 274xen="" 275linux_aio="" 276attr="" 277vhost_net="" 278 279gprof="no" 280debug_tcg="no" 281debug_mon="no" 282debug="no" 283strip_opt="yes" 284bigendian="no" 285mingw32="no" 286EXESUF="" 287prefix="/usr/local" 288mandir="\${prefix}/share/man" 289datadir="\${prefix}/share/qemu" 290docdir="\${prefix}/share/doc/qemu" 291bindir="\${prefix}/bin" 292sysconfdir="\${prefix}/etc" 293confsuffix="/qemu" 294slirp="yes" 295fmod_lib="" 296fmod_inc="" 297oss_lib="" 298bsd="no" 299linux="no" 300solaris="no" 301profiler="no" 302cocoa="no" 303softmmu="yes" 304linux_user="no" 305darwin_user="no" 306bsd_user="no" 307guest_base="" 308uname_release="" 309io_thread="no" 310mixemu="no" 311kerneldir="" 312aix="no" 313blobs="yes" 314pkgversion="" 315check_utests="no" 316user_pie="no" 317zero_malloc="" 318 319# OS specific 320if check_define __linux__ ; then 321 targetos="Linux" 322elif check_define _WIN32 ; then 323 targetos='MINGW32' 324elif check_define __OpenBSD__ ; then 325 targetos='OpenBSD' 326elif check_define __sun__ ; then 327 targetos='SunOS' 328else 329 targetos=`uname -s` 330fi 331 332case $targetos in 333CYGWIN*) 334 mingw32="yes" 335 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS" 336 audio_possible_drivers="winwave sdl" 337 audio_drv_list="winwave" 338;; 339MINGW32*) 340 mingw32="yes" 341 audio_possible_drivers="winwave dsound sdl fmod" 342 audio_drv_list="winwave" 343;; 344GNU/kFreeBSD) 345 bsd="yes" 346 audio_drv_list="oss" 347 audio_possible_drivers="oss sdl esd pa" 348;; 349FreeBSD) 350 bsd="yes" 351 make="gmake" 352 audio_drv_list="oss" 353 audio_possible_drivers="oss sdl esd pa" 354 # needed for kinfo_getvmmap(3) in libutil.h 355 LIBS="-lutil $LIBS" 356;; 357DragonFly) 358 bsd="yes" 359 make="gmake" 360 audio_drv_list="oss" 361 audio_possible_drivers="oss sdl esd pa" 362;; 363NetBSD) 364 bsd="yes" 365 make="gmake" 366 audio_drv_list="oss" 367 audio_possible_drivers="oss sdl esd" 368 oss_lib="-lossaudio" 369;; 370OpenBSD) 371 bsd="yes" 372 make="gmake" 373 audio_drv_list="oss" 374 audio_possible_drivers="oss sdl esd" 375 oss_lib="-lossaudio" 376;; 377Darwin) 378 bsd="yes" 379 darwin="yes" 380 # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can 381 # run 64-bit userspace code 382 if [ "$cpu" = "i386" ] ; then 383 is_x86_64=`sysctl -n hw.optional.x86_64` 384 [ "$is_x86_64" = "1" ] && cpu=x86_64 385 fi 386 if [ "$cpu" = "x86_64" ] ; then 387 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 388 LDFLAGS="-arch x86_64 $LDFLAGS" 389 else 390 QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS" 391 fi 392 darwin_user="yes" 393 cocoa="yes" 394 audio_drv_list="coreaudio" 395 audio_possible_drivers="coreaudio sdl fmod" 396 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 397 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 398;; 399SunOS) 400 solaris="yes" 401 make="gmake" 402 install="ginstall" 403 ld="gld" 404 needs_libsunmath="no" 405 solarisrev=`uname -r | cut -f2 -d.` 406 # have to select again, because `uname -m` returns i86pc 407 # even on an x86_64 box. 408 solariscpu=`isainfo -k` 409 if test "${solariscpu}" = "amd64" ; then 410 cpu="x86_64" 411 fi 412 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 413 if test "$solarisrev" -le 9 ; then 414 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then 415 needs_libsunmath="yes" 416 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS" 417 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS" 418 LIBS="-lsunmath $LIBS" 419 else 420 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" 421 echo "libsunmath from the Sun Studio compilers tools, due to a lack of" 422 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" 423 echo "Studio 11 can be downloaded from www.sun.com." 424 exit 1 425 fi 426 fi 427 fi 428 if test -f /usr/include/sys/soundcard.h ; then 429 audio_drv_list="oss" 430 fi 431 audio_possible_drivers="oss sdl" 432# needed for CMSG_ macros in sys/socket.h 433 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 434# needed for TIOCWIN* defines in termios.h 435 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 436 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 437 LIBS="-lsocket -lnsl -lresolv $LIBS" 438;; 439AIX) 440 aix="yes" 441 make="gmake" 442;; 443*) 444 audio_drv_list="oss" 445 audio_possible_drivers="oss alsa sdl esd pa" 446 linux="yes" 447 linux_user="yes" 448 usb="linux" 449 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 450 audio_possible_drivers="$audio_possible_drivers fmod" 451 fi 452;; 453esac 454 455if [ "$bsd" = "yes" ] ; then 456 if [ "$darwin" != "yes" ] ; then 457 usb="bsd" 458 fi 459 bsd_user="yes" 460fi 461 462if test "$mingw32" = "yes" ; then 463 EXESUF=".exe" 464 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 465 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 466 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 467 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 468 prefix="c:/Program Files/Qemu" 469 mandir="\${prefix}" 470 datadir="\${prefix}" 471 docdir="\${prefix}" 472 bindir="\${prefix}" 473 sysconfdir="\${prefix}" 474 confsuffix="" 475fi 476 477# find source path 478source_path=`dirname "$0"` 479source_path_used="no" 480workdir=`pwd` 481if [ -z "$source_path" ]; then 482 source_path=$workdir 483else 484 source_path=`cd "$source_path"; pwd` 485fi 486[ -f "$workdir/vl.c" ] || source_path_used="yes" 487 488werror="" 489 490for opt do 491 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 492 case "$opt" in 493 --help|-h) show_help=yes 494 ;; 495 --prefix=*) prefix="$optarg" 496 ;; 497 --interp-prefix=*) interp_prefix="$optarg" 498 ;; 499 --source-path=*) source_path="$optarg" 500 source_path_used="yes" 501 ;; 502 --cross-prefix=*) 503 ;; 504 --cc=*) 505 ;; 506 --host-cc=*) host_cc="$optarg" 507 ;; 508 --make=*) make="$optarg" 509 ;; 510 --install=*) install="$optarg" 511 ;; 512 --extra-cflags=*) 513 ;; 514 --extra-ldflags=*) 515 ;; 516 --cpu=*) 517 ;; 518 --target-list=*) target_list="$optarg" 519 ;; 520 --enable-gprof) gprof="yes" 521 ;; 522 --static) 523 static="yes" 524 LDFLAGS="-static $LDFLAGS" 525 ;; 526 --mandir=*) mandir="$optarg" 527 ;; 528 --bindir=*) bindir="$optarg" 529 ;; 530 --datadir=*) datadir="$optarg" 531 ;; 532 --docdir=*) docdir="$optarg" 533 ;; 534 --sysconfdir=*) sysconfdir="$optarg" 535 ;; 536 --disable-sdl) sdl="no" 537 ;; 538 --enable-sdl) sdl="yes" 539 ;; 540 --fmod-lib=*) fmod_lib="$optarg" 541 ;; 542 --fmod-inc=*) fmod_inc="$optarg" 543 ;; 544 --oss-lib=*) oss_lib="$optarg" 545 ;; 546 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'` 547 ;; 548 --audio-drv-list=*) audio_drv_list="$optarg" 549 ;; 550 --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 551 ;; 552 --enable-debug-tcg) debug_tcg="yes" 553 ;; 554 --disable-debug-tcg) debug_tcg="no" 555 ;; 556 --enable-debug-mon) debug_mon="yes" 557 ;; 558 --disable-debug-mon) debug_mon="no" 559 ;; 560 --enable-debug) 561 # Enable debugging options that aren't excessively noisy 562 debug_tcg="yes" 563 debug_mon="yes" 564 debug="yes" 565 strip_opt="no" 566 ;; 567 --enable-sparse) sparse="yes" 568 ;; 569 --disable-sparse) sparse="no" 570 ;; 571 --disable-strip) strip_opt="no" 572 ;; 573 --disable-vnc-tls) vnc_tls="no" 574 ;; 575 --enable-vnc-tls) vnc_tls="yes" 576 ;; 577 --disable-vnc-sasl) vnc_sasl="no" 578 ;; 579 --enable-vnc-sasl) vnc_sasl="yes" 580 ;; 581 --disable-vnc-jpeg) vnc_jpeg="no" 582 ;; 583 --enable-vnc-jpeg) vnc_jpeg="yes" 584 ;; 585 --disable-vnc-png) vnc_png="no" 586 ;; 587 --enable-vnc-png) vnc_png="yes" 588 ;; 589 --disable-vnc-thread) vnc_thread="no" 590 ;; 591 --enable-vnc-thread) vnc_thread="yes" 592 ;; 593 --disable-slirp) slirp="no" 594 ;; 595 --disable-uuid) uuid="no" 596 ;; 597 --enable-uuid) uuid="yes" 598 ;; 599 --disable-vde) vde="no" 600 ;; 601 --enable-vde) vde="yes" 602 ;; 603 --disable-xen) xen="no" 604 ;; 605 --enable-xen) xen="yes" 606 ;; 607 --disable-brlapi) brlapi="no" 608 ;; 609 --enable-brlapi) brlapi="yes" 610 ;; 611 --disable-bluez) bluez="no" 612 ;; 613 --enable-bluez) bluez="yes" 614 ;; 615 --disable-kvm) kvm="no" 616 ;; 617 --enable-kvm) kvm="yes" 618 ;; 619 --enable-profiler) profiler="yes" 620 ;; 621 --enable-cocoa) 622 cocoa="yes" ; 623 sdl="no" ; 624 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" 625 ;; 626 --disable-system) softmmu="no" 627 ;; 628 --enable-system) softmmu="yes" 629 ;; 630 --disable-user) 631 linux_user="no" ; 632 bsd_user="no" ; 633 darwin_user="no" 634 ;; 635 --enable-user) ;; 636 --disable-linux-user) linux_user="no" 637 ;; 638 --enable-linux-user) linux_user="yes" 639 ;; 640 --disable-darwin-user) darwin_user="no" 641 ;; 642 --enable-darwin-user) darwin_user="yes" 643 ;; 644 --disable-bsd-user) bsd_user="no" 645 ;; 646 --enable-bsd-user) bsd_user="yes" 647 ;; 648 --enable-guest-base) guest_base="yes" 649 ;; 650 --disable-guest-base) guest_base="no" 651 ;; 652 --enable-user-pie) user_pie="yes" 653 ;; 654 --disable-user-pie) user_pie="no" 655 ;; 656 --enable-uname-release=*) uname_release="$optarg" 657 ;; 658 --sparc_cpu=*) 659 ;; 660 --enable-werror) werror="yes" 661 ;; 662 --disable-werror) werror="no" 663 ;; 664 --disable-curses) curses="no" 665 ;; 666 --enable-curses) curses="yes" 667 ;; 668 --disable-curl) curl="no" 669 ;; 670 --enable-curl) curl="yes" 671 ;; 672 --disable-fdt) fdt="no" 673 ;; 674 --enable-fdt) fdt="yes" 675 ;; 676 --disable-check-utests) check_utests="no" 677 ;; 678 --enable-check-utests) check_utests="yes" 679 ;; 680 --disable-nptl) nptl="no" 681 ;; 682 --enable-nptl) nptl="yes" 683 ;; 684 --enable-mixemu) mixemu="yes" 685 ;; 686 --disable-linux-aio) linux_aio="no" 687 ;; 688 --enable-linux-aio) linux_aio="yes" 689 ;; 690 --disable-attr) attr="no" 691 ;; 692 --enable-attr) attr="yes" 693 ;; 694 --enable-io-thread) io_thread="yes" 695 ;; 696 --disable-blobs) blobs="no" 697 ;; 698 --kerneldir=*) kerneldir="$optarg" 699 ;; 700 --with-pkgversion=*) pkgversion=" ($optarg)" 701 ;; 702 --disable-docs) docs="no" 703 ;; 704 --enable-docs) docs="yes" 705 ;; 706 --disable-vhost-net) vhost_net="no" 707 ;; 708 --enable-vhost-net) vhost_net="yes" 709 ;; 710 --*dir) 711 ;; 712 *) echo "ERROR: unknown option $opt"; show_help="yes" 713 ;; 714 esac 715done 716 717# 718# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right 719# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit) 720# 721host_guest_base="no" 722case "$cpu" in 723 sparc) case $sparc_cpu in 724 v7|v8) 725 QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS" 726 ;; 727 v8plus|v8plusa) 728 QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS" 729 ;; 730 *) # sparc_cpu not defined in the command line 731 QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS" 732 esac 733 LDFLAGS="-m32 $LDFLAGS" 734 QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS" 735 if test "$solaris" = "no" ; then 736 QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS" 737 helper_cflags="-ffixed-i0" 738 fi 739 ;; 740 sparc64) 741 QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS" 742 LDFLAGS="-m64 $LDFLAGS" 743 QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS" 744 if test "$solaris" != "no" ; then 745 QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS" 746 fi 747 ;; 748 s390) 749 QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS" 750 LDFLAGS="-m31 $LDFLAGS" 751 host_guest_base="yes" 752 ;; 753 s390x) 754 QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS" 755 LDFLAGS="-m64 $LDFLAGS" 756 host_guest_base="yes" 757 ;; 758 i386) 759 QEMU_CFLAGS="-m32 $QEMU_CFLAGS" 760 LDFLAGS="-m32 $LDFLAGS" 761 helper_cflags="-fomit-frame-pointer" 762 host_guest_base="yes" 763 ;; 764 x86_64) 765 QEMU_CFLAGS="-m64 $QEMU_CFLAGS" 766 LDFLAGS="-m64 $LDFLAGS" 767 host_guest_base="yes" 768 ;; 769 arm*) 770 host_guest_base="yes" 771 ;; 772 ppc*) 773 host_guest_base="yes" 774 ;; 775 mips*) 776 host_guest_base="yes" 777 ;; 778 ia64*) 779 host_guest_base="yes" 780 ;; 781 hppa*) 782 host_guest_base="yes" 783 ;; 784esac 785 786[ -z "$guest_base" ] && guest_base="$host_guest_base" 787 788if test x"$show_help" = x"yes" ; then 789cat << EOF 790 791Usage: configure [options] 792Options: [defaults in brackets after descriptions] 793 794EOF 795echo "Standard options:" 796echo " --help print this message" 797echo " --prefix=PREFIX install in PREFIX [$prefix]" 798echo " --interp-prefix=PREFIX where to find shared libraries, etc." 799echo " use %M for cpu name [$interp_prefix]" 800echo " --target-list=LIST set target list [$target_list]" 801echo "" 802echo "Advanced options (experts only):" 803echo " --source-path=PATH path of source code [$source_path]" 804echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]" 805echo " --cc=CC use C compiler CC [$cc]" 806echo " --host-cc=CC use C compiler CC [$host_cc] for code run at" 807echo " build time" 808echo " --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS" 809echo " --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS" 810echo " --make=MAKE use specified make [$make]" 811echo " --install=INSTALL use specified install [$install]" 812echo " --static enable static build [$static]" 813echo " --mandir=PATH install man pages in PATH" 814echo " --datadir=PATH install firmware in PATH" 815echo " --docdir=PATH install documentation in PATH" 816echo " --bindir=PATH install binaries in PATH" 817echo " --sysconfdir=PATH install config in PATH/qemu" 818echo " --enable-debug-tcg enable TCG debugging" 819echo " --disable-debug-tcg disable TCG debugging (default)" 820echo " --enable-debug enable common debug build options" 821echo " --enable-sparse enable sparse checker" 822echo " --disable-sparse disable sparse checker (default)" 823echo " --disable-strip disable stripping binaries" 824echo " --disable-werror disable compilation abort on warning" 825echo " --disable-sdl disable SDL" 826echo " --enable-sdl enable SDL" 827echo " --enable-cocoa enable COCOA (Mac OS X only)" 828echo " --audio-drv-list=LIST set audio drivers list:" 829echo " Available drivers: $audio_possible_drivers" 830echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_list]" 831echo " Available cards: $audio_possible_cards" 832echo " --block-drv-whitelist=L set block driver whitelist" 833echo " (affects only QEMU, not qemu-img)" 834echo " --enable-mixemu enable mixer emulation" 835echo " --disable-xen disable xen backend driver support" 836echo " --enable-xen enable xen backend driver support" 837echo " --disable-brlapi disable BrlAPI" 838echo " --enable-brlapi enable BrlAPI" 839echo " --disable-vnc-tls disable TLS encryption for VNC server" 840echo " --enable-vnc-tls enable TLS encryption for VNC server" 841echo " --disable-vnc-sasl disable SASL encryption for VNC server" 842echo " --enable-vnc-sasl enable SASL encryption for VNC server" 843echo " --disable-vnc-jpeg disable JPEG lossy compression for VNC server" 844echo " --enable-vnc-jpeg enable JPEG lossy compression for VNC server" 845echo " --disable-vnc-png disable PNG compression for VNC server (default)" 846echo " --enable-vnc-png enable PNG compression for VNC server" 847echo " --disable-vnc-thread disable threaded VNC server" 848echo " --enable-vnc-thread enable threaded VNC server" 849echo " --disable-curses disable curses output" 850echo " --enable-curses enable curses output" 851echo " --disable-curl disable curl connectivity" 852echo " --enable-curl enable curl connectivity" 853echo " --disable-fdt disable fdt device tree" 854echo " --enable-fdt enable fdt device tree" 855echo " --disable-check-utests disable check unit-tests" 856echo " --enable-check-utests enable check unit-tests" 857echo " --disable-bluez disable bluez stack connectivity" 858echo " --enable-bluez enable bluez stack connectivity" 859echo " --disable-kvm disable KVM acceleration support" 860echo " --enable-kvm enable KVM acceleration support" 861echo " --disable-nptl disable usermode NPTL support" 862echo " --enable-nptl enable usermode NPTL support" 863echo " --enable-system enable all system emulation targets" 864echo " --disable-system disable all system emulation targets" 865echo " --enable-user enable supported user emulation targets" 866echo " --disable-user disable all user emulation targets" 867echo " --enable-linux-user enable all linux usermode emulation targets" 868echo " --disable-linux-user disable all linux usermode emulation targets" 869echo " --enable-darwin-user enable all darwin usermode emulation targets" 870echo " --disable-darwin-user disable all darwin usermode emulation targets" 871echo " --enable-bsd-user enable all BSD usermode emulation targets" 872echo " --disable-bsd-user disable all BSD usermode emulation targets" 873echo " --enable-guest-base enable GUEST_BASE support for usermode" 874echo " emulation targets" 875echo " --disable-guest-base disable GUEST_BASE support" 876echo " --enable-user-pie build usermode emulation targets as PIE" 877echo " --disable-user-pie do not build usermode emulation targets as PIE" 878echo " --fmod-lib path to FMOD library" 879echo " --fmod-inc path to FMOD includes" 880echo " --oss-lib path to OSS library" 881echo " --enable-uname-release=R Return R for uname -r in usermode emulation" 882echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9" 883echo " --disable-uuid disable uuid support" 884echo " --enable-uuid enable uuid support" 885echo " --disable-vde disable support for vde network" 886echo " --enable-vde enable support for vde network" 887echo " --disable-linux-aio disable Linux AIO support" 888echo " --enable-linux-aio enable Linux AIO support" 889echo " --disable-attr disables attr and xattr support" 890echo " --enable-attr enable attr and xattr support" 891echo " --enable-io-thread enable IO thread" 892echo " --disable-blobs disable installing provided firmware blobs" 893echo " --kerneldir=PATH look for kernel includes in PATH" 894echo " --enable-docs enable documentation build" 895echo " --disable-docs disable documentation build" 896echo " --disable-vhost-net disable vhost-net acceleration support" 897echo " --enable-vhost-net enable vhost-net acceleration support" 898echo "" 899echo "NOTE: The object files are built at the place where configure is launched" 900exit 1 901fi 902 903# 904# Solaris specific configure tool chain decisions 905# 906if test "$solaris" = "yes" ; then 907 if has $install; then 908 : 909 else 910 echo "Solaris install program not found. Use --install=/usr/ucb/install or" 911 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils" 912 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)" 913 exit 1 914 fi 915 if test "`path_of $install`" = "/usr/sbin/install" ; then 916 echo "Error: Solaris /usr/sbin/install is not an appropriate install program." 917 echo "try ginstall from the GNU fileutils available from www.blastwave.org" 918 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 919 exit 1 920 fi 921 if has ar; then 922 : 923 else 924 echo "Error: No path includes ar" 925 if test -f /usr/ccs/bin/ar ; then 926 echo "Add /usr/ccs/bin to your path and rerun configure" 927 fi 928 exit 1 929 fi 930fi 931 932 933if test -z "$target_list" ; then 934# these targets are portable 935 if [ "$softmmu" = "yes" ] ; then 936 target_list="\ 937i386-softmmu \ 938x86_64-softmmu \ 939arm-softmmu \ 940cris-softmmu \ 941m68k-softmmu \ 942microblaze-softmmu \ 943mips-softmmu \ 944mipsel-softmmu \ 945mips64-softmmu \ 946mips64el-softmmu \ 947ppc-softmmu \ 948ppcemb-softmmu \ 949ppc64-softmmu \ 950sh4-softmmu \ 951sh4eb-softmmu \ 952sparc-softmmu \ 953sparc64-softmmu \ 954" 955 fi 956# the following are Linux specific 957 if [ "$linux_user" = "yes" ] ; then 958 target_list="${target_list}\ 959i386-linux-user \ 960x86_64-linux-user \ 961alpha-linux-user \ 962arm-linux-user \ 963armeb-linux-user \ 964cris-linux-user \ 965m68k-linux-user \ 966microblaze-linux-user \ 967mips-linux-user \ 968mipsel-linux-user \ 969ppc-linux-user \ 970ppc64-linux-user \ 971ppc64abi32-linux-user \ 972sh4-linux-user \ 973sh4eb-linux-user \ 974sparc-linux-user \ 975sparc64-linux-user \ 976sparc32plus-linux-user \ 977" 978 fi 979# the following are Darwin specific 980 if [ "$darwin_user" = "yes" ] ; then 981 target_list="$target_list i386-darwin-user ppc-darwin-user " 982 fi 983# the following are BSD specific 984 if [ "$bsd_user" = "yes" ] ; then 985 target_list="${target_list}\ 986i386-bsd-user \ 987x86_64-bsd-user \ 988sparc-bsd-user \ 989sparc64-bsd-user \ 990" 991 fi 992else 993 target_list=`echo "$target_list" | sed -e 's/,/ /g'` 994fi 995if test -z "$target_list" ; then 996 echo "No targets enabled" 997 exit 1 998fi 999# see if system emulation was really requested 1000case " $target_list " in 1001 *"-softmmu "*) softmmu=yes 1002 ;; 1003 *) softmmu=no 1004 ;; 1005esac 1006 1007feature_not_found() { 1008 feature=$1 1009 1010 echo "ERROR" 1011 echo "ERROR: User requested feature $feature" 1012 echo "ERROR: configure was not able to find it" 1013 echo "ERROR" 1014 exit 1; 1015} 1016 1017if test -z "$cross_prefix" ; then 1018 1019# --- 1020# big/little endian test 1021cat > $TMPC << EOF 1022#include <inttypes.h> 1023int main(int argc, char ** argv){ 1024 volatile uint32_t i=0x01234567; 1025 return (*((uint8_t*)(&i))) == 0x67; 1026} 1027EOF 1028 1029if compile_prog "" "" ; then 1030$TMPE && bigendian="yes" 1031else 1032echo big/little test failed 1033fi 1034 1035else 1036 1037# if cross compiling, cannot launch a program, so make a static guess 1038case "$cpu" in 1039 armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64) 1040 bigendian=yes 1041 ;; 1042esac 1043 1044fi 1045 1046# host long bits test 1047hostlongbits="32" 1048case "$cpu" in 1049 x86_64|alpha|ia64|sparc64|ppc64|s390x) 1050 hostlongbits=64 1051 ;; 1052esac 1053 1054 1055########################################## 1056# NPTL probe 1057 1058if test "$nptl" != "no" ; then 1059 cat > $TMPC <<EOF 1060#include <sched.h> 1061#include <linux/futex.h> 1062void foo() 1063{ 1064#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1065#error bork 1066#endif 1067} 1068EOF 1069 1070 if compile_object ; then 1071 nptl=yes 1072 else 1073 if test "$nptl" = "yes" ; then 1074 feature_not_found "nptl" 1075 fi 1076 nptl=no 1077 fi 1078fi 1079 1080########################################## 1081# zlib check 1082 1083cat > $TMPC << EOF 1084#include <zlib.h> 1085int main(void) { zlibVersion(); return 0; } 1086EOF 1087if compile_prog "" "-lz" ; then 1088 : 1089else 1090 echo 1091 echo "Error: zlib check failed" 1092 echo "Make sure to have the zlib libs and headers installed." 1093 echo 1094 exit 1 1095fi 1096 1097########################################## 1098# xen probe 1099 1100if test "$xen" != "no" ; then 1101 xen_libs="-lxenstore -lxenctrl -lxenguest" 1102 cat > $TMPC <<EOF 1103#include <xenctrl.h> 1104#include <xs.h> 1105int main(void) { xs_daemon_open(); xc_interface_open(); return 0; } 1106EOF 1107 if compile_prog "" "$xen_libs" ; then 1108 xen=yes 1109 libs_softmmu="$xen_libs $libs_softmmu" 1110 else 1111 if test "$xen" = "yes" ; then 1112 feature_not_found "xen" 1113 fi 1114 xen=no 1115 fi 1116fi 1117 1118########################################## 1119# pkgconfig probe 1120 1121pkgconfig="${cross_prefix}pkg-config" 1122if ! has $pkgconfig; then 1123 # likely not cross compiling, or hope for the best 1124 pkgconfig=pkg-config 1125fi 1126 1127########################################## 1128# Sparse probe 1129if test "$sparse" != "no" ; then 1130 if has cgcc; then 1131 sparse=yes 1132 else 1133 if test "$sparse" = "yes" ; then 1134 feature_not_found "sparse" 1135 fi 1136 sparse=no 1137 fi 1138fi 1139 1140########################################## 1141# SDL probe 1142 1143# Look for sdl configuration program (pkg-config or sdl-config). 1144# Prefer variant with cross prefix if cross compiling, 1145# and favour pkg-config with sdl over sdl-config. 1146if test -n "$cross_prefix" -a $pkgconfig != pkg-config && \ 1147 $pkgconfig sdl --modversion >/dev/null 2>&1; then 1148 sdlconfig="$pkgconfig sdl" 1149 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 1150elif test -n "$cross_prefix" && has ${cross_prefix}sdl-config; then 1151 sdlconfig="${cross_prefix}sdl-config" 1152 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 1153elif $pkgconfig sdl --modversion >/dev/null 2>&1; then 1154 sdlconfig="$pkgconfig sdl" 1155 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 1156elif has sdl-config; then 1157 sdlconfig='sdl-config' 1158 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 1159else 1160 if test "$sdl" = "yes" ; then 1161 feature_not_found "sdl" 1162 fi 1163 sdl=no 1164fi 1165 1166sdl_too_old=no 1167if test "$sdl" != "no" ; then 1168 cat > $TMPC << EOF 1169#include <SDL.h> 1170#undef main /* We don't want SDL to override our main() */ 1171int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 1172EOF 1173 sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 1174 if test "$static" = "yes" ; then 1175 sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 1176 else 1177 sdl_libs=`$sdlconfig --libs 2> /dev/null` 1178 fi 1179 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1180 if test "$_sdlversion" -lt 121 ; then 1181 sdl_too_old=yes 1182 else 1183 if test "$cocoa" = "no" ; then 1184 sdl=yes 1185 fi 1186 fi 1187 1188 # static link with sdl ? (note: sdl.pc's --static --libs is broken) 1189 if test "$sdl" = "yes" -a "$static" = "yes" ; then 1190 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 1191 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 1192 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 1193 fi 1194 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1195 : 1196 else 1197 sdl=no 1198 fi 1199 fi # static link 1200 else # sdl not found 1201 if test "$sdl" = "yes" ; then 1202 feature_not_found "sdl" 1203 fi 1204 sdl=no 1205 fi # sdl compile test 1206fi 1207 1208if test "$sdl" = "yes" ; then 1209 cat > $TMPC <<EOF 1210#include <SDL.h> 1211#if defined(SDL_VIDEO_DRIVER_X11) 1212#include <X11/XKBlib.h> 1213#else 1214#error No x11 support 1215#endif 1216int main(void) { return 0; } 1217EOF 1218 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1219 sdl_libs="$sdl_libs -lX11" 1220 fi 1221 if test "$mingw32" = "yes" ; then 1222 sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole" 1223 fi 1224 libs_softmmu="$sdl_libs $libs_softmmu" 1225fi 1226 1227########################################## 1228# VNC TLS detection 1229if test "$vnc_tls" != "no" ; then 1230 cat > $TMPC <<EOF 1231#include <gnutls/gnutls.h> 1232int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 1233EOF 1234 vnc_tls_cflags=`$pkgconfig --cflags gnutls 2> /dev/null` 1235 vnc_tls_libs=`$pkgconfig --libs gnutls 2> /dev/null` 1236 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then 1237 vnc_tls=yes 1238 libs_softmmu="$vnc_tls_libs $libs_softmmu" 1239 else 1240 if test "$vnc_tls" = "yes" ; then 1241 feature_not_found "vnc-tls" 1242 fi 1243 vnc_tls=no 1244 fi 1245fi 1246 1247########################################## 1248# VNC SASL detection 1249if test "$vnc_sasl" != "no" ; then 1250 cat > $TMPC <<EOF 1251#include <sasl/sasl.h> 1252#include <stdio.h> 1253int main(void) { sasl_server_init(NULL, "qemu"); return 0; } 1254EOF 1255 # Assuming Cyrus-SASL installed in /usr prefix 1256 vnc_sasl_cflags="" 1257 vnc_sasl_libs="-lsasl2" 1258 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 1259 vnc_sasl=yes 1260 libs_softmmu="$vnc_sasl_libs $libs_softmmu" 1261 else 1262 if test "$vnc_sasl" = "yes" ; then 1263 feature_not_found "vnc-sasl" 1264 fi 1265 vnc_sasl=no 1266 fi 1267fi 1268 1269########################################## 1270# VNC JPEG detection 1271if test "$vnc_jpeg" != "no" ; then 1272cat > $TMPC <<EOF 1273#include <stdio.h> 1274#include <jpeglib.h> 1275int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 1276EOF 1277 vnc_jpeg_cflags="" 1278 vnc_jpeg_libs="-ljpeg" 1279 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 1280 vnc_jpeg=yes 1281 libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 1282 else 1283 if test "$vnc_jpeg" = "yes" ; then 1284 feature_not_found "vnc-jpeg" 1285 fi 1286 vnc_jpeg=no 1287 fi 1288fi 1289 1290########################################## 1291# VNC PNG detection 1292if test "$vnc_png" != "no" ; then 1293cat > $TMPC <<EOF 1294//#include <stdio.h> 1295#include <png.h> 1296int main(void) { 1297 png_structp png_ptr; 1298 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 1299 return 0; 1300} 1301EOF 1302 vnc_png_cflags="" 1303 vnc_png_libs="-lpng" 1304 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 1305 vnc_png=yes 1306 libs_softmmu="$vnc_png_libs $libs_softmmu" 1307 else 1308 if test "$vnc_png" = "yes" ; then 1309 feature_not_found "vnc-png" 1310 fi 1311 vnc_png=no 1312 fi 1313fi 1314 1315########################################## 1316# fnmatch() probe, used for ACL routines 1317fnmatch="no" 1318cat > $TMPC << EOF 1319#include <fnmatch.h> 1320int main(void) 1321{ 1322 fnmatch("foo", "foo", 0); 1323 return 0; 1324} 1325EOF 1326if compile_prog "" "" ; then 1327 fnmatch="yes" 1328fi 1329 1330########################################## 1331# uuid_generate() probe, used for vdi block driver 1332if test "$uuid" != "no" ; then 1333 uuid_libs="-luuid" 1334 cat > $TMPC << EOF 1335#include <uuid/uuid.h> 1336int main(void) 1337{ 1338 uuid_t my_uuid; 1339 uuid_generate(my_uuid); 1340 return 0; 1341} 1342EOF 1343 if compile_prog "" "$uuid_libs" ; then 1344 uuid="yes" 1345 libs_softmmu="$uuid_libs $libs_softmmu" 1346 libs_tools="$uuid_libs $libs_tools" 1347 else 1348 if test "$uuid" = "yes" ; then 1349 feature_not_found "uuid" 1350 fi 1351 uuid=no 1352 fi 1353fi 1354 1355########################################## 1356# vde libraries probe 1357if test "$vde" != "no" ; then 1358 vde_libs="-lvdeplug" 1359 cat > $TMPC << EOF 1360#include <libvdeplug.h> 1361int main(void) 1362{ 1363 struct vde_open_args a = {0, 0, 0}; 1364 vde_open("", "", &a); 1365 return 0; 1366} 1367EOF 1368 if compile_prog "" "$vde_libs" ; then 1369 vde=yes 1370 libs_softmmu="$vde_libs $libs_softmmu" 1371 libs_tools="$vde_libs $libs_tools" 1372 else 1373 if test "$vde" = "yes" ; then 1374 feature_not_found "vde" 1375 fi 1376 vde=no 1377 fi 1378fi 1379 1380########################################## 1381# Sound support libraries probe 1382 1383audio_drv_probe() 1384{ 1385 drv=$1 1386 hdr=$2 1387 lib=$3 1388 exp=$4 1389 cfl=$5 1390 cat > $TMPC << EOF 1391#include <$hdr> 1392int main(void) { $exp } 1393EOF 1394 if compile_prog "$cfl" "$lib" ; then 1395 : 1396 else 1397 echo 1398 echo "Error: $drv check failed" 1399 echo "Make sure to have the $drv libs and headers installed." 1400 echo 1401 exit 1 1402 fi 1403} 1404 1405audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 1406for drv in $audio_drv_list; do 1407 case $drv in 1408 alsa) 1409 audio_drv_probe $drv alsa/asoundlib.h -lasound \ 1410 "snd_pcm_t **handle; return snd_pcm_close(*handle);" 1411 libs_softmmu="-lasound $libs_softmmu" 1412 ;; 1413 1414 fmod) 1415 if test -z $fmod_lib || test -z $fmod_inc; then 1416 echo 1417 echo "Error: You must specify path to FMOD library and headers" 1418 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so" 1419 echo 1420 exit 1 1421 fi 1422 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc" 1423 libs_softmmu="$fmod_lib $libs_softmmu" 1424 ;; 1425 1426 esd) 1427 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);' 1428 libs_softmmu="-lesd $libs_softmmu" 1429 audio_pt_int="yes" 1430 ;; 1431 1432 pa) 1433 audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \ 1434 "pa_simple *s = NULL; pa_simple_free(s); return 0;" 1435 libs_softmmu="-lpulse -lpulse-simple $libs_softmmu" 1436 audio_pt_int="yes" 1437 ;; 1438 1439 coreaudio) 1440 libs_softmmu="-framework CoreAudio $libs_softmmu" 1441 ;; 1442 1443 dsound) 1444 libs_softmmu="-lole32 -ldxguid $libs_softmmu" 1445 audio_win_int="yes" 1446 ;; 1447 1448 oss) 1449 libs_softmmu="$oss_lib $libs_softmmu" 1450 ;; 1451 1452 sdl|wav) 1453 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 1454 ;; 1455 1456 winwave) 1457 libs_softmmu="-lwinmm $libs_softmmu" 1458 audio_win_int="yes" 1459 ;; 1460 1461 *) 1462 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 1463 echo 1464 echo "Error: Unknown driver '$drv' selected" 1465 echo "Possible drivers are: $audio_possible_drivers" 1466 echo 1467 exit 1 1468 } 1469 ;; 1470 esac 1471done 1472 1473########################################## 1474# BrlAPI probe 1475 1476if test "$brlapi" != "no" ; then 1477 brlapi_libs="-lbrlapi" 1478 cat > $TMPC << EOF 1479#include <brlapi.h> 1480int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 1481EOF 1482 if compile_prog "" "$brlapi_libs" ; then 1483 brlapi=yes 1484 libs_softmmu="$brlapi_libs $libs_softmmu" 1485 else 1486 if test "$brlapi" = "yes" ; then 1487 feature_not_found "brlapi" 1488 fi 1489 brlapi=no 1490 fi 1491fi 1492 1493########################################## 1494# curses probe 1495curses_list="-lncurses -lcurses" 1496 1497if test "$curses" != "no" ; then 1498 curses_found=no 1499 cat > $TMPC << EOF 1500#include <curses.h> 1501#ifdef __OpenBSD__ 1502#define resize_term resizeterm 1503#endif 1504int main(void) { resize_term(0, 0); return curses_version(); } 1505EOF 1506 for curses_lib in $curses_list; do 1507 if compile_prog "" "$curses_lib" ; then 1508 curses_found=yes 1509 libs_softmmu="$curses_lib $libs_softmmu" 1510 break 1511 fi 1512 done 1513 if test "$curses_found" = "yes" ; then 1514 curses=yes 1515 else 1516 if test "$curses" = "yes" ; then 1517 feature_not_found "curses" 1518 fi 1519 curses=no 1520 fi 1521fi 1522 1523########################################## 1524# curl probe 1525 1526if $pkgconfig libcurl --modversion >/dev/null 2>&1; then 1527 curlconfig="$pkgconfig libcurl" 1528else 1529 curlconfig=curl-config 1530fi 1531 1532if test "$curl" != "no" ; then 1533 cat > $TMPC << EOF 1534#include <curl/curl.h> 1535int main(void) { return curl_easy_init(); } 1536EOF 1537 curl_cflags=`$curlconfig --cflags 2>/dev/null` 1538 curl_libs=`$curlconfig --libs 2>/dev/null` 1539 if compile_prog "$curl_cflags" "$curl_libs" ; then 1540 curl=yes 1541 libs_tools="$curl_libs $libs_tools" 1542 libs_softmmu="$curl_libs $libs_softmmu" 1543 else 1544 if test "$curl" = "yes" ; then 1545 feature_not_found "curl" 1546 fi 1547 curl=no 1548 fi 1549fi # test "$curl" 1550 1551########################################## 1552# check framework probe 1553 1554if test "$check_utests" != "no" ; then 1555 cat > $TMPC << EOF 1556#include <check.h> 1557int main(void) { suite_create("qemu test"); return 0; } 1558EOF 1559 check_libs=`$pkgconfig --libs check` 1560 if compile_prog "" $check_libs ; then 1561 check_utests=yes 1562 libs_tools="$check_libs $libs_tools" 1563 else 1564 if test "$check_utests" = "yes" ; then 1565 feature_not_found "check" 1566 fi 1567 check_utests=no 1568 fi 1569fi # test "$check_utests" 1570 1571########################################## 1572# bluez support probe 1573if test "$bluez" != "no" ; then 1574 cat > $TMPC << EOF 1575#include <bluetooth/bluetooth.h> 1576int main(void) { return bt_error(0); } 1577EOF 1578 bluez_cflags=`$pkgconfig --cflags bluez 2> /dev/null` 1579 bluez_libs=`$pkgconfig --libs bluez 2> /dev/null` 1580 if compile_prog "$bluez_cflags" "$bluez_libs" ; then 1581 bluez=yes 1582 libs_softmmu="$bluez_libs $libs_softmmu" 1583 else 1584 if test "$bluez" = "yes" ; then 1585 feature_not_found "bluez" 1586 fi 1587 bluez="no" 1588 fi 1589fi 1590 1591########################################## 1592# kvm probe 1593if test "$kvm" != "no" ; then 1594 cat > $TMPC <<EOF 1595#include <linux/kvm.h> 1596#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12 1597#error Invalid KVM version 1598#endif 1599#if !defined(KVM_CAP_USER_MEMORY) 1600#error Missing KVM capability KVM_CAP_USER_MEMORY 1601#endif 1602#if !defined(KVM_CAP_SET_TSS_ADDR) 1603#error Missing KVM capability KVM_CAP_SET_TSS_ADDR 1604#endif 1605#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS) 1606#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS 1607#endif 1608int main(void) { return 0; } 1609EOF 1610 if test "$kerneldir" != "" ; then 1611 kvm_cflags=-I"$kerneldir"/include 1612 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \ 1613 -a -d "$kerneldir/arch/x86/include" ; then 1614 kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include" 1615 elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then 1616 kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include" 1617 elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then 1618 kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include" 1619 elif test -d "$kerneldir/arch/$cpu/include" ; then 1620 kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include" 1621 fi 1622 else 1623 kvm_cflags=`$pkgconfig --cflags kvm-kmod 2>/dev/null` 1624 fi 1625 if compile_prog "$kvm_cflags" "" ; then 1626 kvm=yes 1627 cat > $TMPC <<EOF 1628#include <linux/kvm_para.h> 1629int main(void) { return 0; } 1630EOF 1631 if compile_prog "$kvm_cflags" "" ; then 1632 kvm_para=yes 1633 fi 1634 else 1635 if test "$kvm" = "yes" ; then 1636 if has awk && has grep; then 1637 kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \ 1638 | grep "error: " \ 1639 | awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'` 1640 if test "$kvmerr" != "" ; then 1641 echo -e "${kvmerr}\n\ 1642 NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \ 1643 recent kvm-kmod from http://sourceforge.net/projects/kvm." 1644 fi 1645 fi 1646 feature_not_found "kvm" 1647 fi 1648 kvm=no 1649 fi 1650fi 1651 1652########################################## 1653# test for vhost net 1654 1655if test "$vhost_net" != "no"; then 1656 if test "$kvm" != "no"; then 1657 cat > $TMPC <<EOF 1658 #include <linux/vhost.h> 1659 int main(void) { return 0; } 1660EOF 1661 if compile_prog "$kvm_cflags" "" ; then 1662 vhost_net=yes 1663 else 1664 if test "$vhost_net" = "yes" ; then 1665 feature_not_found "vhost-net" 1666 fi 1667 vhost_net=no 1668 fi 1669 else 1670 if test "$vhost_net" = "yes" ; then 1671 echo "NOTE: vhost-net feature requires KVM (--enable-kvm)." 1672 feature_not_found "vhost-net" 1673 fi 1674 vhost_net=no 1675 fi 1676fi 1677 1678########################################## 1679# pthread probe 1680PTHREADLIBS_LIST="-lpthread -lpthreadGC2" 1681 1682pthread=no 1683cat > $TMPC << EOF 1684#include <pthread.h> 1685int main(void) { pthread_create(0,0,0,0); return 0; } 1686EOF 1687for pthread_lib in $PTHREADLIBS_LIST; do 1688 if compile_prog "" "$pthread_lib" ; then 1689 pthread=yes 1690 LIBS="$pthread_lib $LIBS" 1691 break 1692 fi 1693done 1694 1695if test "$mingw32" != yes -a "$pthread" = no; then 1696 echo 1697 echo "Error: pthread check failed" 1698 echo "Make sure to have the pthread libs and headers installed." 1699 echo 1700 exit 1 1701fi 1702 1703########################################## 1704# linux-aio probe 1705 1706if test "$linux_aio" != "no" ; then 1707 cat > $TMPC <<EOF 1708#include <libaio.h> 1709#include <sys/eventfd.h> 1710int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 1711EOF 1712 if compile_prog "" "-laio" ; then 1713 linux_aio=yes 1714 libs_softmmu="$libs_softmmu -laio" 1715 libs_tools="$libs_tools -laio" 1716 else 1717 if test "$linux_aio" = "yes" ; then 1718 feature_not_found "linux AIO" 1719 fi 1720 linux_aio=no 1721 fi 1722fi 1723 1724########################################## 1725# attr probe 1726 1727if test "$attr" != "no" ; then 1728 cat > $TMPC <<EOF 1729#include <stdio.h> 1730#include <sys/types.h> 1731#include <attr/xattr.h> 1732int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 1733EOF 1734 if compile_prog "" "-lattr" ; then 1735 attr=yes 1736 LIBS="-lattr $LIBS" 1737 else 1738 if test "$attr" = "yes" ; then 1739 feature_not_found "ATTR" 1740 fi 1741 attr=no 1742 fi 1743fi 1744 1745########################################## 1746# iovec probe 1747cat > $TMPC <<EOF 1748#include <sys/types.h> 1749#include <sys/uio.h> 1750#include <unistd.h> 1751int main(void) { struct iovec iov; return 0; } 1752EOF 1753iovec=no 1754if compile_prog "" "" ; then 1755 iovec=yes 1756fi 1757 1758########################################## 1759# preadv probe 1760cat > $TMPC <<EOF 1761#include <sys/types.h> 1762#include <sys/uio.h> 1763#include <unistd.h> 1764int main(void) { preadv; } 1765EOF 1766preadv=no 1767if compile_prog "" "" ; then 1768 preadv=yes 1769fi 1770 1771########################################## 1772# fdt probe 1773if test "$fdt" != "no" ; then 1774 fdt_libs="-lfdt" 1775 cat > $TMPC << EOF 1776int main(void) { return 0; } 1777EOF 1778 if compile_prog "" "$fdt_libs" ; then 1779 fdt=yes 1780 libs_softmmu="$fdt_libs $libs_softmmu" 1781 else 1782 if test "$fdt" = "yes" ; then 1783 feature_not_found "fdt" 1784 fi 1785 fdt=no 1786 fi 1787fi 1788 1789# 1790# Check for xxxat() functions when we are building linux-user 1791# emulator. This is done because older glibc versions don't 1792# have syscall stubs for these implemented. 1793# 1794atfile=no 1795cat > $TMPC << EOF 1796#define _ATFILE_SOURCE 1797#include <sys/types.h> 1798#include <fcntl.h> 1799#include <unistd.h> 1800 1801int 1802main(void) 1803{ 1804 /* try to unlink nonexisting file */ 1805 return (unlinkat(AT_FDCWD, "nonexistent_file", 0)); 1806} 1807EOF 1808if compile_prog "" "" ; then 1809 atfile=yes 1810fi 1811 1812# Check for inotify functions when we are building linux-user 1813# emulator. This is done because older glibc versions don't 1814# have syscall stubs for these implemented. In that case we 1815# don't provide them even if kernel supports them. 1816# 1817inotify=no 1818cat > $TMPC << EOF 1819#include <sys/inotify.h> 1820 1821int 1822main(void) 1823{ 1824 /* try to start inotify */ 1825 return inotify_init(); 1826} 1827EOF 1828if compile_prog "" "" ; then 1829 inotify=yes 1830fi 1831 1832inotify1=no 1833cat > $TMPC << EOF 1834#include <sys/inotify.h> 1835 1836int 1837main(void) 1838{ 1839 /* try to start inotify */ 1840 return inotify_init1(0); 1841} 1842EOF 1843if compile_prog "" "" ; then 1844 inotify1=yes 1845fi 1846 1847# check if utimensat and futimens are supported 1848utimens=no 1849cat > $TMPC << EOF 1850#define _ATFILE_SOURCE 1851#define _GNU_SOURCE 1852#include <stddef.h> 1853#include <fcntl.h> 1854 1855int main(void) 1856{ 1857 utimensat(AT_FDCWD, "foo", NULL, 0); 1858 futimens(0, NULL); 1859 return 0; 1860} 1861EOF 1862if compile_prog "" "" ; then 1863 utimens=yes 1864fi 1865 1866# check if pipe2 is there 1867pipe2=no 1868cat > $TMPC << EOF 1869#define _GNU_SOURCE 1870#include <unistd.h> 1871#include <fcntl.h> 1872 1873int main(void) 1874{ 1875 int pipefd[2]; 1876 pipe2(pipefd, O_CLOEXEC); 1877 return 0; 1878} 1879EOF 1880if compile_prog "" "" ; then 1881 pipe2=yes 1882fi 1883 1884# check if accept4 is there 1885accept4=no 1886cat > $TMPC << EOF 1887#define _GNU_SOURCE 1888#include <sys/socket.h> 1889#include <stddef.h> 1890 1891int main(void) 1892{ 1893 accept4(0, NULL, NULL, SOCK_CLOEXEC); 1894 return 0; 1895} 1896EOF 1897if compile_prog "" "" ; then 1898 accept4=yes 1899fi 1900 1901# check if tee/splice is there. vmsplice was added same time. 1902splice=no 1903cat > $TMPC << EOF 1904#define _GNU_SOURCE 1905#include <unistd.h> 1906#include <fcntl.h> 1907#include <limits.h> 1908 1909int main(void) 1910{ 1911 int len, fd; 1912 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 1913 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 1914 return 0; 1915} 1916EOF 1917if compile_prog "" "" ; then 1918 splice=yes 1919fi 1920 1921# check if eventfd is supported 1922eventfd=no 1923cat > $TMPC << EOF 1924#include <sys/eventfd.h> 1925 1926int main(void) 1927{ 1928 int efd = eventfd(0, 0); 1929 return 0; 1930} 1931EOF 1932if compile_prog "" "" ; then 1933 eventfd=yes 1934fi 1935 1936# check for fallocate 1937fallocate=no 1938cat > $TMPC << EOF 1939#include <fcntl.h> 1940 1941int main(void) 1942{ 1943 fallocate(0, 0, 0, 0); 1944 return 0; 1945} 1946EOF 1947if compile_prog "$ARCH_CFLAGS" "" ; then 1948 fallocate=yes 1949fi 1950 1951# check for dup3 1952dup3=no 1953cat > $TMPC << EOF 1954#include <unistd.h> 1955 1956int main(void) 1957{ 1958 dup3(0, 0, 0); 1959 return 0; 1960} 1961EOF 1962if compile_prog "" "" ; then 1963 dup3=yes 1964fi 1965 1966# Check if tools are available to build documentation. 1967if test "$docs" != "no" ; then 1968 if has makeinfo && has pod2man; then 1969 docs=yes 1970 else 1971 if test "$docs" = "yes" ; then 1972 feature_not_found "docs" 1973 fi 1974 docs=no 1975 fi 1976fi 1977 1978# Search for bswap_32 function 1979byteswap_h=no 1980cat > $TMPC << EOF 1981#include <byteswap.h> 1982int main(void) { return bswap_32(0); } 1983EOF 1984if compile_prog "" "" ; then 1985 byteswap_h=yes 1986fi 1987 1988# Search for bswap_32 function 1989bswap_h=no 1990cat > $TMPC << EOF 1991#include <sys/endian.h> 1992#include <sys/types.h> 1993#include <machine/bswap.h> 1994int main(void) { return bswap32(0); } 1995EOF 1996if compile_prog "" "" ; then 1997 bswap_h=yes 1998fi 1999 2000########################################## 2001# Do we need librt 2002cat > $TMPC <<EOF 2003#include <signal.h> 2004#include <time.h> 2005int main(void) { clockid_t id; return clock_gettime(id, NULL); } 2006EOF 2007 2008if compile_prog "" "" ; then 2009 : 2010elif compile_prog "" "-lrt" ; then 2011 LIBS="-lrt $LIBS" 2012fi 2013 2014if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 2015 "$aix" != "yes" ; then 2016 libs_softmmu="-lutil $libs_softmmu" 2017fi 2018 2019########################################## 2020# check if the compiler defines offsetof 2021 2022need_offsetof=yes 2023cat > $TMPC << EOF 2024#include <stddef.h> 2025int main(void) { struct s { int f; }; return offsetof(struct s, f); } 2026EOF 2027if compile_prog "" "" ; then 2028 need_offsetof=no 2029fi 2030 2031########################################## 2032# check if the compiler understands attribute warn_unused_result 2033# 2034# This could be smarter, but gcc -Werror does not error out even when warning 2035# about attribute warn_unused_result 2036 2037gcc_attribute_warn_unused_result=no 2038cat > $TMPC << EOF 2039#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4) 2040#error gcc 3.3 or older 2041#endif 2042int main(void) { return 0;} 2043EOF 2044if compile_prog "" ""; then 2045 gcc_attribute_warn_unused_result=yes 2046fi 2047 2048########################################## 2049# check if we have fdatasync 2050 2051fdatasync=no 2052cat > $TMPC << EOF 2053#include <unistd.h> 2054int main(void) { return fdatasync(0); } 2055EOF 2056if compile_prog "" "" ; then 2057 fdatasync=yes 2058fi 2059 2060# End of CC checks 2061# After here, no more $cc or $ld runs 2062 2063if test "$debug" = "no" ; then 2064 CFLAGS="-O2 $CFLAGS" 2065fi 2066 2067# Consult white-list to determine whether to enable werror 2068# by default. Only enable by default for git builds 2069z_version=`cut -f3 -d. $source_path/VERSION` 2070 2071if test -z "$werror" ; then 2072 if test "$z_version" = "50" -a \ 2073 "$linux" = "yes" ; then 2074 werror="yes" 2075 else 2076 werror="no" 2077 fi 2078fi 2079 2080# Disable zero malloc errors for official releases unless explicitly told to 2081# enable/disable 2082if test -z "$zero_malloc" ; then 2083 if test "$z_version" = "50" ; then 2084 zero_malloc="no" 2085 else 2086 zero_malloc="yes" 2087 fi 2088fi 2089 2090if test "$werror" = "yes" ; then 2091 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 2092fi 2093 2094if test "$solaris" = "no" ; then 2095 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 2096 LDFLAGS="-Wl,--warn-common $LDFLAGS" 2097 fi 2098fi 2099 2100confdir=$sysconfdir$confsuffix 2101 2102tools= 2103if test "$softmmu" = yes ; then 2104 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 2105 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 2106 tools="qemu-nbd\$(EXESUF) $tools" 2107 if [ "$check_utests" = "yes" ]; then 2108 tools="check-qint check-qstring check-qdict check-qlist $tools" 2109 tools="check-qfloat check-qjson $tools" 2110 fi 2111 fi 2112fi 2113 2114# Mac OS X ships with a broken assembler 2115roms= 2116if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 2117 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 2118 "$softmmu" = yes ; then 2119 roms="optionrom" 2120fi 2121 2122 2123echo "Install prefix $prefix" 2124echo "BIOS directory `eval echo $datadir`" 2125echo "binary directory `eval echo $bindir`" 2126echo "config directory `eval echo $sysconfdir`" 2127if test "$mingw32" = "no" ; then 2128echo "Manual directory `eval echo $mandir`" 2129echo "ELF interp prefix $interp_prefix" 2130fi 2131echo "Source path $source_path" 2132echo "C compiler $cc" 2133echo "Host C compiler $host_cc" 2134echo "CFLAGS $CFLAGS" 2135echo "QEMU_CFLAGS $QEMU_CFLAGS" 2136echo "LDFLAGS $LDFLAGS" 2137echo "make $make" 2138echo "install $install" 2139echo "host CPU $cpu" 2140echo "host big endian $bigendian" 2141echo "target list $target_list" 2142echo "tcg debug enabled $debug_tcg" 2143echo "Mon debug enabled $debug_mon" 2144echo "gprof enabled $gprof" 2145echo "sparse enabled $sparse" 2146echo "strip binaries $strip_opt" 2147echo "profiler $profiler" 2148echo "static build $static" 2149echo "-Werror enabled $werror" 2150if test "$darwin" = "yes" ; then 2151 echo "Cocoa support $cocoa" 2152fi 2153echo "SDL support $sdl" 2154echo "curses support $curses" 2155echo "curl support $curl" 2156echo "check support $check_utests" 2157echo "mingw32 support $mingw32" 2158echo "Audio drivers $audio_drv_list" 2159echo "Extra audio cards $audio_card_list" 2160echo "Block whitelist $block_drv_whitelist" 2161echo "Mixer emulation $mixemu" 2162echo "VNC TLS support $vnc_tls" 2163echo "VNC SASL support $vnc_sasl" 2164echo "VNC JPEG support $vnc_jpeg" 2165echo "VNC PNG support $vnc_png" 2166echo "VNC thread $vnc_thread" 2167if test -n "$sparc_cpu"; then 2168 echo "Target Sparc Arch $sparc_cpu" 2169fi 2170echo "xen support $xen" 2171echo "brlapi support $brlapi" 2172echo "bluez support $bluez" 2173echo "Documentation $docs" 2174[ ! -z "$uname_release" ] && \ 2175echo "uname -r $uname_release" 2176echo "NPTL support $nptl" 2177echo "GUEST_BASE $guest_base" 2178echo "PIE user targets $user_pie" 2179echo "vde support $vde" 2180echo "IO thread $io_thread" 2181echo "Linux AIO support $linux_aio" 2182echo "ATTR/XATTR support $attr" 2183echo "Install blobs $blobs" 2184echo "KVM support $kvm" 2185echo "fdt support $fdt" 2186echo "preadv support $preadv" 2187echo "fdatasync $fdatasync" 2188echo "uuid support $uuid" 2189echo "vhost-net support $vhost_net" 2190 2191if test $sdl_too_old = "yes"; then 2192echo "-> Your SDL version is too old - please upgrade to have SDL support" 2193fi 2194 2195config_host_mak="config-host.mak" 2196config_host_ld="config-host.ld" 2197 2198echo "# Automatically generated by configure - do not modify" > $config_host_mak 2199printf "# Configured with:" >> $config_host_mak 2200printf " '%s'" "$0" "$@" >> $config_host_mak 2201echo >> $config_host_mak 2202 2203echo "prefix=$prefix" >> $config_host_mak 2204echo "bindir=$bindir" >> $config_host_mak 2205echo "mandir=$mandir" >> $config_host_mak 2206echo "datadir=$datadir" >> $config_host_mak 2207echo "sysconfdir=$sysconfdir" >> $config_host_mak 2208echo "docdir=$docdir" >> $config_host_mak 2209echo "confdir=$confdir" >> $config_host_mak 2210 2211case "$cpu" in 2212 i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64) 2213 ARCH=$cpu 2214 ;; 2215 armv4b|armv4l) 2216 ARCH=arm 2217 ;; 2218esac 2219echo "ARCH=$ARCH" >> $config_host_mak 2220if test "$debug_tcg" = "yes" ; then 2221 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 2222fi 2223if test "$debug_mon" = "yes" ; then 2224 echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak 2225fi 2226if test "$debug" = "yes" ; then 2227 echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak 2228fi 2229if test "$strip_opt" = "yes" ; then 2230 echo "STRIP_OPT=-s" >> $config_host_mak 2231fi 2232if test "$bigendian" = "yes" ; then 2233 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 2234fi 2235echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak 2236if test "$mingw32" = "yes" ; then 2237 echo "CONFIG_WIN32=y" >> $config_host_mak 2238else 2239 echo "CONFIG_POSIX=y" >> $config_host_mak 2240fi 2241 2242if test "$linux" = "yes" ; then 2243 echo "CONFIG_LINUX=y" >> $config_host_mak 2244fi 2245 2246if test "$darwin" = "yes" ; then 2247 echo "CONFIG_DARWIN=y" >> $config_host_mak 2248fi 2249 2250if test "$aix" = "yes" ; then 2251 echo "CONFIG_AIX=y" >> $config_host_mak 2252fi 2253 2254if test "$solaris" = "yes" ; then 2255 echo "CONFIG_SOLARIS=y" >> $config_host_mak 2256 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 2257 if test "$needs_libsunmath" = "yes" ; then 2258 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 2259 fi 2260fi 2261if test "$static" = "yes" ; then 2262 echo "CONFIG_STATIC=y" >> $config_host_mak 2263fi 2264if test $profiler = "yes" ; then 2265 echo "CONFIG_PROFILER=y" >> $config_host_mak 2266fi 2267if test "$slirp" = "yes" ; then 2268 echo "CONFIG_SLIRP=y" >> $config_host_mak 2269 QEMU_CFLAGS="-I\$(SRC_PATH)/slirp $QEMU_CFLAGS" 2270fi 2271if test "$vde" = "yes" ; then 2272 echo "CONFIG_VDE=y" >> $config_host_mak 2273fi 2274for card in $audio_card_list; do 2275 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'` 2276 echo "$def=y" >> $config_host_mak 2277done 2278echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 2279for drv in $audio_drv_list; do 2280 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'` 2281 echo "$def=y" >> $config_host_mak 2282 if test "$drv" = "fmod"; then 2283 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 2284 fi 2285done 2286if test "$audio_pt_int" = "yes" ; then 2287 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 2288fi 2289if test "$audio_win_int" = "yes" ; then 2290 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 2291fi 2292echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak 2293if test "$mixemu" = "yes" ; then 2294 echo "CONFIG_MIXEMU=y" >> $config_host_mak 2295fi 2296if test "$vnc_tls" = "yes" ; then 2297 echo "CONFIG_VNC_TLS=y" >> $config_host_mak 2298 echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak 2299fi 2300if test "$vnc_sasl" = "yes" ; then 2301 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 2302 echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak 2303fi 2304if test "$vnc_jpeg" != "no" ; then 2305 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 2306 echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak 2307fi 2308if test "$vnc_png" != "no" ; then 2309 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 2310 echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak 2311fi 2312if test "$vnc_thread" != "no" ; then 2313 echo "CONFIG_VNC_THREAD=y" >> $config_host_mak 2314 echo "CONFIG_THREAD=y" >> $config_host_mak 2315fi 2316if test "$fnmatch" = "yes" ; then 2317 echo "CONFIG_FNMATCH=y" >> $config_host_mak 2318fi 2319if test "$uuid" = "yes" ; then 2320 echo "CONFIG_UUID=y" >> $config_host_mak 2321fi 2322qemu_version=`head $source_path/VERSION` 2323echo "VERSION=$qemu_version" >>$config_host_mak 2324echo "PKGVERSION=$pkgversion" >>$config_host_mak 2325echo "SRC_PATH=$source_path" >> $config_host_mak 2326echo "TARGET_DIRS=$target_list" >> $config_host_mak 2327if [ "$docs" = "yes" ] ; then 2328 echo "BUILD_DOCS=yes" >> $config_host_mak 2329fi 2330if test "$sdl" = "yes" ; then 2331 echo "CONFIG_SDL=y" >> $config_host_mak 2332 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 2333fi 2334if test "$cocoa" = "yes" ; then 2335 echo "CONFIG_COCOA=y" >> $config_host_mak 2336fi 2337if test "$curses" = "yes" ; then 2338 echo "CONFIG_CURSES=y" >> $config_host_mak 2339fi 2340if test "$atfile" = "yes" ; then 2341 echo "CONFIG_ATFILE=y" >> $config_host_mak 2342fi 2343if test "$utimens" = "yes" ; then 2344 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 2345fi 2346if test "$pipe2" = "yes" ; then 2347 echo "CONFIG_PIPE2=y" >> $config_host_mak 2348fi 2349if test "$accept4" = "yes" ; then 2350 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 2351fi 2352if test "$splice" = "yes" ; then 2353 echo "CONFIG_SPLICE=y" >> $config_host_mak 2354fi 2355if test "$eventfd" = "yes" ; then 2356 echo "CONFIG_EVENTFD=y" >> $config_host_mak 2357fi 2358if test "$fallocate" = "yes" ; then 2359 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 2360fi 2361if test "$dup3" = "yes" ; then 2362 echo "CONFIG_DUP3=y" >> $config_host_mak 2363fi 2364if test "$inotify" = "yes" ; then 2365 echo "CONFIG_INOTIFY=y" >> $config_host_mak 2366fi 2367if test "$inotify1" = "yes" ; then 2368 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 2369fi 2370if test "$byteswap_h" = "yes" ; then 2371 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 2372fi 2373if test "$bswap_h" = "yes" ; then 2374 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 2375fi 2376if test "$curl" = "yes" ; then 2377 echo "CONFIG_CURL=y" >> $config_host_mak 2378 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 2379fi 2380if test "$brlapi" = "yes" ; then 2381 echo "CONFIG_BRLAPI=y" >> $config_host_mak 2382fi 2383if test "$bluez" = "yes" ; then 2384 echo "CONFIG_BLUEZ=y" >> $config_host_mak 2385 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 2386fi 2387if test "$xen" = "yes" ; then 2388 echo "CONFIG_XEN=y" >> $config_host_mak 2389fi 2390if test "$io_thread" = "yes" ; then 2391 echo "CONFIG_IOTHREAD=y" >> $config_host_mak 2392 echo "CONFIG_THREAD=y" >> $config_host_mak 2393fi 2394if test "$linux_aio" = "yes" ; then 2395 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 2396fi 2397if test "$attr" = "yes" ; then 2398 echo "CONFIG_ATTR=y" >> $config_host_mak 2399fi 2400if test "$linux" = "yes" ; then 2401 if test "$attr" = "yes" ; then 2402 echo "CONFIG_VIRTFS=y" >> $config_host_mak 2403 fi 2404fi 2405if test "$blobs" = "yes" ; then 2406 echo "INSTALL_BLOBS=yes" >> $config_host_mak 2407fi 2408if test "$iovec" = "yes" ; then 2409 echo "CONFIG_IOVEC=y" >> $config_host_mak 2410fi 2411if test "$preadv" = "yes" ; then 2412 echo "CONFIG_PREADV=y" >> $config_host_mak 2413fi 2414if test "$fdt" = "yes" ; then 2415 echo "CONFIG_FDT=y" >> $config_host_mak 2416fi 2417if test "$need_offsetof" = "yes" ; then 2418 echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak 2419fi 2420if test "$gcc_attribute_warn_unused_result" = "yes" ; then 2421 echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak 2422fi 2423if test "$fdatasync" = "yes" ; then 2424 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 2425fi 2426 2427# XXX: suppress that 2428if [ "$bsd" = "yes" ] ; then 2429 echo "CONFIG_BSD=y" >> $config_host_mak 2430fi 2431 2432echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak 2433 2434if test "$zero_malloc" = "yes" ; then 2435 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 2436fi 2437 2438# USB host support 2439case "$usb" in 2440linux) 2441 echo "HOST_USB=linux" >> $config_host_mak 2442;; 2443bsd) 2444 echo "HOST_USB=bsd" >> $config_host_mak 2445;; 2446*) 2447 echo "HOST_USB=stub" >> $config_host_mak 2448;; 2449esac 2450 2451echo "TOOLS=$tools" >> $config_host_mak 2452echo "ROMS=$roms" >> $config_host_mak 2453echo "MAKE=$make" >> $config_host_mak 2454echo "INSTALL=$install" >> $config_host_mak 2455echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak 2456echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak 2457echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak 2458echo "CC=$cc" >> $config_host_mak 2459echo "HOST_CC=$host_cc" >> $config_host_mak 2460if test "$sparse" = "yes" ; then 2461 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 2462 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 2463 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 2464fi 2465echo "AR=$ar" >> $config_host_mak 2466echo "OBJCOPY=$objcopy" >> $config_host_mak 2467echo "LD=$ld" >> $config_host_mak 2468echo "CFLAGS=$CFLAGS" >> $config_host_mak 2469echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 2470echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak 2471echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 2472echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak 2473echo "ARLIBS_END=$arlibs_end" >> $config_host_mak 2474echo "LIBS+=$LIBS" >> $config_host_mak 2475echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 2476echo "EXESUF=$EXESUF" >> $config_host_mak 2477 2478# generate list of library paths for linker script 2479 2480$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld} 2481 2482if test -f ${config_host_ld}~ ; then 2483 if cmp -s $config_host_ld ${config_host_ld}~ ; then 2484 mv ${config_host_ld}~ $config_host_ld 2485 else 2486 rm ${config_host_ld}~ 2487 fi 2488fi 2489 2490for d in libdis libdis-user; do 2491 mkdir -p $d 2492 rm -f $d/Makefile 2493 ln -s $source_path/Makefile.dis $d/Makefile 2494 echo > $d/config.mak 2495done 2496if test "$static" = "no" -a "$user_pie" = "yes" ; then 2497 echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak 2498fi 2499 2500for target in $target_list; do 2501target_dir="$target" 2502config_target_mak=$target_dir/config-target.mak 2503target_arch2=`echo $target | cut -d '-' -f 1` 2504target_bigendian="no" 2505 2506case "$target_arch2" in 2507 armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus) 2508 target_bigendian=yes 2509 ;; 2510esac 2511target_softmmu="no" 2512target_user_only="no" 2513target_linux_user="no" 2514target_darwin_user="no" 2515target_bsd_user="no" 2516case "$target" in 2517 ${target_arch2}-softmmu) 2518 target_softmmu="yes" 2519 ;; 2520 ${target_arch2}-linux-user) 2521 if test "$linux" != "yes" ; then 2522 echo "ERROR: Target '$target' is only available on a Linux host" 2523 exit 1 2524 fi 2525 target_user_only="yes" 2526 target_linux_user="yes" 2527 ;; 2528 ${target_arch2}-darwin-user) 2529 if test "$darwin" != "yes" ; then 2530 echo "ERROR: Target '$target' is only available on a Darwin host" 2531 exit 1 2532 fi 2533 target_user_only="yes" 2534 target_darwin_user="yes" 2535 ;; 2536 ${target_arch2}-bsd-user) 2537 if test "$bsd" != "yes" ; then 2538 echo "ERROR: Target '$target' is only available on a BSD host" 2539 exit 1 2540 fi 2541 target_user_only="yes" 2542 target_bsd_user="yes" 2543 ;; 2544 *) 2545 echo "ERROR: Target '$target' not recognised" 2546 exit 1 2547 ;; 2548esac 2549 2550mkdir -p $target_dir 2551mkdir -p $target_dir/fpu 2552mkdir -p $target_dir/tcg 2553mkdir -p $target_dir/ide 2554if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then 2555 mkdir -p $target_dir/nwfpe 2556fi 2557 2558# 2559# don't use ln -sf as not all "ln -sf" over write the file/link 2560# 2561rm -f $target_dir/Makefile 2562ln -s $source_path/Makefile.target $target_dir/Makefile 2563 2564 2565echo "# Automatically generated by configure - do not modify" > $config_target_mak 2566 2567bflt="no" 2568target_nptl="no" 2569interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"` 2570echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 2571gdb_xml_files="" 2572 2573TARGET_ARCH="$target_arch2" 2574TARGET_BASE_ARCH="" 2575TARGET_ABI_DIR="" 2576 2577case "$target_arch2" in 2578 i386) 2579 target_phys_bits=32 2580 ;; 2581 x86_64) 2582 TARGET_BASE_ARCH=i386 2583 target_phys_bits=64 2584 ;; 2585 alpha) 2586 target_phys_bits=64 2587 target_nptl="yes" 2588 ;; 2589 arm|armeb) 2590 TARGET_ARCH=arm 2591 bflt="yes" 2592 target_nptl="yes" 2593 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 2594 target_phys_bits=32 2595 ;; 2596 cris) 2597 target_nptl="yes" 2598 target_phys_bits=32 2599 ;; 2600 m68k) 2601 bflt="yes" 2602 gdb_xml_files="cf-core.xml cf-fp.xml" 2603 target_phys_bits=32 2604 ;; 2605 microblaze) 2606 bflt="yes" 2607 target_nptl="yes" 2608 target_phys_bits=32 2609 ;; 2610 mips|mipsel) 2611 TARGET_ARCH=mips 2612 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 2613 target_nptl="yes" 2614 target_phys_bits=64 2615 ;; 2616 mipsn32|mipsn32el) 2617 TARGET_ARCH=mipsn32 2618 TARGET_BASE_ARCH=mips 2619 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 2620 target_phys_bits=64 2621 ;; 2622 mips64|mips64el) 2623 TARGET_ARCH=mips64 2624 TARGET_BASE_ARCH=mips 2625 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 2626 target_phys_bits=64 2627 ;; 2628 ppc) 2629 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 2630 target_phys_bits=32 2631 target_nptl="yes" 2632 ;; 2633 ppcemb) 2634 TARGET_BASE_ARCH=ppc 2635 TARGET_ABI_DIR=ppc 2636 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 2637 target_phys_bits=64 2638 target_nptl="yes" 2639 ;; 2640 ppc64) 2641 TARGET_BASE_ARCH=ppc 2642 TARGET_ABI_DIR=ppc 2643 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 2644 target_phys_bits=64 2645 ;; 2646 ppc64abi32) 2647 TARGET_ARCH=ppc64 2648 TARGET_BASE_ARCH=ppc 2649 TARGET_ABI_DIR=ppc 2650 echo "TARGET_ABI32=y" >> $config_target_mak 2651 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 2652 target_phys_bits=64 2653 ;; 2654 sh4|sh4eb) 2655 TARGET_ARCH=sh4 2656 bflt="yes" 2657 target_nptl="yes" 2658 target_phys_bits=32 2659 ;; 2660 sparc) 2661 target_phys_bits=64 2662 ;; 2663 sparc64) 2664 TARGET_BASE_ARCH=sparc 2665 target_phys_bits=64 2666 ;; 2667 sparc32plus) 2668 TARGET_ARCH=sparc64 2669 TARGET_BASE_ARCH=sparc 2670 TARGET_ABI_DIR=sparc 2671 echo "TARGET_ABI32=y" >> $config_target_mak 2672 target_phys_bits=64 2673 ;; 2674 s390x) 2675 target_phys_bits=64 2676 ;; 2677 *) 2678 echo "Unsupported target CPU" 2679 exit 1 2680 ;; 2681esac 2682echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak 2683target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`" 2684echo "TARGET_$target_arch_name=y" >> $config_target_mak 2685echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak 2686# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 2687if [ "$TARGET_BASE_ARCH" = "" ]; then 2688 TARGET_BASE_ARCH=$TARGET_ARCH 2689fi 2690echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 2691if [ "$TARGET_ABI_DIR" = "" ]; then 2692 TARGET_ABI_DIR=$TARGET_ARCH 2693fi 2694echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 2695case "$target_arch2" in 2696 i386|x86_64) 2697 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 2698 echo "CONFIG_XEN=y" >> $config_target_mak 2699 fi 2700esac 2701case "$target_arch2" in 2702 i386|x86_64|ppcemb|ppc|ppc64|s390x) 2703 # Make sure the target and host cpus are compatible 2704 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 2705 \( "$target_arch2" = "$cpu" -o \ 2706 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 2707 \( "$target_arch2" = "ppc64" -a "$cpu" = "ppc" \) -o \ 2708 \( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \ 2709 \( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then 2710 echo "CONFIG_KVM=y" >> $config_target_mak 2711 echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak 2712 if test "$kvm_para" = "yes"; then 2713 echo "CONFIG_KVM_PARA=y" >> $config_target_mak 2714 fi 2715 if test $vhost_net = "yes" ; then 2716 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 2717 fi 2718 fi 2719esac 2720if test "$target_bigendian" = "yes" ; then 2721 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 2722fi 2723if test "$target_softmmu" = "yes" ; then 2724 echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak 2725 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 2726 echo "LIBS+=$libs_softmmu" >> $config_target_mak 2727 echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak 2728 echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak 2729fi 2730if test "$target_user_only" = "yes" ; then 2731 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 2732fi 2733if test "$target_linux_user" = "yes" ; then 2734 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 2735fi 2736if test "$target_darwin_user" = "yes" ; then 2737 echo "CONFIG_DARWIN_USER=y" >> $config_target_mak 2738fi 2739list="" 2740if test ! -z "$gdb_xml_files" ; then 2741 for x in $gdb_xml_files; do 2742 list="$list $source_path/gdb-xml/$x" 2743 done 2744 echo "TARGET_XML_FILES=$list" >> $config_target_mak 2745fi 2746 2747case "$target_arch2" in 2748 alpha|arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|s390x|sparc|sparc64|sparc32plus) 2749 echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak 2750 ;; 2751 *) 2752 echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak 2753 ;; 2754esac 2755 2756if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 2757 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 2758fi 2759if test "$target_user_only" = "yes" \ 2760 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then 2761 echo "CONFIG_USE_NPTL=y" >> $config_target_mak 2762fi 2763if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 2764 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 2765fi 2766if test "$target_bsd_user" = "yes" ; then 2767 echo "CONFIG_BSD_USER=y" >> $config_target_mak 2768fi 2769 2770# generate QEMU_CFLAGS/LDFLAGS for targets 2771 2772cflags="" 2773ldflags="" 2774 2775if test "$ARCH" = "sparc64" ; then 2776 cflags="-I\$(SRC_PATH)/tcg/sparc $cflags" 2777elif test "$ARCH" = "s390x" ; then 2778 cflags="-I\$(SRC_PATH)/tcg/s390 $cflags" 2779elif test "$ARCH" = "x86_64" ; then 2780 cflags="-I\$(SRC_PATH)/tcg/i386 $cflags" 2781else 2782 cflags="-I\$(SRC_PATH)/tcg/\$(ARCH) $cflags" 2783fi 2784cflags="-I\$(SRC_PATH)/tcg $cflags" 2785cflags="-I\$(SRC_PATH)/fpu $cflags" 2786 2787if test "$target_user_only" = "yes" ; then 2788 libdis_config_mak=libdis-user/config.mak 2789else 2790 libdis_config_mak=libdis/config.mak 2791fi 2792 2793for i in $ARCH $TARGET_BASE_ARCH ; do 2794 case "$i" in 2795 alpha) 2796 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 2797 echo "CONFIG_ALPHA_DIS=y" >> $libdis_config_mak 2798 ;; 2799 arm) 2800 echo "CONFIG_ARM_DIS=y" >> $config_target_mak 2801 echo "CONFIG_ARM_DIS=y" >> $libdis_config_mak 2802 ;; 2803 cris) 2804 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 2805 echo "CONFIG_CRIS_DIS=y" >> $libdis_config_mak 2806 ;; 2807 hppa) 2808 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 2809 echo "CONFIG_HPPA_DIS=y" >> $libdis_config_mak 2810 ;; 2811 i386|x86_64) 2812 echo "CONFIG_I386_DIS=y" >> $config_target_mak 2813 echo "CONFIG_I386_DIS=y" >> $libdis_config_mak 2814 ;; 2815 ia64*) 2816 echo "CONFIG_IA64_DIS=y" >> $config_target_mak 2817 echo "CONFIG_IA64_DIS=y" >> $libdis_config_mak 2818 ;; 2819 m68k) 2820 echo "CONFIG_M68K_DIS=y" >> $config_target_mak 2821 echo "CONFIG_M68K_DIS=y" >> $libdis_config_mak 2822 ;; 2823 microblaze) 2824 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 2825 echo "CONFIG_MICROBLAZE_DIS=y" >> $libdis_config_mak 2826 ;; 2827 mips*) 2828 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 2829 echo "CONFIG_MIPS_DIS=y" >> $libdis_config_mak 2830 ;; 2831 ppc*) 2832 echo "CONFIG_PPC_DIS=y" >> $config_target_mak 2833 echo "CONFIG_PPC_DIS=y" >> $libdis_config_mak 2834 ;; 2835 s390*) 2836 echo "CONFIG_S390_DIS=y" >> $config_target_mak 2837 echo "CONFIG_S390_DIS=y" >> $libdis_config_mak 2838 ;; 2839 sh4) 2840 echo "CONFIG_SH4_DIS=y" >> $config_target_mak 2841 echo "CONFIG_SH4_DIS=y" >> $libdis_config_mak 2842 ;; 2843 sparc*) 2844 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 2845 echo "CONFIG_SPARC_DIS=y" >> $libdis_config_mak 2846 ;; 2847 esac 2848done 2849 2850case "$ARCH" in 2851alpha) 2852 # Ensure there's only a single GP 2853 cflags="-msmall-data $cflags" 2854;; 2855esac 2856 2857if test "$target_softmmu" = "yes" ; then 2858 case "$TARGET_BASE_ARCH" in 2859 arm) 2860 cflags="-DHAS_AUDIO $cflags" 2861 ;; 2862 i386|mips|ppc) 2863 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags" 2864 ;; 2865 esac 2866fi 2867 2868if test "$target_user_only" = "yes" -a "$static" = "no" -a \ 2869 "$user_pie" = "yes" ; then 2870 cflags="-fpie $cflags" 2871 ldflags="-pie $ldflags" 2872fi 2873 2874if test "$target_softmmu" = "yes" -a \( \ 2875 "$TARGET_ARCH" = "microblaze" -o \ 2876 "$TARGET_ARCH" = "cris" \) ; then 2877 echo "CONFIG_NEED_MMU=y" >> $config_target_mak 2878fi 2879 2880if test "$gprof" = "yes" ; then 2881 echo "TARGET_GPROF=yes" >> $config_target_mak 2882 if test "$target_linux_user" = "yes" ; then 2883 cflags="-p $cflags" 2884 ldflags="-p $ldflags" 2885 fi 2886 if test "$target_softmmu" = "yes" ; then 2887 ldflags="-p $ldflags" 2888 echo "GPROF_CFLAGS=-p" >> $config_target_mak 2889 fi 2890fi 2891 2892linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" 2893if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 2894 case "$ARCH" in 2895 sparc) 2896 # -static is used to avoid g1/g3 usage by the dynamic linker 2897 ldflags="$linker_script -static $ldflags" 2898 ;; 2899 alpha | s390x) 2900 # The default placement of the application is fine. 2901 ;; 2902 *) 2903 ldflags="$linker_script $ldflags" 2904 ;; 2905 esac 2906fi 2907 2908echo "LDFLAGS+=$ldflags" >> $config_target_mak 2909echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 2910 2911done # for target in $targets 2912 2913# build tree in object directory if source path is different from current one 2914if test "$source_path_used" = "yes" ; then 2915 DIRS="tests tests/cris slirp audio block net pc-bios/optionrom" 2916 DIRS="$DIRS roms/seabios roms/vgabios" 2917 DIRS="$DIRS fsdev ui" 2918 FILES="Makefile tests/Makefile" 2919 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit" 2920 FILES="$FILES tests/test-mmap.c" 2921 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x" 2922 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 2923 for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do 2924 FILES="$FILES pc-bios/`basename $bios_file`" 2925 done 2926 for dir in $DIRS ; do 2927 mkdir -p $dir 2928 done 2929 # remove the link and recreate it, as not all "ln -sf" overwrite the link 2930 for f in $FILES ; do 2931 rm -f $f 2932 ln -s $source_path/$f $f 2933 done 2934fi 2935 2936# temporary config to build submodules 2937for rom in seabios vgabios ; do 2938 config_mak=roms/$rom/config.mak 2939 echo "# Automatically generated by configure - do not modify" > $config_mak 2940 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 2941 echo "CC=$cc" >> $config_mak 2942 echo "BCC=bcc" >> $config_mak 2943 echo "CPP=${cross_prefix}cpp" >> $config_mak 2944 echo "OBJCOPY=objcopy" >> $config_mak 2945 echo "IASL=iasl" >> $config_mak 2946 echo "HOST_CC=$host_cc" >> $config_mak 2947 echo "LD=$ld" >> $config_mak 2948done 2949 2950for hwlib in 32 64; do 2951 d=libhw$hwlib 2952 mkdir -p $d 2953 mkdir -p $d/ide 2954 rm -f $d/Makefile 2955 ln -s $source_path/Makefile.hw $d/Makefile 2956 echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak 2957done 2958 2959d=libuser 2960mkdir -p $d 2961rm -f $d/Makefile 2962ln -s $source_path/Makefile.user $d/Makefile 2963if test "$static" = "no" -a "$user_pie" = "yes" ; then 2964 echo "QEMU_CFLAGS+=-fpie" > $d/config.mak 2965fi 2966 2967if test "$docs" = "yes" ; then 2968 mkdir -p QMP 2969fi 2970