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# pthread probe 1807PTHREADLIBS_LIST="-lpthread -lpthreadGC2" 1808 1809pthread=no 1810cat > $TMPC << EOF 1811#include <pthread.h> 1812int main(void) { pthread_create(0,0,0,0); return 0; } 1813EOF 1814if compile_prog "" "" ; then 1815 pthread=yes 1816else 1817 for pthread_lib in $PTHREADLIBS_LIST; do 1818 if compile_prog "" "$pthread_lib" ; then 1819 pthread=yes 1820 LIBS="$pthread_lib $LIBS" 1821 break 1822 fi 1823 done 1824fi 1825 1826if test "$mingw32" != yes -a "$pthread" = no; then 1827 echo 1828 echo "Error: pthread check failed" 1829 echo "Make sure to have the pthread libs and headers installed." 1830 echo 1831 exit 1 1832fi 1833 1834########################################## 1835# rbd probe 1836if test "$rbd" != "no" ; then 1837 cat > $TMPC <<EOF 1838#include <stdio.h> 1839#include <rbd/librbd.h> 1840int main(void) { 1841 rados_t cluster; 1842 rados_create(&cluster, NULL); 1843 return 0; 1844} 1845EOF 1846 rbd_libs="-lrbd -lrados" 1847 if compile_prog "" "$rbd_libs" ; then 1848 rbd=yes 1849 libs_tools="$rbd_libs $libs_tools" 1850 libs_softmmu="$rbd_libs $libs_softmmu" 1851 else 1852 if test "$rbd" = "yes" ; then 1853 feature_not_found "rados block device" 1854 fi 1855 rbd=no 1856 fi 1857fi 1858 1859########################################## 1860# linux-aio probe 1861 1862if test "$linux_aio" != "no" ; then 1863 cat > $TMPC <<EOF 1864#include <libaio.h> 1865#include <sys/eventfd.h> 1866#include <stddef.h> 1867int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 1868EOF 1869 if compile_prog "" "-laio" ; then 1870 linux_aio=yes 1871 libs_softmmu="$libs_softmmu -laio" 1872 libs_tools="$libs_tools -laio" 1873 else 1874 if test "$linux_aio" = "yes" ; then 1875 feature_not_found "linux AIO" 1876 fi 1877 linux_aio=no 1878 fi 1879fi 1880 1881########################################## 1882# attr probe 1883 1884if test "$attr" != "no" ; then 1885 cat > $TMPC <<EOF 1886#include <stdio.h> 1887#include <sys/types.h> 1888#include <attr/xattr.h> 1889int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 1890EOF 1891 if compile_prog "" "-lattr" ; then 1892 attr=yes 1893 LIBS="-lattr $LIBS" 1894 else 1895 if test "$attr" = "yes" ; then 1896 feature_not_found "ATTR" 1897 fi 1898 attr=no 1899 fi 1900fi 1901 1902########################################## 1903# iovec probe 1904cat > $TMPC <<EOF 1905#include <sys/types.h> 1906#include <sys/uio.h> 1907#include <unistd.h> 1908int main(void) { struct iovec iov; return 0; } 1909EOF 1910iovec=no 1911if compile_prog "" "" ; then 1912 iovec=yes 1913fi 1914 1915########################################## 1916# preadv probe 1917cat > $TMPC <<EOF 1918#include <sys/types.h> 1919#include <sys/uio.h> 1920#include <unistd.h> 1921int main(void) { preadv; } 1922EOF 1923preadv=no 1924if compile_prog "" "" ; then 1925 preadv=yes 1926fi 1927 1928########################################## 1929# fdt probe 1930if test "$fdt" != "no" ; then 1931 fdt_libs="-lfdt" 1932 cat > $TMPC << EOF 1933int main(void) { return 0; } 1934EOF 1935 if compile_prog "" "$fdt_libs" ; then 1936 fdt=yes 1937 else 1938 if test "$fdt" = "yes" ; then 1939 feature_not_found "fdt" 1940 fi 1941 fdt_libs= 1942 fdt=no 1943 fi 1944fi 1945 1946########################################## 1947# opengl probe, used by milkymist-tmu2 1948if test "$opengl" != "no" ; then 1949 opengl_libs="-lGL" 1950 cat > $TMPC << EOF 1951#include <X11/Xlib.h> 1952#include <GL/gl.h> 1953#include <GL/glx.h> 1954int main(void) { GL_VERSION; return 0; } 1955EOF 1956 if compile_prog "" "-lGL" ; then 1957 opengl=yes 1958 else 1959 if test "$opengl" = "yes" ; then 1960 feature_not_found "opengl" 1961 fi 1962 opengl_libs= 1963 opengl=no 1964 fi 1965fi 1966 1967# 1968# Check for xxxat() functions when we are building linux-user 1969# emulator. This is done because older glibc versions don't 1970# have syscall stubs for these implemented. 1971# 1972atfile=no 1973cat > $TMPC << EOF 1974#define _ATFILE_SOURCE 1975#include <sys/types.h> 1976#include <fcntl.h> 1977#include <unistd.h> 1978 1979int 1980main(void) 1981{ 1982 /* try to unlink nonexisting file */ 1983 return (unlinkat(AT_FDCWD, "nonexistent_file", 0)); 1984} 1985EOF 1986if compile_prog "" "" ; then 1987 atfile=yes 1988fi 1989 1990# Check for inotify functions when we are building linux-user 1991# emulator. This is done because older glibc versions don't 1992# have syscall stubs for these implemented. In that case we 1993# don't provide them even if kernel supports them. 1994# 1995inotify=no 1996cat > $TMPC << EOF 1997#include <sys/inotify.h> 1998 1999int 2000main(void) 2001{ 2002 /* try to start inotify */ 2003 return inotify_init(); 2004} 2005EOF 2006if compile_prog "" "" ; then 2007 inotify=yes 2008fi 2009 2010inotify1=no 2011cat > $TMPC << EOF 2012#include <sys/inotify.h> 2013 2014int 2015main(void) 2016{ 2017 /* try to start inotify */ 2018 return inotify_init1(0); 2019} 2020EOF 2021if compile_prog "" "" ; then 2022 inotify1=yes 2023fi 2024 2025# check if utimensat and futimens are supported 2026utimens=no 2027cat > $TMPC << EOF 2028#define _ATFILE_SOURCE 2029#include <stddef.h> 2030#include <fcntl.h> 2031 2032int main(void) 2033{ 2034 utimensat(AT_FDCWD, "foo", NULL, 0); 2035 futimens(0, NULL); 2036 return 0; 2037} 2038EOF 2039if compile_prog "" "" ; then 2040 utimens=yes 2041fi 2042 2043# check if pipe2 is there 2044pipe2=no 2045cat > $TMPC << EOF 2046#include <unistd.h> 2047#include <fcntl.h> 2048 2049int main(void) 2050{ 2051 int pipefd[2]; 2052 pipe2(pipefd, O_CLOEXEC); 2053 return 0; 2054} 2055EOF 2056if compile_prog "" "" ; then 2057 pipe2=yes 2058fi 2059 2060# check if accept4 is there 2061accept4=no 2062cat > $TMPC << EOF 2063#include <sys/socket.h> 2064#include <stddef.h> 2065 2066int main(void) 2067{ 2068 accept4(0, NULL, NULL, SOCK_CLOEXEC); 2069 return 0; 2070} 2071EOF 2072if compile_prog "" "" ; then 2073 accept4=yes 2074fi 2075 2076# check if tee/splice is there. vmsplice was added same time. 2077splice=no 2078cat > $TMPC << EOF 2079#include <unistd.h> 2080#include <fcntl.h> 2081#include <limits.h> 2082 2083int main(void) 2084{ 2085 int len, fd; 2086 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 2087 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 2088 return 0; 2089} 2090EOF 2091if compile_prog "" "" ; then 2092 splice=yes 2093fi 2094 2095########################################## 2096# signalfd probe 2097signalfd="no" 2098cat > $TMPC << EOF 2099#define _GNU_SOURCE 2100#include <unistd.h> 2101#include <sys/syscall.h> 2102#include <signal.h> 2103int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 2104EOF 2105 2106if compile_prog "" "" ; then 2107 signalfd=yes 2108elif test "$kvm" = "yes" -a "$io_thread" != "yes"; then 2109 echo 2110 echo "ERROR: Host kernel lacks signalfd() support," 2111 echo "but KVM depends on it when the IO thread is disabled." 2112 echo 2113 exit 1 2114fi 2115 2116# check if eventfd is supported 2117eventfd=no 2118cat > $TMPC << EOF 2119#include <sys/eventfd.h> 2120 2121int main(void) 2122{ 2123 int efd = eventfd(0, 0); 2124 return 0; 2125} 2126EOF 2127if compile_prog "" "" ; then 2128 eventfd=yes 2129fi 2130 2131# check for fallocate 2132fallocate=no 2133cat > $TMPC << EOF 2134#include <fcntl.h> 2135 2136int main(void) 2137{ 2138 fallocate(0, 0, 0, 0); 2139 return 0; 2140} 2141EOF 2142if compile_prog "$ARCH_CFLAGS" "" ; then 2143 fallocate=yes 2144fi 2145 2146# check for sync_file_range 2147sync_file_range=no 2148cat > $TMPC << EOF 2149#include <fcntl.h> 2150 2151int main(void) 2152{ 2153 sync_file_range(0, 0, 0, 0); 2154 return 0; 2155} 2156EOF 2157if compile_prog "$ARCH_CFLAGS" "" ; then 2158 sync_file_range=yes 2159fi 2160 2161# check for linux/fiemap.h and FS_IOC_FIEMAP 2162fiemap=no 2163cat > $TMPC << EOF 2164#include <sys/ioctl.h> 2165#include <linux/fs.h> 2166#include <linux/fiemap.h> 2167 2168int main(void) 2169{ 2170 ioctl(0, FS_IOC_FIEMAP, 0); 2171 return 0; 2172} 2173EOF 2174if compile_prog "$ARCH_CFLAGS" "" ; then 2175 fiemap=yes 2176fi 2177 2178# check for dup3 2179dup3=no 2180cat > $TMPC << EOF 2181#include <unistd.h> 2182 2183int main(void) 2184{ 2185 dup3(0, 0, 0); 2186 return 0; 2187} 2188EOF 2189if compile_prog "" "" ; then 2190 dup3=yes 2191fi 2192 2193# check for epoll support 2194epoll=no 2195cat > $TMPC << EOF 2196#include <sys/epoll.h> 2197 2198int main(void) 2199{ 2200 epoll_create(0); 2201 return 0; 2202} 2203EOF 2204if compile_prog "$ARCH_CFLAGS" "" ; then 2205 epoll=yes 2206fi 2207 2208# epoll_create1 and epoll_pwait are later additions 2209# so we must check separately for their presence 2210epoll_create1=no 2211cat > $TMPC << EOF 2212#include <sys/epoll.h> 2213 2214int main(void) 2215{ 2216 /* Note that we use epoll_create1 as a value, not as 2217 * a function being called. This is necessary so that on 2218 * old SPARC glibc versions where the function was present in 2219 * the library but not declared in the header file we will 2220 * fail the configure check. (Otherwise we will get a compiler 2221 * warning but not an error, and will proceed to fail the 2222 * qemu compile where we compile with -Werror.) 2223 */ 2224 epoll_create1; 2225 return 0; 2226} 2227EOF 2228if compile_prog "$ARCH_CFLAGS" "" ; then 2229 epoll_create1=yes 2230fi 2231 2232epoll_pwait=no 2233cat > $TMPC << EOF 2234#include <sys/epoll.h> 2235 2236int main(void) 2237{ 2238 epoll_pwait(0, 0, 0, 0, 0); 2239 return 0; 2240} 2241EOF 2242if compile_prog "$ARCH_CFLAGS" "" ; then 2243 epoll_pwait=yes 2244fi 2245 2246# Check if tools are available to build documentation. 2247if test "$docs" != "no" ; then 2248 if has makeinfo && has pod2man; then 2249 docs=yes 2250 else 2251 if test "$docs" = "yes" ; then 2252 feature_not_found "docs" 2253 fi 2254 docs=no 2255 fi 2256fi 2257 2258# Search for bswap_32 function 2259byteswap_h=no 2260cat > $TMPC << EOF 2261#include <byteswap.h> 2262int main(void) { return bswap_32(0); } 2263EOF 2264if compile_prog "" "" ; then 2265 byteswap_h=yes 2266fi 2267 2268# Search for bswap_32 function 2269bswap_h=no 2270cat > $TMPC << EOF 2271#include <sys/endian.h> 2272#include <sys/types.h> 2273#include <machine/bswap.h> 2274int main(void) { return bswap32(0); } 2275EOF 2276if compile_prog "" "" ; then 2277 bswap_h=yes 2278fi 2279 2280########################################## 2281# Do we need librt 2282cat > $TMPC <<EOF 2283#include <signal.h> 2284#include <time.h> 2285int main(void) { clockid_t id; return clock_gettime(id, NULL); } 2286EOF 2287 2288if compile_prog "" "" ; then 2289 : 2290elif compile_prog "" "-lrt" ; then 2291 LIBS="-lrt $LIBS" 2292fi 2293 2294if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 2295 "$aix" != "yes" -a "$haiku" != "yes" ; then 2296 libs_softmmu="-lutil $libs_softmmu" 2297fi 2298 2299########################################## 2300# check if the compiler defines offsetof 2301 2302need_offsetof=yes 2303cat > $TMPC << EOF 2304#include <stddef.h> 2305int main(void) { struct s { int f; }; return offsetof(struct s, f); } 2306EOF 2307if compile_prog "" "" ; then 2308 need_offsetof=no 2309fi 2310 2311########################################## 2312# check if the compiler understands attribute warn_unused_result 2313# 2314# This could be smarter, but gcc -Werror does not error out even when warning 2315# about attribute warn_unused_result 2316 2317gcc_attribute_warn_unused_result=no 2318cat > $TMPC << EOF 2319#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4) 2320#error gcc 3.3 or older 2321#endif 2322int main(void) { return 0;} 2323EOF 2324if compile_prog "" ""; then 2325 gcc_attribute_warn_unused_result=yes 2326fi 2327 2328# spice probe 2329if test "$spice" != "no" ; then 2330 cat > $TMPC << EOF 2331#include <spice.h> 2332int main(void) { spice_server_new(); return 0; } 2333EOF 2334 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 2335 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 2336 if $pkg_config --atleast-version=0.6.0 spice-server >/dev/null 2>&1 && \ 2337 compile_prog "$spice_cflags" "$spice_libs" ; then 2338 spice="yes" 2339 libs_softmmu="$libs_softmmu $spice_libs" 2340 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 2341 else 2342 if test "$spice" = "yes" ; then 2343 feature_not_found "spice" 2344 fi 2345 spice="no" 2346 fi 2347fi 2348 2349# check for libcacard for smartcard support 2350if test "$smartcard" != "no" ; then 2351 smartcard="yes" 2352 smartcard_cflags="" 2353 # TODO - what's the minimal nss version we support? 2354 if test "$smartcard_nss" != "no"; then 2355 if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 ; then 2356 smartcard_nss="yes" 2357 smartcard_cflags="-I\$(SRC_PATH)/libcacard" 2358 libcacard_libs=$($pkg_config --libs nss 2>/dev/null) 2359 libcacard_cflags=$($pkg_config --cflags nss 2>/dev/null) 2360 QEMU_CFLAGS="$QEMU_CFLAGS $smartcard_cflags $libcacard_cflags" 2361 LIBS="$libcacard_libs $LIBS" 2362 else 2363 if test "$smartcard_nss" = "yes"; then 2364 feature_not_found "nss" 2365 fi 2366 smartcard_nss="no" 2367 fi 2368 fi 2369fi 2370if test "$smartcard" = "no" ; then 2371 smartcard_nss="no" 2372fi 2373 2374########################################## 2375 2376########################################## 2377# check if we have fdatasync 2378 2379fdatasync=no 2380cat > $TMPC << EOF 2381#include <unistd.h> 2382int main(void) { 2383#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 2384return fdatasync(0); 2385#else 2386#abort Not supported 2387#endif 2388} 2389EOF 2390if compile_prog "" "" ; then 2391 fdatasync=yes 2392fi 2393 2394########################################## 2395# check if we have madvise 2396 2397madvise=no 2398cat > $TMPC << EOF 2399#include <sys/types.h> 2400#include <sys/mman.h> 2401#include <stddef.h> 2402int main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 2403EOF 2404if compile_prog "" "" ; then 2405 madvise=yes 2406fi 2407 2408########################################## 2409# check if we have posix_madvise 2410 2411posix_madvise=no 2412cat > $TMPC << EOF 2413#include <sys/mman.h> 2414#include <stddef.h> 2415int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 2416EOF 2417if compile_prog "" "" ; then 2418 posix_madvise=yes 2419fi 2420 2421########################################## 2422# check if trace backend exists 2423 2424sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null 2425if test "$?" -ne 0 ; then 2426 echo 2427 echo "Error: invalid trace backend" 2428 echo "Please choose a supported trace backend." 2429 echo 2430 exit 1 2431fi 2432 2433########################################## 2434# For 'ust' backend, test if ust headers are present 2435if test "$trace_backend" = "ust"; then 2436 cat > $TMPC << EOF 2437#include <ust/tracepoint.h> 2438#include <ust/marker.h> 2439int main(void) { return 0; } 2440EOF 2441 if compile_prog "" "" ; then 2442 LIBS="-lust $LIBS" 2443 else 2444 echo 2445 echo "Error: Trace backend 'ust' missing libust header files" 2446 echo 2447 exit 1 2448 fi 2449fi 2450 2451########################################## 2452# For 'dtrace' backend, test if 'dtrace' command is present 2453if test "$trace_backend" = "dtrace"; then 2454 if ! has 'dtrace' ; then 2455 echo 2456 echo "Error: dtrace command is not found in PATH $PATH" 2457 echo 2458 exit 1 2459 fi 2460 trace_backend_stap="no" 2461 if has 'stap' ; then 2462 trace_backend_stap="yes" 2463 fi 2464fi 2465 2466########################################## 2467# End of CC checks 2468# After here, no more $cc or $ld runs 2469 2470if test "$debug" = "no" ; then 2471 CFLAGS="-O2 $CFLAGS" 2472fi 2473 2474# Consult white-list to determine whether to enable werror 2475# by default. Only enable by default for git builds 2476z_version=`cut -f3 -d. $source_path/VERSION` 2477 2478if test -z "$werror" ; then 2479 if test "$z_version" = "50" -a \ 2480 "$linux" = "yes" ; then 2481 werror="yes" 2482 else 2483 werror="no" 2484 fi 2485fi 2486 2487# Disable zero malloc errors for official releases unless explicitly told to 2488# enable/disable 2489if test -z "$zero_malloc" ; then 2490 if test "$z_version" = "50" ; then 2491 zero_malloc="no" 2492 else 2493 zero_malloc="yes" 2494 fi 2495fi 2496 2497if test "$werror" = "yes" ; then 2498 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 2499fi 2500 2501if test "$solaris" = "no" ; then 2502 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 2503 LDFLAGS="-Wl,--warn-common $LDFLAGS" 2504 fi 2505fi 2506 2507# Use ASLR, no-SEH and DEP if available 2508if test "$mingw32" = "yes" ; then 2509 for flag in --dynamicbase --no-seh --nxcompat; do 2510 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 2511 LDFLAGS="-Wl,$flag $LDFLAGS" 2512 fi 2513 done 2514fi 2515 2516confdir=$sysconfdir$confsuffix 2517 2518tools= 2519if test "$softmmu" = yes ; then 2520 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 2521 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 2522 tools="qemu-nbd\$(EXESUF) $tools" 2523 if [ "$check_utests" = "yes" ]; then 2524 tools="check-qint check-qstring check-qdict check-qlist $tools" 2525 tools="check-qfloat check-qjson $tools" 2526 fi 2527 fi 2528fi 2529 2530# Mac OS X ships with a broken assembler 2531roms= 2532if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 2533 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 2534 "$softmmu" = yes ; then 2535 roms="optionrom" 2536fi 2537if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 2538 roms="$roms spapr-rtas" 2539fi 2540 2541echo "Install prefix $prefix" 2542echo "BIOS directory `eval echo $datadir`" 2543echo "binary directory `eval echo $bindir`" 2544echo "library directory `eval echo $libdir`" 2545echo "config directory `eval echo $sysconfdir`" 2546if test "$mingw32" = "no" ; then 2547echo "Manual directory `eval echo $mandir`" 2548echo "ELF interp prefix $interp_prefix" 2549fi 2550echo "Source path $source_path" 2551echo "C compiler $cc" 2552echo "Host C compiler $host_cc" 2553echo "CFLAGS $CFLAGS" 2554echo "QEMU_CFLAGS $QEMU_CFLAGS" 2555echo "LDFLAGS $LDFLAGS" 2556echo "make $make" 2557echo "install $install" 2558echo "host CPU $cpu" 2559echo "host big endian $bigendian" 2560echo "target list $target_list" 2561echo "tcg debug enabled $debug_tcg" 2562echo "Mon debug enabled $debug_mon" 2563echo "gprof enabled $gprof" 2564echo "sparse enabled $sparse" 2565echo "strip binaries $strip_opt" 2566echo "profiler $profiler" 2567echo "static build $static" 2568echo "-Werror enabled $werror" 2569if test "$darwin" = "yes" ; then 2570 echo "Cocoa support $cocoa" 2571fi 2572echo "SDL support $sdl" 2573echo "curses support $curses" 2574echo "curl support $curl" 2575echo "check support $check_utests" 2576echo "mingw32 support $mingw32" 2577echo "Audio drivers $audio_drv_list" 2578echo "Extra audio cards $audio_card_list" 2579echo "Block whitelist $block_drv_whitelist" 2580echo "Mixer emulation $mixemu" 2581echo "VNC support $vnc" 2582if test "$vnc" = "yes" ; then 2583 echo "VNC TLS support $vnc_tls" 2584 echo "VNC SASL support $vnc_sasl" 2585 echo "VNC JPEG support $vnc_jpeg" 2586 echo "VNC PNG support $vnc_png" 2587 echo "VNC thread $vnc_thread" 2588fi 2589if test -n "$sparc_cpu"; then 2590 echo "Target Sparc Arch $sparc_cpu" 2591fi 2592echo "xen support $xen" 2593echo "brlapi support $brlapi" 2594echo "bluez support $bluez" 2595echo "Documentation $docs" 2596[ ! -z "$uname_release" ] && \ 2597echo "uname -r $uname_release" 2598echo "NPTL support $nptl" 2599echo "GUEST_BASE $guest_base" 2600echo "PIE user targets $user_pie" 2601echo "vde support $vde" 2602echo "IO thread $io_thread" 2603echo "Linux AIO support $linux_aio" 2604echo "ATTR/XATTR support $attr" 2605echo "Install blobs $blobs" 2606echo "KVM support $kvm" 2607echo "fdt support $fdt" 2608echo "preadv support $preadv" 2609echo "fdatasync $fdatasync" 2610echo "madvise $madvise" 2611echo "posix_madvise $posix_madvise" 2612echo "uuid support $uuid" 2613echo "vhost-net support $vhost_net" 2614echo "Trace backend $trace_backend" 2615echo "Trace output file $trace_file-<pid>" 2616echo "spice support $spice" 2617echo "rbd support $rbd" 2618echo "xfsctl support $xfs" 2619echo "nss used $smartcard_nss" 2620echo "OpenGL support $opengl" 2621 2622if test $sdl_too_old = "yes"; then 2623echo "-> Your SDL version is too old - please upgrade to have SDL support" 2624fi 2625 2626config_host_mak="config-host.mak" 2627config_host_ld="config-host.ld" 2628 2629echo "# Automatically generated by configure - do not modify" > $config_host_mak 2630printf "# Configured with:" >> $config_host_mak 2631printf " '%s'" "$0" "$@" >> $config_host_mak 2632echo >> $config_host_mak 2633 2634echo all: >> $config_host_mak 2635echo "prefix=$prefix" >> $config_host_mak 2636echo "bindir=$bindir" >> $config_host_mak 2637echo "libdir=$libdir" >> $config_host_mak 2638echo "mandir=$mandir" >> $config_host_mak 2639echo "datadir=$datadir" >> $config_host_mak 2640echo "sysconfdir=$sysconfdir" >> $config_host_mak 2641echo "docdir=$docdir" >> $config_host_mak 2642echo "confdir=$confdir" >> $config_host_mak 2643 2644case "$cpu" in 2645 i386|x86_64|alpha|cris|hppa|ia64|lm32|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64|unicore32) 2646 ARCH=$cpu 2647 ;; 2648 armv4b|armv4l) 2649 ARCH=arm 2650 ;; 2651esac 2652echo "ARCH=$ARCH" >> $config_host_mak 2653if test "$debug_tcg" = "yes" ; then 2654 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 2655fi 2656if test "$debug_mon" = "yes" ; then 2657 echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak 2658fi 2659if test "$debug" = "yes" ; then 2660 echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak 2661fi 2662if test "$strip_opt" = "yes" ; then 2663 echo "STRIP=${strip}" >> $config_host_mak 2664fi 2665if test "$bigendian" = "yes" ; then 2666 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 2667fi 2668echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak 2669if test "$mingw32" = "yes" ; then 2670 echo "CONFIG_WIN32=y" >> $config_host_mak 2671 rc_version=`cat $source_path/VERSION` 2672 version_major=${rc_version%%.*} 2673 rc_version=${rc_version#*.} 2674 version_minor=${rc_version%%.*} 2675 rc_version=${rc_version#*.} 2676 version_subminor=${rc_version%%.*} 2677 version_micro=0 2678 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 2679 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 2680else 2681 echo "CONFIG_POSIX=y" >> $config_host_mak 2682fi 2683 2684if test "$linux" = "yes" ; then 2685 echo "CONFIG_LINUX=y" >> $config_host_mak 2686fi 2687 2688if test "$darwin" = "yes" ; then 2689 echo "CONFIG_DARWIN=y" >> $config_host_mak 2690fi 2691 2692if test "$aix" = "yes" ; then 2693 echo "CONFIG_AIX=y" >> $config_host_mak 2694fi 2695 2696if test "$solaris" = "yes" ; then 2697 echo "CONFIG_SOLARIS=y" >> $config_host_mak 2698 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 2699 if test "$needs_libsunmath" = "yes" ; then 2700 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 2701 fi 2702fi 2703if test "$haiku" = "yes" ; then 2704 echo "CONFIG_HAIKU=y" >> $config_host_mak 2705fi 2706if test "$static" = "yes" ; then 2707 echo "CONFIG_STATIC=y" >> $config_host_mak 2708fi 2709if test $profiler = "yes" ; then 2710 echo "CONFIG_PROFILER=y" >> $config_host_mak 2711fi 2712if test "$slirp" = "yes" ; then 2713 echo "CONFIG_SLIRP=y" >> $config_host_mak 2714 QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES" 2715fi 2716if test "$vde" = "yes" ; then 2717 echo "CONFIG_VDE=y" >> $config_host_mak 2718fi 2719for card in $audio_card_list; do 2720 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'` 2721 echo "$def=y" >> $config_host_mak 2722done 2723echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 2724for drv in $audio_drv_list; do 2725 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'` 2726 echo "$def=y" >> $config_host_mak 2727 if test "$drv" = "fmod"; then 2728 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 2729 fi 2730done 2731if test "$audio_pt_int" = "yes" ; then 2732 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 2733fi 2734if test "$audio_win_int" = "yes" ; then 2735 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 2736fi 2737echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak 2738if test "$mixemu" = "yes" ; then 2739 echo "CONFIG_MIXEMU=y" >> $config_host_mak 2740fi 2741if test "$vnc" = "yes" ; then 2742 echo "CONFIG_VNC=y" >> $config_host_mak 2743fi 2744if test "$vnc_tls" = "yes" ; then 2745 echo "CONFIG_VNC_TLS=y" >> $config_host_mak 2746 echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak 2747fi 2748if test "$vnc_sasl" = "yes" ; then 2749 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 2750 echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak 2751fi 2752if test "$vnc_jpeg" = "yes" ; then 2753 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 2754 echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak 2755fi 2756if test "$vnc_png" = "yes" ; then 2757 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 2758 echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak 2759fi 2760if test "$vnc_thread" = "yes" ; then 2761 echo "CONFIG_VNC_THREAD=y" >> $config_host_mak 2762fi 2763if test "$fnmatch" = "yes" ; then 2764 echo "CONFIG_FNMATCH=y" >> $config_host_mak 2765fi 2766if test "$uuid" = "yes" ; then 2767 echo "CONFIG_UUID=y" >> $config_host_mak 2768fi 2769if test "$xfs" = "yes" ; then 2770 echo "CONFIG_XFS=y" >> $config_host_mak 2771fi 2772qemu_version=`head $source_path/VERSION` 2773echo "VERSION=$qemu_version" >>$config_host_mak 2774echo "PKGVERSION=$pkgversion" >>$config_host_mak 2775echo "SRC_PATH=$source_path" >> $config_host_mak 2776echo "TARGET_DIRS=$target_list" >> $config_host_mak 2777if [ "$docs" = "yes" ] ; then 2778 echo "BUILD_DOCS=yes" >> $config_host_mak 2779fi 2780if test "$sdl" = "yes" ; then 2781 echo "CONFIG_SDL=y" >> $config_host_mak 2782 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 2783fi 2784if test "$cocoa" = "yes" ; then 2785 echo "CONFIG_COCOA=y" >> $config_host_mak 2786fi 2787if test "$curses" = "yes" ; then 2788 echo "CONFIG_CURSES=y" >> $config_host_mak 2789fi 2790if test "$atfile" = "yes" ; then 2791 echo "CONFIG_ATFILE=y" >> $config_host_mak 2792fi 2793if test "$utimens" = "yes" ; then 2794 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 2795fi 2796if test "$pipe2" = "yes" ; then 2797 echo "CONFIG_PIPE2=y" >> $config_host_mak 2798fi 2799if test "$accept4" = "yes" ; then 2800 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 2801fi 2802if test "$splice" = "yes" ; then 2803 echo "CONFIG_SPLICE=y" >> $config_host_mak 2804fi 2805if test "$eventfd" = "yes" ; then 2806 echo "CONFIG_EVENTFD=y" >> $config_host_mak 2807fi 2808if test "$fallocate" = "yes" ; then 2809 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 2810fi 2811if test "$sync_file_range" = "yes" ; then 2812 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 2813fi 2814if test "$fiemap" = "yes" ; then 2815 echo "CONFIG_FIEMAP=y" >> $config_host_mak 2816fi 2817if test "$dup3" = "yes" ; then 2818 echo "CONFIG_DUP3=y" >> $config_host_mak 2819fi 2820if test "$epoll" = "yes" ; then 2821 echo "CONFIG_EPOLL=y" >> $config_host_mak 2822fi 2823if test "$epoll_create1" = "yes" ; then 2824 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 2825fi 2826if test "$epoll_pwait" = "yes" ; then 2827 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 2828fi 2829if test "$inotify" = "yes" ; then 2830 echo "CONFIG_INOTIFY=y" >> $config_host_mak 2831fi 2832if test "$inotify1" = "yes" ; then 2833 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 2834fi 2835if test "$byteswap_h" = "yes" ; then 2836 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 2837fi 2838if test "$bswap_h" = "yes" ; then 2839 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 2840fi 2841if test "$curl" = "yes" ; then 2842 echo "CONFIG_CURL=y" >> $config_host_mak 2843 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 2844fi 2845if test "$brlapi" = "yes" ; then 2846 echo "CONFIG_BRLAPI=y" >> $config_host_mak 2847fi 2848if test "$bluez" = "yes" ; then 2849 echo "CONFIG_BLUEZ=y" >> $config_host_mak 2850 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 2851fi 2852if test "$xen" = "yes" ; then 2853 echo "CONFIG_XEN=y" >> $config_host_mak 2854 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 2855fi 2856if test "$io_thread" = "yes" ; then 2857 echo "CONFIG_IOTHREAD=y" >> $config_host_mak 2858fi 2859if test "$linux_aio" = "yes" ; then 2860 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 2861fi 2862if test "$attr" = "yes" ; then 2863 echo "CONFIG_ATTR=y" >> $config_host_mak 2864fi 2865if test "$linux" = "yes" ; then 2866 if test "$attr" = "yes" ; then 2867 echo "CONFIG_VIRTFS=y" >> $config_host_mak 2868 fi 2869fi 2870if test "$blobs" = "yes" ; then 2871 echo "INSTALL_BLOBS=yes" >> $config_host_mak 2872fi 2873if test "$iovec" = "yes" ; then 2874 echo "CONFIG_IOVEC=y" >> $config_host_mak 2875fi 2876if test "$preadv" = "yes" ; then 2877 echo "CONFIG_PREADV=y" >> $config_host_mak 2878fi 2879if test "$fdt" = "yes" ; then 2880 echo "CONFIG_FDT=y" >> $config_host_mak 2881fi 2882if test "$signalfd" = "yes" ; then 2883 echo "CONFIG_SIGNALFD=y" >> $config_host_mak 2884fi 2885if test "$need_offsetof" = "yes" ; then 2886 echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak 2887fi 2888if test "$gcc_attribute_warn_unused_result" = "yes" ; then 2889 echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak 2890fi 2891if test "$fdatasync" = "yes" ; then 2892 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 2893fi 2894if test "$madvise" = "yes" ; then 2895 echo "CONFIG_MADVISE=y" >> $config_host_mak 2896fi 2897if test "$posix_madvise" = "yes" ; then 2898 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 2899fi 2900 2901if test "$spice" = "yes" ; then 2902 echo "CONFIG_SPICE=y" >> $config_host_mak 2903fi 2904 2905if test "$smartcard" = "yes" ; then 2906 echo "CONFIG_SMARTCARD=y" >> $config_host_mak 2907fi 2908 2909if test "$smartcard_nss" = "yes" ; then 2910 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 2911fi 2912 2913if test "$opengl" = "yes" ; then 2914 echo "CONFIG_OPENGL=y" >> $config_host_mak 2915fi 2916 2917# XXX: suppress that 2918if [ "$bsd" = "yes" ] ; then 2919 echo "CONFIG_BSD=y" >> $config_host_mak 2920fi 2921 2922echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak 2923 2924if test "$zero_malloc" = "yes" ; then 2925 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 2926fi 2927if test "$rbd" = "yes" ; then 2928 echo "CONFIG_RBD=y" >> $config_host_mak 2929fi 2930 2931# USB host support 2932case "$usb" in 2933linux) 2934 echo "HOST_USB=linux" >> $config_host_mak 2935;; 2936bsd) 2937 echo "HOST_USB=bsd" >> $config_host_mak 2938;; 2939*) 2940 echo "HOST_USB=stub" >> $config_host_mak 2941;; 2942esac 2943 2944echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak 2945if test "$trace_backend" = "simple"; then 2946 echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak 2947fi 2948# Set the appropriate trace file. 2949if test "$trace_backend" = "simple"; then 2950 trace_file="\"$trace_file-\" FMT_pid" 2951fi 2952if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then 2953 echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak 2954fi 2955echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 2956 2957echo "TOOLS=$tools" >> $config_host_mak 2958echo "ROMS=$roms" >> $config_host_mak 2959echo "MAKE=$make" >> $config_host_mak 2960echo "INSTALL=$install" >> $config_host_mak 2961echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak 2962echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak 2963echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak 2964echo "CC=$cc" >> $config_host_mak 2965echo "CC_I386=$cc_i386" >> $config_host_mak 2966echo "HOST_CC=$host_cc" >> $config_host_mak 2967echo "AR=$ar" >> $config_host_mak 2968echo "OBJCOPY=$objcopy" >> $config_host_mak 2969echo "LD=$ld" >> $config_host_mak 2970echo "WINDRES=$windres" >> $config_host_mak 2971echo "LIBTOOL=$libtool" >> $config_host_mak 2972echo "CFLAGS=$CFLAGS" >> $config_host_mak 2973echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 2974echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 2975if test "$sparse" = "yes" ; then 2976 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 2977 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 2978 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 2979fi 2980echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak 2981echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 2982echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak 2983echo "ARLIBS_END=$arlibs_end" >> $config_host_mak 2984echo "LIBS+=$LIBS" >> $config_host_mak 2985echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 2986echo "EXESUF=$EXESUF" >> $config_host_mak 2987 2988# generate list of library paths for linker script 2989 2990$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld} 2991 2992if test -f ${config_host_ld}~ ; then 2993 if cmp -s $config_host_ld ${config_host_ld}~ ; then 2994 mv ${config_host_ld}~ $config_host_ld 2995 else 2996 rm ${config_host_ld}~ 2997 fi 2998fi 2999 3000for d in libdis libdis-user; do 3001 mkdir -p $d 3002 symlink $source_path/Makefile.dis $d/Makefile 3003 echo > $d/config.mak 3004done 3005if test "$static" = "no" -a "$user_pie" = "yes" ; then 3006 echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak 3007fi 3008 3009for target in $target_list; do 3010target_dir="$target" 3011config_target_mak=$target_dir/config-target.mak 3012target_arch2=`echo $target | cut -d '-' -f 1` 3013target_bigendian="no" 3014 3015case "$target_arch2" in 3016 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus) 3017 target_bigendian=yes 3018 ;; 3019esac 3020target_softmmu="no" 3021target_user_only="no" 3022target_linux_user="no" 3023target_darwin_user="no" 3024target_bsd_user="no" 3025case "$target" in 3026 ${target_arch2}-softmmu) 3027 target_softmmu="yes" 3028 ;; 3029 ${target_arch2}-linux-user) 3030 if test "$linux" != "yes" ; then 3031 echo "ERROR: Target '$target' is only available on a Linux host" 3032 exit 1 3033 fi 3034 target_user_only="yes" 3035 target_linux_user="yes" 3036 ;; 3037 ${target_arch2}-darwin-user) 3038 if test "$darwin" != "yes" ; then 3039 echo "ERROR: Target '$target' is only available on a Darwin host" 3040 exit 1 3041 fi 3042 target_user_only="yes" 3043 target_darwin_user="yes" 3044 ;; 3045 ${target_arch2}-bsd-user) 3046 if test "$bsd" != "yes" ; then 3047 echo "ERROR: Target '$target' is only available on a BSD host" 3048 exit 1 3049 fi 3050 target_user_only="yes" 3051 target_bsd_user="yes" 3052 ;; 3053 *) 3054 echo "ERROR: Target '$target' not recognised" 3055 exit 1 3056 ;; 3057esac 3058 3059mkdir -p $target_dir 3060mkdir -p $target_dir/fpu 3061mkdir -p $target_dir/tcg 3062mkdir -p $target_dir/ide 3063mkdir -p $target_dir/9pfs 3064if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then 3065 mkdir -p $target_dir/nwfpe 3066fi 3067symlink $source_path/Makefile.target $target_dir/Makefile 3068 3069 3070echo "# Automatically generated by configure - do not modify" > $config_target_mak 3071 3072bflt="no" 3073target_nptl="no" 3074interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"` 3075echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 3076gdb_xml_files="" 3077target_short_alignment=2 3078target_int_alignment=4 3079target_long_alignment=4 3080target_llong_alignment=8 3081target_libs_softmmu= 3082 3083TARGET_ARCH="$target_arch2" 3084TARGET_BASE_ARCH="" 3085TARGET_ABI_DIR="" 3086 3087case "$target_arch2" in 3088 i386) 3089 target_phys_bits=64 3090 ;; 3091 x86_64) 3092 TARGET_BASE_ARCH=i386 3093 target_phys_bits=64 3094 target_long_alignment=8 3095 ;; 3096 alpha) 3097 target_phys_bits=64 3098 target_long_alignment=8 3099 target_nptl="yes" 3100 ;; 3101 arm|armeb) 3102 TARGET_ARCH=arm 3103 bflt="yes" 3104 target_nptl="yes" 3105 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 3106 target_phys_bits=32 3107 target_llong_alignment=4 3108 ;; 3109 cris) 3110 target_nptl="yes" 3111 target_phys_bits=32 3112 ;; 3113 lm32) 3114 target_phys_bits=32 3115 target_libs_softmmu="$opengl_libs" 3116 ;; 3117 m68k) 3118 bflt="yes" 3119 gdb_xml_files="cf-core.xml cf-fp.xml" 3120 target_phys_bits=32 3121 target_int_alignment=2 3122 target_long_alignment=2 3123 target_llong_alignment=2 3124 ;; 3125 microblaze|microblazeel) 3126 TARGET_ARCH=microblaze 3127 bflt="yes" 3128 target_nptl="yes" 3129 target_phys_bits=32 3130 target_libs_softmmu="$fdt_libs" 3131 ;; 3132 mips|mipsel) 3133 TARGET_ARCH=mips 3134 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 3135 target_nptl="yes" 3136 target_phys_bits=64 3137 ;; 3138 mipsn32|mipsn32el) 3139 TARGET_ARCH=mipsn32 3140 TARGET_BASE_ARCH=mips 3141 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 3142 target_phys_bits=64 3143 ;; 3144 mips64|mips64el) 3145 TARGET_ARCH=mips64 3146 TARGET_BASE_ARCH=mips 3147 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 3148 target_phys_bits=64 3149 target_long_alignment=8 3150 ;; 3151 ppc) 3152 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3153 target_phys_bits=32 3154 target_nptl="yes" 3155 target_libs_softmmu="$fdt_libs" 3156 ;; 3157 ppcemb) 3158 TARGET_BASE_ARCH=ppc 3159 TARGET_ABI_DIR=ppc 3160 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3161 target_phys_bits=64 3162 target_nptl="yes" 3163 target_libs_softmmu="$fdt_libs" 3164 ;; 3165 ppc64) 3166 TARGET_BASE_ARCH=ppc 3167 TARGET_ABI_DIR=ppc 3168 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3169 target_phys_bits=64 3170 target_long_alignment=8 3171 target_libs_softmmu="$fdt_libs" 3172 ;; 3173 ppc64abi32) 3174 TARGET_ARCH=ppc64 3175 TARGET_BASE_ARCH=ppc 3176 TARGET_ABI_DIR=ppc 3177 echo "TARGET_ABI32=y" >> $config_target_mak 3178 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3179 target_phys_bits=64 3180 target_libs_softmmu="$fdt_libs" 3181 ;; 3182 sh4|sh4eb) 3183 TARGET_ARCH=sh4 3184 bflt="yes" 3185 target_nptl="yes" 3186 target_phys_bits=32 3187 ;; 3188 sparc) 3189 target_phys_bits=64 3190 ;; 3191 sparc64) 3192 TARGET_BASE_ARCH=sparc 3193 target_phys_bits=64 3194 target_long_alignment=8 3195 ;; 3196 sparc32plus) 3197 TARGET_ARCH=sparc64 3198 TARGET_BASE_ARCH=sparc 3199 TARGET_ABI_DIR=sparc 3200 echo "TARGET_ABI32=y" >> $config_target_mak 3201 target_phys_bits=64 3202 ;; 3203 s390x) 3204 target_nptl="yes" 3205 target_phys_bits=64 3206 target_long_alignment=8 3207 ;; 3208 unicore32) 3209 target_phys_bits=32 3210 ;; 3211 *) 3212 echo "Unsupported target CPU" 3213 exit 1 3214 ;; 3215esac 3216echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak 3217echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak 3218echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak 3219echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak 3220echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak 3221target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`" 3222echo "TARGET_$target_arch_name=y" >> $config_target_mak 3223echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak 3224# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 3225if [ "$TARGET_BASE_ARCH" = "" ]; then 3226 TARGET_BASE_ARCH=$TARGET_ARCH 3227fi 3228echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 3229if [ "$TARGET_ABI_DIR" = "" ]; then 3230 TARGET_ABI_DIR=$TARGET_ARCH 3231fi 3232echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 3233case "$target_arch2" in 3234 i386|x86_64) 3235 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 3236 target_phys_bits=64 3237 echo "CONFIG_XEN=y" >> $config_target_mak 3238 if test "$cpu" = "i386" -o "$cpu" = "x86_64"; then 3239 echo "CONFIG_XEN_MAPCACHE=y" >> $config_target_mak 3240 fi 3241 fi 3242esac 3243case "$target_arch2" in 3244 i386|x86_64|ppcemb|ppc|ppc64|s390x) 3245 # Make sure the target and host cpus are compatible 3246 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 3247 \( "$target_arch2" = "$cpu" -o \ 3248 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 3249 \( "$target_arch2" = "ppc64" -a "$cpu" = "ppc" \) -o \ 3250 \( "$target_arch2" = "ppc" -a "$cpu" = "ppc64" \) -o \ 3251 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 3252 \( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \ 3253 \( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then 3254 echo "CONFIG_KVM=y" >> $config_target_mak 3255 if test $vhost_net = "yes" ; then 3256 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 3257 fi 3258 fi 3259esac 3260if test "$target_bigendian" = "yes" ; then 3261 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 3262fi 3263if test "$target_softmmu" = "yes" ; then 3264 echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak 3265 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 3266 echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak 3267 echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak 3268 echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak 3269fi 3270if test "$target_user_only" = "yes" ; then 3271 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 3272fi 3273if test "$target_linux_user" = "yes" ; then 3274 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 3275fi 3276if test "$target_darwin_user" = "yes" ; then 3277 echo "CONFIG_DARWIN_USER=y" >> $config_target_mak 3278fi 3279if test "$smartcard_nss" = "yes" ; then 3280 echo "subdir-$target: subdir-libcacard" >> $config_host_mak 3281 echo "libcacard_libs=$libcacard_libs" >> $config_host_mak 3282 echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak 3283fi 3284list="" 3285if test ! -z "$gdb_xml_files" ; then 3286 for x in $gdb_xml_files; do 3287 list="$list $source_path/gdb-xml/$x" 3288 done 3289 echo "TARGET_XML_FILES=$list" >> $config_target_mak 3290fi 3291 3292if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 3293 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 3294fi 3295if test "$target_user_only" = "yes" \ 3296 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then 3297 echo "CONFIG_USE_NPTL=y" >> $config_target_mak 3298fi 3299if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 3300 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 3301fi 3302if test "$target_bsd_user" = "yes" ; then 3303 echo "CONFIG_BSD_USER=y" >> $config_target_mak 3304fi 3305 3306# generate QEMU_CFLAGS/LDFLAGS for targets 3307 3308cflags="" 3309includes="" 3310ldflags="" 3311 3312if test "$ARCH" = "sparc64" ; then 3313 includes="-I\$(SRC_PATH)/tcg/sparc $includes" 3314elif test "$ARCH" = "s390x" ; then 3315 includes="-I\$(SRC_PATH)/tcg/s390 $includes" 3316elif test "$ARCH" = "x86_64" ; then 3317 includes="-I\$(SRC_PATH)/tcg/i386 $includes" 3318else 3319 includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes" 3320fi 3321includes="-I\$(SRC_PATH)/tcg $includes" 3322includes="-I\$(SRC_PATH)/fpu $includes" 3323 3324if test "$target_user_only" = "yes" ; then 3325 libdis_config_mak=libdis-user/config.mak 3326else 3327 libdis_config_mak=libdis/config.mak 3328fi 3329 3330for i in $ARCH $TARGET_BASE_ARCH ; do 3331 case "$i" in 3332 alpha) 3333 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 3334 echo "CONFIG_ALPHA_DIS=y" >> $libdis_config_mak 3335 ;; 3336 arm) 3337 echo "CONFIG_ARM_DIS=y" >> $config_target_mak 3338 echo "CONFIG_ARM_DIS=y" >> $libdis_config_mak 3339 ;; 3340 cris) 3341 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 3342 echo "CONFIG_CRIS_DIS=y" >> $libdis_config_mak 3343 ;; 3344 hppa) 3345 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 3346 echo "CONFIG_HPPA_DIS=y" >> $libdis_config_mak 3347 ;; 3348 i386|x86_64) 3349 echo "CONFIG_I386_DIS=y" >> $config_target_mak 3350 echo "CONFIG_I386_DIS=y" >> $libdis_config_mak 3351 ;; 3352 ia64*) 3353 echo "CONFIG_IA64_DIS=y" >> $config_target_mak 3354 echo "CONFIG_IA64_DIS=y" >> $libdis_config_mak 3355 ;; 3356 m68k) 3357 echo "CONFIG_M68K_DIS=y" >> $config_target_mak 3358 echo "CONFIG_M68K_DIS=y" >> $libdis_config_mak 3359 ;; 3360 microblaze*) 3361 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 3362 echo "CONFIG_MICROBLAZE_DIS=y" >> $libdis_config_mak 3363 ;; 3364 mips*) 3365 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 3366 echo "CONFIG_MIPS_DIS=y" >> $libdis_config_mak 3367 ;; 3368 ppc*) 3369 echo "CONFIG_PPC_DIS=y" >> $config_target_mak 3370 echo "CONFIG_PPC_DIS=y" >> $libdis_config_mak 3371 ;; 3372 s390*) 3373 echo "CONFIG_S390_DIS=y" >> $config_target_mak 3374 echo "CONFIG_S390_DIS=y" >> $libdis_config_mak 3375 ;; 3376 sh4) 3377 echo "CONFIG_SH4_DIS=y" >> $config_target_mak 3378 echo "CONFIG_SH4_DIS=y" >> $libdis_config_mak 3379 ;; 3380 sparc*) 3381 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 3382 echo "CONFIG_SPARC_DIS=y" >> $libdis_config_mak 3383 ;; 3384 esac 3385done 3386 3387case "$ARCH" in 3388alpha) 3389 # Ensure there's only a single GP 3390 cflags="-msmall-data $cflags" 3391;; 3392esac 3393 3394if test "$target_softmmu" = "yes" ; then 3395 case "$TARGET_BASE_ARCH" in 3396 arm) 3397 cflags="-DHAS_AUDIO $cflags" 3398 ;; 3399 lm32) 3400 cflags="-DHAS_AUDIO $cflags" 3401 ;; 3402 i386|mips|ppc) 3403 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags" 3404 ;; 3405 esac 3406fi 3407 3408if test "$target_user_only" = "yes" -a "$static" = "no" -a \ 3409 "$user_pie" = "yes" ; then 3410 cflags="-fpie $cflags" 3411 ldflags="-pie $ldflags" 3412fi 3413 3414if test "$target_softmmu" = "yes" -a \( \ 3415 "$TARGET_ARCH" = "microblaze" -o \ 3416 "$TARGET_ARCH" = "cris" \) ; then 3417 echo "CONFIG_NEED_MMU=y" >> $config_target_mak 3418fi 3419 3420if test "$gprof" = "yes" ; then 3421 echo "TARGET_GPROF=yes" >> $config_target_mak 3422 if test "$target_linux_user" = "yes" ; then 3423 cflags="-p $cflags" 3424 ldflags="-p $ldflags" 3425 fi 3426 if test "$target_softmmu" = "yes" ; then 3427 ldflags="-p $ldflags" 3428 echo "GPROF_CFLAGS=-p" >> $config_target_mak 3429 fi 3430fi 3431 3432linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" 3433if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 3434 case "$ARCH" in 3435 sparc) 3436 # -static is used to avoid g1/g3 usage by the dynamic linker 3437 ldflags="$linker_script -static $ldflags" 3438 ;; 3439 alpha | s390x) 3440 # The default placement of the application is fine. 3441 ;; 3442 *) 3443 ldflags="$linker_script $ldflags" 3444 ;; 3445 esac 3446fi 3447 3448# use included Linux headers 3449if test "$linux" = "yes" ; then 3450 includes="-I\$(SRC_PATH)/linux-headers $includes" 3451 mkdir -p linux-headers 3452 case "$cpu" in 3453 i386|x86_64) 3454 symlink $source_path/linux-headers/asm-x86 linux-headers/asm 3455 ;; 3456 ppcemb|ppc|ppc64) 3457 symlink $source_path/linux-headers/asm-powerpc linux-headers/asm 3458 ;; 3459 s390x) 3460 symlink $source_path/linux-headers/asm-s390 linux-headers/asm 3461 ;; 3462 esac 3463fi 3464 3465echo "LDFLAGS+=$ldflags" >> $config_target_mak 3466echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 3467echo "QEMU_INCLUDES+=$includes" >> $config_target_mak 3468 3469done # for target in $targets 3470 3471# build tree in object directory in case the source is not in the current directory 3472DIRS="tests tests/cris slirp audio block net pc-bios/optionrom" 3473DIRS="$DIRS pc-bios/spapr-rtas" 3474DIRS="$DIRS roms/seabios roms/vgabios" 3475DIRS="$DIRS fsdev ui" 3476FILES="Makefile tests/Makefile" 3477FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit" 3478FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 3479FILES="$FILES pc-bios/spapr-rtas/Makefile" 3480FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 3481for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.rom $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do 3482 FILES="$FILES pc-bios/`basename $bios_file`" 3483done 3484mkdir -p $DIRS 3485for f in $FILES ; do 3486 if [ -e "$source_path/$f" ] && ! [ -e "$f" ]; then 3487 symlink "$source_path/$f" "$f" 3488 fi 3489done 3490 3491# temporary config to build submodules 3492for rom in seabios vgabios ; do 3493 config_mak=roms/$rom/config.mak 3494 echo "# Automatically generated by configure - do not modify" > $config_mak 3495 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 3496 echo "CC=$cc" >> $config_mak 3497 echo "BCC=bcc" >> $config_mak 3498 echo "CPP=${cross_prefix}cpp" >> $config_mak 3499 echo "OBJCOPY=objcopy" >> $config_mak 3500 echo "IASL=iasl" >> $config_mak 3501 echo "LD=$ld" >> $config_mak 3502done 3503 3504for hwlib in 32 64; do 3505 d=libhw$hwlib 3506 mkdir -p $d 3507 mkdir -p $d/ide 3508 symlink $source_path/Makefile.hw $d/Makefile 3509 mkdir -p $d/9pfs 3510 echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak 3511done 3512 3513if [ "$source_path" != `pwd` ]; then 3514 # out of tree build 3515 mkdir -p libcacard 3516 rm -f libcacard/Makefile 3517 symlink "$source_path/libcacard/Makefile" libcacard/Makefile 3518fi 3519 3520d=libuser 3521mkdir -p $d 3522symlink $source_path/Makefile.user $d/Makefile 3523if test "$static" = "no" -a "$user_pie" = "yes" ; then 3524 echo "QEMU_CFLAGS+=-fpie" > $d/config.mak 3525fi 3526 3527if test "$docs" = "yes" ; then 3528 mkdir -p QMP 3529fi 3530