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 $libs_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 -lurcu-bp $LIBS" 2684 libs_qga="-lust -lurcu-bp $libs_qga" 2685 else 2686 echo 2687 echo "Error: Trace backend 'ust' missing libust header files" 2688 echo 2689 exit 1 2690 fi 2691fi 2692 2693########################################## 2694# For 'dtrace' backend, test if 'dtrace' command is present 2695if test "$trace_backend" = "dtrace"; then 2696 if ! has 'dtrace' ; then 2697 echo 2698 echo "Error: dtrace command is not found in PATH $PATH" 2699 echo 2700 exit 1 2701 fi 2702 trace_backend_stap="no" 2703 if has 'stap' ; then 2704 trace_backend_stap="yes" 2705 fi 2706fi 2707 2708########################################## 2709# __sync_fetch_and_and requires at least -march=i486. Many toolchains 2710# use i686 as default anyway, but for those that don't, an explicit 2711# specification is necessary 2712if test "$vhost_net" = "yes" && test "$cpu" = "i386"; then 2713 cat > $TMPC << EOF 2714int sfaa(unsigned *ptr) 2715{ 2716 return __sync_fetch_and_and(ptr, 0); 2717} 2718 2719int main(int argc, char **argv) 2720{ 2721 int val = 42; 2722 sfaa(&val); 2723 return val; 2724} 2725EOF 2726 if ! compile_prog "" "" ; then 2727 CFLAGS+="-march=i486" 2728 fi 2729fi 2730 2731########################################## 2732# check and set a backend for coroutine 2733 2734# default is ucontext, but always fallback to gthread 2735# windows autodetected by make 2736if test "$coroutine" = "" -o "$coroutine" = "ucontext"; then 2737 if test "$darwin" != "yes"; then 2738 cat > $TMPC << EOF 2739#include <ucontext.h> 2740#ifdef __stub_makecontext 2741#error Ignoring glibc stub makecontext which will always fail 2742#endif 2743int main(void) { makecontext(0, 0, 0); return 0; } 2744EOF 2745 if compile_prog "" "" ; then 2746 coroutine_backend=ucontext 2747 else 2748 coroutine_backend=gthread 2749 fi 2750 else 2751 echo "Silently falling back into gthread backend under darwin" 2752 fi 2753elif test "$coroutine" = "gthread" ; then 2754 coroutine_backend=gthread 2755elif test "$coroutine" = "windows" ; then 2756 coroutine_backend=windows 2757elif test "$coroutine" = "sigaltstack" ; then 2758 coroutine_backend=sigaltstack 2759else 2760 echo 2761 echo "Error: unknown coroutine backend $coroutine" 2762 echo 2763 exit 1 2764fi 2765 2766########################################## 2767# check if we have open_by_handle_at 2768 2769open_by_hande_at=no 2770cat > $TMPC << EOF 2771#include <fcntl.h> 2772int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 2773EOF 2774if compile_prog "" "" ; then 2775 open_by_handle_at=yes 2776fi 2777 2778######################################## 2779# check if we have linux/magic.h 2780 2781linux_magic_h=no 2782cat > $TMPC << EOF 2783#include <linux/magic.h> 2784int main(void) { 2785 return 0; 2786} 2787EOF 2788if compile_prog "" "" ; then 2789 linux_magic_h=yes 2790fi 2791 2792########################################## 2793# End of CC checks 2794# After here, no more $cc or $ld runs 2795 2796if test "$debug" = "no" ; then 2797 CFLAGS="-O2 $CFLAGS" 2798fi 2799 2800# Consult white-list to determine whether to enable werror 2801# by default. Only enable by default for git builds 2802z_version=`cut -f3 -d. $source_path/VERSION` 2803 2804if test -z "$werror" ; then 2805 if test "$z_version" = "50" -a \ 2806 "$linux" = "yes" ; then 2807 werror="yes" 2808 else 2809 werror="no" 2810 fi 2811fi 2812 2813# Disable zero malloc errors for official releases unless explicitly told to 2814# enable/disable 2815if test -z "$zero_malloc" ; then 2816 if test "$z_version" = "50" ; then 2817 zero_malloc="no" 2818 else 2819 zero_malloc="yes" 2820 fi 2821fi 2822 2823if test "$werror" = "yes" ; then 2824 QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 2825fi 2826 2827if test "$solaris" = "no" ; then 2828 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 2829 LDFLAGS="-Wl,--warn-common $LDFLAGS" 2830 fi 2831fi 2832 2833# test if pod2man has --utf8 option 2834if pod2man --help | grep -q utf8; then 2835 POD2MAN="pod2man --utf8" 2836else 2837 POD2MAN="pod2man" 2838fi 2839 2840# Use ASLR, no-SEH and DEP if available 2841if test "$mingw32" = "yes" ; then 2842 for flag in --dynamicbase --no-seh --nxcompat; do 2843 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 2844 LDFLAGS="-Wl,$flag $LDFLAGS" 2845 fi 2846 done 2847fi 2848 2849confdir=$sysconfdir$confsuffix 2850 2851tools= 2852if test "$softmmu" = yes ; then 2853 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 2854 if test "$virtfs" != no ; then 2855 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 2856 virtfs=yes 2857 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 2858 else 2859 if test "$virtfs" = yes; then 2860 feature_not_found "virtfs" 2861 fi 2862 fi 2863 fi 2864 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 2865 tools="qemu-nbd\$(EXESUF) $tools" 2866 if [ "$guest_agent" = "yes" ]; then 2867 tools="qemu-ga\$(EXESUF) $tools" 2868 fi 2869 fi 2870fi 2871 2872# Mac OS X ships with a broken assembler 2873roms= 2874if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 2875 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 2876 "$softmmu" = yes ; then 2877 roms="optionrom" 2878fi 2879if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 2880 roms="$roms spapr-rtas" 2881fi 2882 2883echo "Install prefix $prefix" 2884echo "BIOS directory `eval echo $datadir`" 2885echo "binary directory `eval echo $bindir`" 2886echo "library directory `eval echo $libdir`" 2887echo "include directory `eval echo $includedir`" 2888echo "config directory `eval echo $sysconfdir`" 2889if test "$mingw32" = "no" ; then 2890echo "Manual directory `eval echo $mandir`" 2891echo "ELF interp prefix $interp_prefix" 2892fi 2893echo "Source path $source_path" 2894echo "C compiler $cc" 2895echo "Host C compiler $host_cc" 2896echo "CFLAGS $CFLAGS" 2897echo "QEMU_CFLAGS $QEMU_CFLAGS" 2898echo "LDFLAGS $LDFLAGS" 2899echo "make $make" 2900echo "install $install" 2901echo "python $python" 2902if test "$slirp" = "yes" ; then 2903 echo "smbd $smbd" 2904fi 2905echo "host CPU $cpu" 2906echo "host big endian $bigendian" 2907echo "target list $target_list" 2908echo "tcg debug enabled $debug_tcg" 2909echo "Mon debug enabled $debug_mon" 2910echo "gprof enabled $gprof" 2911echo "sparse enabled $sparse" 2912echo "strip binaries $strip_opt" 2913echo "profiler $profiler" 2914echo "static build $static" 2915echo "-Werror enabled $werror" 2916if test "$darwin" = "yes" ; then 2917 echo "Cocoa support $cocoa" 2918fi 2919echo "SDL support $sdl" 2920echo "curses support $curses" 2921echo "curl support $curl" 2922echo "mingw32 support $mingw32" 2923echo "Audio drivers $audio_drv_list" 2924echo "Extra audio cards $audio_card_list" 2925echo "Block whitelist $block_drv_whitelist" 2926echo "Mixer emulation $mixemu" 2927echo "VirtFS support $virtfs" 2928echo "VNC support $vnc" 2929if test "$vnc" = "yes" ; then 2930 echo "VNC TLS support $vnc_tls" 2931 echo "VNC SASL support $vnc_sasl" 2932 echo "VNC JPEG support $vnc_jpeg" 2933 echo "VNC PNG support $vnc_png" 2934 echo "VNC thread $vnc_thread" 2935fi 2936if test -n "$sparc_cpu"; then 2937 echo "Target Sparc Arch $sparc_cpu" 2938fi 2939echo "xen support $xen" 2940echo "brlapi support $brlapi" 2941echo "bluez support $bluez" 2942echo "Documentation $docs" 2943[ ! -z "$uname_release" ] && \ 2944echo "uname -r $uname_release" 2945echo "NPTL support $nptl" 2946echo "GUEST_BASE $guest_base" 2947echo "PIE $pie" 2948echo "vde support $vde" 2949echo "Linux AIO support $linux_aio" 2950echo "ATTR/XATTR support $attr" 2951echo "Install blobs $blobs" 2952echo "KVM support $kvm" 2953echo "TCG interpreter $tcg_interpreter" 2954echo "fdt support $fdt" 2955echo "preadv support $preadv" 2956echo "fdatasync $fdatasync" 2957echo "madvise $madvise" 2958echo "posix_madvise $posix_madvise" 2959echo "uuid support $uuid" 2960echo "libcap-ng support $cap_ng" 2961echo "vhost-net support $vhost_net" 2962echo "Trace backend $trace_backend" 2963echo "Trace output file $trace_file-<pid>" 2964echo "spice support $spice" 2965echo "rbd support $rbd" 2966echo "xfsctl support $xfs" 2967echo "nss used $smartcard_nss" 2968echo "usb net redir $usb_redir" 2969echo "OpenGL support $opengl" 2970echo "libiscsi support $libiscsi" 2971echo "build guest agent $guest_agent" 2972echo "coroutine backend $coroutine_backend" 2973 2974if test "$sdl_too_old" = "yes"; then 2975echo "-> Your SDL version is too old - please upgrade to have SDL support" 2976fi 2977 2978config_host_mak="config-host.mak" 2979config_host_ld="config-host.ld" 2980 2981echo "# Automatically generated by configure - do not modify" > $config_host_mak 2982printf "# Configured with:" >> $config_host_mak 2983printf " '%s'" "$0" "$@" >> $config_host_mak 2984echo >> $config_host_mak 2985 2986echo all: >> $config_host_mak 2987echo "prefix=$prefix" >> $config_host_mak 2988echo "bindir=$bindir" >> $config_host_mak 2989echo "libdir=$libdir" >> $config_host_mak 2990echo "includedir=$includedir" >> $config_host_mak 2991echo "mandir=$mandir" >> $config_host_mak 2992echo "datadir=$datadir" >> $config_host_mak 2993echo "sysconfdir=$sysconfdir" >> $config_host_mak 2994echo "docdir=$docdir" >> $config_host_mak 2995echo "confdir=$confdir" >> $config_host_mak 2996echo "libexecdir=\${prefix}/libexec" >> $config_host_mak 2997echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak 2998echo "CONFIG_QEMU_HELPERDIR=\"$prefix/libexec\"" >> $config_host_mak 2999 3000echo "ARCH=$ARCH" >> $config_host_mak 3001if test "$debug_tcg" = "yes" ; then 3002 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 3003fi 3004if test "$debug_mon" = "yes" ; then 3005 echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak 3006fi 3007if test "$debug" = "yes" ; then 3008 echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak 3009fi 3010if test "$strip_opt" = "yes" ; then 3011 echo "STRIP=${strip}" >> $config_host_mak 3012fi 3013if test "$bigendian" = "yes" ; then 3014 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 3015fi 3016if test "$mingw32" = "yes" ; then 3017 echo "CONFIG_WIN32=y" >> $config_host_mak 3018 rc_version=`cat $source_path/VERSION` 3019 version_major=${rc_version%%.*} 3020 rc_version=${rc_version#*.} 3021 version_minor=${rc_version%%.*} 3022 rc_version=${rc_version#*.} 3023 version_subminor=${rc_version%%.*} 3024 version_micro=0 3025 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 3026 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 3027else 3028 echo "CONFIG_POSIX=y" >> $config_host_mak 3029fi 3030 3031if test "$linux" = "yes" ; then 3032 echo "CONFIG_LINUX=y" >> $config_host_mak 3033fi 3034 3035if test "$darwin" = "yes" ; then 3036 echo "CONFIG_DARWIN=y" >> $config_host_mak 3037fi 3038 3039if test "$aix" = "yes" ; then 3040 echo "CONFIG_AIX=y" >> $config_host_mak 3041fi 3042 3043if test "$solaris" = "yes" ; then 3044 echo "CONFIG_SOLARIS=y" >> $config_host_mak 3045 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 3046 if test "$needs_libsunmath" = "yes" ; then 3047 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 3048 fi 3049fi 3050if test "$haiku" = "yes" ; then 3051 echo "CONFIG_HAIKU=y" >> $config_host_mak 3052fi 3053if test "$static" = "yes" ; then 3054 echo "CONFIG_STATIC=y" >> $config_host_mak 3055fi 3056if test "$profiler" = "yes" ; then 3057 echo "CONFIG_PROFILER=y" >> $config_host_mak 3058fi 3059if test "$slirp" = "yes" ; then 3060 echo "CONFIG_SLIRP=y" >> $config_host_mak 3061 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 3062 QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES" 3063fi 3064if test "$vde" = "yes" ; then 3065 echo "CONFIG_VDE=y" >> $config_host_mak 3066fi 3067if test "$cap_ng" = "yes" ; then 3068 echo "CONFIG_LIBCAP=y" >> $config_host_mak 3069fi 3070for card in $audio_card_list; do 3071 def=CONFIG_`echo $card | LC_ALL=C tr '[a-z]' '[A-Z]'` 3072 echo "$def=y" >> $config_host_mak 3073done 3074echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 3075for drv in $audio_drv_list; do 3076 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 3077 echo "$def=y" >> $config_host_mak 3078 if test "$drv" = "fmod"; then 3079 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 3080 fi 3081done 3082if test "$audio_pt_int" = "yes" ; then 3083 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 3084fi 3085if test "$audio_win_int" = "yes" ; then 3086 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 3087fi 3088echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak 3089if test "$mixemu" = "yes" ; then 3090 echo "CONFIG_MIXEMU=y" >> $config_host_mak 3091fi 3092if test "$vnc" = "yes" ; then 3093 echo "CONFIG_VNC=y" >> $config_host_mak 3094fi 3095if test "$vnc_tls" = "yes" ; then 3096 echo "CONFIG_VNC_TLS=y" >> $config_host_mak 3097 echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak 3098fi 3099if test "$vnc_sasl" = "yes" ; then 3100 echo "CONFIG_VNC_SASL=y" >> $config_host_mak 3101 echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak 3102fi 3103if test "$vnc_jpeg" = "yes" ; then 3104 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 3105 echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak 3106fi 3107if test "$vnc_png" = "yes" ; then 3108 echo "CONFIG_VNC_PNG=y" >> $config_host_mak 3109 echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak 3110fi 3111if test "$vnc_thread" = "yes" ; then 3112 echo "CONFIG_VNC_THREAD=y" >> $config_host_mak 3113fi 3114if test "$fnmatch" = "yes" ; then 3115 echo "CONFIG_FNMATCH=y" >> $config_host_mak 3116fi 3117if test "$uuid" = "yes" ; then 3118 echo "CONFIG_UUID=y" >> $config_host_mak 3119fi 3120if test "$xfs" = "yes" ; then 3121 echo "CONFIG_XFS=y" >> $config_host_mak 3122fi 3123qemu_version=`head $source_path/VERSION` 3124echo "VERSION=$qemu_version" >>$config_host_mak 3125echo "PKGVERSION=$pkgversion" >>$config_host_mak 3126echo "SRC_PATH=$source_path" >> $config_host_mak 3127echo "TARGET_DIRS=$target_list" >> $config_host_mak 3128if [ "$docs" = "yes" ] ; then 3129 echo "BUILD_DOCS=yes" >> $config_host_mak 3130fi 3131if test "$sdl" = "yes" ; then 3132 echo "CONFIG_SDL=y" >> $config_host_mak 3133 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 3134fi 3135if test "$cocoa" = "yes" ; then 3136 echo "CONFIG_COCOA=y" >> $config_host_mak 3137fi 3138if test "$curses" = "yes" ; then 3139 echo "CONFIG_CURSES=y" >> $config_host_mak 3140fi 3141if test "$atfile" = "yes" ; then 3142 echo "CONFIG_ATFILE=y" >> $config_host_mak 3143fi 3144if test "$utimens" = "yes" ; then 3145 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 3146fi 3147if test "$pipe2" = "yes" ; then 3148 echo "CONFIG_PIPE2=y" >> $config_host_mak 3149fi 3150if test "$accept4" = "yes" ; then 3151 echo "CONFIG_ACCEPT4=y" >> $config_host_mak 3152fi 3153if test "$splice" = "yes" ; then 3154 echo "CONFIG_SPLICE=y" >> $config_host_mak 3155fi 3156if test "$eventfd" = "yes" ; then 3157 echo "CONFIG_EVENTFD=y" >> $config_host_mak 3158fi 3159if test "$fallocate" = "yes" ; then 3160 echo "CONFIG_FALLOCATE=y" >> $config_host_mak 3161fi 3162if test "$sync_file_range" = "yes" ; then 3163 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 3164fi 3165if test "$fiemap" = "yes" ; then 3166 echo "CONFIG_FIEMAP=y" >> $config_host_mak 3167fi 3168if test "$dup3" = "yes" ; then 3169 echo "CONFIG_DUP3=y" >> $config_host_mak 3170fi 3171if test "$epoll" = "yes" ; then 3172 echo "CONFIG_EPOLL=y" >> $config_host_mak 3173fi 3174if test "$epoll_create1" = "yes" ; then 3175 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 3176fi 3177if test "$epoll_pwait" = "yes" ; then 3178 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 3179fi 3180if test "$inotify" = "yes" ; then 3181 echo "CONFIG_INOTIFY=y" >> $config_host_mak 3182fi 3183if test "$inotify1" = "yes" ; then 3184 echo "CONFIG_INOTIFY1=y" >> $config_host_mak 3185fi 3186if test "$byteswap_h" = "yes" ; then 3187 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 3188fi 3189if test "$bswap_h" = "yes" ; then 3190 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 3191fi 3192if test "$curl" = "yes" ; then 3193 echo "CONFIG_CURL=y" >> $config_host_mak 3194 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 3195fi 3196if test "$brlapi" = "yes" ; then 3197 echo "CONFIG_BRLAPI=y" >> $config_host_mak 3198fi 3199if test "$bluez" = "yes" ; then 3200 echo "CONFIG_BLUEZ=y" >> $config_host_mak 3201 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 3202fi 3203echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 3204if test "$xen" = "yes" ; then 3205 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 3206 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 3207fi 3208if test "$linux_aio" = "yes" ; then 3209 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 3210fi 3211if test "$attr" = "yes" ; then 3212 echo "CONFIG_ATTR=y" >> $config_host_mak 3213fi 3214if test "$libattr" = "yes" ; then 3215 echo "CONFIG_LIBATTR=y" >> $config_host_mak 3216fi 3217if test "$virtfs" = "yes" ; then 3218 echo "CONFIG_VIRTFS=y" >> $config_host_mak 3219fi 3220if test "$blobs" = "yes" ; then 3221 echo "INSTALL_BLOBS=yes" >> $config_host_mak 3222fi 3223if test "$iovec" = "yes" ; then 3224 echo "CONFIG_IOVEC=y" >> $config_host_mak 3225fi 3226if test "$preadv" = "yes" ; then 3227 echo "CONFIG_PREADV=y" >> $config_host_mak 3228fi 3229if test "$fdt" = "yes" ; then 3230 echo "CONFIG_FDT=y" >> $config_host_mak 3231fi 3232if test "$signalfd" = "yes" ; then 3233 echo "CONFIG_SIGNALFD=y" >> $config_host_mak 3234fi 3235if test "$tcg_interpreter" = "yes" ; then 3236 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 3237fi 3238if test "$fdatasync" = "yes" ; then 3239 echo "CONFIG_FDATASYNC=y" >> $config_host_mak 3240fi 3241if test "$madvise" = "yes" ; then 3242 echo "CONFIG_MADVISE=y" >> $config_host_mak 3243fi 3244if test "$posix_madvise" = "yes" ; then 3245 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 3246fi 3247 3248if test "$spice" = "yes" ; then 3249 echo "CONFIG_SPICE=y" >> $config_host_mak 3250fi 3251 3252if test "$smartcard" = "yes" ; then 3253 echo "CONFIG_SMARTCARD=y" >> $config_host_mak 3254fi 3255 3256if test "$smartcard_nss" = "yes" ; then 3257 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 3258 echo "libcacard_libs=$libcacard_libs" >> $config_host_mak 3259 echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak 3260fi 3261 3262if test "$usb_redir" = "yes" ; then 3263 echo "CONFIG_USB_REDIR=y" >> $config_host_mak 3264fi 3265 3266if test "$opengl" = "yes" ; then 3267 echo "CONFIG_OPENGL=y" >> $config_host_mak 3268fi 3269 3270if test "$libiscsi" = "yes" ; then 3271 echo "CONFIG_LIBISCSI=y" >> $config_host_mak 3272fi 3273 3274# XXX: suppress that 3275if [ "$bsd" = "yes" ] ; then 3276 echo "CONFIG_BSD=y" >> $config_host_mak 3277fi 3278 3279echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak 3280 3281if test "$zero_malloc" = "yes" ; then 3282 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 3283fi 3284if test "$rbd" = "yes" ; then 3285 echo "CONFIG_RBD=y" >> $config_host_mak 3286fi 3287 3288if test "$coroutine_backend" = "ucontext" ; then 3289 echo "CONFIG_UCONTEXT_COROUTINE=y" >> $config_host_mak 3290elif test "$coroutine_backend" = "sigaltstack" ; then 3291 echo "CONFIG_SIGALTSTACK_COROUTINE=y" >> $config_host_mak 3292fi 3293 3294if test "$open_by_handle_at" = "yes" ; then 3295 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 3296fi 3297 3298if test "$linux_magic_h" = "yes" ; then 3299 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 3300fi 3301 3302# USB host support 3303case "$usb" in 3304linux) 3305 echo "HOST_USB=linux" >> $config_host_mak 3306;; 3307bsd) 3308 echo "HOST_USB=bsd" >> $config_host_mak 3309;; 3310*) 3311 echo "HOST_USB=stub" >> $config_host_mak 3312;; 3313esac 3314 3315# use default implementation for tracing backend-specific routines 3316trace_default=yes 3317echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak 3318if test "$trace_backend" = "nop"; then 3319 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 3320fi 3321if test "$trace_backend" = "simple"; then 3322 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 3323 trace_default=no 3324 # Set the appropriate trace file. 3325 trace_file="\"$trace_file-\" FMT_pid" 3326fi 3327if test "$trace_backend" = "stderr"; then 3328 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak 3329 trace_default=no 3330fi 3331if test "$trace_backend" = "ust"; then 3332 echo "CONFIG_TRACE_UST=y" >> $config_host_mak 3333fi 3334if test "$trace_backend" = "dtrace"; then 3335 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 3336 if test "$trace_backend_stap" = "yes" ; then 3337 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 3338 fi 3339fi 3340echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 3341if test "$trace_default" = "yes"; then 3342 echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak 3343fi 3344 3345echo "TOOLS=$tools" >> $config_host_mak 3346echo "ROMS=$roms" >> $config_host_mak 3347echo "MAKE=$make" >> $config_host_mak 3348echo "INSTALL=$install" >> $config_host_mak 3349echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 3350echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 3351echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 3352echo "PYTHON=$python" >> $config_host_mak 3353echo "CC=$cc" >> $config_host_mak 3354echo "CC_I386=$cc_i386" >> $config_host_mak 3355echo "HOST_CC=$host_cc" >> $config_host_mak 3356echo "AR=$ar" >> $config_host_mak 3357echo "OBJCOPY=$objcopy" >> $config_host_mak 3358echo "LD=$ld" >> $config_host_mak 3359echo "WINDRES=$windres" >> $config_host_mak 3360echo "LIBTOOL=$libtool" >> $config_host_mak 3361echo "CFLAGS=$CFLAGS" >> $config_host_mak 3362echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 3363echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 3364if test "$sparse" = "yes" ; then 3365 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 3366 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 3367 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 3368fi 3369echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak 3370echo "LDFLAGS=$LDFLAGS" >> $config_host_mak 3371echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak 3372echo "ARLIBS_END=$arlibs_end" >> $config_host_mak 3373echo "LIBS+=$LIBS" >> $config_host_mak 3374echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 3375echo "EXESUF=$EXESUF" >> $config_host_mak 3376echo "LIBS_QGA+=$libs_qga" >> $config_host_mak 3377echo "POD2MAN=$POD2MAN" >> $config_host_mak 3378 3379# generate list of library paths for linker script 3380 3381$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld} 3382 3383if test -f ${config_host_ld}~ ; then 3384 if cmp -s $config_host_ld ${config_host_ld}~ ; then 3385 mv ${config_host_ld}~ $config_host_ld 3386 else 3387 rm ${config_host_ld}~ 3388 fi 3389fi 3390 3391for d in libdis libdis-user; do 3392 mkdir -p $d 3393 symlink $source_path/Makefile.dis $d/Makefile 3394 echo > $d/config.mak 3395done 3396 3397# use included Linux headers 3398if test "$linux" = "yes" ; then 3399 mkdir -p linux-headers 3400 case "$cpu" in 3401 i386|x86_64) 3402 symlink $source_path/linux-headers/asm-x86 linux-headers/asm 3403 ;; 3404 ppcemb|ppc|ppc64) 3405 symlink $source_path/linux-headers/asm-powerpc linux-headers/asm 3406 ;; 3407 s390x) 3408 symlink $source_path/linux-headers/asm-s390 linux-headers/asm 3409 ;; 3410 esac 3411fi 3412 3413for target in $target_list; do 3414target_dir="$target" 3415config_target_mak=$target_dir/config-target.mak 3416target_arch2=`echo $target | cut -d '-' -f 1` 3417target_bigendian="no" 3418 3419case "$target_arch2" in 3420 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 3421 target_bigendian=yes 3422 ;; 3423esac 3424target_softmmu="no" 3425target_user_only="no" 3426target_linux_user="no" 3427target_darwin_user="no" 3428target_bsd_user="no" 3429case "$target" in 3430 ${target_arch2}-softmmu) 3431 target_softmmu="yes" 3432 ;; 3433 ${target_arch2}-linux-user) 3434 if test "$linux" != "yes" ; then 3435 echo "ERROR: Target '$target' is only available on a Linux host" 3436 exit 1 3437 fi 3438 target_user_only="yes" 3439 target_linux_user="yes" 3440 ;; 3441 ${target_arch2}-darwin-user) 3442 if test "$darwin" != "yes" ; then 3443 echo "ERROR: Target '$target' is only available on a Darwin host" 3444 exit 1 3445 fi 3446 target_user_only="yes" 3447 target_darwin_user="yes" 3448 ;; 3449 ${target_arch2}-bsd-user) 3450 if test "$bsd" != "yes" ; then 3451 echo "ERROR: Target '$target' is only available on a BSD host" 3452 exit 1 3453 fi 3454 target_user_only="yes" 3455 target_bsd_user="yes" 3456 ;; 3457 *) 3458 echo "ERROR: Target '$target' not recognised" 3459 exit 1 3460 ;; 3461esac 3462 3463mkdir -p $target_dir 3464mkdir -p $target_dir/fpu 3465mkdir -p $target_dir/tcg 3466mkdir -p $target_dir/ide 3467mkdir -p $target_dir/usb 3468mkdir -p $target_dir/9pfs 3469mkdir -p $target_dir/kvm 3470if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then 3471 mkdir -p $target_dir/nwfpe 3472fi 3473symlink $source_path/Makefile.target $target_dir/Makefile 3474 3475 3476echo "# Automatically generated by configure - do not modify" > $config_target_mak 3477 3478bflt="no" 3479target_nptl="no" 3480interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"` 3481gdb_xml_files="" 3482target_short_alignment=2 3483target_int_alignment=4 3484target_long_alignment=4 3485target_llong_alignment=8 3486target_libs_softmmu= 3487 3488TARGET_ARCH="$target_arch2" 3489TARGET_BASE_ARCH="" 3490TARGET_ABI_DIR="" 3491 3492case "$target_arch2" in 3493 i386) 3494 target_phys_bits=64 3495 ;; 3496 x86_64) 3497 TARGET_BASE_ARCH=i386 3498 target_phys_bits=64 3499 target_long_alignment=8 3500 ;; 3501 alpha) 3502 target_phys_bits=64 3503 target_long_alignment=8 3504 target_nptl="yes" 3505 ;; 3506 arm|armeb) 3507 TARGET_ARCH=arm 3508 bflt="yes" 3509 target_nptl="yes" 3510 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 3511 target_phys_bits=32 3512 target_llong_alignment=4 3513 target_libs_softmmu="$fdt_libs" 3514 ;; 3515 cris) 3516 target_nptl="yes" 3517 target_phys_bits=32 3518 ;; 3519 lm32) 3520 target_phys_bits=32 3521 target_libs_softmmu="$opengl_libs" 3522 ;; 3523 m68k) 3524 bflt="yes" 3525 gdb_xml_files="cf-core.xml cf-fp.xml" 3526 target_phys_bits=32 3527 target_int_alignment=2 3528 target_long_alignment=2 3529 target_llong_alignment=2 3530 ;; 3531 microblaze|microblazeel) 3532 TARGET_ARCH=microblaze 3533 bflt="yes" 3534 target_nptl="yes" 3535 target_phys_bits=32 3536 target_libs_softmmu="$fdt_libs" 3537 ;; 3538 mips|mipsel) 3539 TARGET_ARCH=mips 3540 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 3541 target_nptl="yes" 3542 target_phys_bits=64 3543 ;; 3544 mipsn32|mipsn32el) 3545 TARGET_ARCH=mipsn32 3546 TARGET_BASE_ARCH=mips 3547 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 3548 target_phys_bits=64 3549 ;; 3550 mips64|mips64el) 3551 TARGET_ARCH=mips64 3552 TARGET_BASE_ARCH=mips 3553 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 3554 target_phys_bits=64 3555 target_long_alignment=8 3556 ;; 3557 ppc) 3558 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3559 target_phys_bits=64 3560 target_nptl="yes" 3561 target_libs_softmmu="$fdt_libs" 3562 ;; 3563 ppcemb) 3564 TARGET_BASE_ARCH=ppc 3565 TARGET_ABI_DIR=ppc 3566 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3567 target_phys_bits=64 3568 target_nptl="yes" 3569 target_libs_softmmu="$fdt_libs" 3570 ;; 3571 ppc64) 3572 TARGET_BASE_ARCH=ppc 3573 TARGET_ABI_DIR=ppc 3574 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3575 target_phys_bits=64 3576 target_long_alignment=8 3577 target_libs_softmmu="$fdt_libs" 3578 ;; 3579 ppc64abi32) 3580 TARGET_ARCH=ppc64 3581 TARGET_BASE_ARCH=ppc 3582 TARGET_ABI_DIR=ppc 3583 echo "TARGET_ABI32=y" >> $config_target_mak 3584 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 3585 target_phys_bits=64 3586 target_libs_softmmu="$fdt_libs" 3587 ;; 3588 sh4|sh4eb) 3589 TARGET_ARCH=sh4 3590 bflt="yes" 3591 target_nptl="yes" 3592 target_phys_bits=32 3593 ;; 3594 sparc) 3595 target_phys_bits=64 3596 ;; 3597 sparc64) 3598 TARGET_BASE_ARCH=sparc 3599 target_phys_bits=64 3600 target_long_alignment=8 3601 ;; 3602 sparc32plus) 3603 TARGET_ARCH=sparc64 3604 TARGET_BASE_ARCH=sparc 3605 TARGET_ABI_DIR=sparc 3606 echo "TARGET_ABI32=y" >> $config_target_mak 3607 target_phys_bits=64 3608 ;; 3609 s390x) 3610 target_nptl="yes" 3611 target_phys_bits=64 3612 target_long_alignment=8 3613 ;; 3614 unicore32) 3615 target_phys_bits=32 3616 ;; 3617 xtensa|xtensaeb) 3618 TARGET_ARCH=xtensa 3619 target_phys_bits=32 3620 ;; 3621 *) 3622 echo "Unsupported target CPU" 3623 exit 1 3624 ;; 3625esac 3626 3627case "$target_arch2" in 3628 alpha | sparc*) 3629 echo "CONFIG_TCG_PASS_AREG0=y" >> $config_target_mak 3630 ;; 3631esac 3632 3633echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak 3634echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak 3635echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak 3636echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak 3637echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak 3638target_arch_name="`echo $TARGET_ARCH | LC_ALL=C tr '[a-z]' '[A-Z]'`" 3639echo "TARGET_$target_arch_name=y" >> $config_target_mak 3640echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak 3641# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 3642if [ "$TARGET_BASE_ARCH" = "" ]; then 3643 TARGET_BASE_ARCH=$TARGET_ARCH 3644fi 3645echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 3646if [ "$TARGET_ABI_DIR" = "" ]; then 3647 TARGET_ABI_DIR=$TARGET_ARCH 3648fi 3649echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 3650case "$target_arch2" in 3651 i386|x86_64) 3652 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 3653 target_phys_bits=64 3654 echo "CONFIG_XEN=y" >> $config_target_mak 3655 else 3656 echo "CONFIG_NO_XEN=y" >> $config_target_mak 3657 fi 3658 ;; 3659 *) 3660 echo "CONFIG_NO_XEN=y" >> $config_target_mak 3661esac 3662case "$target_arch2" in 3663 i386|x86_64|ppcemb|ppc|ppc64|s390x) 3664 # Make sure the target and host cpus are compatible 3665 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 3666 \( "$target_arch2" = "$cpu" -o \ 3667 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 3668 \( "$target_arch2" = "ppc64" -a "$cpu" = "ppc" \) -o \ 3669 \( "$target_arch2" = "ppc" -a "$cpu" = "ppc64" \) -o \ 3670 \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 3671 \( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \ 3672 \( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then 3673 echo "CONFIG_KVM=y" >> $config_target_mak 3674 if test "$vhost_net" = "yes" ; then 3675 echo "CONFIG_VHOST_NET=y" >> $config_target_mak 3676 fi 3677 fi 3678esac 3679if test "$target_arch2" = "ppc64" -a "$fdt" = "yes"; then 3680 echo "CONFIG_PSERIES=y" >> $config_target_mak 3681fi 3682if test "$target_bigendian" = "yes" ; then 3683 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 3684fi 3685if test "$target_softmmu" = "yes" ; then 3686 echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak 3687 echo "CONFIG_SOFTMMU=y" >> $config_target_mak 3688 echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak 3689 echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak 3690 echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak 3691 if test "$smartcard_nss" = "yes" ; then 3692 echo "subdir-$target: subdir-libcacard" >> $config_host_mak 3693 fi 3694fi 3695if test "$target_user_only" = "yes" ; then 3696 echo "CONFIG_USER_ONLY=y" >> $config_target_mak 3697 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 3698fi 3699if test "$target_linux_user" = "yes" ; then 3700 echo "CONFIG_LINUX_USER=y" >> $config_target_mak 3701fi 3702if test "$target_darwin_user" = "yes" ; then 3703 echo "CONFIG_DARWIN_USER=y" >> $config_target_mak 3704fi 3705list="" 3706if test ! -z "$gdb_xml_files" ; then 3707 for x in $gdb_xml_files; do 3708 list="$list $source_path/gdb-xml/$x" 3709 done 3710 echo "TARGET_XML_FILES=$list" >> $config_target_mak 3711fi 3712 3713if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 3714 echo "TARGET_HAS_BFLT=y" >> $config_target_mak 3715fi 3716if test "$target_user_only" = "yes" \ 3717 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then 3718 echo "CONFIG_USE_NPTL=y" >> $config_target_mak 3719fi 3720if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 3721 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 3722fi 3723if test "$target_bsd_user" = "yes" ; then 3724 echo "CONFIG_BSD_USER=y" >> $config_target_mak 3725fi 3726 3727# generate QEMU_CFLAGS/LDFLAGS for targets 3728 3729cflags="" 3730includes="" 3731ldflags="" 3732 3733if test "$tcg_interpreter" = "yes"; then 3734 includes="-I\$(SRC_PATH)/tcg/tci $includes" 3735elif test "$ARCH" = "sparc64" ; then 3736 includes="-I\$(SRC_PATH)/tcg/sparc $includes" 3737elif test "$ARCH" = "s390x" ; then 3738 includes="-I\$(SRC_PATH)/tcg/s390 $includes" 3739elif test "$ARCH" = "x86_64" ; then 3740 includes="-I\$(SRC_PATH)/tcg/i386 $includes" 3741else 3742 includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes" 3743fi 3744includes="-I\$(SRC_PATH)/tcg $includes" 3745 3746if test "$linux" = "yes" ; then 3747 includes="-I\$(SRC_PATH)/linux-headers $includes" 3748fi 3749 3750if test "$target_user_only" = "yes" ; then 3751 libdis_config_mak=libdis-user/config.mak 3752else 3753 libdis_config_mak=libdis/config.mak 3754fi 3755 3756for i in $ARCH $TARGET_BASE_ARCH ; do 3757 case "$i" in 3758 alpha) 3759 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 3760 echo "CONFIG_ALPHA_DIS=y" >> $libdis_config_mak 3761 ;; 3762 arm) 3763 echo "CONFIG_ARM_DIS=y" >> $config_target_mak 3764 echo "CONFIG_ARM_DIS=y" >> $libdis_config_mak 3765 ;; 3766 cris) 3767 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 3768 echo "CONFIG_CRIS_DIS=y" >> $libdis_config_mak 3769 ;; 3770 hppa) 3771 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 3772 echo "CONFIG_HPPA_DIS=y" >> $libdis_config_mak 3773 ;; 3774 i386|x86_64) 3775 echo "CONFIG_I386_DIS=y" >> $config_target_mak 3776 echo "CONFIG_I386_DIS=y" >> $libdis_config_mak 3777 ;; 3778 ia64*) 3779 echo "CONFIG_IA64_DIS=y" >> $config_target_mak 3780 echo "CONFIG_IA64_DIS=y" >> $libdis_config_mak 3781 ;; 3782 lm32) 3783 echo "CONFIG_LM32_DIS=y" >> $config_target_mak 3784 echo "CONFIG_LM32_DIS=y" >> $libdis_config_mak 3785 ;; 3786 m68k) 3787 echo "CONFIG_M68K_DIS=y" >> $config_target_mak 3788 echo "CONFIG_M68K_DIS=y" >> $libdis_config_mak 3789 ;; 3790 microblaze*) 3791 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 3792 echo "CONFIG_MICROBLAZE_DIS=y" >> $libdis_config_mak 3793 ;; 3794 mips*) 3795 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 3796 echo "CONFIG_MIPS_DIS=y" >> $libdis_config_mak 3797 ;; 3798 ppc*) 3799 echo "CONFIG_PPC_DIS=y" >> $config_target_mak 3800 echo "CONFIG_PPC_DIS=y" >> $libdis_config_mak 3801 ;; 3802 s390*) 3803 echo "CONFIG_S390_DIS=y" >> $config_target_mak 3804 echo "CONFIG_S390_DIS=y" >> $libdis_config_mak 3805 ;; 3806 sh4) 3807 echo "CONFIG_SH4_DIS=y" >> $config_target_mak 3808 echo "CONFIG_SH4_DIS=y" >> $libdis_config_mak 3809 ;; 3810 sparc*) 3811 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 3812 echo "CONFIG_SPARC_DIS=y" >> $libdis_config_mak 3813 ;; 3814 xtensa*) 3815 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak 3816 echo "CONFIG_XTENSA_DIS=y" >> $libdis_config_mak 3817 ;; 3818 esac 3819done 3820if test "$tcg_interpreter" = "yes" ; then 3821 echo "CONFIG_TCI_DIS=y" >> $config_target_mak 3822 echo "CONFIG_TCI_DIS=y" >> $libdis_config_mak 3823fi 3824 3825case "$ARCH" in 3826alpha) 3827 # Ensure there's only a single GP 3828 cflags="-msmall-data $cflags" 3829;; 3830esac 3831 3832if test "$target_softmmu" = "yes" ; then 3833 case "$TARGET_BASE_ARCH" in 3834 arm) 3835 cflags="-DHAS_AUDIO $cflags" 3836 ;; 3837 lm32) 3838 cflags="-DHAS_AUDIO $cflags" 3839 ;; 3840 i386|mips|ppc) 3841 cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags" 3842 ;; 3843 esac 3844fi 3845 3846if test "$target_softmmu" = "yes" -a \( \ 3847 "$TARGET_ARCH" = "microblaze" -o \ 3848 "$TARGET_ARCH" = "cris" \) ; then 3849 echo "CONFIG_NEED_MMU=y" >> $config_target_mak 3850fi 3851 3852if test "$gprof" = "yes" ; then 3853 echo "TARGET_GPROF=yes" >> $config_target_mak 3854 if test "$target_linux_user" = "yes" ; then 3855 cflags="-p $cflags" 3856 ldflags="-p $ldflags" 3857 fi 3858 if test "$target_softmmu" = "yes" ; then 3859 ldflags="-p $ldflags" 3860 echo "GPROF_CFLAGS=-p" >> $config_target_mak 3861 fi 3862fi 3863 3864if test "$ARCH" = "tci"; then 3865 linker_script="" 3866else 3867 linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" 3868fi 3869 3870if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 3871 case "$ARCH" in 3872 sparc) 3873 # -static is used to avoid g1/g3 usage by the dynamic linker 3874 ldflags="$linker_script -static $ldflags" 3875 ;; 3876 alpha | s390x) 3877 # The default placement of the application is fine. 3878 ;; 3879 *) 3880 ldflags="$linker_script $ldflags" 3881 ;; 3882 esac 3883fi 3884 3885echo "LDFLAGS+=$ldflags" >> $config_target_mak 3886echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak 3887echo "QEMU_INCLUDES+=$includes" >> $config_target_mak 3888 3889done # for target in $targets 3890 3891# build tree in object directory in case the source is not in the current directory 3892DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32" 3893DIRS="$DIRS slirp audio block net pc-bios/optionrom" 3894DIRS="$DIRS pc-bios/spapr-rtas" 3895DIRS="$DIRS roms/seabios roms/vgabios" 3896DIRS="$DIRS fsdev ui usb" 3897DIRS="$DIRS qapi qapi-generated" 3898DIRS="$DIRS qga trace qom" 3899FILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 3900FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 3901FILES="$FILES tests/tcg/lm32/Makefile" 3902FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 3903FILES="$FILES pc-bios/spapr-rtas/Makefile" 3904FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 3905for bios_file in \ 3906 $source_path/pc-bios/*.bin \ 3907 $source_path/pc-bios/*.rom \ 3908 $source_path/pc-bios/*.dtb \ 3909 $source_path/pc-bios/openbios-* \ 3910 $source_path/pc-bios/palcode-* 3911do 3912 FILES="$FILES pc-bios/`basename $bios_file`" 3913done 3914mkdir -p $DIRS 3915for f in $FILES ; do 3916 if [ -e "$source_path/$f" ] && ! [ -e "$f" ]; then 3917 symlink "$source_path/$f" "$f" 3918 fi 3919done 3920 3921# temporary config to build submodules 3922for rom in seabios vgabios ; do 3923 config_mak=roms/$rom/config.mak 3924 echo "# Automatically generated by configure - do not modify" > $config_mak 3925 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 3926 echo "CC=$cc" >> $config_mak 3927 echo "BCC=bcc" >> $config_mak 3928 echo "CPP=${cross_prefix}cpp" >> $config_mak 3929 echo "OBJCOPY=objcopy" >> $config_mak 3930 echo "IASL=iasl" >> $config_mak 3931 echo "LD=$ld" >> $config_mak 3932done 3933 3934for hwlib in 32 64; do 3935 d=libhw$hwlib 3936 mkdir -p $d 3937 mkdir -p $d/ide 3938 mkdir -p $d/usb 3939 symlink $source_path/Makefile.hw $d/Makefile 3940 mkdir -p $d/9pfs 3941 echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak 3942done 3943 3944if [ "$source_path" != `pwd` ]; then 3945 # out of tree build 3946 mkdir -p libcacard 3947 rm -f libcacard/Makefile 3948 symlink "$source_path/libcacard/Makefile" libcacard/Makefile 3949fi 3950 3951d=libuser 3952mkdir -p $d 3953mkdir -p $d/trace 3954mkdir -p $d/qom 3955symlink $source_path/Makefile.user $d/Makefile 3956 3957if test "$docs" = "yes" ; then 3958 mkdir -p QMP 3959fi 3960