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