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