mips user emulation
[qemu] / configure
1 #!/bin/sh
2 #
3 # qemu configure script (c) 2003 Fabrice Bellard
4 #
5 # set temporary file name
6 if test ! -z "$TMPDIR" ; then
7     TMPDIR1="${TMPDIR}"
8 elif test ! -z "$TEMPDIR" ; then
9     TMPDIR1="${TEMPDIR}"
10 else
11     TMPDIR1="/tmp"
12 fi
13
14 TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15 TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16 TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17 TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18
19 # default parameters
20 prefix=""
21 interp_prefix="/usr/gnemul/qemu-%M"
22 static="no"
23 cross_prefix=""
24 cc="gcc"
25 host_cc="gcc"
26 ar="ar"
27 make="make"
28 strip="strip"
29 cpu=`uname -m`
30 target_list=""
31 case "$cpu" in
32   i386|i486|i586|i686|i86pc|BePC)
33     cpu="i386"
34   ;;
35   armv*b)
36     cpu="armv4b"
37   ;;
38   armv*l)
39     cpu="armv4l"
40   ;;
41   alpha)
42     cpu="alpha"
43   ;;
44   "Power Macintosh"|ppc|ppc64)
45     cpu="powerpc"
46   ;;
47   mips)
48     cpu="mips"
49   ;;
50   s390)
51     cpu="s390"
52   ;;
53   sparc)
54     cpu="sparc"
55   ;;
56   sparc64)
57     cpu="sparc64"
58   ;;
59   ia64)
60     cpu="ia64"
61   ;;
62   m68k)
63     cpu="m68k"
64   ;;
65   x86_64|amd64)
66     cpu="x86_64"
67   ;;
68   *)
69     cpu="unknown"
70   ;;
71 esac
72 gprof="no"
73 bigendian="no"
74 mingw32="no"
75 EXESUF=""
76 gdbstub="yes"
77 slirp="yes"
78 adlib="no"
79 oss="no"
80 dsound="no"
81 coreaudio="no"
82 alsa="no"
83 fmod="no"
84 fmod_lib=""
85 fmod_inc=""
86 linux="no"
87 kqemu="no"
88 kernel_path=""
89 cocoa="no"
90 check_gfx="yes"
91 check_gcc="yes"
92
93 # OS specific
94 targetos=`uname -s`
95 case $targetos in
96 CYGWIN*)
97 mingw32="yes"
98 CFLAGS="-O2 -mno-cygwin"
99 ;;
100 MINGW32*)
101 mingw32="yes"
102 ;;
103 FreeBSD)
104 bsd="yes"
105 oss="yes"
106 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
107     kqemu="yes"
108 fi
109 ;;
110 NetBSD)
111 bsd="yes"
112 oss="yes"
113 ;;
114 OpenBSD)
115 bsd="yes"
116 oss="yes"
117 ;;
118 Darwin)
119 bsd="yes"
120 darwin="yes"
121 ;;
122 *)
123 oss="yes"
124 linux="yes"
125 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
126     kqemu="yes"
127 fi
128 ;;
129 esac
130
131 if [ "$bsd" = "yes" ] ; then
132   if [ ! "$darwin" = "yes" ] ; then
133     make="gmake"
134   fi
135 fi
136
137 # find source path
138 # XXX: we assume an absolute path is given when launching configure,
139 # except in './configure' case.
140 source_path=${0%configure}
141 source_path=${source_path%/}
142 source_path_used="yes"
143 if test -z "$source_path" -o "$source_path" = "." ; then
144     source_path=`pwd`
145     source_path_used="no"
146 fi
147
148 for opt do
149   case "$opt" in
150   --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
151   ;;
152   --interp-prefix=*) interp_prefix=`echo $opt | cut -d '=' -f 2`
153   ;;
154   --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
155   ;;
156   --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
157   ;;
158   --cc=*) cc=`echo $opt | cut -d '=' -f 2`
159   ;;
160   --host-cc=*) host_cc=`echo $opt | cut -d '=' -f 2`
161   ;;
162   --make=*) make=`echo $opt | cut -d '=' -f 2`
163   ;;
164   --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
165   ;;
166   --extra-ldflags=*) LDFLAGS="${opt#--extra-ldflags=}"
167   ;;
168   --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
169   ;;
170   --target-list=*) target_list=${opt#--target-list=}
171   ;;
172   --enable-gprof) gprof="yes"
173   ;;
174   --static) static="yes"
175   ;;
176   --disable-sdl) sdl="no"
177   ;;
178   --enable-coreaudio) coreaudio="yes"
179   ;;
180   --enable-alsa) alsa="yes"
181   ;;
182   --enable-dsound) dsound="yes"
183   ;;
184   --enable-fmod) fmod="yes"
185   ;;
186   --fmod-lib=*) fmod_lib=${opt#--fmod-lib=}
187   ;;
188   --fmod-inc=*) fmod_inc=${opt#--fmod-inc=}
189   ;;
190   --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-"
191   ;;
192   --disable-slirp) slirp="no"
193   ;;
194   --enable-adlib) adlib="yes"
195   ;;
196   --disable-kqemu) kqemu="no"
197   ;;
198   --kernel-path=*) kernel_path=${opt#--kernel-path=}
199   ;;
200   --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
201   ;;
202   --disable-gfx-check) check_gfx="no"
203   ;;
204   --disable-gcc-check) check_gcc="no"
205   ;;
206   esac
207 done
208
209 # Checking for CFLAGS
210 if test -z "$CFLAGS"; then
211     CFLAGS="-O2"
212 fi
213
214 cc="${cross_prefix}${cc}"
215 ar="${cross_prefix}${ar}"
216 strip="${cross_prefix}${strip}"
217
218 if test "$mingw32" = "yes" ; then
219     linux="no"
220     EXESUF=".exe"
221     gdbstub="no"
222     oss="no"
223     if [ "$cpu" = "i386" ] ; then
224         kqemu="yes"
225     fi
226 fi
227
228 if test -z "$target_list" ; then
229 # these targets are portable
230     target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu arm-softmmu"
231 # the following are Linux specific
232     if [ "$linux" = "yes" ] ; then
233         target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user $target_list"
234     fi
235 else
236     target_list=$(echo "$target_list" | sed -e 's/,/ /g')
237 fi
238
239 if test -z "$cross_prefix" ; then
240
241 # ---
242 # big/little endian test
243 cat > $TMPC << EOF
244 #include <inttypes.h>
245 int main(int argc, char ** argv){
246         volatile uint32_t i=0x01234567;
247         return (*((uint8_t*)(&i))) == 0x67;
248 }
249 EOF
250
251 if $cc -o $TMPE $TMPC 2>/dev/null ; then
252 $TMPE && bigendian="yes"
253 else
254 echo big/little test failed
255 fi
256
257 else
258
259 # if cross compiling, cannot launch a program, so make a static guess
260 if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
261     bigendian="yes"
262 fi
263
264 fi
265
266 # host long bits test
267 hostlongbits="32"
268 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
269     hostlongbits="64"
270 fi
271
272 # check gcc options support
273 cat > $TMPC <<EOF
274 int main(void) {
275 }
276 EOF
277
278 have_gcc3_options="no"
279 if $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
280    have_gcc3_options="yes"
281 fi
282
283 # Check for gcc4
284 if test "$check_gcc" = "yes" ; then
285     cat > $TMPC <<EOF
286 #if __GNUC__ >= 4
287 #error gcc4
288 #endif
289 int main(){return 0;}
290 EOF
291     if ! $cc -o $TMPO $TMPC 2>/dev/null ; then
292         echo "ERROR: \"$cc\" looks like gcc 4.x"
293         echo "QEMU is known to have problems when compiled with gcc 4.x"
294         echo "It is recommended that you use gcc 3.x to build QEMU"
295         echo "To use this compiler anyway, configure with --disable-gcc-check"
296         exit 1;
297     fi
298 fi
299
300 ##########################################
301 # SDL probe
302
303 sdl_too_old=no
304
305 if test -z "$sdl" ; then
306
307 sdl_config="sdl-config"
308 sdl=no
309 sdl_static=no
310
311 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
312 # win32 cross compilation case
313     sdl_config="i386-mingw32msvc-sdl-config"
314     sdl=yes
315 else
316 # normal SDL probe
317 cat > $TMPC << EOF
318 #include <SDL.h>
319 #undef main /* We don't want SDL to override our main() */
320 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
321 EOF
322
323 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
324 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
325 if test "$_sdlversion" -lt 121 ; then
326 sdl_too_old=yes
327 else
328 sdl=yes
329 fi
330
331 # static link with sdl ?
332 if test "$sdl" = "yes" ; then
333 aa="no"
334 `$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
335 sdl_static_libs=`$sdl_config --static-libs`
336 if [ "$aa" = "yes" ] ; then
337   sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
338 fi
339
340 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
341   sdl_static=yes
342 fi
343
344 fi # static link
345
346 fi # sdl compile test
347
348 fi # cross compilation
349 fi # -z $sdl
350
351 if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
352 cat << EOF
353
354 Usage: configure [options]
355 Options: [defaults in brackets after descriptions]
356
357 EOF
358 echo "Standard options:"
359 echo "  --help                   print this message"
360 echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
361 echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
362 echo "                           use %M for cpu name [$interp_prefix]"
363 echo "  --target-list=LIST       set target list [$target_list]"
364 echo ""
365 echo "kqemu kernel acceleration support:"
366 echo "  --disable-kqemu          disable kqemu build"
367 echo "  --kernel-path=PATH       set the kernel path (configure probes it)"
368 echo ""
369 echo "Advanced options (experts only):"
370 echo "  --source-path=PATH       path of source code [$source_path]"
371 echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
372 echo "  --cc=CC                  use C compiler CC [$cc]"
373 echo "  --host-cc=CC             use C compiler CC [$cc] for dyngen etc."
374 echo "  --make=MAKE              use specified make [$make]"
375 echo "  --static                 enable static build [$static]"
376 echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
377 echo "  --enable-adlib           enable Adlib emulation"
378 echo "  --enable-coreaudio       enable Coreaudio audio driver"
379 echo "  --enable-alsa            enable ALSA audio driver"
380 echo "  --enable-fmod            enable FMOD audio driver"
381 echo "  --enabled-dsound         enable DirectSound audio driver"
382 echo "  --fmod-lib               path to FMOD library"
383 echo "  --fmod-inc               path to FMOD includes"
384 echo ""
385 echo "NOTE: The object files are build at the place where configure is launched"
386 exit 1
387 fi
388
389 if test "$mingw32" = "yes" ; then
390 if test -z "$prefix" ; then
391     prefix="/c/Program Files/Qemu"
392 fi
393 mandir="$prefix"
394 datadir="$prefix"
395 docdir="$prefix"
396 bindir="$prefix"
397 else
398 if test -z "$prefix" ; then
399     prefix="/usr/local"
400 fi
401 mandir="$prefix/share/man"
402 datadir="$prefix/share/qemu"
403 docdir="$prefix/share/doc/qemu"
404 bindir="$prefix/bin"
405 fi
406
407 # kqemu support
408 if test $kqemu = "yes" ; then
409     # test if the source code is installed
410     if test '!' -f "kqemu/Makefile" ; then
411         kqemu="no"
412     fi
413 fi
414
415 # Linux specific kqemu configuration
416 if test $kqemu = "yes" -a $linux = "yes" ; then
417 # find the kernel path
418 if test -z "$kernel_path" ; then
419 kernel_version=`uname -r`
420 kernel_path="/lib/modules/$kernel_version/build"
421 if test '!' -d "$kernel_path/include" ; then
422     kernel_path="/usr/src/linux"
423     if test '!' -d "$kernel_path/include" ; then
424         echo "Could not find kernel includes in /lib/modules or /usr/src/linux - cannot build the kqemu module"
425         kqemu="no"
426     fi
427 fi
428 fi
429
430 if test $kqemu = "yes" ; then
431
432 # test that the kernel config is present
433 if test '!' -f "$kernel_path/Makefile" ; then
434     echo "No Makefile file present in $kernel_path - kqemu cannot be built"
435     kqemu="no"
436 fi
437
438 # find build system (2.6 or legacy)
439 kbuild26="yes"
440 if grep -q "PATCHLEVEL = 4" $kernel_path/Makefile ; then
441 kbuild26="no"
442 fi
443
444 fi # kqemu
445
446 fi # kqemu and linux
447
448
449 echo "Install prefix    $prefix"
450 echo "BIOS directory    $datadir"
451 echo "binary directory  $bindir"
452 if test "$mingw32" = "no" ; then
453 echo "Manual directory  $mandir"
454 echo "ELF interp prefix $interp_prefix"
455 fi
456 echo "Source path       $source_path"
457 echo "C compiler        $cc"
458 echo "Host C compiler   $host_cc"
459 echo "make              $make"
460 echo "host CPU          $cpu"
461 echo "host big endian   $bigendian"
462 echo "target list       $target_list"
463 echo "gprof enabled     $gprof"
464 echo "static build      $static"
465 if test "$darwin" = "yes" ; then
466     echo "Cocoa support     $cocoa"
467 fi
468 echo "SDL support       $sdl"
469 if test "$sdl" != "no" ; then
470     echo "SDL static link   $sdl_static"
471 fi
472 echo "mingw32 support   $mingw32"
473 echo "Adlib support     $adlib"
474 echo "CoreAudio support $coreaudio"
475 echo "ALSA support      $alsa"
476 echo "DSound support    $dsound"
477 echo -n "FMOD support      $fmod"
478 if test "$fmod" = "yes"; then
479     if test -z $fmod_lib || test -z $fmod_inc; then
480         echo
481         echo "Error: You must specify path to FMOD library and headers"
482         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
483         echo
484         exit 1
485     fi
486     echo -n " (lib='$fmod_lib' include='$fmod_inc')"
487 fi
488 echo ""
489 echo "kqemu support     $kqemu"
490 if test $kqemu = "yes" -a $linux = "yes" ; then
491 echo ""
492 echo "KQEMU Linux module configuration:"
493 echo "kernel sources    $kernel_path"
494 echo -n "kbuild type       "
495 if test $kbuild26 = "yes"; then
496 echo "2.6"
497 else
498 echo "2.4"
499 fi
500 fi
501
502 if test $sdl_too_old = "yes"; then
503 echo "-> Your SDL version is too old - please upgrade to have SDL support"
504 fi
505 #if test "$sdl_static" = "no"; then
506 #  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
507 #fi
508
509 config_mak="config-host.mak"
510 config_h="config-host.h"
511
512 #echo "Creating $config_mak and $config_h"
513
514 echo "# Automatically generated by configure - do not modify" > $config_mak
515 echo "/* Automatically generated by configure - do not modify */" > $config_h
516
517 echo "prefix=$prefix" >> $config_mak
518 echo "bindir=$bindir" >> $config_mak
519 echo "mandir=$mandir" >> $config_mak
520 echo "datadir=$datadir" >> $config_mak
521 echo "docdir=$docdir" >> $config_mak
522 echo "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
523 echo "MAKE=$make" >> $config_mak
524 echo "CC=$cc" >> $config_mak
525 if test "$have_gcc3_options" = "yes" ; then
526   echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
527 fi
528 echo "HOST_CC=$host_cc" >> $config_mak
529 echo "AR=$ar" >> $config_mak
530 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
531 echo "CFLAGS=$CFLAGS" >> $config_mak
532 echo "LDFLAGS=$LDFLAGS" >> $config_mak
533 echo "EXESUF=$EXESUF" >> $config_mak
534 if test "$cpu" = "i386" ; then
535   echo "ARCH=i386" >> $config_mak
536   echo "#define HOST_I386 1" >> $config_h
537 elif test "$cpu" = "x86_64" ; then
538   echo "ARCH=x86_64" >> $config_mak
539   echo "#define HOST_X86_64 1" >> $config_h
540 elif test "$cpu" = "armv4b" ; then
541   echo "ARCH=arm" >> $config_mak
542   echo "#define HOST_ARM 1" >> $config_h
543 elif test "$cpu" = "armv4l" ; then
544   echo "ARCH=arm" >> $config_mak
545   echo "#define HOST_ARM 1" >> $config_h
546 elif test "$cpu" = "powerpc" ; then
547   echo "ARCH=ppc" >> $config_mak
548   echo "#define HOST_PPC 1" >> $config_h
549 elif test "$cpu" = "mips" ; then
550   echo "ARCH=mips" >> $config_mak
551   echo "#define HOST_MIPS 1" >> $config_h
552 elif test "$cpu" = "s390" ; then
553   echo "ARCH=s390" >> $config_mak
554   echo "#define HOST_S390 1" >> $config_h
555 elif test "$cpu" = "alpha" ; then
556   echo "ARCH=alpha" >> $config_mak
557   echo "#define HOST_ALPHA 1" >> $config_h
558 elif test "$cpu" = "sparc" ; then
559   echo "ARCH=sparc" >> $config_mak
560   echo "#define HOST_SPARC 1" >> $config_h
561 elif test "$cpu" = "sparc64" ; then
562   echo "ARCH=sparc64" >> $config_mak
563   echo "#define HOST_SPARC64 1" >> $config_h
564 elif test "$cpu" = "ia64" ; then
565   echo "ARCH=ia64" >> $config_mak
566   echo "#define HOST_IA64 1" >> $config_h
567 elif test "$cpu" = "m68k" ; then
568   echo "ARCH=m68k" >> $config_mak
569   echo "#define HOST_M68K 1" >> $config_h
570 else
571   echo "Unsupported CPU"
572   exit 1
573 fi
574 if test "$bigendian" = "yes" ; then
575   echo "WORDS_BIGENDIAN=yes" >> $config_mak
576   echo "#define WORDS_BIGENDIAN 1" >> $config_h
577 fi
578 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
579 if test "$mingw32" = "yes" ; then
580   echo "CONFIG_WIN32=yes" >> $config_mak
581   echo "#define CONFIG_WIN32 1" >> $config_h
582 elif test -f "/usr/include/byteswap.h" ; then
583   echo "#define HAVE_BYTESWAP_H 1" >> $config_h
584 fi
585 if test "$darwin" = "yes" ; then
586   echo "CONFIG_DARWIN=yes" >> $config_mak
587   echo "#define CONFIG_DARWIN 1" >> $config_h
588 fi
589 if test "$gdbstub" = "yes" ; then
590   echo "CONFIG_GDBSTUB=yes" >> $config_mak
591   echo "#define CONFIG_GDBSTUB 1" >> $config_h
592 fi
593 if test "$gprof" = "yes" ; then
594   echo "TARGET_GPROF=yes" >> $config_mak
595   echo "#define HAVE_GPROF 1" >> $config_h
596 fi
597 if test "$static" = "yes" ; then
598   echo "CONFIG_STATIC=yes" >> $config_mak
599   echo "#define CONFIG_STATIC 1" >> $config_h
600 fi
601 if test "$slirp" = "yes" ; then
602   echo "CONFIG_SLIRP=yes" >> $config_mak
603   echo "#define CONFIG_SLIRP 1" >> $config_h
604 fi
605 if test "$adlib" = "yes" ; then
606   echo "CONFIG_ADLIB=yes" >> $config_mak
607   echo "#define CONFIG_ADLIB 1" >> $config_h
608 fi
609 if test "$oss" = "yes" ; then
610   echo "CONFIG_OSS=yes" >> $config_mak
611   echo "#define CONFIG_OSS 1" >> $config_h
612 fi
613 if test "$coreaudio" = "yes" ; then
614   echo "CONFIG_COREAUDIO=yes" >> $config_mak
615   echo "#define CONFIG_COREAUDIO 1" >> $config_h
616 fi
617 if test "$alsa" = "yes" ; then
618   echo "CONFIG_ALSA=yes" >> $config_mak
619   echo "#define CONFIG_ALSA 1" >> $config_h
620 fi
621 if test "$dsound" = "yes" ; then
622   echo "CONFIG_DSOUND=yes" >> $config_mak
623   echo "#define CONFIG_DSOUND 1" >> $config_h
624 fi
625 if test "$fmod" = "yes" ; then
626   echo "CONFIG_FMOD=yes" >> $config_mak
627   echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
628   echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
629   echo "#define CONFIG_FMOD 1" >> $config_h
630 fi
631 echo -n "VERSION=" >>$config_mak
632 head $source_path/VERSION >>$config_mak
633 echo "" >>$config_mak
634 echo -n "#define QEMU_VERSION \"" >> $config_h
635 head $source_path/VERSION >> $config_h
636 echo "\"" >> $config_h
637
638 if test $kqemu = "yes" ; then
639   echo "CONFIG_KQEMU=yes" >> $config_mak
640   if test $linux = "yes" ; then
641     echo "KERNEL_PATH=$kernel_path" >> $config_mak
642     if test $kbuild26 = "yes" ; then
643       echo "CONFIG_KBUILD26=yes" >> $config_mak
644     fi
645   fi
646 fi
647 echo "SRC_PATH=$source_path" >> $config_mak
648 echo "TARGET_DIRS=$target_list" >> $config_mak
649
650 # XXX: suppress that
651 if [ "$bsd" = "yes" ] ; then
652   echo "#define O_LARGEFILE 0" >> $config_h
653   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
654   echo "#define _BSD 1" >> $config_h
655 fi
656
657 for target in $target_list; do
658
659 target_dir="$target"
660 config_mak=$target_dir/config.mak
661 config_h=$target_dir/config.h
662 target_cpu=`echo $target | cut -d '-' -f 1`
663 target_bigendian="no"
664 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
665 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
666 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
667 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
668 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
669 [ "$target_cpu" = "mips" ] && target_bigendian=yes
670 target_softmmu="no"
671 if expr $target : '.*-softmmu' > /dev/null ; then
672   target_softmmu="yes"
673 fi
674 target_user_only="no"
675 if expr $target : '.*-user' > /dev/null ; then
676   target_user_only="yes"
677 fi
678
679 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
680         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
681     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
682     echo "To build QEMU with graphical output configure with --disable-gfx-check"
683     echo "Note that this will disable all output from the virtual graphics card."
684     exit 1;
685 fi
686
687 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
688
689 mkdir -p $target_dir
690 mkdir -p $target_dir/fpu
691 if test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
692   mkdir -p $target_dir/nwfpe
693 fi
694 if test "$target_user_only" = "no" ; then
695   mkdir -p $target_dir/slirp
696 fi
697
698 ln -sf $source_path/Makefile.target $target_dir/Makefile
699
700 echo "# Automatically generated by configure - do not modify" > $config_mak
701 echo "/* Automatically generated by configure - do not modify */" > $config_h
702
703
704 echo "include ../config-host.mak" >> $config_mak
705 echo "#include \"../config-host.h\"" >> $config_h
706
707 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
708 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
709
710 if test "$target_cpu" = "i386" ; then
711   echo "TARGET_ARCH=i386" >> $config_mak
712   echo "#define TARGET_ARCH \"i386\"" >> $config_h
713   echo "#define TARGET_I386 1" >> $config_h
714   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
715     echo "#define USE_KQEMU 1" >> $config_h
716   fi
717 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
718   echo "TARGET_ARCH=arm" >> $config_mak
719   echo "#define TARGET_ARCH \"arm\"" >> $config_h
720   echo "#define TARGET_ARM 1" >> $config_h
721 elif test "$target_cpu" = "sparc" ; then
722   echo "TARGET_ARCH=sparc" >> $config_mak
723   echo "#define TARGET_ARCH \"sparc\"" >> $config_h
724   echo "#define TARGET_SPARC 1" >> $config_h
725 elif test "$target_cpu" = "sparc64" ; then
726   echo "TARGET_ARCH=sparc64" >> $config_mak
727   echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
728   echo "#define TARGET_SPARC 1" >> $config_h
729   echo "#define TARGET_SPARC64 1" >> $config_h
730 elif test "$target_cpu" = "ppc" ; then
731   echo "TARGET_ARCH=ppc" >> $config_mak
732   echo "#define TARGET_ARCH \"ppc\"" >> $config_h
733   echo "#define TARGET_PPC 1" >> $config_h
734 elif test "$target_cpu" = "ppc64" ; then
735   echo "TARGET_ARCH=ppc64" >> $config_mak
736   echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
737   echo "#define TARGET_PPC 1" >> $config_h
738   echo "#define TARGET_PPC64 1" >> $config_h
739 elif test "$target_cpu" = "x86_64" ; then
740   echo "TARGET_ARCH=x86_64" >> $config_mak
741   echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
742   echo "#define TARGET_I386 1" >> $config_h
743   echo "#define TARGET_X86_64 1" >> $config_h
744   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
745     echo "#define USE_KQEMU 1" >> $config_h
746   fi
747 elif test "$target_cpu" = "mips" ; then
748   echo "TARGET_ARCH=mips" >> $config_mak
749   echo "#define TARGET_ARCH \"mips\"" >> $config_h
750   echo "#define TARGET_MIPS 1" >> $config_h
751 else
752   echo "Unsupported target CPU"
753   exit 1
754 fi
755 if test "$target_bigendian" = "yes" ; then
756   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
757   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
758 fi
759 if test "$target_softmmu" = "yes" ; then
760   echo "CONFIG_SOFTMMU=yes" >> $config_mak
761   echo "#define CONFIG_SOFTMMU 1" >> $config_h
762 fi
763 if test "$target_user_only" = "yes" ; then
764   echo "CONFIG_USER_ONLY=yes" >> $config_mak
765   echo "#define CONFIG_USER_ONLY 1" >> $config_h
766 fi
767
768 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
769   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
770   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
771 fi
772 # sdl defines
773
774 if test "$target_user_only" = "no"; then
775     if test "$target_softmmu" = "no" -o "$static" = "yes"; then
776         sdl1=$sdl_static
777     else
778         sdl1=$sdl
779     fi
780     if test "$sdl1" = "yes" ; then
781         echo "#define CONFIG_SDL 1" >> $config_h
782         echo "CONFIG_SDL=yes" >> $config_mak
783         if test "$target_softmmu" = "no" -o "$static" = "yes"; then
784             echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
785         else
786             echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
787         fi
788         echo -n "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
789         if [ "${aa}" = "yes" ] ; then
790             echo -n " `aalib-config --cflags`" >> $config_mak ;
791         fi
792         echo "" >> $config_mak
793     fi
794 fi
795
796 if test "$cocoa" = "yes" ; then
797     echo "#define CONFIG_COCOA 1" >> $config_h
798     echo "CONFIG_COCOA=yes" >> $config_mak
799 fi
800
801 done # for target in $targets
802
803 # build tree in object directory if source path is different from current one
804 if test "$source_path_used" = "yes" ; then
805     DIRS="tests"
806     FILES="Makefile tests/Makefile"
807     for dir in $DIRS ; do
808             mkdir -p $dir
809     done
810     for f in $FILES ; do
811         ln -sf $source_path/$f $f
812     done
813 fi
814
815 rm -f $TMPO $TMPC $TMPE $TMPS