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