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