HPPA (PA-RISC) host support
[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="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"
543     fi
544 # the following are Linux specific
545     if [ "$linux_user" = "yes" ] ; then
546         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"
547     fi
548 # the following are Darwin specific
549     if [ "$darwin_user" = "yes" ] ; then
550         target_list="i386-darwin-user ppc-darwin-user $target_list"
551     fi
552 else
553     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
554 fi
555 if test -z "$target_list" ; then
556     echo "No targets enabled"
557     exit 1
558 fi
559
560 if test -z "$cross_prefix" ; then
561
562 # ---
563 # big/little endian test
564 cat > $TMPC << EOF
565 #include <inttypes.h>
566 int main(int argc, char ** argv){
567         volatile uint32_t i=0x01234567;
568         return (*((uint8_t*)(&i))) == 0x67;
569 }
570 EOF
571
572 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
573 $TMPE && bigendian="yes"
574 else
575 echo big/little test failed
576 fi
577
578 else
579
580 # if cross compiling, cannot launch a program, so make a static guess
581 if test "$cpu" = "armv4b" \
582      -o "$cpu" = "hppa" \
583      -o "$cpu" = "m68k" \
584      -o "$cpu" = "mips" \
585      -o "$cpu" = "mips64" \
586      -o "$cpu" = "powerpc" \
587      -o "$cpu" = "s390" \
588      -o "$cpu" = "sparc" \
589      -o "$cpu" = "sparc64"; then
590     bigendian="yes"
591 fi
592
593 fi
594
595 # host long bits test
596 hostlongbits="32"
597 if test "$cpu" = "x86_64" \
598      -o "$cpu" = "alpha" \
599      -o "$cpu" = "ia64" \
600      -o "$cpu" = "sparc64"; then
601     hostlongbits="64"
602 fi
603
604 # check gcc options support
605 cat > $TMPC <<EOF
606 int main(void) {
607 }
608 EOF
609
610 ##########################################
611 # SDL probe
612
613 sdl_too_old=no
614
615 if test -z "$sdl" ; then
616     sdl_config="sdl-config"
617     sdl=no
618     sdl_static=no
619
620     if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
621     # win32 cross compilation case
622         sdl_config="i386-mingw32msvc-sdl-config"
623         sdl=yes
624     else
625         # normal SDL probe
626 cat > $TMPC << EOF
627 #include <SDL.h>
628 #undef main /* We don't want SDL to override our main() */
629 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
630 EOF
631         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
632             _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
633             if test "$_sdlversion" -lt 121 ; then
634                 sdl_too_old=yes
635             else
636                 if test "$cocoa" = "no" ; then
637                     sdl=yes
638                 fi
639             fi
640
641             # static link with sdl ?
642             if test "$sdl" = "yes" ; then
643                 aa="no"
644                 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
645                 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
646                 if [ "$aa" = "yes" ] ; then
647                     sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
648                 fi
649
650                 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
651                     sdl_static=yes
652                 fi
653             fi # static link
654         fi # sdl compile test
655     fi # cross compilation
656 else
657     # Make sure to disable cocoa if sdl was set
658     if test "$sdl" = "yes" ; then
659        cocoa="no"
660        coreaudio="no"
661     fi
662 fi # -z $sdl
663
664 ##########################################
665 # VNC TLS detection
666 if test "$vnc_tls" = "yes" ; then
667   `pkg-config gnutls` || vnc_tls="no"
668 fi
669 if test "$vnc_tls" = "yes" ; then
670   vnc_tls_cflags=`pkg-config --cflags gnutls`
671   vnc_tls_libs=`pkg-config --libs gnutls`
672 fi
673
674 ##########################################
675 # alsa sound support libraries
676
677 if test "$alsa" = "yes" ; then
678   cat > $TMPC << EOF
679 #include <alsa/asoundlib.h>
680 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
681 EOF
682   if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lasound 2> /dev/null ; then
683     :
684   else
685     echo
686     echo "Error: Could not find alsa"
687     echo "Make sure to have the alsa libs and headers installed."
688     echo
689     exit 1
690   fi
691 fi
692
693 ##########################################
694 # BrlAPI probe
695
696 if test -z "$brlapi" ; then
697     brlapi=no
698 cat > $TMPC << EOF
699 #include <brlapi.h>
700 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
701 EOF
702     if $cc -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /tmp/qemu-$$-brlapi.log ; then
703             brlapi=yes
704     fi # brlapi compile test
705 fi # -z $brlapi
706
707 ##########################################
708 # curses probe
709
710 if test "$curses" = "yes" ; then
711   curses=no
712   cat > $TMPC << EOF
713 #include <curses.h>
714 int main(void) { return curses_version(); }
715 EOF
716   if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
717     curses=yes
718   fi
719 fi # test "$curses"
720
721 # Check if tools are available to build documentation.
722 if [ -x "`which texi2html 2>/dev/null`" ] && \
723    [ -x "`which pod2man 2>/dev/null`" ]; then
724   build_docs="yes"
725 fi
726
727 if test "$mingw32" = "yes" ; then
728   if test -z "$prefix" ; then
729       prefix="/c/Program Files/Qemu"
730   fi
731   mansuffix=""
732   datasuffix=""
733   docsuffix=""
734   binsuffix=""
735 else
736   if test -z "$prefix" ; then
737       prefix="/usr/local"
738   fi
739   mansuffix="/share/man"
740   datasuffix="/share/qemu"
741   docsuffix="/share/doc/qemu"
742   binsuffix="/bin"
743 fi
744
745 echo "Install prefix    $prefix"
746 echo "BIOS directory    $prefix$datasuffix"
747 echo "binary directory  $prefix$binsuffix"
748 if test "$mingw32" = "no" ; then
749 echo "Manual directory  $prefix$mansuffix"
750 echo "ELF interp prefix $interp_prefix"
751 fi
752 echo "Source path       $source_path"
753 echo "C compiler        $cc"
754 echo "Host C compiler   $host_cc"
755 echo "ARCH_CFLAGS       $ARCH_CFLAGS"
756 echo "make              $make"
757 echo "install           $install"
758 echo "host CPU          $cpu"
759 echo "host big endian   $bigendian"
760 echo "target list       $target_list"
761 echo "gprof enabled     $gprof"
762 echo "profiler          $profiler"
763 echo "static build      $static"
764 echo "-Werror enabled   $werror"
765 if test "$darwin" = "yes" ; then
766     echo "Cocoa support     $cocoa"
767 fi
768 echo "SDL support       $sdl"
769 if test "$sdl" != "no" ; then
770     echo "SDL static link   $sdl_static"
771 fi
772 echo "curses support    $curses"
773 echo "mingw32 support   $mingw32"
774 echo "Adlib support     $adlib"
775 echo "AC97 support      $ac97"
776 echo "GUS support       $gus"
777 echo "CoreAudio support $coreaudio"
778 echo "ALSA support      $alsa"
779 echo "EsounD support    $esd"
780 echo "DSound support    $dsound"
781 if test "$fmod" = "yes"; then
782     if test -z $fmod_lib || test -z $fmod_inc; then
783         echo
784         echo "Error: You must specify path to FMOD library and headers"
785         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
786         echo
787         exit 1
788     fi
789     fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
790 else
791     fmod_support=""
792 fi
793 echo "FMOD support      $fmod $fmod_support"
794 echo "OSS support       $oss"
795 echo "VNC TLS support   $vnc_tls"
796 if test "$vnc_tls" = "yes" ; then
797     echo "    TLS CFLAGS    $vnc_tls_cflags"
798     echo "    TLS LIBS      $vnc_tls_libs"
799 fi
800 if test -n "$sparc_cpu"; then
801     echo "Target Sparc Arch $sparc_cpu"
802 fi
803 echo "kqemu support     $kqemu"
804 echo "brlapi support    $brlapi"
805 echo "Documentation     $build_docs"
806 [ ! -z "$uname_release" ] && \
807 echo "uname -r          $uname_release"
808
809 if test $sdl_too_old = "yes"; then
810 echo "-> Your SDL version is too old - please upgrade to have SDL support"
811 fi
812 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
813   echo "The error log from compiling the libSDL test is: "
814   cat /tmp/qemu-$$-sdl-config.log
815 fi
816 rm -f /tmp/qemu-$$-sdl-config.log
817 #if test "$sdl_static" = "no"; then
818 #  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
819 #fi
820 config_mak="config-host.mak"
821 config_h="config-host.h"
822
823 #echo "Creating $config_mak and $config_h"
824
825 test -f $config_h && mv $config_h ${config_h}~
826
827 echo "# Automatically generated by configure - do not modify" > $config_mak
828 echo "# Configured with: $0 $@" >> $config_mak
829 echo "/* Automatically generated by configure - do not modify */" > $config_h
830
831 echo "prefix=$prefix" >> $config_mak
832 echo "bindir=\${prefix}$binsuffix" >> $config_mak
833 echo "mandir=\${prefix}$mansuffix" >> $config_mak
834 echo "datadir=\${prefix}$datasuffix" >> $config_mak
835 echo "docdir=\${prefix}$docsuffix" >> $config_mak
836 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
837 echo "MAKE=$make" >> $config_mak
838 echo "INSTALL=$install" >> $config_mak
839 echo "CC=$cc" >> $config_mak
840 echo "HOST_CC=$host_cc" >> $config_mak
841 echo "AR=$ar" >> $config_mak
842 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
843 # XXX: only use CFLAGS and LDFLAGS ?  
844 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
845 # compilation of dyngen tool (useful for win32 build on Linux host)
846 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
847 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
848 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
849 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
850 echo "CFLAGS=$CFLAGS" >> $config_mak
851 echo "LDFLAGS=$LDFLAGS" >> $config_mak
852 echo "EXESUF=$EXESUF" >> $config_mak
853 echo "AIOLIBS=$AIOLIBS" >> $config_mak
854 if test "$cpu" = "i386" ; then
855   echo "ARCH=i386" >> $config_mak
856   echo "#define HOST_I386 1" >> $config_h
857 elif test "$cpu" = "x86_64" ; then
858   echo "ARCH=x86_64" >> $config_mak
859   echo "#define HOST_X86_64 1" >> $config_h
860 elif test "$cpu" = "alpha" ; then
861   echo "ARCH=alpha" >> $config_mak
862   echo "#define HOST_ALPHA 1" >> $config_h
863 elif test "$cpu" = "armv4b" ; then
864   echo "ARCH=arm" >> $config_mak
865   echo "#define HOST_ARM 1" >> $config_h
866 elif test "$cpu" = "armv4l" ; then
867   echo "ARCH=arm" >> $config_mak
868   echo "#define HOST_ARM 1" >> $config_h
869 elif test "$cpu" = "cris" ; then
870   echo "ARCH=cris" >> $config_mak
871   echo "#define HOST_CRIS 1" >> $config_h
872 elif test "$cpu" = "hppa" ; then
873   echo "ARCH=hppa" >> $config_mak
874   echo "#define HOST_HPPA 1" >> $config_h
875 elif test "$cpu" = "ia64" ; then
876   echo "ARCH=ia64" >> $config_mak
877   echo "#define HOST_IA64 1" >> $config_h
878 elif test "$cpu" = "m68k" ; then
879   echo "ARCH=m68k" >> $config_mak
880   echo "#define HOST_M68K 1" >> $config_h
881 elif test "$cpu" = "mips" ; then
882   echo "ARCH=mips" >> $config_mak
883   echo "#define HOST_MIPS 1" >> $config_h
884 elif test "$cpu" = "mips64" ; then
885   echo "ARCH=mips64" >> $config_mak
886   echo "#define HOST_MIPS64 1" >> $config_h
887 elif test "$cpu" = "powerpc" ; then
888   echo "ARCH=ppc" >> $config_mak
889   echo "#define HOST_PPC 1" >> $config_h
890 elif test "$cpu" = "s390" ; then
891   echo "ARCH=s390" >> $config_mak
892   echo "#define HOST_S390 1" >> $config_h
893 elif test "$cpu" = "sparc" ; then
894   echo "ARCH=sparc" >> $config_mak
895   echo "#define HOST_SPARC 1" >> $config_h
896 elif test "$cpu" = "sparc64" ; then
897   echo "ARCH=sparc64" >> $config_mak
898   echo "#define HOST_SPARC64 1" >> $config_h
899 else
900   echo "Unsupported CPU = $cpu"
901   exit 1
902 fi
903 if test "$bigendian" = "yes" ; then
904   echo "WORDS_BIGENDIAN=yes" >> $config_mak
905   echo "#define WORDS_BIGENDIAN 1" >> $config_h
906 fi
907 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
908 if test "$mingw32" = "yes" ; then
909   echo "CONFIG_WIN32=yes" >> $config_mak
910   echo "#define CONFIG_WIN32 1" >> $config_h
911 else
912   cat > $TMPC << EOF
913 #include <byteswap.h>
914 int main(void) { return bswap_32(0); }
915 EOF
916   if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
917     echo "#define HAVE_BYTESWAP_H 1" >> $config_h
918   fi
919 fi
920 if test "$darwin" = "yes" ; then
921   echo "CONFIG_DARWIN=yes" >> $config_mak
922   echo "#define CONFIG_DARWIN 1" >> $config_h
923 fi
924 if test "$solaris" = "yes" ; then
925   echo "CONFIG_SOLARIS=yes" >> $config_mak
926   echo "#define HOST_SOLARIS $solarisrev" >> $config_h
927   if test "$needs_libsunmath" = "yes" ; then
928     echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
929     echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
930   fi
931 fi
932 if test -n "$sparc_cpu"; then
933   echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
934   echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
935 fi
936 if test "$gdbstub" = "yes" ; then
937   echo "CONFIG_GDBSTUB=yes" >> $config_mak
938   echo "#define CONFIG_GDBSTUB 1" >> $config_h
939 fi
940 if test "$gprof" = "yes" ; then
941   echo "TARGET_GPROF=yes" >> $config_mak
942   echo "#define HAVE_GPROF 1" >> $config_h
943 fi
944 if test "$static" = "yes" ; then
945   echo "CONFIG_STATIC=yes" >> $config_mak
946   echo "#define CONFIG_STATIC 1" >> $config_h
947 fi
948 if test $profiler = "yes" ; then
949   echo "#define CONFIG_PROFILER 1" >> $config_h
950 fi
951 if test "$slirp" = "yes" ; then
952   echo "CONFIG_SLIRP=yes" >> $config_mak
953   echo "#define CONFIG_SLIRP 1" >> $config_h
954 fi
955 if test "$adlib" = "yes" ; then
956   echo "CONFIG_ADLIB=yes" >> $config_mak
957   echo "#define CONFIG_ADLIB 1" >> $config_h
958 fi
959 if test "$ac97" = "yes" ; then
960   echo "CONFIG_AC97=yes" >> $config_mak
961   echo "#define CONFIG_AC97 1" >> $config_h
962 fi
963 if test "$gus" = "yes" ; then
964   echo "CONFIG_GUS=yes" >> $config_mak
965   echo "#define CONFIG_GUS 1" >> $config_h
966 fi
967 if test "$oss" = "yes" ; then
968   echo "CONFIG_OSS=yes" >> $config_mak
969   echo "#define CONFIG_OSS 1" >> $config_h
970 fi
971 if test "$coreaudio" = "yes" ; then
972   echo "CONFIG_COREAUDIO=yes" >> $config_mak
973   echo "#define CONFIG_COREAUDIO 1" >> $config_h
974 fi
975 if test "$alsa" = "yes" ; then
976   echo "CONFIG_ALSA=yes" >> $config_mak
977   echo "#define CONFIG_ALSA 1" >> $config_h
978 fi
979 if test "$esd" = "yes" ; then
980   echo "CONFIG_ESD=yes" >> $config_mak
981   echo "#define CONFIG_ESD 1" >> $config_h
982 fi
983 if test "$dsound" = "yes" ; then
984   echo "CONFIG_DSOUND=yes" >> $config_mak
985   echo "#define CONFIG_DSOUND 1" >> $config_h
986 fi
987 if test "$fmod" = "yes" ; then
988   echo "CONFIG_FMOD=yes" >> $config_mak
989   echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
990   echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
991   echo "#define CONFIG_FMOD 1" >> $config_h
992 fi
993 if test "$vnc_tls" = "yes" ; then
994   echo "CONFIG_VNC_TLS=yes" >> $config_mak
995   echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
996   echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
997   echo "#define CONFIG_VNC_TLS 1" >> $config_h
998 fi
999 qemu_version=`head $source_path/VERSION`
1000 echo "VERSION=$qemu_version" >>$config_mak
1001 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1002
1003 echo "SRC_PATH=$source_path" >> $config_mak
1004 if [ "$source_path_used" = "yes" ]; then
1005   echo "VPATH=$source_path" >> $config_mak
1006 fi
1007 echo "TARGET_DIRS=$target_list" >> $config_mak
1008 if [ "$build_docs" = "yes" ] ; then
1009   echo "BUILD_DOCS=yes" >> $config_mak
1010 fi
1011 if test "$static" = "yes"; then
1012   sdl1=$sdl_static
1013 else
1014   sdl1=$sdl
1015 fi
1016 if test "$sdl1" = "yes" ; then
1017   echo "#define CONFIG_SDL 1" >> $config_h
1018   echo "CONFIG_SDL=yes" >> $config_mak
1019   if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1020     echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1021   else
1022     echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1023   fi
1024   if [ "${aa}" = "yes" ] ; then
1025     echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1026   else
1027     echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1028   fi
1029 fi
1030 if test "$cocoa" = "yes" ; then
1031   echo "#define CONFIG_COCOA 1" >> $config_h
1032   echo "CONFIG_COCOA=yes" >> $config_mak
1033 fi
1034 if test "$curses" = "yes" ; then
1035   echo "#define CONFIG_CURSES 1" >> $config_h
1036   echo "CONFIG_CURSES=yes" >> $config_mak
1037   echo "CURSES_LIBS=-lcurses" >> $config_mak
1038 fi
1039 if test "$brlapi" = "yes" ; then
1040   echo "CONFIG_BRLAPI=yes" >> $config_mak
1041   echo "#define CONFIG_BRLAPI 1" >> $config_h
1042   echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1043 fi
1044
1045 # XXX: suppress that
1046 if [ "$bsd" = "yes" ] ; then
1047   echo "#define O_LARGEFILE 0" >> $config_h
1048   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1049   echo "#define _BSD 1" >> $config_h
1050 fi
1051
1052 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1053
1054 tools=
1055 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1056   tools="qemu-img\$(EXESUF) $tools"
1057 fi
1058 echo "TOOLS=$tools" >> $config_mak
1059
1060 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1061
1062 for target in $target_list; do
1063 target_dir="$target"
1064 config_mak=$target_dir/config.mak
1065 config_h=$target_dir/config.h
1066 target_cpu=`echo $target | cut -d '-' -f 1`
1067 target_bigendian="no"
1068 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1069 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1070 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1071 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1072 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1073 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1074 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1075 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1076 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1077 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1078 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1079 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1080 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1081 target_softmmu="no"
1082 target_user_only="no"
1083 target_linux_user="no"
1084 target_darwin_user="no"
1085 case "$target" in
1086   ${target_cpu}-softmmu)
1087     target_softmmu="yes"
1088     ;;
1089   ${target_cpu}-linux-user)
1090     target_user_only="yes"
1091     target_linux_user="yes"
1092     ;;
1093   ${target_cpu}-darwin-user)
1094     target_user_only="yes"
1095     target_darwin_user="yes"
1096     ;;
1097   *)
1098     echo "ERROR: Target '$target' not recognised"
1099     exit 1
1100     ;;
1101 esac
1102
1103 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1104         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1105     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1106     echo "To build QEMU without graphical output configure with --disable-gfx-check"
1107     echo "Note that this will disable all output from the virtual graphics card"
1108     echo "except through VNC or curses."
1109     exit 1;
1110 fi
1111
1112 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1113
1114 test -f $config_h && mv $config_h ${config_h}~
1115
1116 mkdir -p $target_dir
1117 mkdir -p $target_dir/fpu
1118 mkdir -p $target_dir/tcg
1119 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1120   mkdir -p $target_dir/nwfpe
1121 fi
1122
1123 #
1124 # don't use ln -sf as not all "ln -sf" over write the file/link
1125 #
1126 rm -f $target_dir/Makefile
1127 ln -s $source_path/Makefile.target $target_dir/Makefile
1128
1129
1130 echo "# Automatically generated by configure - do not modify" > $config_mak
1131 echo "/* Automatically generated by configure - do not modify */" > $config_h
1132
1133
1134 echo "include ../config-host.mak" >> $config_mak
1135 echo "#include \"../config-host.h\"" >> $config_h
1136
1137 bflt="no"
1138 elfload32="no"
1139 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1140 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1141
1142 if test "$target_cpu" = "i386" ; then
1143   echo "TARGET_ARCH=i386" >> $config_mak
1144   echo "#define TARGET_ARCH \"i386\"" >> $config_h
1145   echo "#define TARGET_I386 1" >> $config_h
1146   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1147     echo "#define USE_KQEMU 1" >> $config_h
1148   fi
1149 elif test "$target_cpu" = "x86_64" ; then
1150   echo "TARGET_ARCH=x86_64" >> $config_mak
1151   echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1152   echo "#define TARGET_I386 1" >> $config_h
1153   echo "#define TARGET_X86_64 1" >> $config_h
1154   if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"  ; then
1155     echo "#define USE_KQEMU 1" >> $config_h
1156   fi
1157 elif test "$target_cpu" = "alpha" ; then
1158   echo "TARGET_ARCH=alpha" >> $config_mak
1159   echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1160   echo "#define TARGET_ALPHA 1" >> $config_h
1161 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1162   echo "TARGET_ARCH=arm" >> $config_mak
1163   echo "CONFIG_NO_DYNGEN_OP=yes" >> $config_mak
1164   echo "#define TARGET_ARCH \"arm\"" >> $config_h
1165   echo "#define TARGET_ARM 1" >> $config_h
1166   echo "#define CONFIG_NO_DYNGEN_OP 1" >> $config_h
1167   bflt="yes"
1168 elif test "$target_cpu" = "cris" ; then
1169   echo "TARGET_ARCH=cris" >> $config_mak
1170   echo "#define TARGET_ARCH \"cris\"" >> $config_h
1171   echo "#define TARGET_CRIS 1" >> $config_h
1172   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1173   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1174 elif test "$target_cpu" = "m68k" ; then
1175   echo "TARGET_ARCH=m68k" >> $config_mak
1176   echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1177   echo "#define TARGET_M68K 1" >> $config_h
1178   bflt="yes"
1179 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1180   echo "TARGET_ARCH=mips" >> $config_mak
1181   echo "#define TARGET_ARCH \"mips\"" >> $config_h
1182   echo "#define TARGET_MIPS 1" >> $config_h
1183   echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1184 elif test "$target_cpu" = "mipsn32" -o "$target_cpu" = "mipsn32el" ; then
1185   echo "TARGET_ARCH=mipsn32" >> $config_mak
1186   echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1187   echo "#define TARGET_MIPS 1" >> $config_h
1188   echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1189 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1190   echo "TARGET_ARCH=mips64" >> $config_mak
1191   echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1192   echo "#define TARGET_MIPS 1" >> $config_h
1193   echo "#define TARGET_MIPS64 1" >> $config_h
1194   echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1195 elif test "$target_cpu" = "ppc" ; then
1196   echo "TARGET_ARCH=ppc" >> $config_mak
1197   echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1198   echo "#define TARGET_PPC 1" >> $config_h
1199 elif test "$target_cpu" = "ppcemb" ; then
1200   echo "TARGET_ARCH=ppcemb" >> $config_mak
1201   echo "TARGET_ABI_DIR=ppc" >> $config_mak
1202   echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1203   echo "#define TARGET_PPC 1" >> $config_h
1204   echo "#define TARGET_PPCEMB 1" >> $config_h
1205 elif test "$target_cpu" = "ppc64" ; then
1206   echo "TARGET_ARCH=ppc64" >> $config_mak
1207   echo "TARGET_ABI_DIR=ppc" >> $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 elif test "$target_cpu" = "ppc64abi32" ; then
1212   echo "TARGET_ARCH=ppc64" >> $config_mak
1213   echo "TARGET_ABI_DIR=ppc" >> $config_mak
1214   echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1215   echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1216   echo "#define TARGET_PPC 1" >> $config_h
1217   echo "#define TARGET_PPC64 1" >> $config_h
1218   echo "#define TARGET_ABI32 1" >> $config_h
1219 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1220   echo "TARGET_ARCH=sh4" >> $config_mak
1221   echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1222   echo "#define TARGET_SH4 1" >> $config_h
1223   bflt="yes"
1224 elif test "$target_cpu" = "sparc" ; then
1225   echo "TARGET_ARCH=sparc" >> $config_mak
1226   echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1227   echo "#define TARGET_SPARC 1" >> $config_h
1228 elif test "$target_cpu" = "sparc64" ; then
1229   echo "TARGET_ARCH=sparc64" >> $config_mak
1230   echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1231   echo "#define TARGET_SPARC 1" >> $config_h
1232   echo "#define TARGET_SPARC64 1" >> $config_h
1233   elfload32="yes"
1234 elif test "$target_cpu" = "sparc32plus" ; then
1235   echo "TARGET_ARCH=sparc64" >> $config_mak
1236   echo "TARGET_ABI_DIR=sparc" >> $config_mak
1237   echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1238   echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1239   echo "#define TARGET_SPARC 1" >> $config_h
1240   echo "#define TARGET_SPARC64 1" >> $config_h
1241   echo "#define TARGET_ABI32 1" >> $config_h
1242 else
1243   echo "Unsupported target CPU"
1244   exit 1
1245 fi
1246 if test "$target_bigendian" = "yes" ; then
1247   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1248   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1249 fi
1250 if test "$target_softmmu" = "yes" ; then
1251   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1252   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1253 fi
1254 if test "$target_user_only" = "yes" ; then
1255   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1256   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1257 fi
1258 if test "$target_linux_user" = "yes" ; then
1259   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1260   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1261 fi
1262 if test "$target_darwin_user" = "yes" ; then
1263   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1264   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1265 fi
1266
1267 if test "$target_cpu" = "arm" \
1268      -o "$target_cpu" = "armeb" \
1269      -o "$target_cpu" = "m68k" \
1270      -o "$target_cpu" = "mips" \
1271      -o "$target_cpu" = "mipsel" \
1272      -o "$target_cpu" = "mipsn32" \
1273      -o "$target_cpu" = "mipsn32el" \
1274      -o "$target_cpu" = "mips64" \
1275      -o "$target_cpu" = "mips64el" \
1276      -o "$target_cpu" = "sparc" \
1277      -o "$target_cpu" = "sparc64" \
1278      -o "$target_cpu" = "sparc32plus"; then
1279   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1280   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1281 fi
1282 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1283   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1284   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1285 fi
1286 # 32 bit ELF loader in addition to native 64 bit loader?
1287 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1288   echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1289   echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1290 fi
1291
1292 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1293
1294 done # for target in $targets
1295
1296 # build tree in object directory if source path is different from current one
1297 if test "$source_path_used" = "yes" ; then
1298     DIRS="tests tests/cris slirp audio"
1299     FILES="Makefile tests/Makefile"
1300     FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1301     FILES="$FILES tests/test-mmap.c"
1302     for dir in $DIRS ; do
1303             mkdir -p $dir
1304     done
1305     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1306     for f in $FILES ; do
1307         rm -f $f
1308         ln -s $source_path/$f $f
1309     done
1310 fi
1311
1312 rm -f $TMPO $TMPC $TMPE $TMPS