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