xref: /openbmc/qemu/configure (revision 24b55b96)
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  ;;
35808c4954Sbellard  armv4b)
36808c4954Sbellard    cpu="armv4b"
37808c4954Sbellard  ;;
387d13299dSbellard  armv4l)
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"
80102a52e4Sbellardfmod="no"
81102a52e4Sbellardfmod_lib=""
82102a52e4Sbellardfmod_inc=""
835327cf48Sbellardlinux="no"
84c9ec1fe4Sbellardkqemu="no"
85c9ec1fe4Sbellardkernel_path=""
865b0753e0Sbellardcocoa="no"
877d13299dSbellard
887d13299dSbellard# OS specific
897d13299dSbellardtargetos=`uname -s`
907d13299dSbellardcase $targetos in
9167b915a5SbellardMINGW32*)
9267b915a5Sbellardmingw32="yes"
9367b915a5Sbellard;;
947d3505c5SbellardFreeBSD)
957d3505c5Sbellardbsd="yes"
96fb065187Sbellardoss="yes"
977d3505c5Sbellard;;
987d3505c5SbellardNetBSD)
997d3505c5Sbellardbsd="yes"
100fb065187Sbellardoss="yes"
1017d3505c5Sbellard;;
1027d3505c5SbellardOpenBSD)
1037d3505c5Sbellardbsd="yes"
104fb065187Sbellardoss="yes"
1057d3505c5Sbellard;;
10683fb7adfSbellardDarwin)
10783fb7adfSbellardbsd="yes"
10883fb7adfSbellarddarwin="yes"
10983fb7adfSbellard;;
110fb065187Sbellard*)
111fb065187Sbellardoss="yes"
1125327cf48Sbellardlinux="yes"
113c9ec1fe4Sbellardif [ "$cpu" = "i386" ] ; then
114c9ec1fe4Sbellard    kqemu="yes"
115c9ec1fe4Sbellardfi
116fb065187Sbellard;;
1177d13299dSbellardesac
1187d13299dSbellard
1197d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
12083fb7adfSbellard  if [ ! "$darwin" = "yes" ] ; then
1217d3505c5Sbellard    make="gmake"
12283fb7adfSbellard  fi
1237d3505c5Sbellardfi
1247d3505c5Sbellard
1257d13299dSbellard# find source path
1267d13299dSbellard# XXX: we assume an absolute path is given when launching configure,
1277d13299dSbellard# except in './configure' case.
1287d13299dSbellardsource_path=${0%configure}
1297d13299dSbellardsource_path=${source_path%/}
1307d13299dSbellardsource_path_used="yes"
1317d13299dSbellardif test -z "$source_path" -o "$source_path" = "." ; then
1327d13299dSbellard    source_path=`pwd`
1337d13299dSbellard    source_path_used="no"
1347d13299dSbellardfi
1357d13299dSbellard
1367d13299dSbellardfor opt do
1377d13299dSbellard  case "$opt" in
1387d13299dSbellard  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
1397d13299dSbellard  ;;
14032ce6337Sbellard  --interp-prefix=*) interp_prefix=`echo $opt | cut -d '=' -f 2`
14132ce6337Sbellard  ;;
1427d13299dSbellard  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
1437d13299dSbellard  ;;
1447d13299dSbellard  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
1457d13299dSbellard  ;;
1467d13299dSbellard  --cc=*) cc=`echo $opt | cut -d '=' -f 2`
1477d13299dSbellard  ;;
1487d13299dSbellard  --make=*) make=`echo $opt | cut -d '=' -f 2`
1497d13299dSbellard  ;;
1507d13299dSbellard  --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
1517d13299dSbellard  ;;
1527d13299dSbellard  --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
1537d13299dSbellard  ;;
1547d13299dSbellard  --extra-libs=*) extralibs=${opt#--extra-libs=}
1557d13299dSbellard  ;;
1567d13299dSbellard  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
1577d13299dSbellard  ;;
15897a847bcSbellard  --target-list=*) target_list=${opt#--target-list=}
159de83cd02Sbellard  ;;
1607d13299dSbellard  --enable-gprof) gprof="yes"
1617d13299dSbellard  ;;
16243ce4dfeSbellard  --static) static="yes"
16343ce4dfeSbellard  ;;
16497a847bcSbellard  --disable-sdl) sdl="no"
16597a847bcSbellard  ;;
166102a52e4Sbellard  --enable-fmod) fmod="yes"
167102a52e4Sbellard  ;;
168102a52e4Sbellard  --fmod-lib=*) fmod_lib=${opt#--fmod-lib=}
169102a52e4Sbellard  ;;
170102a52e4Sbellard  --fmod-inc=*) fmod_inc=${opt#--fmod-inc=}
171102a52e4Sbellard  ;;
17267b915a5Sbellard  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
17367b915a5Sbellard  ;;
174443f1376Sbellard  --disable-slirp) slirp="no"
175c20709aaSbellard  ;;
176fb065187Sbellard  --enable-adlib) adlib="yes"
177fb065187Sbellard  ;;
178c9ec1fe4Sbellard  --disable-kqemu) kqemu="no"
179c9ec1fe4Sbellard  ;;
180c9ec1fe4Sbellard  --kernel-path=*) kernel_path=${opt#--kernel-path=}
181c9ec1fe4Sbellard  ;;
1825b0753e0Sbellard  --enable-cocoa) cocoa="yes" ; sdl="no"
1835b0753e0Sbellard  ;;
1847d13299dSbellard  esac
1857d13299dSbellarddone
1867d13299dSbellard
1877d13299dSbellard# Checking for CFLAGS
1887d13299dSbellardif test -z "$CFLAGS"; then
1897d13299dSbellard    CFLAGS="-O2"
1907d13299dSbellardfi
1917d13299dSbellard
1927d13299dSbellardcc="${cross_prefix}${cc}"
1937d13299dSbellardar="${cross_prefix}${ar}"
1947d13299dSbellardstrip="${cross_prefix}${strip}"
1957d13299dSbellard
19667b915a5Sbellardif test "$mingw32" = "yes" ; then
1975327cf48Sbellard    linux="no"
19867b915a5Sbellard    EXESUF=".exe"
19967b915a5Sbellard    gdbstub="no"
2009f059ecaSbellard    oss="no"
201824d560fSbellard    kqemu="no"
20267b915a5Sbellardfi
20367b915a5Sbellard
2045327cf48Sbellardif test -z "$target_list" ; then
2055327cf48Sbellard# these targets are portable
206a20b5524Sbellard    target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu"
2075327cf48Sbellard# the following are Linux specific
2085327cf48Sbellard    if [ "$linux" = "yes" ] ; then
209a20b5524Sbellard        target_list="i386-user arm-user armeb-user sparc-user ppc-user $target_list"
2105327cf48Sbellard    fi
2115327cf48Sbellardfi
2125327cf48Sbellard
2137d13299dSbellardif test -z "$cross_prefix" ; then
2147d13299dSbellard
2157d13299dSbellard# ---
2167d13299dSbellard# big/little endian test
2177d13299dSbellardcat > $TMPC << EOF
2187d13299dSbellard#include <inttypes.h>
2197d13299dSbellardint main(int argc, char ** argv){
2207d13299dSbellard	volatile uint32_t i=0x01234567;
2217d13299dSbellard	return (*((uint8_t*)(&i))) == 0x67;
2227d13299dSbellard}
2237d13299dSbellardEOF
2247d13299dSbellard
2257d13299dSbellardif $cc -o $TMPE $TMPC 2>/dev/null ; then
2267d13299dSbellard$TMPE && bigendian="yes"
2277d13299dSbellardelse
2287d13299dSbellardecho big/little test failed
2297d13299dSbellardfi
2307d13299dSbellard
2317d13299dSbellardelse
2327d13299dSbellard
2337d13299dSbellard# if cross compiling, cannot launch a program, so make a static guess
234808c4954Sbellardif test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
2357d13299dSbellard    bigendian="yes"
2367d13299dSbellardfi
2377d13299dSbellard
2387d13299dSbellardfi
2397d13299dSbellard
240e8cd23deSbellard# check gcc options support
24104369ff2Sbellardcat > $TMPC <<EOF
24204369ff2Sbellardint main(void) {
24304369ff2Sbellard}
24404369ff2SbellardEOF
24504369ff2Sbellard
246e8cd23deSbellardhave_gcc3_options="no"
247e8cd23deSbellardif $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
248e8cd23deSbellard   have_gcc3_options="yes"
24904369ff2Sbellardfi
250ca735206Sbellard
25111d9f695Sbellard##########################################
25211d9f695Sbellard# SDL probe
25311d9f695Sbellard
25411d9f695Sbellardsdl_too_old=no
25511d9f695Sbellard
25611d9f695Sbellardif test -z "$sdl" ; then
25711d9f695Sbellard
258a6e022adSbellardsdl_config="sdl-config"
259a6e022adSbellardsdl=no
2607c1f25b4Sbellardsdl_static=no
261a6e022adSbellard
262a6e022adSbellardif test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
263a6e022adSbellard# win32 cross compilation case
264a6e022adSbellard    sdl_config="i386-mingw32msvc-sdl-config"
265a6e022adSbellard    sdl=yes
266a6e022adSbellardelse
267a6e022adSbellard# normal SDL probe
26811d9f695Sbellardcat > $TMPC << EOF
26911d9f695Sbellard#include <SDL.h>
27011d9f695Sbellard#undef main /* We don't want SDL to override our main() */
27111d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
27211d9f695SbellardEOF
27311d9f695Sbellard
274a6e022adSbellardif $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
275a6e022adSbellard_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
27611d9f695Sbellardif test "$_sdlversion" -lt 121 ; then
27711d9f695Sbellardsdl_too_old=yes
27811d9f695Sbellardelse
27911d9f695Sbellardsdl=yes
28011d9f695Sbellardfi
2817c1f25b4Sbellard
2827c1f25b4Sbellard# static link with sdl ?
2837c1f25b4Sbellardif test "$sdl" = "yes" ; then
2847c1f25b4Sbellardaa="no"
2857c1f25b4Sbellard`$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
2867c1f25b4Sbellardsdl_static_libs=`$sdl_config --static-libs`
2877c1f25b4Sbellardif [ "$aa" = "yes" ] ; then
288d8d8aa4eSbellard  sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
28911d9f695Sbellardfi
29011d9f695Sbellard
2917c1f25b4Sbellardif $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
2927c1f25b4Sbellard  sdl_static=yes
2937c1f25b4Sbellardfi
2947c1f25b4Sbellard
2957c1f25b4Sbellardfi # static link
2967c1f25b4Sbellard
2977c1f25b4Sbellardfi # sdl compile test
2987c1f25b4Sbellard
299a6e022adSbellardfi # cross compilation
300a6e022adSbellardfi # -z $sdl
30111d9f695Sbellard
3027d13299dSbellardif test x"$1" = x"-h" -o x"$1" = x"--help" ; then
3037d13299dSbellardcat << EOF
3047d13299dSbellard
3057d13299dSbellardUsage: configure [options]
3067d13299dSbellardOptions: [defaults in brackets after descriptions]
3077d13299dSbellard
3087d13299dSbellardEOF
3097d13299dSbellardecho "Standard options:"
3107d13299dSbellardecho "  --help                   print this message"
3117d13299dSbellardecho "  --prefix=PREFIX          install in PREFIX [$prefix]"
3121e43adfcSbellardecho "  --interp-prefix=PREFIX   where to find shared libraries, etc."
3131e43adfcSbellardecho "                           use %M for cpu name [$interp_prefix]"
31497a847bcSbellardecho "  --target-list=LIST       set target list [$target_list]"
3157d13299dSbellardecho ""
316c9ec1fe4Sbellardecho "kqemu kernel acceleration support:"
317c9ec1fe4Sbellardecho "  --disable-kqemu          disable kqemu build"
318c9ec1fe4Sbellardecho "  --kernel-path=PATH       set the kernel path (configure probes it)"
319c9ec1fe4Sbellardecho ""
3207d13299dSbellardecho "Advanced options (experts only):"
3217d13299dSbellardecho "  --source-path=PATH       path of source code [$source_path]"
3227d13299dSbellardecho "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
3237d13299dSbellardecho "  --cc=CC                  use C compiler CC [$cc]"
3247d13299dSbellardecho "  --make=MAKE              use specified make [$make]"
32543ce4dfeSbellardecho "  --static                 enable static build [$static]"
32667b915a5Sbellardecho "  --enable-mingw32         enable Win32 cross compilation with mingw32"
327102a52e4Sbellardecho "  --enable-fmod            enable FMOD audio output driver"
328102a52e4Sbellardecho "  --fmod-lib               path to FMOD library"
329102a52e4Sbellardecho "  --fmod-inc               path to FMOD includes"
3307d13299dSbellardecho ""
3317d13299dSbellardecho "NOTE: The object files are build at the place where configure is launched"
3327d13299dSbellardexit 1
3337d13299dSbellardfi
3347d13299dSbellard
33511d9f695Sbellardif test "$mingw32" = "yes" ; then
33611d9f695Sbellardif test -z "$prefix" ; then
33711d9f695Sbellard    prefix="/c/Program Files/Qemu"
33811d9f695Sbellardfi
33911d9f695Sbellardmandir="$prefix"
3407efa4387Sbellarddatadir="$prefix"
3411f50f8d1Sbellarddocdir="$prefix"
34211d9f695Sbellardbindir="$prefix"
34311d9f695Sbellardelse
34411d9f695Sbellardif test -z "$prefix" ; then
34511d9f695Sbellard    prefix="/usr/local"
34611d9f695Sbellardfi
3475a67135aSbellardmandir="$prefix/share/man"
3487efa4387Sbellarddatadir="$prefix/share/qemu"
3491f50f8d1Sbellarddocdir="$prefix/share/doc/qemu"
35011d9f695Sbellardbindir="$prefix/bin"
35111d9f695Sbellardfi
3525a67135aSbellard
353c9ec1fe4Sbellard# kernel module support
354c9ec1fe4Sbellardif test $kqemu = "yes" ; then
355441c72baSbellard    # test if the source code is installed
356441c72baSbellard    if test '!' -f "kqemu/Makefile" ; then
357441c72baSbellard        kqemu="no"
358441c72baSbellard    fi
359441c72baSbellardfi
360441c72baSbellard
361441c72baSbellardif test $kqemu = "yes" ; then
362c9ec1fe4Sbellard# find the kernel path
363c9ec1fe4Sbellardif test -z "$kernel_path" ; then
364c9ec1fe4Sbellardkernel_version=`uname -r`
365c9ec1fe4Sbellardkernel_path="/lib/modules/$kernel_version/build"
366c9ec1fe4Sbellardif test '!' -d "$kernel_path/include" ; then
367c9ec1fe4Sbellard    kernel_path="/usr/src/linux"
368c9ec1fe4Sbellard    if test '!' -d "$kernel_path/include" ; then
369c9ec1fe4Sbellard        echo "Could not find kernel includes in /lib/modules or /usr/src/linux - cannot build the kqemu module"
370c9ec1fe4Sbellard        kqemu="no"
371c9ec1fe4Sbellard    fi
372c9ec1fe4Sbellardfi
373c9ec1fe4Sbellardfi
374c9ec1fe4Sbellard
375c9ec1fe4Sbellardif test $kqemu = "yes" ; then
376c9ec1fe4Sbellard
377c9ec1fe4Sbellard# test that the kernel config is present
378c9ec1fe4Sbellardif test '!' -f "$kernel_path/Makefile" ; then
379f94daeddSbellard    echo "No Makefile file present in $kernel_path - kqemu cannot be built"
380c9ec1fe4Sbellard    kqemu="no"
381c9ec1fe4Sbellardfi
382c9ec1fe4Sbellard
383c9ec1fe4Sbellard# find build system (2.6 or legacy)
384c9ec1fe4Sbellardkbuild26="yes"
385c9ec1fe4Sbellardif grep -q "PATCHLEVEL = 4" $kernel_path/Makefile ; then
386c9ec1fe4Sbellardkbuild26="no"
387c9ec1fe4Sbellardfi
388c9ec1fe4Sbellard
389c9ec1fe4Sbellardfi # kqemu
390c9ec1fe4Sbellard
391c9ec1fe4Sbellardfi # kqemu
392c9ec1fe4Sbellard
393c9ec1fe4Sbellard
3947d13299dSbellardecho "Install prefix    $prefix"
3957efa4387Sbellardecho "BIOS directory    $datadir"
39611d9f695Sbellardecho "binary directory  $bindir"
39711d9f695Sbellardif test "$mingw32" = "no" ; then
39811d9f695Sbellardecho "Manual directory  $mandir"
39943ce4dfeSbellardecho "ELF interp prefix $interp_prefix"
40011d9f695Sbellardfi
4015a67135aSbellardecho "Source path       $source_path"
4027d13299dSbellardecho "C compiler        $cc"
4037d13299dSbellardecho "make              $make"
404a98fd896Sbellardecho "host CPU          $cpu"
405de83cd02Sbellardecho "host big endian   $bigendian"
40697a847bcSbellardecho "target list       $target_list"
4077d13299dSbellardecho "gprof enabled     $gprof"
40843ce4dfeSbellardecho "static build      $static"
4095b0753e0Sbellardif test "$darwin" = "yes" ; then
4105b0753e0Sbellard    echo "Cocoa support     $cocoa"
4115b0753e0Sbellardfi
41297a847bcSbellardecho "SDL support       $sdl"
4137c1f25b4Sbellardecho "SDL static link   $sdl_static"
41467b915a5Sbellardecho "mingw32 support   $mingw32"
415fb065187Sbellardecho "Adlib support     $adlib"
416102a52e4Sbellardecho -n "FMOD support      $fmod"
417102a52e4Sbellardif test $fmod = "yes"; then
418102a52e4Sbellard    echo -n " (lib='$fmod_lib' include='$fmod_inc')"
419102a52e4Sbellardfi
420102a52e4Sbellardecho ""
421c9ec1fe4Sbellardif test $kqemu = "yes" ; then
422c9ec1fe4Sbellardecho ""
423c9ec1fe4Sbellardecho "KQEMU module configuration:"
424c9ec1fe4Sbellardecho "kernel sources    $kernel_path"
425c9ec1fe4Sbellardecho -n "kbuild type       "
426c9ec1fe4Sbellardif test $kbuild26 = "yes"; then
427c9ec1fe4Sbellardecho "2.6"
428c9ec1fe4Sbellardelse
429c9ec1fe4Sbellardecho "2.4"
430c9ec1fe4Sbellardfi
431c9ec1fe4Sbellardfi
43267b915a5Sbellard
43397a847bcSbellardif test $sdl_too_old = "yes"; then
434*24b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support"
435e8cd23deSbellardfi
436*24b55b96Sbellard#if test "$sdl_static" = "no"; then
437*24b55b96Sbellard#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
438*24b55b96Sbellard#fi
43997a847bcSbellard
44097a847bcSbellardconfig_mak="config-host.mak"
44197a847bcSbellardconfig_h="config-host.h"
44297a847bcSbellard
4437c1f25b4Sbellard#echo "Creating $config_mak and $config_h"
44497a847bcSbellard
44597a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak
44697a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h
44797a847bcSbellard
44897a847bcSbellardecho "prefix=$prefix" >> $config_mak
44911d9f695Sbellardecho "bindir=$bindir" >> $config_mak
4505a67135aSbellardecho "mandir=$mandir" >> $config_mak
4517efa4387Sbellardecho "datadir=$datadir" >> $config_mak
4521f50f8d1Sbellardecho "docdir=$docdir" >> $config_mak
4537efa4387Sbellardecho "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
45497a847bcSbellardecho "MAKE=$make" >> $config_mak
45597a847bcSbellardecho "CC=$cc" >> $config_mak
45697a847bcSbellardif test "$have_gcc3_options" = "yes" ; then
45797a847bcSbellard  echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
45897a847bcSbellardfi
45997a847bcSbellardecho "HOST_CC=$host_cc" >> $config_mak
46097a847bcSbellardecho "AR=$ar" >> $config_mak
46197a847bcSbellardecho "STRIP=$strip -s -R .comment -R .note" >> $config_mak
46297a847bcSbellardecho "CFLAGS=$CFLAGS" >> $config_mak
46397a847bcSbellardecho "LDFLAGS=$LDFLAGS" >> $config_mak
46467b915a5Sbellardecho "EXESUF=$EXESUF" >> $config_mak
46597a847bcSbellardif test "$cpu" = "i386" ; then
46697a847bcSbellard  echo "ARCH=i386" >> $config_mak
46797a847bcSbellard  echo "#define HOST_I386 1" >> $config_h
4680b0babc6Sbellardelif test "$cpu" = "x86_64" ; then
4690b0babc6Sbellard  echo "ARCH=x86_64" >> $config_mak
4700b0babc6Sbellard  echo "#define HOST_X86_64 1" >> $config_h
471808c4954Sbellardelif test "$cpu" = "armv4b" ; then
472808c4954Sbellard  echo "ARCH=arm" >> $config_mak
473808c4954Sbellard  echo "#define HOST_ARM 1" >> $config_h
4747d13299dSbellardelif test "$cpu" = "armv4l" ; then
47597a847bcSbellard  echo "ARCH=arm" >> $config_mak
47697a847bcSbellard  echo "#define HOST_ARM 1" >> $config_h
4777d13299dSbellardelif test "$cpu" = "powerpc" ; then
47897a847bcSbellard  echo "ARCH=ppc" >> $config_mak
47997a847bcSbellard  echo "#define HOST_PPC 1" >> $config_h
4807d13299dSbellardelif test "$cpu" = "mips" ; then
48197a847bcSbellard  echo "ARCH=mips" >> $config_mak
48297a847bcSbellard  echo "#define HOST_MIPS 1" >> $config_h
483fb3e5849Sbellardelif test "$cpu" = "s390" ; then
48497a847bcSbellard  echo "ARCH=s390" >> $config_mak
48597a847bcSbellard  echo "#define HOST_S390 1" >> $config_h
486295defa5Sbellardelif test "$cpu" = "alpha" ; then
48797a847bcSbellard  echo "ARCH=alpha" >> $config_mak
48897a847bcSbellard  echo "#define HOST_ALPHA 1" >> $config_h
489ae228531Sbellardelif test "$cpu" = "sparc" ; then
49097a847bcSbellard  echo "ARCH=sparc" >> $config_mak
49197a847bcSbellard  echo "#define HOST_SPARC 1" >> $config_h
492ae228531Sbellardelif test "$cpu" = "sparc64" ; then
49397a847bcSbellard  echo "ARCH=sparc64" >> $config_mak
49497a847bcSbellard  echo "#define HOST_SPARC64 1" >> $config_h
495a8baa8c5Sbellardelif test "$cpu" = "ia64" ; then
49697a847bcSbellard  echo "ARCH=ia64" >> $config_mak
49797a847bcSbellard  echo "#define HOST_IA64 1" >> $config_h
49838e584a0Sbellardelif test "$cpu" = "m68k" ; then
49938ca2abcSbellard  echo "ARCH=m68k" >> $config_mak
50038ca2abcSbellard  echo "#define HOST_M68K 1" >> $config_h
5017d13299dSbellardelse
5027d13299dSbellard  echo "Unsupported CPU"
5037d13299dSbellard  exit 1
5047d13299dSbellardfi
5057d13299dSbellardif test "$bigendian" = "yes" ; then
50697a847bcSbellard  echo "WORDS_BIGENDIAN=yes" >> $config_mak
50797a847bcSbellard  echo "#define WORDS_BIGENDIAN 1" >> $config_h
50897a847bcSbellardfi
50967b915a5Sbellardif test "$mingw32" = "yes" ; then
51067b915a5Sbellard  echo "CONFIG_WIN32=yes" >> $config_mak
51111d9f695Sbellard  echo "#define CONFIG_WIN32 1" >> $config_h
5127d3505c5Sbellardelif test -f "/usr/include/byteswap.h" ; then
51397a847bcSbellard  echo "#define HAVE_BYTESWAP_H 1" >> $config_h
51467b915a5Sbellardfi
51583fb7adfSbellardif test "$darwin" = "yes" ; then
51683fb7adfSbellard  echo "CONFIG_DARWIN=yes" >> $config_mak
51783fb7adfSbellard  echo "#define CONFIG_DARWIN 1" >> $config_h
51883fb7adfSbellardfi
51967b915a5Sbellardif test "$gdbstub" = "yes" ; then
52067b915a5Sbellard  echo "CONFIG_GDBSTUB=yes" >> $config_mak
52167b915a5Sbellard  echo "#define CONFIG_GDBSTUB 1" >> $config_h
52267b915a5Sbellardfi
52397a847bcSbellardif test "$gprof" = "yes" ; then
52497a847bcSbellard  echo "TARGET_GPROF=yes" >> $config_mak
52597a847bcSbellard  echo "#define HAVE_GPROF 1" >> $config_h
52697a847bcSbellardfi
52797a847bcSbellardif test "$static" = "yes" ; then
52897a847bcSbellard  echo "CONFIG_STATIC=yes" >> $config_mak
52950863472Sbellard  echo "#define CONFIG_STATIC 1" >> $config_h
53097a847bcSbellardfi
531c20709aaSbellardif test "$slirp" = "yes" ; then
532c20709aaSbellard  echo "CONFIG_SLIRP=yes" >> $config_mak
533c20709aaSbellard  echo "#define CONFIG_SLIRP 1" >> $config_h
534c20709aaSbellardfi
535fb065187Sbellardif test "$adlib" = "yes" ; then
536fb065187Sbellard  echo "CONFIG_ADLIB=yes" >> $config_mak
537fb065187Sbellard  echo "#define CONFIG_ADLIB 1" >> $config_h
538fb065187Sbellardfi
539fb065187Sbellardif test "$oss" = "yes" ; then
540fb065187Sbellard  echo "CONFIG_OSS=yes" >> $config_mak
541fb065187Sbellard  echo "#define CONFIG_OSS 1" >> $config_h
542fb065187Sbellardfi
543102a52e4Sbellardif test "$fmod" = "yes" ; then
544102a52e4Sbellard  echo "CONFIG_FMOD=yes" >> $config_mak
545102a52e4Sbellard  echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
546102a52e4Sbellard  echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
547102a52e4Sbellard  echo "#define CONFIG_FMOD 1" >> $config_h
548102a52e4Sbellardfi
54997a847bcSbellardecho -n "VERSION=" >>$config_mak
55097a847bcSbellardhead $source_path/VERSION >>$config_mak
55197a847bcSbellardecho "" >>$config_mak
55297a847bcSbellardecho -n "#define QEMU_VERSION \"" >> $config_h
55397a847bcSbellardhead $source_path/VERSION >> $config_h
55497a847bcSbellardecho "\"" >> $config_h
55597a847bcSbellard
556c9ec1fe4Sbellardif test $kqemu = "yes" ; then
557c9ec1fe4Sbellard  echo "CONFIG_KQEMU=yes" >> $config_mak
558c9ec1fe4Sbellard  echo "KERNEL_PATH=$kernel_path" >> $config_mak
559c9ec1fe4Sbellard  if test $kbuild26 = "yes" ; then
560c9ec1fe4Sbellard    echo "CONFIG_KBUILD26=yes" >> $config_mak
561c9ec1fe4Sbellard  fi
562c9ec1fe4Sbellardfi
56397a847bcSbellardecho "SRC_PATH=$source_path" >> $config_mak
56497a847bcSbellardecho "TARGET_DIRS=$target_list" >> $config_mak
56597a847bcSbellard
56683fb7adfSbellard# XXX: suppress that
5677d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
56843003046Sbellard  echo "#define O_LARGEFILE 0" >> $config_h
56943003046Sbellard  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
5707d3505c5Sbellard  echo "#define _BSD 1" >> $config_h
5717d3505c5Sbellardfi
5727d3505c5Sbellard
57397a847bcSbellardfor target in $target_list; do
57497a847bcSbellard
57597a847bcSbellardtarget_dir="$target"
57697a847bcSbellardconfig_mak=$target_dir/config.mak
57797a847bcSbellardconfig_h=$target_dir/config.h
57897a847bcSbellardtarget_cpu=`echo $target | cut -d '-' -f 1`
57997a847bcSbellardtarget_bigendian="no"
580808c4954Sbellard[ "$target_cpu" = "armeb" ] && target_bigendian=yes
5811e43adfcSbellard[ "$target_cpu" = "sparc" ] && target_bigendian=yes
58264b3ab24Sbellard[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
58367867308Sbellard[ "$target_cpu" = "ppc" ] && target_bigendian=yes
58497a847bcSbellardtarget_softmmu="no"
58597a847bcSbellardif expr $target : '.*-softmmu' > /dev/null ; then
58697a847bcSbellard  target_softmmu="yes"
5877d13299dSbellardfi
588997344f3Sbellardtarget_user_only="no"
589997344f3Sbellardif expr $target : '.*-user' > /dev/null ; then
590997344f3Sbellard  target_user_only="yes"
591997344f3Sbellardfi
592de83cd02Sbellard
5937c1f25b4Sbellard#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
59497a847bcSbellard
59597a847bcSbellardmkdir -p $target_dir
596808c4954Sbellardif test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
59769de927cSbellard  mkdir -p $target_dir/nwfpe
59869de927cSbellardfi
599a7e61ed4Sbellardif test "$target_user_only" = "no" ; then
600a7e61ed4Sbellard  mkdir -p $target_dir/slirp
601a7e61ed4Sbellardfi
60269de927cSbellard
60397a847bcSbellardln -sf $source_path/Makefile.target $target_dir/Makefile
60497a847bcSbellard
60597a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak
60697a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h
60797a847bcSbellard
60897a847bcSbellard
60997a847bcSbellardecho "include ../config-host.mak" >> $config_mak
61097a847bcSbellardecho "#include \"../config-host.h\"" >> $config_h
6111e43adfcSbellard
6121e43adfcSbellardinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
6131e43adfcSbellardecho "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
61497a847bcSbellard
61597a847bcSbellardif test "$target_cpu" = "i386" ; then
61697a847bcSbellard  echo "TARGET_ARCH=i386" >> $config_mak
61797a847bcSbellard  echo "#define TARGET_ARCH \"i386\"" >> $config_h
61897a847bcSbellard  echo "#define TARGET_I386 1" >> $config_h
619824d560fSbellard  if test $kqemu = "yes" -a "$target_softmmu" = "yes" ; then
620824d560fSbellard    echo "#define USE_KQEMU 1" >> $config_h
621824d560fSbellard  fi
622808c4954Sbellardelif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
62397a847bcSbellard  echo "TARGET_ARCH=arm" >> $config_mak
62497a847bcSbellard  echo "#define TARGET_ARCH \"arm\"" >> $config_h
62597a847bcSbellard  echo "#define TARGET_ARM 1" >> $config_h
6261e43adfcSbellardelif test "$target_cpu" = "sparc" ; then
6271e43adfcSbellard  echo "TARGET_ARCH=sparc" >> $config_mak
6281e43adfcSbellard  echo "#define TARGET_ARCH \"sparc\"" >> $config_h
6291e43adfcSbellard  echo "#define TARGET_SPARC 1" >> $config_h
63064b3ab24Sbellardelif test "$target_cpu" = "sparc64" ; then
63164b3ab24Sbellard  echo "TARGET_ARCH=sparc64" >> $config_mak
63264b3ab24Sbellard  echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
63364b3ab24Sbellard  echo "#define TARGET_SPARC 1" >> $config_h
63464b3ab24Sbellard  echo "#define TARGET_SPARC64 1" >> $config_h
63567867308Sbellardelif test "$target_cpu" = "ppc" ; then
63667867308Sbellard  echo "TARGET_ARCH=ppc" >> $config_mak
63767867308Sbellard  echo "#define TARGET_ARCH \"ppc\"" >> $config_h
63867867308Sbellard  echo "#define TARGET_PPC 1" >> $config_h
6390b0babc6Sbellardelif test "$target_cpu" = "x86_64" ; then
6400b0babc6Sbellard  echo "TARGET_ARCH=x86_64" >> $config_mak
6410b0babc6Sbellard  echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
6420b0babc6Sbellard  echo "#define TARGET_I386 1" >> $config_h
6430b0babc6Sbellard  echo "#define TARGET_X86_64 1" >> $config_h
644de83cd02Sbellardelse
645de83cd02Sbellard  echo "Unsupported target CPU"
646de83cd02Sbellard  exit 1
647de83cd02Sbellardfi
648de83cd02Sbellardif test "$target_bigendian" = "yes" ; then
64997a847bcSbellard  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
65097a847bcSbellard  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
65197a847bcSbellardfi
65297a847bcSbellardif test "$target_softmmu" = "yes" ; then
65397a847bcSbellard  echo "CONFIG_SOFTMMU=yes" >> $config_mak
65497a847bcSbellard  echo "#define CONFIG_SOFTMMU 1" >> $config_h
655de83cd02Sbellardfi
656997344f3Sbellardif test "$target_user_only" = "yes" ; then
657997344f3Sbellard  echo "CONFIG_USER_ONLY=yes" >> $config_mak
658997344f3Sbellard  echo "#define CONFIG_USER_ONLY 1" >> $config_h
659997344f3Sbellardfi
660de83cd02Sbellard
6617c1f25b4Sbellard# sdl defines
6627c1f25b4Sbellard
6637c1f25b4Sbellardif test "$target_user_only" = "no"; then
6647c1f25b4Sbellard    if test "$target_softmmu" = "no" -o "$static" = "yes"; then
665dbb2c921Sbellard        sdl1=$sdl_static
6667c1f25b4Sbellard    else
667dbb2c921Sbellard        sdl1=$sdl
668dbb2c921Sbellard    fi
669dbb2c921Sbellard    if test "$sdl1" = "yes" ; then
6707c1f25b4Sbellard        echo "#define CONFIG_SDL 1" >> $config_h
6717c1f25b4Sbellard        echo "CONFIG_SDL=yes" >> $config_mak
672dbb2c921Sbellard        if test "$target_softmmu" = "no" -o "$static" = "yes"; then
673dbb2c921Sbellard            echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
674dbb2c921Sbellard        else
6757c1f25b4Sbellard            echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
6767c1f25b4Sbellard        fi
6777c1f25b4Sbellard        echo -n "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
6787c1f25b4Sbellard        if [ "${aa}" = "yes" ] ; then
6797c1f25b4Sbellard            echo -n " `aalib-config --cflags`" >> $config_mak ;
6807c1f25b4Sbellard        fi
6817c1f25b4Sbellard        echo "" >> $config_mak
6827c1f25b4Sbellard    fi
683dbb2c921Sbellardfi
6847c1f25b4Sbellard
6855b0753e0Sbellardif test "$cocoa" = "yes" ; then
6865b0753e0Sbellard    echo "#define CONFIG_COCOA 1" >> $config_h
6875b0753e0Sbellard    echo "CONFIG_COCOA=yes" >> $config_mak
6885b0753e0Sbellardfi
6895b0753e0Sbellard
69097a847bcSbellarddone # for target in $targets
6917d13299dSbellard
6927d13299dSbellard# build tree in object directory if source path is different from current one
6937d13299dSbellardif test "$source_path_used" = "yes" ; then
6947d13299dSbellard    DIRS="tests"
6957d13299dSbellard    FILES="Makefile tests/Makefile"
6967d13299dSbellard    for dir in $DIRS ; do
6977d13299dSbellard            mkdir -p $dir
6987d13299dSbellard    done
6997d13299dSbellard    for f in $FILES ; do
7007d13299dSbellard        ln -sf $source_path/$f $f
7017d13299dSbellard    done
7027d13299dSbellardfi
7037d13299dSbellard
70497a847bcSbellardrm -f $TMPO $TMPC $TMPE $TMPS
705