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