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