xref: /qemu/configure (revision ad06484063972abdf3f426412af9aa101bea26a8)
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"
8805c2a3e7Sbellardprofiler="no"
89c9ec1fe4Sbellardkernel_path=""
905b0753e0Sbellardcocoa="no"
9197ccc689Sbellardcheck_gfx="yes"
921aff381fSbellardcheck_gcc="yes"
930a8e90f4Spbrooksoftmmu="yes"
940a8e90f4Spbrookuser="no"
957d13299dSbellard
967d13299dSbellard# OS specific
977d13299dSbellardtargetos=`uname -s`
987d13299dSbellardcase $targetos in
99c326e0afSbellardCYGWIN*)
100c326e0afSbellardmingw32="yes"
101c326e0afSbellardCFLAGS="-O2 -mno-cygwin"
102c326e0afSbellard;;
10367b915a5SbellardMINGW32*)
10467b915a5Sbellardmingw32="yes"
10567b915a5Sbellard;;
1067d3505c5SbellardFreeBSD)
1077d3505c5Sbellardbsd="yes"
108fb065187Sbellardoss="yes"
109e99f9060Sbellardif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
11007f4ddbfSbellard    kqemu="yes"
11107f4ddbfSbellardfi
1127d3505c5Sbellard;;
1137d3505c5SbellardNetBSD)
1147d3505c5Sbellardbsd="yes"
115fb065187Sbellardoss="yes"
1167d3505c5Sbellard;;
1177d3505c5SbellardOpenBSD)
1187d3505c5Sbellardbsd="yes"
119fb065187Sbellardoss="yes"
1207d3505c5Sbellard;;
12183fb7adfSbellardDarwin)
12283fb7adfSbellardbsd="yes"
12383fb7adfSbellarddarwin="yes"
12483fb7adfSbellard;;
125fb065187Sbellard*)
126fb065187Sbellardoss="yes"
1275327cf48Sbellardlinux="yes"
1280a8e90f4Spbrookuser="yes"
12907f4ddbfSbellardif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
130c9ec1fe4Sbellard    kqemu="yes"
131c9ec1fe4Sbellardfi
132fb065187Sbellard;;
1337d13299dSbellardesac
1347d13299dSbellard
1357d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
13683fb7adfSbellard  if [ ! "$darwin" = "yes" ] ; then
1377d3505c5Sbellard    make="gmake"
13883fb7adfSbellard  fi
1397d3505c5Sbellardfi
1407d3505c5Sbellard
1417d13299dSbellard# find source path
142*ad064840Spbrooksource_path=`dirname "$0"`
143*ad064840Spbrookif [ -z "$source_path" ]; then
1447d13299dSbellard    source_path=`pwd`
145*ad064840Spbrookelse
146*ad064840Spbrook    source_path=`cd "$source_path"; pwd`
147*ad064840Spbrookfi
148*ad064840Spbrookif test "$source_path" = `pwd` ; then
1497d13299dSbellard    source_path_used="no"
150*ad064840Spbrookelse
151*ad064840Spbrook    source_path_used="yes"
1527d13299dSbellardfi
1537d13299dSbellard
1547d13299dSbellardfor opt do
1557d13299dSbellard  case "$opt" in
1562efc3265Sbellard  --help|-h) show_help=yes
1572efc3265Sbellard  ;;
1587d13299dSbellard  --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
1597d13299dSbellard  ;;
16032ce6337Sbellard  --interp-prefix=*) interp_prefix=`echo $opt | cut -d '=' -f 2`
16132ce6337Sbellard  ;;
1627d13299dSbellard  --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
163*ad064840Spbrook  source_path_used="yes"
1647d13299dSbellard  ;;
1657d13299dSbellard  --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
1667d13299dSbellard  ;;
1677d13299dSbellard  --cc=*) cc=`echo $opt | cut -d '=' -f 2`
1687d13299dSbellard  ;;
16983469015Sbellard  --host-cc=*) host_cc=`echo $opt | cut -d '=' -f 2`
17083469015Sbellard  ;;
1717d13299dSbellard  --make=*) make=`echo $opt | cut -d '=' -f 2`
1727d13299dSbellard  ;;
1737d13299dSbellard  --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
1747d13299dSbellard  ;;
1757d13299dSbellard  --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
1767d13299dSbellard  ;;
1777d13299dSbellard  --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
1787d13299dSbellard  ;;
17997a847bcSbellard  --target-list=*) target_list=${opt#--target-list=}
180de83cd02Sbellard  ;;
1817d13299dSbellard  --enable-gprof) gprof="yes"
1827d13299dSbellard  ;;
18343ce4dfeSbellard  --static) static="yes"
18443ce4dfeSbellard  ;;
18597a847bcSbellard  --disable-sdl) sdl="no"
18697a847bcSbellard  ;;
1871d14ffa9Sbellard  --enable-coreaudio) coreaudio="yes"
1881d14ffa9Sbellard  ;;
1891d14ffa9Sbellard  --enable-alsa) alsa="yes"
1901d14ffa9Sbellard  ;;
1911d14ffa9Sbellard  --enable-dsound) dsound="yes"
1921d14ffa9Sbellard  ;;
193102a52e4Sbellard  --enable-fmod) fmod="yes"
194102a52e4Sbellard  ;;
195102a52e4Sbellard  --fmod-lib=*) fmod_lib=${opt#--fmod-lib=}
196102a52e4Sbellard  ;;
197102a52e4Sbellard  --fmod-inc=*) fmod_inc=${opt#--fmod-inc=}
198102a52e4Sbellard  ;;
19967b915a5Sbellard  --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
20067b915a5Sbellard  ;;
201443f1376Sbellard  --disable-slirp) slirp="no"
202c20709aaSbellard  ;;
203fb065187Sbellard  --enable-adlib) adlib="yes"
204fb065187Sbellard  ;;
205c9ec1fe4Sbellard  --disable-kqemu) kqemu="no"
206c9ec1fe4Sbellard  ;;
20705c2a3e7Sbellard  --enable-profiler) profiler="yes"
20805c2a3e7Sbellard  ;;
209c9ec1fe4Sbellard  --kernel-path=*) kernel_path=${opt#--kernel-path=}
210c9ec1fe4Sbellard  ;;
2111d14ffa9Sbellard  --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
2125b0753e0Sbellard  ;;
21397ccc689Sbellard  --disable-gfx-check) check_gfx="no"
21497ccc689Sbellard  ;;
2151aff381fSbellard  --disable-gcc-check) check_gcc="no"
2161aff381fSbellard  ;;
217cad25d69Spbrook  --disable-system) softmmu="no"
2180a8e90f4Spbrook  ;;
219cad25d69Spbrook  --enable-system) softmmu="yes"
2200a8e90f4Spbrook  ;;
2210a8e90f4Spbrook  --disable-user) user="no"
2220a8e90f4Spbrook  ;;
2230a8e90f4Spbrook  --enable-user) user="yes"
2240a8e90f4Spbrook  ;;
2257d13299dSbellard  esac
2267d13299dSbellarddone
2277d13299dSbellard
2287d13299dSbellard# Checking for CFLAGS
2297d13299dSbellardif test -z "$CFLAGS"; then
2307d13299dSbellard    CFLAGS="-O2"
2317d13299dSbellardfi
2327d13299dSbellard
233af5db58eSpbrookif test x"$show_help" = x"yes" ; then
234af5db58eSpbrookcat << EOF
235af5db58eSpbrook
236af5db58eSpbrookUsage: configure [options]
237af5db58eSpbrookOptions: [defaults in brackets after descriptions]
238af5db58eSpbrook
239af5db58eSpbrookEOF
240af5db58eSpbrookecho "Standard options:"
241af5db58eSpbrookecho "  --help                   print this message"
242af5db58eSpbrookecho "  --prefix=PREFIX          install in PREFIX [$prefix]"
243af5db58eSpbrookecho "  --interp-prefix=PREFIX   where to find shared libraries, etc."
244af5db58eSpbrookecho "                           use %M for cpu name [$interp_prefix]"
245af5db58eSpbrookecho "  --target-list=LIST       set target list [$target_list]"
246af5db58eSpbrookecho ""
247af5db58eSpbrookecho "kqemu kernel acceleration support:"
248af5db58eSpbrookecho "  --disable-kqemu          disable kqemu support"
249af5db58eSpbrookecho "  --kernel-path=PATH       set the kernel path (configure probes it)"
250af5db58eSpbrookecho ""
251af5db58eSpbrookecho "Advanced options (experts only):"
252af5db58eSpbrookecho "  --source-path=PATH       path of source code [$source_path]"
253af5db58eSpbrookecho "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
254af5db58eSpbrookecho "  --cc=CC                  use C compiler CC [$cc]"
255af5db58eSpbrookecho "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
256af5db58eSpbrookecho "  --make=MAKE              use specified make [$make]"
257af5db58eSpbrookecho "  --static                 enable static build [$static]"
258af5db58eSpbrookecho "  --enable-cocoa           enable COCOA (Mac OS X only)"
259af5db58eSpbrookecho "  --enable-mingw32         enable Win32 cross compilation with mingw32"
260af5db58eSpbrookecho "  --enable-adlib           enable Adlib emulation"
261af5db58eSpbrookecho "  --enable-coreaudio       enable Coreaudio audio driver"
262af5db58eSpbrookecho "  --enable-alsa            enable ALSA audio driver"
263af5db58eSpbrookecho "  --enable-fmod            enable FMOD audio driver"
264af5db58eSpbrookecho "  --enabled-dsound         enable DirectSound audio driver"
265af5db58eSpbrookecho "  --enable-system          enable all system emulation targets"
266af5db58eSpbrookecho "  --disable-system         disable all system emulation targets"
267af5db58eSpbrookecho "  --enable-user            enable all linux usermode emulation targets"
268af5db58eSpbrookecho "  --disable-user           disable all linux usermode emulation targets"
269af5db58eSpbrookecho "  --fmod-lib               path to FMOD library"
270af5db58eSpbrookecho "  --fmod-inc               path to FMOD includes"
271af5db58eSpbrookecho ""
272af5db58eSpbrookecho "NOTE: The object files are build at the place where configure is launched"
273af5db58eSpbrookexit 1
274af5db58eSpbrookfi
275af5db58eSpbrook
2767d13299dSbellardcc="${cross_prefix}${cc}"
2777d13299dSbellardar="${cross_prefix}${ar}"
2787d13299dSbellardstrip="${cross_prefix}${strip}"
2797d13299dSbellard
28067b915a5Sbellardif test "$mingw32" = "yes" ; then
2815327cf48Sbellard    linux="no"
28267b915a5Sbellard    EXESUF=".exe"
28367b915a5Sbellard    gdbstub="no"
2849f059ecaSbellard    oss="no"
28507f4ddbfSbellard    if [ "$cpu" = "i386" ] ; then
28607f4ddbfSbellard        kqemu="yes"
28707f4ddbfSbellard    fi
28867b915a5Sbellardfi
28967b915a5Sbellard
2905327cf48Sbellardif test -z "$target_list" ; then
2915327cf48Sbellard# these targets are portable
2920a8e90f4Spbrook    if [ "$softmmu" = "yes" ] ; then
29338260998Spbrook        target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu"
2940a8e90f4Spbrook    fi
2955327cf48Sbellard# the following are Linux specific
2960a8e90f4Spbrook    if [ "$user" = "yes" ] ; then
297c20eb473Sbellard        target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user $target_list"
2985327cf48Sbellard    fi
2996e20a45fSbellardelse
3006e20a45fSbellard    target_list=$(echo "$target_list" | sed -e 's/,/ /g')
3015327cf48Sbellardfi
3020a8e90f4Spbrookif test -z "$target_list" ; then
3030a8e90f4Spbrook    echo "No targets enabled"
3040a8e90f4Spbrook    exit 1
3050a8e90f4Spbrookfi
3065327cf48Sbellard
3077d13299dSbellardif test -z "$cross_prefix" ; then
3087d13299dSbellard
3097d13299dSbellard# ---
3107d13299dSbellard# big/little endian test
3117d13299dSbellardcat > $TMPC << EOF
3127d13299dSbellard#include <inttypes.h>
3137d13299dSbellardint main(int argc, char ** argv){
3147d13299dSbellard        volatile uint32_t i=0x01234567;
3157d13299dSbellard        return (*((uint8_t*)(&i))) == 0x67;
3167d13299dSbellard}
3177d13299dSbellardEOF
3187d13299dSbellard
3197d13299dSbellardif $cc -o $TMPE $TMPC 2>/dev/null ; then
3207d13299dSbellard$TMPE && bigendian="yes"
3217d13299dSbellardelse
3227d13299dSbellardecho big/little test failed
3237d13299dSbellardfi
3247d13299dSbellard
3257d13299dSbellardelse
3267d13299dSbellard
3277d13299dSbellard# if cross compiling, cannot launch a program, so make a static guess
328808c4954Sbellardif test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
3297d13299dSbellard    bigendian="yes"
3307d13299dSbellardfi
3317d13299dSbellard
3327d13299dSbellardfi
3337d13299dSbellard
334b6853697Sbellard# host long bits test
335b6853697Sbellardhostlongbits="32"
336b6853697Sbellardif test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
337b6853697Sbellard    hostlongbits="64"
338b6853697Sbellardfi
339b6853697Sbellard
340e8cd23deSbellard# check gcc options support
34104369ff2Sbellardcat > $TMPC <<EOF
34204369ff2Sbellardint main(void) {
34304369ff2Sbellard}
34404369ff2SbellardEOF
34504369ff2Sbellard
346e8cd23deSbellardhave_gcc3_options="no"
347e8cd23deSbellardif $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
348e8cd23deSbellard   have_gcc3_options="yes"
34904369ff2Sbellardfi
350ca735206Sbellard
3511aff381fSbellard# Check for gcc4
3521aff381fSbellardif test "$check_gcc" = "yes" ; then
3531aff381fSbellard    cat > $TMPC <<EOF
3541aff381fSbellard#if __GNUC__ >= 4
3551aff381fSbellard#error gcc4
3561aff381fSbellard#endif
3571aff381fSbellardint main(){return 0;}
3581aff381fSbellardEOF
3591aff381fSbellard    if ! $cc -o $TMPO $TMPC 2>/dev/null ; then
3601aff381fSbellard        echo "ERROR: \"$cc\" looks like gcc 4.x"
3611aff381fSbellard        echo "QEMU is known to have problems when compiled with gcc 4.x"
3621aff381fSbellard        echo "It is recommended that you use gcc 3.x to build QEMU"
3631aff381fSbellard        echo "To use this compiler anyway, configure with --disable-gcc-check"
3641aff381fSbellard        exit 1;
3651aff381fSbellard    fi
3661aff381fSbellardfi
3671aff381fSbellard
36811d9f695Sbellard##########################################
36911d9f695Sbellard# SDL probe
37011d9f695Sbellard
37111d9f695Sbellardsdl_too_old=no
37211d9f695Sbellard
37311d9f695Sbellardif test -z "$sdl" ; then
37411d9f695Sbellard
375a6e022adSbellardsdl_config="sdl-config"
376a6e022adSbellardsdl=no
3777c1f25b4Sbellardsdl_static=no
378a6e022adSbellard
379a6e022adSbellardif test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
380a6e022adSbellard# win32 cross compilation case
381a6e022adSbellard    sdl_config="i386-mingw32msvc-sdl-config"
382a6e022adSbellard    sdl=yes
383a6e022adSbellardelse
384a6e022adSbellard# normal SDL probe
38511d9f695Sbellardcat > $TMPC << EOF
38611d9f695Sbellard#include <SDL.h>
38711d9f695Sbellard#undef main /* We don't want SDL to override our main() */
38811d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
38911d9f695SbellardEOF
39011d9f695Sbellard
391a6e022adSbellardif $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
392a6e022adSbellard_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
39311d9f695Sbellardif test "$_sdlversion" -lt 121 ; then
39411d9f695Sbellardsdl_too_old=yes
39511d9f695Sbellardelse
39611d9f695Sbellardsdl=yes
39711d9f695Sbellardfi
3987c1f25b4Sbellard
3997c1f25b4Sbellard# static link with sdl ?
4007c1f25b4Sbellardif test "$sdl" = "yes" ; then
4017c1f25b4Sbellardaa="no"
4027c1f25b4Sbellard`$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
4037c1f25b4Sbellardsdl_static_libs=`$sdl_config --static-libs`
4047c1f25b4Sbellardif [ "$aa" = "yes" ] ; then
405d8d8aa4eSbellard  sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
40611d9f695Sbellardfi
40711d9f695Sbellard
4087c1f25b4Sbellardif $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
4097c1f25b4Sbellard  sdl_static=yes
4107c1f25b4Sbellardfi
4117c1f25b4Sbellard
4127c1f25b4Sbellardfi # static link
4137c1f25b4Sbellard
4147c1f25b4Sbellardfi # sdl compile test
4157c1f25b4Sbellard
416a6e022adSbellardfi # cross compilation
417a6e022adSbellardfi # -z $sdl
41811d9f695Sbellard
41911d9f695Sbellardif test "$mingw32" = "yes" ; then
42011d9f695Sbellardif test -z "$prefix" ; then
42111d9f695Sbellard    prefix="/c/Program Files/Qemu"
42211d9f695Sbellardfi
42311d9f695Sbellardmandir="$prefix"
4247efa4387Sbellarddatadir="$prefix"
4251f50f8d1Sbellarddocdir="$prefix"
42611d9f695Sbellardbindir="$prefix"
42711d9f695Sbellardelse
42811d9f695Sbellardif test -z "$prefix" ; then
42911d9f695Sbellard    prefix="/usr/local"
43011d9f695Sbellardfi
4315a67135aSbellardmandir="$prefix/share/man"
4327efa4387Sbellarddatadir="$prefix/share/qemu"
4331f50f8d1Sbellarddocdir="$prefix/share/doc/qemu"
43411d9f695Sbellardbindir="$prefix/bin"
43511d9f695Sbellardfi
4365a67135aSbellard
4377d13299dSbellardecho "Install prefix    $prefix"
4387efa4387Sbellardecho "BIOS directory    $datadir"
43911d9f695Sbellardecho "binary directory  $bindir"
44011d9f695Sbellardif test "$mingw32" = "no" ; then
44111d9f695Sbellardecho "Manual directory  $mandir"
44243ce4dfeSbellardecho "ELF interp prefix $interp_prefix"
44311d9f695Sbellardfi
4445a67135aSbellardecho "Source path       $source_path"
4457d13299dSbellardecho "C compiler        $cc"
44683469015Sbellardecho "Host C compiler   $host_cc"
4477d13299dSbellardecho "make              $make"
448a98fd896Sbellardecho "host CPU          $cpu"
449de83cd02Sbellardecho "host big endian   $bigendian"
45097a847bcSbellardecho "target list       $target_list"
4517d13299dSbellardecho "gprof enabled     $gprof"
45205c2a3e7Sbellardecho "profiler          $profiler"
45343ce4dfeSbellardecho "static build      $static"
4545b0753e0Sbellardif test "$darwin" = "yes" ; then
4555b0753e0Sbellard    echo "Cocoa support     $cocoa"
4565b0753e0Sbellardfi
45797a847bcSbellardecho "SDL support       $sdl"
458e4afee97Sbellardif test "$sdl" != "no" ; then
4597c1f25b4Sbellard    echo "SDL static link   $sdl_static"
460e4afee97Sbellardfi
46167b915a5Sbellardecho "mingw32 support   $mingw32"
462fb065187Sbellardecho "Adlib support     $adlib"
4631d14ffa9Sbellardecho "CoreAudio support $coreaudio"
4641d14ffa9Sbellardecho "ALSA support      $alsa"
4651d14ffa9Sbellardecho "DSound support    $dsound"
466102a52e4Sbellardecho -n "FMOD support      $fmod"
4671d14ffa9Sbellardif test "$fmod" = "yes"; then
4681d14ffa9Sbellard    if test -z $fmod_lib || test -z $fmod_inc; then
4691d14ffa9Sbellard        echo
4701d14ffa9Sbellard        echo "Error: You must specify path to FMOD library and headers"
4711d14ffa9Sbellard        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
4721d14ffa9Sbellard        echo
4731d14ffa9Sbellard        exit 1
4741d14ffa9Sbellard    fi
475102a52e4Sbellard    echo -n " (lib='$fmod_lib' include='$fmod_inc')"
476102a52e4Sbellardfi
477102a52e4Sbellardecho ""
47807f4ddbfSbellardecho "kqemu support     $kqemu"
47967b915a5Sbellard
48097a847bcSbellardif test $sdl_too_old = "yes"; then
48124b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support"
482e8cd23deSbellardfi
48324b55b96Sbellard#if test "$sdl_static" = "no"; then
48424b55b96Sbellard#  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
48524b55b96Sbellard#fi
48697a847bcSbellard
48797a847bcSbellardconfig_mak="config-host.mak"
48897a847bcSbellardconfig_h="config-host.h"
48997a847bcSbellard
4907c1f25b4Sbellard#echo "Creating $config_mak and $config_h"
49197a847bcSbellard
49297a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak
49329517134Spbrookecho "# Configured with: $0 $@" >> $config_mak
49497a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h
49597a847bcSbellard
49697a847bcSbellardecho "prefix=$prefix" >> $config_mak
49711d9f695Sbellardecho "bindir=$bindir" >> $config_mak
4985a67135aSbellardecho "mandir=$mandir" >> $config_mak
4997efa4387Sbellardecho "datadir=$datadir" >> $config_mak
5001f50f8d1Sbellardecho "docdir=$docdir" >> $config_mak
5017efa4387Sbellardecho "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
50297a847bcSbellardecho "MAKE=$make" >> $config_mak
50397a847bcSbellardecho "CC=$cc" >> $config_mak
50497a847bcSbellardif test "$have_gcc3_options" = "yes" ; then
50597a847bcSbellard  echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
50697a847bcSbellardfi
50797a847bcSbellardecho "HOST_CC=$host_cc" >> $config_mak
50897a847bcSbellardecho "AR=$ar" >> $config_mak
50997a847bcSbellardecho "STRIP=$strip -s -R .comment -R .note" >> $config_mak
51097a847bcSbellardecho "CFLAGS=$CFLAGS" >> $config_mak
51197a847bcSbellardecho "LDFLAGS=$LDFLAGS" >> $config_mak
51267b915a5Sbellardecho "EXESUF=$EXESUF" >> $config_mak
51397a847bcSbellardif test "$cpu" = "i386" ; then
51497a847bcSbellard  echo "ARCH=i386" >> $config_mak
51597a847bcSbellard  echo "#define HOST_I386 1" >> $config_h
5160b0babc6Sbellardelif test "$cpu" = "x86_64" ; then
5170b0babc6Sbellard  echo "ARCH=x86_64" >> $config_mak
5180b0babc6Sbellard  echo "#define HOST_X86_64 1" >> $config_h
519808c4954Sbellardelif test "$cpu" = "armv4b" ; then
520808c4954Sbellard  echo "ARCH=arm" >> $config_mak
521808c4954Sbellard  echo "#define HOST_ARM 1" >> $config_h
5227d13299dSbellardelif test "$cpu" = "armv4l" ; then
52397a847bcSbellard  echo "ARCH=arm" >> $config_mak
52497a847bcSbellard  echo "#define HOST_ARM 1" >> $config_h
5257d13299dSbellardelif test "$cpu" = "powerpc" ; then
52697a847bcSbellard  echo "ARCH=ppc" >> $config_mak
52797a847bcSbellard  echo "#define HOST_PPC 1" >> $config_h
5287d13299dSbellardelif test "$cpu" = "mips" ; then
52997a847bcSbellard  echo "ARCH=mips" >> $config_mak
53097a847bcSbellard  echo "#define HOST_MIPS 1" >> $config_h
531fb3e5849Sbellardelif test "$cpu" = "s390" ; then
53297a847bcSbellard  echo "ARCH=s390" >> $config_mak
53397a847bcSbellard  echo "#define HOST_S390 1" >> $config_h
534295defa5Sbellardelif test "$cpu" = "alpha" ; then
53597a847bcSbellard  echo "ARCH=alpha" >> $config_mak
53697a847bcSbellard  echo "#define HOST_ALPHA 1" >> $config_h
537ae228531Sbellardelif test "$cpu" = "sparc" ; then
53897a847bcSbellard  echo "ARCH=sparc" >> $config_mak
53997a847bcSbellard  echo "#define HOST_SPARC 1" >> $config_h
540ae228531Sbellardelif test "$cpu" = "sparc64" ; then
54197a847bcSbellard  echo "ARCH=sparc64" >> $config_mak
54297a847bcSbellard  echo "#define HOST_SPARC64 1" >> $config_h
543a8baa8c5Sbellardelif test "$cpu" = "ia64" ; then
54497a847bcSbellard  echo "ARCH=ia64" >> $config_mak
54597a847bcSbellard  echo "#define HOST_IA64 1" >> $config_h
54638e584a0Sbellardelif test "$cpu" = "m68k" ; then
54738ca2abcSbellard  echo "ARCH=m68k" >> $config_mak
54838ca2abcSbellard  echo "#define HOST_M68K 1" >> $config_h
5497d13299dSbellardelse
5507d13299dSbellard  echo "Unsupported CPU"
5517d13299dSbellard  exit 1
5527d13299dSbellardfi
5537d13299dSbellardif test "$bigendian" = "yes" ; then
55497a847bcSbellard  echo "WORDS_BIGENDIAN=yes" >> $config_mak
55597a847bcSbellard  echo "#define WORDS_BIGENDIAN 1" >> $config_h
55697a847bcSbellardfi
557b6853697Sbellardecho "#define HOST_LONG_BITS $hostlongbits" >> $config_h
55867b915a5Sbellardif test "$mingw32" = "yes" ; then
55967b915a5Sbellard  echo "CONFIG_WIN32=yes" >> $config_mak
56011d9f695Sbellard  echo "#define CONFIG_WIN32 1" >> $config_h
5617d3505c5Sbellardelif test -f "/usr/include/byteswap.h" ; then
56297a847bcSbellard  echo "#define HAVE_BYTESWAP_H 1" >> $config_h
56367b915a5Sbellardfi
56483fb7adfSbellardif test "$darwin" = "yes" ; then
56583fb7adfSbellard  echo "CONFIG_DARWIN=yes" >> $config_mak
56683fb7adfSbellard  echo "#define CONFIG_DARWIN 1" >> $config_h
56783fb7adfSbellardfi
56867b915a5Sbellardif test "$gdbstub" = "yes" ; then
56967b915a5Sbellard  echo "CONFIG_GDBSTUB=yes" >> $config_mak
57067b915a5Sbellard  echo "#define CONFIG_GDBSTUB 1" >> $config_h
57167b915a5Sbellardfi
57297a847bcSbellardif test "$gprof" = "yes" ; then
57397a847bcSbellard  echo "TARGET_GPROF=yes" >> $config_mak
57497a847bcSbellard  echo "#define HAVE_GPROF 1" >> $config_h
57597a847bcSbellardfi
57697a847bcSbellardif test "$static" = "yes" ; then
57797a847bcSbellard  echo "CONFIG_STATIC=yes" >> $config_mak
57850863472Sbellard  echo "#define CONFIG_STATIC 1" >> $config_h
57997a847bcSbellardfi
58005c2a3e7Sbellardif test $profiler = "yes" ; then
58105c2a3e7Sbellard  echo "#define CONFIG_PROFILER 1" >> $config_h
58205c2a3e7Sbellardfi
583c20709aaSbellardif test "$slirp" = "yes" ; then
584c20709aaSbellard  echo "CONFIG_SLIRP=yes" >> $config_mak
585c20709aaSbellard  echo "#define CONFIG_SLIRP 1" >> $config_h
586c20709aaSbellardfi
587fb065187Sbellardif test "$adlib" = "yes" ; then
588fb065187Sbellard  echo "CONFIG_ADLIB=yes" >> $config_mak
589fb065187Sbellard  echo "#define CONFIG_ADLIB 1" >> $config_h
590fb065187Sbellardfi
591fb065187Sbellardif test "$oss" = "yes" ; then
592fb065187Sbellard  echo "CONFIG_OSS=yes" >> $config_mak
593fb065187Sbellard  echo "#define CONFIG_OSS 1" >> $config_h
594fb065187Sbellardfi
5951d14ffa9Sbellardif test "$coreaudio" = "yes" ; then
5961d14ffa9Sbellard  echo "CONFIG_COREAUDIO=yes" >> $config_mak
5971d14ffa9Sbellard  echo "#define CONFIG_COREAUDIO 1" >> $config_h
5981d14ffa9Sbellardfi
5991d14ffa9Sbellardif test "$alsa" = "yes" ; then
6001d14ffa9Sbellard  echo "CONFIG_ALSA=yes" >> $config_mak
6011d14ffa9Sbellard  echo "#define CONFIG_ALSA 1" >> $config_h
6021d14ffa9Sbellardfi
6031d14ffa9Sbellardif test "$dsound" = "yes" ; then
6041d14ffa9Sbellard  echo "CONFIG_DSOUND=yes" >> $config_mak
6051d14ffa9Sbellard  echo "#define CONFIG_DSOUND 1" >> $config_h
6061d14ffa9Sbellardfi
607102a52e4Sbellardif test "$fmod" = "yes" ; then
608102a52e4Sbellard  echo "CONFIG_FMOD=yes" >> $config_mak
609102a52e4Sbellard  echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
610102a52e4Sbellard  echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
611102a52e4Sbellard  echo "#define CONFIG_FMOD 1" >> $config_h
612102a52e4Sbellardfi
61397a847bcSbellardecho -n "VERSION=" >>$config_mak
61497a847bcSbellardhead $source_path/VERSION >>$config_mak
61597a847bcSbellardecho "" >>$config_mak
61697a847bcSbellardecho -n "#define QEMU_VERSION \"" >> $config_h
61797a847bcSbellardhead $source_path/VERSION >> $config_h
61897a847bcSbellardecho "\"" >> $config_h
61997a847bcSbellard
62097a847bcSbellardecho "SRC_PATH=$source_path" >> $config_mak
621*ad064840Spbrookif [ "$source_path_used" = "yes" ]; then
622*ad064840Spbrook  echo "VPATH=$source_path" >> $config_mak
623*ad064840Spbrookfi
62497a847bcSbellardecho "TARGET_DIRS=$target_list" >> $config_mak
62597a847bcSbellard
62683fb7adfSbellard# XXX: suppress that
6277d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
62843003046Sbellard  echo "#define O_LARGEFILE 0" >> $config_h
62943003046Sbellard  echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
6307d3505c5Sbellard  echo "#define _BSD 1" >> $config_h
6317d3505c5Sbellardfi
6327d3505c5Sbellard
63397a847bcSbellardfor target in $target_list; do
63497a847bcSbellard
63597a847bcSbellardtarget_dir="$target"
63697a847bcSbellardconfig_mak=$target_dir/config.mak
63797a847bcSbellardconfig_h=$target_dir/config.h
63897a847bcSbellardtarget_cpu=`echo $target | cut -d '-' -f 1`
63997a847bcSbellardtarget_bigendian="no"
640808c4954Sbellard[ "$target_cpu" = "armeb" ] && target_bigendian=yes
6411e43adfcSbellard[ "$target_cpu" = "sparc" ] && target_bigendian=yes
64264b3ab24Sbellard[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
64367867308Sbellard[ "$target_cpu" = "ppc" ] && target_bigendian=yes
644a2458627Sbellard[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
645d3258560Sbellard[ "$target_cpu" = "mips" ] && target_bigendian=yes
64697a847bcSbellardtarget_softmmu="no"
64797a847bcSbellardif expr $target : '.*-softmmu' > /dev/null ; then
64897a847bcSbellard  target_softmmu="yes"
6497d13299dSbellardfi
650997344f3Sbellardtarget_user_only="no"
651997344f3Sbellardif expr $target : '.*-user' > /dev/null ; then
652997344f3Sbellard  target_user_only="yes"
653997344f3Sbellardfi
654de83cd02Sbellard
65597ccc689Sbellardif test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
65697ccc689Sbellard        -a "$sdl" = "no" -a "$cocoa" = "no" ; then
65797ccc689Sbellard    echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
65897ccc689Sbellard    echo "To build QEMU with graphical output configure with --disable-gfx-check"
65997ccc689Sbellard    echo "Note that this will disable all output from the virtual graphics card."
66097ccc689Sbellard    exit 1;
66197ccc689Sbellardfi
66297ccc689Sbellard
6637c1f25b4Sbellard#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
66497a847bcSbellard
66597a847bcSbellardmkdir -p $target_dir
666158142c2Sbellardmkdir -p $target_dir/fpu
667808c4954Sbellardif test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
66869de927cSbellard  mkdir -p $target_dir/nwfpe
66969de927cSbellardfi
670a7e61ed4Sbellardif test "$target_user_only" = "no" ; then
671a7e61ed4Sbellard  mkdir -p $target_dir/slirp
672a7e61ed4Sbellardfi
67369de927cSbellard
67497a847bcSbellardln -sf $source_path/Makefile.target $target_dir/Makefile
67597a847bcSbellard
67697a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak
67797a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h
67897a847bcSbellard
67997a847bcSbellard
68097a847bcSbellardecho "include ../config-host.mak" >> $config_mak
68197a847bcSbellardecho "#include \"../config-host.h\"" >> $config_h
6821e43adfcSbellard
6831e43adfcSbellardinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
6841e43adfcSbellardecho "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
68597a847bcSbellard
68697a847bcSbellardif test "$target_cpu" = "i386" ; then
68797a847bcSbellard  echo "TARGET_ARCH=i386" >> $config_mak
68897a847bcSbellard  echo "#define TARGET_ARCH \"i386\"" >> $config_h
68997a847bcSbellard  echo "#define TARGET_I386 1" >> $config_h
69007f4ddbfSbellard  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
691824d560fSbellard    echo "#define USE_KQEMU 1" >> $config_h
692824d560fSbellard  fi
693808c4954Sbellardelif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
69497a847bcSbellard  echo "TARGET_ARCH=arm" >> $config_mak
69597a847bcSbellard  echo "#define TARGET_ARCH \"arm\"" >> $config_h
69697a847bcSbellard  echo "#define TARGET_ARM 1" >> $config_h
6971e43adfcSbellardelif test "$target_cpu" = "sparc" ; then
6981e43adfcSbellard  echo "TARGET_ARCH=sparc" >> $config_mak
6991e43adfcSbellard  echo "#define TARGET_ARCH \"sparc\"" >> $config_h
7001e43adfcSbellard  echo "#define TARGET_SPARC 1" >> $config_h
70164b3ab24Sbellardelif test "$target_cpu" = "sparc64" ; then
70264b3ab24Sbellard  echo "TARGET_ARCH=sparc64" >> $config_mak
70364b3ab24Sbellard  echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
70464b3ab24Sbellard  echo "#define TARGET_SPARC 1" >> $config_h
70564b3ab24Sbellard  echo "#define TARGET_SPARC64 1" >> $config_h
70667867308Sbellardelif test "$target_cpu" = "ppc" ; then
70767867308Sbellard  echo "TARGET_ARCH=ppc" >> $config_mak
70867867308Sbellard  echo "#define TARGET_ARCH \"ppc\"" >> $config_h
70967867308Sbellard  echo "#define TARGET_PPC 1" >> $config_h
710a2458627Sbellardelif test "$target_cpu" = "ppc64" ; then
711a2458627Sbellard  echo "TARGET_ARCH=ppc64" >> $config_mak
712a2458627Sbellard  echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
713a2458627Sbellard  echo "#define TARGET_PPC 1" >> $config_h
714a2458627Sbellard  echo "#define TARGET_PPC64 1" >> $config_h
7150b0babc6Sbellardelif test "$target_cpu" = "x86_64" ; then
7160b0babc6Sbellard  echo "TARGET_ARCH=x86_64" >> $config_mak
7170b0babc6Sbellard  echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
7180b0babc6Sbellard  echo "#define TARGET_I386 1" >> $config_h
7190b0babc6Sbellard  echo "#define TARGET_X86_64 1" >> $config_h
72007f4ddbfSbellard  if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
72107f4ddbfSbellard    echo "#define USE_KQEMU 1" >> $config_h
72207f4ddbfSbellard  fi
723c20eb473Sbellardelif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
724d3258560Sbellard  echo "TARGET_ARCH=mips" >> $config_mak
725d3258560Sbellard  echo "#define TARGET_ARCH \"mips\"" >> $config_h
726d3258560Sbellard  echo "#define TARGET_MIPS 1" >> $config_h
727de83cd02Sbellardelse
728de83cd02Sbellard  echo "Unsupported target CPU"
729de83cd02Sbellard  exit 1
730de83cd02Sbellardfi
731de83cd02Sbellardif test "$target_bigendian" = "yes" ; then
73297a847bcSbellard  echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
73397a847bcSbellard  echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
73497a847bcSbellardfi
73597a847bcSbellardif test "$target_softmmu" = "yes" ; then
73697a847bcSbellard  echo "CONFIG_SOFTMMU=yes" >> $config_mak
73797a847bcSbellard  echo "#define CONFIG_SOFTMMU 1" >> $config_h
738de83cd02Sbellardfi
739997344f3Sbellardif test "$target_user_only" = "yes" ; then
740997344f3Sbellard  echo "CONFIG_USER_ONLY=yes" >> $config_mak
741997344f3Sbellard  echo "#define CONFIG_USER_ONLY 1" >> $config_h
742997344f3Sbellardfi
743de83cd02Sbellard
744158142c2Sbellardif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
745158142c2Sbellard  echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
746158142c2Sbellard  echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
747158142c2Sbellardfi
7487c1f25b4Sbellard# sdl defines
7497c1f25b4Sbellard
7507c1f25b4Sbellardif test "$target_user_only" = "no"; then
7517c1f25b4Sbellard    if test "$target_softmmu" = "no" -o "$static" = "yes"; then
752dbb2c921Sbellard        sdl1=$sdl_static
7537c1f25b4Sbellard    else
754dbb2c921Sbellard        sdl1=$sdl
755dbb2c921Sbellard    fi
756dbb2c921Sbellard    if test "$sdl1" = "yes" ; then
7577c1f25b4Sbellard        echo "#define CONFIG_SDL 1" >> $config_h
7587c1f25b4Sbellard        echo "CONFIG_SDL=yes" >> $config_mak
759dbb2c921Sbellard        if test "$target_softmmu" = "no" -o "$static" = "yes"; then
760dbb2c921Sbellard            echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
761dbb2c921Sbellard        else
7627c1f25b4Sbellard            echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
7637c1f25b4Sbellard        fi
7647c1f25b4Sbellard        echo -n "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
7657c1f25b4Sbellard        if [ "${aa}" = "yes" ] ; then
7667c1f25b4Sbellard            echo -n " `aalib-config --cflags`" >> $config_mak ;
7677c1f25b4Sbellard        fi
7687c1f25b4Sbellard        echo "" >> $config_mak
7697c1f25b4Sbellard    fi
770dbb2c921Sbellardfi
7717c1f25b4Sbellard
7725b0753e0Sbellardif test "$cocoa" = "yes" ; then
7735b0753e0Sbellard    echo "#define CONFIG_COCOA 1" >> $config_h
7745b0753e0Sbellard    echo "CONFIG_COCOA=yes" >> $config_mak
7755b0753e0Sbellardfi
7765b0753e0Sbellard
77797a847bcSbellarddone # for target in $targets
7787d13299dSbellard
7797d13299dSbellard# build tree in object directory if source path is different from current one
7807d13299dSbellardif test "$source_path_used" = "yes" ; then
7817d13299dSbellard    DIRS="tests"
7827d13299dSbellard    FILES="Makefile tests/Makefile"
7837d13299dSbellard    for dir in $DIRS ; do
7847d13299dSbellard            mkdir -p $dir
7857d13299dSbellard    done
7867d13299dSbellard    for f in $FILES ; do
7877d13299dSbellard        ln -sf $source_path/$f $f
7887d13299dSbellard    done
7897d13299dSbellardfi
7907d13299dSbellard
79197a847bcSbellardrm -f $TMPO $TMPC $TMPE $TMPS
792