Enable gcc flag -Wundef
[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 -Wall -Wundef -O2 -g -fno-strict-aliasing"
350 LDFLAGS="$LDFLAGS -g"
351 if test "$werror" = "yes" ; then
352 CFLAGS="$CFLAGS -Werror"
353 fi
354
355 #
356 # If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
357 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
358 #
359 case "$cpu" in
360     sparc) if test -z "$sparc_cpu" ; then
361                ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
362                ARCH_LDFLAGS="-m32"
363            else
364                ARCH_CFLAGS="${SP_CFLAGS}"
365                ARCH_LDFLAGS="${SP_LDFLAGS}"
366            fi
367            ;;
368     sparc64) if test -z "$sparc_cpu" ; then
369                ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
370                ARCH_LDFLAGS="-m64"
371            else
372                ARCH_CFLAGS="${SP_CFLAGS}"
373                ARCH_LDFLAGS="${SP_LDFLAGS}"
374            fi
375            ;;
376     s390)
377            ARCH_CFLAGS="-march=z900"
378            ;;
379     i386)
380            ARCH_CFLAGS="-m32"
381            ARCH_LDFLAGS="-m32"
382            ;;
383     x86_64)
384            ARCH_CFLAGS="-m64"
385            ARCH_LDFLAGS="-m64"
386            ;;
387 esac
388
389 if test x"$show_help" = x"yes" ; then
390 cat << EOF
391
392 Usage: configure [options]
393 Options: [defaults in brackets after descriptions]
394
395 EOF
396 echo "Standard options:"
397 echo "  --help                   print this message"
398 echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
399 echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
400 echo "                           use %M for cpu name [$interp_prefix]"
401 echo "  --target-list=LIST       set target list [$target_list]"
402 echo ""
403 echo "kqemu kernel acceleration support:"
404 echo "  --disable-kqemu          disable kqemu support"
405 echo ""
406 echo "Advanced options (experts only):"
407 echo "  --source-path=PATH       path of source code [$source_path]"
408 echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
409 echo "  --cc=CC                  use C compiler CC [$cc]"
410 echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
411 echo "  --make=MAKE              use specified make [$make]"
412 echo "  --install=INSTALL        use specified install [$install]"
413 echo "  --static                 enable static build [$static]"
414 echo "  --disable-werror         disable compilation abort on warning"
415 echo "  --disable-sdl            disable SDL"
416 echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
417 echo "  --audio-drv-list=LIST    set audio drivers list:"
418 echo "                           Available drivers: $audio_possible_drivers"
419 echo "  --audio-card-list=LIST   set list of additional emulated audio cards"
420 echo "                           Available cards: ac97 adlib cs4231a gus"
421 echo "  --enable-mixemu          enable mixer emulation"
422 echo "  --disable-brlapi         disable BrlAPI"
423 echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
424 echo "  --disable-curses         disable curses output"
425 echo "  --disable-nptl           disable usermode NPTL support"
426 echo "  --enable-system          enable all system emulation targets"
427 echo "  --disable-system         disable all system emulation targets"
428 echo "  --enable-linux-user      enable all linux usermode emulation targets"
429 echo "  --disable-linux-user     disable all linux usermode emulation targets"
430 echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
431 echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
432 echo "  --fmod-lib               path to FMOD library"
433 echo "  --fmod-inc               path to FMOD includes"
434 echo "  --oss-lib                path to OSS library"
435 echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
436 echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
437 echo "  --disable-vde            disable support for vde network"
438 echo "  --disable-aio            disable AIO support"
439 echo ""
440 echo "NOTE: The object files are built at the place where configure is launched"
441 exit 1
442 fi
443
444 cc="${cross_prefix}${cc}"
445 ar="${cross_prefix}${ar}"
446 strip="${cross_prefix}${strip}"
447
448 # check that the C compiler works.
449 cat > $TMPC <<EOF
450 int main(void) {}
451 EOF
452
453 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
454   : C compiler works ok
455 else
456     echo "ERROR: \"$cc\" either does not exist or does not work"
457     exit 1
458 fi
459
460 # check compiler to see if we're on mingw32
461 cat > $TMPC <<EOF
462 #include <windows.h>
463 #ifndef _WIN32
464 #error not windows
465 #endif
466 int main(void) {}
467 EOF
468
469 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
470     mingw32="yes"
471 fi
472
473 if test "$mingw32" = "yes" ; then
474     linux="no"
475     EXESUF=".exe"
476     oss="no"
477     linux_user="no"
478 fi
479
480 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
481     AIOLIBS=
482 else
483     # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
484     AIOLIBS="-lrt -lpthread"
485 fi
486
487 # Check for gcc4, error if pre-gcc4
488 if test "$check_gcc" = "yes" ; then
489     cat > $TMPC <<EOF
490 #if __GNUC__ < 4
491 #error gcc3
492 #endif
493 int main(){return 0;}
494 EOF
495     if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
496         echo "WARNING: \"$cc\" looks like gcc 4.x"
497         found_compat_cc="no"
498         if test "$gcc3_search" = "yes" ; then
499             echo "Looking for gcc 3.x"
500             for compat_cc in $gcc3_list ; do
501                 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
502                     echo "Found \"$compat_cc\""
503                     cc="$cross_prefix$compat_cc"
504                     found_compat_cc="yes"
505                     break
506                 fi
507             done
508             if test "$found_compat_cc" = "no" ; then
509                 echo "gcc 3.x not found!"
510             fi
511         fi
512         if test "$found_compat_cc" = "no" ; then
513             echo "QEMU is known to have problems when compiled with gcc 4.x"
514             echo "It is recommended that you use gcc 3.x to build QEMU"
515             echo "To use this compiler anyway, configure with --disable-gcc-check"
516             exit 1;
517         fi
518     fi
519 fi
520
521 #
522 # Solaris specific configure tool chain decisions
523 #
524 if test "$solaris" = "yes" ; then
525   #
526   # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
527   # override the check with --disable-gcc-check
528   #
529   if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
530     solgcc=`which $cc`
531     if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
532       echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
533       echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
534       echo "or get the latest patch from SunSolve for gcc"
535       exit 1
536     fi
537   fi
538   solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
539   if test -z "$solinst" ; then
540     echo "Solaris install program not found. Use --install=/usr/ucb/install or"
541     echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
542     echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
543     exit 1
544   fi
545   if test "$solinst" = "/usr/sbin/install" ; then
546     echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
547     echo "try ginstall from the GNU fileutils available from www.blastwave.org"
548     echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
549     exit 1
550   fi
551   sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
552   if test -z "$sol_ar" ; then
553     echo "Error: No path includes ar"
554     if test -f /usr/ccs/bin/ar ; then
555       echo "Add /usr/ccs/bin to your path and rerun configure"
556     fi
557     exit 1
558   fi
559 fi
560
561
562 if test -z "$target_list" ; then
563 # these targets are portable
564     if [ "$softmmu" = "yes" ] ; then
565         target_list="\
566 i386-softmmu \
567 x86_64-softmmu \
568 arm-softmmu \
569 cris-softmmu \
570 m68k-softmmu \
571 mips-softmmu \
572 mipsel-softmmu \
573 mips64-softmmu \
574 mips64el-softmmu \
575 ppc-softmmu \
576 ppcemb-softmmu \
577 ppc64-softmmu \
578 sh4-softmmu \
579 sh4eb-softmmu \
580 sparc-softmmu \
581 "
582     fi
583 # the following are Linux specific
584     if [ "$linux_user" = "yes" ] ; then
585         target_list="${target_list}\
586 i386-linux-user \
587 x86_64-linux-user \
588 alpha-linux-user \
589 arm-linux-user \
590 armeb-linux-user \
591 cris-linux-user \
592 m68k-linux-user \
593 mips-linux-user \
594 mipsel-linux-user \
595 ppc-linux-user \
596 ppc64-linux-user \
597 ppc64abi32-linux-user \
598 sh4-linux-user \
599 sh4eb-linux-user \
600 sparc-linux-user \
601 sparc64-linux-user \
602 sparc32plus-linux-user \
603 "
604     fi
605 # the following are Darwin specific
606     if [ "$darwin_user" = "yes" ] ; then
607         target_list="$target_list i386-darwin-user ppc-darwin-user"
608     fi
609 else
610     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
611 fi
612 if test -z "$target_list" ; then
613     echo "No targets enabled"
614     exit 1
615 fi
616
617 if test -z "$cross_prefix" ; then
618
619 # ---
620 # big/little endian test
621 cat > $TMPC << EOF
622 #include <inttypes.h>
623 int main(int argc, char ** argv){
624         volatile uint32_t i=0x01234567;
625         return (*((uint8_t*)(&i))) == 0x67;
626 }
627 EOF
628
629 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
630 $TMPE && bigendian="yes"
631 else
632 echo big/little test failed
633 fi
634
635 else
636
637 # if cross compiling, cannot launch a program, so make a static guess
638 if test "$cpu" = "armv4b" \
639      -o "$cpu" = "hppa" \
640      -o "$cpu" = "m68k" \
641      -o "$cpu" = "mips" \
642      -o "$cpu" = "mips64" \
643      -o "$cpu" = "powerpc" \
644      -o "$cpu" = "s390" \
645      -o "$cpu" = "sparc" \
646      -o "$cpu" = "sparc64"; then
647     bigendian="yes"
648 fi
649
650 fi
651
652 # host long bits test
653 hostlongbits="32"
654 if test "$cpu" = "x86_64" \
655      -o "$cpu" = "alpha" \
656      -o "$cpu" = "ia64" \
657      -o "$cpu" = "sparc64"; then
658     hostlongbits="64"
659 fi
660
661 # ppc specific hostlongbits selection
662 if test "$cpu" = "powerpc" ; then
663     cat > $TMPC <<EOF
664 int main(void){return sizeof(long);}
665 EOF
666
667     if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
668         $TMPE
669         case $? in
670             4) hostlongbits="32";;
671             8) hostlongbits="64";;
672             *) echo "Couldn't determine bits per long value"; exit 1;;
673         esac
674     else
675         echo hostlongbits test failed
676         exit 1
677     fi
678 fi
679
680 # check gcc options support
681 cat > $TMPC <<EOF
682 int main(void) {
683 }
684 EOF
685
686 # Check host NPTL support
687 cat > $TMPC <<EOF
688 #include <sched.h>
689 #include <linux/futex.h>
690 void foo()
691 {
692 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
693 #error bork
694 #endif
695 }
696 EOF
697
698 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
699   :
700 else
701    nptl="no"
702 fi
703
704 ##########################################
705 # SDL probe
706
707 sdl_too_old=no
708
709 if test -z "$sdl" ; then
710     sdl_config="sdl-config"
711     sdl=no
712     sdl_static=no
713
714 cat > $TMPC << EOF
715 #include <SDL.h>
716 #undef main /* We don't want SDL to override our main() */
717 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
718 EOF
719     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
720         _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
721         if test "$_sdlversion" -lt 121 ; then
722             sdl_too_old=yes
723         else
724             if test "$cocoa" = "no" ; then
725                 sdl=yes
726             fi
727         fi
728
729         # static link with sdl ?
730         if test "$sdl" = "yes" ; then
731             aa="no"
732             `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
733             sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
734             if [ "$aa" = "yes" ] ; then
735                 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
736             fi
737
738             if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
739                 sdl_static=yes
740             fi
741         fi # static link
742     fi # sdl compile test
743 else
744     # Make sure to disable cocoa if sdl was set
745     if test "$sdl" = "yes" ; then
746        cocoa="no"
747        audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
748     fi
749 fi # -z $sdl
750
751 ##########################################
752 # VNC TLS detection
753 if test "$vnc_tls" = "yes" ; then
754 cat > $TMPC <<EOF
755 #include <gnutls/gnutls.h>
756 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
757 EOF
758     vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
759     vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
760     if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
761            $vnc_tls_libs 2> /dev/null ; then
762         :
763     else
764         vnc_tls="no"
765     fi
766 fi
767
768 ##########################################
769 # vde libraries probe
770 if test "$vde" = "yes" ; then
771   cat > $TMPC << EOF
772 #include <libvdeplug.h>
773 int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
774 EOF
775     if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
776         :
777     else
778         vde="no"
779     fi
780 fi
781
782 ##########################################
783 # Sound support libraries probe
784
785 audio_drv_probe()
786 {
787     drv=$1
788     hdr=$2
789     lib=$3
790     exp=$4
791     cfl=$5
792         cat > $TMPC << EOF
793 #include <$hdr>
794 int main(void) { $exp }
795 EOF
796     if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
797         :
798     else
799         echo
800         echo "Error: $drv check failed"
801         echo "Make sure to have the $drv libs and headers installed."
802         echo
803         exit 1
804     fi
805 }
806
807 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
808 for drv in $audio_drv_list; do
809     case $drv in
810     alsa)
811     audio_drv_probe $drv alsa/asoundlib.h -lasound \
812         "snd_pcm_t **handle; return snd_pcm_close(*handle);"
813     ;;
814
815     fmod)
816     if test -z $fmod_lib || test -z $fmod_inc; then
817         echo
818         echo "Error: You must specify path to FMOD library and headers"
819         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
820         echo
821         exit 1
822     fi
823     audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
824     ;;
825
826     esd)
827     audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
828     ;;
829
830     pa)
831     audio_drv_probe $drv pulse/simple.h -lpulse-simple \
832         "pa_simple *s = NULL; pa_simple_free(s); return 0;"
833     ;;
834
835     oss|sdl|core|wav|dsound)
836     # XXX: Probes for CoreAudio, DirectSound, SDL(?)
837     ;;
838
839     *)
840     echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
841         echo
842         echo "Error: Unknown driver '$drv' selected"
843         echo "Possible drivers are: $audio_possible_drivers"
844         echo
845         exit 1
846     }
847     ;;
848     esac
849 done
850
851 ##########################################
852 # BrlAPI probe
853
854 if test -z "$brlapi" ; then
855     brlapi=no
856 cat > $TMPC << EOF
857 #include <brlapi.h>
858 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
859 EOF
860     if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
861             brlapi=yes
862     fi # brlapi compile test
863 fi # -z $brlapi
864
865 ##########################################
866 # curses probe
867
868 if test "$curses" = "yes" ; then
869   curses=no
870   cat > $TMPC << EOF
871 #include <curses.h>
872 int main(void) { return curses_version(); }
873 EOF
874   if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
875     curses=yes
876   fi
877 fi # test "$curses"
878
879 ##########################################
880 # AIO probe
881 if test "$aio" = "yes" ; then
882   aio=no
883   cat > $TMPC << EOF
884 #include <aio.h>
885 int main(void) { return aio_write(NULL); }
886 EOF
887   if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
888     aio=yes
889   fi
890 fi
891
892 # Check if tools are available to build documentation.
893 if [ -x "`which texi2html 2>/dev/null`" ] && \
894    [ -x "`which pod2man 2>/dev/null`" ]; then
895   build_docs="yes"
896 fi
897
898 if test "$mingw32" = "yes" ; then
899   if test -z "$prefix" ; then
900       prefix="/c/Program Files/Qemu"
901   fi
902   mansuffix=""
903   datasuffix=""
904   docsuffix=""
905   binsuffix=""
906 else
907   if test -z "$prefix" ; then
908       prefix="/usr/local"
909   fi
910   mansuffix="/share/man"
911   datasuffix="/share/qemu"
912   docsuffix="/share/doc/qemu"
913   binsuffix="/bin"
914 fi
915
916 echo "Install prefix    $prefix"
917 echo "BIOS directory    $prefix$datasuffix"
918 echo "binary directory  $prefix$binsuffix"
919 if test "$mingw32" = "no" ; then
920 echo "Manual directory  $prefix$mansuffix"
921 echo "ELF interp prefix $interp_prefix"
922 fi
923 echo "Source path       $source_path"
924 echo "C compiler        $cc"
925 echo "Host C compiler   $host_cc"
926 echo "ARCH_CFLAGS       $ARCH_CFLAGS"
927 echo "make              $make"
928 echo "install           $install"
929 echo "host CPU          $cpu"
930 echo "host big endian   $bigendian"
931 echo "target list       $target_list"
932 echo "gprof enabled     $gprof"
933 echo "profiler          $profiler"
934 echo "static build      $static"
935 echo "-Werror enabled   $werror"
936 if test "$darwin" = "yes" ; then
937     echo "Cocoa support     $cocoa"
938 fi
939 echo "SDL support       $sdl"
940 if test "$sdl" != "no" ; then
941     echo "SDL static link   $sdl_static"
942 fi
943 echo "curses support    $curses"
944 echo "mingw32 support   $mingw32"
945 echo "Audio drivers     $audio_drv_list"
946 echo "Extra audio cards $audio_card_list"
947 echo "Mixer emulation   $mixemu"
948 echo "VNC TLS support   $vnc_tls"
949 if test "$vnc_tls" = "yes" ; then
950     echo "    TLS CFLAGS    $vnc_tls_cflags"
951     echo "    TLS LIBS      $vnc_tls_libs"
952 fi
953 if test -n "$sparc_cpu"; then
954     echo "Target Sparc Arch $sparc_cpu"
955 fi
956 echo "kqemu support     $kqemu"
957 echo "brlapi support    $brlapi"
958 echo "Documentation     $build_docs"
959 [ ! -z "$uname_release" ] && \
960 echo "uname -r          $uname_release"
961 echo "NPTL support      $nptl"
962 echo "vde support       $vde"
963 echo "AIO support       $aio"
964
965 if test $sdl_too_old = "yes"; then
966 echo "-> Your SDL version is too old - please upgrade to have SDL support"
967 fi
968 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
969   echo "The error log from compiling the libSDL test is: "
970   cat /tmp/qemu-$$-sdl-config.log
971 fi
972 rm -f /tmp/qemu-$$-sdl-config.log
973 #if test "$sdl_static" = "no"; then
974 #  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
975 #fi
976 config_mak="config-host.mak"
977 config_h="config-host.h"
978
979 #echo "Creating $config_mak and $config_h"
980
981 test -f $config_h && mv $config_h ${config_h}~
982
983 echo "# Automatically generated by configure - do not modify" > $config_mak
984 echo "# Configured with: $0 $@" >> $config_mak
985 echo "/* Automatically generated by configure - do not modify */" > $config_h
986
987 echo "prefix=$prefix" >> $config_mak
988 echo "bindir=\${prefix}$binsuffix" >> $config_mak
989 echo "mandir=\${prefix}$mansuffix" >> $config_mak
990 echo "datadir=\${prefix}$datasuffix" >> $config_mak
991 echo "docdir=\${prefix}$docsuffix" >> $config_mak
992 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
993 echo "MAKE=$make" >> $config_mak
994 echo "INSTALL=$install" >> $config_mak
995 echo "CC=$cc" >> $config_mak
996 echo "HOST_CC=$host_cc" >> $config_mak
997 echo "AR=$ar" >> $config_mak
998 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
999 # XXX: only use CFLAGS and LDFLAGS ?  
1000 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1001 # compilation of dyngen tool (useful for win32 build on Linux host)
1002 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1003 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1004 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1005 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1006 echo "CFLAGS=$CFLAGS" >> $config_mak
1007 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1008 echo "EXESUF=$EXESUF" >> $config_mak
1009 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1010 case "$cpu" in
1011   i386)
1012     echo "ARCH=i386" >> $config_mak
1013     echo "#define HOST_I386 1" >> $config_h
1014   ;;
1015   x86_64)
1016     echo "ARCH=x86_64" >> $config_mak
1017     echo "#define HOST_X86_64 1" >> $config_h
1018   ;;
1019   alpha)
1020     echo "ARCH=alpha" >> $config_mak
1021     echo "#define HOST_ALPHA 1" >> $config_h
1022   ;;
1023   armv4b)
1024     echo "ARCH=arm" >> $config_mak
1025     echo "#define HOST_ARM 1" >> $config_h
1026   ;;
1027   armv4l)
1028     echo "ARCH=arm" >> $config_mak
1029     echo "#define HOST_ARM 1" >> $config_h
1030   ;;
1031   cris)
1032     echo "ARCH=cris" >> $config_mak
1033     echo "#define HOST_CRIS 1" >> $config_h
1034   ;;
1035   hppa)
1036     echo "ARCH=hppa" >> $config_mak
1037     echo "#define HOST_HPPA 1" >> $config_h
1038   ;;
1039   ia64)
1040     echo "ARCH=ia64" >> $config_mak
1041     echo "#define HOST_IA64 1" >> $config_h
1042   ;;
1043   m68k)
1044     echo "ARCH=m68k" >> $config_mak
1045     echo "#define HOST_M68K 1" >> $config_h
1046   ;;
1047   mips)
1048     echo "ARCH=mips" >> $config_mak
1049     echo "#define HOST_MIPS 1" >> $config_h
1050   ;;
1051   mips64)
1052     echo "ARCH=mips64" >> $config_mak
1053     echo "#define HOST_MIPS64 1" >> $config_h
1054   ;;
1055   powerpc)
1056   if test "$hostlongbits" = "32"; then
1057       echo "ARCH=ppc" >> $config_mak
1058       echo "#define HOST_PPC 1" >> $config_h
1059   else
1060       echo "ARCH=ppc64" >> $config_mak
1061       echo "#define HOST_PPC64 1" >> $config_h
1062   fi
1063   ;;
1064   s390)
1065     echo "ARCH=s390" >> $config_mak
1066     echo "#define HOST_S390 1" >> $config_h
1067   ;;
1068   sparc)
1069     echo "ARCH=sparc" >> $config_mak
1070     echo "#define HOST_SPARC 1" >> $config_h
1071   ;;
1072   sparc64)
1073     echo "ARCH=sparc64" >> $config_mak
1074     echo "#define HOST_SPARC64 1" >> $config_h
1075   ;;
1076   *)
1077     echo "Unsupported CPU = $cpu"
1078     exit 1
1079   ;;
1080 esac
1081 if test "$bigendian" = "yes" ; then
1082   echo "WORDS_BIGENDIAN=yes" >> $config_mak
1083   echo "#define WORDS_BIGENDIAN 1" >> $config_h
1084 fi
1085 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1086 if test "$mingw32" = "yes" ; then
1087   echo "CONFIG_WIN32=yes" >> $config_mak
1088   echo "#define CONFIG_WIN32 1" >> $config_h
1089 else
1090   cat > $TMPC << EOF
1091 #include <byteswap.h>
1092 int main(void) { return bswap_32(0); }
1093 EOF
1094   if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1095     echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1096   fi
1097 fi
1098
1099 if [ "$openbsd" = "yes" ] ; then
1100   echo "#define ENOTSUP 4096" >> $config_h
1101 fi
1102
1103 if test "$darwin" = "yes" ; then
1104   echo "CONFIG_DARWIN=yes" >> $config_mak
1105   echo "#define CONFIG_DARWIN 1" >> $config_h
1106 fi
1107 if test "$solaris" = "yes" ; then
1108   echo "CONFIG_SOLARIS=yes" >> $config_mak
1109   echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1110   if test "$needs_libsunmath" = "yes" ; then
1111     echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1112     echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1113   fi
1114 fi
1115 if test -n "$sparc_cpu"; then
1116   echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1117   echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1118 fi
1119 if test "$gdbstub" = "yes" ; then
1120   echo "CONFIG_GDBSTUB=yes" >> $config_mak
1121   echo "#define CONFIG_GDBSTUB 1" >> $config_h
1122 fi
1123 if test "$gprof" = "yes" ; then
1124   echo "TARGET_GPROF=yes" >> $config_mak
1125   echo "#define HAVE_GPROF 1" >> $config_h
1126 fi
1127 if test "$static" = "yes" ; then
1128   echo "CONFIG_STATIC=yes" >> $config_mak
1129   echo "#define CONFIG_STATIC 1" >> $config_h
1130 fi
1131 if test $profiler = "yes" ; then
1132   echo "#define CONFIG_PROFILER 1" >> $config_h
1133 fi
1134 if test "$slirp" = "yes" ; then
1135   echo "CONFIG_SLIRP=yes" >> $config_mak
1136   echo "#define CONFIG_SLIRP 1" >> $config_h
1137 fi
1138 if test "$vde" = "yes" ; then
1139   echo "CONFIG_VDE=yes" >> $config_mak
1140   echo "#define CONFIG_VDE 1" >> $config_h
1141   echo "VDE_LIBS=-lvdeplug" >> $config_mak
1142 fi
1143 for card in $audio_card_list; do
1144     def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1145     echo "$def=yes" >> $config_mak
1146     echo "#define $def 1" >> $config_h
1147 done
1148 echo "#define AUDIO_DRIVERS \\" >> $config_h
1149 for drv in $audio_drv_list; do
1150     echo "    &${drv}_audio_driver, \\" >>$config_h
1151     def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1152     echo "$def=yes" >> $config_mak
1153     if test "$drv" = "fmod"; then
1154         echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1155         echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1156     elif test "$drv" = "oss"; then
1157         echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1158     fi
1159 done
1160 echo "" >>$config_h
1161 if test "$mixemu" = "yes" ; then
1162   echo "CONFIG_MIXEMU=yes" >> $config_mak
1163   echo "#define CONFIG_MIXEMU 1" >> $config_h
1164 fi
1165 if test "$vnc_tls" = "yes" ; then
1166   echo "CONFIG_VNC_TLS=yes" >> $config_mak
1167   echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1168   echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1169   echo "#define CONFIG_VNC_TLS 1" >> $config_h
1170 fi
1171 qemu_version=`head $source_path/VERSION`
1172 echo "VERSION=$qemu_version" >>$config_mak
1173 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1174
1175 echo "SRC_PATH=$source_path" >> $config_mak
1176 if [ "$source_path_used" = "yes" ]; then
1177   echo "VPATH=$source_path" >> $config_mak
1178 fi
1179 echo "TARGET_DIRS=$target_list" >> $config_mak
1180 if [ "$build_docs" = "yes" ] ; then
1181   echo "BUILD_DOCS=yes" >> $config_mak
1182 fi
1183 if test "$static" = "yes"; then
1184   sdl1=$sdl_static
1185 else
1186   sdl1=$sdl
1187 fi
1188 if test "$sdl1" = "yes" ; then
1189   echo "#define CONFIG_SDL 1" >> $config_h
1190   echo "CONFIG_SDL=yes" >> $config_mak
1191   if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1192     echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1193   else
1194     echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1195   fi
1196   if [ "${aa}" = "yes" ] ; then
1197     echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1198   else
1199     echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1200   fi
1201 fi
1202 if test "$cocoa" = "yes" ; then
1203   echo "#define CONFIG_COCOA 1" >> $config_h
1204   echo "CONFIG_COCOA=yes" >> $config_mak
1205 fi
1206 if test "$curses" = "yes" ; then
1207   echo "#define CONFIG_CURSES 1" >> $config_h
1208   echo "CONFIG_CURSES=yes" >> $config_mak
1209   echo "CURSES_LIBS=-lcurses" >> $config_mak
1210 fi
1211 if test "$brlapi" = "yes" ; then
1212   echo "CONFIG_BRLAPI=yes" >> $config_mak
1213   echo "#define CONFIG_BRLAPI 1" >> $config_h
1214   echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1215 fi
1216 if test "$aio" = "yes" ; then
1217   echo "#define CONFIG_AIO 1" >> $config_h
1218 fi
1219
1220 # XXX: suppress that
1221 if [ "$bsd" = "yes" ] ; then
1222   echo "#define O_LARGEFILE 0" >> $config_h
1223   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1224   echo "#define _BSD 1" >> $config_h
1225 fi
1226
1227 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1228
1229 tools=
1230 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1231   tools="qemu-img\$(EXESUF) $tools"
1232   if [ "$linux" = "yes" ] ; then
1233       tools="qemu-nbd\$(EXESUF) $tools"
1234   fi
1235 fi
1236 echo "TOOLS=$tools" >> $config_mak
1237
1238 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1239
1240 for target in $target_list; do
1241 target_dir="$target"
1242 config_mak=$target_dir/config.mak
1243 config_h=$target_dir/config.h
1244 target_cpu=`echo $target | cut -d '-' -f 1`
1245 target_bigendian="no"
1246 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1247 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1248 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1249 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1250 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1251 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1252 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1253 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1254 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1255 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1256 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1257 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1258 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1259 target_softmmu="no"
1260 target_user_only="no"
1261 target_linux_user="no"
1262 target_darwin_user="no"
1263 case "$target" in
1264   ${target_cpu}-softmmu)
1265     target_softmmu="yes"
1266     ;;
1267   ${target_cpu}-linux-user)
1268     target_user_only="yes"
1269     target_linux_user="yes"
1270     ;;
1271   ${target_cpu}-darwin-user)
1272     target_user_only="yes"
1273     target_darwin_user="yes"
1274     ;;
1275   *)
1276     echo "ERROR: Target '$target' not recognised"
1277     exit 1
1278     ;;
1279 esac
1280
1281 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1282         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1283     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1284     echo "To build QEMU without graphical output configure with --disable-gfx-check"
1285     echo "Note that this will disable all output from the virtual graphics card"
1286     echo "except through VNC or curses."
1287     exit 1;
1288 fi
1289
1290 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1291
1292 test -f $config_h && mv $config_h ${config_h}~
1293
1294 mkdir -p $target_dir
1295 mkdir -p $target_dir/fpu
1296 mkdir -p $target_dir/tcg
1297 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1298   mkdir -p $target_dir/nwfpe
1299 fi
1300
1301 #
1302 # don't use ln -sf as not all "ln -sf" over write the file/link
1303 #
1304 rm -f $target_dir/Makefile
1305 ln -s $source_path/Makefile.target $target_dir/Makefile
1306
1307
1308 echo "# Automatically generated by configure - do not modify" > $config_mak
1309 echo "/* Automatically generated by configure - do not modify */" > $config_h
1310
1311
1312 echo "include ../config-host.mak" >> $config_mak
1313 echo "#include \"../config-host.h\"" >> $config_h
1314
1315 bflt="no"
1316 elfload32="no"
1317 target_nptl="no"
1318 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1319 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1320
1321 case "$target_cpu" in
1322   i386)
1323     echo "TARGET_ARCH=i386" >> $config_mak
1324     echo "#define TARGET_ARCH \"i386\"" >> $config_h
1325     echo "#define TARGET_I386 1" >> $config_h
1326     if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1327     then
1328       echo "#define USE_KQEMU 1" >> $config_h
1329     fi
1330     gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1331     if test -n "$gcc3minver" && test $gcc3minver -gt 3
1332     then
1333       echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1334     else
1335       echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1336     fi
1337   ;;
1338   x86_64)
1339     echo "TARGET_ARCH=x86_64" >> $config_mak
1340     echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1341     echo "#define TARGET_I386 1" >> $config_h
1342     echo "#define TARGET_X86_64 1" >> $config_h
1343     if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1344     then
1345       echo "#define USE_KQEMU 1" >> $config_h
1346     fi
1347   ;;
1348   alpha)
1349     echo "TARGET_ARCH=alpha" >> $config_mak
1350     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1351     echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1352     echo "#define TARGET_ALPHA 1" >> $config_h
1353     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1354   ;;
1355   arm|armeb)
1356     echo "TARGET_ARCH=arm" >> $config_mak
1357     echo "#define TARGET_ARCH \"arm\"" >> $config_h
1358     echo "#define TARGET_ARM 1" >> $config_h
1359     bflt="yes"
1360     target_nptl="yes"
1361   ;;
1362   cris)
1363     echo "TARGET_ARCH=cris" >> $config_mak
1364     echo "#define TARGET_ARCH \"cris\"" >> $config_h
1365     echo "#define TARGET_CRIS 1" >> $config_h
1366   ;;
1367   m68k)
1368     echo "TARGET_ARCH=m68k" >> $config_mak
1369     echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1370     echo "#define TARGET_M68K 1" >> $config_h
1371     bflt="yes"
1372   ;;
1373   mips|mipsel)
1374     echo "TARGET_ARCH=mips" >> $config_mak
1375     echo "#define TARGET_ARCH \"mips\"" >> $config_h
1376     echo "#define TARGET_MIPS 1" >> $config_h
1377     echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1378   ;;
1379   mipsn32|mipsn32el)
1380     echo "TARGET_ARCH=mipsn32" >> $config_mak
1381     echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1382     echo "#define TARGET_MIPS 1" >> $config_h
1383     echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1384   ;;
1385   mips64|mips64el)
1386     echo "TARGET_ARCH=mips64" >> $config_mak
1387     echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1388     echo "#define TARGET_MIPS 1" >> $config_h
1389     echo "#define TARGET_MIPS64 1" >> $config_h
1390     echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1391   ;;
1392   ppc)
1393     echo "TARGET_ARCH=ppc" >> $config_mak
1394     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1395     echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1396     echo "#define TARGET_PPC 1" >> $config_h
1397     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1398   ;;
1399   ppcemb)
1400     echo "TARGET_ARCH=ppcemb" >> $config_mak
1401     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1402     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1403     echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1404     echo "#define TARGET_PPC 1" >> $config_h
1405     echo "#define TARGET_PPCEMB 1" >> $config_h
1406     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1407   ;;
1408   ppc64)
1409     echo "TARGET_ARCH=ppc64" >> $config_mak
1410     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1411     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1412     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1413     echo "#define TARGET_PPC 1" >> $config_h
1414     echo "#define TARGET_PPC64 1" >> $config_h
1415     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1416   ;;
1417   ppc64abi32)
1418     echo "TARGET_ARCH=ppc64" >> $config_mak
1419     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1420     echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1421     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1422     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1423     echo "#define TARGET_PPC 1" >> $config_h
1424     echo "#define TARGET_PPC64 1" >> $config_h
1425     echo "#define TARGET_ABI32 1" >> $config_h
1426     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1427   ;;
1428   sh4|sh4eb)
1429     echo "TARGET_ARCH=sh4" >> $config_mak
1430     echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1431     echo "#define TARGET_SH4 1" >> $config_h
1432     bflt="yes"
1433   ;;
1434   sparc)
1435     echo "TARGET_ARCH=sparc" >> $config_mak
1436     echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1437     echo "#define TARGET_SPARC 1" >> $config_h
1438   ;;
1439   sparc64)
1440     echo "TARGET_ARCH=sparc64" >> $config_mak
1441     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1442     echo "#define TARGET_SPARC 1" >> $config_h
1443     echo "#define TARGET_SPARC64 1" >> $config_h
1444     elfload32="yes"
1445   ;;
1446   sparc32plus)
1447     echo "TARGET_ARCH=sparc64" >> $config_mak
1448     echo "TARGET_ABI_DIR=sparc" >> $config_mak
1449     echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1450     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1451     echo "#define TARGET_SPARC 1" >> $config_h
1452     echo "#define TARGET_SPARC64 1" >> $config_h
1453     echo "#define TARGET_ABI32 1" >> $config_h
1454   ;;
1455   *)
1456     echo "Unsupported target CPU"
1457     exit 1
1458   ;;
1459 esac
1460 if test "$target_bigendian" = "yes" ; then
1461   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1462   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1463 fi
1464 if test "$target_softmmu" = "yes" ; then
1465   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1466   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1467 fi
1468 if test "$target_user_only" = "yes" ; then
1469   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1470   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1471 fi
1472 if test "$target_linux_user" = "yes" ; then
1473   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1474   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1475 fi
1476 if test "$target_darwin_user" = "yes" ; then
1477   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1478   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1479 fi
1480
1481 if test "$target_cpu" = "arm" \
1482      -o "$target_cpu" = "armeb" \
1483      -o "$target_cpu" = "m68k" \
1484      -o "$target_cpu" = "mips" \
1485      -o "$target_cpu" = "mipsel" \
1486      -o "$target_cpu" = "mipsn32" \
1487      -o "$target_cpu" = "mipsn32el" \
1488      -o "$target_cpu" = "mips64" \
1489      -o "$target_cpu" = "mips64el" \
1490      -o "$target_cpu" = "sparc" \
1491      -o "$target_cpu" = "sparc64" \
1492      -o "$target_cpu" = "sparc32plus"; then
1493   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1494   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1495 fi
1496 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1497   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1498   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1499 fi
1500 if test "$target_user_only" = "yes" \
1501         -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1502   echo "#define USE_NPTL 1" >> $config_h
1503 fi
1504 # 32 bit ELF loader in addition to native 64 bit loader?
1505 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1506   echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1507   echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1508 fi
1509
1510 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1511
1512 done # for target in $targets
1513
1514 # build tree in object directory if source path is different from current one
1515 if test "$source_path_used" = "yes" ; then
1516     DIRS="tests tests/cris slirp audio"
1517     FILES="Makefile tests/Makefile"
1518     FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1519     FILES="$FILES tests/test-mmap.c"
1520     for dir in $DIRS ; do
1521             mkdir -p $dir
1522     done
1523     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1524     for f in $FILES ; do
1525         rm -f $f
1526         ln -s $source_path/$f $f
1527     done
1528 fi
1529
1530 rm -f $TMPO $TMPC $TMPE $TMPS