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