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