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