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