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