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