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