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