blob: 3471193ede44f99304ee015a1009dec71820384d [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
5# set temporary file name
6if test ! -z "$TMPDIR" ; then
7 TMPDIR1="${TMPDIR}"
8elif test ! -z "$TEMPDIR" ; then
9 TMPDIR1="${TEMPDIR}"
10else
11 TMPDIR1="/tmp"
12fi
13
bellard3ef693a2003-03-23 20:17:16 +000014TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
bellard7d132992003-03-06 23:23:54 +000018
19# default parameters
bellard11d9f692004-04-02 20:55:59 +000020prefix=""
bellard1e43adf2003-09-30 20:54:24 +000021interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +000022static="no"
bellard7d132992003-03-06 23:23:54 +000023cross_prefix=""
24cc="gcc"
25host_cc="gcc"
26ar="ar"
27make="make"
28strip="strip"
29cpu=`uname -m`
bellard5327cf42005-01-10 23:18:50 +000030target_list=""
bellard7d132992003-03-06 23:23:54 +000031case "$cpu" in
32 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +000033 cpu="i386"
bellard7d132992003-03-06 23:23:54 +000034 ;;
bellardba680552005-03-13 09:49:52 +000035 armv*b)
bellard808c4952004-12-19 23:33:47 +000036 cpu="armv4b"
37 ;;
bellardba680552005-03-13 09:49:52 +000038 armv*l)
bellard7d132992003-03-06 23:23:54 +000039 cpu="armv4l"
40 ;;
41 alpha)
42 cpu="alpha"
43 ;;
bellard295defa2003-04-07 21:31:29 +000044 "Power Macintosh"|ppc|ppc64)
bellard7d132992003-03-06 23:23:54 +000045 cpu="powerpc"
46 ;;
47 mips)
48 cpu="mips"
49 ;;
bellardfb3e5842003-03-29 17:32:36 +000050 s390)
51 cpu="s390"
52 ;;
bellardae228532003-05-13 18:59:59 +000053 sparc)
54 cpu="sparc"
55 ;;
56 sparc64)
57 cpu="sparc64"
58 ;;
bellarda8baa8c2003-04-29 20:53:31 +000059 ia64)
60 cpu="ia64"
61 ;;
bellard38e584a2003-08-10 22:14:22 +000062 m68k)
63 cpu="m68k"
64 ;;
bellardbc51c5c2004-03-17 23:46:04 +000065 x86_64|amd64)
bellard0b0babc2005-01-03 23:38:40 +000066 cpu="x86_64"
bellardbc51c5c2004-03-17 23:46:04 +000067 ;;
bellard7d132992003-03-06 23:23:54 +000068 *)
69 cpu="unknown"
70 ;;
71esac
72gprof="no"
73bigendian="no"
bellard67b915a2004-03-31 23:37:16 +000074mingw32="no"
75EXESUF=""
76gdbstub="yes"
bellard443f1372004-06-04 11:13:20 +000077slirp="yes"
bellardfb065182004-11-09 23:09:44 +000078adlib="no"
79oss="no"
bellard1d14ffa2005-10-30 18:58:22 +000080dsound="no"
81coreaudio="no"
82alsa="no"
bellard102a52e2004-11-14 19:57:29 +000083fmod="no"
84fmod_lib=""
85fmod_inc=""
bellard5327cf42005-01-10 23:18:50 +000086linux="no"
bellardc9ec1fe2005-02-10 21:55:30 +000087kqemu="no"
88kernel_path=""
bellard5b0753e2005-03-01 21:37:28 +000089cocoa="no"
bellard97ccc682005-07-02 13:32:17 +000090check_gfx="yes"
bellard1aff3812005-11-02 22:30:45 +000091check_gcc="yes"
bellard7d132992003-03-06 23:23:54 +000092
93# OS specific
94targetos=`uname -s`
95case $targetos in
bellardc326e0a2005-04-23 18:30:28 +000096CYGWIN*)
97mingw32="yes"
98CFLAGS="-O2 -mno-cygwin"
99;;
bellard67b915a2004-03-31 23:37:16 +0000100MINGW32*)
101mingw32="yes"
102;;
bellard7d3505c2004-05-12 19:32:15 +0000103FreeBSD)
104bsd="yes"
bellardfb065182004-11-09 23:09:44 +0000105oss="yes"
bellarde99f9062005-07-28 21:45:38 +0000106if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000107 kqemu="yes"
108fi
bellard7d3505c2004-05-12 19:32:15 +0000109;;
110NetBSD)
111bsd="yes"
bellardfb065182004-11-09 23:09:44 +0000112oss="yes"
bellard7d3505c2004-05-12 19:32:15 +0000113;;
114OpenBSD)
115bsd="yes"
bellardfb065182004-11-09 23:09:44 +0000116oss="yes"
bellard7d3505c2004-05-12 19:32:15 +0000117;;
bellard83fb7ad2004-07-05 21:25:26 +0000118Darwin)
119bsd="yes"
120darwin="yes"
121;;
bellard1d14ffa2005-10-30 18:58:22 +0000122*)
bellardfb065182004-11-09 23:09:44 +0000123oss="yes"
bellard5327cf42005-01-10 23:18:50 +0000124linux="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000125if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000126 kqemu="yes"
127fi
bellardfb065182004-11-09 23:09:44 +0000128;;
bellard7d132992003-03-06 23:23:54 +0000129esac
130
bellard7d3505c2004-05-12 19:32:15 +0000131if [ "$bsd" = "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000132 if [ ! "$darwin" = "yes" ] ; then
133 make="gmake"
134 fi
bellard7d3505c2004-05-12 19:32:15 +0000135fi
136
bellard7d132992003-03-06 23:23:54 +0000137# find source path
bellard1d14ffa2005-10-30 18:58:22 +0000138# XXX: we assume an absolute path is given when launching configure,
bellard7d132992003-03-06 23:23:54 +0000139# except in './configure' case.
140source_path=${0%configure}
141source_path=${source_path%/}
142source_path_used="yes"
143if test -z "$source_path" -o "$source_path" = "." ; then
144 source_path=`pwd`
145 source_path_used="no"
146fi
147
148for opt do
149 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000150 --help|-h) show_help=yes
151 ;;
bellard7d132992003-03-06 23:23:54 +0000152 --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
153 ;;
bellard32ce6332003-04-11 00:16:16 +0000154 --interp-prefix=*) interp_prefix=`echo $opt | cut -d '=' -f 2`
155 ;;
bellard7d132992003-03-06 23:23:54 +0000156 --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
157 ;;
158 --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
159 ;;
160 --cc=*) cc=`echo $opt | cut -d '=' -f 2`
161 ;;
bellard83469012005-07-23 14:27:54 +0000162 --host-cc=*) host_cc=`echo $opt | cut -d '=' -f 2`
163 ;;
bellard7d132992003-03-06 23:23:54 +0000164 --make=*) make=`echo $opt | cut -d '=' -f 2`
165 ;;
166 --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
167 ;;
168 --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
169 ;;
bellard7d132992003-03-06 23:23:54 +0000170 --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
171 ;;
bellard97a847b2003-08-10 21:36:04 +0000172 --target-list=*) target_list=${opt#--target-list=}
bellardde83cd02003-06-15 20:25:43 +0000173 ;;
bellard7d132992003-03-06 23:23:54 +0000174 --enable-gprof) gprof="yes"
175 ;;
bellard43ce4df2003-06-09 19:53:12 +0000176 --static) static="yes"
177 ;;
bellard97a847b2003-08-10 21:36:04 +0000178 --disable-sdl) sdl="no"
179 ;;
bellard1d14ffa2005-10-30 18:58:22 +0000180 --enable-coreaudio) coreaudio="yes"
181 ;;
182 --enable-alsa) alsa="yes"
183 ;;
184 --enable-dsound) dsound="yes"
185 ;;
bellard102a52e2004-11-14 19:57:29 +0000186 --enable-fmod) fmod="yes"
187 ;;
188 --fmod-lib=*) fmod_lib=${opt#--fmod-lib=}
189 ;;
190 --fmod-inc=*) fmod_inc=${opt#--fmod-inc=}
191 ;;
bellard67b915a2004-03-31 23:37:16 +0000192 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
bellard1d14ffa2005-10-30 18:58:22 +0000193 ;;
bellard443f1372004-06-04 11:13:20 +0000194 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000195 ;;
bellardfb065182004-11-09 23:09:44 +0000196 --enable-adlib) adlib="yes"
bellard1d14ffa2005-10-30 18:58:22 +0000197 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000198 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000199 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000200 --kernel-path=*) kernel_path=${opt#--kernel-path=}
bellard1d14ffa2005-10-30 18:58:22 +0000201 ;;
202 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
203 ;;
bellard97ccc682005-07-02 13:32:17 +0000204 --disable-gfx-check) check_gfx="no"
205 ;;
bellard1aff3812005-11-02 22:30:45 +0000206 --disable-gcc-check) check_gcc="no"
207 ;;
bellard7d132992003-03-06 23:23:54 +0000208 esac
209done
210
211# Checking for CFLAGS
212if test -z "$CFLAGS"; then
213 CFLAGS="-O2"
214fi
215
216cc="${cross_prefix}${cc}"
217ar="${cross_prefix}${ar}"
218strip="${cross_prefix}${strip}"
219
bellard67b915a2004-03-31 23:37:16 +0000220if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000221 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000222 EXESUF=".exe"
223 gdbstub="no"
bellard9f059ec2004-11-14 18:59:52 +0000224 oss="no"
bellard07f4ddb2005-04-23 17:44:28 +0000225 if [ "$cpu" = "i386" ] ; then
226 kqemu="yes"
227 fi
bellard67b915a2004-03-31 23:37:16 +0000228fi
229
bellard5327cf42005-01-10 23:18:50 +0000230if test -z "$target_list" ; then
231# these targets are portable
bellardb5ff1b32005-11-26 10:38:39 +0000232 target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu arm-softmmu"
bellard5327cf42005-01-10 23:18:50 +0000233# the following are Linux specific
234 if [ "$linux" = "yes" ] ; then
bellardc20eb472005-12-06 21:42:55 +0000235 target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user $target_list"
bellard5327cf42005-01-10 23:18:50 +0000236 fi
bellard6e20a452005-06-05 15:56:02 +0000237else
238 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
bellard5327cf42005-01-10 23:18:50 +0000239fi
240
bellard7d132992003-03-06 23:23:54 +0000241if test -z "$cross_prefix" ; then
242
243# ---
244# big/little endian test
245cat > $TMPC << EOF
246#include <inttypes.h>
247int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000248 volatile uint32_t i=0x01234567;
249 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000250}
251EOF
252
253if $cc -o $TMPE $TMPC 2>/dev/null ; then
254$TMPE && bigendian="yes"
255else
256echo big/little test failed
257fi
258
259else
260
261# if cross compiling, cannot launch a program, so make a static guess
bellard808c4952004-12-19 23:33:47 +0000262if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
bellard7d132992003-03-06 23:23:54 +0000263 bigendian="yes"
264fi
265
266fi
267
bellardb6853692005-06-05 17:10:39 +0000268# host long bits test
269hostlongbits="32"
270if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
271 hostlongbits="64"
272fi
273
bellarde8cd23d2003-06-25 16:08:13 +0000274# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000275cat > $TMPC <<EOF
276int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000277}
278EOF
279
bellarde8cd23d2003-06-25 16:08:13 +0000280have_gcc3_options="no"
281if $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
282 have_gcc3_options="yes"
bellard04369ff2003-03-20 22:33:23 +0000283fi
bellardca735202003-03-18 20:41:34 +0000284
bellard1aff3812005-11-02 22:30:45 +0000285# Check for gcc4
286if test "$check_gcc" = "yes" ; then
287 cat > $TMPC <<EOF
288#if __GNUC__ >= 4
289#error gcc4
290#endif
291int main(){return 0;}
292EOF
293 if ! $cc -o $TMPO $TMPC 2>/dev/null ; then
294 echo "ERROR: \"$cc\" looks like gcc 4.x"
295 echo "QEMU is known to have problems when compiled with gcc 4.x"
296 echo "It is recommended that you use gcc 3.x to build QEMU"
297 echo "To use this compiler anyway, configure with --disable-gcc-check"
298 exit 1;
299 fi
300fi
301
bellard11d9f692004-04-02 20:55:59 +0000302##########################################
303# SDL probe
304
305sdl_too_old=no
306
307if test -z "$sdl" ; then
308
bellarda6e022a2004-04-02 21:55:47 +0000309sdl_config="sdl-config"
310sdl=no
bellard7c1f25b2004-04-22 00:02:08 +0000311sdl_static=no
bellarda6e022a2004-04-02 21:55:47 +0000312
313if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
314# win32 cross compilation case
315 sdl_config="i386-mingw32msvc-sdl-config"
316 sdl=yes
317else
318# normal SDL probe
bellard11d9f692004-04-02 20:55:59 +0000319cat > $TMPC << EOF
320#include <SDL.h>
321#undef main /* We don't want SDL to override our main() */
322int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
323EOF
324
bellarda6e022a2004-04-02 21:55:47 +0000325if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
326_sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
bellard11d9f692004-04-02 20:55:59 +0000327if test "$_sdlversion" -lt 121 ; then
328sdl_too_old=yes
329else
330sdl=yes
331fi
bellard7c1f25b2004-04-22 00:02:08 +0000332
333# static link with sdl ?
334if test "$sdl" = "yes" ; then
335aa="no"
336`$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
337sdl_static_libs=`$sdl_config --static-libs`
338if [ "$aa" = "yes" ] ; then
bellardd8d8aa42004-04-29 20:14:07 +0000339 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
bellard11d9f692004-04-02 20:55:59 +0000340fi
341
bellard7c1f25b2004-04-22 00:02:08 +0000342if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
343 sdl_static=yes
344fi
345
346fi # static link
347
348fi # sdl compile test
349
bellarda6e022a2004-04-02 21:55:47 +0000350fi # cross compilation
351fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000352
bellard2efc3262005-12-18 19:14:49 +0000353if test x"$show_help" = x"yes" ; then
bellard7d132992003-03-06 23:23:54 +0000354cat << EOF
355
356Usage: configure [options]
357Options: [defaults in brackets after descriptions]
358
359EOF
360echo "Standard options:"
361echo " --help print this message"
362echo " --prefix=PREFIX install in PREFIX [$prefix]"
bellard1e43adf2003-09-30 20:54:24 +0000363echo " --interp-prefix=PREFIX where to find shared libraries, etc."
364echo " use %M for cpu name [$interp_prefix]"
bellard97a847b2003-08-10 21:36:04 +0000365echo " --target-list=LIST set target list [$target_list]"
bellard7d132992003-03-06 23:23:54 +0000366echo ""
bellardc9ec1fe2005-02-10 21:55:30 +0000367echo "kqemu kernel acceleration support:"
368echo " --disable-kqemu disable kqemu build"
369echo " --kernel-path=PATH set the kernel path (configure probes it)"
370echo ""
bellard7d132992003-03-06 23:23:54 +0000371echo "Advanced options (experts only):"
372echo " --source-path=PATH path of source code [$source_path]"
373echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
374echo " --cc=CC use C compiler CC [$cc]"
bellard2efc3262005-12-18 19:14:49 +0000375echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
bellard7d132992003-03-06 23:23:54 +0000376echo " --make=MAKE use specified make [$make]"
bellard43ce4df2003-06-09 19:53:12 +0000377echo " --static enable static build [$static]"
bellard67b915a2004-03-31 23:37:16 +0000378echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
bellardd37282a2005-04-28 20:41:53 +0000379echo " --enable-adlib enable Adlib emulation"
bellard1d14ffa2005-10-30 18:58:22 +0000380echo " --enable-coreaudio enable Coreaudio audio driver"
381echo " --enable-alsa enable ALSA audio driver"
382echo " --enable-fmod enable FMOD audio driver"
383echo " --enabled-dsound enable DirectSound audio driver"
bellard102a52e2004-11-14 19:57:29 +0000384echo " --fmod-lib path to FMOD library"
385echo " --fmod-inc path to FMOD includes"
bellard7d132992003-03-06 23:23:54 +0000386echo ""
387echo "NOTE: The object files are build at the place where configure is launched"
388exit 1
389fi
390
bellard11d9f692004-04-02 20:55:59 +0000391if test "$mingw32" = "yes" ; then
392if test -z "$prefix" ; then
393 prefix="/c/Program Files/Qemu"
394fi
395mandir="$prefix"
bellard7efa4382004-05-12 18:54:06 +0000396datadir="$prefix"
bellard1f50f8d2004-05-08 14:44:43 +0000397docdir="$prefix"
bellard11d9f692004-04-02 20:55:59 +0000398bindir="$prefix"
399else
400if test -z "$prefix" ; then
401 prefix="/usr/local"
402fi
bellard5a671352003-10-01 00:13:48 +0000403mandir="$prefix/share/man"
bellard7efa4382004-05-12 18:54:06 +0000404datadir="$prefix/share/qemu"
bellard1f50f8d2004-05-08 14:44:43 +0000405docdir="$prefix/share/doc/qemu"
bellard11d9f692004-04-02 20:55:59 +0000406bindir="$prefix/bin"
407fi
bellard5a671352003-10-01 00:13:48 +0000408
bellard07f4ddb2005-04-23 17:44:28 +0000409# kqemu support
bellardc9ec1fe2005-02-10 21:55:30 +0000410if test $kqemu = "yes" ; then
bellard441c72b2005-02-12 14:45:23 +0000411 # test if the source code is installed
bellard1d14ffa2005-10-30 18:58:22 +0000412 if test '!' -f "kqemu/Makefile" ; then
bellard441c72b2005-02-12 14:45:23 +0000413 kqemu="no"
414 fi
415fi
bellard1d14ffa2005-10-30 18:58:22 +0000416
bellard07f4ddb2005-04-23 17:44:28 +0000417# Linux specific kqemu configuration
418if test $kqemu = "yes" -a $linux = "yes" ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000419# find the kernel path
420if test -z "$kernel_path" ; then
421kernel_version=`uname -r`
422kernel_path="/lib/modules/$kernel_version/build"
bellard1d14ffa2005-10-30 18:58:22 +0000423if test '!' -d "$kernel_path/include" ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000424 kernel_path="/usr/src/linux"
bellard1d14ffa2005-10-30 18:58:22 +0000425 if test '!' -d "$kernel_path/include" ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000426 echo "Could not find kernel includes in /lib/modules or /usr/src/linux - cannot build the kqemu module"
427 kqemu="no"
428 fi
429fi
430fi
431
432if test $kqemu = "yes" ; then
433
434# test that the kernel config is present
435if test '!' -f "$kernel_path/Makefile" ; then
bellardf94daed2005-03-01 21:28:22 +0000436 echo "No Makefile file present in $kernel_path - kqemu cannot be built"
bellardc9ec1fe2005-02-10 21:55:30 +0000437 kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000438fi
bellardc9ec1fe2005-02-10 21:55:30 +0000439
440# find build system (2.6 or legacy)
441kbuild26="yes"
442if grep -q "PATCHLEVEL = 4" $kernel_path/Makefile ; then
443kbuild26="no"
444fi
445
446fi # kqemu
447
bellard07f4ddb2005-04-23 17:44:28 +0000448fi # kqemu and linux
bellardc9ec1fe2005-02-10 21:55:30 +0000449
450
bellard43ce4df2003-06-09 19:53:12 +0000451echo "Install prefix $prefix"
bellard7efa4382004-05-12 18:54:06 +0000452echo "BIOS directory $datadir"
bellard11d9f692004-04-02 20:55:59 +0000453echo "binary directory $bindir"
454if test "$mingw32" = "no" ; then
455echo "Manual directory $mandir"
bellard43ce4df2003-06-09 19:53:12 +0000456echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000457fi
bellard5a671352003-10-01 00:13:48 +0000458echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000459echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000460echo "Host C compiler $host_cc"
bellard43ce4df2003-06-09 19:53:12 +0000461echo "make $make"
462echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000463echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000464echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000465echo "gprof enabled $gprof"
466echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +0000467if test "$darwin" = "yes" ; then
468 echo "Cocoa support $cocoa"
469fi
bellard97a847b2003-08-10 21:36:04 +0000470echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000471if test "$sdl" != "no" ; then
472 echo "SDL static link $sdl_static"
473fi
bellard67b915a2004-03-31 23:37:16 +0000474echo "mingw32 support $mingw32"
bellardfb065182004-11-09 23:09:44 +0000475echo "Adlib support $adlib"
bellard1d14ffa2005-10-30 18:58:22 +0000476echo "CoreAudio support $coreaudio"
477echo "ALSA support $alsa"
478echo "DSound support $dsound"
bellard102a52e2004-11-14 19:57:29 +0000479echo -n "FMOD support $fmod"
bellard1d14ffa2005-10-30 18:58:22 +0000480if test "$fmod" = "yes"; then
481 if test -z $fmod_lib || test -z $fmod_inc; then
482 echo
483 echo "Error: You must specify path to FMOD library and headers"
484 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
485 echo
486 exit 1
487 fi
bellard102a52e2004-11-14 19:57:29 +0000488 echo -n " (lib='$fmod_lib' include='$fmod_inc')"
489fi
490echo ""
bellard07f4ddb2005-04-23 17:44:28 +0000491echo "kqemu support $kqemu"
492if test $kqemu = "yes" -a $linux = "yes" ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000493echo ""
bellard07f4ddb2005-04-23 17:44:28 +0000494echo "KQEMU Linux module configuration:"
bellardc9ec1fe2005-02-10 21:55:30 +0000495echo "kernel sources $kernel_path"
496echo -n "kbuild type "
497if test $kbuild26 = "yes"; then
498echo "2.6"
499else
500echo "2.4"
501fi
502fi
bellard67b915a2004-03-31 23:37:16 +0000503
bellard97a847b2003-08-10 21:36:04 +0000504if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +0000505echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +0000506fi
bellard24b55b92005-03-01 22:30:41 +0000507#if test "$sdl_static" = "no"; then
508# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
509#fi
bellard97a847b2003-08-10 21:36:04 +0000510
511config_mak="config-host.mak"
512config_h="config-host.h"
513
bellard7c1f25b2004-04-22 00:02:08 +0000514#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +0000515
516echo "# Automatically generated by configure - do not modify" > $config_mak
517echo "/* Automatically generated by configure - do not modify */" > $config_h
518
519echo "prefix=$prefix" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +0000520echo "bindir=$bindir" >> $config_mak
bellard5a671352003-10-01 00:13:48 +0000521echo "mandir=$mandir" >> $config_mak
bellard7efa4382004-05-12 18:54:06 +0000522echo "datadir=$datadir" >> $config_mak
bellard1f50f8d2004-05-08 14:44:43 +0000523echo "docdir=$docdir" >> $config_mak
bellard7efa4382004-05-12 18:54:06 +0000524echo "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +0000525echo "MAKE=$make" >> $config_mak
526echo "CC=$cc" >> $config_mak
527if test "$have_gcc3_options" = "yes" ; then
528 echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
529fi
530echo "HOST_CC=$host_cc" >> $config_mak
531echo "AR=$ar" >> $config_mak
532echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
533echo "CFLAGS=$CFLAGS" >> $config_mak
534echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +0000535echo "EXESUF=$EXESUF" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000536if test "$cpu" = "i386" ; then
537 echo "ARCH=i386" >> $config_mak
538 echo "#define HOST_I386 1" >> $config_h
bellard0b0babc2005-01-03 23:38:40 +0000539elif test "$cpu" = "x86_64" ; then
540 echo "ARCH=x86_64" >> $config_mak
541 echo "#define HOST_X86_64 1" >> $config_h
bellard808c4952004-12-19 23:33:47 +0000542elif test "$cpu" = "armv4b" ; then
543 echo "ARCH=arm" >> $config_mak
544 echo "#define HOST_ARM 1" >> $config_h
bellard7d132992003-03-06 23:23:54 +0000545elif test "$cpu" = "armv4l" ; then
bellard97a847b2003-08-10 21:36:04 +0000546 echo "ARCH=arm" >> $config_mak
547 echo "#define HOST_ARM 1" >> $config_h
bellard7d132992003-03-06 23:23:54 +0000548elif test "$cpu" = "powerpc" ; then
bellard97a847b2003-08-10 21:36:04 +0000549 echo "ARCH=ppc" >> $config_mak
550 echo "#define HOST_PPC 1" >> $config_h
bellard7d132992003-03-06 23:23:54 +0000551elif test "$cpu" = "mips" ; then
bellard97a847b2003-08-10 21:36:04 +0000552 echo "ARCH=mips" >> $config_mak
553 echo "#define HOST_MIPS 1" >> $config_h
bellardfb3e5842003-03-29 17:32:36 +0000554elif test "$cpu" = "s390" ; then
bellard97a847b2003-08-10 21:36:04 +0000555 echo "ARCH=s390" >> $config_mak
556 echo "#define HOST_S390 1" >> $config_h
bellard295defa2003-04-07 21:31:29 +0000557elif test "$cpu" = "alpha" ; then
bellard97a847b2003-08-10 21:36:04 +0000558 echo "ARCH=alpha" >> $config_mak
559 echo "#define HOST_ALPHA 1" >> $config_h
bellardae228532003-05-13 18:59:59 +0000560elif test "$cpu" = "sparc" ; then
bellard97a847b2003-08-10 21:36:04 +0000561 echo "ARCH=sparc" >> $config_mak
562 echo "#define HOST_SPARC 1" >> $config_h
bellardae228532003-05-13 18:59:59 +0000563elif test "$cpu" = "sparc64" ; then
bellard97a847b2003-08-10 21:36:04 +0000564 echo "ARCH=sparc64" >> $config_mak
565 echo "#define HOST_SPARC64 1" >> $config_h
bellarda8baa8c2003-04-29 20:53:31 +0000566elif test "$cpu" = "ia64" ; then
bellard97a847b2003-08-10 21:36:04 +0000567 echo "ARCH=ia64" >> $config_mak
568 echo "#define HOST_IA64 1" >> $config_h
bellard38e584a2003-08-10 22:14:22 +0000569elif test "$cpu" = "m68k" ; then
bellard38ca2ab2004-03-13 18:32:13 +0000570 echo "ARCH=m68k" >> $config_mak
571 echo "#define HOST_M68K 1" >> $config_h
bellard7d132992003-03-06 23:23:54 +0000572else
573 echo "Unsupported CPU"
574 exit 1
575fi
576if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +0000577 echo "WORDS_BIGENDIAN=yes" >> $config_mak
578 echo "#define WORDS_BIGENDIAN 1" >> $config_h
579fi
bellardb6853692005-06-05 17:10:39 +0000580echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +0000581if test "$mingw32" = "yes" ; then
582 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +0000583 echo "#define CONFIG_WIN32 1" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +0000584elif test -f "/usr/include/byteswap.h" ; then
bellard67b915a2004-03-31 23:37:16 +0000585 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
586fi
bellard83fb7ad2004-07-05 21:25:26 +0000587if test "$darwin" = "yes" ; then
588 echo "CONFIG_DARWIN=yes" >> $config_mak
589 echo "#define CONFIG_DARWIN 1" >> $config_h
590fi
bellard67b915a2004-03-31 23:37:16 +0000591if test "$gdbstub" = "yes" ; then
592 echo "CONFIG_GDBSTUB=yes" >> $config_mak
593 echo "#define CONFIG_GDBSTUB 1" >> $config_h
594fi
bellard97a847b2003-08-10 21:36:04 +0000595if test "$gprof" = "yes" ; then
596 echo "TARGET_GPROF=yes" >> $config_mak
597 echo "#define HAVE_GPROF 1" >> $config_h
598fi
599if test "$static" = "yes" ; then
600 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +0000601 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +0000602fi
bellardc20709a2004-04-21 23:27:19 +0000603if test "$slirp" = "yes" ; then
604 echo "CONFIG_SLIRP=yes" >> $config_mak
605 echo "#define CONFIG_SLIRP 1" >> $config_h
606fi
bellardfb065182004-11-09 23:09:44 +0000607if test "$adlib" = "yes" ; then
608 echo "CONFIG_ADLIB=yes" >> $config_mak
609 echo "#define CONFIG_ADLIB 1" >> $config_h
610fi
611if test "$oss" = "yes" ; then
612 echo "CONFIG_OSS=yes" >> $config_mak
613 echo "#define CONFIG_OSS 1" >> $config_h
614fi
bellard1d14ffa2005-10-30 18:58:22 +0000615if test "$coreaudio" = "yes" ; then
616 echo "CONFIG_COREAUDIO=yes" >> $config_mak
617 echo "#define CONFIG_COREAUDIO 1" >> $config_h
618fi
619if test "$alsa" = "yes" ; then
620 echo "CONFIG_ALSA=yes" >> $config_mak
621 echo "#define CONFIG_ALSA 1" >> $config_h
622fi
623if test "$dsound" = "yes" ; then
624 echo "CONFIG_DSOUND=yes" >> $config_mak
625 echo "#define CONFIG_DSOUND 1" >> $config_h
626fi
bellard102a52e2004-11-14 19:57:29 +0000627if test "$fmod" = "yes" ; then
628 echo "CONFIG_FMOD=yes" >> $config_mak
629 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
630 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
631 echo "#define CONFIG_FMOD 1" >> $config_h
632fi
bellard97a847b2003-08-10 21:36:04 +0000633echo -n "VERSION=" >>$config_mak
634head $source_path/VERSION >>$config_mak
635echo "" >>$config_mak
636echo -n "#define QEMU_VERSION \"" >> $config_h
637head $source_path/VERSION >> $config_h
638echo "\"" >> $config_h
639
bellardc9ec1fe2005-02-10 21:55:30 +0000640if test $kqemu = "yes" ; then
641 echo "CONFIG_KQEMU=yes" >> $config_mak
bellard1026f132005-04-26 20:34:45 +0000642 if test $linux = "yes" ; then
643 echo "KERNEL_PATH=$kernel_path" >> $config_mak
644 if test $kbuild26 = "yes" ; then
645 echo "CONFIG_KBUILD26=yes" >> $config_mak
646 fi
bellardc9ec1fe2005-02-10 21:55:30 +0000647 fi
648fi
bellard97a847b2003-08-10 21:36:04 +0000649echo "SRC_PATH=$source_path" >> $config_mak
650echo "TARGET_DIRS=$target_list" >> $config_mak
651
bellard83fb7ad2004-07-05 21:25:26 +0000652# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +0000653if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +0000654 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +0000655 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +0000656 echo "#define _BSD 1" >> $config_h
657fi
658
bellard1d14ffa2005-10-30 18:58:22 +0000659for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +0000660
661target_dir="$target"
662config_mak=$target_dir/config.mak
663config_h=$target_dir/config.h
664target_cpu=`echo $target | cut -d '-' -f 1`
665target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +0000666[ "$target_cpu" = "armeb" ] && target_bigendian=yes
bellard1e43adf2003-09-30 20:54:24 +0000667[ "$target_cpu" = "sparc" ] && target_bigendian=yes
bellard64b3ab22005-01-30 22:43:42 +0000668[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +0000669[ "$target_cpu" = "ppc" ] && target_bigendian=yes
bellarda2458622005-07-23 22:39:53 +0000670[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
bellardd3258562005-07-02 15:37:12 +0000671[ "$target_cpu" = "mips" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +0000672target_softmmu="no"
673if expr $target : '.*-softmmu' > /dev/null ; then
674 target_softmmu="yes"
bellard7d132992003-03-06 23:23:54 +0000675fi
bellard997344f2003-10-27 21:10:39 +0000676target_user_only="no"
677if expr $target : '.*-user' > /dev/null ; then
678 target_user_only="yes"
679fi
bellardde83cd02003-06-15 20:25:43 +0000680
bellard97ccc682005-07-02 13:32:17 +0000681if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +0000682 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +0000683 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
684 echo "To build QEMU with graphical output configure with --disable-gfx-check"
685 echo "Note that this will disable all output from the virtual graphics card."
686 exit 1;
687fi
688
bellard7c1f25b2004-04-22 00:02:08 +0000689#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +0000690
691mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +0000692mkdir -p $target_dir/fpu
bellard808c4952004-12-19 23:33:47 +0000693if test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
bellard69de9272004-02-16 21:40:43 +0000694 mkdir -p $target_dir/nwfpe
695fi
bellarda7e61ed2004-04-22 21:46:47 +0000696if test "$target_user_only" = "no" ; then
697 mkdir -p $target_dir/slirp
698fi
bellard69de9272004-02-16 21:40:43 +0000699
bellard97a847b2003-08-10 21:36:04 +0000700ln -sf $source_path/Makefile.target $target_dir/Makefile
701
702echo "# Automatically generated by configure - do not modify" > $config_mak
703echo "/* Automatically generated by configure - do not modify */" > $config_h
704
705
706echo "include ../config-host.mak" >> $config_mak
707echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +0000708
709interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
710echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +0000711
712if test "$target_cpu" = "i386" ; then
713 echo "TARGET_ARCH=i386" >> $config_mak
714 echo "#define TARGET_ARCH \"i386\"" >> $config_h
715 echo "#define TARGET_I386 1" >> $config_h
bellard07f4ddb2005-04-23 17:44:28 +0000716 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
bellard824d5602005-02-12 18:58:00 +0000717 echo "#define USE_KQEMU 1" >> $config_h
718 fi
bellard808c4952004-12-19 23:33:47 +0000719elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
bellard97a847b2003-08-10 21:36:04 +0000720 echo "TARGET_ARCH=arm" >> $config_mak
721 echo "#define TARGET_ARCH \"arm\"" >> $config_h
722 echo "#define TARGET_ARM 1" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +0000723elif test "$target_cpu" = "sparc" ; then
724 echo "TARGET_ARCH=sparc" >> $config_mak
725 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
726 echo "#define TARGET_SPARC 1" >> $config_h
bellard64b3ab22005-01-30 22:43:42 +0000727elif test "$target_cpu" = "sparc64" ; then
728 echo "TARGET_ARCH=sparc64" >> $config_mak
729 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
730 echo "#define TARGET_SPARC 1" >> $config_h
731 echo "#define TARGET_SPARC64 1" >> $config_h
bellard67867302003-11-23 17:05:30 +0000732elif test "$target_cpu" = "ppc" ; then
733 echo "TARGET_ARCH=ppc" >> $config_mak
734 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
735 echo "#define TARGET_PPC 1" >> $config_h
bellarda2458622005-07-23 22:39:53 +0000736elif test "$target_cpu" = "ppc64" ; then
737 echo "TARGET_ARCH=ppc64" >> $config_mak
738 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
739 echo "#define TARGET_PPC 1" >> $config_h
740 echo "#define TARGET_PPC64 1" >> $config_h
bellard0b0babc2005-01-03 23:38:40 +0000741elif test "$target_cpu" = "x86_64" ; then
742 echo "TARGET_ARCH=x86_64" >> $config_mak
743 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
744 echo "#define TARGET_I386 1" >> $config_h
745 echo "#define TARGET_X86_64 1" >> $config_h
bellard07f4ddb2005-04-23 17:44:28 +0000746 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
747 echo "#define USE_KQEMU 1" >> $config_h
748 fi
bellardc20eb472005-12-06 21:42:55 +0000749elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
bellardd3258562005-07-02 15:37:12 +0000750 echo "TARGET_ARCH=mips" >> $config_mak
751 echo "#define TARGET_ARCH \"mips\"" >> $config_h
752 echo "#define TARGET_MIPS 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +0000753else
754 echo "Unsupported target CPU"
755 exit 1
756fi
757if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +0000758 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
759 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
760fi
761if test "$target_softmmu" = "yes" ; then
762 echo "CONFIG_SOFTMMU=yes" >> $config_mak
763 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +0000764fi
bellard997344f2003-10-27 21:10:39 +0000765if test "$target_user_only" = "yes" ; then
766 echo "CONFIG_USER_ONLY=yes" >> $config_mak
767 echo "#define CONFIG_USER_ONLY 1" >> $config_h
768fi
bellardde83cd02003-06-15 20:25:43 +0000769
bellard158142c2005-03-13 16:54:06 +0000770if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
771 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
772 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
773fi
bellard7c1f25b2004-04-22 00:02:08 +0000774# sdl defines
775
776if test "$target_user_only" = "no"; then
777 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
bellarddbb2c922004-10-24 22:17:47 +0000778 sdl1=$sdl_static
bellard7c1f25b2004-04-22 00:02:08 +0000779 else
bellarddbb2c922004-10-24 22:17:47 +0000780 sdl1=$sdl
781 fi
782 if test "$sdl1" = "yes" ; then
783 echo "#define CONFIG_SDL 1" >> $config_h
784 echo "CONFIG_SDL=yes" >> $config_mak
785 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
786 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
787 else
bellard7c1f25b2004-04-22 00:02:08 +0000788 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
789 fi
bellarddbb2c922004-10-24 22:17:47 +0000790 echo -n "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
791 if [ "${aa}" = "yes" ] ; then
792 echo -n " `aalib-config --cflags`" >> $config_mak ;
793 fi
794 echo "" >> $config_mak
bellard7c1f25b2004-04-22 00:02:08 +0000795 fi
bellard7c1f25b2004-04-22 00:02:08 +0000796fi
797
bellard5b0753e2005-03-01 21:37:28 +0000798if test "$cocoa" = "yes" ; then
799 echo "#define CONFIG_COCOA 1" >> $config_h
800 echo "CONFIG_COCOA=yes" >> $config_mak
801fi
802
bellard97a847b2003-08-10 21:36:04 +0000803done # for target in $targets
bellard7d132992003-03-06 23:23:54 +0000804
805# build tree in object directory if source path is different from current one
806if test "$source_path_used" = "yes" ; then
807 DIRS="tests"
808 FILES="Makefile tests/Makefile"
809 for dir in $DIRS ; do
810 mkdir -p $dir
811 done
812 for f in $FILES ; do
813 ln -sf $source_path/$f $f
814 done
815fi
bellard7d132992003-03-06 23:23:54 +0000816
bellard97a847b2003-08-10 21:36:04 +0000817rm -f $TMPO $TMPC $TMPE $TMPS