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