Introduce accessors for DisplayState (Stefano Stabellini)
[qemu/qemu-JZ.git] / configure
blob5886ea03eabffe68ddfb0efdd746fc41879e4d6a
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"
122 # OS specific
123 targetos=`uname -s`
124 case $targetos in
125 CYGWIN*)
126 mingw32="yes"
127 OS_CFLAGS="-mno-cygwin"
128 if [ "$cpu" = "i386" ] ; then
129 kqemu="yes"
131 audio_possible_drivers="sdl"
133 MINGW32*)
134 mingw32="yes"
135 if [ "$cpu" = "i386" ] ; then
136 kqemu="yes"
138 audio_possible_drivers="dsound sdl fmod"
140 GNU/kFreeBSD)
141 audio_drv_list="oss"
142 audio_possible_drivers="oss sdl esd pa"
143 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
144 kqemu="yes"
147 FreeBSD)
148 bsd="yes"
149 audio_drv_list="oss"
150 audio_possible_drivers="oss sdl esd pa"
151 aio_lib="-lpthread"
152 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
153 kqemu="yes"
156 NetBSD)
157 bsd="yes"
158 audio_drv_list="oss"
159 audio_possible_drivers="oss sdl esd"
160 oss_lib="-lossaudio"
161 aio_lib="-lrt -lpthread"
163 OpenBSD)
164 bsd="yes"
165 openbsd="yes"
166 audio_drv_list="oss"
167 audio_possible_drivers="oss sdl esd"
168 oss_lib="-lossaudio"
169 aio_lib="-lpthread"
171 Darwin)
172 bsd="yes"
173 darwin="yes"
174 darwin_user="yes"
175 cocoa="yes"
176 audio_drv_list="coreaudio"
177 audio_possible_drivers="coreaudio sdl fmod"
178 OS_CFLAGS="-mdynamic-no-pic"
179 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
180 aio_lib="-lpthread"
182 SunOS)
183 solaris="yes"
184 make="gmake"
185 install="ginstall"
186 needs_libsunmath="no"
187 solarisrev=`uname -r | cut -f2 -d.`
188 # have to select again, because `uname -m` returns i86pc
189 # even on an x86_64 box.
190 solariscpu=`isainfo -k`
191 if test "${solariscpu}" = "amd64" ; then
192 cpu="x86_64"
194 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
195 if test "$solarisrev" -le 9 ; then
196 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
197 needs_libsunmath="yes"
198 else
199 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
200 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
201 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
202 echo "Studio 11 can be downloaded from www.sun.com."
203 exit 1
206 if test "$solarisrev" -ge 9 ; then
207 kqemu="yes"
210 if test -f /usr/include/sys/soundcard.h ; then
211 audio_drv_list="oss"
213 audio_possible_drivers="oss sdl"
215 AIX)
216 aix="yes"
217 make="gmake"
220 audio_drv_list="oss"
221 audio_possible_drivers="oss alsa sdl esd pa"
222 linux="yes"
223 linux_user="yes"
224 usb="linux"
225 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
226 kqemu="yes"
227 audio_possible_drivers="$audio_possible_drivers fmod"
230 esac
232 if [ "$bsd" = "yes" ] ; then
233 if [ "$darwin" != "yes" ] ; then
234 make="gmake"
235 usb="bsd"
237 bsd_user="yes"
240 # find source path
241 source_path=`dirname "$0"`
242 source_path_used="no"
243 workdir=`pwd`
244 if [ -z "$source_path" ]; then
245 source_path=$workdir
246 else
247 source_path=`cd "$source_path"; pwd`
249 [ -f "$workdir/vl.c" ] || source_path_used="yes"
251 werror="no"
252 # generate compile errors on warnings for development builds
253 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
254 #werror="yes";
257 for opt do
258 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
259 case "$opt" in
260 --help|-h) show_help=yes
262 --prefix=*) prefix="$optarg"
264 --interp-prefix=*) interp_prefix="$optarg"
266 --source-path=*) source_path="$optarg"
267 source_path_used="yes"
269 --cross-prefix=*) cross_prefix="$optarg"
271 --cc=*) cc="$optarg"
272 gcc3_search="no"
274 --host-cc=*) host_cc="$optarg"
276 --make=*) make="$optarg"
278 --install=*) install="$optarg"
280 --extra-cflags=*) CFLAGS="$optarg"
282 --extra-ldflags=*) LDFLAGS="$optarg"
284 --cpu=*) cpu="$optarg"
286 --target-list=*) target_list="$optarg"
288 --enable-gprof) gprof="yes"
290 --static) static="yes"
292 --disable-sdl) sdl="no"
294 --fmod-lib=*) fmod_lib="$optarg"
296 --fmod-inc=*) fmod_inc="$optarg"
298 --oss-lib=*) oss_lib="$optarg"
300 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
302 --audio-drv-list=*) audio_drv_list="$optarg"
304 --enable-sparse) sparse="yes"
306 --disable-sparse) sparse="no"
308 --disable-vnc-tls) vnc_tls="no"
310 --disable-slirp) slirp="no"
312 --disable-vde) vde="no"
314 --disable-kqemu) kqemu="no"
316 --disable-brlapi) brlapi="no"
318 --disable-bluez) bluez="no"
320 --disable-kvm) kvm="no"
322 --enable-profiler) profiler="yes"
324 --enable-cocoa)
325 cocoa="yes" ;
326 sdl="no" ;
327 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
329 --disable-gfx-check) check_gfx="no"
331 --disable-gcc-check) check_gcc="no"
333 --disable-system) softmmu="no"
335 --enable-system) softmmu="yes"
337 --disable-linux-user) linux_user="no"
339 --enable-linux-user) linux_user="yes"
341 --disable-darwin-user) darwin_user="no"
343 --enable-darwin-user) darwin_user="yes"
345 --disable-bsd-user) bsd_user="no"
347 --enable-bsd-user) bsd_user="yes"
349 --enable-uname-release=*) uname_release="$optarg"
351 --sparc_cpu=*)
352 sparc_cpu="$optarg"
353 case $sparc_cpu in
354 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
355 target_cpu="sparc"; cpu="sparc" ;;
356 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
357 target_cpu="sparc"; cpu="sparc" ;;
358 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
359 target_cpu="sparc64"; cpu="sparc64" ;;
360 *) echo "undefined SPARC architecture. Exiting";exit 1;;
361 esac
363 --enable-werror) werror="yes"
365 --disable-werror) werror="no"
367 --disable-curses) curses="no"
369 --disable-nptl) nptl="no"
371 --enable-mixemu) mixemu="yes"
373 --disable-aio) aio="no"
375 --kerneldir=*) kerneldir="$optarg"
377 *) echo "ERROR: unknown option $opt"; show_help="yes"
379 esac
380 done
382 # default flags for all hosts
383 CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
384 CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
385 LDFLAGS="$LDFLAGS -g"
386 if test "$werror" = "yes" ; then
387 CFLAGS="$CFLAGS -Werror"
390 if test "$solaris" = "no" ; then
391 if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
392 LDFLAGS="$LDFLAGS -Wl,--warn-common"
397 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
398 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
400 case "$cpu" in
401 sparc) if test -z "$sparc_cpu" ; then
402 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
403 ARCH_LDFLAGS="-m32"
404 else
405 ARCH_CFLAGS="${SP_CFLAGS}"
406 ARCH_LDFLAGS="${SP_LDFLAGS}"
409 sparc64) if test -z "$sparc_cpu" ; then
410 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
411 ARCH_LDFLAGS="-m64"
412 else
413 ARCH_CFLAGS="${SP_CFLAGS}"
414 ARCH_LDFLAGS="${SP_LDFLAGS}"
417 s390)
418 ARCH_CFLAGS="-march=z900"
420 i386)
421 ARCH_CFLAGS="-m32"
422 ARCH_LDFLAGS="-m32"
424 x86_64)
425 ARCH_CFLAGS="-m64"
426 ARCH_LDFLAGS="-m64"
428 esac
430 if test x"$show_help" = x"yes" ; then
431 cat << EOF
433 Usage: configure [options]
434 Options: [defaults in brackets after descriptions]
437 echo "Standard options:"
438 echo " --help print this message"
439 echo " --prefix=PREFIX install in PREFIX [$prefix]"
440 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
441 echo " use %M for cpu name [$interp_prefix]"
442 echo " --target-list=LIST set target list [$target_list]"
443 echo ""
444 echo "kqemu kernel acceleration support:"
445 echo " --disable-kqemu disable kqemu support"
446 echo ""
447 echo "Advanced options (experts only):"
448 echo " --source-path=PATH path of source code [$source_path]"
449 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
450 echo " --cc=CC use C compiler CC [$cc]"
451 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
452 echo " --make=MAKE use specified make [$make]"
453 echo " --install=INSTALL use specified install [$install]"
454 echo " --static enable static build [$static]"
455 echo " --enable-sparse enable sparse checker"
456 echo " --disable-sparse disable sparse checker (default)"
457 echo " --disable-werror disable compilation abort on warning"
458 echo " --disable-sdl disable SDL"
459 echo " --enable-cocoa enable COCOA (Mac OS X only)"
460 echo " --audio-drv-list=LIST set audio drivers list:"
461 echo " Available drivers: $audio_possible_drivers"
462 echo " --audio-card-list=LIST set list of additional emulated audio cards"
463 echo " Available cards: ac97 adlib cs4231a gus"
464 echo " --enable-mixemu enable mixer emulation"
465 echo " --disable-brlapi disable BrlAPI"
466 echo " --disable-vnc-tls disable TLS encryption for VNC server"
467 echo " --disable-curses disable curses output"
468 echo " --disable-bluez disable bluez stack connectivity"
469 echo " --disable-kvm disable KVM acceleration support"
470 echo " --disable-nptl disable usermode NPTL support"
471 echo " --enable-system enable all system emulation targets"
472 echo " --disable-system disable all system emulation targets"
473 echo " --enable-linux-user enable all linux usermode emulation targets"
474 echo " --disable-linux-user disable all linux usermode emulation targets"
475 echo " --enable-darwin-user enable all darwin usermode emulation targets"
476 echo " --disable-darwin-user disable all darwin usermode emulation targets"
477 echo " --enable-bsd-user enable all BSD usermode emulation targets"
478 echo " --disable-bsd-user disable all BSD usermode emulation targets"
479 echo " --fmod-lib path to FMOD library"
480 echo " --fmod-inc path to FMOD includes"
481 echo " --oss-lib path to OSS library"
482 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
483 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
484 echo " --disable-vde disable support for vde network"
485 echo " --disable-aio disable AIO support"
486 echo " --kerneldir=PATH look for kernel includes in PATH"
487 echo ""
488 echo "NOTE: The object files are built at the place where configure is launched"
489 exit 1
492 cc="${cross_prefix}${cc}"
493 ar="${cross_prefix}${ar}"
494 strip="${cross_prefix}${strip}"
496 # check that the C compiler works.
497 cat > $TMPC <<EOF
498 int main(void) {}
501 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
502 : C compiler works ok
503 else
504 echo "ERROR: \"$cc\" either does not exist or does not work"
505 exit 1
508 # check compiler to see if we're on mingw32
509 cat > $TMPC <<EOF
510 #include <windows.h>
511 #ifndef _WIN32
512 #error not windows
513 #endif
514 int main(void) {}
517 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
518 mingw32="yes"
521 if test "$mingw32" = "yes" ; then
522 linux="no"
523 EXESUF=".exe"
524 oss="no"
525 linux_user="no"
526 bsd_user="no"
529 if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
530 AIOLIBS=
531 elif [ "$bsd" = "yes" ]; then
532 AIOLIBS="$aio_lib"
533 else
534 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
535 AIOLIBS="-lrt -lpthread"
538 # Check for gcc4, error if pre-gcc4
539 if test "$check_gcc" = "yes" ; then
540 cat > $TMPC <<EOF
541 #if __GNUC__ < 4
542 #error gcc3
543 #endif
544 int main(){return 0;}
546 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
547 echo "WARNING: \"$cc\" looks like gcc 4.x"
548 found_compat_cc="no"
549 if test "$gcc3_search" = "yes" ; then
550 echo "Looking for gcc 3.x"
551 for compat_cc in $gcc3_list ; do
552 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
553 echo "Found \"$compat_cc\""
554 cc="$cross_prefix$compat_cc"
555 found_compat_cc="yes"
556 break
558 done
559 if test "$found_compat_cc" = "no" ; then
560 echo "gcc 3.x not found!"
563 if test "$found_compat_cc" = "no" ; then
564 echo "QEMU is known to have problems when compiled with gcc 4.x"
565 echo "It is recommended that you use gcc 3.x to build QEMU"
566 echo "To use this compiler anyway, configure with --disable-gcc-check"
567 exit 1;
572 if test ! -x "$(which cgcc 2>/dev/null)"; then
573 sparse="no"
577 # Solaris specific configure tool chain decisions
579 if test "$solaris" = "yes" ; then
581 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
582 # override the check with --disable-gcc-check
584 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
585 solgcc=`which $cc`
586 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
587 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
588 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
589 echo "or get the latest patch from SunSolve for gcc"
590 exit 1
593 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
594 if test -z "$solinst" ; then
595 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
596 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
597 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
598 exit 1
600 if test "$solinst" = "/usr/sbin/install" ; then
601 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
602 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
603 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
604 exit 1
606 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
607 if test -z "$sol_ar" ; then
608 echo "Error: No path includes ar"
609 if test -f /usr/ccs/bin/ar ; then
610 echo "Add /usr/ccs/bin to your path and rerun configure"
612 exit 1
617 if test -z "$target_list" ; then
618 # these targets are portable
619 if [ "$softmmu" = "yes" ] ; then
620 target_list="\
621 i386-softmmu \
622 x86_64-softmmu \
623 arm-softmmu \
624 cris-softmmu \
625 m68k-softmmu \
626 mips-softmmu \
627 mipsel-softmmu \
628 mips64-softmmu \
629 mips64el-softmmu \
630 ppc-softmmu \
631 ppcemb-softmmu \
632 ppc64-softmmu \
633 sh4-softmmu \
634 sh4eb-softmmu \
635 sparc-softmmu \
638 # the following are Linux specific
639 if [ "$linux_user" = "yes" ] ; then
640 target_list="${target_list}\
641 i386-linux-user \
642 x86_64-linux-user \
643 alpha-linux-user \
644 arm-linux-user \
645 armeb-linux-user \
646 cris-linux-user \
647 m68k-linux-user \
648 mips-linux-user \
649 mipsel-linux-user \
650 ppc-linux-user \
651 ppc64-linux-user \
652 ppc64abi32-linux-user \
653 sh4-linux-user \
654 sh4eb-linux-user \
655 sparc-linux-user \
656 sparc64-linux-user \
657 sparc32plus-linux-user \
660 # the following are Darwin specific
661 if [ "$darwin_user" = "yes" ] ; then
662 target_list="$target_list i386-darwin-user ppc-darwin-user"
664 # the following are BSD specific
665 if [ "$bsd_user" = "yes" ] ; then
666 target_list="${target_list}\
667 sparc64-bsd-user \
670 else
671 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
673 if test -z "$target_list" ; then
674 echo "No targets enabled"
675 exit 1
678 if test -z "$cross_prefix" ; then
680 # ---
681 # big/little endian test
682 cat > $TMPC << EOF
683 #include <inttypes.h>
684 int main(int argc, char ** argv){
685 volatile uint32_t i=0x01234567;
686 return (*((uint8_t*)(&i))) == 0x67;
690 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
691 $TMPE && bigendian="yes"
692 else
693 echo big/little test failed
696 else
698 # if cross compiling, cannot launch a program, so make a static guess
699 if test "$cpu" = "armv4b" \
700 -o "$cpu" = "hppa" \
701 -o "$cpu" = "m68k" \
702 -o "$cpu" = "mips" \
703 -o "$cpu" = "mips64" \
704 -o "$cpu" = "powerpc" \
705 -o "$cpu" = "s390" \
706 -o "$cpu" = "sparc" \
707 -o "$cpu" = "sparc64"; then
708 bigendian="yes"
713 # host long bits test
714 hostlongbits="32"
715 if test "$cpu" = "x86_64" \
716 -o "$cpu" = "alpha" \
717 -o "$cpu" = "ia64" \
718 -o "$cpu" = "sparc64"; then
719 hostlongbits="64"
722 # ppc specific hostlongbits selection
723 if test "$cpu" = "powerpc" ; then
724 if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
725 grep -q __powerpc64__ $TMPI && hostlongbits=64
726 else
727 echo hostlongbits test failed
728 exit 1
732 # check gcc options support
733 cat > $TMPC <<EOF
734 int main(void) {
738 # Check host NPTL support
739 cat > $TMPC <<EOF
740 #include <sched.h>
741 #include <linux/futex.h>
742 void foo()
744 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
745 #error bork
746 #endif
750 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
752 else
753 nptl="no"
756 ##########################################
757 # zlib check
759 cat > $TMPC << EOF
760 #include <zlib.h>
761 int main(void) { zlibVersion(); return 0; }
763 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz 2> /dev/null ; then
765 else
766 echo
767 echo "Error: zlib check failed"
768 echo "Make sure to have the zlib libs and headers installed."
769 echo
770 exit 1
773 ##########################################
774 # SDL probe
776 sdl_too_old=no
778 if test -z "$sdl" ; then
779 sdl_config="sdl-config"
780 sdl=no
781 sdl_static=no
783 cat > $TMPC << EOF
784 #include <SDL.h>
785 #undef main /* We don't want SDL to override our main() */
786 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
788 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
789 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
790 if test "$_sdlversion" -lt 121 ; then
791 sdl_too_old=yes
792 else
793 if test "$cocoa" = "no" ; then
794 sdl=yes
798 # static link with sdl ?
799 if test "$sdl" = "yes" ; then
800 aa="no"
801 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
802 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
803 if [ "$aa" = "yes" ] ; then
804 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
807 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
808 sdl_static=yes
810 fi # static link
811 fi # sdl compile test
812 else
813 # Make sure to disable cocoa if sdl was set
814 if test "$sdl" = "yes" ; then
815 cocoa="no"
816 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
818 fi # -z $sdl
820 ##########################################
821 # VNC TLS detection
822 if test "$vnc_tls" = "yes" ; then
823 cat > $TMPC <<EOF
824 #include <gnutls/gnutls.h>
825 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
827 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
828 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
829 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
830 $vnc_tls_libs 2> /dev/null ; then
832 else
833 vnc_tls="no"
837 ##########################################
838 # vde libraries probe
839 if test "$vde" = "yes" ; then
840 cat > $TMPC << EOF
841 #include <libvdeplug.h>
842 int main(void)
844 struct vde_open_args a = {0, 0, 0};
845 vde_open("", "", &a);
846 return 0;
849 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
851 else
852 vde="no"
856 ##########################################
857 # Sound support libraries probe
859 audio_drv_probe()
861 drv=$1
862 hdr=$2
863 lib=$3
864 exp=$4
865 cfl=$5
866 cat > $TMPC << EOF
867 #include <$hdr>
868 int main(void) { $exp }
870 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
872 else
873 echo
874 echo "Error: $drv check failed"
875 echo "Make sure to have the $drv libs and headers installed."
876 echo
877 exit 1
881 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
882 for drv in $audio_drv_list; do
883 case $drv in
884 alsa)
885 audio_drv_probe $drv alsa/asoundlib.h -lasound \
886 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
889 fmod)
890 if test -z $fmod_lib || test -z $fmod_inc; then
891 echo
892 echo "Error: You must specify path to FMOD library and headers"
893 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
894 echo
895 exit 1
897 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
900 esd)
901 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
905 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
906 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
909 oss|sdl|core|wav|dsound)
910 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
914 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
915 echo
916 echo "Error: Unknown driver '$drv' selected"
917 echo "Possible drivers are: $audio_possible_drivers"
918 echo
919 exit 1
922 esac
923 done
925 ##########################################
926 # BrlAPI probe
928 if test -z "$brlapi" ; then
929 brlapi=no
930 cat > $TMPC << EOF
931 #include <brlapi.h>
932 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
934 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
935 brlapi=yes
936 fi # brlapi compile test
937 fi # -z $brlapi
939 ##########################################
940 # curses probe
942 if test "$curses" = "yes" ; then
943 curses=no
944 cat > $TMPC << EOF
945 #include <curses.h>
946 int main(void) { return curses_version(); }
948 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
949 curses=yes
951 fi # test "$curses"
953 ##########################################
954 # bluez support probe
955 if test "$bluez" = "yes" ; then
956 `pkg-config bluez` || bluez="no"
958 if test "$bluez" = "yes" ; then
959 cat > $TMPC << EOF
960 #include <bluetooth/bluetooth.h>
961 int main(void) { return bt_error(0); }
963 bluez_cflags=`pkg-config --cflags bluez`
964 bluez_libs=`pkg-config --libs bluez`
965 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
966 $bluez_libs 2> /dev/null ; then
968 else
969 bluez="no"
973 ##########################################
974 # kvm probe
975 if test "$kvm" = "yes" ; then
976 cat > $TMPC <<EOF
977 #include <linux/kvm.h>
978 #if !defined(KVM_API_VERSION) || \
979 KVM_API_VERSION < 12 || \
980 KVM_API_VERSION > 12 || \
981 !defined(KVM_CAP_USER_MEMORY) || \
982 !defined(KVM_CAP_SET_TSS_ADDR)
983 #error Invalid KVM version
984 #endif
985 int main(void) { return 0; }
987 if test "$kerneldir" != "" ; then
988 kvm_cflags=-I"$kerneldir"/include
989 else
990 kvm_cflags=""
992 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
993 2>/dev/null ; then
995 else
996 kvm="no"
1000 ##########################################
1001 # AIO probe
1002 if test "$aio" = "yes" ; then
1003 aio=no
1004 cat > $TMPC << EOF
1005 #include <aio.h>
1006 int main(void) { return aio_write(NULL); }
1008 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
1009 aio=yes
1013 # Check if tools are available to build documentation.
1014 if [ -x "`which texi2html 2>/dev/null`" ] && \
1015 [ -x "`which pod2man 2>/dev/null`" ]; then
1016 build_docs="yes"
1019 if test "$mingw32" = "yes" ; then
1020 if test -z "$prefix" ; then
1021 prefix="c:\\\\Program Files\\\\Qemu"
1023 mansuffix=""
1024 datasuffix=""
1025 docsuffix=""
1026 binsuffix=""
1027 else
1028 if test -z "$prefix" ; then
1029 prefix="/usr/local"
1031 mansuffix="/share/man"
1032 datasuffix="/share/qemu"
1033 docsuffix="/share/doc/qemu"
1034 binsuffix="/bin"
1037 echo "Install prefix $prefix"
1038 echo "BIOS directory $prefix$datasuffix"
1039 echo "binary directory $prefix$binsuffix"
1040 if test "$mingw32" = "no" ; then
1041 echo "Manual directory $prefix$mansuffix"
1042 echo "ELF interp prefix $interp_prefix"
1044 echo "Source path $source_path"
1045 echo "C compiler $cc"
1046 echo "Host C compiler $host_cc"
1047 echo "ARCH_CFLAGS $ARCH_CFLAGS"
1048 echo "make $make"
1049 echo "install $install"
1050 echo "host CPU $cpu"
1051 echo "host big endian $bigendian"
1052 echo "target list $target_list"
1053 echo "gprof enabled $gprof"
1054 echo "sparse enabled $sparse"
1055 echo "profiler $profiler"
1056 echo "static build $static"
1057 echo "-Werror enabled $werror"
1058 if test "$darwin" = "yes" ; then
1059 echo "Cocoa support $cocoa"
1061 echo "SDL support $sdl"
1062 if test "$sdl" != "no" ; then
1063 echo "SDL static link $sdl_static"
1065 echo "curses support $curses"
1066 echo "mingw32 support $mingw32"
1067 echo "Audio drivers $audio_drv_list"
1068 echo "Extra audio cards $audio_card_list"
1069 echo "Mixer emulation $mixemu"
1070 echo "VNC TLS support $vnc_tls"
1071 if test "$vnc_tls" = "yes" ; then
1072 echo " TLS CFLAGS $vnc_tls_cflags"
1073 echo " TLS LIBS $vnc_tls_libs"
1075 if test -n "$sparc_cpu"; then
1076 echo "Target Sparc Arch $sparc_cpu"
1078 echo "kqemu support $kqemu"
1079 echo "brlapi support $brlapi"
1080 echo "Documentation $build_docs"
1081 [ ! -z "$uname_release" ] && \
1082 echo "uname -r $uname_release"
1083 echo "NPTL support $nptl"
1084 echo "vde support $vde"
1085 echo "AIO support $aio"
1086 echo "KVM support $kvm"
1088 if test $sdl_too_old = "yes"; then
1089 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1091 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1092 echo "The error log from compiling the libSDL test is: "
1093 cat /tmp/qemu-$$-sdl-config.log
1095 rm -f /tmp/qemu-$$-sdl-config.log
1096 #if test "$sdl_static" = "no"; then
1097 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1099 config_mak="config-host.mak"
1100 config_h="config-host.h"
1102 #echo "Creating $config_mak and $config_h"
1104 test -f $config_h && mv $config_h ${config_h}~
1106 echo "# Automatically generated by configure - do not modify" > $config_mak
1107 echo "# Configured with: $0 $@" >> $config_mak
1108 echo "/* Automatically generated by configure - do not modify */" > $config_h
1110 echo "prefix=$prefix" >> $config_mak
1111 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1112 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1113 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1114 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1115 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1116 echo "MAKE=$make" >> $config_mak
1117 echo "INSTALL=$install" >> $config_mak
1118 echo "CC=$cc" >> $config_mak
1119 echo "HOST_CC=$host_cc" >> $config_mak
1120 echo "AR=$ar" >> $config_mak
1121 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1122 # XXX: only use CFLAGS and LDFLAGS ?
1123 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1124 # compilation of dyngen tool (useful for win32 build on Linux host)
1125 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1126 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1127 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1128 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1129 echo "CFLAGS=$CFLAGS" >> $config_mak
1130 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1131 echo "EXESUF=$EXESUF" >> $config_mak
1132 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1133 case "$cpu" in
1134 i386)
1135 echo "ARCH=i386" >> $config_mak
1136 echo "#define HOST_I386 1" >> $config_h
1138 x86_64)
1139 echo "ARCH=x86_64" >> $config_mak
1140 echo "#define HOST_X86_64 1" >> $config_h
1142 alpha)
1143 echo "ARCH=alpha" >> $config_mak
1144 echo "#define HOST_ALPHA 1" >> $config_h
1146 armv4b)
1147 echo "ARCH=arm" >> $config_mak
1148 echo "#define HOST_ARM 1" >> $config_h
1150 armv4l)
1151 echo "ARCH=arm" >> $config_mak
1152 echo "#define HOST_ARM 1" >> $config_h
1154 cris)
1155 echo "ARCH=cris" >> $config_mak
1156 echo "#define HOST_CRIS 1" >> $config_h
1158 hppa)
1159 echo "ARCH=hppa" >> $config_mak
1160 echo "#define HOST_HPPA 1" >> $config_h
1162 ia64)
1163 echo "ARCH=ia64" >> $config_mak
1164 echo "#define HOST_IA64 1" >> $config_h
1166 m68k)
1167 echo "ARCH=m68k" >> $config_mak
1168 echo "#define HOST_M68K 1" >> $config_h
1170 mips)
1171 echo "ARCH=mips" >> $config_mak
1172 echo "#define HOST_MIPS 1" >> $config_h
1174 mips64)
1175 echo "ARCH=mips64" >> $config_mak
1176 echo "#define HOST_MIPS64 1" >> $config_h
1178 powerpc)
1179 if test "$hostlongbits" = "32"; then
1180 echo "ARCH=ppc" >> $config_mak
1181 echo "#define HOST_PPC 1" >> $config_h
1182 else
1183 echo "ARCH=ppc64" >> $config_mak
1184 echo "#define HOST_PPC64 1" >> $config_h
1187 s390)
1188 echo "ARCH=s390" >> $config_mak
1189 echo "#define HOST_S390 1" >> $config_h
1191 sparc)
1192 echo "ARCH=sparc" >> $config_mak
1193 echo "#define HOST_SPARC 1" >> $config_h
1195 sparc64)
1196 echo "ARCH=sparc64" >> $config_mak
1197 echo "#define HOST_SPARC64 1" >> $config_h
1200 echo "Unsupported CPU = $cpu"
1201 exit 1
1203 esac
1204 if test "$sparse" = "yes" ; then
1205 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_mak
1206 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_mak
1207 echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1209 if test "$bigendian" = "yes" ; then
1210 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1211 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1213 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1214 if test "$mingw32" = "yes" ; then
1215 echo "CONFIG_WIN32=yes" >> $config_mak
1216 echo "#define CONFIG_WIN32 1" >> $config_h
1217 else
1218 cat > $TMPC << EOF
1219 #include <byteswap.h>
1220 int main(void) { return bswap_32(0); }
1222 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1223 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1227 if [ "$openbsd" = "yes" ] ; then
1228 echo "#define ENOTSUP 4096" >> $config_h
1231 if test "$darwin" = "yes" ; then
1232 echo "CONFIG_DARWIN=yes" >> $config_mak
1233 echo "#define CONFIG_DARWIN 1" >> $config_h
1236 if test "$aix" = "yes" ; then
1237 echo "CONFIG_AIX=yes" >> $config_mak
1238 echo "#define CONFIG_AIX 1" >> $config_h
1241 if test "$solaris" = "yes" ; then
1242 echo "CONFIG_SOLARIS=yes" >> $config_mak
1243 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1244 if test "$needs_libsunmath" = "yes" ; then
1245 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1246 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1249 if test -n "$sparc_cpu"; then
1250 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1251 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1253 if test "$gdbstub" = "yes" ; then
1254 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1255 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1257 if test "$gprof" = "yes" ; then
1258 echo "TARGET_GPROF=yes" >> $config_mak
1259 echo "#define HAVE_GPROF 1" >> $config_h
1261 if test "$static" = "yes" ; then
1262 echo "CONFIG_STATIC=yes" >> $config_mak
1263 echo "#define CONFIG_STATIC 1" >> $config_h
1265 if test $profiler = "yes" ; then
1266 echo "#define CONFIG_PROFILER 1" >> $config_h
1268 if test "$slirp" = "yes" ; then
1269 echo "CONFIG_SLIRP=yes" >> $config_mak
1270 echo "#define CONFIG_SLIRP 1" >> $config_h
1272 if test "$vde" = "yes" ; then
1273 echo "CONFIG_VDE=yes" >> $config_mak
1274 echo "#define CONFIG_VDE 1" >> $config_h
1275 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1277 for card in $audio_card_list; do
1278 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1279 echo "$def=yes" >> $config_mak
1280 echo "#define $def 1" >> $config_h
1281 done
1282 echo "#define AUDIO_DRIVERS \\" >> $config_h
1283 for drv in $audio_drv_list; do
1284 echo " &${drv}_audio_driver, \\" >>$config_h
1285 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1286 echo "$def=yes" >> $config_mak
1287 if test "$drv" = "fmod"; then
1288 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1289 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1290 elif test "$drv" = "oss"; then
1291 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1293 done
1294 echo "" >>$config_h
1295 if test "$mixemu" = "yes" ; then
1296 echo "CONFIG_MIXEMU=yes" >> $config_mak
1297 echo "#define CONFIG_MIXEMU 1" >> $config_h
1299 if test "$vnc_tls" = "yes" ; then
1300 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1301 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1302 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1303 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1305 qemu_version=`head $source_path/VERSION`
1306 echo "VERSION=$qemu_version" >>$config_mak
1307 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1309 echo "SRC_PATH=$source_path" >> $config_mak
1310 if [ "$source_path_used" = "yes" ]; then
1311 echo "VPATH=$source_path" >> $config_mak
1313 echo "TARGET_DIRS=$target_list" >> $config_mak
1314 if [ "$build_docs" = "yes" ] ; then
1315 echo "BUILD_DOCS=yes" >> $config_mak
1317 if test "$static" = "yes"; then
1318 sdl1=$sdl_static
1319 else
1320 sdl1=$sdl
1322 if test "$sdl1" = "yes" ; then
1323 echo "#define CONFIG_SDL 1" >> $config_h
1324 echo "CONFIG_SDL=yes" >> $config_mak
1325 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1326 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1327 else
1328 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1330 if [ "${aa}" = "yes" ] ; then
1331 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1332 else
1333 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1336 if test "$cocoa" = "yes" ; then
1337 echo "#define CONFIG_COCOA 1" >> $config_h
1338 echo "CONFIG_COCOA=yes" >> $config_mak
1340 if test "$curses" = "yes" ; then
1341 echo "#define CONFIG_CURSES 1" >> $config_h
1342 echo "CONFIG_CURSES=yes" >> $config_mak
1343 echo "CURSES_LIBS=-lcurses" >> $config_mak
1345 if test "$brlapi" = "yes" ; then
1346 echo "CONFIG_BRLAPI=yes" >> $config_mak
1347 echo "#define CONFIG_BRLAPI 1" >> $config_h
1348 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1350 if test "$bluez" = "yes" ; then
1351 echo "CONFIG_BLUEZ=yes" >> $config_mak
1352 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1353 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1354 echo "#define CONFIG_BLUEZ 1" >> $config_h
1356 if test "$aio" = "yes" ; then
1357 echo "#define CONFIG_AIO 1" >> $config_h
1358 echo "CONFIG_AIO=yes" >> $config_mak
1361 # XXX: suppress that
1362 if [ "$bsd" = "yes" ] ; then
1363 echo "#define O_LARGEFILE 0" >> $config_h
1364 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1365 echo "#define _BSD 1" >> $config_h
1368 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1370 # USB host support
1371 case "$usb" in
1372 linux)
1373 echo "HOST_USB=linux" >> $config_mak
1375 bsd)
1376 echo "HOST_USB=bsd" >> $config_mak
1379 echo "HOST_USB=stub" >> $config_mak
1381 esac
1383 tools=
1384 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1385 tools="qemu-img\$(EXESUF) $tools"
1386 if [ "$linux" = "yes" ] ; then
1387 tools="qemu-nbd\$(EXESUF) $tools"
1390 echo "TOOLS=$tools" >> $config_mak
1392 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1394 for target in $target_list; do
1395 target_dir="$target"
1396 config_mak=$target_dir/config.mak
1397 config_h=$target_dir/config.h
1398 target_cpu=`echo $target | cut -d '-' -f 1`
1399 target_bigendian="no"
1400 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1401 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1402 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1403 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1404 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1405 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1406 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1407 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1408 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1409 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1410 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1411 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1412 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1413 target_softmmu="no"
1414 target_user_only="no"
1415 target_linux_user="no"
1416 target_darwin_user="no"
1417 target_bsd_user="no"
1418 case "$target" in
1419 ${target_cpu}-softmmu)
1420 target_softmmu="yes"
1422 ${target_cpu}-linux-user)
1423 target_user_only="yes"
1424 target_linux_user="yes"
1426 ${target_cpu}-darwin-user)
1427 target_user_only="yes"
1428 target_darwin_user="yes"
1430 ${target_cpu}-bsd-user)
1431 target_user_only="yes"
1432 target_bsd_user="yes"
1435 echo "ERROR: Target '$target' not recognised"
1436 exit 1
1438 esac
1440 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1441 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1442 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1443 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1444 echo "Note that this will disable all output from the virtual graphics card"
1445 echo "except through VNC or curses."
1446 exit 1;
1449 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1451 test -f $config_h && mv $config_h ${config_h}~
1453 mkdir -p $target_dir
1454 mkdir -p $target_dir/fpu
1455 mkdir -p $target_dir/tcg
1456 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1457 mkdir -p $target_dir/nwfpe
1461 # don't use ln -sf as not all "ln -sf" over write the file/link
1463 rm -f $target_dir/Makefile
1464 ln -s $source_path/Makefile.target $target_dir/Makefile
1467 echo "# Automatically generated by configure - do not modify" > $config_mak
1468 echo "/* Automatically generated by configure - do not modify */" > $config_h
1471 echo "include ../config-host.mak" >> $config_mak
1472 echo "#include \"../config-host.h\"" >> $config_h
1474 bflt="no"
1475 elfload32="no"
1476 target_nptl="no"
1477 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1478 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1479 gdb_xml_files=""
1481 # Make sure the target and host cpus are compatible
1482 if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
1483 \( "$target_cpu" = "x86_64" -a "$cpu" = "i386" \) -o \
1484 \( "$target_cpu" = "i386" -a "$cpu" = "x86_64" \) \) ; then
1485 kvm="no"
1487 # Disable KVM for linux-user
1488 if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1489 kvm="no"
1492 case "$target_cpu" in
1493 i386)
1494 echo "TARGET_ARCH=i386" >> $config_mak
1495 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1496 echo "#define TARGET_I386 1" >> $config_h
1497 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1498 then
1499 echo "#define USE_KQEMU 1" >> $config_h
1501 if test "$kvm" = "yes" ; then
1502 echo "CONFIG_KVM=yes" >> $config_mak
1503 echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1504 echo "#define CONFIG_KVM 1" >> $config_h
1506 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1507 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1508 then
1509 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1510 else
1511 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1514 x86_64)
1515 echo "TARGET_ARCH=x86_64" >> $config_mak
1516 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1517 echo "#define TARGET_I386 1" >> $config_h
1518 echo "#define TARGET_X86_64 1" >> $config_h
1519 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1520 then
1521 echo "#define USE_KQEMU 1" >> $config_h
1523 if test "$kvm" = "yes" ; then
1524 echo "CONFIG_KVM=yes" >> $config_mak
1525 echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1526 echo "#define CONFIG_KVM 1" >> $config_h
1529 alpha)
1530 echo "TARGET_ARCH=alpha" >> $config_mak
1531 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1532 echo "#define TARGET_ALPHA 1" >> $config_h
1534 arm|armeb)
1535 echo "TARGET_ARCH=arm" >> $config_mak
1536 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1537 echo "#define TARGET_ARM 1" >> $config_h
1538 bflt="yes"
1539 target_nptl="yes"
1540 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1542 cris)
1543 echo "TARGET_ARCH=cris" >> $config_mak
1544 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1545 echo "#define TARGET_CRIS 1" >> $config_h
1547 m68k)
1548 echo "TARGET_ARCH=m68k" >> $config_mak
1549 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1550 echo "#define TARGET_M68K 1" >> $config_h
1551 bflt="yes"
1552 gdb_xml_files="cf-core.xml cf-fp.xml"
1554 mips|mipsel)
1555 echo "TARGET_ARCH=mips" >> $config_mak
1556 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1557 echo "#define TARGET_MIPS 1" >> $config_h
1558 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1560 mipsn32|mipsn32el)
1561 echo "TARGET_ARCH=mipsn32" >> $config_mak
1562 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1563 echo "#define TARGET_MIPS 1" >> $config_h
1564 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1566 mips64|mips64el)
1567 echo "TARGET_ARCH=mips64" >> $config_mak
1568 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1569 echo "#define TARGET_MIPS 1" >> $config_h
1570 echo "#define TARGET_MIPS64 1" >> $config_h
1571 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1573 ppc)
1574 echo "TARGET_ARCH=ppc" >> $config_mak
1575 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1576 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1577 echo "#define TARGET_PPC 1" >> $config_h
1578 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1580 ppcemb)
1581 echo "TARGET_ARCH=ppcemb" >> $config_mak
1582 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1583 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1584 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1585 echo "#define TARGET_PPC 1" >> $config_h
1586 echo "#define TARGET_PPCEMB 1" >> $config_h
1587 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1589 ppc64)
1590 echo "TARGET_ARCH=ppc64" >> $config_mak
1591 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1592 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1593 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1594 echo "#define TARGET_PPC 1" >> $config_h
1595 echo "#define TARGET_PPC64 1" >> $config_h
1596 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1598 ppc64abi32)
1599 echo "TARGET_ARCH=ppc64" >> $config_mak
1600 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1601 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1602 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1603 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1604 echo "#define TARGET_PPC 1" >> $config_h
1605 echo "#define TARGET_PPC64 1" >> $config_h
1606 echo "#define TARGET_ABI32 1" >> $config_h
1607 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1609 sh4|sh4eb)
1610 echo "TARGET_ARCH=sh4" >> $config_mak
1611 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1612 echo "#define TARGET_SH4 1" >> $config_h
1613 bflt="yes"
1614 target_nptl="yes"
1616 sparc)
1617 echo "TARGET_ARCH=sparc" >> $config_mak
1618 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1619 echo "#define TARGET_SPARC 1" >> $config_h
1621 sparc64)
1622 echo "TARGET_ARCH=sparc64" >> $config_mak
1623 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1624 echo "#define TARGET_SPARC 1" >> $config_h
1625 echo "#define TARGET_SPARC64 1" >> $config_h
1626 elfload32="yes"
1628 sparc32plus)
1629 echo "TARGET_ARCH=sparc64" >> $config_mak
1630 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1631 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1632 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1633 echo "#define TARGET_SPARC 1" >> $config_h
1634 echo "#define TARGET_SPARC64 1" >> $config_h
1635 echo "#define TARGET_ABI32 1" >> $config_h
1638 echo "Unsupported target CPU"
1639 exit 1
1641 esac
1642 if test "$target_bigendian" = "yes" ; then
1643 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1644 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1646 if test "$target_softmmu" = "yes" ; then
1647 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1648 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1650 if test "$target_user_only" = "yes" ; then
1651 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1652 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1654 if test "$target_linux_user" = "yes" ; then
1655 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1656 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1658 if test "$target_darwin_user" = "yes" ; then
1659 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1660 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1662 list=""
1663 if test ! -z "$gdb_xml_files" ; then
1664 for x in $gdb_xml_files; do
1665 list="$list $source_path/gdb-xml/$x"
1666 done
1668 echo "TARGET_XML_FILES=$list" >> $config_mak
1670 if test "$target_cpu" = "arm" \
1671 -o "$target_cpu" = "armeb" \
1672 -o "$target_cpu" = "m68k" \
1673 -o "$target_cpu" = "mips" \
1674 -o "$target_cpu" = "mipsel" \
1675 -o "$target_cpu" = "mipsn32" \
1676 -o "$target_cpu" = "mipsn32el" \
1677 -o "$target_cpu" = "mips64" \
1678 -o "$target_cpu" = "mips64el" \
1679 -o "$target_cpu" = "sparc" \
1680 -o "$target_cpu" = "sparc64" \
1681 -o "$target_cpu" = "sparc32plus"; then
1682 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1683 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1685 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1686 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1687 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1689 if test "$target_user_only" = "yes" \
1690 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1691 echo "#define USE_NPTL 1" >> $config_h
1693 # 32 bit ELF loader in addition to native 64 bit loader?
1694 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1695 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1696 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1698 if test "$target_bsd_user" = "yes" ; then
1699 echo "CONFIG_BSD_USER=yes" >> $config_mak
1700 echo "#define CONFIG_BSD_USER 1" >> $config_h
1703 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1705 done # for target in $targets
1707 # build tree in object directory if source path is different from current one
1708 if test "$source_path_used" = "yes" ; then
1709 DIRS="tests tests/cris slirp audio"
1710 FILES="Makefile tests/Makefile"
1711 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1712 FILES="$FILES tests/test-mmap.c"
1713 for dir in $DIRS ; do
1714 mkdir -p $dir
1715 done
1716 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1717 for f in $FILES ; do
1718 rm -f $f
1719 ln -s $source_path/$f $f
1720 done
1723 rm -f $TMPO $TMPC $TMPE $TMPS $TMPI