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