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