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