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