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