xref: /openbmc/qemu/configure (revision 05c2a3e7)
17d13299dSbellard#!/bin/sh
27d13299dSbellard#
33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard
47d13299dSbellard#
57d13299dSbellard# set temporary file name
67d13299dSbellardif test ! -z "$TMPDIR" ; then
77d13299dSbellard    TMPDIR1="${TMPDIR}"
87d13299dSbellardelif test ! -z "$TEMPDIR" ; then
97d13299dSbellard    TMPDIR1="${TEMPDIR}"
107d13299dSbellardelse
117d13299dSbellard    TMPDIR1="/tmp"
127d13299dSbellardfi
137d13299dSbellard
143ef693a0SbellardTMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
153ef693a0SbellardTMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
163ef693a0SbellardTMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
173ef693a0SbellardTMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
187d13299dSbellard
197d13299dSbellard# default parameters
2011d9f695Sbellardprefix=""
211e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M"
2243ce4dfeSbellardstatic="no"
237d13299dSbellardcross_prefix=""
247d13299dSbellardcc="gcc"
257d13299dSbellardhost_cc="gcc"
267d13299dSbellardar="ar"
277d13299dSbellardmake="make"
287d13299dSbellardstrip="strip"
297d13299dSbellardcpu=`uname -m`
305327cf48Sbellardtarget_list=""
317d13299dSbellardcase "$cpu" in
327d13299dSbellard  i386|i486|i586|i686|i86pc|BePC)
3397a847bcSbellard    cpu="i386"
347d13299dSbellard  ;;
35ba68055eSbellard  armv*b)
36808c4954Sbellard    cpu="armv4b"
37808c4954Sbellard  ;;
38ba68055eSbellard  armv*l)
397d13299dSbellard    cpu="armv4l"
407d13299dSbellard  ;;
417d13299dSbellard  alpha)
427d13299dSbellard    cpu="alpha"
437d13299dSbellard  ;;
44295defa5Sbellard  "Power Macintosh"|ppc|ppc64)
457d13299dSbellard    cpu="powerpc"
467d13299dSbellard  ;;
477d13299dSbellard  mips)
487d13299dSbellard    cpu="mips"
497d13299dSbellard  ;;
50fb3e5849Sbellard  s390)
51fb3e5849Sbellard    cpu="s390"
52fb3e5849Sbellard  ;;
53ae228531Sbellard  sparc)
54ae228531Sbellard    cpu="sparc"
55ae228531Sbellard  ;;
56ae228531Sbellard  sparc64)
57ae228531Sbellard    cpu="sparc64"
58ae228531Sbellard  ;;
59a8baa8c5Sbellard  ia64)
60a8baa8c5Sbellard    cpu="ia64"
61a8baa8c5Sbellard  ;;
6238e584a0Sbellard  m68k)
6338e584a0Sbellard    cpu="m68k"
6438e584a0Sbellard  ;;
65bc51c5c9Sbellard  x86_64|amd64)
660b0babc6Sbellard    cpu="x86_64"
67bc51c5c9Sbellard  ;;
687d13299dSbellard  *)
697d13299dSbellard    cpu="unknown"
707d13299dSbellard  ;;
717d13299dSbellardesac
727d13299dSbellardgprof="no"
737d13299dSbellardbigendian="no"
7467b915a5Sbellardmingw32="no"
7567b915a5SbellardEXESUF=""
7667b915a5Sbellardgdbstub="yes"
77443f1376Sbellardslirp="yes"
78fb065187Sbellardadlib="no"
79fb065187Sbellardoss="no"
801d14ffa9Sbellarddsound="no"
811d14ffa9Sbellardcoreaudio="no"
821d14ffa9Sbellardalsa="no"
83102a52e4Sbellardfmod="no"
84102a52e4Sbellardfmod_lib=""
85102a52e4Sbellardfmod_inc=""
865327cf48Sbellardlinux="no"
87c9ec1fe4Sbellardkqemu="no"
88*05c2a3e7Sbellardprofiler="no"
89c9ec1fe4Sbellardkernel_path=""
905b0753e0Sbellardcocoa="no"
9197ccc689Sbellardcheck_gfx="yes"
921aff381fSbellardcheck_gcc="yes"
937d13299dSbellard
947d13299dSbellard# OS specific
957d13299dSbellardtargetos=`uname -s`
967d13299dSbellardcase $targetos in
97c326e0afSbellardCYGWIN*)
98c326e0afSbellardmingw32="yes"
99c326e0afSbellardCFLAGS="-O2 -mno-cygwin"
100c326e0afSbellard;;
10167b915a5SbellardMINGW32*)
10267b915a5Sbellardmingw32="yes"
10367b915a5Sbellard;;
1047d3505c5SbellardFreeBSD)
1057d3505c5Sbellardbsd="yes"
106fb065187Sbellardoss="yes"
107e99f9060Sbellardif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
10807f4ddbfSbellard    kqemu="yes"
10907f4ddbfSbellardfi
1107d3505c5Sbellard;;
1117d3505c5SbellardNetBSD)
1127d3505c5Sbellardbsd="yes"
113fb065187Sbellardoss="yes"
1147d3505c5Sbellard;;
1157d3505c5SbellardOpenBSD)
1167d3505c5Sbellardbsd="yes"
117fb065187Sbellardoss="yes"
1187d3505c5Sbellard;;
11983fb7adfSbellardDarwin)
12083fb7adfSbellardbsd="yes"
12183fb7adfSbellarddarwin="yes"
12283fb7adfSbellard;;
123fb065187Sbellard*)
124fb065187Sbellardoss="yes"
1255327cf48Sbellardlinux="yes"
12607f4ddbfSbellardif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
127c9ec1fe4Sbellard    kqemu="yes"
128c9ec1fe4Sbellardfi
129fb065187Sbellard;;
1307d13299dSbellardesac
1317d13299dSbellard
1327d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
13383fb7adfSbellard  if [ ! "$darwin" = "yes" ] ; then
1347d3505c5Sbellard    make="gmake"
13583fb7adfSbellard  fi
1367d3505c5Sbellardfi
1377d3505c5Sbellard
1387d13299dSbellard# find source path
1397d13299dSbellard# XXX: we assume an absolute path is given when launching configure,
1407d13299dSbellard# except in './configure' case.
1417d13299dSbellardsource_path=${0%configure}
1427d13299dSbellardsource_path=${source_path%/}
1437d13299dSbellardsource_path_used="yes"
1447d13299dSbellardif test -z "$source_path" -o "$source_path" = "." ; then
1457d13299dSbellard    source_path=`pwd`
1467d13299dSbellard    source_path_used="no"
1477d13299dSbellardfi
1487d13299dSbellard
1497d13299dSbellardfor opt do
1507d13299dSbellard  case "$opt" in
1512efc3265Sbellard  --help|-h) show_help=yes
1522efc3265Sbellard  ;;
1537d13299dSbellard  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
1547d13299dSbellard  ;;
15532ce6337Sbellard  --interp-prefix=*) interp_prefix=`echo $opt | cut -d '=' -f 2`
15632ce6337Sbellard  ;;
1577d13299dSbellard  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
1587d13299dSbellard  ;;
1597d13299dSbellard  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
1607d13299dSbellard  ;;
1617d13299dSbellard  --cc=*) cc=`echo $opt | cut -d '=' -f 2`
1627d13299dSbellard  ;;
16383469015Sbellard  --host-cc=*) host_cc=`echo $opt | cut -d '=' -f 2`
16483469015Sbellard  ;;
1657d13299dSbellard  --make=*) make=`echo $opt | cut -d '=' -f 2`
1667d13299dSbellard  ;;
1677d13299dSbellard  --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
1687d13299dSbellard  ;;
1697d13299dSbellard  --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
1707d13299dSbellard  ;;
1717d13299dSbellard  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
1727d13299dSbellard  ;;
17397a847bcSbellard  --target-list=*) target_list=${opt#--target-list=}
174de83cd02Sbellard  ;;
1757d13299dSbellard  --enable-gprof) gprof="yes"
1767d13299dSbellard  ;;
17743ce4dfeSbellard  --static) static="yes"
17843ce4dfeSbellard  ;;
17997a847bcSbellard  --disable-sdl) sdl="no"
18097a847bcSbellard  ;;
1811d14ffa9Sbellard  --enable-coreaudio) coreaudio="yes"
1821d14ffa9Sbellard  ;;
1831d14ffa9Sbellard  --enable-alsa) alsa="yes"
1841d14ffa9Sbellard  ;;
1851d14ffa9Sbellard  --enable-dsound) dsound="yes"
1861d14ffa9Sbellard  ;;
187102a52e4Sbellard  --enable-fmod) fmod="yes"
188102a52e4Sbellard  ;;
189102a52e4Sbellard  --fmod-lib=*) fmod_lib=${opt#--fmod-lib=}
190102a52e4Sbellard  ;;
191102a52e4Sbellard  --fmod-inc=*) fmod_inc=${opt#--fmod-inc=}
192102a52e4Sbellard  ;;
19367b915a5Sbellard  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
19467b915a5Sbellard  ;;
195443f1376Sbellard  --disable-slirp) slirp="no"
196c20709aaSbellard  ;;
197fb065187Sbellard  --enable-adlib) adlib="yes"
198fb065187Sbellard  ;;
199c9ec1fe4Sbellard  --disable-kqemu) kqemu="no"
200c9ec1fe4Sbellard  ;;
201*05c2a3e7Sbellard  --enable-profiler) profiler="yes"
202*05c2a3e7Sbellard  ;;
203c9ec1fe4Sbellard  --kernel-path=*) kernel_path=${opt#--kernel-path=}
204c9ec1fe4Sbellard  ;;
2051d14ffa9Sbellard  --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
2065b0753e0Sbellard  ;;
20797ccc689Sbellard  --disable-gfx-check) check_gfx="no"
20897ccc689Sbellard  ;;
2091aff381fSbellard  --disable-gcc-check) check_gcc="no"
2101aff381fSbellard  ;;
2117d13299dSbellard  esac
2127d13299dSbellarddone
2137d13299dSbellard
2147d13299dSbellard# Checking for CFLAGS
2157d13299dSbellardif test -z "$CFLAGS"; then
2167d13299dSbellard    CFLAGS="-O2"
2177d13299dSbellardfi
2187d13299dSbellard
2197d13299dSbellardcc="${cross_prefix}${cc}"
2207d13299dSbellardar="${cross_prefix}${ar}"
2217d13299dSbellardstrip="${cross_prefix}${strip}"
2227d13299dSbellard
22367b915a5Sbellardif test "$mingw32" = "yes" ; then
2245327cf48Sbellard    linux="no"
22567b915a5Sbellard    EXESUF=".exe"
22667b915a5Sbellard    gdbstub="no"
2279f059ecaSbellard    oss="no"
22807f4ddbfSbellard    if [ "$cpu" = "i386" ] ; then
22907f4ddbfSbellard        kqemu="yes"
23007f4ddbfSbellard    fi
23167b915a5Sbellardfi
23267b915a5Sbellard
2335327cf48Sbellardif test -z "$target_list" ; then
2345327cf48Sbellard# these targets are portable
235b5ff1b31Sbellard    target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu arm-softmmu"
2365327cf48Sbellard# the following are Linux specific
2375327cf48Sbellard    if [ "$linux" = "yes" ] ; then
238c20eb473Sbellard        target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user $target_list"
2395327cf48Sbellard    fi
2406e20a45fSbellardelse
2416e20a45fSbellard    target_list=$(echo "$target_list" | sed -e 's/,/ /g')
2425327cf48Sbellardfi
2435327cf48Sbellard
2447d13299dSbellardif test -z "$cross_prefix" ; then
2457d13299dSbellard
2467d13299dSbellard# ---
2477d13299dSbellard# big/little endian test
2487d13299dSbellardcat > $TMPC << EOF
2497d13299dSbellard#include <inttypes.h>
2507d13299dSbellardint main(int argc, char ** argv){
2517d13299dSbellard        volatile uint32_t i=0x01234567;
2527d13299dSbellard        return (*((uint8_t*)(&i))) == 0x67;
2537d13299dSbellard}
2547d13299dSbellardEOF
2557d13299dSbellard
2567d13299dSbellardif $cc -o $TMPE $TMPC 2>/dev/null ; then
2577d13299dSbellard$TMPE && bigendian="yes"
2587d13299dSbellardelse
2597d13299dSbellardecho big/little test failed
2607d13299dSbellardfi
2617d13299dSbellard
2627d13299dSbellardelse
2637d13299dSbellard
2647d13299dSbellard# if cross compiling, cannot launch a program, so make a static guess
265808c4954Sbellardif test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
2667d13299dSbellard    bigendian="yes"
2677d13299dSbellardfi
2687d13299dSbellard
2697d13299dSbellardfi
2707d13299dSbellard
271b6853697Sbellard# host long bits test
272b6853697Sbellardhostlongbits="32"
273b6853697Sbellardif test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
274b6853697Sbellard    hostlongbits="64"
275b6853697Sbellardfi
276b6853697Sbellard
277e8cd23deSbellard# check gcc options support
27804369ff2Sbellardcat > $TMPC <<EOF
27904369ff2Sbellardint main(void) {
28004369ff2Sbellard}
28104369ff2SbellardEOF
28204369ff2Sbellard
283e8cd23deSbellardhave_gcc3_options="no"
284e8cd23deSbellardif $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
285e8cd23deSbellard   have_gcc3_options="yes"
28604369ff2Sbellardfi
287ca735206Sbellard
2881aff381fSbellard# Check for gcc4
2891aff381fSbellardif test "$check_gcc" = "yes" ; then
2901aff381fSbellard    cat > $TMPC <<EOF
2911aff381fSbellard#if __GNUC__ >= 4
2921aff381fSbellard#error gcc4
2931aff381fSbellard#endif
2941aff381fSbellardint main(){return 0;}
2951aff381fSbellardEOF
2961aff381fSbellard    if ! $cc -o $TMPO $TMPC 2>/dev/null ; then
2971aff381fSbellard        echo "ERROR: \"$cc\" looks like gcc 4.x"
2981aff381fSbellard        echo "QEMU is known to have problems when compiled with gcc 4.x"
2991aff381fSbellard        echo "It is recommended that you use gcc 3.x to build QEMU"
3001aff381fSbellard        echo "To use this compiler anyway, configure with --disable-gcc-check"
3011aff381fSbellard        exit 1;
3021aff381fSbellard    fi
3031aff381fSbellardfi
3041aff381fSbellard
30511d9f695Sbellard##########################################
30611d9f695Sbellard# SDL probe
30711d9f695Sbellard
30811d9f695Sbellardsdl_too_old=no
30911d9f695Sbellard
31011d9f695Sbellardif test -z "$sdl" ; then
31111d9f695Sbellard
312a6e022adSbellardsdl_config="sdl-config"
313a6e022adSbellardsdl=no
3147c1f25b4Sbellardsdl_static=no
315a6e022adSbellard
316a6e022adSbellardif test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
317a6e022adSbellard# win32 cross compilation case
318a6e022adSbellard    sdl_config="i386-mingw32msvc-sdl-config"
319a6e022adSbellard    sdl=yes
320a6e022adSbellardelse
321a6e022adSbellard# normal SDL probe
32211d9f695Sbellardcat > $TMPC << EOF
32311d9f695Sbellard#include <SDL.h>
32411d9f695Sbellard#undef main /* We don't want SDL to override our main() */
32511d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
32611d9f695SbellardEOF
32711d9f695Sbellard
328a6e022adSbellardif $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
329a6e022adSbellard_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
33011d9f695Sbellardif test "$_sdlversion" -lt 121 ; then
33111d9f695Sbellardsdl_too_old=yes
33211d9f695Sbellardelse
33311d9f695Sbellardsdl=yes
33411d9f695Sbellardfi
3357c1f25b4Sbellard
3367c1f25b4Sbellard# static link with sdl ?
3377c1f25b4Sbellardif test "$sdl" = "yes" ; then
3387c1f25b4Sbellardaa="no"
3397c1f25b4Sbellard`$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
3407c1f25b4Sbellardsdl_static_libs=`$sdl_config --static-libs`
3417c1f25b4Sbellardif [ "$aa" = "yes" ] ; then
342d8d8aa4eSbellard  sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
34311d9f695Sbellardfi
34411d9f695Sbellard
3457c1f25b4Sbellardif $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
3467c1f25b4Sbellard  sdl_static=yes
3477c1f25b4Sbellardfi
3487c1f25b4Sbellard
3497c1f25b4Sbellardfi # static link
3507c1f25b4Sbellard
3517c1f25b4Sbellardfi # sdl compile test
3527c1f25b4Sbellard
353a6e022adSbellardfi # cross compilation
354a6e022adSbellardfi # -z $sdl
35511d9f695Sbellard
3562efc3265Sbellardif test x"$show_help" = x"yes" ; then
3577d13299dSbellardcat << EOF
3587d13299dSbellard
3597d13299dSbellardUsage: configure [options]
3607d13299dSbellardOptions: [defaults in brackets after descriptions]
3617d13299dSbellard
3627d13299dSbellardEOF
3637d13299dSbellardecho "Standard options:"
3647d13299dSbellardecho "  --help                   print this message"
3657d13299dSbellardecho "  --prefix=PREFIX          install in PREFIX [$prefix]"
3661e43adfcSbellardecho "  --interp-prefix=PREFIX   where to find shared libraries, etc."
3671e43adfcSbellardecho "                           use %M for cpu name [$interp_prefix]"
36897a847bcSbellardecho "  --target-list=LIST       set target list [$target_list]"
3697d13299dSbellardecho ""
370c9ec1fe4Sbellardecho "kqemu kernel acceleration support:"
371*05c2a3e7Sbellardecho "  --disable-kqemu          disable kqemu support"
372c9ec1fe4Sbellardecho "  --kernel-path=PATH       set the kernel path (configure probes it)"
373c9ec1fe4Sbellardecho ""
3747d13299dSbellardecho "Advanced options (experts only):"
3757d13299dSbellardecho "  --source-path=PATH       path of source code [$source_path]"
3767d13299dSbellardecho "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
3777d13299dSbellardecho "  --cc=CC                  use C compiler CC [$cc]"
3782efc3265Sbellardecho "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
3797d13299dSbellardecho "  --make=MAKE              use specified make [$make]"
38043ce4dfeSbellardecho "  --static                 enable static build [$static]"
3818147cfcaSbellardecho "  --enable-cocoa           enable COCOA (Mac OS X only)"
38267b915a5Sbellardecho "  --enable-mingw32         enable Win32 cross compilation with mingw32"
383d37282adSbellardecho "  --enable-adlib           enable Adlib emulation"
3841d14ffa9Sbellardecho "  --enable-coreaudio       enable Coreaudio audio driver"
3851d14ffa9Sbellardecho "  --enable-alsa            enable ALSA audio driver"
3861d14ffa9Sbellardecho "  --enable-fmod            enable FMOD audio driver"
3871d14ffa9Sbellardecho "  --enabled-dsound         enable DirectSound audio driver"
388102a52e4Sbellardecho "  --fmod-lib               path to FMOD library"
389102a52e4Sbellardecho "  --fmod-inc               path to FMOD includes"
3907d13299dSbellardecho ""
3917d13299dSbellardecho "NOTE: The object files are build at the place where configure is launched"
3927d13299dSbellardexit 1
3937d13299dSbellardfi
3947d13299dSbellard
39511d9f695Sbellardif test "$mingw32" = "yes" ; then
39611d9f695Sbellardif test -z "$prefix" ; then
39711d9f695Sbellard    prefix="/c/Program Files/Qemu"
39811d9f695Sbellardfi
39911d9f695Sbellardmandir="$prefix"
4007efa4387Sbellarddatadir="$prefix"
4011f50f8d1Sbellarddocdir="$prefix"
40211d9f695Sbellardbindir="$prefix"
40311d9f695Sbellardelse
40411d9f695Sbellardif test -z "$prefix" ; then
40511d9f695Sbellard    prefix="/usr/local"
40611d9f695Sbellardfi
4075a67135aSbellardmandir="$prefix/share/man"
4087efa4387Sbellarddatadir="$prefix/share/qemu"
4091f50f8d1Sbellarddocdir="$prefix/share/doc/qemu"
41011d9f695Sbellardbindir="$prefix/bin"
41111d9f695Sbellardfi
4125a67135aSbellard
4137d13299dSbellardecho "Install prefix    $prefix"
4147efa4387Sbellardecho "BIOS directory    $datadir"
41511d9f695Sbellardecho "binary directory  $bindir"
41611d9f695Sbellardif test "$mingw32" = "no" ; then
41711d9f695Sbellardecho "Manual directory  $mandir"
41843ce4dfeSbellardecho "ELF interp prefix $interp_prefix"
41911d9f695Sbellardfi
4205a67135aSbellardecho "Source path       $source_path"
4217d13299dSbellardecho "C compiler        $cc"
42283469015Sbellardecho "Host C compiler   $host_cc"
4237d13299dSbellardecho "make              $make"
424a98fd896Sbellardecho "host CPU          $cpu"
425de83cd02Sbellardecho "host big endian   $bigendian"
42697a847bcSbellardecho "target list       $target_list"
4277d13299dSbellardecho "gprof enabled     $gprof"
428*05c2a3e7Sbellardecho "profiler          $profiler"
42943ce4dfeSbellardecho "static build      $static"
4305b0753e0Sbellardif test "$darwin" = "yes" ; then
4315b0753e0Sbellard    echo "Cocoa support     $cocoa"
4325b0753e0Sbellardfi
43397a847bcSbellardecho "SDL support       $sdl"
434e4afee97Sbellardif test "$sdl" != "no" ; then
4357c1f25b4Sbellard    echo "SDL static link   $sdl_static"
436e4afee97Sbellardfi
43767b915a5Sbellardecho "mingw32 support   $mingw32"
438fb065187Sbellardecho "Adlib support     $adlib"
4391d14ffa9Sbellardecho "CoreAudio support $coreaudio"
4401d14ffa9Sbellardecho "ALSA support      $alsa"
4411d14ffa9Sbellardecho "DSound support    $dsound"
442102a52e4Sbellardecho -n "FMOD support      $fmod"
4431d14ffa9Sbellardif test "$fmod" = "yes"; then
4441d14ffa9Sbellard    if test -z $fmod_lib || test -z $fmod_inc; then
4451d14ffa9Sbellard        echo
4461d14ffa9Sbellard        echo "Error: You must specify path to FMOD library and headers"
4471d14ffa9Sbellard        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
4481d14ffa9Sbellard        echo
4491d14ffa9Sbellard        exit 1
4501d14ffa9Sbellard    fi
451102a52e4Sbellard    echo -n " (lib='$fmod_lib' include='$fmod_inc')"
452102a52e4Sbellardfi
453102a52e4Sbellardecho ""
45407f4ddbfSbellardecho "kqemu support     $kqemu"
45567b915a5Sbellard
45697a847bcSbellardif test $sdl_too_old = "yes"; then
45724b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support"
458e8cd23deSbellardfi
45924b55b96Sbellard#if test "$sdl_static" = "no"; then
46024b55b96Sbellard#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
46124b55b96Sbellard#fi
46297a847bcSbellard
46397a847bcSbellardconfig_mak="config-host.mak"
46497a847bcSbellardconfig_h="config-host.h"
46597a847bcSbellard
4667c1f25b4Sbellard#echo "Creating $config_mak and $config_h"
46797a847bcSbellard
46897a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak
46997a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h
47097a847bcSbellard
47197a847bcSbellardecho "prefix=$prefix" >> $config_mak
47211d9f695Sbellardecho "bindir=$bindir" >> $config_mak
4735a67135aSbellardecho "mandir=$mandir" >> $config_mak
4747efa4387Sbellardecho "datadir=$datadir" >> $config_mak
4751f50f8d1Sbellardecho "docdir=$docdir" >> $config_mak
4767efa4387Sbellardecho "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
47797a847bcSbellardecho "MAKE=$make" >> $config_mak
47897a847bcSbellardecho "CC=$cc" >> $config_mak
47997a847bcSbellardif test "$have_gcc3_options" = "yes" ; then
48097a847bcSbellard  echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
48197a847bcSbellardfi
48297a847bcSbellardecho "HOST_CC=$host_cc" >> $config_mak
48397a847bcSbellardecho "AR=$ar" >> $config_mak
48497a847bcSbellardecho "STRIP=$strip -s -R .comment -R .note" >> $config_mak
48597a847bcSbellardecho "CFLAGS=$CFLAGS" >> $config_mak
48697a847bcSbellardecho "LDFLAGS=$LDFLAGS" >> $config_mak
48767b915a5Sbellardecho "EXESUF=$EXESUF" >> $config_mak
48897a847bcSbellardif test "$cpu" = "i386" ; then
48997a847bcSbellard  echo "ARCH=i386" >> $config_mak
49097a847bcSbellard  echo "#define HOST_I386 1" >> $config_h
4910b0babc6Sbellardelif test "$cpu" = "x86_64" ; then
4920b0babc6Sbellard  echo "ARCH=x86_64" >> $config_mak
4930b0babc6Sbellard  echo "#define HOST_X86_64 1" >> $config_h
494808c4954Sbellardelif test "$cpu" = "armv4b" ; then
495808c4954Sbellard  echo "ARCH=arm" >> $config_mak
496808c4954Sbellard  echo "#define HOST_ARM 1" >> $config_h
4977d13299dSbellardelif test "$cpu" = "armv4l" ; then
49897a847bcSbellard  echo "ARCH=arm" >> $config_mak
49997a847bcSbellard  echo "#define HOST_ARM 1" >> $config_h
5007d13299dSbellardelif test "$cpu" = "powerpc" ; then
50197a847bcSbellard  echo "ARCH=ppc" >> $config_mak
50297a847bcSbellard  echo "#define HOST_PPC 1" >> $config_h
5037d13299dSbellardelif test "$cpu" = "mips" ; then
50497a847bcSbellard  echo "ARCH=mips" >> $config_mak
50597a847bcSbellard  echo "#define HOST_MIPS 1" >> $config_h
506fb3e5849Sbellardelif test "$cpu" = "s390" ; then
50797a847bcSbellard  echo "ARCH=s390" >> $config_mak
50897a847bcSbellard  echo "#define HOST_S390 1" >> $config_h
509295defa5Sbellardelif test "$cpu" = "alpha" ; then
51097a847bcSbellard  echo "ARCH=alpha" >> $config_mak
51197a847bcSbellard  echo "#define HOST_ALPHA 1" >> $config_h
512ae228531Sbellardelif test "$cpu" = "sparc" ; then
51397a847bcSbellard  echo "ARCH=sparc" >> $config_mak
51497a847bcSbellard  echo "#define HOST_SPARC 1" >> $config_h
515ae228531Sbellardelif test "$cpu" = "sparc64" ; then
51697a847bcSbellard  echo "ARCH=sparc64" >> $config_mak
51797a847bcSbellard  echo "#define HOST_SPARC64 1" >> $config_h
518a8baa8c5Sbellardelif test "$cpu" = "ia64" ; then
51997a847bcSbellard  echo "ARCH=ia64" >> $config_mak
52097a847bcSbellard  echo "#define HOST_IA64 1" >> $config_h
52138e584a0Sbellardelif test "$cpu" = "m68k" ; then
52238ca2abcSbellard  echo "ARCH=m68k" >> $config_mak
52338ca2abcSbellard  echo "#define HOST_M68K 1" >> $config_h
5247d13299dSbellardelse
5257d13299dSbellard  echo "Unsupported CPU"
5267d13299dSbellard  exit 1
5277d13299dSbellardfi
5287d13299dSbellardif test "$bigendian" = "yes" ; then
52997a847bcSbellard  echo "WORDS_BIGENDIAN=yes" >> $config_mak
53097a847bcSbellard  echo "#define WORDS_BIGENDIAN 1" >> $config_h
53197a847bcSbellardfi
532b6853697Sbellardecho "#define HOST_LONG_BITS $hostlongbits" >> $config_h
53367b915a5Sbellardif test "$mingw32" = "yes" ; then
53467b915a5Sbellard  echo "CONFIG_WIN32=yes" >> $config_mak
53511d9f695Sbellard  echo "#define CONFIG_WIN32 1" >> $config_h
5367d3505c5Sbellardelif test -f "/usr/include/byteswap.h" ; then
53797a847bcSbellard  echo "#define HAVE_BYTESWAP_H 1" >> $config_h
53867b915a5Sbellardfi
53983fb7adfSbellardif test "$darwin" = "yes" ; then
54083fb7adfSbellard  echo "CONFIG_DARWIN=yes" >> $config_mak
54183fb7adfSbellard  echo "#define CONFIG_DARWIN 1" >> $config_h
54283fb7adfSbellardfi
54367b915a5Sbellardif test "$gdbstub" = "yes" ; then
54467b915a5Sbellard  echo "CONFIG_GDBSTUB=yes" >> $config_mak
54567b915a5Sbellard  echo "#define CONFIG_GDBSTUB 1" >> $config_h
54667b915a5Sbellardfi
54797a847bcSbellardif test "$gprof" = "yes" ; then
54897a847bcSbellard  echo "TARGET_GPROF=yes" >> $config_mak
54997a847bcSbellard  echo "#define HAVE_GPROF 1" >> $config_h
55097a847bcSbellardfi
55197a847bcSbellardif test "$static" = "yes" ; then
55297a847bcSbellard  echo "CONFIG_STATIC=yes" >> $config_mak
55350863472Sbellard  echo "#define CONFIG_STATIC 1" >> $config_h
55497a847bcSbellardfi
555*05c2a3e7Sbellardif test $profiler = "yes" ; then
556*05c2a3e7Sbellard  echo "#define CONFIG_PROFILER 1" >> $config_h
557*05c2a3e7Sbellardfi
558c20709aaSbellardif test "$slirp" = "yes" ; then
559c20709aaSbellard  echo "CONFIG_SLIRP=yes" >> $config_mak
560c20709aaSbellard  echo "#define CONFIG_SLIRP 1" >> $config_h
561c20709aaSbellardfi
562fb065187Sbellardif test "$adlib" = "yes" ; then
563fb065187Sbellard  echo "CONFIG_ADLIB=yes" >> $config_mak
564fb065187Sbellard  echo "#define CONFIG_ADLIB 1" >> $config_h
565fb065187Sbellardfi
566fb065187Sbellardif test "$oss" = "yes" ; then
567fb065187Sbellard  echo "CONFIG_OSS=yes" >> $config_mak
568fb065187Sbellard  echo "#define CONFIG_OSS 1" >> $config_h
569fb065187Sbellardfi
5701d14ffa9Sbellardif test "$coreaudio" = "yes" ; then
5711d14ffa9Sbellard  echo "CONFIG_COREAUDIO=yes" >> $config_mak
5721d14ffa9Sbellard  echo "#define CONFIG_COREAUDIO 1" >> $config_h
5731d14ffa9Sbellardfi
5741d14ffa9Sbellardif test "$alsa" = "yes" ; then
5751d14ffa9Sbellard  echo "CONFIG_ALSA=yes" >> $config_mak
5761d14ffa9Sbellard  echo "#define CONFIG_ALSA 1" >> $config_h
5771d14ffa9Sbellardfi
5781d14ffa9Sbellardif test "$dsound" = "yes" ; then
5791d14ffa9Sbellard  echo "CONFIG_DSOUND=yes" >> $config_mak
5801d14ffa9Sbellard  echo "#define CONFIG_DSOUND 1" >> $config_h
5811d14ffa9Sbellardfi
582102a52e4Sbellardif test "$fmod" = "yes" ; then
583102a52e4Sbellard  echo "CONFIG_FMOD=yes" >> $config_mak
584102a52e4Sbellard  echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
585102a52e4Sbellard  echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
586102a52e4Sbellard  echo "#define CONFIG_FMOD 1" >> $config_h
587102a52e4Sbellardfi
58897a847bcSbellardecho -n "VERSION=" >>$config_mak
58997a847bcSbellardhead $source_path/VERSION >>$config_mak
59097a847bcSbellardecho "" >>$config_mak
59197a847bcSbellardecho -n "#define QEMU_VERSION \"" >> $config_h
59297a847bcSbellardhead $source_path/VERSION >> $config_h
59397a847bcSbellardecho "\"" >> $config_h
59497a847bcSbellard
59597a847bcSbellardecho "SRC_PATH=$source_path" >> $config_mak
59697a847bcSbellardecho "TARGET_DIRS=$target_list" >> $config_mak
59797a847bcSbellard
59883fb7adfSbellard# XXX: suppress that
5997d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
60043003046Sbellard  echo "#define O_LARGEFILE 0" >> $config_h
60143003046Sbellard  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
6027d3505c5Sbellard  echo "#define _BSD 1" >> $config_h
6037d3505c5Sbellardfi
6047d3505c5Sbellard
60597a847bcSbellardfor target in $target_list; do
60697a847bcSbellard
60797a847bcSbellardtarget_dir="$target"
60897a847bcSbellardconfig_mak=$target_dir/config.mak
60997a847bcSbellardconfig_h=$target_dir/config.h
61097a847bcSbellardtarget_cpu=`echo $target | cut -d '-' -f 1`
61197a847bcSbellardtarget_bigendian="no"
612808c4954Sbellard[ "$target_cpu" = "armeb" ] && target_bigendian=yes
6131e43adfcSbellard[ "$target_cpu" = "sparc" ] && target_bigendian=yes
61464b3ab24Sbellard[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
61567867308Sbellard[ "$target_cpu" = "ppc" ] && target_bigendian=yes
616a2458627Sbellard[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
617d3258560Sbellard[ "$target_cpu" = "mips" ] && target_bigendian=yes
61897a847bcSbellardtarget_softmmu="no"
61997a847bcSbellardif expr $target : '.*-softmmu' > /dev/null ; then
62097a847bcSbellard  target_softmmu="yes"
6217d13299dSbellardfi
622997344f3Sbellardtarget_user_only="no"
623997344f3Sbellardif expr $target : '.*-user' > /dev/null ; then
624997344f3Sbellard  target_user_only="yes"
625997344f3Sbellardfi
626de83cd02Sbellard
62797ccc689Sbellardif test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
62897ccc689Sbellard        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
62997ccc689Sbellard    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
63097ccc689Sbellard    echo "To build QEMU with graphical output configure with --disable-gfx-check"
63197ccc689Sbellard    echo "Note that this will disable all output from the virtual graphics card."
63297ccc689Sbellard    exit 1;
63397ccc689Sbellardfi
63497ccc689Sbellard
6357c1f25b4Sbellard#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
63697a847bcSbellard
63797a847bcSbellardmkdir -p $target_dir
638158142c2Sbellardmkdir -p $target_dir/fpu
639808c4954Sbellardif test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
64069de927cSbellard  mkdir -p $target_dir/nwfpe
64169de927cSbellardfi
642a7e61ed4Sbellardif test "$target_user_only" = "no" ; then
643a7e61ed4Sbellard  mkdir -p $target_dir/slirp
644a7e61ed4Sbellardfi
64569de927cSbellard
64697a847bcSbellardln -sf $source_path/Makefile.target $target_dir/Makefile
64797a847bcSbellard
64897a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak
64997a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h
65097a847bcSbellard
65197a847bcSbellard
65297a847bcSbellardecho "include ../config-host.mak" >> $config_mak
65397a847bcSbellardecho "#include \"../config-host.h\"" >> $config_h
6541e43adfcSbellard
6551e43adfcSbellardinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
6561e43adfcSbellardecho "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
65797a847bcSbellard
65897a847bcSbellardif test "$target_cpu" = "i386" ; then
65997a847bcSbellard  echo "TARGET_ARCH=i386" >> $config_mak
66097a847bcSbellard  echo "#define TARGET_ARCH \"i386\"" >> $config_h
66197a847bcSbellard  echo "#define TARGET_I386 1" >> $config_h
66207f4ddbfSbellard  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
663824d560fSbellard    echo "#define USE_KQEMU 1" >> $config_h
664824d560fSbellard  fi
665808c4954Sbellardelif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
66697a847bcSbellard  echo "TARGET_ARCH=arm" >> $config_mak
66797a847bcSbellard  echo "#define TARGET_ARCH \"arm\"" >> $config_h
66897a847bcSbellard  echo "#define TARGET_ARM 1" >> $config_h
6691e43adfcSbellardelif test "$target_cpu" = "sparc" ; then
6701e43adfcSbellard  echo "TARGET_ARCH=sparc" >> $config_mak
6711e43adfcSbellard  echo "#define TARGET_ARCH \"sparc\"" >> $config_h
6721e43adfcSbellard  echo "#define TARGET_SPARC 1" >> $config_h
67364b3ab24Sbellardelif test "$target_cpu" = "sparc64" ; then
67464b3ab24Sbellard  echo "TARGET_ARCH=sparc64" >> $config_mak
67564b3ab24Sbellard  echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
67664b3ab24Sbellard  echo "#define TARGET_SPARC 1" >> $config_h
67764b3ab24Sbellard  echo "#define TARGET_SPARC64 1" >> $config_h
67867867308Sbellardelif test "$target_cpu" = "ppc" ; then
67967867308Sbellard  echo "TARGET_ARCH=ppc" >> $config_mak
68067867308Sbellard  echo "#define TARGET_ARCH \"ppc\"" >> $config_h
68167867308Sbellard  echo "#define TARGET_PPC 1" >> $config_h
682a2458627Sbellardelif test "$target_cpu" = "ppc64" ; then
683a2458627Sbellard  echo "TARGET_ARCH=ppc64" >> $config_mak
684a2458627Sbellard  echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
685a2458627Sbellard  echo "#define TARGET_PPC 1" >> $config_h
686a2458627Sbellard  echo "#define TARGET_PPC64 1" >> $config_h
6870b0babc6Sbellardelif test "$target_cpu" = "x86_64" ; then
6880b0babc6Sbellard  echo "TARGET_ARCH=x86_64" >> $config_mak
6890b0babc6Sbellard  echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
6900b0babc6Sbellard  echo "#define TARGET_I386 1" >> $config_h
6910b0babc6Sbellard  echo "#define TARGET_X86_64 1" >> $config_h
69207f4ddbfSbellard  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
69307f4ddbfSbellard    echo "#define USE_KQEMU 1" >> $config_h
694*05c2a3e7Sbellard    if test $kqemu_profile = "yes" ; then
695*05c2a3e7Sbellard      echo "#define CONFIG_KQEMU_PROFILE 1" >> $config_h
696*05c2a3e7Sbellard    fi
69707f4ddbfSbellard  fi
698c20eb473Sbellardelif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
699d3258560Sbellard  echo "TARGET_ARCH=mips" >> $config_mak
700d3258560Sbellard  echo "#define TARGET_ARCH \"mips\"" >> $config_h
701d3258560Sbellard  echo "#define TARGET_MIPS 1" >> $config_h
702de83cd02Sbellardelse
703de83cd02Sbellard  echo "Unsupported target CPU"
704de83cd02Sbellard  exit 1
705de83cd02Sbellardfi
706de83cd02Sbellardif test "$target_bigendian" = "yes" ; then
70797a847bcSbellard  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
70897a847bcSbellard  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
70997a847bcSbellardfi
71097a847bcSbellardif test "$target_softmmu" = "yes" ; then
71197a847bcSbellard  echo "CONFIG_SOFTMMU=yes" >> $config_mak
71297a847bcSbellard  echo "#define CONFIG_SOFTMMU 1" >> $config_h
713de83cd02Sbellardfi
714997344f3Sbellardif test "$target_user_only" = "yes" ; then
715997344f3Sbellard  echo "CONFIG_USER_ONLY=yes" >> $config_mak
716997344f3Sbellard  echo "#define CONFIG_USER_ONLY 1" >> $config_h
717997344f3Sbellardfi
718de83cd02Sbellard
719158142c2Sbellardif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
720158142c2Sbellard  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
721158142c2Sbellard  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
722158142c2Sbellardfi
7237c1f25b4Sbellard# sdl defines
7247c1f25b4Sbellard
7257c1f25b4Sbellardif test "$target_user_only" = "no"; then
7267c1f25b4Sbellard    if test "$target_softmmu" = "no" -o "$static" = "yes"; then
727dbb2c921Sbellard        sdl1=$sdl_static
7287c1f25b4Sbellard    else
729dbb2c921Sbellard        sdl1=$sdl
730dbb2c921Sbellard    fi
731dbb2c921Sbellard    if test "$sdl1" = "yes" ; then
7327c1f25b4Sbellard        echo "#define CONFIG_SDL 1" >> $config_h
7337c1f25b4Sbellard        echo "CONFIG_SDL=yes" >> $config_mak
734dbb2c921Sbellard        if test "$target_softmmu" = "no" -o "$static" = "yes"; then
735dbb2c921Sbellard            echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
736dbb2c921Sbellard        else
7377c1f25b4Sbellard            echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
7387c1f25b4Sbellard        fi
7397c1f25b4Sbellard        echo -n "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
7407c1f25b4Sbellard        if [ "${aa}" = "yes" ] ; then
7417c1f25b4Sbellard            echo -n " `aalib-config --cflags`" >> $config_mak ;
7427c1f25b4Sbellard        fi
7437c1f25b4Sbellard        echo "" >> $config_mak
7447c1f25b4Sbellard    fi
745dbb2c921Sbellardfi
7467c1f25b4Sbellard
7475b0753e0Sbellardif test "$cocoa" = "yes" ; then
7485b0753e0Sbellard    echo "#define CONFIG_COCOA 1" >> $config_h
7495b0753e0Sbellard    echo "CONFIG_COCOA=yes" >> $config_mak
7505b0753e0Sbellardfi
7515b0753e0Sbellard
75297a847bcSbellarddone # for target in $targets
7537d13299dSbellard
7547d13299dSbellard# build tree in object directory if source path is different from current one
7557d13299dSbellardif test "$source_path_used" = "yes" ; then
7567d13299dSbellard    DIRS="tests"
7577d13299dSbellard    FILES="Makefile tests/Makefile"
7587d13299dSbellard    for dir in $DIRS ; do
7597d13299dSbellard            mkdir -p $dir
7607d13299dSbellard    done
7617d13299dSbellard    for f in $FILES ; do
7627d13299dSbellard        ln -sf $source_path/$f $f
7637d13299dSbellard    done
7647d13299dSbellardfi
7657d13299dSbellard
76697a847bcSbellardrm -f $TMPO $TMPC $TMPE $TMPS
767