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