Make KVMSlot a real structure
[qemu/qemu-JZ.git] / configure
blob1f3d23397cfa9c811740ff1390da93882ababc4c
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 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
152 kqemu="yes"
155 NetBSD)
156 bsd="yes"
157 audio_drv_list="oss"
158 audio_possible_drivers="oss sdl esd"
160 OpenBSD)
161 bsd="yes"
162 openbsd="yes"
163 audio_drv_list="oss"
164 audio_possible_drivers="oss sdl esd"
165 oss_lib="-lossaudio"
167 Darwin)
168 bsd="yes"
169 darwin="yes"
170 darwin_user="yes"
171 cocoa="yes"
172 audio_drv_list="coreaudio"
173 audio_possible_drivers="coreaudio sdl fmod"
174 OS_CFLAGS="-mdynamic-no-pic"
175 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
177 SunOS)
178 solaris="yes"
179 make="gmake"
180 install="ginstall"
181 needs_libsunmath="no"
182 solarisrev=`uname -r | cut -f2 -d.`
183 # have to select again, because `uname -m` returns i86pc
184 # even on an x86_64 box.
185 solariscpu=`isainfo -k`
186 if test "${solariscpu}" = "amd64" ; then
187 cpu="x86_64"
189 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
190 if test "$solarisrev" -le 9 ; then
191 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
192 needs_libsunmath="yes"
193 else
194 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
195 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
196 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
197 echo "Studio 11 can be downloaded from www.sun.com."
198 exit 1
201 if test "$solarisrev" -ge 9 ; then
202 kqemu="yes"
205 if test -f /usr/include/sys/soundcard.h ; then
206 audio_drv_list="oss"
208 audio_possible_drivers="oss sdl"
210 AIX)
211 aix="yes"
212 make="gmake"
215 audio_drv_list="oss"
216 audio_possible_drivers="oss alsa sdl esd pa"
217 linux="yes"
218 linux_user="yes"
219 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
220 kqemu="yes"
221 audio_possible_drivers="$audio_possible_drivers fmod"
224 esac
226 if [ "$bsd" = "yes" ] ; then
227 if [ "$darwin" != "yes" ] ; then
228 make="gmake"
230 bsd_user="yes"
233 # find source path
234 source_path=`dirname "$0"`
235 source_path_used="no"
236 workdir=`pwd`
237 if [ -z "$source_path" ]; then
238 source_path=$workdir
239 else
240 source_path=`cd "$source_path"; pwd`
242 [ -f "$workdir/vl.c" ] || source_path_used="yes"
244 werror="no"
245 # generate compile errors on warnings for development builds
246 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
247 #werror="yes";
250 for opt do
251 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
252 case "$opt" in
253 --help|-h) show_help=yes
255 --prefix=*) prefix="$optarg"
257 --interp-prefix=*) interp_prefix="$optarg"
259 --source-path=*) source_path="$optarg"
260 source_path_used="yes"
262 --cross-prefix=*) cross_prefix="$optarg"
264 --cc=*) cc="$optarg"
265 gcc3_search="no"
267 --host-cc=*) host_cc="$optarg"
269 --make=*) make="$optarg"
271 --install=*) install="$optarg"
273 --extra-cflags=*) CFLAGS="$optarg"
275 --extra-ldflags=*) LDFLAGS="$optarg"
277 --cpu=*) cpu="$optarg"
279 --target-list=*) target_list="$optarg"
281 --enable-gprof) gprof="yes"
283 --static) static="yes"
285 --disable-sdl) sdl="no"
287 --fmod-lib=*) fmod_lib="$optarg"
289 --fmod-inc=*) fmod_inc="$optarg"
291 --oss-lib=*) oss_lib="$optarg"
293 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
295 --audio-drv-list=*) audio_drv_list="$optarg"
297 --enable-sparse) sparse="yes"
299 --disable-sparse) sparse="no"
301 --disable-vnc-tls) vnc_tls="no"
303 --disable-slirp) slirp="no"
305 --disable-vde) vde="no"
307 --disable-kqemu) kqemu="no"
309 --disable-brlapi) brlapi="no"
311 --disable-bluez) bluez="no"
313 --disable-kvm) kvm="no"
315 --enable-profiler) profiler="yes"
317 --enable-cocoa)
318 cocoa="yes" ;
319 sdl="no" ;
320 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
322 --disable-gfx-check) check_gfx="no"
324 --disable-gcc-check) check_gcc="no"
326 --disable-system) softmmu="no"
328 --enable-system) softmmu="yes"
330 --disable-linux-user) linux_user="no"
332 --enable-linux-user) linux_user="yes"
334 --disable-darwin-user) darwin_user="no"
336 --enable-darwin-user) darwin_user="yes"
338 --disable-bsd-user) bsd_user="no"
340 --enable-bsd-user) bsd_user="yes"
342 --enable-uname-release=*) uname_release="$optarg"
344 --sparc_cpu=*)
345 sparc_cpu="$optarg"
346 case $sparc_cpu in
347 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
348 target_cpu="sparc"; cpu="sparc" ;;
349 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
350 target_cpu="sparc"; cpu="sparc" ;;
351 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
352 target_cpu="sparc64"; cpu="sparc64" ;;
353 *) echo "undefined SPARC architecture. Exiting";exit 1;;
354 esac
356 --enable-werror) werror="yes"
358 --disable-werror) werror="no"
360 --disable-curses) curses="no"
362 --disable-nptl) nptl="no"
364 --enable-mixemu) mixemu="yes"
366 --disable-aio) aio="no"
368 --kerneldir=*) kerneldir="$optarg"
370 *) echo "ERROR: unknown option $opt"; show_help="yes"
372 esac
373 done
375 # default flags for all hosts
376 CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
377 CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
378 LDFLAGS="$LDFLAGS -g"
379 if test "$werror" = "yes" ; then
380 CFLAGS="$CFLAGS -Werror"
383 if test "$solaris" = "no" ; then
384 if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
385 LDFLAGS="$LDFLAGS -Wl,--warn-common"
390 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
391 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
393 case "$cpu" in
394 sparc) if test -z "$sparc_cpu" ; then
395 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
396 ARCH_LDFLAGS="-m32"
397 else
398 ARCH_CFLAGS="${SP_CFLAGS}"
399 ARCH_LDFLAGS="${SP_LDFLAGS}"
402 sparc64) if test -z "$sparc_cpu" ; then
403 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
404 ARCH_LDFLAGS="-m64"
405 else
406 ARCH_CFLAGS="${SP_CFLAGS}"
407 ARCH_LDFLAGS="${SP_LDFLAGS}"
410 s390)
411 ARCH_CFLAGS="-march=z900"
413 i386)
414 ARCH_CFLAGS="-m32"
415 ARCH_LDFLAGS="-m32"
417 x86_64)
418 ARCH_CFLAGS="-m64"
419 ARCH_LDFLAGS="-m64"
421 esac
423 if test x"$show_help" = x"yes" ; then
424 cat << EOF
426 Usage: configure [options]
427 Options: [defaults in brackets after descriptions]
430 echo "Standard options:"
431 echo " --help print this message"
432 echo " --prefix=PREFIX install in PREFIX [$prefix]"
433 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
434 echo " use %M for cpu name [$interp_prefix]"
435 echo " --target-list=LIST set target list [$target_list]"
436 echo ""
437 echo "kqemu kernel acceleration support:"
438 echo " --disable-kqemu disable kqemu support"
439 echo ""
440 echo "Advanced options (experts only):"
441 echo " --source-path=PATH path of source code [$source_path]"
442 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
443 echo " --cc=CC use C compiler CC [$cc]"
444 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
445 echo " --make=MAKE use specified make [$make]"
446 echo " --install=INSTALL use specified install [$install]"
447 echo " --static enable static build [$static]"
448 echo " --enable-sparse enable sparse checker"
449 echo " --disable-sparse disable sparse checker (default)"
450 echo " --disable-werror disable compilation abort on warning"
451 echo " --disable-sdl disable SDL"
452 echo " --enable-cocoa enable COCOA (Mac OS X only)"
453 echo " --audio-drv-list=LIST set audio drivers list:"
454 echo " Available drivers: $audio_possible_drivers"
455 echo " --audio-card-list=LIST set list of additional emulated audio cards"
456 echo " Available cards: ac97 adlib cs4231a gus"
457 echo " --enable-mixemu enable mixer emulation"
458 echo " --disable-brlapi disable BrlAPI"
459 echo " --disable-vnc-tls disable TLS encryption for VNC server"
460 echo " --disable-curses disable curses output"
461 echo " --disable-bluez disable bluez stack connectivity"
462 echo " --disable-kvm disable KVM acceleration support"
463 echo " --disable-nptl disable usermode NPTL support"
464 echo " --enable-system enable all system emulation targets"
465 echo " --disable-system disable all system emulation targets"
466 echo " --enable-linux-user enable all linux usermode emulation targets"
467 echo " --disable-linux-user disable all linux usermode emulation targets"
468 echo " --enable-darwin-user enable all darwin usermode emulation targets"
469 echo " --disable-darwin-user disable all darwin usermode emulation targets"
470 echo " --enable-bsd-user enable all BSD usermode emulation targets"
471 echo " --disable-bsd-user disable all BSD usermode emulation targets"
472 echo " --fmod-lib path to FMOD library"
473 echo " --fmod-inc path to FMOD includes"
474 echo " --oss-lib path to OSS library"
475 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
476 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
477 echo " --disable-vde disable support for vde network"
478 echo " --disable-aio disable AIO support"
479 echo " --kerneldir=PATH look for kernel includes in PATH"
480 echo ""
481 echo "NOTE: The object files are built at the place where configure is launched"
482 exit 1
485 cc="${cross_prefix}${cc}"
486 ar="${cross_prefix}${ar}"
487 strip="${cross_prefix}${strip}"
489 # check that the C compiler works.
490 cat > $TMPC <<EOF
491 int main(void) {}
494 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
495 : C compiler works ok
496 else
497 echo "ERROR: \"$cc\" either does not exist or does not work"
498 exit 1
501 # check compiler to see if we're on mingw32
502 cat > $TMPC <<EOF
503 #include <windows.h>
504 #ifndef _WIN32
505 #error not windows
506 #endif
507 int main(void) {}
510 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
511 mingw32="yes"
514 if test "$mingw32" = "yes" ; then
515 linux="no"
516 EXESUF=".exe"
517 oss="no"
518 linux_user="no"
519 bsd_user="no"
522 if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
523 AIOLIBS=
524 elif [ "$bsd" = "yes" ]; then
525 AIOLIBS="-lpthread"
526 else
527 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
528 AIOLIBS="-lrt -lpthread"
531 # Check for gcc4, error if pre-gcc4
532 if test "$check_gcc" = "yes" ; then
533 cat > $TMPC <<EOF
534 #if __GNUC__ < 4
535 #error gcc3
536 #endif
537 int main(){return 0;}
539 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
540 echo "WARNING: \"$cc\" looks like gcc 4.x"
541 found_compat_cc="no"
542 if test "$gcc3_search" = "yes" ; then
543 echo "Looking for gcc 3.x"
544 for compat_cc in $gcc3_list ; do
545 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
546 echo "Found \"$compat_cc\""
547 cc="$cross_prefix$compat_cc"
548 found_compat_cc="yes"
549 break
551 done
552 if test "$found_compat_cc" = "no" ; then
553 echo "gcc 3.x not found!"
556 if test "$found_compat_cc" = "no" ; then
557 echo "QEMU is known to have problems when compiled with gcc 4.x"
558 echo "It is recommended that you use gcc 3.x to build QEMU"
559 echo "To use this compiler anyway, configure with --disable-gcc-check"
560 exit 1;
565 if test ! -x "$(which cgcc 2>/dev/null)"; then
566 sparse="no"
570 # Solaris specific configure tool chain decisions
572 if test "$solaris" = "yes" ; then
574 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
575 # override the check with --disable-gcc-check
577 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
578 solgcc=`which $cc`
579 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
580 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
581 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
582 echo "or get the latest patch from SunSolve for gcc"
583 exit 1
586 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
587 if test -z "$solinst" ; then
588 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
589 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
590 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
591 exit 1
593 if test "$solinst" = "/usr/sbin/install" ; then
594 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
595 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
596 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
597 exit 1
599 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
600 if test -z "$sol_ar" ; then
601 echo "Error: No path includes ar"
602 if test -f /usr/ccs/bin/ar ; then
603 echo "Add /usr/ccs/bin to your path and rerun configure"
605 exit 1
610 if test -z "$target_list" ; then
611 # these targets are portable
612 if [ "$softmmu" = "yes" ] ; then
613 target_list="\
614 i386-softmmu \
615 x86_64-softmmu \
616 arm-softmmu \
617 cris-softmmu \
618 m68k-softmmu \
619 mips-softmmu \
620 mipsel-softmmu \
621 mips64-softmmu \
622 mips64el-softmmu \
623 ppc-softmmu \
624 ppcemb-softmmu \
625 ppc64-softmmu \
626 sh4-softmmu \
627 sh4eb-softmmu \
628 sparc-softmmu \
631 # the following are Linux specific
632 if [ "$linux_user" = "yes" ] ; then
633 target_list="${target_list}\
634 i386-linux-user \
635 x86_64-linux-user \
636 alpha-linux-user \
637 arm-linux-user \
638 armeb-linux-user \
639 cris-linux-user \
640 m68k-linux-user \
641 mips-linux-user \
642 mipsel-linux-user \
643 ppc-linux-user \
644 ppc64-linux-user \
645 ppc64abi32-linux-user \
646 sh4-linux-user \
647 sh4eb-linux-user \
648 sparc-linux-user \
649 sparc64-linux-user \
650 sparc32plus-linux-user \
653 # the following are Darwin specific
654 if [ "$darwin_user" = "yes" ] ; then
655 target_list="$target_list i386-darwin-user ppc-darwin-user"
657 # the following are BSD specific
658 if [ "$bsd_user" = "yes" ] ; then
659 target_list="${target_list}\
660 sparc64-bsd-user \
663 else
664 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
666 if test -z "$target_list" ; then
667 echo "No targets enabled"
668 exit 1
671 if test -z "$cross_prefix" ; then
673 # ---
674 # big/little endian test
675 cat > $TMPC << EOF
676 #include <inttypes.h>
677 int main(int argc, char ** argv){
678 volatile uint32_t i=0x01234567;
679 return (*((uint8_t*)(&i))) == 0x67;
683 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
684 $TMPE && bigendian="yes"
685 else
686 echo big/little test failed
689 else
691 # if cross compiling, cannot launch a program, so make a static guess
692 if test "$cpu" = "armv4b" \
693 -o "$cpu" = "hppa" \
694 -o "$cpu" = "m68k" \
695 -o "$cpu" = "mips" \
696 -o "$cpu" = "mips64" \
697 -o "$cpu" = "powerpc" \
698 -o "$cpu" = "s390" \
699 -o "$cpu" = "sparc" \
700 -o "$cpu" = "sparc64"; then
701 bigendian="yes"
706 # host long bits test
707 hostlongbits="32"
708 if test "$cpu" = "x86_64" \
709 -o "$cpu" = "alpha" \
710 -o "$cpu" = "ia64" \
711 -o "$cpu" = "sparc64"; then
712 hostlongbits="64"
715 # ppc specific hostlongbits selection
716 if test "$cpu" = "powerpc" ; then
717 if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
718 grep -q __powerpc64__ $TMPI && hostlongbits=64
719 else
720 echo hostlongbits test failed
721 exit 1
725 # check gcc options support
726 cat > $TMPC <<EOF
727 int main(void) {
731 # Check host NPTL support
732 cat > $TMPC <<EOF
733 #include <sched.h>
734 #include <linux/futex.h>
735 void foo()
737 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
738 #error bork
739 #endif
743 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
745 else
746 nptl="no"
749 ##########################################
750 # zlib check
752 cat > $TMPC << EOF
753 #include <zlib.h>
754 int main(void) { zlibVersion(); return 0; }
756 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz 2> /dev/null ; then
758 else
759 echo
760 echo "Error: zlib check failed"
761 echo "Make sure to have the zlib libs and headers installed."
762 echo
763 exit 1
766 ##########################################
767 # SDL probe
769 sdl_too_old=no
771 if test -z "$sdl" ; then
772 sdl_config="sdl-config"
773 sdl=no
774 sdl_static=no
776 cat > $TMPC << EOF
777 #include <SDL.h>
778 #undef main /* We don't want SDL to override our main() */
779 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
781 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
782 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
783 if test "$_sdlversion" -lt 121 ; then
784 sdl_too_old=yes
785 else
786 if test "$cocoa" = "no" ; then
787 sdl=yes
791 # static link with sdl ?
792 if test "$sdl" = "yes" ; then
793 aa="no"
794 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
795 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
796 if [ "$aa" = "yes" ] ; then
797 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
800 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
801 sdl_static=yes
803 fi # static link
804 fi # sdl compile test
805 else
806 # Make sure to disable cocoa if sdl was set
807 if test "$sdl" = "yes" ; then
808 cocoa="no"
809 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
811 fi # -z $sdl
813 ##########################################
814 # VNC TLS detection
815 if test "$vnc_tls" = "yes" ; then
816 cat > $TMPC <<EOF
817 #include <gnutls/gnutls.h>
818 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
820 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
821 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
822 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
823 $vnc_tls_libs 2> /dev/null ; then
825 else
826 vnc_tls="no"
830 ##########################################
831 # vde libraries probe
832 if test "$vde" = "yes" ; then
833 cat > $TMPC << EOF
834 #include <libvdeplug.h>
835 int main(void)
837 struct vde_open_args a = {0, 0, 0};
838 vde_open("", "", &a);
839 return 0;
842 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
844 else
845 vde="no"
849 ##########################################
850 # Sound support libraries probe
852 audio_drv_probe()
854 drv=$1
855 hdr=$2
856 lib=$3
857 exp=$4
858 cfl=$5
859 cat > $TMPC << EOF
860 #include <$hdr>
861 int main(void) { $exp }
863 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
865 else
866 echo
867 echo "Error: $drv check failed"
868 echo "Make sure to have the $drv libs and headers installed."
869 echo
870 exit 1
874 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
875 for drv in $audio_drv_list; do
876 case $drv in
877 alsa)
878 audio_drv_probe $drv alsa/asoundlib.h -lasound \
879 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
882 fmod)
883 if test -z $fmod_lib || test -z $fmod_inc; then
884 echo
885 echo "Error: You must specify path to FMOD library and headers"
886 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
887 echo
888 exit 1
890 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
893 esd)
894 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
898 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
899 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
902 oss|sdl|core|wav|dsound)
903 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
907 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
908 echo
909 echo "Error: Unknown driver '$drv' selected"
910 echo "Possible drivers are: $audio_possible_drivers"
911 echo
912 exit 1
915 esac
916 done
918 ##########################################
919 # BrlAPI probe
921 if test -z "$brlapi" ; then
922 brlapi=no
923 cat > $TMPC << EOF
924 #include <brlapi.h>
925 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
927 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
928 brlapi=yes
929 fi # brlapi compile test
930 fi # -z $brlapi
932 ##########################################
933 # curses probe
935 if test "$curses" = "yes" ; then
936 curses=no
937 cat > $TMPC << EOF
938 #include <curses.h>
939 int main(void) { return curses_version(); }
941 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
942 curses=yes
944 fi # test "$curses"
946 ##########################################
947 # bluez support probe
948 if test "$bluez" = "yes" ; then
949 `pkg-config bluez` || bluez="no"
951 if test "$bluez" = "yes" ; then
952 cat > $TMPC << EOF
953 #include <bluetooth/bluetooth.h>
954 int main(void) { return bt_error(0); }
956 bluez_cflags=`pkg-config --cflags bluez`
957 bluez_libs=`pkg-config --libs bluez`
958 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
959 $bluez_libs 2> /dev/null ; then
961 else
962 bluez="no"
966 ##########################################
967 # kvm probe
968 if test "$kvm" = "yes" ; then
969 cat > $TMPC <<EOF
970 #include <linux/kvm.h>
971 #if !defined(KVM_API_VERSION) || \
972 KVM_API_VERSION < 12 || \
973 KVM_API_VERSION > 12 || \
974 !defined(KVM_CAP_USER_MEMORY) || \
975 !defined(KVM_CAP_SET_TSS_ADDR)
976 #error Invalid KVM version
977 #endif
978 int main(void) { return 0; }
980 if test "$kerneldir" != "" ; then
981 kvm_cflags=-I"$kerneldir"/include
982 else
983 kvm_cflags=""
985 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
986 2>/dev/null ; then
988 else
989 kvm="no"
993 ##########################################
994 # AIO probe
995 if test "$aio" = "yes" ; then
996 aio=no
997 cat > $TMPC << EOF
998 #include <aio.h>
999 int main(void) { return aio_write(NULL); }
1001 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
1002 aio=yes
1006 # Check if tools are available to build documentation.
1007 if [ -x "`which texi2html 2>/dev/null`" ] && \
1008 [ -x "`which pod2man 2>/dev/null`" ]; then
1009 build_docs="yes"
1012 if test "$mingw32" = "yes" ; then
1013 if test -z "$prefix" ; then
1014 prefix="c:\\\\Program Files\\\\Qemu"
1016 mansuffix=""
1017 datasuffix=""
1018 docsuffix=""
1019 binsuffix=""
1020 else
1021 if test -z "$prefix" ; then
1022 prefix="/usr/local"
1024 mansuffix="/share/man"
1025 datasuffix="/share/qemu"
1026 docsuffix="/share/doc/qemu"
1027 binsuffix="/bin"
1030 echo "Install prefix $prefix"
1031 echo "BIOS directory $prefix$datasuffix"
1032 echo "binary directory $prefix$binsuffix"
1033 if test "$mingw32" = "no" ; then
1034 echo "Manual directory $prefix$mansuffix"
1035 echo "ELF interp prefix $interp_prefix"
1037 echo "Source path $source_path"
1038 echo "C compiler $cc"
1039 echo "Host C compiler $host_cc"
1040 echo "ARCH_CFLAGS $ARCH_CFLAGS"
1041 echo "make $make"
1042 echo "install $install"
1043 echo "host CPU $cpu"
1044 echo "host big endian $bigendian"
1045 echo "target list $target_list"
1046 echo "gprof enabled $gprof"
1047 echo "sparse enabled $sparse"
1048 echo "profiler $profiler"
1049 echo "static build $static"
1050 echo "-Werror enabled $werror"
1051 if test "$darwin" = "yes" ; then
1052 echo "Cocoa support $cocoa"
1054 echo "SDL support $sdl"
1055 if test "$sdl" != "no" ; then
1056 echo "SDL static link $sdl_static"
1058 echo "curses support $curses"
1059 echo "mingw32 support $mingw32"
1060 echo "Audio drivers $audio_drv_list"
1061 echo "Extra audio cards $audio_card_list"
1062 echo "Mixer emulation $mixemu"
1063 echo "VNC TLS support $vnc_tls"
1064 if test "$vnc_tls" = "yes" ; then
1065 echo " TLS CFLAGS $vnc_tls_cflags"
1066 echo " TLS LIBS $vnc_tls_libs"
1068 if test -n "$sparc_cpu"; then
1069 echo "Target Sparc Arch $sparc_cpu"
1071 echo "kqemu support $kqemu"
1072 echo "brlapi support $brlapi"
1073 echo "Documentation $build_docs"
1074 [ ! -z "$uname_release" ] && \
1075 echo "uname -r $uname_release"
1076 echo "NPTL support $nptl"
1077 echo "vde support $vde"
1078 echo "AIO support $aio"
1079 echo "KVM support $kvm"
1081 if test $sdl_too_old = "yes"; then
1082 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1084 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1085 echo "The error log from compiling the libSDL test is: "
1086 cat /tmp/qemu-$$-sdl-config.log
1088 rm -f /tmp/qemu-$$-sdl-config.log
1089 #if test "$sdl_static" = "no"; then
1090 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1092 config_mak="config-host.mak"
1093 config_h="config-host.h"
1095 #echo "Creating $config_mak and $config_h"
1097 test -f $config_h && mv $config_h ${config_h}~
1099 echo "# Automatically generated by configure - do not modify" > $config_mak
1100 echo "# Configured with: $0 $@" >> $config_mak
1101 echo "/* Automatically generated by configure - do not modify */" > $config_h
1103 echo "prefix=$prefix" >> $config_mak
1104 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1105 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1106 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1107 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1108 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1109 echo "MAKE=$make" >> $config_mak
1110 echo "INSTALL=$install" >> $config_mak
1111 echo "CC=$cc" >> $config_mak
1112 echo "HOST_CC=$host_cc" >> $config_mak
1113 echo "AR=$ar" >> $config_mak
1114 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1115 # XXX: only use CFLAGS and LDFLAGS ?
1116 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1117 # compilation of dyngen tool (useful for win32 build on Linux host)
1118 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1119 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1120 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1121 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1122 echo "CFLAGS=$CFLAGS" >> $config_mak
1123 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1124 echo "EXESUF=$EXESUF" >> $config_mak
1125 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1126 case "$cpu" in
1127 i386)
1128 echo "ARCH=i386" >> $config_mak
1129 echo "#define HOST_I386 1" >> $config_h
1131 x86_64)
1132 echo "ARCH=x86_64" >> $config_mak
1133 echo "#define HOST_X86_64 1" >> $config_h
1135 alpha)
1136 echo "ARCH=alpha" >> $config_mak
1137 echo "#define HOST_ALPHA 1" >> $config_h
1139 armv4b)
1140 echo "ARCH=arm" >> $config_mak
1141 echo "#define HOST_ARM 1" >> $config_h
1143 armv4l)
1144 echo "ARCH=arm" >> $config_mak
1145 echo "#define HOST_ARM 1" >> $config_h
1147 cris)
1148 echo "ARCH=cris" >> $config_mak
1149 echo "#define HOST_CRIS 1" >> $config_h
1151 hppa)
1152 echo "ARCH=hppa" >> $config_mak
1153 echo "#define HOST_HPPA 1" >> $config_h
1155 ia64)
1156 echo "ARCH=ia64" >> $config_mak
1157 echo "#define HOST_IA64 1" >> $config_h
1159 m68k)
1160 echo "ARCH=m68k" >> $config_mak
1161 echo "#define HOST_M68K 1" >> $config_h
1163 mips)
1164 echo "ARCH=mips" >> $config_mak
1165 echo "#define HOST_MIPS 1" >> $config_h
1167 mips64)
1168 echo "ARCH=mips64" >> $config_mak
1169 echo "#define HOST_MIPS64 1" >> $config_h
1171 powerpc)
1172 if test "$hostlongbits" = "32"; then
1173 echo "ARCH=ppc" >> $config_mak
1174 echo "#define HOST_PPC 1" >> $config_h
1175 else
1176 echo "ARCH=ppc64" >> $config_mak
1177 echo "#define HOST_PPC64 1" >> $config_h
1180 s390)
1181 echo "ARCH=s390" >> $config_mak
1182 echo "#define HOST_S390 1" >> $config_h
1184 sparc)
1185 echo "ARCH=sparc" >> $config_mak
1186 echo "#define HOST_SPARC 1" >> $config_h
1188 sparc64)
1189 echo "ARCH=sparc64" >> $config_mak
1190 echo "#define HOST_SPARC64 1" >> $config_h
1193 echo "Unsupported CPU = $cpu"
1194 exit 1
1196 esac
1197 if test "$sparse" = "yes" ; then
1198 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_mak
1199 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_mak
1200 echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1202 if test "$bigendian" = "yes" ; then
1203 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1204 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1206 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1207 if test "$mingw32" = "yes" ; then
1208 echo "CONFIG_WIN32=yes" >> $config_mak
1209 echo "#define CONFIG_WIN32 1" >> $config_h
1210 else
1211 cat > $TMPC << EOF
1212 #include <byteswap.h>
1213 int main(void) { return bswap_32(0); }
1215 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1216 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1220 if [ "$openbsd" = "yes" ] ; then
1221 echo "#define ENOTSUP 4096" >> $config_h
1224 if test "$darwin" = "yes" ; then
1225 echo "CONFIG_DARWIN=yes" >> $config_mak
1226 echo "#define CONFIG_DARWIN 1" >> $config_h
1229 if test "$aix" = "yes" ; then
1230 echo "CONFIG_AIX=yes" >> $config_mak
1231 echo "#define CONFIG_AIX 1" >> $config_h
1234 if test "$solaris" = "yes" ; then
1235 echo "CONFIG_SOLARIS=yes" >> $config_mak
1236 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1237 if test "$needs_libsunmath" = "yes" ; then
1238 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1239 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1242 if test -n "$sparc_cpu"; then
1243 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1244 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1246 if test "$gdbstub" = "yes" ; then
1247 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1248 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1250 if test "$gprof" = "yes" ; then
1251 echo "TARGET_GPROF=yes" >> $config_mak
1252 echo "#define HAVE_GPROF 1" >> $config_h
1254 if test "$static" = "yes" ; then
1255 echo "CONFIG_STATIC=yes" >> $config_mak
1256 echo "#define CONFIG_STATIC 1" >> $config_h
1258 if test $profiler = "yes" ; then
1259 echo "#define CONFIG_PROFILER 1" >> $config_h
1261 if test "$slirp" = "yes" ; then
1262 echo "CONFIG_SLIRP=yes" >> $config_mak
1263 echo "#define CONFIG_SLIRP 1" >> $config_h
1265 if test "$vde" = "yes" ; then
1266 echo "CONFIG_VDE=yes" >> $config_mak
1267 echo "#define CONFIG_VDE 1" >> $config_h
1268 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1270 for card in $audio_card_list; do
1271 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1272 echo "$def=yes" >> $config_mak
1273 echo "#define $def 1" >> $config_h
1274 done
1275 echo "#define AUDIO_DRIVERS \\" >> $config_h
1276 for drv in $audio_drv_list; do
1277 echo " &${drv}_audio_driver, \\" >>$config_h
1278 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1279 echo "$def=yes" >> $config_mak
1280 if test "$drv" = "fmod"; then
1281 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1282 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1283 elif test "$drv" = "oss"; then
1284 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1286 done
1287 echo "" >>$config_h
1288 if test "$mixemu" = "yes" ; then
1289 echo "CONFIG_MIXEMU=yes" >> $config_mak
1290 echo "#define CONFIG_MIXEMU 1" >> $config_h
1292 if test "$vnc_tls" = "yes" ; then
1293 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1294 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1295 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1296 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1298 qemu_version=`head $source_path/VERSION`
1299 echo "VERSION=$qemu_version" >>$config_mak
1300 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1302 echo "SRC_PATH=$source_path" >> $config_mak
1303 if [ "$source_path_used" = "yes" ]; then
1304 echo "VPATH=$source_path" >> $config_mak
1306 echo "TARGET_DIRS=$target_list" >> $config_mak
1307 if [ "$build_docs" = "yes" ] ; then
1308 echo "BUILD_DOCS=yes" >> $config_mak
1310 if test "$static" = "yes"; then
1311 sdl1=$sdl_static
1312 else
1313 sdl1=$sdl
1315 if test "$sdl1" = "yes" ; then
1316 echo "#define CONFIG_SDL 1" >> $config_h
1317 echo "CONFIG_SDL=yes" >> $config_mak
1318 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1319 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1320 else
1321 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1323 if [ "${aa}" = "yes" ] ; then
1324 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1325 else
1326 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1329 if test "$cocoa" = "yes" ; then
1330 echo "#define CONFIG_COCOA 1" >> $config_h
1331 echo "CONFIG_COCOA=yes" >> $config_mak
1333 if test "$curses" = "yes" ; then
1334 echo "#define CONFIG_CURSES 1" >> $config_h
1335 echo "CONFIG_CURSES=yes" >> $config_mak
1336 echo "CURSES_LIBS=-lcurses" >> $config_mak
1338 if test "$brlapi" = "yes" ; then
1339 echo "CONFIG_BRLAPI=yes" >> $config_mak
1340 echo "#define CONFIG_BRLAPI 1" >> $config_h
1341 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1343 if test "$bluez" = "yes" ; then
1344 echo "CONFIG_BLUEZ=yes" >> $config_mak
1345 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1346 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1347 echo "#define CONFIG_BLUEZ 1" >> $config_h
1349 if test "$aio" = "yes" ; then
1350 echo "#define CONFIG_AIO 1" >> $config_h
1351 echo "CONFIG_AIO=yes" >> $config_mak
1354 # XXX: suppress that
1355 if [ "$bsd" = "yes" ] ; then
1356 echo "#define O_LARGEFILE 0" >> $config_h
1357 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1358 echo "#define _BSD 1" >> $config_h
1361 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1363 tools=
1364 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1365 tools="qemu-img\$(EXESUF) $tools"
1366 if [ "$linux" = "yes" ] ; then
1367 tools="qemu-nbd\$(EXESUF) $tools"
1370 echo "TOOLS=$tools" >> $config_mak
1372 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1374 for target in $target_list; do
1375 target_dir="$target"
1376 config_mak=$target_dir/config.mak
1377 config_h=$target_dir/config.h
1378 target_cpu=`echo $target | cut -d '-' -f 1`
1379 target_bigendian="no"
1380 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1381 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1382 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1383 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1384 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1385 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1386 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1387 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1388 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1389 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1390 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1391 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1392 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1393 target_softmmu="no"
1394 target_user_only="no"
1395 target_linux_user="no"
1396 target_darwin_user="no"
1397 target_bsd_user="no"
1398 case "$target" in
1399 ${target_cpu}-softmmu)
1400 target_softmmu="yes"
1402 ${target_cpu}-linux-user)
1403 target_user_only="yes"
1404 target_linux_user="yes"
1406 ${target_cpu}-darwin-user)
1407 target_user_only="yes"
1408 target_darwin_user="yes"
1410 ${target_cpu}-bsd-user)
1411 target_user_only="yes"
1412 target_bsd_user="yes"
1415 echo "ERROR: Target '$target' not recognised"
1416 exit 1
1418 esac
1420 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1421 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1422 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1423 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1424 echo "Note that this will disable all output from the virtual graphics card"
1425 echo "except through VNC or curses."
1426 exit 1;
1429 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1431 test -f $config_h && mv $config_h ${config_h}~
1433 mkdir -p $target_dir
1434 mkdir -p $target_dir/fpu
1435 mkdir -p $target_dir/tcg
1436 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1437 mkdir -p $target_dir/nwfpe
1441 # don't use ln -sf as not all "ln -sf" over write the file/link
1443 rm -f $target_dir/Makefile
1444 ln -s $source_path/Makefile.target $target_dir/Makefile
1447 echo "# Automatically generated by configure - do not modify" > $config_mak
1448 echo "/* Automatically generated by configure - do not modify */" > $config_h
1451 echo "include ../config-host.mak" >> $config_mak
1452 echo "#include \"../config-host.h\"" >> $config_h
1454 bflt="no"
1455 elfload32="no"
1456 target_nptl="no"
1457 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1458 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1459 gdb_xml_files=""
1461 # Make sure the target and host cpus are compatible
1462 if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
1463 \( "$target_cpu" = "x86_64" -a "$cpu" = "i386" \) -o \
1464 \( "$target_cpu" = "i386" -a "$cpu" = "x86_64" \) \) ; then
1465 kvm="no"
1467 # Disable KVM for linux-user
1468 if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1469 kvm="no"
1472 case "$target_cpu" in
1473 i386)
1474 echo "TARGET_ARCH=i386" >> $config_mak
1475 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1476 echo "#define TARGET_I386 1" >> $config_h
1477 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1478 then
1479 echo "#define USE_KQEMU 1" >> $config_h
1481 if test "$kvm" = "yes" ; then
1482 echo "CONFIG_KVM=yes" >> $config_mak
1483 echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1484 echo "#define CONFIG_KVM 1" >> $config_h
1486 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1487 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1488 then
1489 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1490 else
1491 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1494 x86_64)
1495 echo "TARGET_ARCH=x86_64" >> $config_mak
1496 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1497 echo "#define TARGET_I386 1" >> $config_h
1498 echo "#define TARGET_X86_64 1" >> $config_h
1499 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1500 then
1501 echo "#define USE_KQEMU 1" >> $config_h
1503 if test "$kvm" = "yes" ; then
1504 echo "CONFIG_KVM=yes" >> $config_mak
1505 echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1506 echo "#define CONFIG_KVM 1" >> $config_h
1509 alpha)
1510 echo "TARGET_ARCH=alpha" >> $config_mak
1511 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1512 echo "#define TARGET_ALPHA 1" >> $config_h
1514 arm|armeb)
1515 echo "TARGET_ARCH=arm" >> $config_mak
1516 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1517 echo "#define TARGET_ARM 1" >> $config_h
1518 bflt="yes"
1519 target_nptl="yes"
1520 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1522 cris)
1523 echo "TARGET_ARCH=cris" >> $config_mak
1524 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1525 echo "#define TARGET_CRIS 1" >> $config_h
1527 m68k)
1528 echo "TARGET_ARCH=m68k" >> $config_mak
1529 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1530 echo "#define TARGET_M68K 1" >> $config_h
1531 bflt="yes"
1532 gdb_xml_files="cf-core.xml cf-fp.xml"
1534 mips|mipsel)
1535 echo "TARGET_ARCH=mips" >> $config_mak
1536 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1537 echo "#define TARGET_MIPS 1" >> $config_h
1538 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1540 mipsn32|mipsn32el)
1541 echo "TARGET_ARCH=mipsn32" >> $config_mak
1542 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1543 echo "#define TARGET_MIPS 1" >> $config_h
1544 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1546 mips64|mips64el)
1547 echo "TARGET_ARCH=mips64" >> $config_mak
1548 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1549 echo "#define TARGET_MIPS 1" >> $config_h
1550 echo "#define TARGET_MIPS64 1" >> $config_h
1551 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1553 ppc)
1554 echo "TARGET_ARCH=ppc" >> $config_mak
1555 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1556 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1557 echo "#define TARGET_PPC 1" >> $config_h
1558 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1560 ppcemb)
1561 echo "TARGET_ARCH=ppcemb" >> $config_mak
1562 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1563 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1564 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1565 echo "#define TARGET_PPC 1" >> $config_h
1566 echo "#define TARGET_PPCEMB 1" >> $config_h
1567 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1569 ppc64)
1570 echo "TARGET_ARCH=ppc64" >> $config_mak
1571 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1572 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1573 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1574 echo "#define TARGET_PPC 1" >> $config_h
1575 echo "#define TARGET_PPC64 1" >> $config_h
1576 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1578 ppc64abi32)
1579 echo "TARGET_ARCH=ppc64" >> $config_mak
1580 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1581 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1582 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1583 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1584 echo "#define TARGET_PPC 1" >> $config_h
1585 echo "#define TARGET_PPC64 1" >> $config_h
1586 echo "#define TARGET_ABI32 1" >> $config_h
1587 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1589 sh4|sh4eb)
1590 echo "TARGET_ARCH=sh4" >> $config_mak
1591 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1592 echo "#define TARGET_SH4 1" >> $config_h
1593 bflt="yes"
1594 target_nptl="yes"
1596 sparc)
1597 echo "TARGET_ARCH=sparc" >> $config_mak
1598 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1599 echo "#define TARGET_SPARC 1" >> $config_h
1601 sparc64)
1602 echo "TARGET_ARCH=sparc64" >> $config_mak
1603 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1604 echo "#define TARGET_SPARC 1" >> $config_h
1605 echo "#define TARGET_SPARC64 1" >> $config_h
1606 elfload32="yes"
1608 sparc32plus)
1609 echo "TARGET_ARCH=sparc64" >> $config_mak
1610 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1611 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1612 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1613 echo "#define TARGET_SPARC 1" >> $config_h
1614 echo "#define TARGET_SPARC64 1" >> $config_h
1615 echo "#define TARGET_ABI32 1" >> $config_h
1618 echo "Unsupported target CPU"
1619 exit 1
1621 esac
1622 if test "$target_bigendian" = "yes" ; then
1623 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1624 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1626 if test "$target_softmmu" = "yes" ; then
1627 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1628 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1630 if test "$target_user_only" = "yes" ; then
1631 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1632 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1634 if test "$target_linux_user" = "yes" ; then
1635 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1636 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1638 if test "$target_darwin_user" = "yes" ; then
1639 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1640 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1642 list=""
1643 if test ! -z "$gdb_xml_files" ; then
1644 for x in $gdb_xml_files; do
1645 list="$list $source_path/gdb-xml/$x"
1646 done
1648 echo "TARGET_XML_FILES=$list" >> $config_mak
1650 if test "$target_cpu" = "arm" \
1651 -o "$target_cpu" = "armeb" \
1652 -o "$target_cpu" = "m68k" \
1653 -o "$target_cpu" = "mips" \
1654 -o "$target_cpu" = "mipsel" \
1655 -o "$target_cpu" = "mipsn32" \
1656 -o "$target_cpu" = "mipsn32el" \
1657 -o "$target_cpu" = "mips64" \
1658 -o "$target_cpu" = "mips64el" \
1659 -o "$target_cpu" = "sparc" \
1660 -o "$target_cpu" = "sparc64" \
1661 -o "$target_cpu" = "sparc32plus"; then
1662 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1663 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1665 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1666 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1667 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1669 if test "$target_user_only" = "yes" \
1670 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1671 echo "#define USE_NPTL 1" >> $config_h
1673 # 32 bit ELF loader in addition to native 64 bit loader?
1674 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1675 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1676 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1678 if test "$target_bsd_user" = "yes" ; then
1679 echo "CONFIG_BSD_USER=yes" >> $config_mak
1680 echo "#define CONFIG_BSD_USER 1" >> $config_h
1683 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1685 done # for target in $targets
1687 # build tree in object directory if source path is different from current one
1688 if test "$source_path_used" = "yes" ; then
1689 DIRS="tests tests/cris slirp audio"
1690 FILES="Makefile tests/Makefile"
1691 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1692 FILES="$FILES tests/test-mmap.c"
1693 for dir in $DIRS ; do
1694 mkdir -p $dir
1695 done
1696 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1697 for f in $FILES ; do
1698 rm -f $f
1699 ln -s $source_path/$f $f
1700 done
1703 rm -f $TMPO $TMPC $TMPE $TMPS $TMPI