xref: /openbmc/qemu/configure (revision b1a550a0)
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=""
86*b1a550a0Spbrookbsd="no"
875327cf48Sbellardlinux="no"
88c9ec1fe4Sbellardkqemu="no"
8905c2a3e7Sbellardprofiler="no"
90c9ec1fe4Sbellardkernel_path=""
915b0753e0Sbellardcocoa="no"
9297ccc689Sbellardcheck_gfx="yes"
931aff381fSbellardcheck_gcc="yes"
940a8e90f4Spbrooksoftmmu="yes"
950a8e90f4Spbrookuser="no"
967d13299dSbellard
977d13299dSbellard# OS specific
987d13299dSbellardtargetos=`uname -s`
997d13299dSbellardcase $targetos in
100c326e0afSbellardCYGWIN*)
101c326e0afSbellardmingw32="yes"
102c326e0afSbellardCFLAGS="-O2 -mno-cygwin"
103c326e0afSbellard;;
10467b915a5SbellardMINGW32*)
10567b915a5Sbellardmingw32="yes"
10667b915a5Sbellard;;
1077d3505c5SbellardFreeBSD)
1087d3505c5Sbellardbsd="yes"
109fb065187Sbellardoss="yes"
110e99f9060Sbellardif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
11107f4ddbfSbellard    kqemu="yes"
11207f4ddbfSbellardfi
1137d3505c5Sbellard;;
1147d3505c5SbellardNetBSD)
1157d3505c5Sbellardbsd="yes"
116fb065187Sbellardoss="yes"
1177d3505c5Sbellard;;
1187d3505c5SbellardOpenBSD)
1197d3505c5Sbellardbsd="yes"
120fb065187Sbellardoss="yes"
1217d3505c5Sbellard;;
12283fb7adfSbellardDarwin)
12383fb7adfSbellardbsd="yes"
12483fb7adfSbellarddarwin="yes"
12583fb7adfSbellard;;
126fb065187Sbellard*)
127fb065187Sbellardoss="yes"
1285327cf48Sbellardlinux="yes"
1290a8e90f4Spbrookuser="yes"
13007f4ddbfSbellardif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
131c9ec1fe4Sbellard    kqemu="yes"
132c9ec1fe4Sbellardfi
133fb065187Sbellard;;
1347d13299dSbellardesac
1357d13299dSbellard
1367d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
137*b1a550a0Spbrook  if [ "$darwin" != "yes" ] ; then
1387d3505c5Sbellard    make="gmake"
13983fb7adfSbellard  fi
1407d3505c5Sbellardfi
1417d3505c5Sbellard
1427d13299dSbellard# find source path
143ad064840Spbrooksource_path=`dirname "$0"`
144ad064840Spbrookif [ -z "$source_path" ]; then
1457d13299dSbellard    source_path=`pwd`
146ad064840Spbrookelse
147ad064840Spbrook    source_path=`cd "$source_path"; pwd`
148ad064840Spbrookfi
149ad064840Spbrookif test "$source_path" = `pwd` ; then
1507d13299dSbellard    source_path_used="no"
151ad064840Spbrookelse
152ad064840Spbrook    source_path_used="yes"
1537d13299dSbellardfi
1547d13299dSbellard
1557d13299dSbellardfor opt do
156*b1a550a0Spbrook  optarg=`expr "$opt" : '[^=]*=\(.*\)'`
1577d13299dSbellard  case "$opt" in
1582efc3265Sbellard  --help|-h) show_help=yes
1592efc3265Sbellard  ;;
160*b1a550a0Spbrook  --prefix=*) prefix="$optarg"
1617d13299dSbellard  ;;
162*b1a550a0Spbrook  --interp-prefix=*) interp_prefix="$optarg"
16332ce6337Sbellard  ;;
164*b1a550a0Spbrook  --source-path=*) source_path="$optarg"
165ad064840Spbrook  source_path_used="yes"
1667d13299dSbellard  ;;
167*b1a550a0Spbrook  --cross-prefix=*) cross_prefix="$optarg"
1687d13299dSbellard  ;;
169*b1a550a0Spbrook  --cc=*) cc="$optarg"
1707d13299dSbellard  ;;
171*b1a550a0Spbrook  --host-cc=*) host_cc="$optarg"
17283469015Sbellard  ;;
173*b1a550a0Spbrook  --make=*) make="$optarg"
1747d13299dSbellard  ;;
175*b1a550a0Spbrook  --extra-cflags=*) CFLAGS="$optarg"
1767d13299dSbellard  ;;
177*b1a550a0Spbrook  --extra-ldflags=*) LDFLAGS="$optarg"
1787d13299dSbellard  ;;
179*b1a550a0Spbrook  --cpu=*) cpu="$optarg"
1807d13299dSbellard  ;;
181*b1a550a0Spbrook  --target-list=*) target_list="$optarg"
182de83cd02Sbellard  ;;
1837d13299dSbellard  --enable-gprof) gprof="yes"
1847d13299dSbellard  ;;
18543ce4dfeSbellard  --static) static="yes"
18643ce4dfeSbellard  ;;
18797a847bcSbellard  --disable-sdl) sdl="no"
18897a847bcSbellard  ;;
1891d14ffa9Sbellard  --enable-coreaudio) coreaudio="yes"
1901d14ffa9Sbellard  ;;
1911d14ffa9Sbellard  --enable-alsa) alsa="yes"
1921d14ffa9Sbellard  ;;
1931d14ffa9Sbellard  --enable-dsound) dsound="yes"
1941d14ffa9Sbellard  ;;
195102a52e4Sbellard  --enable-fmod) fmod="yes"
196102a52e4Sbellard  ;;
197*b1a550a0Spbrook  --fmod-lib=*) fmod_lib="$optarg"
198102a52e4Sbellard  ;;
199*b1a550a0Spbrook  --fmod-inc=*) fmod_inc="$optarg"
200102a52e4Sbellard  ;;
20167b915a5Sbellard  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
20267b915a5Sbellard  ;;
203443f1376Sbellard  --disable-slirp) slirp="no"
204c20709aaSbellard  ;;
205fb065187Sbellard  --enable-adlib) adlib="yes"
206fb065187Sbellard  ;;
207c9ec1fe4Sbellard  --disable-kqemu) kqemu="no"
208c9ec1fe4Sbellard  ;;
20905c2a3e7Sbellard  --enable-profiler) profiler="yes"
21005c2a3e7Sbellard  ;;
211*b1a550a0Spbrook  --kernel-path=*) kernel_path="$optarg"
212c9ec1fe4Sbellard  ;;
2131d14ffa9Sbellard  --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
2145b0753e0Sbellard  ;;
21597ccc689Sbellard  --disable-gfx-check) check_gfx="no"
21697ccc689Sbellard  ;;
2171aff381fSbellard  --disable-gcc-check) check_gcc="no"
2181aff381fSbellard  ;;
219cad25d69Spbrook  --disable-system) softmmu="no"
2200a8e90f4Spbrook  ;;
221cad25d69Spbrook  --enable-system) softmmu="yes"
2220a8e90f4Spbrook  ;;
2230a8e90f4Spbrook  --disable-user) user="no"
2240a8e90f4Spbrook  ;;
2250a8e90f4Spbrook  --enable-user) user="yes"
2260a8e90f4Spbrook  ;;
2277d13299dSbellard  esac
2287d13299dSbellarddone
2297d13299dSbellard
2307d13299dSbellard# Checking for CFLAGS
2317d13299dSbellardif test -z "$CFLAGS"; then
2327d13299dSbellard    CFLAGS="-O2"
2337d13299dSbellardfi
2347d13299dSbellard
235af5db58eSpbrookif test x"$show_help" = x"yes" ; then
236af5db58eSpbrookcat << EOF
237af5db58eSpbrook
238af5db58eSpbrookUsage: configure [options]
239af5db58eSpbrookOptions: [defaults in brackets after descriptions]
240af5db58eSpbrook
241af5db58eSpbrookEOF
242af5db58eSpbrookecho "Standard options:"
243af5db58eSpbrookecho "  --help                   print this message"
244af5db58eSpbrookecho "  --prefix=PREFIX          install in PREFIX [$prefix]"
245af5db58eSpbrookecho "  --interp-prefix=PREFIX   where to find shared libraries, etc."
246af5db58eSpbrookecho "                           use %M for cpu name [$interp_prefix]"
247af5db58eSpbrookecho "  --target-list=LIST       set target list [$target_list]"
248af5db58eSpbrookecho ""
249af5db58eSpbrookecho "kqemu kernel acceleration support:"
250af5db58eSpbrookecho "  --disable-kqemu          disable kqemu support"
251af5db58eSpbrookecho "  --kernel-path=PATH       set the kernel path (configure probes it)"
252af5db58eSpbrookecho ""
253af5db58eSpbrookecho "Advanced options (experts only):"
254af5db58eSpbrookecho "  --source-path=PATH       path of source code [$source_path]"
255af5db58eSpbrookecho "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
256af5db58eSpbrookecho "  --cc=CC                  use C compiler CC [$cc]"
257af5db58eSpbrookecho "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
258af5db58eSpbrookecho "  --make=MAKE              use specified make [$make]"
259af5db58eSpbrookecho "  --static                 enable static build [$static]"
260af5db58eSpbrookecho "  --enable-cocoa           enable COCOA (Mac OS X only)"
261af5db58eSpbrookecho "  --enable-mingw32         enable Win32 cross compilation with mingw32"
262af5db58eSpbrookecho "  --enable-adlib           enable Adlib emulation"
263af5db58eSpbrookecho "  --enable-coreaudio       enable Coreaudio audio driver"
264af5db58eSpbrookecho "  --enable-alsa            enable ALSA audio driver"
265af5db58eSpbrookecho "  --enable-fmod            enable FMOD audio driver"
266af5db58eSpbrookecho "  --enabled-dsound         enable DirectSound audio driver"
267af5db58eSpbrookecho "  --enable-system          enable all system emulation targets"
268af5db58eSpbrookecho "  --disable-system         disable all system emulation targets"
269af5db58eSpbrookecho "  --enable-user            enable all linux usermode emulation targets"
270af5db58eSpbrookecho "  --disable-user           disable all linux usermode emulation targets"
271af5db58eSpbrookecho "  --fmod-lib               path to FMOD library"
272af5db58eSpbrookecho "  --fmod-inc               path to FMOD includes"
273af5db58eSpbrookecho ""
274af5db58eSpbrookecho "NOTE: The object files are build at the place where configure is launched"
275af5db58eSpbrookexit 1
276af5db58eSpbrookfi
277af5db58eSpbrook
2787d13299dSbellardcc="${cross_prefix}${cc}"
2797d13299dSbellardar="${cross_prefix}${ar}"
2807d13299dSbellardstrip="${cross_prefix}${strip}"
2817d13299dSbellard
28267b915a5Sbellardif test "$mingw32" = "yes" ; then
2835327cf48Sbellard    linux="no"
28467b915a5Sbellard    EXESUF=".exe"
28567b915a5Sbellard    gdbstub="no"
2869f059ecaSbellard    oss="no"
28707f4ddbfSbellard    if [ "$cpu" = "i386" ] ; then
28807f4ddbfSbellard        kqemu="yes"
28907f4ddbfSbellard    fi
29067b915a5Sbellardfi
29167b915a5Sbellard
2925327cf48Sbellardif test -z "$target_list" ; then
2935327cf48Sbellard# these targets are portable
2940a8e90f4Spbrook    if [ "$softmmu" = "yes" ] ; then
29538260998Spbrook        target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu"
2960a8e90f4Spbrook    fi
2975327cf48Sbellard# the following are Linux specific
2980a8e90f4Spbrook    if [ "$user" = "yes" ] ; then
299c20eb473Sbellard        target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user $target_list"
3005327cf48Sbellard    fi
3016e20a45fSbellardelse
302*b1a550a0Spbrook    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
3035327cf48Sbellardfi
3040a8e90f4Spbrookif test -z "$target_list" ; then
3050a8e90f4Spbrook    echo "No targets enabled"
3060a8e90f4Spbrook    exit 1
3070a8e90f4Spbrookfi
3085327cf48Sbellard
3097d13299dSbellardif test -z "$cross_prefix" ; then
3107d13299dSbellard
3117d13299dSbellard# ---
3127d13299dSbellard# big/little endian test
3137d13299dSbellardcat > $TMPC << EOF
3147d13299dSbellard#include <inttypes.h>
3157d13299dSbellardint main(int argc, char ** argv){
3167d13299dSbellard        volatile uint32_t i=0x01234567;
3177d13299dSbellard        return (*((uint8_t*)(&i))) == 0x67;
3187d13299dSbellard}
3197d13299dSbellardEOF
3207d13299dSbellard
3217d13299dSbellardif $cc -o $TMPE $TMPC 2>/dev/null ; then
3227d13299dSbellard$TMPE && bigendian="yes"
3237d13299dSbellardelse
3247d13299dSbellardecho big/little test failed
3257d13299dSbellardfi
3267d13299dSbellard
3277d13299dSbellardelse
3287d13299dSbellard
3297d13299dSbellard# if cross compiling, cannot launch a program, so make a static guess
330808c4954Sbellardif test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
3317d13299dSbellard    bigendian="yes"
3327d13299dSbellardfi
3337d13299dSbellard
3347d13299dSbellardfi
3357d13299dSbellard
336b6853697Sbellard# host long bits test
337b6853697Sbellardhostlongbits="32"
338b6853697Sbellardif test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
339b6853697Sbellard    hostlongbits="64"
340b6853697Sbellardfi
341b6853697Sbellard
342e8cd23deSbellard# check gcc options support
34304369ff2Sbellardcat > $TMPC <<EOF
34404369ff2Sbellardint main(void) {
34504369ff2Sbellard}
34604369ff2SbellardEOF
34704369ff2Sbellard
348e8cd23deSbellardhave_gcc3_options="no"
349e8cd23deSbellardif $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
350e8cd23deSbellard   have_gcc3_options="yes"
35104369ff2Sbellardfi
352ca735206Sbellard
353*b1a550a0Spbrook# Check for gcc4, error if pre-gcc4
3541aff381fSbellardif test "$check_gcc" = "yes" ; then
3551aff381fSbellard    cat > $TMPC <<EOF
356*b1a550a0Spbrook#if __GNUC__ < 4
357*b1a550a0Spbrook#error gcc3
3581aff381fSbellard#endif
3591aff381fSbellardint main(){return 0;}
3601aff381fSbellardEOF
361*b1a550a0Spbrook    if $cc -o $TMPO $TMPC 2>/dev/null ; then
3621aff381fSbellard        echo "ERROR: \"$cc\" looks like gcc 4.x"
3631aff381fSbellard        echo "QEMU is known to have problems when compiled with gcc 4.x"
3641aff381fSbellard        echo "It is recommended that you use gcc 3.x to build QEMU"
3651aff381fSbellard        echo "To use this compiler anyway, configure with --disable-gcc-check"
3661aff381fSbellard        exit 1;
3671aff381fSbellard    fi
3681aff381fSbellardfi
3691aff381fSbellard
37011d9f695Sbellard##########################################
37111d9f695Sbellard# SDL probe
37211d9f695Sbellard
37311d9f695Sbellardsdl_too_old=no
37411d9f695Sbellard
37511d9f695Sbellardif test -z "$sdl" ; then
37611d9f695Sbellard
377a6e022adSbellardsdl_config="sdl-config"
378a6e022adSbellardsdl=no
3797c1f25b4Sbellardsdl_static=no
380a6e022adSbellard
381a6e022adSbellardif test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
382a6e022adSbellard# win32 cross compilation case
383a6e022adSbellard    sdl_config="i386-mingw32msvc-sdl-config"
384a6e022adSbellard    sdl=yes
385a6e022adSbellardelse
386a6e022adSbellard# normal SDL probe
38711d9f695Sbellardcat > $TMPC << EOF
38811d9f695Sbellard#include <SDL.h>
38911d9f695Sbellard#undef main /* We don't want SDL to override our main() */
39011d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
39111d9f695SbellardEOF
39211d9f695Sbellard
393a6e022adSbellardif $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
394a6e022adSbellard_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
39511d9f695Sbellardif test "$_sdlversion" -lt 121 ; then
39611d9f695Sbellardsdl_too_old=yes
39711d9f695Sbellardelse
39811d9f695Sbellardsdl=yes
39911d9f695Sbellardfi
4007c1f25b4Sbellard
4017c1f25b4Sbellard# static link with sdl ?
4027c1f25b4Sbellardif test "$sdl" = "yes" ; then
4037c1f25b4Sbellardaa="no"
4047c1f25b4Sbellard`$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
4057c1f25b4Sbellardsdl_static_libs=`$sdl_config --static-libs`
4067c1f25b4Sbellardif [ "$aa" = "yes" ] ; then
407d8d8aa4eSbellard  sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
40811d9f695Sbellardfi
40911d9f695Sbellard
4107c1f25b4Sbellardif $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
4117c1f25b4Sbellard  sdl_static=yes
4127c1f25b4Sbellardfi
4137c1f25b4Sbellard
4147c1f25b4Sbellardfi # static link
4157c1f25b4Sbellard
4167c1f25b4Sbellardfi # sdl compile test
4177c1f25b4Sbellard
418a6e022adSbellardfi # cross compilation
419a6e022adSbellardfi # -z $sdl
42011d9f695Sbellard
42111d9f695Sbellardif test "$mingw32" = "yes" ; then
42211d9f695Sbellardif test -z "$prefix" ; then
42311d9f695Sbellard    prefix="/c/Program Files/Qemu"
42411d9f695Sbellardfi
42511d9f695Sbellardmandir="$prefix"
4267efa4387Sbellarddatadir="$prefix"
4271f50f8d1Sbellarddocdir="$prefix"
42811d9f695Sbellardbindir="$prefix"
42911d9f695Sbellardelse
43011d9f695Sbellardif test -z "$prefix" ; then
43111d9f695Sbellard    prefix="/usr/local"
43211d9f695Sbellardfi
4335a67135aSbellardmandir="$prefix/share/man"
4347efa4387Sbellarddatadir="$prefix/share/qemu"
4351f50f8d1Sbellarddocdir="$prefix/share/doc/qemu"
43611d9f695Sbellardbindir="$prefix/bin"
43711d9f695Sbellardfi
4385a67135aSbellard
4397d13299dSbellardecho "Install prefix    $prefix"
4407efa4387Sbellardecho "BIOS directory    $datadir"
44111d9f695Sbellardecho "binary directory  $bindir"
44211d9f695Sbellardif test "$mingw32" = "no" ; then
44311d9f695Sbellardecho "Manual directory  $mandir"
44443ce4dfeSbellardecho "ELF interp prefix $interp_prefix"
44511d9f695Sbellardfi
4465a67135aSbellardecho "Source path       $source_path"
4477d13299dSbellardecho "C compiler        $cc"
44883469015Sbellardecho "Host C compiler   $host_cc"
4497d13299dSbellardecho "make              $make"
450a98fd896Sbellardecho "host CPU          $cpu"
451de83cd02Sbellardecho "host big endian   $bigendian"
45297a847bcSbellardecho "target list       $target_list"
4537d13299dSbellardecho "gprof enabled     $gprof"
45405c2a3e7Sbellardecho "profiler          $profiler"
45543ce4dfeSbellardecho "static build      $static"
4565b0753e0Sbellardif test "$darwin" = "yes" ; then
4575b0753e0Sbellard    echo "Cocoa support     $cocoa"
4585b0753e0Sbellardfi
45997a847bcSbellardecho "SDL support       $sdl"
460e4afee97Sbellardif test "$sdl" != "no" ; then
4617c1f25b4Sbellard    echo "SDL static link   $sdl_static"
462e4afee97Sbellardfi
46367b915a5Sbellardecho "mingw32 support   $mingw32"
464fb065187Sbellardecho "Adlib support     $adlib"
4651d14ffa9Sbellardecho "CoreAudio support $coreaudio"
4661d14ffa9Sbellardecho "ALSA support      $alsa"
4671d14ffa9Sbellardecho "DSound support    $dsound"
4681d14ffa9Sbellardif test "$fmod" = "yes"; then
4691d14ffa9Sbellard    if test -z $fmod_lib || test -z $fmod_inc; then
4701d14ffa9Sbellard        echo
4711d14ffa9Sbellard        echo "Error: You must specify path to FMOD library and headers"
4721d14ffa9Sbellard        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
4731d14ffa9Sbellard        echo
4741d14ffa9Sbellard        exit 1
4751d14ffa9Sbellard    fi
476*b1a550a0Spbrook    fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
477*b1a550a0Spbrookelse
478*b1a550a0Spbrook    fmod_support=""
479102a52e4Sbellardfi
480*b1a550a0Spbrookecho "FMOD support      $fmod $fmod_support"
48107f4ddbfSbellardecho "kqemu support     $kqemu"
48267b915a5Sbellard
48397a847bcSbellardif test $sdl_too_old = "yes"; then
48424b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support"
485e8cd23deSbellardfi
48624b55b96Sbellard#if test "$sdl_static" = "no"; then
48724b55b96Sbellard#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
48824b55b96Sbellard#fi
48997a847bcSbellardconfig_mak="config-host.mak"
49097a847bcSbellardconfig_h="config-host.h"
49197a847bcSbellard
4927c1f25b4Sbellard#echo "Creating $config_mak and $config_h"
49397a847bcSbellard
49497a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak
49529517134Spbrookecho "# Configured with: $0 $@" >> $config_mak
49697a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h
49797a847bcSbellard
49897a847bcSbellardecho "prefix=$prefix" >> $config_mak
49911d9f695Sbellardecho "bindir=$bindir" >> $config_mak
5005a67135aSbellardecho "mandir=$mandir" >> $config_mak
5017efa4387Sbellardecho "datadir=$datadir" >> $config_mak
5021f50f8d1Sbellardecho "docdir=$docdir" >> $config_mak
5037efa4387Sbellardecho "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
50497a847bcSbellardecho "MAKE=$make" >> $config_mak
50597a847bcSbellardecho "CC=$cc" >> $config_mak
50697a847bcSbellardif test "$have_gcc3_options" = "yes" ; then
50797a847bcSbellard  echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
50897a847bcSbellardfi
50997a847bcSbellardecho "HOST_CC=$host_cc" >> $config_mak
51097a847bcSbellardecho "AR=$ar" >> $config_mak
51197a847bcSbellardecho "STRIP=$strip -s -R .comment -R .note" >> $config_mak
51297a847bcSbellardecho "CFLAGS=$CFLAGS" >> $config_mak
51397a847bcSbellardecho "LDFLAGS=$LDFLAGS" >> $config_mak
51467b915a5Sbellardecho "EXESUF=$EXESUF" >> $config_mak
51597a847bcSbellardif test "$cpu" = "i386" ; then
51697a847bcSbellard  echo "ARCH=i386" >> $config_mak
51797a847bcSbellard  echo "#define HOST_I386 1" >> $config_h
5180b0babc6Sbellardelif test "$cpu" = "x86_64" ; then
5190b0babc6Sbellard  echo "ARCH=x86_64" >> $config_mak
5200b0babc6Sbellard  echo "#define HOST_X86_64 1" >> $config_h
521808c4954Sbellardelif test "$cpu" = "armv4b" ; then
522808c4954Sbellard  echo "ARCH=arm" >> $config_mak
523808c4954Sbellard  echo "#define HOST_ARM 1" >> $config_h
5247d13299dSbellardelif test "$cpu" = "armv4l" ; then
52597a847bcSbellard  echo "ARCH=arm" >> $config_mak
52697a847bcSbellard  echo "#define HOST_ARM 1" >> $config_h
5277d13299dSbellardelif test "$cpu" = "powerpc" ; then
52897a847bcSbellard  echo "ARCH=ppc" >> $config_mak
52997a847bcSbellard  echo "#define HOST_PPC 1" >> $config_h
5307d13299dSbellardelif test "$cpu" = "mips" ; then
53197a847bcSbellard  echo "ARCH=mips" >> $config_mak
53297a847bcSbellard  echo "#define HOST_MIPS 1" >> $config_h
533fb3e5849Sbellardelif test "$cpu" = "s390" ; then
53497a847bcSbellard  echo "ARCH=s390" >> $config_mak
53597a847bcSbellard  echo "#define HOST_S390 1" >> $config_h
536295defa5Sbellardelif test "$cpu" = "alpha" ; then
53797a847bcSbellard  echo "ARCH=alpha" >> $config_mak
53897a847bcSbellard  echo "#define HOST_ALPHA 1" >> $config_h
539ae228531Sbellardelif test "$cpu" = "sparc" ; then
54097a847bcSbellard  echo "ARCH=sparc" >> $config_mak
54197a847bcSbellard  echo "#define HOST_SPARC 1" >> $config_h
542ae228531Sbellardelif test "$cpu" = "sparc64" ; then
54397a847bcSbellard  echo "ARCH=sparc64" >> $config_mak
54497a847bcSbellard  echo "#define HOST_SPARC64 1" >> $config_h
545a8baa8c5Sbellardelif test "$cpu" = "ia64" ; then
54697a847bcSbellard  echo "ARCH=ia64" >> $config_mak
54797a847bcSbellard  echo "#define HOST_IA64 1" >> $config_h
54838e584a0Sbellardelif test "$cpu" = "m68k" ; then
54938ca2abcSbellard  echo "ARCH=m68k" >> $config_mak
55038ca2abcSbellard  echo "#define HOST_M68K 1" >> $config_h
5517d13299dSbellardelse
5527d13299dSbellard  echo "Unsupported CPU"
5537d13299dSbellard  exit 1
5547d13299dSbellardfi
5557d13299dSbellardif test "$bigendian" = "yes" ; then
55697a847bcSbellard  echo "WORDS_BIGENDIAN=yes" >> $config_mak
55797a847bcSbellard  echo "#define WORDS_BIGENDIAN 1" >> $config_h
55897a847bcSbellardfi
559b6853697Sbellardecho "#define HOST_LONG_BITS $hostlongbits" >> $config_h
56067b915a5Sbellardif test "$mingw32" = "yes" ; then
56167b915a5Sbellard  echo "CONFIG_WIN32=yes" >> $config_mak
56211d9f695Sbellard  echo "#define CONFIG_WIN32 1" >> $config_h
5637d3505c5Sbellardelif test -f "/usr/include/byteswap.h" ; then
56497a847bcSbellard  echo "#define HAVE_BYTESWAP_H 1" >> $config_h
56567b915a5Sbellardfi
56683fb7adfSbellardif test "$darwin" = "yes" ; then
56783fb7adfSbellard  echo "CONFIG_DARWIN=yes" >> $config_mak
56883fb7adfSbellard  echo "#define CONFIG_DARWIN 1" >> $config_h
56983fb7adfSbellardfi
57067b915a5Sbellardif test "$gdbstub" = "yes" ; then
57167b915a5Sbellard  echo "CONFIG_GDBSTUB=yes" >> $config_mak
57267b915a5Sbellard  echo "#define CONFIG_GDBSTUB 1" >> $config_h
57367b915a5Sbellardfi
57497a847bcSbellardif test "$gprof" = "yes" ; then
57597a847bcSbellard  echo "TARGET_GPROF=yes" >> $config_mak
57697a847bcSbellard  echo "#define HAVE_GPROF 1" >> $config_h
57797a847bcSbellardfi
57897a847bcSbellardif test "$static" = "yes" ; then
57997a847bcSbellard  echo "CONFIG_STATIC=yes" >> $config_mak
58050863472Sbellard  echo "#define CONFIG_STATIC 1" >> $config_h
58197a847bcSbellardfi
58205c2a3e7Sbellardif test $profiler = "yes" ; then
58305c2a3e7Sbellard  echo "#define CONFIG_PROFILER 1" >> $config_h
58405c2a3e7Sbellardfi
585c20709aaSbellardif test "$slirp" = "yes" ; then
586c20709aaSbellard  echo "CONFIG_SLIRP=yes" >> $config_mak
587c20709aaSbellard  echo "#define CONFIG_SLIRP 1" >> $config_h
588c20709aaSbellardfi
589fb065187Sbellardif test "$adlib" = "yes" ; then
590fb065187Sbellard  echo "CONFIG_ADLIB=yes" >> $config_mak
591fb065187Sbellard  echo "#define CONFIG_ADLIB 1" >> $config_h
592fb065187Sbellardfi
593fb065187Sbellardif test "$oss" = "yes" ; then
594fb065187Sbellard  echo "CONFIG_OSS=yes" >> $config_mak
595fb065187Sbellard  echo "#define CONFIG_OSS 1" >> $config_h
596fb065187Sbellardfi
5971d14ffa9Sbellardif test "$coreaudio" = "yes" ; then
5981d14ffa9Sbellard  echo "CONFIG_COREAUDIO=yes" >> $config_mak
5991d14ffa9Sbellard  echo "#define CONFIG_COREAUDIO 1" >> $config_h
6001d14ffa9Sbellardfi
6011d14ffa9Sbellardif test "$alsa" = "yes" ; then
6021d14ffa9Sbellard  echo "CONFIG_ALSA=yes" >> $config_mak
6031d14ffa9Sbellard  echo "#define CONFIG_ALSA 1" >> $config_h
6041d14ffa9Sbellardfi
6051d14ffa9Sbellardif test "$dsound" = "yes" ; then
6061d14ffa9Sbellard  echo "CONFIG_DSOUND=yes" >> $config_mak
6071d14ffa9Sbellard  echo "#define CONFIG_DSOUND 1" >> $config_h
6081d14ffa9Sbellardfi
609102a52e4Sbellardif test "$fmod" = "yes" ; then
610102a52e4Sbellard  echo "CONFIG_FMOD=yes" >> $config_mak
611102a52e4Sbellard  echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
612102a52e4Sbellard  echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
613102a52e4Sbellard  echo "#define CONFIG_FMOD 1" >> $config_h
614102a52e4Sbellardfi
615*b1a550a0Spbrookqemu_version=`head $source_path/VERSION`
616*b1a550a0Spbrookecho "VERSION=$qemu_version" >>$config_mak
617*b1a550a0Spbrookecho "#define QEMU_VERSION $qemu_version" >> $config_h
61897a847bcSbellard
61997a847bcSbellardecho "SRC_PATH=$source_path" >> $config_mak
620ad064840Spbrookif [ "$source_path_used" = "yes" ]; then
621ad064840Spbrook  echo "VPATH=$source_path" >> $config_mak
622ad064840Spbrookfi
62397a847bcSbellardecho "TARGET_DIRS=$target_list" >> $config_mak
62497a847bcSbellard
62583fb7adfSbellard# XXX: suppress that
6267d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
62743003046Sbellard  echo "#define O_LARGEFILE 0" >> $config_h
62843003046Sbellard  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
6297d3505c5Sbellard  echo "#define _BSD 1" >> $config_h
6307d3505c5Sbellardfi
6317d3505c5Sbellard
63297a847bcSbellardfor target in $target_list; do
63397a847bcSbellardtarget_dir="$target"
63497a847bcSbellardconfig_mak=$target_dir/config.mak
63597a847bcSbellardconfig_h=$target_dir/config.h
63697a847bcSbellardtarget_cpu=`echo $target | cut -d '-' -f 1`
63797a847bcSbellardtarget_bigendian="no"
638808c4954Sbellard[ "$target_cpu" = "armeb" ] && target_bigendian=yes
6391e43adfcSbellard[ "$target_cpu" = "sparc" ] && target_bigendian=yes
64064b3ab24Sbellard[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
64167867308Sbellard[ "$target_cpu" = "ppc" ] && target_bigendian=yes
642a2458627Sbellard[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
643d3258560Sbellard[ "$target_cpu" = "mips" ] && target_bigendian=yes
64497a847bcSbellardtarget_softmmu="no"
64597a847bcSbellardif expr $target : '.*-softmmu' > /dev/null ; then
64697a847bcSbellard  target_softmmu="yes"
6477d13299dSbellardfi
648997344f3Sbellardtarget_user_only="no"
649997344f3Sbellardif expr $target : '.*-user' > /dev/null ; then
650997344f3Sbellard  target_user_only="yes"
651997344f3Sbellardfi
652de83cd02Sbellard
65397ccc689Sbellardif test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
65497ccc689Sbellard        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
65597ccc689Sbellard    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
65697ccc689Sbellard    echo "To build QEMU with graphical output configure with --disable-gfx-check"
65797ccc689Sbellard    echo "Note that this will disable all output from the virtual graphics card."
65897ccc689Sbellard    exit 1;
65997ccc689Sbellardfi
66097ccc689Sbellard
6617c1f25b4Sbellard#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
66297a847bcSbellard
66397a847bcSbellardmkdir -p $target_dir
664158142c2Sbellardmkdir -p $target_dir/fpu
665808c4954Sbellardif test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
66669de927cSbellard  mkdir -p $target_dir/nwfpe
66769de927cSbellardfi
668a7e61ed4Sbellardif test "$target_user_only" = "no" ; then
669a7e61ed4Sbellard  mkdir -p $target_dir/slirp
670a7e61ed4Sbellardfi
67169de927cSbellard
67297a847bcSbellardln -sf $source_path/Makefile.target $target_dir/Makefile
67397a847bcSbellard
67497a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak
67597a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h
67697a847bcSbellard
67797a847bcSbellard
67897a847bcSbellardecho "include ../config-host.mak" >> $config_mak
67997a847bcSbellardecho "#include \"../config-host.h\"" >> $config_h
6801e43adfcSbellard
6811e43adfcSbellardinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
6821e43adfcSbellardecho "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
68397a847bcSbellard
68497a847bcSbellardif test "$target_cpu" = "i386" ; then
68597a847bcSbellard  echo "TARGET_ARCH=i386" >> $config_mak
68697a847bcSbellard  echo "#define TARGET_ARCH \"i386\"" >> $config_h
68797a847bcSbellard  echo "#define TARGET_I386 1" >> $config_h
68807f4ddbfSbellard  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
689824d560fSbellard    echo "#define USE_KQEMU 1" >> $config_h
690824d560fSbellard  fi
691808c4954Sbellardelif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
69297a847bcSbellard  echo "TARGET_ARCH=arm" >> $config_mak
69397a847bcSbellard  echo "#define TARGET_ARCH \"arm\"" >> $config_h
69497a847bcSbellard  echo "#define TARGET_ARM 1" >> $config_h
6951e43adfcSbellardelif test "$target_cpu" = "sparc" ; then
6961e43adfcSbellard  echo "TARGET_ARCH=sparc" >> $config_mak
6971e43adfcSbellard  echo "#define TARGET_ARCH \"sparc\"" >> $config_h
6981e43adfcSbellard  echo "#define TARGET_SPARC 1" >> $config_h
69964b3ab24Sbellardelif test "$target_cpu" = "sparc64" ; then
70064b3ab24Sbellard  echo "TARGET_ARCH=sparc64" >> $config_mak
70164b3ab24Sbellard  echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
70264b3ab24Sbellard  echo "#define TARGET_SPARC 1" >> $config_h
70364b3ab24Sbellard  echo "#define TARGET_SPARC64 1" >> $config_h
70467867308Sbellardelif test "$target_cpu" = "ppc" ; then
70567867308Sbellard  echo "TARGET_ARCH=ppc" >> $config_mak
70667867308Sbellard  echo "#define TARGET_ARCH \"ppc\"" >> $config_h
70767867308Sbellard  echo "#define TARGET_PPC 1" >> $config_h
708a2458627Sbellardelif test "$target_cpu" = "ppc64" ; then
709a2458627Sbellard  echo "TARGET_ARCH=ppc64" >> $config_mak
710a2458627Sbellard  echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
711a2458627Sbellard  echo "#define TARGET_PPC 1" >> $config_h
712a2458627Sbellard  echo "#define TARGET_PPC64 1" >> $config_h
7130b0babc6Sbellardelif test "$target_cpu" = "x86_64" ; then
7140b0babc6Sbellard  echo "TARGET_ARCH=x86_64" >> $config_mak
7150b0babc6Sbellard  echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
7160b0babc6Sbellard  echo "#define TARGET_I386 1" >> $config_h
7170b0babc6Sbellard  echo "#define TARGET_X86_64 1" >> $config_h
71807f4ddbfSbellard  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
71907f4ddbfSbellard    echo "#define USE_KQEMU 1" >> $config_h
72007f4ddbfSbellard  fi
721c20eb473Sbellardelif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
722d3258560Sbellard  echo "TARGET_ARCH=mips" >> $config_mak
723d3258560Sbellard  echo "#define TARGET_ARCH \"mips\"" >> $config_h
724d3258560Sbellard  echo "#define TARGET_MIPS 1" >> $config_h
725de83cd02Sbellardelse
726de83cd02Sbellard  echo "Unsupported target CPU"
727de83cd02Sbellard  exit 1
728de83cd02Sbellardfi
729de83cd02Sbellardif test "$target_bigendian" = "yes" ; then
73097a847bcSbellard  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
73197a847bcSbellard  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
73297a847bcSbellardfi
73397a847bcSbellardif test "$target_softmmu" = "yes" ; then
73497a847bcSbellard  echo "CONFIG_SOFTMMU=yes" >> $config_mak
73597a847bcSbellard  echo "#define CONFIG_SOFTMMU 1" >> $config_h
736de83cd02Sbellardfi
737997344f3Sbellardif test "$target_user_only" = "yes" ; then
738997344f3Sbellard  echo "CONFIG_USER_ONLY=yes" >> $config_mak
739997344f3Sbellard  echo "#define CONFIG_USER_ONLY 1" >> $config_h
740997344f3Sbellardfi
741de83cd02Sbellard
742158142c2Sbellardif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
743158142c2Sbellard  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
744158142c2Sbellard  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
745158142c2Sbellardfi
7467c1f25b4Sbellard# sdl defines
7477c1f25b4Sbellard
7487c1f25b4Sbellardif test "$target_user_only" = "no"; then
7497c1f25b4Sbellard    if test "$target_softmmu" = "no" -o "$static" = "yes"; then
750dbb2c921Sbellard        sdl1=$sdl_static
7517c1f25b4Sbellard    else
752dbb2c921Sbellard        sdl1=$sdl
753dbb2c921Sbellard    fi
754dbb2c921Sbellard    if test "$sdl1" = "yes" ; then
7557c1f25b4Sbellard        echo "#define CONFIG_SDL 1" >> $config_h
7567c1f25b4Sbellard        echo "CONFIG_SDL=yes" >> $config_mak
757dbb2c921Sbellard        if test "$target_softmmu" = "no" -o "$static" = "yes"; then
758dbb2c921Sbellard            echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
759dbb2c921Sbellard        else
7607c1f25b4Sbellard            echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
7617c1f25b4Sbellard        fi
7627c1f25b4Sbellard        if [ "${aa}" = "yes" ] ; then
763*b1a550a0Spbrook            echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
764*b1a550a0Spbrook        else
765*b1a550a0Spbrook            echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
7667c1f25b4Sbellard        fi
7677c1f25b4Sbellard    fi
768dbb2c921Sbellardfi
7697c1f25b4Sbellard
7705b0753e0Sbellardif test "$cocoa" = "yes" ; then
7715b0753e0Sbellard    echo "#define CONFIG_COCOA 1" >> $config_h
7725b0753e0Sbellard    echo "CONFIG_COCOA=yes" >> $config_mak
7735b0753e0Sbellardfi
7745b0753e0Sbellard
77597a847bcSbellarddone # for target in $targets
7767d13299dSbellard
7777d13299dSbellard# build tree in object directory if source path is different from current one
7787d13299dSbellardif test "$source_path_used" = "yes" ; then
7797d13299dSbellard    DIRS="tests"
7807d13299dSbellard    FILES="Makefile tests/Makefile"
7817d13299dSbellard    for dir in $DIRS ; do
7827d13299dSbellard            mkdir -p $dir
7837d13299dSbellard    done
7847d13299dSbellard    for f in $FILES ; do
7857d13299dSbellard        ln -sf $source_path/$f $f
7867d13299dSbellard    done
7877d13299dSbellardfi
7887d13299dSbellard
78997a847bcSbellardrm -f $TMPO $TMPC $TMPE $TMPS
790