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