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="" 117nptl="" 118sdl="" 119vnc="yes" 120sparse="no" 121uuid="" 122vde="" 123vnc_tls="" 124vnc_sasl="" 125vnc_jpeg="" 126vnc_png="" 127vnc_thread="no" 128xen="" 129xen_ctrl_version="" 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" 148libdir="\${prefix}/lib" 149sysconfdir="\${prefix}/etc" 150confsuffix="/qemu" 151slirp="yes" 152fmod_lib="" 153fmod_inc="" 154oss_lib="" 155bsd="no" 156linux="no" 157solaris="no" 158profiler="no" 159cocoa="no" 160softmmu="yes" 161linux_user="no" 162darwin_user="no" 163bsd_user="no" 164guest_base="" 165uname_release="" 166io_thread="no" 167mixemu="no" 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="" 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 -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 kvm="yes" 461 vhost_net="yes" 462 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 463 audio_possible_drivers="$audio_possible_drivers fmod" 464 fi 465;; 466esac 467 468if [ "$bsd" = "yes" ] ; then 469 if [ "$darwin" != "yes" ] ; then 470 usb="bsd" 471 fi 472 bsd_user="yes" 473fi 474 475: ${make=${MAKE-make}} 476: ${install=${INSTALL-install}} 477 478if test "$mingw32" = "yes" ; then 479 EXESUF=".exe" 480 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 481 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 482 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 483 LIBS="-lwinmm -lws2_32 -liberty -liphlpapi $LIBS" 484 prefix="c:/Program Files/Qemu" 485 mandir="\${prefix}" 486 datadir="\${prefix}" 487 docdir="\${prefix}" 488 bindir="\${prefix}" 489 sysconfdir="\${prefix}" 490 confsuffix="" 491fi 492 493werror="" 494 495for opt do 496 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 497 case "$opt" in 498 --help|-h) show_help=yes 499 ;; 500 --version|-V) exec cat $source_path/VERSION 501 ;; 502 --prefix=*) prefix="$optarg" 503 ;; 504 --interp-prefix=*) interp_prefix="$optarg" 505 ;; 506 --source-path=*) 507 ;; 508 --cross-prefix=*) 509 ;; 510 --cc=*) 511 ;; 512 --host-cc=*) host_cc="$optarg" 513 ;; 514 --make=*) make="$optarg" 515 ;; 516 --install=*) install="$optarg" 517 ;; 518 --extra-cflags=*) 519 ;; 520 --extra-ldflags=*) 521 ;; 522 --cpu=*) 523 ;; 524 --target-list=*) target_list="$optarg" 525 ;; 526 --enable-trace-backend=*) trace_backend="$optarg" 527 ;; 528 --with-trace-file=*) trace_file="$optarg" 529 ;; 530 --enable-gprof) gprof="yes" 531 ;; 532 --static) 533 static="yes" 534 LDFLAGS="-static $LDFLAGS" 535 ;; 536 --mandir=*) mandir="$optarg" 537 ;; 538 --bindir=*) bindir="$optarg" 539 ;; 540 --libdir=*) libdir="$optarg" 541 ;; 542 --datadir=*) datadir="$optarg" 543 ;; 544 --docdir=*) docdir="$optarg" 545 ;; 546 --sysconfdir=*) sysconfdir="$optarg" 547 ;; 548 --disable-sdl) sdl="no" 549 ;; 550 --enable-sdl) sdl="yes" 551 ;; 552 --disable-vnc) vnc="no" 553 ;; 554 --enable-vnc) vnc="yes" 555 ;; 556 --fmod-lib=*) fmod_lib="$optarg" 557 ;; 558 --fmod-inc=*) fmod_inc="$optarg" 559 ;; 560 --oss-lib=*) oss_lib="$optarg" 561 ;; 562 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'` 563 ;; 564 --audio-drv-list=*) audio_drv_list="$optarg" 565 ;; 566 --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 567 ;; 568 --enable-debug-tcg) debug_tcg="yes" 569 ;; 570 --disable-debug-tcg) debug_tcg="no" 571 ;; 572 --enable-debug-mon) debug_mon="yes" 573 ;; 574 --disable-debug-mon) debug_mon="no" 575 ;; 576 --enable-debug) 577 # Enable debugging options that aren't excessively noisy 578 debug_tcg="yes" 579 debug_mon="yes" 580 debug="yes" 581 strip_opt="no" 582 ;; 583 --enable-sparse) sparse="yes" 584 ;; 585 --disable-sparse) sparse="no" 586 ;; 587 --disable-strip) strip_opt="no" 588 ;; 589 --disable-vnc-tls) vnc_tls="no" 590 ;; 591 --enable-vnc-tls) vnc_tls="yes" 592 ;; 593 --disable-vnc-sasl) vnc_sasl="no" 594 ;; 595 --enable-vnc-sasl) vnc_sasl="yes" 596 ;; 597 --disable-vnc-jpeg) vnc_jpeg="no" 598 ;; 599 --enable-vnc-jpeg) vnc_jpeg="yes" 600 ;; 601 --disable-vnc-png) vnc_png="no" 602 ;; 603 --enable-vnc-png) vnc_png="yes" 604 ;; 605 --disable-vnc-thread) vnc_thread="no" 606 ;; 607 --enable-vnc-thread) vnc_thread="yes" 608 ;; 609 --disable-slirp) slirp="no" 610 ;; 611 --disable-uuid) uuid="no" 612 ;; 613 --enable-uuid) uuid="yes" 614 ;; 615 --disable-vde) vde="no" 616 ;; 617 --enable-vde) vde="yes" 618 ;; 619 --disable-xen) xen="no" 620 ;; 621 --enable-xen) xen="yes" 622 ;; 623 --disable-brlapi) brlapi="no" 624 ;; 625 --enable-brlapi) brlapi="yes" 626 ;; 627 --disable-bluez) bluez="no" 628 ;; 629 --enable-bluez) bluez="yes" 630 ;; 631 --disable-kvm) kvm="no" 632 ;; 633 --enable-kvm) kvm="yes" 634 ;; 635 --disable-spice) spice="no" 636 ;; 637 --enable-spice) spice="yes" 638 ;; 639 --enable-profiler) profiler="yes" 640 ;; 641 --enable-cocoa) 642 cocoa="yes" ; 643 sdl="no" ; 644 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" 645 ;; 646 --disable-system) softmmu="no" 647 ;; 648 --enable-system) softmmu="yes" 649 ;; 650 --disable-user) 651 linux_user="no" ; 652 bsd_user="no" ; 653 darwin_user="no" 654 ;; 655 --enable-user) ;; 656 --disable-linux-user) linux_user="no" 657 ;; 658 --enable-linux-user) linux_user="yes" 659 ;; 660 --disable-darwin-user) darwin_user="no" 661 ;; 662 --enable-darwin-user) darwin_user="yes" 663 ;; 664 --disable-bsd-user) bsd_user="no" 665 ;; 666 --enable-bsd-user) bsd_user="yes" 667 ;; 668 --enable-guest-base) guest_base="yes" 669 ;; 670 --disable-guest-base) guest_base="no" 671 ;; 672 --enable-user-pie) user_pie="yes" 673 ;; 674 --disable-user-pie) user_pie="no" 675 ;; 676 --enable-uname-release=*) uname_release="$optarg" 677 ;; 678 --sparc_cpu=*) 679 ;; 680 --enable-werror) werror="yes" 681 ;; 682 --disable-werror) werror="no" 683 ;; 684 --disable-curses) curses="no" 685 ;; 686 --enable-curses) curses="yes" 687 ;; 688 --disable-curl) curl="no" 689 ;; 690 --enable-curl) curl="yes" 691 ;; 692 --disable-fdt) fdt="no" 693 ;; 694 --enable-fdt) fdt="yes" 695 ;; 696 --disable-check-utests) check_utests="no" 697 ;; 698 --enable-check-utests) check_utests="yes" 699 ;; 700 --disable-nptl) nptl="no" 701 ;; 702 --enable-nptl) nptl="yes" 703 ;; 704 --enable-mixemu) mixemu="yes" 705 ;; 706 --disable-linux-aio) linux_aio="no" 707 ;; 708 --enable-linux-aio) linux_aio="yes" 709 ;; 710 --disable-attr) attr="no" 711 ;; 712 --enable-attr) attr="yes" 713 ;; 714 --enable-io-thread) io_thread="yes" 715 ;; 716 --disable-blobs) blobs="no" 717 ;; 718 --with-pkgversion=*) pkgversion=" ($optarg)" 719 ;; 720 --disable-docs) docs="no" 721 ;; 722 --enable-docs) docs="yes" 723 ;; 724 --disable-vhost-net) vhost_net="no" 725 ;; 726 --enable-vhost-net) vhost_net="yes" 727 ;; 728 --disable-opengl) opengl="no" 729 ;; 730 --enable-opengl) opengl="yes" 731 ;; 732 --*dir) 733 ;; 734 --disable-rbd) rbd="no" 735 ;; 736 --enable-rbd) rbd="yes" 737 ;; 738 --disable-smartcard) smartcard="no" 739 ;; 740 --enable-smartcard) smartcard="yes" 741 ;; 742 --disable-smartcard-nss) smartcard_nss="no" 743 ;; 744 --enable-smartcard-nss) smartcard_nss="yes" 745 ;; 746 *) echo "ERROR: unknown option $opt"; show_help="yes" 747 ;; 748 esac 749done 750 751# 752# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right 753# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit) 754# 755host_guest_base="no" 756case "$cpu" in 757 sparc) case $sparc_cpu in 758 v7|v8) 759 QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS" 760 ;; 761 v8plus|v8plusa) 762 QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS" 763 ;; 764 *) # sparc_cpu not defined in the command line 765 QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS" 766 esac 767 LDFLAGS="-m32 $LDFLAGS" 768 QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS" 769 if test "$solaris" = "no" ; then 770 QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS" 771 helper_cflags="-ffixed-i0" 772 fi 773 ;; 774 sparc64) 775 QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS" 776 LDFLAGS="-m64 $LDFLAGS" 777 QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS" 778 if test "$solaris" != "no" ; then 779 QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS" 780 fi 781 ;; 782 s390) 783 QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS" 784 LDFLAGS="-m31 $LDFLAGS" 785 host_guest_base="yes" 786 ;; 787 s390x) 788 QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS" 789 LDFLAGS="-m64 $LDFLAGS" 790 host_guest_base="yes" 791 ;; 792 i386) 793 QEMU_CFLAGS="-m32 $QEMU_CFLAGS" 794 LDFLAGS="-m32 $LDFLAGS" 795 cc_i386='$(CC) -m32' 796 helper_cflags="-fomit-frame-pointer" 797 host_guest_base="yes" 798 ;; 799 x86_64) 800 QEMU_CFLAGS="-m64 $QEMU_CFLAGS" 801 LDFLAGS="-m64 $LDFLAGS" 802 cc_i386='$(CC) -m32' 803 host_guest_base="yes" 804 ;; 805 arm*) 806 host_guest_base="yes" 807 ;; 808 ppc*) 809 host_guest_base="yes" 810 ;; 811 mips*) 812 host_guest_base="yes" 813 ;; 814 ia64*) 815 host_guest_base="yes" 816 ;; 817 hppa*) 818 host_guest_base="yes" 819 ;; 820 unicore32*) 821 host_guest_base="yes" 822 ;; 823esac 824 825[ -z "$guest_base" ] && guest_base="$host_guest_base" 826 827 828default_target_list="" 829 830# these targets are portable 831if [ "$softmmu" = "yes" ] ; then 832 default_target_list="\ 833i386-softmmu \ 834x86_64-softmmu \ 835alpha-softmmu \ 836arm-softmmu \ 837cris-softmmu \ 838lm32-softmmu \ 839m68k-softmmu \ 840microblaze-softmmu \ 841microblazeel-softmmu \ 842mips-softmmu \ 843mipsel-softmmu \ 844mips64-softmmu \ 845mips64el-softmmu \ 846ppc-softmmu \ 847ppcemb-softmmu \ 848ppc64-softmmu \ 849sh4-softmmu \ 850sh4eb-softmmu \ 851sparc-softmmu \ 852sparc64-softmmu \ 853s390x-softmmu \ 854" 855fi 856# the following are Linux specific 857if [ "$linux_user" = "yes" ] ; then 858 default_target_list="${default_target_list}\ 859i386-linux-user \ 860x86_64-linux-user \ 861alpha-linux-user \ 862arm-linux-user \ 863armeb-linux-user \ 864cris-linux-user \ 865m68k-linux-user \ 866microblaze-linux-user \ 867microblazeel-linux-user \ 868mips-linux-user \ 869mipsel-linux-user \ 870ppc-linux-user \ 871ppc64-linux-user \ 872ppc64abi32-linux-user \ 873sh4-linux-user \ 874sh4eb-linux-user \ 875sparc-linux-user \ 876sparc64-linux-user \ 877sparc32plus-linux-user \ 878unicore32-linux-user \ 879s390x-linux-user \ 880" 881fi 882# the following are Darwin specific 883if [ "$darwin_user" = "yes" ] ; then 884 default_target_list="$default_target_list i386-darwin-user ppc-darwin-user " 885fi 886# the following are BSD specific 887if [ "$bsd_user" = "yes" ] ; then 888 default_target_list="${default_target_list}\ 889i386-bsd-user \ 890x86_64-bsd-user \ 891sparc-bsd-user \ 892sparc64-bsd-user \ 893" 894fi 895 896if test x"$show_help" = x"yes" ; then 897cat << EOF 898 899Usage: configure [options] 900Options: [defaults in brackets after descriptions] 901 902EOF 903echo "Standard options:" 904echo " --help print this message" 905echo " --prefix=PREFIX install in PREFIX [$prefix]" 906echo " --interp-prefix=PREFIX where to find shared libraries, etc." 907echo " use %M for cpu name [$interp_prefix]" 908echo " --target-list=LIST set target list (default: build everything)" 909echo "Available targets: $default_target_list" | \ 910 fold -s -w 53 | sed -e 's/^/ /' 911echo "" 912echo "Advanced options (experts only):" 913echo " --source-path=PATH path of source code [$source_path]" 914echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]" 915echo " --cc=CC use C compiler CC [$cc]" 916echo " --host-cc=CC use C compiler CC [$host_cc] for code run at" 917echo " build time" 918echo " --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS" 919echo " --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS" 920echo " --make=MAKE use specified make [$make]" 921echo " --install=INSTALL use specified install [$install]" 922echo " --static enable static build [$static]" 923echo " --mandir=PATH install man pages in PATH" 924echo " --datadir=PATH install firmware in PATH" 925echo " --docdir=PATH install documentation in PATH" 926echo " --bindir=PATH install binaries in PATH" 927echo " --sysconfdir=PATH install config in PATH/qemu" 928echo " --enable-debug-tcg enable TCG debugging" 929echo " --disable-debug-tcg disable TCG debugging (default)" 930echo " --enable-debug enable common debug build options" 931echo " --enable-sparse enable sparse checker" 932echo " --disable-sparse disable sparse checker (default)" 933echo " --disable-strip disable stripping binaries" 934echo " --disable-werror disable compilation abort on warning" 935echo " --disable-sdl disable SDL" 936echo " --enable-sdl enable SDL" 937echo " --disable-vnc disable VNC" 938echo " --enable-vnc enable VNC" 939echo " --enable-cocoa enable COCOA (Mac OS X only)" 940echo " --audio-drv-list=LIST set audio drivers list:" 941echo " Available drivers: $audio_possible_drivers" 942echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_list]" 943echo " Available cards: $audio_possible_cards" 944echo " --block-drv-whitelist=L set block driver whitelist" 945echo " (affects only QEMU, not qemu-img)" 946echo " --enable-mixemu enable mixer emulation" 947echo " --disable-xen disable xen backend driver support" 948echo " --enable-xen enable xen backend driver support" 949echo " --disable-brlapi disable BrlAPI" 950echo " --enable-brlapi enable BrlAPI" 951echo " --disable-vnc-tls disable TLS encryption for VNC server" 952echo " --enable-vnc-tls enable TLS encryption for VNC server" 953echo " --disable-vnc-sasl disable SASL encryption for VNC server" 954echo " --enable-vnc-sasl enable SASL encryption for VNC server" 955echo " --disable-vnc-jpeg disable JPEG lossy compression for VNC server" 956echo " --enable-vnc-jpeg enable JPEG lossy compression for VNC server" 957echo " --disable-vnc-png disable PNG compression for VNC server (default)" 958echo " --enable-vnc-png enable PNG compression for VNC server" 959echo " --disable-vnc-thread disable threaded VNC server" 960echo " --enable-vnc-thread enable threaded VNC server" 961echo " --disable-curses disable curses output" 962echo " --enable-curses enable curses output" 963echo " --disable-curl disable curl connectivity" 964echo " --enable-curl enable curl connectivity" 965echo " --disable-fdt disable fdt device tree" 966echo " --enable-fdt enable fdt device tree" 967echo " --disable-check-utests disable check unit-tests" 968echo " --enable-check-utests enable check unit-tests" 969echo " --disable-bluez disable bluez stack connectivity" 970echo " --enable-bluez enable bluez stack connectivity" 971echo " --disable-slirp disable SLIRP userspace network connectivity" 972echo " --disable-kvm disable KVM acceleration support" 973echo " --enable-kvm enable KVM acceleration support" 974echo " --disable-nptl disable usermode NPTL support" 975echo " --enable-nptl enable usermode NPTL support" 976echo " --enable-system enable all system emulation targets" 977echo " --disable-system disable all system emulation targets" 978echo " --enable-user enable supported user emulation targets" 979echo " --disable-user disable all user emulation targets" 980echo " --enable-linux-user enable all linux usermode emulation targets" 981echo " --disable-linux-user disable all linux usermode emulation targets" 982echo " --enable-darwin-user enable all darwin usermode emulation targets" 983echo " --disable-darwin-user disable all darwin usermode emulation targets" 984echo " --enable-bsd-user enable all BSD usermode emulation targets" 985echo " --disable-bsd-user disable all BSD usermode emulation targets" 986echo " --enable-guest-base enable GUEST_BASE support for usermode" 987echo " emulation targets" 988echo " --disable-guest-base disable GUEST_BASE support" 989echo " --enable-user-pie build usermode emulation targets as PIE" 990echo " --disable-user-pie do not build usermode emulation targets as PIE" 991echo " --fmod-lib path to FMOD library" 992echo " --fmod-inc path to FMOD includes" 993echo " --oss-lib path to OSS library" 994echo " --enable-uname-release=R Return R for uname -r in usermode emulation" 995echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9" 996echo " --disable-uuid disable uuid support" 997echo " --enable-uuid enable uuid support" 998echo " --disable-vde disable support for vde network" 999echo " --enable-vde enable support for vde network" 1000echo " --disable-linux-aio disable Linux AIO support" 1001echo " --enable-linux-aio enable Linux AIO support" 1002echo " --disable-attr disables attr and xattr support" 1003echo " --enable-attr enable attr and xattr support" 1004echo " --enable-io-thread enable IO thread" 1005echo " --disable-blobs disable installing provided firmware blobs" 1006echo " --enable-docs enable documentation build" 1007echo " --disable-docs disable documentation build" 1008echo " --disable-vhost-net disable vhost-net acceleration support" 1009echo " --enable-vhost-net enable vhost-net acceleration support" 1010echo " --enable-trace-backend=B Set trace backend" 1011echo " Available backends:" $("$source_path"/scripts/tracetool --list-backends) 1012echo " --with-trace-file=NAME Full PATH,NAME of file to store traces" 1013echo " Default:trace-<pid>" 1014echo " --disable-spice disable spice" 1015echo " --enable-spice enable spice" 1016echo " --enable-rbd enable building the rados block device (rbd)" 1017echo " --disable-smartcard disable smartcard support" 1018echo " --enable-smartcard enable smartcard support" 1019echo " --disable-smartcard-nss disable smartcard nss support" 1020echo " --enable-smartcard-nss enable smartcard nss support" 1021echo "" 1022echo "NOTE: The object files are built at the place where configure is launched" 1023exit 1 1024fi 1025 1026# check that the C compiler works. 1027cat > $TMPC <<EOF 1028int main(void) {} 1029EOF 1030 1031if compile_object ; then 1032 : C compiler works ok 1033else 1034 echo "ERROR: \"$cc\" either does not exist or does not work" 1035 exit 1 1036fi 1037 1038gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 1039gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 1040gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 1041gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags" 1042cat > $TMPC << EOF 1043int main(void) { return 0; } 1044EOF 1045for flag in $gcc_flags; do 1046 if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then 1047 QEMU_CFLAGS="$QEMU_CFLAGS $flag" 1048 fi 1049done 1050 1051# 1052# Solaris specific configure tool chain decisions 1053# 1054if test "$solaris" = "yes" ; then 1055 if has $install; then 1056 : 1057 else 1058 echo "Solaris install program not found. Use --install=/usr/ucb/install or" 1059 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils" 1060 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1061 exit 1 1062 fi 1063 if test "`path_of $install`" = "/usr/sbin/install" ; then 1064 echo "Error: Solaris /usr/sbin/install is not an appropriate install program." 1065 echo "try ginstall from the GNU fileutils available from www.blastwave.org" 1066 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1067 exit 1 1068 fi 1069 if has ar; then 1070 : 1071 else 1072 echo "Error: No path includes ar" 1073 if test -f /usr/ccs/bin/ar ; then 1074 echo "Add /usr/ccs/bin to your path and rerun configure" 1075 fi 1076 exit 1 1077 fi 1078fi 1079 1080if test -z "$target_list" ; then 1081 target_list="$default_target_list" 1082else 1083 target_list=`echo "$target_list" | sed -e 's/,/ /g'` 1084fi 1085if test -z "$target_list" ; then 1086 echo "No targets enabled" 1087 exit 1 1088fi 1089# see if system emulation was really requested 1090case " $target_list " in 1091 *"-softmmu "*) softmmu=yes 1092 ;; 1093 *) softmmu=no 1094 ;; 1095esac 1096 1097feature_not_found() { 1098 feature=$1 1099 1100 echo "ERROR" 1101 echo "ERROR: User requested feature $feature" 1102 echo "ERROR: configure was not able to find it" 1103 echo "ERROR" 1104 exit 1; 1105} 1106 1107if test -z "$cross_prefix" ; then 1108 1109# --- 1110# big/little endian test 1111cat > $TMPC << EOF 1112#include <inttypes.h> 1113int main(int argc, char ** argv){ 1114 volatile uint32_t i=0x01234567; 1115 return (*((uint8_t*)(&i))) == 0x67; 1116} 1117EOF 1118 1119if compile_prog "" "" ; then 1120$TMPE && bigendian="yes" 1121else 1122echo big/little test failed 1123fi 1124 1125else 1126 1127# if cross compiling, cannot launch a program, so make a static guess 1128case "$cpu" in 1129 armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64) 1130 bigendian=yes 1131 ;; 1132esac 1133 1134fi 1135 1136# host long bits test, actually a pointer size test 1137cat > $TMPC << EOF 1138int sizeof_pointer_is_8[sizeof(void *) == 8 ? 1 : -1]; 1139EOF 1140if compile_object; then 1141hostlongbits=64 1142else 1143hostlongbits=32 1144fi 1145 1146 1147########################################## 1148# NPTL probe 1149 1150if test "$nptl" != "no" ; then 1151 cat > $TMPC <<EOF 1152#include <sched.h> 1153#include <linux/futex.h> 1154void foo() 1155{ 1156#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1157#error bork 1158#endif 1159} 1160EOF 1161 1162 if compile_object ; then 1163 nptl=yes 1164 else 1165 if test "$nptl" = "yes" ; then 1166 feature_not_found "nptl" 1167 fi 1168 nptl=no 1169 fi 1170fi 1171 1172########################################## 1173# zlib check 1174 1175cat > $TMPC << EOF 1176#include <zlib.h> 1177int main(void) { zlibVersion(); return 0; } 1178EOF 1179if compile_prog "" "-lz" ; then 1180 : 1181else 1182 echo 1183 echo "Error: zlib check failed" 1184 echo "Make sure to have the zlib libs and headers installed." 1185 echo 1186 exit 1 1187fi 1188 1189########################################## 1190# xen probe 1191 1192if test "$xen" != "no" ; then 1193 xen_libs="-lxenstore -lxenctrl -lxenguest" 1194 1195 # Xen unstable 1196 cat > $TMPC <<EOF 1197#include <xenctrl.h> 1198#include <xs.h> 1199#include <stdint.h> 1200#include <xen/hvm/hvm_info_table.h> 1201#if !defined(HVM_MAX_VCPUS) 1202# error HVM_MAX_VCPUS not defined 1203#endif 1204int main(void) { 1205 xc_interface *xc; 1206 xs_daemon_open(); 1207 xc = xc_interface_open(0, 0, 0); 1208 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1209 xc_gnttab_open(NULL, 0); 1210 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1211 return 0; 1212} 1213EOF 1214 if compile_prog "" "$xen_libs" ; then 1215 xen_ctrl_version=410 1216 xen=yes 1217 1218 # Xen 4.0.0 1219 elif ( 1220 cat > $TMPC <<EOF 1221#include <xenctrl.h> 1222#include <xs.h> 1223#include <stdint.h> 1224#include <xen/hvm/hvm_info_table.h> 1225#if !defined(HVM_MAX_VCPUS) 1226# error HVM_MAX_VCPUS not defined 1227#endif 1228int main(void) { 1229 struct xen_add_to_physmap xatp = { 1230 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1231 }; 1232 xs_daemon_open(); 1233 xc_interface_open(); 1234 xc_gnttab_open(); 1235 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1236 xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1237 return 0; 1238} 1239EOF 1240 compile_prog "" "$xen_libs" 1241 ) ; then 1242 xen_ctrl_version=400 1243 xen=yes 1244 1245 # Xen 3.4.0 1246 elif ( 1247 cat > $TMPC <<EOF 1248#include <xenctrl.h> 1249#include <xs.h> 1250int main(void) { 1251 struct xen_add_to_physmap xatp = { 1252 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1253 }; 1254 xs_daemon_open(); 1255 xc_interface_open(); 1256 xc_gnttab_open(); 1257 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1258 xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1259 return 0; 1260} 1261EOF 1262 compile_prog "" "$xen_libs" 1263 ) ; then 1264 xen_ctrl_version=340 1265 xen=yes 1266 1267 # Xen 3.3.0 1268 elif ( 1269 cat > $TMPC <<EOF 1270#include <xenctrl.h> 1271#include <xs.h> 1272int main(void) { 1273 xs_daemon_open(); 1274 xc_interface_open(); 1275 xc_gnttab_open(); 1276 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1277 return 0; 1278} 1279EOF 1280 compile_prog "" "$xen_libs" 1281 ) ; then 1282 xen_ctrl_version=330 1283 xen=yes 1284 1285 # Xen not found or unsupported 1286 else 1287 if test "$xen" = "yes" ; then 1288 feature_not_found "xen" 1289 fi 1290 xen=no 1291 fi 1292 1293 if test "$xen" = yes; then 1294 libs_softmmu="$xen_libs $libs_softmmu" 1295 fi 1296fi 1297 1298########################################## 1299# pkg-config probe 1300 1301if ! has $pkg_config; then 1302 echo warning: proceeding without "$pkg_config" >&2 1303 pkg_config=/bin/false 1304fi 1305 1306########################################## 1307# libtool probe 1308 1309if ! has libtool; then 1310 libtool= 1311else 1312 libtool=libtool 1313fi 1314 1315########################################## 1316# Sparse probe 1317if test "$sparse" != "no" ; then 1318 if has cgcc; then 1319 sparse=yes 1320 else 1321 if test "$sparse" = "yes" ; then 1322 feature_not_found "sparse" 1323 fi 1324 sparse=no 1325 fi 1326fi 1327 1328########################################## 1329# SDL probe 1330 1331# Look for sdl configuration program (pkg-config or sdl-config). Try 1332# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 1333if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then 1334 sdl_config=sdl-config 1335fi 1336 1337if $pkg_config sdl --modversion >/dev/null 2>&1; then 1338 sdlconfig="$pkg_config sdl" 1339 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 1340elif has ${sdl_config}; then 1341 sdlconfig="$sdl_config" 1342 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 1343else 1344 if test "$sdl" = "yes" ; then 1345 feature_not_found "sdl" 1346 fi 1347 sdl=no 1348fi 1349if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 1350 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 1351fi 1352 1353sdl_too_old=no 1354if test "$sdl" != "no" ; then 1355 cat > $TMPC << EOF 1356#include <SDL.h> 1357#undef main /* We don't want SDL to override our main() */ 1358int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 1359EOF 1360 sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 1361 if test "$static" = "yes" ; then 1362 sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 1363 else 1364 sdl_libs=`$sdlconfig --libs 2> /dev/null` 1365 fi 1366 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1367 if test "$_sdlversion" -lt 121 ; then 1368 sdl_too_old=yes 1369 else 1370 if test "$cocoa" = "no" ; then 1371 sdl=yes 1372 fi 1373 fi 1374 1375 # static link with sdl ? (note: sdl.pc's --static --libs is broken) 1376 if test "$sdl" = "yes" -a "$static" = "yes" ; then 1377 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 1378 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 1379 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 1380 fi 1381 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1382 : 1383 else 1384 sdl=no 1385 fi 1386 fi # static link 1387 else # sdl not found 1388 if test "$sdl" = "yes" ; then 1389 feature_not_found "sdl" 1390 fi 1391 sdl=no 1392 fi # sdl compile test 1393fi 1394 1395if test "$sdl" = "yes" ; then 1396 cat > $TMPC <<EOF 1397#include <SDL.h> 1398#if defined(SDL_VIDEO_DRIVER_X11) 1399#include <X11/XKBlib.h> 1400#else 1401#error No x11 support 1402#endif 1403int main(void) { return 0; } 1404EOF 1405 if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1406 sdl_libs="$sdl_libs -lX11" 1407 fi 1408 if test "$mingw32" = "yes" ; then 1409 sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole" 1410 fi 1411 libs_softmmu="$sdl_libs $libs_softmmu" 1412fi 1413 1414########################################## 1415# VNC TLS detection 1416if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then 1417 cat > $TMPC <<EOF 1418#include <gnutls/gnutls.h> 1419int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 1420EOF 1421 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 1422 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 1423 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then 1424 vnc_tls=yes 1425 libs_softmmu="$vnc_tls_libs $libs_softmmu" 1426 else 1427 if test "$vnc_tls" = "yes" ; then 1428 feature_not_found "vnc-tls" 1429 fi 1430 vnc_tls=no 1431 fi 1432fi 1433 1434########################################## 1435# VNC SASL detection 1436if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 1437 cat > $TMPC <<EOF 1438#include <sasl/sasl.h> 1439#include <stdio.h> 1440int main(void) { sasl_server_init(NULL, "qemu"); return 0; } 1441EOF 1442 # Assuming Cyrus-SASL installed in /usr prefix 1443 vnc_sasl_cflags="" 1444 vnc_sasl_libs="-lsasl2" 1445 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 1446 vnc_sasl=yes 1447 libs_softmmu="$vnc_sasl_libs $libs_softmmu" 1448 else 1449 if test "$vnc_sasl" = "yes" ; then 1450 feature_not_found "vnc-sasl" 1451 fi 1452 vnc_sasl=no 1453 fi 1454fi 1455 1456########################################## 1457# VNC JPEG detection 1458if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 1459cat > $TMPC <<EOF 1460#include <stdio.h> 1461#include <jpeglib.h> 1462int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 1463EOF 1464 vnc_jpeg_cflags="" 1465 vnc_jpeg_libs="-ljpeg" 1466 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 1467 vnc_jpeg=yes 1468 libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 1469 else 1470 if test "$vnc_jpeg" = "yes" ; then 1471 feature_not_found "vnc-jpeg" 1472 fi 1473 vnc_jpeg=no 1474 fi 1475fi 1476 1477########################################## 1478# VNC PNG detection 1479if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 1480cat > $TMPC <<EOF 1481//#include <stdio.h> 1482#include <png.h> 1483#include <stddef.h> 1484int main(void) { 1485 png_structp png_ptr; 1486 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 1487 return 0; 1488} 1489EOF 1490 vnc_png_cflags="" 1491 vnc_png_libs="-lpng" 1492 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 1493 vnc_png=yes 1494 libs_softmmu="$vnc_png_libs $libs_softmmu" 1495 else 1496 if test "$vnc_png" = "yes" ; then 1497 feature_not_found "vnc-png" 1498 fi 1499 vnc_png=no 1500 fi 1501fi 1502 1503########################################## 1504# fnmatch() probe, used for ACL routines 1505fnmatch="no" 1506cat > $TMPC << EOF 1507#include <fnmatch.h> 1508int main(void) 1509{ 1510 fnmatch("foo", "foo", 0); 1511 return 0; 1512} 1513EOF 1514if compile_prog "" "" ; then 1515 fnmatch="yes" 1516fi 1517 1518########################################## 1519# uuid_generate() probe, used for vdi block driver 1520if test "$uuid" != "no" ; then 1521 uuid_libs="-luuid" 1522 cat > $TMPC << EOF 1523#include <uuid/uuid.h> 1524int main(void) 1525{ 1526 uuid_t my_uuid; 1527 uuid_generate(my_uuid); 1528 return 0; 1529} 1530EOF 1531 if compile_prog "" "$uuid_libs" ; then 1532 uuid="yes" 1533 libs_softmmu="$uuid_libs $libs_softmmu" 1534 libs_tools="$uuid_libs $libs_tools" 1535 else 1536 if test "$uuid" = "yes" ; then 1537 feature_not_found "uuid" 1538 fi 1539 uuid=no 1540 fi 1541fi 1542 1543########################################## 1544# xfsctl() probe, used for raw-posix 1545if test "$xfs" != "no" ; then 1546 cat > $TMPC << EOF 1547#include <xfs/xfs.h> 1548int main(void) 1549{ 1550 xfsctl(NULL, 0, 0, NULL); 1551 return 0; 1552} 1553EOF 1554 if compile_prog "" "" ; then 1555 xfs="yes" 1556 else 1557 if test "$xfs" = "yes" ; then 1558 feature_not_found "xfs" 1559 fi 1560 xfs=no 1561 fi 1562fi 1563 1564########################################## 1565# vde libraries probe 1566if test "$vde" != "no" ; then 1567 vde_libs="-lvdeplug" 1568 cat > $TMPC << EOF 1569#include <libvdeplug.h> 1570int main(void) 1571{ 1572 struct vde_open_args a = {0, 0, 0}; 1573 vde_open("", "", &a); 1574 return 0; 1575} 1576EOF 1577 if compile_prog "" "$vde_libs" ; then 1578 vde=yes 1579 libs_softmmu="$vde_libs $libs_softmmu" 1580 libs_tools="$vde_libs $libs_tools" 1581 else 1582 if test "$vde" = "yes" ; then 1583 feature_not_found "vde" 1584 fi 1585 vde=no 1586 fi 1587fi 1588 1589########################################## 1590# Sound support libraries probe 1591 1592audio_drv_probe() 1593{ 1594 drv=$1 1595 hdr=$2 1596 lib=$3 1597 exp=$4 1598 cfl=$5 1599 cat > $TMPC << EOF 1600#include <$hdr> 1601int main(void) { $exp } 1602EOF 1603 if compile_prog "$cfl" "$lib" ; then 1604 : 1605 else 1606 echo 1607 echo "Error: $drv check failed" 1608 echo "Make sure to have the $drv libs and headers installed." 1609 echo 1610 exit 1 1611 fi 1612} 1613 1614audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 1615for drv in $audio_drv_list; do 1616 case $drv in 1617 alsa) 1618 audio_drv_probe $drv alsa/asoundlib.h -lasound \ 1619 "snd_pcm_t **handle; return snd_pcm_close(*handle);" 1620 libs_softmmu="-lasound $libs_softmmu" 1621 ;; 1622 1623 fmod) 1624 if test -z $fmod_lib || test -z $fmod_inc; then 1625 echo 1626 echo "Error: You must specify path to FMOD library and headers" 1627 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so" 1628 echo 1629 exit 1 1630 fi 1631 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc" 1632 libs_softmmu="$fmod_lib $libs_softmmu" 1633 ;; 1634 1635 esd) 1636 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);' 1637 libs_softmmu="-lesd $libs_softmmu" 1638 audio_pt_int="yes" 1639 ;; 1640 1641 pa) 1642 audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \ 1643 "pa_simple *s = 0; pa_simple_free(s); return 0;" 1644 libs_softmmu="-lpulse -lpulse-simple $libs_softmmu" 1645 audio_pt_int="yes" 1646 ;; 1647 1648 coreaudio) 1649 libs_softmmu="-framework CoreAudio $libs_softmmu" 1650 ;; 1651 1652 dsound) 1653 libs_softmmu="-lole32 -ldxguid $libs_softmmu" 1654 audio_win_int="yes" 1655 ;; 1656 1657 oss) 1658 libs_softmmu="$oss_lib $libs_softmmu" 1659 ;; 1660 1661 sdl|wav) 1662 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 1663 ;; 1664 1665 winwave) 1666 libs_softmmu="-lwinmm $libs_softmmu" 1667 audio_win_int="yes" 1668 ;; 1669 1670 *) 1671 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 1672 echo 1673 echo "Error: Unknown driver '$drv' selected" 1674 echo "Possible drivers are: $audio_possible_drivers" 1675 echo 1676 exit 1 1677 } 1678 ;; 1679 esac 1680done 1681 1682########################################## 1683# BrlAPI probe 1684 1685if test "$brlapi" != "no" ; then 1686 brlapi_libs="-lbrlapi" 1687 cat > $TMPC << EOF 1688#include <brlapi.h> 1689#include <stddef.h> 1690int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 1691EOF 1692 if compile_prog "" "$brlapi_libs" ; then 1693 brlapi=yes 1694 libs_softmmu="$brlapi_libs $libs_softmmu" 1695 else 1696 if test "$brlapi" = "yes" ; then 1697 feature_not_found "brlapi" 1698 fi 1699 brlapi=no 1700 fi 1701fi 1702 1703########################################## 1704# curses probe 1705if test "$mingw32" = "yes" ; then 1706 curses_list="-lpdcurses" 1707else 1708 curses_list="-lncurses -lcurses" 1709fi 1710 1711if test "$curses" != "no" ; then 1712 curses_found=no 1713 cat > $TMPC << EOF 1714#include <curses.h> 1715#ifdef __OpenBSD__ 1716#define resize_term resizeterm 1717#endif 1718int main(void) { resize_term(0, 0); return curses_version(); } 1719EOF 1720 for curses_lib in $curses_list; do 1721 if compile_prog "" "$curses_lib" ; then 1722 curses_found=yes 1723 libs_softmmu="$curses_lib $libs_softmmu" 1724 break 1725 fi 1726 done 1727 if test "$curses_found" = "yes" ; then 1728 curses=yes 1729 else 1730 if test "$curses" = "yes" ; then 1731 feature_not_found "curses" 1732 fi 1733 curses=no 1734 fi 1735fi 1736 1737########################################## 1738# curl probe 1739 1740if $pkg_config libcurl --modversion >/dev/null 2>&1; then 1741 curlconfig="$pkg_config libcurl" 1742else 1743 curlconfig=curl-config 1744fi 1745 1746if test "$curl" != "no" ; then 1747 cat > $TMPC << EOF 1748#include <curl/curl.h> 1749int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 1750EOF 1751 curl_cflags=`$curlconfig --cflags 2>/dev/null` 1752 curl_libs=`$curlconfig --libs 2>/dev/null` 1753 if compile_prog "$curl_cflags" "$curl_libs" ; then 1754 curl=yes 1755 libs_tools="$curl_libs $libs_tools" 1756 libs_softmmu="$curl_libs $libs_softmmu" 1757 else 1758 if test "$curl" = "yes" ; then 1759 feature_not_found "curl" 1760 fi 1761 curl=no 1762 fi 1763fi # test "$curl" 1764 1765########################################## 1766# check framework probe 1767 1768if test "$check_utests" != "no" ; then 1769 cat > $TMPC << EOF 1770#include <check.h> 1771int main(void) { suite_create("qemu test"); return 0; } 1772EOF 1773 check_libs=`$pkg_config --libs check` 1774 if compile_prog "" $check_libs ; then 1775 check_utests=yes 1776 libs_tools="$check_libs $libs_tools" 1777 else 1778 if test "$check_utests" = "yes" ; then 1779 feature_not_found "check" 1780 fi 1781 check_utests=no 1782 fi 1783fi # test "$check_utests" 1784 1785########################################## 1786# bluez support probe 1787if test "$bluez" != "no" ; then 1788 cat > $TMPC << EOF 1789#include <bluetooth/bluetooth.h> 1790int main(void) { return bt_error(0); } 1791EOF 1792 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null` 1793 bluez_libs=`$pkg_config --libs bluez 2> /dev/null` 1794 if compile_prog "$bluez_cflags" "$bluez_libs" ; then 1795 bluez=yes 1796 libs_softmmu="$bluez_libs $libs_softmmu" 1797 else 1798 if test "$bluez" = "yes" ; then 1799 feature_not_found "bluez" 1800 fi 1801 bluez="no" 1802 fi 1803fi 1804 1805########################################## 1806# glib support probe 1807if $pkg_config --modversion gthread-2.0 gio-2.0 > /dev/null 2>&1 ; then 1808 glib_cflags=`$pkg_config --cflags gthread-2.0 gio-2.0 2>/dev/null` 1809 glib_libs=`$pkg_config --libs gthread-2.0 gio-2.0 2>/dev/null` 1810 libs_softmmu="$glib_libs $libs_softmmu" 1811 libs_tools="$glib_libs $libs_tools" 1812else 1813 echo "glib-2.0 required to compile QEMU" 1814 exit 1 1815fi 1816 1817########################################## 1818# pthread probe 1819PTHREADLIBS_LIST="-lpthread -lpthreadGC2" 1820 1821pthread=no 1822cat > $TMPC << EOF 1823#include <pthread.h> 1824int main(void) { pthread_create(0,0,0,0); return 0; } 1825EOF 1826if compile_prog "" "" ; then 1827 pthread=yes 1828else 1829 for pthread_lib in $PTHREADLIBS_LIST; do 1830 if compile_prog "" "$pthread_lib" ; then 1831 pthread=yes 1832 LIBS="$pthread_lib $LIBS" 1833 break 1834 fi 1835 done 1836fi 1837 1838if test "$mingw32" != yes -a "$pthread" = no; then 1839 echo 1840 echo "Error: pthread check failed" 1841 echo "Make sure to have the pthread libs and headers installed." 1842 echo 1843 exit 1 1844fi 1845 1846########################################## 1847# rbd probe 1848if test "$rbd" != "no" ; then 1849 cat > $TMPC <<EOF 1850#include <stdio.h> 1851#include <rbd/librbd.h> 1852int main(void) { 1853 rados_t cluster; 1854 rados_create(&cluster, NULL); 1855 return 0; 1856} 1857EOF 1858 rbd_libs="-lrbd -lrados" 1859 if compile_prog "" "$rbd_libs" ; then 1860 rbd=yes 1861 libs_tools="$rbd_libs $libs_tools" 1862 libs_softmmu="$rbd_libs $libs_softmmu" 1863 else 1864 if test "$rbd" = "yes" ; then 1865 feature_not_found "rados block device" 1866 fi 1867 rbd=no 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 else 1950 if test "$fdt" = "yes" ; then 1951 feature_not_found "fdt" 1952 fi 1953 fdt_libs= 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 else 1971 if test "$opengl" = "yes" ; then 1972 feature_not_found "opengl" 1973 fi 1974 opengl_libs= 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 /* Note that we use epoll_create1 as a value, not as 2229 * a function being called. This is necessary so that on 2230 * old SPARC glibc versions where the function was present in 2231 * the library but not declared in the header file we will 2232 * fail the configure check. (Otherwise we will get a compiler 2233 * warning but not an error, and will proceed to fail the 2234 * qemu compile where we compile with -Werror.) 2235 */ 2236 epoll_create1; 2237 return 0; 2238} 2239EOF 2240if compile_prog "$ARCH_CFLAGS" "" ; then 2241 epoll_create1=yes 2242fi 2243 2244epoll_pwait=no 2245cat > $TMPC << EOF 2246#include <sys/epoll.h> 2247 2248int main(void) 2249{ 2250 epoll_pwait(0, 0, 0, 0, 0); 2251 return 0; 2252} 2253EOF 2254if compile_prog "$ARCH_CFLAGS" "" ; then 2255 epoll_pwait=yes 2256fi 2257 2258# Check if tools are available to build documentation. 2259if test "$docs" != "no" ; then 2260 if has makeinfo && has pod2man; then 2261 docs=yes 2262 else 2263 if test "$docs" = "yes" ; then 2264 feature_not_found "docs" 2265 fi 2266 docs=no 2267 fi 2268fi 2269 2270# Search for bswap_32 function 2271byteswap_h=no 2272cat > $TMPC << EOF 2273#include <byteswap.h> 2274int main(void) { return bswap_32(0); } 2275EOF 2276if compile_prog "" "" ; then 2277 byteswap_h=yes 2278fi 2279 2280# Search for bswap_32 function 2281bswap_h=no 2282cat > $TMPC << EOF 2283#include <sys/endian.h> 2284#include <sys/types.h> 2285#include <machine/bswap.h> 2286int main(void) { return bswap32(0); } 2287EOF 2288if compile_prog "" "" ; then 2289 bswap_h=yes 2290fi 2291 2292########################################## 2293# Do we need librt 2294cat > $TMPC <<EOF 2295#include <signal.h> 2296#include <time.h> 2297int main(void) { clockid_t id; return clock_gettime(id, NULL); } 2298EOF 2299 2300if compile_prog "" "" ; then 2301 : 2302elif compile_prog "" "-lrt" ; then 2303 LIBS="-lrt $LIBS" 2304fi 2305 2306if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 2307 "$aix" != "yes" -a "$haiku" != "yes" ; then 2308 libs_softmmu="-lutil $libs_softmmu" 2309fi 2310 2311########################################## 2312# check if the compiler defines offsetof 2313 2314need_offsetof=yes 2315cat > $TMPC << EOF 2316#include <stddef.h> 2317int main(void) { struct s { int f; }; return offsetof(struct s, f); } 2318EOF 2319if compile_prog "" "" ; then 2320 need_offsetof=no 2321fi 2322 2323########################################## 2324# check if the compiler understands attribute warn_unused_result 2325# 2326# This could be smarter, but gcc -Werror does not error out even when warning 2327# about attribute warn_unused_result 2328 2329gcc_attribute_warn_unused_result=no 2330cat > $TMPC << EOF 2331#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4) 2332#error gcc 3.3 or older 2333#endif 2334int main(void) { return 0;} 2335EOF 2336if compile_prog "" ""; then 2337 gcc_attribute_warn_unused_result=yes 2338fi 2339 2340# spice probe 2341if test "$spice" != "no" ; then 2342 cat > $TMPC << EOF 2343#include <spice.h> 2344int main(void) { spice_server_new(); return 0; } 2345EOF 2346 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 2347 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 2348 if $pkg_config --atleast-version=0.6.0 spice-server >/dev/null 2>&1 && \ 2349 compile_prog "$spice_cflags" "$spice_libs" ; then 2350 spice="yes" 2351 libs_softmmu="$libs_softmmu $spice_libs" 2352 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 2353 else 2354 if test "$spice" = "yes" ; then 2355 feature_not_found "spice" 2356 fi 2357 spice="no" 2358 fi 2359fi 2360 2361# check for libcacard for smartcard support 2362if test "$smartcard" != "no" ; then 2363 smartcard="yes" 2364 smartcard_cflags="" 2365 # TODO - what's the minimal nss version we support? 2366 if test "$smartcard_nss" != "no"; then 2367 if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 ; then 2368 smartcard_nss="yes" 2369 smartcard_cflags="-I\$(SRC_PATH)/libcacard" 2370 libcacard_libs=$($pkg_config --libs nss 2>/dev/null) 2371 libcacard_cflags=$($pkg_config --cflags nss 2>/dev/null) 2372 QEMU_CFLAGS="$QEMU_CFLAGS $smartcard_cflags $libcacard_cflags" 2373 LIBS="$libcacard_libs $LIBS" 2374 else 2375 if test "$smartcard_nss" = "yes"; then 2376 feature_not_found "nss" 2377 fi 2378 smartcard_nss="no" 2379 fi 2380 fi 2381fi 2382if test "$smartcard" = "no" ; then 2383 smartcard_nss="no" 2384fi 2385 2386########################################## 2387 2388########################################## 2389# check if we have fdatasync 2390 2391fdatasync=no 2392cat > $TMPC << EOF 2393#include <unistd.h> 2394int main(void) { 2395#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 2396return fdatasync(0); 2397#else 2398#abort Not supported 2399#endif 2400} 2401EOF 2402if compile_prog "" "" ; then 2403 fdatasync=yes 2404fi 2405 2406########################################## 2407# check if we have madvise 2408 2409madvise=no 2410cat > $TMPC << EOF 2411#include <sys/types.h> 2412#include <sys/mman.h> 2413#include <stddef.h> 2414int main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 2415EOF 2416if compile_prog "" "" ; then 2417 madvise=yes 2418fi 2419 2420########################################## 2421# check if we have posix_madvise 2422 2423posix_madvise=no 2424cat > $TMPC << EOF 2425#include <sys/mman.h> 2426#include <stddef.h> 2427int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 2428EOF 2429if compile_prog "" "" ; then 2430 posix_madvise=yes 2431fi 2432 2433########################################## 2434# check if trace backend exists 2435 2436sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null 2437if test "$?" -ne 0 ; then 2438 echo 2439 echo "Error: invalid trace backend" 2440 echo "Please choose a supported trace backend." 2441 echo 2442 exit 1 2443fi 2444 2445########################################## 2446# For 'ust' backend, test if ust headers are present 2447if test "$trace_backend" = "ust"; then 2448 cat > $TMPC << EOF 2449#include <ust/tracepoint.h> 2450#include <ust/marker.h> 2451int main(void) { return 0; } 2452EOF 2453 if compile_prog "" "" ; then 2454 LIBS="-lust $LIBS" 2455 else 2456 echo 2457 echo "Error: Trace backend 'ust' missing libust header files" 2458 echo 2459 exit 1 2460 fi 2461fi 2462 2463########################################## 2464# For 'dtrace' backend, test if 'dtrace' command is present 2465if test "$trace_backend" = "dtrace"; then 2466 if ! has 'dtrace' ; then 2467 echo 2468 echo "Error: dtrace command is not found in PATH $PATH" 2469 echo 2470 exit 1 2471 fi 2472 trace_backend_stap="no" 2473 if has 'stap' ; then 2474 trace_backend_stap="yes" 2475 fi 2476fi 2477 2478########################################## 2479# End of CC checks 2480# After here, no more $cc or $ld runs 2481 2482if test "$debug" = "no" ; then 2483 CFLAGS="-O2 $CFLAGS" 2484fi 2485 2486# Consult white-list to determine whether to enable werror 2487# by default. Only enable by default for git builds 2488z_version=`cut -f3 -d. $source_path/VERSION` 2489 2490if test -z "$werror" ; then 2491 if test "$z_version" = "50" -a \ 2492 "$linux" = "yes" ; then 2493 werror="yes" 2494 else 2495 werror="no" 2496 fi 2497fi 2498 2499# Disable zero malloc errors for official releases unless explicitly told to 2500# enable/disable 2501if test -z "$zero_malloc" ; then 2502 if test "$z_version" = "50" ; then 2503 zero_malloc="no" 2504 else 2505 zero_malloc="yes" 2506 fi 2507fi 2508 2509if test "$werror" = "yes" ; then 2510 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 2511fi 2512 2513if test "$solaris" = "no" ; then 2514 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 2515 LDFLAGS="-Wl,--warn-common $LDFLAGS" 2516 fi 2517fi 2518 2519# Use ASLR, no-SEH and DEP if available 2520if test "$mingw32" = "yes" ; then 2521 for flag in --dynamicbase --no-seh --nxcompat; do 2522 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 2523 LDFLAGS="-Wl,$flag $LDFLAGS" 2524 fi 2525 done 2526fi 2527 2528confdir=$sysconfdir$confsuffix 2529 2530tools= 2531if test "$softmmu" = yes ; then 2532 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 2533 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 2534 tools="qemu-nbd\$(EXESUF) $tools" 2535 if [ "$check_utests" = "yes" ]; then 2536 tools="check-qint check-qstring check-qdict check-qlist $tools" 2537 tools="check-qfloat check-qjson $tools" 2538 fi 2539 fi 2540fi 2541 2542# Mac OS X ships with a broken assembler 2543roms= 2544if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 2545 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 2546 "$softmmu" = yes ; then 2547 roms="optionrom" 2548fi 2549if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 2550 roms="$roms spapr-rtas" 2551fi 2552 2553echo "Install prefix $prefix" 2554echo "BIOS directory `eval echo $datadir`" 2555echo "binary directory `eval echo $bindir`" 2556echo "library directory `eval echo $libdir`" 2557echo "config directory `eval echo $sysconfdir`" 2558if test "$mingw32" = "no" ; then 2559echo "Manual directory `eval echo $mandir`" 2560echo "ELF interp prefix $interp_prefix" 2561fi 2562echo "Source path $source_path" 2563echo "C compiler $cc" 2564echo "Host C compiler $host_cc" 2565echo "CFLAGS $CFLAGS" 2566echo "QEMU_CFLAGS $QEMU_CFLAGS" 2567echo "LDFLAGS $LDFLAGS" 2568echo "make $make" 2569echo "install $install" 2570echo "host CPU $cpu" 2571echo "host big endian $bigendian" 2572echo "target list $target_list" 2573echo "tcg debug enabled $debug_tcg" 2574echo "Mon debug enabled $debug_mon" 2575echo "gprof enabled $gprof" 2576echo "sparse enabled $sparse" 2577echo "strip binaries $strip_opt" 2578echo "profiler $profiler" 2579echo "static build $static" 2580echo "-Werror enabled $werror" 2581if test "$darwin" = "yes" ; then 2582 echo "Cocoa support $cocoa" 2583fi 2584echo "SDL support $sdl" 2585echo "curses support $curses" 2586echo "curl support $curl" 2587echo "check support $check_utests" 2588echo "mingw32 support $mingw32" 2589echo "Audio drivers $audio_drv_list" 2590echo "Extra audio cards $audio_card_list" 2591echo "Block whitelist $block_drv_whitelist" 2592echo "Mixer emulation $mixemu" 2593echo "VNC support $vnc" 2594if test "$vnc" = "yes" ; then 2595 echo "VNC TLS support $vnc_tls" 2596 echo "VNC SASL support $vnc_sasl" 2597 echo "VNC JPEG support $vnc_jpeg" 2598 echo "VNC PNG support $vnc_png" 2599 echo "VNC thread $vnc_thread" 2600fi 2601if test -n "$sparc_cpu"; then 2602 echo "Target Sparc Arch $sparc_cpu" 2603fi 2604echo "xen support $xen" 2605echo "brlapi support $brlapi" 2606echo "bluez support $bluez" 2607echo "Documentation $docs" 2608[ ! -z "$uname_release" ] && \ 2609echo "uname -r $uname_release" 2610echo "NPTL support $nptl" 2611echo "GUEST_BASE $guest_base" 2612echo "PIE user targets $user_pie" 2613echo "vde support $vde" 2614echo "IO thread $io_thread" 2615echo "Linux AIO support $linux_aio" 2616echo "ATTR/XATTR support $attr" 2617echo "Install blobs $blobs" 2618echo "KVM support $kvm" 2619echo "fdt support $fdt" 2620echo "preadv support $preadv" 2621echo "fdatasync $fdatasync" 2622echo "madvise $madvise" 2623echo "posix_madvise $posix_madvise" 2624echo "uuid support $uuid" 2625echo "vhost-net support $vhost_net" 2626echo "Trace backend $trace_backend" 2627echo "Trace output file $trace_file-<pid>" 2628echo "spice support $spice" 2629echo "rbd support $rbd" 2630echo "xfsctl support $xfs" 2631echo "nss used $smartcard_nss" 2632echo "OpenGL support $opengl" 2633 2634if test $sdl_too_old = "yes"; then 2635echo "-> Your SDL version is too old - please upgrade to have SDL support" 2636fi 2637 2638config_host_mak="config-host.mak" 2639config_host_ld="config-host.ld" 2640 2641echo "# Automatically generated by configure - do not modify" > $config_host_mak 2642printf "# Configured with:" >> $config_host_mak 2643printf " '%s'" "$0" "$@" >> $config_host_mak 2644echo >> $config_host_mak 2645 2646echo all: >> $config_host_mak 2647echo "prefix=$prefix" >> $config_host_mak 2648echo "bindir=$bindir" >> $config_host_mak 2649echo "libdir=$libdir" >> $config_host_mak 2650echo "mandir=$mandir" >> $config_host_mak 2651echo "datadir=$datadir" >> $config_host_mak 2652echo "sysconfdir=$sysconfdir" >> $config_host_mak 2653echo "docdir=$docdir" >> $config_host_mak 2654echo "confdir=$confdir" >> $config_host_mak 2655 2656case "$cpu" in 2657 i386|x86_64|alpha|cris|hppa|ia64|lm32|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64|unicore32) 2658 ARCH=$cpu 2659 ;; 2660 armv4b|armv4l) 2661 ARCH=arm 2662 ;; 2663esac 2664echo "ARCH=$ARCH" >> $config_host_mak 2665if test "$debug_tcg" = "yes" ; then 2666 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 2667fi 2668if test "$debug_mon" = "yes" ; then 2669 echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak 2670fi 2671if test "$debug" = "yes" ; then 2672 echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak 2673fi 2674if test "$strip_opt" = "yes" ; then 2675 echo "STRIP=${strip}" >> $config_host_mak 2676fi 2677if test "$bigendian" = "yes" ; then 2678 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 2679fi 2680echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak 2681if test "$mingw32" = "yes" ; then 2682 echo "CONFIG_WIN32=y" >> $config_host_mak 2683 rc_version=`cat $source_path/VERSION` 2684 version_major=${rc_version%%.*} 2685 rc_version=${rc_version#*.} 2686 version_minor=${rc_version%%.*} 2687 rc_version=${rc_version#*.} 2688 version_subminor=${rc_version%%.*} 2689 version_micro=0 2690 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 2691 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 2692else 2693 echo "CONFIG_POSIX=y" >> $config_host_mak 2694fi 2695 2696if test "$linux" = "yes" ; then 2697 echo "CONFIG_LINUX=y" >> $config_host_mak 2698fi 2699 2700if test "$darwin" = "yes" ; then 2701 echo "CONFIG_DARWIN=y" >> $config_host_mak 2702fi 2703 2704if test "$aix" = "yes" ; then 2705 echo "CONFIG_AIX=y" >> $config_host_mak 2706fi 2707 2708if test "$solaris" = "yes" ; then 2709 echo "CONFIG_SOLARIS=y" >> $config_host_mak 2710 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 2711 if test "$needs_libsunmath" = "yes" ; then 2712 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 2713 fi 2714fi 2715if test "$haiku" = "yes" ; then 2716 echo "CONFIG_HAIKU=y" >> $config_host_mak 2717fi 2718if test "$static" = "yes" ; then 2719 echo "CONFIG_STATIC=y" >> $config_host_mak 2720fi 2721if test $profiler = "yes" ; then 2722 echo "CONFIG_PROFILER=y" >> $config_host_mak 2723fi 2724if test "$slirp" = "yes" ; then 2725 echo "CONFIG_SLIRP=y" >> $config_host_mak 2726 QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES" 2727fi 2728if test "$vde" = "yes" ; then 2729 echo "CONFIG_VDE=y" >> $config_host_mak 2730fi 2731for card in $audio_card_list; do 2732 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'` 2733 echo "$def=y" >> $config_host_mak 2734done 2735echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 2736for drv in $audio_drv_list; do 2737 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'` 2738 echo "$def=y" >> $config_host_mak 2739 if test "$drv" = "fmod"; then 2740 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 2741 fi 2742done 2743if test "$audio_pt_int" = "yes" ; then 2744 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 2745fi 2746if test "$audio_win_int" = "yes" ; then 2747 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 2748fi 2749echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak 2750if test "$mixemu" = "yes" ; then 2751 echo "CONFIG_MIXEMU=y" >> $config_host_mak 2752fi 2753if test "$vnc" = "yes" ; then 2754 echo "CONFIG_VNC=y" >> $config_host_mak 2755fi 2756if test "$vnc_tls" = "yes" ; then 2757 echo "CONFIG_VNC_TLS=y" >> $config_host_mak 2758 echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak 2759fi 2760if test "$vnc_sasl" = "yes" ; then 2761 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 2762 echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak 2763fi 2764if test "$vnc_jpeg" = "yes" ; then 2765 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 2766 echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak 2767fi 2768if test "$vnc_png" = "yes" ; then 2769 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 2770 echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak 2771fi 2772if test "$vnc_thread" = "yes" ; then 2773 echo "CONFIG_VNC_THREAD=y" >> $config_host_mak 2774fi 2775if test "$fnmatch" = "yes" ; then 2776 echo "CONFIG_FNMATCH=y" >> $config_host_mak 2777fi 2778if test "$uuid" = "yes" ; then 2779 echo "CONFIG_UUID=y" >> $config_host_mak 2780fi 2781if test "$xfs" = "yes" ; then 2782 echo "CONFIG_XFS=y" >> $config_host_mak 2783fi 2784qemu_version=`head $source_path/VERSION` 2785echo "VERSION=$qemu_version" >>$config_host_mak 2786echo "PKGVERSION=$pkgversion" >>$config_host_mak 2787echo "SRC_PATH=$source_path" >> $config_host_mak 2788echo "TARGET_DIRS=$target_list" >> $config_host_mak 2789if [ "$docs" = "yes" ] ; then 2790 echo "BUILD_DOCS=yes" >> $config_host_mak 2791fi 2792if test "$sdl" = "yes" ; then 2793 echo "CONFIG_SDL=y" >> $config_host_mak 2794 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 2795fi 2796if test "$cocoa" = "yes" ; then 2797 echo "CONFIG_COCOA=y" >> $config_host_mak 2798fi 2799if test "$curses" = "yes" ; then 2800 echo "CONFIG_CURSES=y" >> $config_host_mak 2801fi 2802if test "$atfile" = "yes" ; then 2803 echo "CONFIG_ATFILE=y" >> $config_host_mak 2804fi 2805if test "$utimens" = "yes" ; then 2806 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 2807fi 2808if test "$pipe2" = "yes" ; then 2809 echo "CONFIG_PIPE2=y" >> $config_host_mak 2810fi 2811if test "$accept4" = "yes" ; then 2812 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 2813fi 2814if test "$splice" = "yes" ; then 2815 echo "CONFIG_SPLICE=y" >> $config_host_mak 2816fi 2817if test "$eventfd" = "yes" ; then 2818 echo "CONFIG_EVENTFD=y" >> $config_host_mak 2819fi 2820if test "$fallocate" = "yes" ; then 2821 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 2822fi 2823if test "$sync_file_range" = "yes" ; then 2824 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 2825fi 2826if test "$fiemap" = "yes" ; then 2827 echo "CONFIG_FIEMAP=y" >> $config_host_mak 2828fi 2829if test "$dup3" = "yes" ; then 2830 echo "CONFIG_DUP3=y" >> $config_host_mak 2831fi 2832if test "$epoll" = "yes" ; then 2833 echo "CONFIG_EPOLL=y" >> $config_host_mak 2834fi 2835if test "$epoll_create1" = "yes" ; then 2836 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 2837fi 2838if test "$epoll_pwait" = "yes" ; then 2839 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 2840fi 2841if test "$inotify" = "yes" ; then 2842 echo "CONFIG_INOTIFY=y" >> $config_host_mak 2843fi 2844if test "$inotify1" = "yes" ; then 2845 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 2846fi 2847if test "$byteswap_h" = "yes" ; then 2848 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 2849fi 2850if test "$bswap_h" = "yes" ; then 2851 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 2852fi 2853if test "$curl" = "yes" ; then 2854 echo "CONFIG_CURL=y" >> $config_host_mak 2855 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 2856fi 2857if test "$brlapi" = "yes" ; then 2858 echo "CONFIG_BRLAPI=y" >> $config_host_mak 2859fi 2860if test "$bluez" = "yes" ; then 2861 echo "CONFIG_BLUEZ=y" >> $config_host_mak 2862 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 2863fi 2864echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 2865if test "$xen" = "yes" ; then 2866 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 2867 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 2868fi 2869if test "$io_thread" = "yes" ; then 2870 echo "CONFIG_IOTHREAD=y" >> $config_host_mak 2871fi 2872if test "$linux_aio" = "yes" ; then 2873 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 2874fi 2875if test "$attr" = "yes" ; then 2876 echo "CONFIG_ATTR=y" >> $config_host_mak 2877fi 2878if test "$linux" = "yes" ; then 2879 if test "$attr" = "yes" ; then 2880 echo "CONFIG_VIRTFS=y" >> $config_host_mak 2881 fi 2882fi 2883if test "$blobs" = "yes" ; then 2884 echo "INSTALL_BLOBS=yes" >> $config_host_mak 2885fi 2886if test "$iovec" = "yes" ; then 2887 echo "CONFIG_IOVEC=y" >> $config_host_mak 2888fi 2889if test "$preadv" = "yes" ; then 2890 echo "CONFIG_PREADV=y" >> $config_host_mak 2891fi 2892if test "$fdt" = "yes" ; then 2893 echo "CONFIG_FDT=y" >> $config_host_mak 2894fi 2895if test "$signalfd" = "yes" ; then 2896 echo "CONFIG_SIGNALFD=y" >> $config_host_mak 2897fi 2898if test "$need_offsetof" = "yes" ; then 2899 echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak 2900fi 2901if test "$gcc_attribute_warn_unused_result" = "yes" ; then 2902 echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak 2903fi 2904if test "$fdatasync" = "yes" ; then 2905 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 2906fi 2907if test "$madvise" = "yes" ; then 2908 echo "CONFIG_MADVISE=y" >> $config_host_mak 2909fi 2910if test "$posix_madvise" = "yes" ; then 2911 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 2912fi 2913 2914if test "$spice" = "yes" ; then 2915 echo "CONFIG_SPICE=y" >> $config_host_mak 2916fi 2917 2918if test "$smartcard" = "yes" ; then 2919 echo "CONFIG_SMARTCARD=y" >> $config_host_mak 2920fi 2921 2922if test "$smartcard_nss" = "yes" ; then 2923 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 2924fi 2925 2926if test "$opengl" = "yes" ; then 2927 echo "CONFIG_OPENGL=y" >> $config_host_mak 2928fi 2929 2930# XXX: suppress that 2931if [ "$bsd" = "yes" ] ; then 2932 echo "CONFIG_BSD=y" >> $config_host_mak 2933fi 2934 2935echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak 2936 2937if test "$zero_malloc" = "yes" ; then 2938 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 2939fi 2940if test "$rbd" = "yes" ; then 2941 echo "CONFIG_RBD=y" >> $config_host_mak 2942fi 2943 2944# USB host support 2945case "$usb" in 2946linux) 2947 echo "HOST_USB=linux" >> $config_host_mak 2948;; 2949bsd) 2950 echo "HOST_USB=bsd" >> $config_host_mak 2951;; 2952*) 2953 echo "HOST_USB=stub" >> $config_host_mak 2954;; 2955esac 2956 2957echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak 2958if test "$trace_backend" = "simple"; then 2959 echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak 2960fi 2961# Set the appropriate trace file. 2962if test "$trace_backend" = "simple"; then 2963 trace_file="\"$trace_file-\" FMT_pid" 2964fi 2965if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then 2966 echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak 2967fi 2968echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 2969 2970echo "TOOLS=$tools" >> $config_host_mak 2971echo "ROMS=$roms" >> $config_host_mak 2972echo "MAKE=$make" >> $config_host_mak 2973echo "INSTALL=$install" >> $config_host_mak 2974echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak 2975echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak 2976echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak 2977echo "CC=$cc" >> $config_host_mak 2978echo "CC_I386=$cc_i386" >> $config_host_mak 2979echo "HOST_CC=$host_cc" >> $config_host_mak 2980echo "AR=$ar" >> $config_host_mak 2981echo "OBJCOPY=$objcopy" >> $config_host_mak 2982echo "LD=$ld" >> $config_host_mak 2983echo "WINDRES=$windres" >> $config_host_mak 2984echo "LIBTOOL=$libtool" >> $config_host_mak 2985echo "CFLAGS=$CFLAGS" >> $config_host_mak 2986echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 2987echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 2988if test "$sparse" = "yes" ; then 2989 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 2990 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 2991 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 2992fi 2993echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak 2994echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 2995echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak 2996echo "ARLIBS_END=$arlibs_end" >> $config_host_mak 2997echo "LIBS+=$LIBS" >> $config_host_mak 2998echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 2999echo "EXESUF=$EXESUF" >> $config_host_mak 3000 3001# generate list of library paths for linker script 3002 3003$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld} 3004 3005if test -f ${config_host_ld}~ ; then 3006 if cmp -s $config_host_ld ${config_host_ld}~ ; then 3007 mv ${config_host_ld}~ $config_host_ld 3008 else 3009 rm ${config_host_ld}~ 3010 fi 3011fi 3012 3013for d in libdis libdis-user; do 3014 mkdir -p $d 3015 symlink $source_path/Makefile.dis $d/Makefile 3016 echo > $d/config.mak 3017done 3018if test "$static" = "no" -a "$user_pie" = "yes" ; then 3019 echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak 3020fi 3021 3022for target in $target_list; do 3023target_dir="$target" 3024config_target_mak=$target_dir/config-target.mak 3025target_arch2=`echo $target | cut -d '-' -f 1` 3026target_bigendian="no" 3027 3028case "$target_arch2" in 3029 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus) 3030 target_bigendian=yes 3031 ;; 3032esac 3033target_softmmu="no" 3034target_user_only="no" 3035target_linux_user="no" 3036target_darwin_user="no" 3037target_bsd_user="no" 3038case "$target" in 3039 ${target_arch2}-softmmu) 3040 target_softmmu="yes" 3041 ;; 3042 ${target_arch2}-linux-user) 3043 if test "$linux" != "yes" ; then 3044 echo "ERROR: Target '$target' is only available on a Linux host" 3045 exit 1 3046 fi 3047 target_user_only="yes" 3048 target_linux_user="yes" 3049 ;; 3050 ${target_arch2}-darwin-user) 3051 if test "$darwin" != "yes" ; then 3052 echo "ERROR: Target '$target' is only available on a Darwin host" 3053 exit 1 3054 fi 3055 target_user_only="yes" 3056 target_darwin_user="yes" 3057 ;; 3058 ${target_arch2}-bsd-user) 3059 if test "$bsd" != "yes" ; then 3060 echo "ERROR: Target '$target' is only available on a BSD host" 3061 exit 1 3062 fi 3063 target_user_only="yes" 3064 target_bsd_user="yes" 3065 ;; 3066 *) 3067 echo "ERROR: Target '$target' not recognised" 3068 exit 1 3069 ;; 3070esac 3071 3072mkdir -p $target_dir 3073mkdir -p $target_dir/fpu 3074mkdir -p $target_dir/tcg 3075mkdir -p $target_dir/ide 3076mkdir -p $target_dir/9pfs 3077if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then 3078 mkdir -p $target_dir/nwfpe 3079fi 3080symlink $source_path/Makefile.target $target_dir/Makefile 3081 3082 3083echo "# Automatically generated by configure - do not modify" > $config_target_mak 3084 3085bflt="no" 3086target_nptl="no" 3087interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"` 3088echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 3089gdb_xml_files="" 3090target_short_alignment=2 3091target_int_alignment=4 3092target_long_alignment=4 3093target_llong_alignment=8 3094target_libs_softmmu= 3095 3096TARGET_ARCH="$target_arch2" 3097TARGET_BASE_ARCH="" 3098TARGET_ABI_DIR="" 3099 3100case "$target_arch2" in 3101 i386) 3102 target_phys_bits=64 3103 ;; 3104 x86_64) 3105 TARGET_BASE_ARCH=i386 3106 target_phys_bits=64 3107 target_long_alignment=8 3108 ;; 3109 alpha) 3110 target_phys_bits=64 3111 target_long_alignment=8 3112 target_nptl="yes" 3113 ;; 3114 arm|armeb) 3115 TARGET_ARCH=arm 3116 bflt="yes" 3117 target_nptl="yes" 3118 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 3119 target_phys_bits=32 3120 target_llong_alignment=4 3121 ;; 3122 cris) 3123 target_nptl="yes" 3124 target_phys_bits=32 3125 ;; 3126 lm32) 3127 target_phys_bits=32 3128 target_libs_softmmu="$opengl_libs" 3129 ;; 3130 m68k) 3131 bflt="yes" 3132 gdb_xml_files="cf-core.xml cf-fp.xml" 3133 target_phys_bits=32 3134 target_int_alignment=2 3135 target_long_alignment=2 3136 target_llong_alignment=2 3137 ;; 3138 microblaze|microblazeel) 3139 TARGET_ARCH=microblaze 3140 bflt="yes" 3141 target_nptl="yes" 3142 target_phys_bits=32 3143 target_libs_softmmu="$fdt_libs" 3144 ;; 3145 mips|mipsel) 3146 TARGET_ARCH=mips 3147 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 3148 target_nptl="yes" 3149 target_phys_bits=64 3150 ;; 3151 mipsn32|mipsn32el) 3152 TARGET_ARCH=mipsn32 3153 TARGET_BASE_ARCH=mips 3154 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 3155 target_phys_bits=64 3156 ;; 3157 mips64|mips64el) 3158 TARGET_ARCH=mips64 3159 TARGET_BASE_ARCH=mips 3160 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 3161 target_phys_bits=64 3162 target_long_alignment=8 3163 ;; 3164 ppc) 3165 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3166 target_phys_bits=32 3167 target_nptl="yes" 3168 target_libs_softmmu="$fdt_libs" 3169 ;; 3170 ppcemb) 3171 TARGET_BASE_ARCH=ppc 3172 TARGET_ABI_DIR=ppc 3173 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3174 target_phys_bits=64 3175 target_nptl="yes" 3176 target_libs_softmmu="$fdt_libs" 3177 ;; 3178 ppc64) 3179 TARGET_BASE_ARCH=ppc 3180 TARGET_ABI_DIR=ppc 3181 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3182 target_phys_bits=64 3183 target_long_alignment=8 3184 target_libs_softmmu="$fdt_libs" 3185 ;; 3186 ppc64abi32) 3187 TARGET_ARCH=ppc64 3188 TARGET_BASE_ARCH=ppc 3189 TARGET_ABI_DIR=ppc 3190 echo "TARGET_ABI32=y" >> $config_target_mak 3191 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3192 target_phys_bits=64 3193 target_libs_softmmu="$fdt_libs" 3194 ;; 3195 sh4|sh4eb) 3196 TARGET_ARCH=sh4 3197 bflt="yes" 3198 target_nptl="yes" 3199 target_phys_bits=32 3200 ;; 3201 sparc) 3202 target_phys_bits=64 3203 ;; 3204 sparc64) 3205 TARGET_BASE_ARCH=sparc 3206 target_phys_bits=64 3207 target_long_alignment=8 3208 ;; 3209 sparc32plus) 3210 TARGET_ARCH=sparc64 3211 TARGET_BASE_ARCH=sparc 3212 TARGET_ABI_DIR=sparc 3213 echo "TARGET_ABI32=y" >> $config_target_mak 3214 target_phys_bits=64 3215 ;; 3216 s390x) 3217 target_nptl="yes" 3218 target_phys_bits=64 3219 target_long_alignment=8 3220 ;; 3221 unicore32) 3222 target_phys_bits=32 3223 ;; 3224 *) 3225 echo "Unsupported target CPU" 3226 exit 1 3227 ;; 3228esac 3229echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak 3230echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak 3231echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak 3232echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak 3233echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak 3234target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`" 3235echo "TARGET_$target_arch_name=y" >> $config_target_mak 3236echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak 3237# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 3238if [ "$TARGET_BASE_ARCH" = "" ]; then 3239 TARGET_BASE_ARCH=$TARGET_ARCH 3240fi 3241echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 3242if [ "$TARGET_ABI_DIR" = "" ]; then 3243 TARGET_ABI_DIR=$TARGET_ARCH 3244fi 3245echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 3246case "$target_arch2" in 3247 i386|x86_64) 3248 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 3249 target_phys_bits=64 3250 echo "CONFIG_XEN=y" >> $config_target_mak 3251 if test "$cpu" = "i386" -o "$cpu" = "x86_64"; then 3252 echo "CONFIG_XEN_MAPCACHE=y" >> $config_target_mak 3253 fi 3254 fi 3255esac 3256case "$target_arch2" in 3257 i386|x86_64|ppcemb|ppc|ppc64|s390x) 3258 # Make sure the target and host cpus are compatible 3259 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 3260 \( "$target_arch2" = "$cpu" -o \ 3261 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 3262 \( "$target_arch2" = "ppc64" -a "$cpu" = "ppc" \) -o \ 3263 \( "$target_arch2" = "ppc" -a "$cpu" = "ppc64" \) -o \ 3264 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 3265 \( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \ 3266 \( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then 3267 echo "CONFIG_KVM=y" >> $config_target_mak 3268 if test $vhost_net = "yes" ; then 3269 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 3270 fi 3271 fi 3272esac 3273if test "$target_bigendian" = "yes" ; then 3274 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 3275fi 3276if test "$target_softmmu" = "yes" ; then 3277 echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak 3278 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 3279 echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak 3280 echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak 3281 echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak 3282fi 3283if test "$target_user_only" = "yes" ; then 3284 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 3285fi 3286if test "$target_linux_user" = "yes" ; then 3287 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 3288fi 3289if test "$target_darwin_user" = "yes" ; then 3290 echo "CONFIG_DARWIN_USER=y" >> $config_target_mak 3291fi 3292if test "$smartcard_nss" = "yes" ; then 3293 echo "subdir-$target: subdir-libcacard" >> $config_host_mak 3294 echo "libcacard_libs=$libcacard_libs" >> $config_host_mak 3295 echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak 3296fi 3297list="" 3298if test ! -z "$gdb_xml_files" ; then 3299 for x in $gdb_xml_files; do 3300 list="$list $source_path/gdb-xml/$x" 3301 done 3302 echo "TARGET_XML_FILES=$list" >> $config_target_mak 3303fi 3304 3305if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 3306 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 3307fi 3308if test "$target_user_only" = "yes" \ 3309 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then 3310 echo "CONFIG_USE_NPTL=y" >> $config_target_mak 3311fi 3312if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 3313 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 3314fi 3315if test "$target_bsd_user" = "yes" ; then 3316 echo "CONFIG_BSD_USER=y" >> $config_target_mak 3317fi 3318 3319# generate QEMU_CFLAGS/LDFLAGS for targets 3320 3321cflags="" 3322includes="" 3323ldflags="" 3324 3325if test "$ARCH" = "sparc64" ; then 3326 includes="-I\$(SRC_PATH)/tcg/sparc $includes" 3327elif test "$ARCH" = "s390x" ; then 3328 includes="-I\$(SRC_PATH)/tcg/s390 $includes" 3329elif test "$ARCH" = "x86_64" ; then 3330 includes="-I\$(SRC_PATH)/tcg/i386 $includes" 3331else 3332 includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes" 3333fi 3334includes="-I\$(SRC_PATH)/tcg $includes" 3335includes="-I\$(SRC_PATH)/fpu $includes" 3336 3337if test "$target_user_only" = "yes" ; then 3338 libdis_config_mak=libdis-user/config.mak 3339else 3340 libdis_config_mak=libdis/config.mak 3341fi 3342 3343for i in $ARCH $TARGET_BASE_ARCH ; do 3344 case "$i" in 3345 alpha) 3346 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 3347 echo "CONFIG_ALPHA_DIS=y" >> $libdis_config_mak 3348 ;; 3349 arm) 3350 echo "CONFIG_ARM_DIS=y" >> $config_target_mak 3351 echo "CONFIG_ARM_DIS=y" >> $libdis_config_mak 3352 ;; 3353 cris) 3354 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 3355 echo "CONFIG_CRIS_DIS=y" >> $libdis_config_mak 3356 ;; 3357 hppa) 3358 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 3359 echo "CONFIG_HPPA_DIS=y" >> $libdis_config_mak 3360 ;; 3361 i386|x86_64) 3362 echo "CONFIG_I386_DIS=y" >> $config_target_mak 3363 echo "CONFIG_I386_DIS=y" >> $libdis_config_mak 3364 ;; 3365 ia64*) 3366 echo "CONFIG_IA64_DIS=y" >> $config_target_mak 3367 echo "CONFIG_IA64_DIS=y" >> $libdis_config_mak 3368 ;; 3369 m68k) 3370 echo "CONFIG_M68K_DIS=y" >> $config_target_mak 3371 echo "CONFIG_M68K_DIS=y" >> $libdis_config_mak 3372 ;; 3373 microblaze*) 3374 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 3375 echo "CONFIG_MICROBLAZE_DIS=y" >> $libdis_config_mak 3376 ;; 3377 mips*) 3378 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 3379 echo "CONFIG_MIPS_DIS=y" >> $libdis_config_mak 3380 ;; 3381 ppc*) 3382 echo "CONFIG_PPC_DIS=y" >> $config_target_mak 3383 echo "CONFIG_PPC_DIS=y" >> $libdis_config_mak 3384 ;; 3385 s390*) 3386 echo "CONFIG_S390_DIS=y" >> $config_target_mak 3387 echo "CONFIG_S390_DIS=y" >> $libdis_config_mak 3388 ;; 3389 sh4) 3390 echo "CONFIG_SH4_DIS=y" >> $config_target_mak 3391 echo "CONFIG_SH4_DIS=y" >> $libdis_config_mak 3392 ;; 3393 sparc*) 3394 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 3395 echo "CONFIG_SPARC_DIS=y" >> $libdis_config_mak 3396 ;; 3397 esac 3398done 3399 3400case "$ARCH" in 3401alpha) 3402 # Ensure there's only a single GP 3403 cflags="-msmall-data $cflags" 3404;; 3405esac 3406 3407if test "$target_softmmu" = "yes" ; then 3408 case "$TARGET_BASE_ARCH" in 3409 arm) 3410 cflags="-DHAS_AUDIO $cflags" 3411 ;; 3412 lm32) 3413 cflags="-DHAS_AUDIO $cflags" 3414 ;; 3415 i386|mips|ppc) 3416 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags" 3417 ;; 3418 esac 3419fi 3420 3421if test "$target_user_only" = "yes" -a "$static" = "no" -a \ 3422 "$user_pie" = "yes" ; then 3423 cflags="-fpie $cflags" 3424 ldflags="-pie $ldflags" 3425fi 3426 3427if test "$target_softmmu" = "yes" -a \( \ 3428 "$TARGET_ARCH" = "microblaze" -o \ 3429 "$TARGET_ARCH" = "cris" \) ; then 3430 echo "CONFIG_NEED_MMU=y" >> $config_target_mak 3431fi 3432 3433if test "$gprof" = "yes" ; then 3434 echo "TARGET_GPROF=yes" >> $config_target_mak 3435 if test "$target_linux_user" = "yes" ; then 3436 cflags="-p $cflags" 3437 ldflags="-p $ldflags" 3438 fi 3439 if test "$target_softmmu" = "yes" ; then 3440 ldflags="-p $ldflags" 3441 echo "GPROF_CFLAGS=-p" >> $config_target_mak 3442 fi 3443fi 3444 3445linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" 3446if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 3447 case "$ARCH" in 3448 sparc) 3449 # -static is used to avoid g1/g3 usage by the dynamic linker 3450 ldflags="$linker_script -static $ldflags" 3451 ;; 3452 alpha | s390x) 3453 # The default placement of the application is fine. 3454 ;; 3455 *) 3456 ldflags="$linker_script $ldflags" 3457 ;; 3458 esac 3459fi 3460 3461# use included Linux headers 3462if test "$linux" = "yes" ; then 3463 includes="-I\$(SRC_PATH)/linux-headers $includes" 3464 mkdir -p linux-headers 3465 case "$cpu" in 3466 i386|x86_64) 3467 symlink $source_path/linux-headers/asm-x86 linux-headers/asm 3468 ;; 3469 ppcemb|ppc|ppc64) 3470 symlink $source_path/linux-headers/asm-powerpc linux-headers/asm 3471 ;; 3472 s390x) 3473 symlink $source_path/linux-headers/asm-s390 linux-headers/asm 3474 ;; 3475 esac 3476fi 3477 3478echo "LDFLAGS+=$ldflags" >> $config_target_mak 3479echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 3480echo "QEMU_INCLUDES+=$includes" >> $config_target_mak 3481 3482done # for target in $targets 3483 3484# build tree in object directory in case the source is not in the current directory 3485DIRS="tests tests/cris slirp audio block net pc-bios/optionrom" 3486DIRS="$DIRS pc-bios/spapr-rtas" 3487DIRS="$DIRS roms/seabios roms/vgabios" 3488DIRS="$DIRS fsdev ui" 3489DIRS="$DIRS qapi" 3490FILES="Makefile tests/Makefile" 3491FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit" 3492FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 3493FILES="$FILES pc-bios/spapr-rtas/Makefile" 3494FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 3495for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.rom $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do 3496 FILES="$FILES pc-bios/`basename $bios_file`" 3497done 3498mkdir -p $DIRS 3499for f in $FILES ; do 3500 if [ -e "$source_path/$f" ] && ! [ -e "$f" ]; then 3501 symlink "$source_path/$f" "$f" 3502 fi 3503done 3504 3505# temporary config to build submodules 3506for rom in seabios vgabios ; do 3507 config_mak=roms/$rom/config.mak 3508 echo "# Automatically generated by configure - do not modify" > $config_mak 3509 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 3510 echo "CC=$cc" >> $config_mak 3511 echo "BCC=bcc" >> $config_mak 3512 echo "CPP=${cross_prefix}cpp" >> $config_mak 3513 echo "OBJCOPY=objcopy" >> $config_mak 3514 echo "IASL=iasl" >> $config_mak 3515 echo "LD=$ld" >> $config_mak 3516done 3517 3518for hwlib in 32 64; do 3519 d=libhw$hwlib 3520 mkdir -p $d 3521 mkdir -p $d/ide 3522 symlink $source_path/Makefile.hw $d/Makefile 3523 mkdir -p $d/9pfs 3524 echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak 3525done 3526 3527if [ "$source_path" != `pwd` ]; then 3528 # out of tree build 3529 mkdir -p libcacard 3530 rm -f libcacard/Makefile 3531 symlink "$source_path/libcacard/Makefile" libcacard/Makefile 3532fi 3533 3534d=libuser 3535mkdir -p $d 3536symlink $source_path/Makefile.user $d/Makefile 3537if test "$static" = "no" -a "$user_pie" = "yes" ; then 3538 echo "QEMU_CFLAGS+=-fpie" > $d/config.mak 3539fi 3540 3541if test "$docs" = "yes" ; then 3542 mkdir -p QMP 3543fi 3544