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