Qemu 32-bit i386, gcc >= 3.4 spill error fix
[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.6 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   x86_64|amd64)
39     cpu="x86_64"
40   ;;
41   alpha)
42     cpu="alpha"
43   ;;
44   armv*b)
45     cpu="armv4b"
46   ;;
47   armv*l)
48     cpu="armv4l"
49   ;;
50   cris)
51     cpu="cris"
52   ;;
53   parisc|parisc64)
54     cpu="hppa"
55   ;;
56   ia64)
57     cpu="ia64"
58   ;;
59   m68k)
60     cpu="m68k"
61   ;;
62   mips)
63     cpu="mips"
64   ;;
65   mips64)
66     cpu="mips64"
67   ;;
68   "Power Macintosh"|ppc|ppc64)
69     cpu="powerpc"
70   ;;
71   s390*)
72     cpu="s390"
73   ;;
74   sparc|sun4[cdmuv])
75     cpu="sparc"
76   ;;
77   sparc64)
78     cpu="sparc64"
79   ;;
80   *)
81     cpu="unknown"
82   ;;
83 esac
84 gprof="no"
85 bigendian="no"
86 mingw32="no"
87 EXESUF=""
88 gdbstub="yes"
89 slirp="yes"
90 adlib="no"
91 ac97="no"
92 gus="no"
93 oss="no"
94 dsound="no"
95 coreaudio="no"
96 alsa="no"
97 esd="no"
98 fmod="no"
99 fmod_lib=""
100 fmod_inc=""
101 vnc_tls="yes"
102 bsd="no"
103 linux="no"
104 kqemu="no"
105 profiler="no"
106 cocoa="no"
107 check_gfx="yes"
108 check_gcc="yes"
109 softmmu="yes"
110 linux_user="no"
111 darwin_user="no"
112 build_docs="no"
113 uname_release=""
114 curses="yes"
115
116 # OS specific
117 targetos=`uname -s`
118 case $targetos in
119 CYGWIN*)
120 mingw32="yes"
121 OS_CFLAGS="-mno-cygwin"
122 if [ "$cpu" = "i386" ] ; then
123     kqemu="yes"
124 fi
125 ;;
126 MINGW32*)
127 mingw32="yes"
128 if [ "$cpu" = "i386" ] ; then
129     kqemu="yes"
130 fi
131 ;;
132 GNU/kFreeBSD)
133 oss="yes"
134 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
135     kqemu="yes"
136 fi
137 ;;
138 FreeBSD)
139 bsd="yes"
140 oss="yes"
141 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
142     kqemu="yes"
143 fi
144 ;;
145 NetBSD)
146 bsd="yes"
147 oss="yes"
148 ;;
149 OpenBSD)
150 bsd="yes"
151 oss="yes"
152 ;;
153 Darwin)
154 bsd="yes"
155 darwin="yes"
156 darwin_user="yes"
157 cocoa="yes"
158 coreaudio="yes"
159 OS_CFLAGS="-mdynamic-no-pic"
160 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
161 ;;
162 SunOS)
163     solaris="yes"
164     make="gmake"
165     install="ginstall"
166     needs_libsunmath="no"
167     solarisrev=`uname -r | cut -f2 -d.`
168     # have to select again, because `uname -m` returns i86pc
169     # even on an x86_64 box.
170     solariscpu=`isainfo -k`
171     if test "${solariscpu}" = "amd64" ; then
172         cpu="x86_64"
173     fi
174     if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
175         if test "$solarisrev" -le 9 ; then
176             if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
177                 needs_libsunmath="yes"
178             else
179                 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
180                 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
181                 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
182                 echo "Studio 11 can be downloaded from www.sun.com."
183                 exit 1
184             fi
185         fi
186         if test "$solarisrev" -ge 9 ; then
187             kqemu="yes"
188         fi
189     fi
190     if test -f /usr/include/sys/soundcard.h ; then
191         oss=yes
192     fi
193 ;;
194 *)
195 oss="yes"
196 linux="yes"
197 linux_user="yes"
198 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
199     kqemu="yes"
200 fi
201 ;;
202 esac
203
204 if [ "$bsd" = "yes" ] ; then
205   if [ "$darwin" != "yes" ] ; then
206     make="gmake"
207   fi
208 fi
209
210 # find source path
211 source_path=`dirname "$0"`
212 source_path_used="no"
213 workdir=`pwd`
214 if [ -z "$source_path" ]; then
215     source_path=$workdir
216 else
217     source_path=`cd "$source_path"; pwd`
218 fi
219 [ -f "$workdir/vl.c" ] || source_path_used="yes"
220
221 werror="no"
222 # generate compile errors on warnings for development builds
223 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
224 #werror="yes";
225 #fi
226
227 for opt do
228   optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
229   case "$opt" in
230   --help|-h) show_help=yes
231   ;;
232   --prefix=*) prefix="$optarg"
233   ;;
234   --interp-prefix=*) interp_prefix="$optarg"
235   ;;
236   --source-path=*) source_path="$optarg"
237   source_path_used="yes"
238   ;;
239   --cross-prefix=*) cross_prefix="$optarg"
240   ;;
241   --cc=*) cc="$optarg"
242   gcc3_search="no"
243   ;;
244   --host-cc=*) host_cc="$optarg"
245   ;;
246   --make=*) make="$optarg"
247   ;;
248   --install=*) install="$optarg"
249   ;;
250   --extra-cflags=*) CFLAGS="$optarg"
251   ;;
252   --extra-ldflags=*) LDFLAGS="$optarg"
253   ;;
254   --cpu=*) cpu="$optarg"
255   ;;
256   --target-list=*) target_list="$optarg"
257   ;;
258   --enable-gprof) gprof="yes"
259   ;;
260   --static) static="yes"
261   ;;
262   --disable-sdl) sdl="no"
263   ;;
264   --enable-coreaudio) coreaudio="yes"
265   ;;
266   --enable-alsa) alsa="yes"
267   ;;
268   --enable-esd) esd="yes"
269   ;;
270   --enable-dsound) dsound="yes"
271   ;;
272   --enable-fmod) fmod="yes"
273   ;;
274   --fmod-lib=*) fmod_lib="$optarg"
275   ;;
276   --fmod-inc=*) fmod_inc="$optarg"
277   ;;
278   --disable-vnc-tls) vnc_tls="no"
279   ;;
280   --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
281   ;;
282   --disable-slirp) slirp="no"
283   ;;
284   --enable-adlib) adlib="yes"
285   ;;
286   --enable-ac97) ac97="yes"
287   ;;
288   --enable-gus) gus="yes"
289   ;;
290   --disable-kqemu) kqemu="no"
291   ;;
292   --disable-brlapi) brlapi="no"
293   ;;
294   --enable-profiler) profiler="yes"
295   ;;
296   --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
297   ;;
298   --disable-gfx-check) check_gfx="no"
299   ;;
300   --disable-gcc-check) check_gcc="no"
301   ;;
302   --disable-system) softmmu="no"
303   ;;
304   --enable-system) softmmu="yes"
305   ;;
306   --disable-linux-user) linux_user="no"
307   ;;
308   --enable-linux-user) linux_user="yes"
309   ;;
310   --disable-darwin-user) darwin_user="no"
311   ;;
312   --enable-darwin-user) darwin_user="yes"
313   ;;
314   --enable-uname-release=*) uname_release="$optarg"
315   ;;
316   --sparc_cpu=*)
317       sparc_cpu="$optarg"
318       case $sparc_cpu in
319         v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
320                  target_cpu="sparc"; cpu="sparc" ;;
321         v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
322                  target_cpu="sparc"; cpu="sparc" ;;
323         v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
324                  target_cpu="sparc64"; cpu="sparc64" ;;
325         *)     echo "undefined SPARC architecture. Exiting";exit 1;;
326       esac
327   ;;
328   --enable-werror) werror="yes"
329   ;;
330   --disable-werror) werror="no"
331   ;;
332   --disable-curses) curses="no"
333   ;;
334   *) echo "ERROR: unknown option $opt"; show_help="yes"
335   ;;
336   esac
337 done
338
339 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
340     AIOLIBS=
341 else
342     # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
343     AIOLIBS="-lrt -lpthread"
344 fi
345
346 # default flags for all hosts
347 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
348 LDFLAGS="$LDFLAGS -g"
349 if test "$werror" = "yes" ; then
350 CFLAGS="$CFLAGS -Werror"
351 fi
352
353 #
354 # If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
355 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
356 #
357 case "$cpu" in
358     sparc) if test -z "$sparc_cpu" ; then
359                ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
360                ARCH_LDFLAGS="-m32"
361            else
362                ARCH_CFLAGS="${SP_CFLAGS}"
363                ARCH_LDFLAGS="${SP_LDFLAGS}"
364            fi
365            ;;
366     sparc64) if test -z "$sparc_cpu" ; then
367                ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
368                ARCH_LDFLAGS="-m64"
369            else
370                ARCH_CFLAGS="${SP_CFLAGS}"
371                ARCH_LDFLAGS="${SP_LDFLAGS}"
372            fi
373            ;;
374     s390)
375            ARCH_CFLAGS="-march=z900"
376            ;;
377     i386)
378            ARCH_CFLAGS="-m32"
379            ARCH_LDFLAGS="-m32"
380            ;;
381     x86_64)
382            ARCH_CFLAGS="-m64"
383            ARCH_LDFLAGS="-m64"
384            ;;
385 esac
386
387 if test x"$show_help" = x"yes" ; then
388 cat << EOF
389
390 Usage: configure [options]
391 Options: [defaults in brackets after descriptions]
392
393 EOF
394 echo "Standard options:"
395 echo "  --help                   print this message"
396 echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
397 echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
398 echo "                           use %M for cpu name [$interp_prefix]"
399 echo "  --target-list=LIST       set target list [$target_list]"
400 echo ""
401 echo "kqemu kernel acceleration support:"
402 echo "  --disable-kqemu          disable kqemu support"
403 echo ""
404 echo "Advanced options (experts only):"
405 echo "  --source-path=PATH       path of source code [$source_path]"
406 echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
407 echo "  --cc=CC                  use C compiler CC [$cc]"
408 echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
409 echo "  --make=MAKE              use specified make [$make]"
410 echo "  --install=INSTALL        use specified install [$install]"
411 echo "  --static                 enable static build [$static]"
412 echo "  --disable-werror         disable compilation abort on warning"
413 echo "  --disable-sdl            disable SDL"
414 echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
415 echo "  --enable-mingw32         enable Win32 cross compilation with mingw32"
416 echo "  --enable-adlib           enable Adlib emulation"
417 echo "  --enable-ac97            enable AC97 emulation"
418 echo "  --enable-gus             enable Gravis Ultrasound emulation"
419 echo "  --enable-coreaudio       enable Coreaudio audio driver"
420 echo "  --enable-alsa            enable ALSA audio driver"
421 echo "  --enable-esd             enable EsoundD audio driver"
422 echo "  --enable-fmod            enable FMOD audio driver"
423 echo "  --enable-dsound          enable DirectSound audio driver"
424 echo "  --disable-brlapi         disable BrlAPI"
425 echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
426 echo "  --disable-curses         disable curses output"
427 echo "  --enable-system          enable all system emulation targets"
428 echo "  --disable-system         disable all system emulation targets"
429 echo "  --enable-linux-user      enable all linux usermode emulation targets"
430 echo "  --disable-linux-user     disable all linux usermode emulation targets"
431 echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
432 echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
433 echo "  --fmod-lib               path to FMOD library"
434 echo "  --fmod-inc               path to FMOD includes"
435 echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
436 echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
437 echo ""
438 echo "NOTE: The object files are built at the place where configure is launched"
439 exit 1
440 fi
441
442 cc="${cross_prefix}${cc}"
443 ar="${cross_prefix}${ar}"
444 strip="${cross_prefix}${strip}"
445
446 # check that the C compiler works.
447 cat > $TMPC <<EOF
448 int main(void) {}
449 EOF
450
451 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
452   : C compiler works ok
453 else
454     echo "ERROR: \"$cc\" either does not exist or does not work"
455     exit 1
456 fi
457
458 if test "$mingw32" = "yes" ; then
459     linux="no"
460     EXESUF=".exe"
461     oss="no"
462 fi
463
464 # Check for gcc4, error if pre-gcc4
465 if test "$check_gcc" = "yes" ; then
466     cat > $TMPC <<EOF
467 #if __GNUC__ < 4
468 #error gcc3
469 #endif
470 int main(){return 0;}
471 EOF
472     if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
473         echo "WARNING: \"$cc\" looks like gcc 4.x"
474         found_compat_cc="no"
475         if test "$gcc3_search" = "yes" ; then
476             echo "Looking for gcc 3.x"
477             for compat_cc in $gcc3_list ; do
478                 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
479                     echo "Found \"$compat_cc\""
480                     cc="$cross_prefix$compat_cc"
481                     found_compat_cc="yes"
482                     break
483                 fi
484             done
485             if test "$found_compat_cc" = "no" ; then
486                 echo "gcc 3.x not found!"
487             fi
488         fi
489         if test "$found_compat_cc" = "no" ; then
490             echo "QEMU is known to have problems when compiled with gcc 4.x"
491             echo "It is recommended that you use gcc 3.x to build QEMU"
492             echo "To use this compiler anyway, configure with --disable-gcc-check"
493             exit 1;
494         fi
495     fi
496 fi
497
498 #
499 # Solaris specific configure tool chain decisions
500 #
501 if test "$solaris" = "yes" ; then
502   #
503   # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
504   # override the check with --disable-gcc-check
505   #
506   if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
507     solgcc=`which $cc`
508     if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
509       echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
510       echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
511       echo "or get the latest patch from SunSolve for gcc"
512       exit 1
513     fi
514   fi
515   solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
516   if test -z "$solinst" ; then
517     echo "Solaris install program not found. Use --install=/usr/ucb/install or"
518     echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
519     echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
520     exit 1
521   fi
522   if test "$solinst" = "/usr/sbin/install" ; then
523     echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
524     echo "try ginstall from the GNU fileutils available from www.blastwave.org"
525     echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
526     exit 1
527   fi
528   sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
529   if test -z "$sol_ar" ; then
530     echo "Error: No path includes ar"
531     if test -f /usr/ccs/bin/ar ; then
532       echo "Add /usr/ccs/bin to your path and rerun configure"
533     fi
534     exit 1
535   fi
536 fi
537
538
539 if test -z "$target_list" ; then
540 # these targets are portable
541     if [ "$softmmu" = "yes" ] ; then
542         target_list="\
543 i386-softmmu \
544 x86_64-softmmu \
545 arm-softmmu \
546 cris-softmmu \
547 m68k-softmmu \
548 mips-softmmu \
549 mipsel-softmmu \
550 mips64-softmmu \
551 mips64el-softmmu \
552 ppc-softmmu \
553 ppcemb-softmmu \
554 ppc64-softmmu \
555 sh4-softmmu \
556 sh4eb-softmmu \
557 sparc-softmmu \
558 "
559     fi
560 # the following are Linux specific
561     if [ "$linux_user" = "yes" ] ; then
562         target_list="${target_list}\
563 i386-linux-user \
564 x86_64-linux-user \
565 alpha-linux-user \
566 arm-linux-user \
567 armeb-linux-user \
568 cris-linux-user \
569 m68k-linux-user \
570 mips-linux-user \
571 mipsel-linux-user \
572 ppc-linux-user \
573 ppc64-linux-user \
574 ppc64abi32-linux-user \
575 sh4-linux-user \
576 sh4eb-linux-user \
577 sparc-linux-user \
578 sparc64-linux-user \
579 sparc32plus-linux-user \
580 "
581     fi
582 # the following are Darwin specific
583     if [ "$darwin_user" = "yes" ] ; then
584         target_list="$target_list i386-darwin-user ppc-darwin-user"
585     fi
586 else
587     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
588 fi
589 if test -z "$target_list" ; then
590     echo "No targets enabled"
591     exit 1
592 fi
593
594 if test -z "$cross_prefix" ; then
595
596 # ---
597 # big/little endian test
598 cat > $TMPC << EOF
599 #include <inttypes.h>
600 int main(int argc, char ** argv){
601         volatile uint32_t i=0x01234567;
602         return (*((uint8_t*)(&i))) == 0x67;
603 }
604 EOF
605
606 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
607 $TMPE && bigendian="yes"
608 else
609 echo big/little test failed
610 fi
611
612 else
613
614 # if cross compiling, cannot launch a program, so make a static guess
615 if test "$cpu" = "armv4b" \
616      -o "$cpu" = "hppa" \
617      -o "$cpu" = "m68k" \
618      -o "$cpu" = "mips" \
619      -o "$cpu" = "mips64" \
620      -o "$cpu" = "powerpc" \
621      -o "$cpu" = "s390" \
622      -o "$cpu" = "sparc" \
623      -o "$cpu" = "sparc64"; then
624     bigendian="yes"
625 fi
626
627 fi
628
629 # host long bits test
630 hostlongbits="32"
631 if test "$cpu" = "x86_64" \
632      -o "$cpu" = "alpha" \
633      -o "$cpu" = "ia64" \
634      -o "$cpu" = "sparc64"; then
635     hostlongbits="64"
636 fi
637
638 # check gcc options support
639 cat > $TMPC <<EOF
640 int main(void) {
641 }
642 EOF
643
644 ##########################################
645 # SDL probe
646
647 sdl_too_old=no
648
649 if test -z "$sdl" ; then
650     sdl_config="sdl-config"
651     sdl=no
652     sdl_static=no
653
654     if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
655     # win32 cross compilation case
656         sdl_config="i386-mingw32msvc-sdl-config"
657         sdl=yes
658     else
659         # normal SDL probe
660 cat > $TMPC << EOF
661 #include <SDL.h>
662 #undef main /* We don't want SDL to override our main() */
663 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
664 EOF
665         if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
666             _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
667             if test "$_sdlversion" -lt 121 ; then
668                 sdl_too_old=yes
669             else
670                 if test "$cocoa" = "no" ; then
671                     sdl=yes
672                 fi
673             fi
674
675             # static link with sdl ?
676             if test "$sdl" = "yes" ; then
677                 aa="no"
678                 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
679                 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
680                 if [ "$aa" = "yes" ] ; then
681                     sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
682                 fi
683
684                 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
685                     sdl_static=yes
686                 fi
687             fi # static link
688         fi # sdl compile test
689     fi # cross compilation
690 else
691     # Make sure to disable cocoa if sdl was set
692     if test "$sdl" = "yes" ; then
693        cocoa="no"
694        coreaudio="no"
695     fi
696 fi # -z $sdl
697
698 ##########################################
699 # VNC TLS detection
700 if test "$vnc_tls" = "yes" ; then
701   `pkg-config gnutls` || vnc_tls="no"
702 fi
703 if test "$vnc_tls" = "yes" ; then
704   vnc_tls_cflags=`pkg-config --cflags gnutls`
705   vnc_tls_libs=`pkg-config --libs gnutls`
706 fi
707
708 ##########################################
709 # alsa sound support libraries
710
711 if test "$alsa" = "yes" ; then
712   cat > $TMPC << EOF
713 #include <alsa/asoundlib.h>
714 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
715 EOF
716   if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lasound 2> /dev/null ; then
717     :
718   else
719     echo
720     echo "Error: Could not find alsa"
721     echo "Make sure to have the alsa libs and headers installed."
722     echo
723     exit 1
724   fi
725 fi
726
727 ##########################################
728 # BrlAPI probe
729
730 if test -z "$brlapi" ; then
731     brlapi=no
732 cat > $TMPC << EOF
733 #include <brlapi.h>
734 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
735 EOF
736     if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
737             brlapi=yes
738     fi # brlapi compile test
739 fi # -z $brlapi
740
741 ##########################################
742 # curses probe
743
744 if test "$curses" = "yes" ; then
745   curses=no
746   cat > $TMPC << EOF
747 #include <curses.h>
748 int main(void) { return curses_version(); }
749 EOF
750   if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
751     curses=yes
752   fi
753 fi # test "$curses"
754
755 # Check if tools are available to build documentation.
756 if [ -x "`which texi2html 2>/dev/null`" ] && \
757    [ -x "`which pod2man 2>/dev/null`" ]; then
758   build_docs="yes"
759 fi
760
761 if test "$mingw32" = "yes" ; then
762   if test -z "$prefix" ; then
763       prefix="/c/Program Files/Qemu"
764   fi
765   mansuffix=""
766   datasuffix=""
767   docsuffix=""
768   binsuffix=""
769 else
770   if test -z "$prefix" ; then
771       prefix="/usr/local"
772   fi
773   mansuffix="/share/man"
774   datasuffix="/share/qemu"
775   docsuffix="/share/doc/qemu"
776   binsuffix="/bin"
777 fi
778
779 echo "Install prefix    $prefix"
780 echo "BIOS directory    $prefix$datasuffix"
781 echo "binary directory  $prefix$binsuffix"
782 if test "$mingw32" = "no" ; then
783 echo "Manual directory  $prefix$mansuffix"
784 echo "ELF interp prefix $interp_prefix"
785 fi
786 echo "Source path       $source_path"
787 echo "C compiler        $cc"
788 echo "Host C compiler   $host_cc"
789 echo "ARCH_CFLAGS       $ARCH_CFLAGS"
790 echo "make              $make"
791 echo "install           $install"
792 echo "host CPU          $cpu"
793 echo "host big endian   $bigendian"
794 echo "target list       $target_list"
795 echo "gprof enabled     $gprof"
796 echo "profiler          $profiler"
797 echo "static build      $static"
798 echo "-Werror enabled   $werror"
799 if test "$darwin" = "yes" ; then
800     echo "Cocoa support     $cocoa"
801 fi
802 echo "SDL support       $sdl"
803 if test "$sdl" != "no" ; then
804     echo "SDL static link   $sdl_static"
805 fi
806 echo "curses support    $curses"
807 echo "mingw32 support   $mingw32"
808 echo "Adlib support     $adlib"
809 echo "AC97 support      $ac97"
810 echo "GUS support       $gus"
811 echo "CoreAudio support $coreaudio"
812 echo "ALSA support      $alsa"
813 echo "EsounD support    $esd"
814 echo "DSound support    $dsound"
815 if test "$fmod" = "yes"; then
816     if test -z $fmod_lib || test -z $fmod_inc; then
817         echo
818         echo "Error: You must specify path to FMOD library and headers"
819         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
820         echo
821         exit 1
822     fi
823     fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
824 else
825     fmod_support=""
826 fi
827 echo "FMOD support      $fmod $fmod_support"
828 echo "OSS support       $oss"
829 echo "VNC TLS support   $vnc_tls"
830 if test "$vnc_tls" = "yes" ; then
831     echo "    TLS CFLAGS    $vnc_tls_cflags"
832     echo "    TLS LIBS      $vnc_tls_libs"
833 fi
834 if test -n "$sparc_cpu"; then
835     echo "Target Sparc Arch $sparc_cpu"
836 fi
837 echo "kqemu support     $kqemu"
838 echo "brlapi support    $brlapi"
839 echo "Documentation     $build_docs"
840 [ ! -z "$uname_release" ] && \
841 echo "uname -r          $uname_release"
842
843 if test $sdl_too_old = "yes"; then
844 echo "-> Your SDL version is too old - please upgrade to have SDL support"
845 fi
846 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
847   echo "The error log from compiling the libSDL test is: "
848   cat /tmp/qemu-$$-sdl-config.log
849 fi
850 rm -f /tmp/qemu-$$-sdl-config.log
851 #if test "$sdl_static" = "no"; then
852 #  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
853 #fi
854 config_mak="config-host.mak"
855 config_h="config-host.h"
856
857 #echo "Creating $config_mak and $config_h"
858
859 test -f $config_h && mv $config_h ${config_h}~
860
861 echo "# Automatically generated by configure - do not modify" > $config_mak
862 echo "# Configured with: $0 $@" >> $config_mak
863 echo "/* Automatically generated by configure - do not modify */" > $config_h
864
865 echo "prefix=$prefix" >> $config_mak
866 echo "bindir=\${prefix}$binsuffix" >> $config_mak
867 echo "mandir=\${prefix}$mansuffix" >> $config_mak
868 echo "datadir=\${prefix}$datasuffix" >> $config_mak
869 echo "docdir=\${prefix}$docsuffix" >> $config_mak
870 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
871 echo "MAKE=$make" >> $config_mak
872 echo "INSTALL=$install" >> $config_mak
873 echo "CC=$cc" >> $config_mak
874 echo "HOST_CC=$host_cc" >> $config_mak
875 echo "AR=$ar" >> $config_mak
876 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
877 # XXX: only use CFLAGS and LDFLAGS ?  
878 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
879 # compilation of dyngen tool (useful for win32 build on Linux host)
880 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
881 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
882 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
883 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
884 echo "CFLAGS=$CFLAGS" >> $config_mak
885 echo "LDFLAGS=$LDFLAGS" >> $config_mak
886 echo "EXESUF=$EXESUF" >> $config_mak
887 echo "AIOLIBS=$AIOLIBS" >> $config_mak
888 case "$cpu" in
889   i386)
890     echo "ARCH=i386" >> $config_mak
891     echo "#define HOST_I386 1" >> $config_h
892   ;;
893   x86_64)
894     echo "ARCH=x86_64" >> $config_mak
895     echo "#define HOST_X86_64 1" >> $config_h
896   ;;
897   alpha)
898     echo "ARCH=alpha" >> $config_mak
899     echo "#define HOST_ALPHA 1" >> $config_h
900   ;;
901   armv4b)
902     echo "ARCH=arm" >> $config_mak
903     echo "#define HOST_ARM 1" >> $config_h
904   ;;
905   armv4l)
906     echo "ARCH=arm" >> $config_mak
907     echo "#define HOST_ARM 1" >> $config_h
908   ;;
909   cris)
910     echo "ARCH=cris" >> $config_mak
911     echo "#define HOST_CRIS 1" >> $config_h
912   ;;
913   hppa)
914     echo "ARCH=hppa" >> $config_mak
915     echo "#define HOST_HPPA 1" >> $config_h
916   ;;
917   ia64)
918     echo "ARCH=ia64" >> $config_mak
919     echo "#define HOST_IA64 1" >> $config_h
920   ;;
921   m68k)
922     echo "ARCH=m68k" >> $config_mak
923     echo "#define HOST_M68K 1" >> $config_h
924   ;;
925   mips)
926     echo "ARCH=mips" >> $config_mak
927     echo "#define HOST_MIPS 1" >> $config_h
928   ;;
929   mips64)
930     echo "ARCH=mips64" >> $config_mak
931     echo "#define HOST_MIPS64 1" >> $config_h
932   ;;
933   powerpc)
934     echo "ARCH=ppc" >> $config_mak
935     echo "#define HOST_PPC 1" >> $config_h
936   ;;
937   s390)
938     echo "ARCH=s390" >> $config_mak
939     echo "#define HOST_S390 1" >> $config_h
940   ;;
941   sparc)
942     echo "ARCH=sparc" >> $config_mak
943     echo "#define HOST_SPARC 1" >> $config_h
944   ;;
945   sparc64)
946     echo "ARCH=sparc64" >> $config_mak
947     echo "#define HOST_SPARC64 1" >> $config_h
948   ;;
949   *)
950     echo "Unsupported CPU = $cpu"
951     exit 1
952   ;;
953 esac
954 if test "$bigendian" = "yes" ; then
955   echo "WORDS_BIGENDIAN=yes" >> $config_mak
956   echo "#define WORDS_BIGENDIAN 1" >> $config_h
957 fi
958 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
959 if test "$mingw32" = "yes" ; then
960   echo "CONFIG_WIN32=yes" >> $config_mak
961   echo "#define CONFIG_WIN32 1" >> $config_h
962 else
963   cat > $TMPC << EOF
964 #include <byteswap.h>
965 int main(void) { return bswap_32(0); }
966 EOF
967   if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
968     echo "#define HAVE_BYTESWAP_H 1" >> $config_h
969   fi
970 fi
971 if test "$darwin" = "yes" ; then
972   echo "CONFIG_DARWIN=yes" >> $config_mak
973   echo "#define CONFIG_DARWIN 1" >> $config_h
974 fi
975 if test "$solaris" = "yes" ; then
976   echo "CONFIG_SOLARIS=yes" >> $config_mak
977   echo "#define HOST_SOLARIS $solarisrev" >> $config_h
978   if test "$needs_libsunmath" = "yes" ; then
979     echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
980     echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
981   fi
982 fi
983 if test -n "$sparc_cpu"; then
984   echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
985   echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
986 fi
987 if test "$gdbstub" = "yes" ; then
988   echo "CONFIG_GDBSTUB=yes" >> $config_mak
989   echo "#define CONFIG_GDBSTUB 1" >> $config_h
990 fi
991 if test "$gprof" = "yes" ; then
992   echo "TARGET_GPROF=yes" >> $config_mak
993   echo "#define HAVE_GPROF 1" >> $config_h
994 fi
995 if test "$static" = "yes" ; then
996   echo "CONFIG_STATIC=yes" >> $config_mak
997   echo "#define CONFIG_STATIC 1" >> $config_h
998 fi
999 if test $profiler = "yes" ; then
1000   echo "#define CONFIG_PROFILER 1" >> $config_h
1001 fi
1002 if test "$slirp" = "yes" ; then
1003   echo "CONFIG_SLIRP=yes" >> $config_mak
1004   echo "#define CONFIG_SLIRP 1" >> $config_h
1005 fi
1006 if test "$adlib" = "yes" ; then
1007   echo "CONFIG_ADLIB=yes" >> $config_mak
1008   echo "#define CONFIG_ADLIB 1" >> $config_h
1009 fi
1010 if test "$ac97" = "yes" ; then
1011   echo "CONFIG_AC97=yes" >> $config_mak
1012   echo "#define CONFIG_AC97 1" >> $config_h
1013 fi
1014 if test "$gus" = "yes" ; then
1015   echo "CONFIG_GUS=yes" >> $config_mak
1016   echo "#define CONFIG_GUS 1" >> $config_h
1017 fi
1018 if test "$oss" = "yes" ; then
1019   echo "CONFIG_OSS=yes" >> $config_mak
1020   echo "#define CONFIG_OSS 1" >> $config_h
1021 fi
1022 if test "$coreaudio" = "yes" ; then
1023   echo "CONFIG_COREAUDIO=yes" >> $config_mak
1024   echo "#define CONFIG_COREAUDIO 1" >> $config_h
1025 fi
1026 if test "$alsa" = "yes" ; then
1027   echo "CONFIG_ALSA=yes" >> $config_mak
1028   echo "#define CONFIG_ALSA 1" >> $config_h
1029 fi
1030 if test "$esd" = "yes" ; then
1031   echo "CONFIG_ESD=yes" >> $config_mak
1032   echo "#define CONFIG_ESD 1" >> $config_h
1033 fi
1034 if test "$dsound" = "yes" ; then
1035   echo "CONFIG_DSOUND=yes" >> $config_mak
1036   echo "#define CONFIG_DSOUND 1" >> $config_h
1037 fi
1038 if test "$fmod" = "yes" ; then
1039   echo "CONFIG_FMOD=yes" >> $config_mak
1040   echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1041   echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1042   echo "#define CONFIG_FMOD 1" >> $config_h
1043 fi
1044 if test "$vnc_tls" = "yes" ; then
1045   echo "CONFIG_VNC_TLS=yes" >> $config_mak
1046   echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1047   echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1048   echo "#define CONFIG_VNC_TLS 1" >> $config_h
1049 fi
1050 qemu_version=`head $source_path/VERSION`
1051 echo "VERSION=$qemu_version" >>$config_mak
1052 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1053
1054 echo "SRC_PATH=$source_path" >> $config_mak
1055 if [ "$source_path_used" = "yes" ]; then
1056   echo "VPATH=$source_path" >> $config_mak
1057 fi
1058 echo "TARGET_DIRS=$target_list" >> $config_mak
1059 if [ "$build_docs" = "yes" ] ; then
1060   echo "BUILD_DOCS=yes" >> $config_mak
1061 fi
1062 if test "$static" = "yes"; then
1063   sdl1=$sdl_static
1064 else
1065   sdl1=$sdl
1066 fi
1067 if test "$sdl1" = "yes" ; then
1068   echo "#define CONFIG_SDL 1" >> $config_h
1069   echo "CONFIG_SDL=yes" >> $config_mak
1070   if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1071     echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1072   else
1073     echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1074   fi
1075   if [ "${aa}" = "yes" ] ; then
1076     echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1077   else
1078     echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1079   fi
1080 fi
1081 if test "$cocoa" = "yes" ; then
1082   echo "#define CONFIG_COCOA 1" >> $config_h
1083   echo "CONFIG_COCOA=yes" >> $config_mak
1084 fi
1085 if test "$curses" = "yes" ; then
1086   echo "#define CONFIG_CURSES 1" >> $config_h
1087   echo "CONFIG_CURSES=yes" >> $config_mak
1088   echo "CURSES_LIBS=-lcurses" >> $config_mak
1089 fi
1090 if test "$brlapi" = "yes" ; then
1091   echo "CONFIG_BRLAPI=yes" >> $config_mak
1092   echo "#define CONFIG_BRLAPI 1" >> $config_h
1093   echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1094 fi
1095
1096 # XXX: suppress that
1097 if [ "$bsd" = "yes" ] ; then
1098   echo "#define O_LARGEFILE 0" >> $config_h
1099   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1100   echo "#define _BSD 1" >> $config_h
1101 fi
1102
1103 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1104
1105 tools=
1106 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1107   tools="qemu-img\$(EXESUF) $tools"
1108 fi
1109 echo "TOOLS=$tools" >> $config_mak
1110
1111 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1112
1113 for target in $target_list; do
1114 target_dir="$target"
1115 config_mak=$target_dir/config.mak
1116 config_h=$target_dir/config.h
1117 target_cpu=`echo $target | cut -d '-' -f 1`
1118 target_bigendian="no"
1119 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1120 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1121 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1122 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1123 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1124 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1125 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1126 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1127 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1128 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1129 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1130 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1131 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1132 target_softmmu="no"
1133 target_user_only="no"
1134 target_linux_user="no"
1135 target_darwin_user="no"
1136 case "$target" in
1137   ${target_cpu}-softmmu)
1138     target_softmmu="yes"
1139     ;;
1140   ${target_cpu}-linux-user)
1141     target_user_only="yes"
1142     target_linux_user="yes"
1143     ;;
1144   ${target_cpu}-darwin-user)
1145     target_user_only="yes"
1146     target_darwin_user="yes"
1147     ;;
1148   *)
1149     echo "ERROR: Target '$target' not recognised"
1150     exit 1
1151     ;;
1152 esac
1153
1154 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1155         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1156     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1157     echo "To build QEMU without graphical output configure with --disable-gfx-check"
1158     echo "Note that this will disable all output from the virtual graphics card"
1159     echo "except through VNC or curses."
1160     exit 1;
1161 fi
1162
1163 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1164
1165 test -f $config_h && mv $config_h ${config_h}~
1166
1167 mkdir -p $target_dir
1168 mkdir -p $target_dir/fpu
1169 mkdir -p $target_dir/tcg
1170 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1171   mkdir -p $target_dir/nwfpe
1172 fi
1173
1174 #
1175 # don't use ln -sf as not all "ln -sf" over write the file/link
1176 #
1177 rm -f $target_dir/Makefile
1178 ln -s $source_path/Makefile.target $target_dir/Makefile
1179
1180
1181 echo "# Automatically generated by configure - do not modify" > $config_mak
1182 echo "/* Automatically generated by configure - do not modify */" > $config_h
1183
1184
1185 echo "include ../config-host.mak" >> $config_mak
1186 echo "#include \"../config-host.h\"" >> $config_h
1187
1188 bflt="no"
1189 elfload32="no"
1190 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1191 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1192
1193 case "$target_cpu" in
1194   i386)
1195     echo "TARGET_ARCH=i386" >> $config_mak
1196     echo "#define TARGET_ARCH \"i386\"" >> $config_h
1197     echo "#define TARGET_I386 1" >> $config_h
1198     if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386"
1199     then
1200       echo "#define USE_KQEMU 1" >> $config_h
1201     fi
1202     gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1203     if test -n "$gcc3minver" -a $gcc3minver -gt 3
1204     then
1205       echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1206     else
1207       echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1208     fi
1209   ;;
1210   x86_64)
1211     echo "TARGET_ARCH=x86_64" >> $config_mak
1212     echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1213     echo "#define TARGET_I386 1" >> $config_h
1214     echo "#define TARGET_X86_64 1" >> $config_h
1215     if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1216     then
1217       echo "#define USE_KQEMU 1" >> $config_h
1218     fi
1219   ;;
1220   alpha)
1221     echo "TARGET_ARCH=alpha" >> $config_mak
1222     echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1223     echo "#define TARGET_ALPHA 1" >> $config_h
1224   ;;
1225   arm|armeb)
1226     echo "TARGET_ARCH=arm" >> $config_mak
1227     echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak
1228     echo "#define TARGET_ARCH \"arm\"" >> $config_h
1229     echo "#define TARGET_ARM 1" >> $config_h
1230     echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h
1231     bflt="yes"
1232   ;;
1233   cris)
1234     echo "TARGET_ARCH=cris" >> $config_mak
1235     echo "#define TARGET_ARCH \"cris\"" >> $config_h
1236     echo "#define TARGET_CRIS 1" >> $config_h
1237     echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1238     echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1239   ;;
1240   m68k)
1241     echo "TARGET_ARCH=m68k" >> $config_mak
1242     echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1243     echo "#define TARGET_M68K 1" >> $config_h
1244     bflt="yes"
1245   ;;
1246   mips|mipsel)
1247     echo "TARGET_ARCH=mips" >> $config_mak
1248     echo "#define TARGET_ARCH \"mips\"" >> $config_h
1249     echo "#define TARGET_MIPS 1" >> $config_h
1250     echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1251   ;;
1252   mipsn32|mipsn32el)
1253     echo "TARGET_ARCH=mipsn32" >> $config_mak
1254     echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1255     echo "#define TARGET_MIPS 1" >> $config_h
1256     echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1257   ;;
1258   mips64|mips64el)
1259     echo "TARGET_ARCH=mips64" >> $config_mak
1260     echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1261     echo "#define TARGET_MIPS 1" >> $config_h
1262     echo "#define TARGET_MIPS64 1" >> $config_h
1263     echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1264   ;;
1265   ppc)
1266     echo "TARGET_ARCH=ppc" >> $config_mak
1267     echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1268     echo "#define TARGET_PPC 1" >> $config_h
1269   ;;
1270   ppcemb)
1271     echo "TARGET_ARCH=ppcemb" >> $config_mak
1272     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1273     echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1274     echo "#define TARGET_PPC 1" >> $config_h
1275     echo "#define TARGET_PPCEMB 1" >> $config_h
1276   ;;
1277   ppc64)
1278     echo "TARGET_ARCH=ppc64" >> $config_mak
1279     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1280     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1281     echo "#define TARGET_PPC 1" >> $config_h
1282     echo "#define TARGET_PPC64 1" >> $config_h
1283   ;;
1284   ppc64abi32)
1285     echo "TARGET_ARCH=ppc64" >> $config_mak
1286     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1287     echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1288     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1289     echo "#define TARGET_PPC 1" >> $config_h
1290     echo "#define TARGET_PPC64 1" >> $config_h
1291     echo "#define TARGET_ABI32 1" >> $config_h
1292   ;;
1293   sh4|sh4eb)
1294     echo "TARGET_ARCH=sh4" >> $config_mak
1295     echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1296     echo "#define TARGET_SH4 1" >> $config_h
1297     bflt="yes"
1298   ;;
1299   sparc)
1300     echo "TARGET_ARCH=sparc" >> $config_mak
1301     echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak
1302     echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1303     echo "#define TARGET_SPARC 1" >> $config_h
1304     echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h
1305   ;;
1306   sparc64)
1307     echo "TARGET_ARCH=sparc64" >> $config_mak
1308     echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak
1309     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1310     echo "#define TARGET_SPARC 1" >> $config_h
1311     echo "#define TARGET_SPARC64 1" >> $config_h
1312     echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h
1313     elfload32="yes"
1314   ;;
1315   sparc32plus)
1316     echo "TARGET_ARCH=sparc64" >> $config_mak
1317     echo "TARGET_ABI_DIR=sparc" >> $config_mak
1318     echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1319     echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak
1320     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1321     echo "#define TARGET_SPARC 1" >> $config_h
1322     echo "#define TARGET_SPARC64 1" >> $config_h
1323     echo "#define TARGET_ABI32 1" >> $config_h
1324     echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h
1325   ;;
1326   *)
1327     echo "Unsupported target CPU"
1328     exit 1
1329   ;;
1330 esac
1331 if test "$target_bigendian" = "yes" ; then
1332   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1333   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1334 fi
1335 if test "$target_softmmu" = "yes" ; then
1336   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1337   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1338 fi
1339 if test "$target_user_only" = "yes" ; then
1340   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1341   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1342 fi
1343 if test "$target_linux_user" = "yes" ; then
1344   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1345   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1346 fi
1347 if test "$target_darwin_user" = "yes" ; then
1348   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1349   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1350 fi
1351
1352 if test "$target_cpu" = "arm" \
1353      -o "$target_cpu" = "armeb" \
1354      -o "$target_cpu" = "m68k" \
1355      -o "$target_cpu" = "mips" \
1356      -o "$target_cpu" = "mipsel" \
1357      -o "$target_cpu" = "mipsn32" \
1358      -o "$target_cpu" = "mipsn32el" \
1359      -o "$target_cpu" = "mips64" \
1360      -o "$target_cpu" = "mips64el" \
1361      -o "$target_cpu" = "sparc" \
1362      -o "$target_cpu" = "sparc64" \
1363      -o "$target_cpu" = "sparc32plus"; then
1364   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1365   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1366 fi
1367 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1368   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1369   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1370 fi
1371 # 32 bit ELF loader in addition to native 64 bit loader?
1372 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1373   echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1374   echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1375 fi
1376
1377 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1378
1379 done # for target in $targets
1380
1381 # build tree in object directory if source path is different from current one
1382 if test "$source_path_used" = "yes" ; then
1383     DIRS="tests tests/cris slirp audio"
1384     FILES="Makefile tests/Makefile"
1385     FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1386     FILES="$FILES tests/test-mmap.c"
1387     for dir in $DIRS ; do
1388             mkdir -p $dir
1389     done
1390     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1391     for f in $FILES ; do
1392         rm -f $f
1393         ln -s $source_path/$f $f
1394     done
1395 fi
1396
1397 rm -f $TMPO $TMPC $TMPE $TMPS