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