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