File:  [Qemu by Fabrice Bellard] / qemu / configure
Revision 1.1.1.16 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:56:13 2018 UTC (2 years, 3 months ago) by root
Branches: qemu, MAIN
CVS tags: qemu1000, qemu0151, HEAD
qemu 0.15.1

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

unix.superglobalmegacorp.com