705f6de0317c4955a092d721c4ae404af9b06475
[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 test -f $config_h && mv $config_h ${config_h}~
703
704 echo "# Automatically generated by configure - do not modify" > $config_mak
705 echo "# Configured with: $0 $@" >> $config_mak
706 echo "/* Automatically generated by configure - do not modify */" > $config_h
707
708 echo "prefix=$prefix" >> $config_mak
709 echo "bindir=\${prefix}$binsuffix" >> $config_mak
710 echo "mandir=\${prefix}$mansuffix" >> $config_mak
711 echo "datadir=\${prefix}$datasuffix" >> $config_mak
712 echo "docdir=\${prefix}$docsuffix" >> $config_mak
713 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
714 echo "MAKE=$make" >> $config_mak
715 echo "INSTALL=$install" >> $config_mak
716 echo "CC=$cc" >> $config_mak
717 echo "HOST_CC=$host_cc" >> $config_mak
718 echo "AR=$ar" >> $config_mak
719 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
720 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
721 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
722 echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
723 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
724 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
725 echo "CFLAGS=$CFLAGS" >> $config_mak
726 echo "LDFLAGS=$LDFLAGS" >> $config_mak
727 echo "EXESUF=$EXESUF" >> $config_mak
728 echo "AIOLIBS=$AIOLIBS" >> $config_mak
729 if test "$cpu" = "i386" ; then
730   echo "ARCH=i386" >> $config_mak
731   echo "#define HOST_I386 1" >> $config_h
732 elif test "$cpu" = "x86_64" ; then
733   echo "ARCH=x86_64" >> $config_mak
734   echo "#define HOST_X86_64 1" >> $config_h
735 elif test "$cpu" = "armv4b" ; then
736   echo "ARCH=arm" >> $config_mak
737   echo "#define HOST_ARM 1" >> $config_h
738 elif test "$cpu" = "armv4l" ; then
739   echo "ARCH=arm" >> $config_mak
740   echo "#define HOST_ARM 1" >> $config_h
741 elif test "$cpu" = "powerpc" ; then
742   echo "ARCH=ppc" >> $config_mak
743   echo "#define HOST_PPC 1" >> $config_h
744 elif test "$cpu" = "mips" ; then
745   echo "ARCH=mips" >> $config_mak
746   echo "#define HOST_MIPS 1" >> $config_h
747 elif test "$cpu" = "mips64" ; then
748   echo "ARCH=mips64" >> $config_mak
749   echo "#define HOST_MIPS64 1" >> $config_h
750 elif test "$cpu" = "s390" ; then
751   echo "ARCH=s390" >> $config_mak
752   echo "#define HOST_S390 1" >> $config_h
753 elif test "$cpu" = "alpha" ; then
754   echo "ARCH=alpha" >> $config_mak
755   echo "#define HOST_ALPHA 1" >> $config_h
756 elif test "$cpu" = "sparc" ; then
757   echo "ARCH=sparc" >> $config_mak
758   echo "#define HOST_SPARC 1" >> $config_h
759 elif test "$cpu" = "sparc64" ; then
760   echo "ARCH=sparc64" >> $config_mak
761   echo "#define HOST_SPARC64 1" >> $config_h
762 elif test "$cpu" = "ia64" ; then
763   echo "ARCH=ia64" >> $config_mak
764   echo "#define HOST_IA64 1" >> $config_h
765 elif test "$cpu" = "m68k" ; then
766   echo "ARCH=m68k" >> $config_mak
767   echo "#define HOST_M68K 1" >> $config_h
768 else
769   echo "Unsupported CPU = $cpu"
770   exit 1
771 fi
772 if test "$bigendian" = "yes" ; then
773   echo "WORDS_BIGENDIAN=yes" >> $config_mak
774   echo "#define WORDS_BIGENDIAN 1" >> $config_h
775 fi
776 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
777 if test "$mingw32" = "yes" ; then
778   echo "CONFIG_WIN32=yes" >> $config_mak
779   echo "#define CONFIG_WIN32 1" >> $config_h
780 else
781   cat > $TMPC << EOF
782 #include <byteswap.h>
783 int main(void) { return bswap_32(0); }
784 EOF
785   if $cc -o $TMPE $TMPC 2> /dev/null ; then
786     echo "#define HAVE_BYTESWAP_H 1" >> $config_h
787   fi
788 fi
789 if test "$darwin" = "yes" ; then
790   echo "CONFIG_DARWIN=yes" >> $config_mak
791   echo "#define CONFIG_DARWIN 1" >> $config_h
792 fi
793 if test "$solaris" = "yes" ; then
794   echo "CONFIG_SOLARIS=yes" >> $config_mak
795   echo "#define HOST_SOLARIS $solarisrev" >> $config_h
796   if test "$needs_libsunmath" = "yes" ; then
797     echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
798     echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
799   fi
800 fi
801 if test -n "$sparc_cpu"; then
802   echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
803   echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
804 fi
805 if test "$gdbstub" = "yes" ; then
806   echo "CONFIG_GDBSTUB=yes" >> $config_mak
807   echo "#define CONFIG_GDBSTUB 1" >> $config_h
808 fi
809 if test "$gprof" = "yes" ; then
810   echo "TARGET_GPROF=yes" >> $config_mak
811   echo "#define HAVE_GPROF 1" >> $config_h
812 fi
813 if test "$static" = "yes" ; then
814   echo "CONFIG_STATIC=yes" >> $config_mak
815   echo "#define CONFIG_STATIC 1" >> $config_h
816 fi
817 if test $profiler = "yes" ; then
818   echo "#define CONFIG_PROFILER 1" >> $config_h
819 fi
820 if test "$slirp" = "yes" ; then
821   echo "CONFIG_SLIRP=yes" >> $config_mak
822   echo "#define CONFIG_SLIRP 1" >> $config_h
823 fi
824 if test "$adlib" = "yes" ; then
825   echo "CONFIG_ADLIB=yes" >> $config_mak
826   echo "#define CONFIG_ADLIB 1" >> $config_h
827 fi
828 if test "$oss" = "yes" ; then
829   echo "CONFIG_OSS=yes" >> $config_mak
830   echo "#define CONFIG_OSS 1" >> $config_h
831 fi
832 if test "$coreaudio" = "yes" ; then
833   echo "CONFIG_COREAUDIO=yes" >> $config_mak
834   echo "#define CONFIG_COREAUDIO 1" >> $config_h
835 fi
836 if test "$alsa" = "yes" ; then
837   echo "CONFIG_ALSA=yes" >> $config_mak
838   echo "#define CONFIG_ALSA 1" >> $config_h
839 fi
840 if test "$dsound" = "yes" ; then
841   echo "CONFIG_DSOUND=yes" >> $config_mak
842   echo "#define CONFIG_DSOUND 1" >> $config_h
843 fi
844 if test "$fmod" = "yes" ; then
845   echo "CONFIG_FMOD=yes" >> $config_mak
846   echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
847   echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
848   echo "#define CONFIG_FMOD 1" >> $config_h
849 fi
850 qemu_version=`head $source_path/VERSION`
851 echo "VERSION=$qemu_version" >>$config_mak
852 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
853
854 echo "SRC_PATH=$source_path" >> $config_mak
855 if [ "$source_path_used" = "yes" ]; then
856   echo "VPATH=$source_path" >> $config_mak
857 fi
858 echo "TARGET_DIRS=$target_list" >> $config_mak
859 if [ "$build_docs" = "yes" ] ; then
860   echo "BUILD_DOCS=yes" >> $config_mak
861 fi
862
863 # XXX: suppress that
864 if [ "$bsd" = "yes" ] ; then
865   echo "#define O_LARGEFILE 0" >> $config_h
866   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
867   echo "#define _BSD 1" >> $config_h
868 fi
869
870 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
871
872 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
873
874 for target in $target_list; do
875 target_dir="$target"
876 config_mak=$target_dir/config.mak
877 config_h=$target_dir/config.h
878 target_cpu=`echo $target | cut -d '-' -f 1`
879 target_bigendian="no"
880 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
881 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
882 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
883 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
884 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
885 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
886 [ "$target_cpu" = "mips" ] && target_bigendian=yes
887 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
888 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
889 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
890 target_softmmu="no"
891 target_user_only="no"
892 target_linux_user="no"
893 target_darwin_user="no"
894 case "$target" in
895   ${target_cpu}-softmmu)
896     target_softmmu="yes"
897     ;;
898   ${target_cpu}-linux-user)
899     target_user_only="yes"
900     target_linux_user="yes"
901     ;;
902   ${target_cpu}-darwin-user)
903     target_user_only="yes"
904     target_darwin_user="yes"
905     ;;
906   *)
907     echo "ERROR: Target '$target' not recognised"
908     exit 1
909     ;;
910 esac
911
912 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
913         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
914     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
915     echo "To build QEMU without graphical output configure with --disable-gfx-check"
916     echo "Note that this will disable all output from the virtual graphics card."
917     exit 1;
918 fi
919
920 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
921
922 test -f $config_h && mv $config_h ${config_h}~
923
924 mkdir -p $target_dir
925 mkdir -p $target_dir/fpu
926 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
927   mkdir -p $target_dir/nwfpe
928 fi
929 if test "$target_user_only" = "no" ; then
930   mkdir -p $target_dir/slirp
931 fi
932
933 #
934 # don't use ln -sf as not all "ln -sf" over write the file/link
935 #
936 rm -f $target_dir/Makefile
937 ln -s $source_path/Makefile.target $target_dir/Makefile
938
939
940 echo "# Automatically generated by configure - do not modify" > $config_mak
941 echo "/* Automatically generated by configure - do not modify */" > $config_h
942
943
944 echo "include ../config-host.mak" >> $config_mak
945 echo "#include \"../config-host.h\"" >> $config_h
946
947 bflt="no"
948 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
949 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
950
951 if test "$target_cpu" = "i386" ; then
952   echo "TARGET_ARCH=i386" >> $config_mak
953   echo "#define TARGET_ARCH \"i386\"" >> $config_h
954   echo "#define TARGET_I386 1" >> $config_h
955   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
956     echo "#define USE_KQEMU 1" >> $config_h
957   fi
958 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
959   echo "TARGET_ARCH=arm" >> $config_mak
960   echo "#define TARGET_ARCH \"arm\"" >> $config_h
961   echo "#define TARGET_ARM 1" >> $config_h
962   bflt="yes"
963 elif test "$target_cpu" = "sparc" ; then
964   echo "TARGET_ARCH=sparc" >> $config_mak
965   echo "#define TARGET_ARCH \"sparc\"" >> $config_h
966   echo "#define TARGET_SPARC 1" >> $config_h
967 elif test "$target_cpu" = "sparc64" ; then
968   echo "TARGET_ARCH=sparc64" >> $config_mak
969   echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
970   echo "#define TARGET_SPARC 1" >> $config_h
971   echo "#define TARGET_SPARC64 1" >> $config_h
972 elif test "$target_cpu" = "ppc" ; then
973   echo "TARGET_ARCH=ppc" >> $config_mak
974   echo "#define TARGET_ARCH \"ppc\"" >> $config_h
975   echo "#define TARGET_PPC 1" >> $config_h
976 elif test "$target_cpu" = "ppc64" ; then
977   echo "TARGET_ARCH=ppc64" >> $config_mak
978   echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
979   echo "#define TARGET_PPC 1" >> $config_h
980   echo "#define TARGET_PPC64 1" >> $config_h
981 elif test "$target_cpu" = "ppcemb" ; then
982   echo "TARGET_ARCH=ppcemb" >> $config_mak
983   echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
984   echo "#define TARGET_PPC 1" >> $config_h
985   echo "#define TARGET_PPCEMB 1" >> $config_h
986 elif test "$target_cpu" = "x86_64" ; then
987   echo "TARGET_ARCH=x86_64" >> $config_mak
988   echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
989   echo "#define TARGET_I386 1" >> $config_h
990   echo "#define TARGET_X86_64 1" >> $config_h
991   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
992     echo "#define USE_KQEMU 1" >> $config_h
993   fi
994 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
995   echo "TARGET_ARCH=mips" >> $config_mak
996   echo "#define TARGET_ARCH \"mips\"" >> $config_h
997   echo "#define TARGET_MIPS 1" >> $config_h
998   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
999   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1000 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1001   echo "TARGET_ARCH=mips64" >> $config_mak
1002   echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1003   echo "#define TARGET_MIPS 1" >> $config_h
1004   echo "#define TARGET_MIPS64 1" >> $config_h
1005   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1006   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1007 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1008   echo "TARGET_ARCH=sh4" >> $config_mak
1009   echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1010   echo "#define TARGET_SH4 1" >> $config_h
1011   bflt="yes"
1012 elif test "$target_cpu" = "m68k" ; then
1013   echo "TARGET_ARCH=m68k" >> $config_mak
1014   echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1015   echo "#define TARGET_M68K 1" >> $config_h
1016   bflt="yes"
1017 elif test "$target_cpu" = "alpha" ; then
1018   echo "TARGET_ARCH=alpha" >> $config_mak
1019   echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1020   echo "#define TARGET_ALPHA 1" >> $config_h
1021 else
1022   echo "Unsupported target CPU"
1023   exit 1
1024 fi
1025 if test "$target_bigendian" = "yes" ; then
1026   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1027   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1028 fi
1029 if test "$target_softmmu" = "yes" ; then
1030   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1031   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1032 fi
1033 if test "$target_user_only" = "yes" ; then
1034   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1035   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1036 fi
1037 if test "$target_linux_user" = "yes" ; then
1038   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1039   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1040 fi
1041 if test "$target_darwin_user" = "yes" ; then
1042   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1043   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1044 fi
1045
1046 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1047   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1048   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1049 fi
1050 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1051   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1052   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1053 fi
1054 # sdl defines
1055
1056 if test "$target_user_only" = "no"; then
1057     if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1058         sdl1=$sdl_static
1059     else
1060         sdl1=$sdl
1061     fi
1062     if test "$sdl1" = "yes" ; then
1063         echo "#define CONFIG_SDL 1" >> $config_h
1064         echo "CONFIG_SDL=yes" >> $config_mak
1065         if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1066             echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1067         else
1068             echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1069         fi
1070         if [ "${aa}" = "yes" ] ; then
1071             echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1072         else
1073             echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1074         fi
1075     fi
1076 fi
1077
1078 if test "$cocoa" = "yes" ; then
1079     echo "#define CONFIG_COCOA 1" >> $config_h
1080     echo "CONFIG_COCOA=yes" >> $config_mak
1081 fi
1082
1083 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1084
1085 done # for target in $targets
1086
1087 # build tree in object directory if source path is different from current one
1088 if test "$source_path_used" = "yes" ; then
1089     DIRS="tests"
1090     FILES="Makefile tests/Makefile"
1091     for dir in $DIRS ; do
1092             mkdir -p $dir
1093     done
1094     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1095     for f in $FILES ; do
1096         rm -f $f
1097         ln -s $source_path/$f $f
1098     done
1099 fi
1100
1101 rm -f $TMPO $TMPC $TMPE $TMPS