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