Solaris port (Ben Taylor)
[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 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 "$opt" : '[^=]*=\(.*\)'`
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 [ -z `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   soltexi2html=`which texi2html 2> /dev/null | /usr/bin/grep -v "no texi2html in"`
345   if test -z "$soltexi2html" ; then
346     echo "Error: No path includes texi2html."
347     if test -f /usr/sfw/bin/texi2html ; then
348       echo "Add /usr/sfw/bin to your path and rerun configure"
349     else
350       echo "Add the directory holding the texi2html to your path and rerun configure"
351     fi
352     exit 1
353   fi
354   sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
355   if test -z "$sol_ar" ; then
356     echo "Error: No path includes ar"
357     if test -f /usr/ccs/bin/ar ; then
358       echo "Add /usr/ccs/bin to your path and rerun configure"
359     fi
360     exit 1
361   fi
362 fi 
363
364
365 if test -z "$target_list" ; then
366 # these targets are portable
367     if [ "$softmmu" = "yes" ] ; then
368         target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu"
369     fi
370 # the following are Linux specific
371     if [ "$user" = "yes" ] ; then
372         target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user mipsel-user $target_list"
373     fi
374 else
375     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
376 fi
377 if test -z "$target_list" ; then
378     echo "No targets enabled"
379     exit 1
380 fi
381
382 if test -z "$cross_prefix" ; then
383
384 # ---
385 # big/little endian test
386 cat > $TMPC << EOF
387 #include <inttypes.h>
388 int main(int argc, char ** argv){
389         volatile uint32_t i=0x01234567;
390         return (*((uint8_t*)(&i))) == 0x67;
391 }
392 EOF
393
394 if $cc -o $TMPE $TMPC 2>/dev/null ; then
395 $TMPE && bigendian="yes"
396 else
397 echo big/little test failed
398 fi
399
400 else
401
402 # if cross compiling, cannot launch a program, so make a static guess
403 if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
404     bigendian="yes"
405 fi
406
407 fi
408
409 # host long bits test
410 hostlongbits="32"
411 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
412     hostlongbits="64"
413 fi
414
415 # check gcc options support
416 cat > $TMPC <<EOF
417 int main(void) {
418 }
419 EOF
420
421 have_gcc3_options="no"
422 if $cc -fno-reorder-blocks -fno-optimize-sibling-calls -o $TMPO $TMPC 2> /dev/null ; then
423    have_gcc3_options="yes"
424 fi
425
426 # Check for gcc4, error if pre-gcc4 
427 if test "$check_gcc" = "yes" ; then
428     cat > $TMPC <<EOF
429 #if __GNUC__ < 4
430 #error gcc3
431 #endif
432 int main(){return 0;}
433 EOF
434     if $cc -o $TMPO $TMPC 2>/dev/null ; then
435         echo "ERROR: \"$cc\" looks like gcc 4.x"
436         echo "QEMU is known to have problems when compiled with gcc 4.x"
437         echo "It is recommended that you use gcc 3.x to build QEMU"
438         echo "To use this compiler anyway, configure with --disable-gcc-check"
439         exit 1;
440     fi
441 fi
442
443 ##########################################
444 # SDL probe
445
446 sdl_too_old=no
447
448 if test -z "$sdl" ; then
449
450 sdl_config="sdl-config"
451 sdl=no
452 sdl_static=no
453
454 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
455 # win32 cross compilation case
456     sdl_config="i386-mingw32msvc-sdl-config"
457     sdl=yes
458 else
459 # normal SDL probe
460 cat > $TMPC << EOF
461 #include <SDL.h>
462 #undef main /* We don't want SDL to override our main() */
463 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
464 EOF
465
466 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
467 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
468 if test "$_sdlversion" -lt 121 ; then
469 sdl_too_old=yes
470 else
471 sdl=yes
472 fi
473
474 # static link with sdl ?
475 if test "$sdl" = "yes" ; then
476 aa="no"
477 `$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
478 sdl_static_libs=`$sdl_config --static-libs`
479 if [ "$aa" = "yes" ] ; then
480   sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
481 fi
482
483 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
484   sdl_static=yes
485 fi
486
487 fi # static link
488
489 fi # sdl compile test
490
491 fi # cross compilation
492 fi # -z $sdl
493
494 # Check if tools are available to build documentation.
495 if [ ! -z `which texi2html` ] && [ ! -z `which pod2man` ]; then
496   build_docs="yes"
497 fi
498
499 if test "$mingw32" = "yes" ; then
500 if test -z "$prefix" ; then
501     prefix="/c/Program Files/Qemu"
502 fi
503 mandir="$prefix"
504 datadir="$prefix"
505 docdir="$prefix"
506 bindir="$prefix"
507 else
508 if test -z "$prefix" ; then
509     prefix="/usr/local"
510 fi
511 mandir="$prefix/share/man"
512 datadir="$prefix/share/qemu"
513 docdir="$prefix/share/doc/qemu"
514 bindir="$prefix/bin"
515 fi
516
517 echo "Install prefix    $prefix"
518 echo "BIOS directory    $datadir"
519 echo "binary directory  $bindir"
520 if test "$mingw32" = "no" ; then
521 echo "Manual directory  $mandir"
522 echo "ELF interp prefix $interp_prefix"
523 fi
524 echo "Source path       $source_path"
525 echo "C compiler        $cc"
526 echo "Host C compiler   $host_cc"
527 echo "make              $make"
528 echo "install           $install"
529 echo "host CPU          $cpu"
530 echo "host big endian   $bigendian"
531 echo "target list       $target_list"
532 echo "gprof enabled     $gprof"
533 echo "profiler          $profiler"
534 echo "static build      $static"
535 if test "$darwin" = "yes" ; then
536     echo "Cocoa support     $cocoa"
537 fi
538 echo "SDL support       $sdl"
539 if test "$sdl" != "no" ; then
540     echo "SDL static link   $sdl_static"
541 fi
542 echo "mingw32 support   $mingw32"
543 echo "Adlib support     $adlib"
544 echo "CoreAudio support $coreaudio"
545 echo "ALSA support      $alsa"
546 echo "DSound support    $dsound"
547 if test "$fmod" = "yes"; then
548     if test -z $fmod_lib || test -z $fmod_inc; then
549         echo
550         echo "Error: You must specify path to FMOD library and headers"
551         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
552         echo
553         exit 1
554     fi
555     fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
556 else
557     fmod_support=""
558 fi
559 echo "FMOD support      $fmod $fmod_support"
560 echo "kqemu support     $kqemu"
561 echo "Documentation     $build_docs"
562
563 if test $sdl_too_old = "yes"; then
564 echo "-> Your SDL version is too old - please upgrade to have SDL support"
565 fi
566 #if test "$sdl_static" = "no"; then
567 #  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
568 #fi
569 config_mak="config-host.mak"
570 config_h="config-host.h"
571
572 #echo "Creating $config_mak and $config_h"
573
574 echo "# Automatically generated by configure - do not modify" > $config_mak
575 echo "# Configured with: $0 $@" >> $config_mak
576 echo "/* Automatically generated by configure - do not modify */" > $config_h
577
578 echo "prefix=$prefix" >> $config_mak
579 echo "bindir=$bindir" >> $config_mak
580 echo "mandir=$mandir" >> $config_mak
581 echo "datadir=$datadir" >> $config_mak
582 echo "docdir=$docdir" >> $config_mak
583 echo "#define CONFIG_QEMU_SHAREDIR \"$datadir\"" >> $config_h
584 echo "MAKE=$make" >> $config_mak
585 echo "INSTALL=$install" >> $config_mak
586 echo "CC=$cc" >> $config_mak
587 if test "$have_gcc3_options" = "yes" ; then
588   echo "HAVE_GCC3_OPTIONS=yes" >> $config_mak
589 fi
590 echo "HOST_CC=$host_cc" >> $config_mak
591 echo "AR=$ar" >> $config_mak
592 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
593 echo "CFLAGS=$CFLAGS" >> $config_mak
594 echo "LDFLAGS=$LDFLAGS" >> $config_mak
595 echo "EXESUF=$EXESUF" >> $config_mak
596 if test "$cpu" = "i386" ; then
597   echo "ARCH=i386" >> $config_mak
598   echo "#define HOST_I386 1" >> $config_h
599 elif test "$cpu" = "x86_64" ; then
600   echo "ARCH=x86_64" >> $config_mak
601   echo "#define HOST_X86_64 1" >> $config_h
602 elif test "$cpu" = "armv4b" ; then
603   echo "ARCH=arm" >> $config_mak
604   echo "#define HOST_ARM 1" >> $config_h
605 elif test "$cpu" = "armv4l" ; then
606   echo "ARCH=arm" >> $config_mak
607   echo "#define HOST_ARM 1" >> $config_h
608 elif test "$cpu" = "powerpc" ; then
609   echo "ARCH=ppc" >> $config_mak
610   echo "#define HOST_PPC 1" >> $config_h
611 elif test "$cpu" = "mips" ; then
612   echo "ARCH=mips" >> $config_mak
613   echo "#define HOST_MIPS 1" >> $config_h
614 elif test "$cpu" = "s390" ; then
615   echo "ARCH=s390" >> $config_mak
616   echo "#define HOST_S390 1" >> $config_h
617 elif test "$cpu" = "alpha" ; then
618   echo "ARCH=alpha" >> $config_mak
619   echo "#define HOST_ALPHA 1" >> $config_h
620 elif test "$cpu" = "sparc" ; then
621   echo "ARCH=sparc" >> $config_mak
622   echo "#define HOST_SPARC 1" >> $config_h
623 elif test "$cpu" = "sparc64" ; then
624   echo "ARCH=sparc64" >> $config_mak
625   echo "#define HOST_SPARC64 1" >> $config_h
626 elif test "$cpu" = "ia64" ; then
627   echo "ARCH=ia64" >> $config_mak
628   echo "#define HOST_IA64 1" >> $config_h
629 elif test "$cpu" = "m68k" ; then
630   echo "ARCH=m68k" >> $config_mak
631   echo "#define HOST_M68K 1" >> $config_h
632 else
633   echo "Unsupported CPU"
634   exit 1
635 fi
636 if test "$bigendian" = "yes" ; then
637   echo "WORDS_BIGENDIAN=yes" >> $config_mak
638   echo "#define WORDS_BIGENDIAN 1" >> $config_h
639 fi
640 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
641 if test "$mingw32" = "yes" ; then
642   echo "CONFIG_WIN32=yes" >> $config_mak
643   echo "#define CONFIG_WIN32 1" >> $config_h
644 elif test -f "/usr/include/byteswap.h" ; then
645   echo "#define HAVE_BYTESWAP_H 1" >> $config_h
646 fi
647 if test "$darwin" = "yes" ; then
648   echo "CONFIG_DARWIN=yes" >> $config_mak
649   echo "#define CONFIG_DARWIN 1" >> $config_h
650 fi
651 if test "$solaris" = "yes" ; then
652   echo "CONFIG_SOLARIS=yes" >> $config_mak
653   if test "$presolaris10" = "yes" ; then
654     echo "#define _PRESOLARIS10 1" >> $config_h
655   fi
656 fi
657 if test "$gdbstub" = "yes" ; then
658   echo "CONFIG_GDBSTUB=yes" >> $config_mak
659   echo "#define CONFIG_GDBSTUB 1" >> $config_h
660 fi
661 if test "$gprof" = "yes" ; then
662   echo "TARGET_GPROF=yes" >> $config_mak
663   echo "#define HAVE_GPROF 1" >> $config_h
664 fi
665 if test "$static" = "yes" ; then
666   echo "CONFIG_STATIC=yes" >> $config_mak
667   echo "#define CONFIG_STATIC 1" >> $config_h
668 fi
669 if test $profiler = "yes" ; then
670   echo "#define CONFIG_PROFILER 1" >> $config_h
671 fi
672 if test "$slirp" = "yes" ; then
673   echo "CONFIG_SLIRP=yes" >> $config_mak
674   echo "#define CONFIG_SLIRP 1" >> $config_h
675 fi
676 if test "$adlib" = "yes" ; then
677   echo "CONFIG_ADLIB=yes" >> $config_mak
678   echo "#define CONFIG_ADLIB 1" >> $config_h
679 fi
680 if test "$oss" = "yes" ; then
681   echo "CONFIG_OSS=yes" >> $config_mak
682   echo "#define CONFIG_OSS 1" >> $config_h
683 fi
684 if test "$coreaudio" = "yes" ; then
685   echo "CONFIG_COREAUDIO=yes" >> $config_mak
686   echo "#define CONFIG_COREAUDIO 1" >> $config_h
687 fi
688 if test "$alsa" = "yes" ; then
689   echo "CONFIG_ALSA=yes" >> $config_mak
690   echo "#define CONFIG_ALSA 1" >> $config_h
691 fi
692 if test "$dsound" = "yes" ; then
693   echo "CONFIG_DSOUND=yes" >> $config_mak
694   echo "#define CONFIG_DSOUND 1" >> $config_h
695 fi
696 if test "$fmod" = "yes" ; then
697   echo "CONFIG_FMOD=yes" >> $config_mak
698   echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
699   echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
700   echo "#define CONFIG_FMOD 1" >> $config_h
701 fi
702 qemu_version=`head $source_path/VERSION`
703 echo "VERSION=$qemu_version" >>$config_mak
704 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
705
706 echo "SRC_PATH=$source_path" >> $config_mak
707 if [ "$source_path_used" = "yes" ]; then
708   echo "VPATH=$source_path" >> $config_mak
709 fi
710 echo "TARGET_DIRS=$target_list" >> $config_mak
711 if [ "$build_docs" = "yes" ] ; then
712   echo "BUILD_DOCS=yes" >> $config_mak
713 fi
714
715 # XXX: suppress that
716 if [ "$bsd" = "yes" ] ; then
717   echo "#define O_LARGEFILE 0" >> $config_h
718   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
719   echo "#define _BSD 1" >> $config_h
720 fi
721
722 for target in $target_list; do
723 target_dir="$target"
724 config_mak=$target_dir/config.mak
725 config_h=$target_dir/config.h
726 target_cpu=`echo $target | cut -d '-' -f 1`
727 target_bigendian="no"
728 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
729 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
730 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
731 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
732 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
733 [ "$target_cpu" = "mips" ] && target_bigendian=yes
734 target_softmmu="no"
735 if expr $target : '.*-softmmu' > /dev/null ; then
736   target_softmmu="yes"
737 fi
738 target_user_only="no"
739 if expr $target : '.*-user' > /dev/null ; then
740   target_user_only="yes"
741 fi
742
743 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
744         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
745     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
746     echo "To build QEMU without graphical output configure with --disable-gfx-check"
747     echo "Note that this will disable all output from the virtual graphics card."
748     exit 1;
749 fi
750
751 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
752
753 mkdir -p $target_dir
754 mkdir -p $target_dir/fpu
755 if test "$target" = "arm-user" -o "$target" = "armeb-user" ; then
756   mkdir -p $target_dir/nwfpe
757 fi
758 if test "$target_user_only" = "no" ; then
759   mkdir -p $target_dir/slirp
760 fi
761
762 #
763 # don't use ln -sf as not all "ln -sf" over write the file/link
764 #
765 rm -f $target_dir/Makefile
766 ln -s $source_path/Makefile.target $target_dir/Makefile
767
768
769 echo "# Automatically generated by configure - do not modify" > $config_mak
770 echo "/* Automatically generated by configure - do not modify */" > $config_h
771
772
773 echo "include ../config-host.mak" >> $config_mak
774 echo "#include \"../config-host.h\"" >> $config_h
775
776 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
777 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
778
779 if test "$target_cpu" = "i386" ; then
780   echo "TARGET_ARCH=i386" >> $config_mak
781   echo "#define TARGET_ARCH \"i386\"" >> $config_h
782   echo "#define TARGET_I386 1" >> $config_h
783   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
784     echo "#define USE_KQEMU 1" >> $config_h
785   fi
786 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
787   echo "TARGET_ARCH=arm" >> $config_mak
788   echo "#define TARGET_ARCH \"arm\"" >> $config_h
789   echo "#define TARGET_ARM 1" >> $config_h
790 elif test "$target_cpu" = "sparc" ; then
791   echo "TARGET_ARCH=sparc" >> $config_mak
792   echo "#define TARGET_ARCH \"sparc\"" >> $config_h
793   echo "#define TARGET_SPARC 1" >> $config_h
794 elif test "$target_cpu" = "sparc64" ; then
795   echo "TARGET_ARCH=sparc64" >> $config_mak
796   echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
797   echo "#define TARGET_SPARC 1" >> $config_h
798   echo "#define TARGET_SPARC64 1" >> $config_h
799 elif test "$target_cpu" = "ppc" ; then
800   echo "TARGET_ARCH=ppc" >> $config_mak
801   echo "#define TARGET_ARCH \"ppc\"" >> $config_h
802   echo "#define TARGET_PPC 1" >> $config_h
803 elif test "$target_cpu" = "ppc64" ; then
804   echo "TARGET_ARCH=ppc64" >> $config_mak
805   echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
806   echo "#define TARGET_PPC 1" >> $config_h
807   echo "#define TARGET_PPC64 1" >> $config_h
808 elif test "$target_cpu" = "x86_64" ; then
809   echo "TARGET_ARCH=x86_64" >> $config_mak
810   echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
811   echo "#define TARGET_I386 1" >> $config_h
812   echo "#define TARGET_X86_64 1" >> $config_h
813   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
814     echo "#define USE_KQEMU 1" >> $config_h
815   fi
816 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
817   echo "TARGET_ARCH=mips" >> $config_mak
818   echo "#define TARGET_ARCH \"mips\"" >> $config_h
819   echo "#define TARGET_MIPS 1" >> $config_h
820 else
821   echo "Unsupported target CPU"
822   exit 1
823 fi
824 if test "$target_bigendian" = "yes" ; then
825   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
826   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
827 fi
828 if test "$target_softmmu" = "yes" ; then
829   echo "CONFIG_SOFTMMU=yes" >> $config_mak
830   echo "#define CONFIG_SOFTMMU 1" >> $config_h
831 fi
832 if test "$target_user_only" = "yes" ; then
833   echo "CONFIG_USER_ONLY=yes" >> $config_mak
834   echo "#define CONFIG_USER_ONLY 1" >> $config_h
835 fi
836
837 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
838   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
839   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
840 fi
841 # sdl defines
842
843 if test "$target_user_only" = "no"; then
844     if test "$target_softmmu" = "no" -o "$static" = "yes"; then
845         sdl1=$sdl_static
846     else
847         sdl1=$sdl
848     fi
849     if test "$sdl1" = "yes" ; then
850         echo "#define CONFIG_SDL 1" >> $config_h
851         echo "CONFIG_SDL=yes" >> $config_mak
852         if test "$target_softmmu" = "no" -o "$static" = "yes"; then
853             echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
854         else
855             echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
856         fi
857         if [ "${aa}" = "yes" ] ; then
858             echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
859         else
860             echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
861         fi
862     fi
863 fi
864
865 if test "$cocoa" = "yes" ; then
866     echo "#define CONFIG_COCOA 1" >> $config_h
867     echo "CONFIG_COCOA=yes" >> $config_mak
868 fi
869
870 done # for target in $targets
871
872 # build tree in object directory if source path is different from current one
873 if test "$source_path_used" = "yes" ; then
874     DIRS="tests"
875     FILES="Makefile tests/Makefile"
876     for dir in $DIRS ; do
877             mkdir -p $dir
878     done
879     # remove the link and recreate it, as not all "ln -sf" overwrite the link
880     for f in $FILES ; do
881         rm -f $f
882         ln -s $source_path/$f $f
883     done
884 fi
885
886 rm -f $TMPO $TMPC $TMPE $TMPS