qemu-nbd tool (Anthony Liguori)
[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   if [ "$linux" = "yes" ] ; then
1109       tools="qemu-nbd\$(EXESUF) $tools"
1110   fi
1111 fi
1112 echo "TOOLS=$tools" >> $config_mak
1113
1114 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1115
1116 for target in $target_list; do
1117 target_dir="$target"
1118 config_mak=$target_dir/config.mak
1119 config_h=$target_dir/config.h
1120 target_cpu=`echo $target | cut -d '-' -f 1`
1121 target_bigendian="no"
1122 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1123 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1124 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1125 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1126 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1127 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1128 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1129 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1130 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1131 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1132 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1133 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1134 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1135 target_softmmu="no"
1136 target_user_only="no"
1137 target_linux_user="no"
1138 target_darwin_user="no"
1139 case "$target" in
1140   ${target_cpu}-softmmu)
1141     target_softmmu="yes"
1142     ;;
1143   ${target_cpu}-linux-user)
1144     target_user_only="yes"
1145     target_linux_user="yes"
1146     ;;
1147   ${target_cpu}-darwin-user)
1148     target_user_only="yes"
1149     target_darwin_user="yes"
1150     ;;
1151   *)
1152     echo "ERROR: Target '$target' not recognised"
1153     exit 1
1154     ;;
1155 esac
1156
1157 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1158         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1159     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1160     echo "To build QEMU without graphical output configure with --disable-gfx-check"
1161     echo "Note that this will disable all output from the virtual graphics card"
1162     echo "except through VNC or curses."
1163     exit 1;
1164 fi
1165
1166 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1167
1168 test -f $config_h && mv $config_h ${config_h}~
1169
1170 mkdir -p $target_dir
1171 mkdir -p $target_dir/fpu
1172 mkdir -p $target_dir/tcg
1173 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1174   mkdir -p $target_dir/nwfpe
1175 fi
1176
1177 #
1178 # don't use ln -sf as not all "ln -sf" over write the file/link
1179 #
1180 rm -f $target_dir/Makefile
1181 ln -s $source_path/Makefile.target $target_dir/Makefile
1182
1183
1184 echo "# Automatically generated by configure - do not modify" > $config_mak
1185 echo "/* Automatically generated by configure - do not modify */" > $config_h
1186
1187
1188 echo "include ../config-host.mak" >> $config_mak
1189 echo "#include \"../config-host.h\"" >> $config_h
1190
1191 bflt="no"
1192 elfload32="no"
1193 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1194 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1195
1196 case "$target_cpu" in
1197   i386)
1198     echo "TARGET_ARCH=i386" >> $config_mak
1199     echo "#define TARGET_ARCH \"i386\"" >> $config_h
1200     echo "#define TARGET_I386 1" >> $config_h
1201     if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386"
1202     then
1203       echo "#define USE_KQEMU 1" >> $config_h
1204     fi
1205     gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1206     if test -n "$gcc3minver" && test $gcc3minver -gt 3
1207     then
1208       echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1209     else
1210       echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1211     fi
1212   ;;
1213   x86_64)
1214     echo "TARGET_ARCH=x86_64" >> $config_mak
1215     echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1216     echo "#define TARGET_I386 1" >> $config_h
1217     echo "#define TARGET_X86_64 1" >> $config_h
1218     if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1219     then
1220       echo "#define USE_KQEMU 1" >> $config_h
1221     fi
1222   ;;
1223   alpha)
1224     echo "TARGET_ARCH=alpha" >> $config_mak
1225     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1226     echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1227     echo "#define TARGET_ALPHA 1" >> $config_h
1228     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1229   ;;
1230   arm|armeb)
1231     echo "TARGET_ARCH=arm" >> $config_mak
1232     echo "#define TARGET_ARCH \"arm\"" >> $config_h
1233     echo "#define TARGET_ARM 1" >> $config_h
1234     bflt="yes"
1235   ;;
1236   cris)
1237     echo "TARGET_ARCH=cris" >> $config_mak
1238     echo "#define TARGET_ARCH \"cris\"" >> $config_h
1239     echo "#define TARGET_CRIS 1" >> $config_h
1240   ;;
1241   m68k)
1242     echo "TARGET_ARCH=m68k" >> $config_mak
1243     echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1244     echo "#define TARGET_M68K 1" >> $config_h
1245     bflt="yes"
1246   ;;
1247   mips|mipsel)
1248     echo "TARGET_ARCH=mips" >> $config_mak
1249     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1250     echo "#define TARGET_ARCH \"mips\"" >> $config_h
1251     echo "#define TARGET_MIPS 1" >> $config_h
1252     echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1253     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1254   ;;
1255   mipsn32|mipsn32el)
1256     echo "TARGET_ARCH=mipsn32" >> $config_mak
1257     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1258     echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1259     echo "#define TARGET_MIPS 1" >> $config_h
1260     echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1261     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1262   ;;
1263   mips64|mips64el)
1264     echo "TARGET_ARCH=mips64" >> $config_mak
1265     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1266     echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1267     echo "#define TARGET_MIPS 1" >> $config_h
1268     echo "#define TARGET_MIPS64 1" >> $config_h
1269     echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1270     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1271   ;;
1272   ppc)
1273     echo "TARGET_ARCH=ppc" >> $config_mak
1274     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1275     echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1276     echo "#define TARGET_PPC 1" >> $config_h
1277     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1278   ;;
1279   ppcemb)
1280     echo "TARGET_ARCH=ppcemb" >> $config_mak
1281     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1282     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1283     echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1284     echo "#define TARGET_PPC 1" >> $config_h
1285     echo "#define TARGET_PPCEMB 1" >> $config_h
1286     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1287   ;;
1288   ppc64)
1289     echo "TARGET_ARCH=ppc64" >> $config_mak
1290     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1291     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1292     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1293     echo "#define TARGET_PPC 1" >> $config_h
1294     echo "#define TARGET_PPC64 1" >> $config_h
1295     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1296   ;;
1297   ppc64abi32)
1298     echo "TARGET_ARCH=ppc64" >> $config_mak
1299     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1300     echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1301     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1302     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1303     echo "#define TARGET_PPC 1" >> $config_h
1304     echo "#define TARGET_PPC64 1" >> $config_h
1305     echo "#define TARGET_ABI32 1" >> $config_h
1306     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1307   ;;
1308   sh4|sh4eb)
1309     echo "TARGET_ARCH=sh4" >> $config_mak
1310     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1311     echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1312     echo "#define TARGET_SH4 1" >> $config_h
1313     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1314     bflt="yes"
1315   ;;
1316   sparc)
1317     echo "TARGET_ARCH=sparc" >> $config_mak
1318     echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1319     echo "#define TARGET_SPARC 1" >> $config_h
1320   ;;
1321   sparc64)
1322     echo "TARGET_ARCH=sparc64" >> $config_mak
1323     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1324     echo "#define TARGET_SPARC 1" >> $config_h
1325     echo "#define TARGET_SPARC64 1" >> $config_h
1326     elfload32="yes"
1327   ;;
1328   sparc32plus)
1329     echo "TARGET_ARCH=sparc64" >> $config_mak
1330     echo "TARGET_ABI_DIR=sparc" >> $config_mak
1331     echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1332     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1333     echo "#define TARGET_SPARC 1" >> $config_h
1334     echo "#define TARGET_SPARC64 1" >> $config_h
1335     echo "#define TARGET_ABI32 1" >> $config_h
1336   ;;
1337   *)
1338     echo "Unsupported target CPU"
1339     exit 1
1340   ;;
1341 esac
1342 if test "$target_bigendian" = "yes" ; then
1343   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1344   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1345 fi
1346 if test "$target_softmmu" = "yes" ; then
1347   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1348   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1349 fi
1350 if test "$target_user_only" = "yes" ; then
1351   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1352   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1353 fi
1354 if test "$target_linux_user" = "yes" ; then
1355   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1356   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1357 fi
1358 if test "$target_darwin_user" = "yes" ; then
1359   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1360   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1361 fi
1362
1363 if test "$target_cpu" = "arm" \
1364      -o "$target_cpu" = "armeb" \
1365      -o "$target_cpu" = "m68k" \
1366      -o "$target_cpu" = "mips" \
1367      -o "$target_cpu" = "mipsel" \
1368      -o "$target_cpu" = "mipsn32" \
1369      -o "$target_cpu" = "mipsn32el" \
1370      -o "$target_cpu" = "mips64" \
1371      -o "$target_cpu" = "mips64el" \
1372      -o "$target_cpu" = "sparc" \
1373      -o "$target_cpu" = "sparc64" \
1374      -o "$target_cpu" = "sparc32plus"; then
1375   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1376   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1377 fi
1378 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1379   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1380   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1381 fi
1382 # 32 bit ELF loader in addition to native 64 bit loader?
1383 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1384   echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1385   echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1386 fi
1387
1388 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1389
1390 done # for target in $targets
1391
1392 # build tree in object directory if source path is different from current one
1393 if test "$source_path_used" = "yes" ; then
1394     DIRS="tests tests/cris slirp audio"
1395     FILES="Makefile tests/Makefile"
1396     FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1397     FILES="$FILES tests/test-mmap.c"
1398     for dir in $DIRS ; do
1399             mkdir -p $dir
1400     done
1401     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1402     for f in $FILES ; do
1403         rm -f $f
1404         ln -s $source_path/$f $f
1405     done
1406 fi
1407
1408 rm -f $TMPO $TMPC $TMPE $TMPS