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