kvm: bios: detect vapic calls to uninitialized vapic
[qemu-kvm/fedora.git] / configure
blob10343a9591de7da8ebfb0cb342201148ee39226e
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"
19 # default parameters
20 prefix=""
21 interp_prefix="/usr/gnemul/qemu-%M"
22 static="no"
23 cross_prefix=""
24 cc="gcc"
25 gcc3_search="yes"
26 gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
27 audio_drv_list=""
28 audio_card_list=""
29 host_cc="gcc"
30 ar="ar"
31 make="make"
32 install="install"
33 strip="strip"
34 cpu=`uname -m`
35 target_list=""
36 case "$cpu" in
37 i386|i486|i586|i686|i86pc|BePC)
38 cpu="i386"
40 x86_64|amd64)
41 cpu="x86_64"
43 alpha)
44 cpu="alpha"
46 armv*b)
47 cpu="armv4b"
49 armv*l)
50 cpu="armv4l"
52 cris)
53 cpu="cris"
55 parisc|parisc64)
56 cpu="hppa"
58 ia64)
59 cpu="ia64"
61 m68k)
62 cpu="m68k"
64 mips)
65 cpu="mips"
67 mips64)
68 cpu="mips64"
70 "Power Macintosh"|ppc|ppc64)
71 cpu="powerpc"
73 s390*)
74 cpu="s390"
76 sparc|sun4[cdmuv])
77 cpu="sparc"
79 sparc64)
80 cpu="sparc64"
83 cpu="unknown"
85 esac
86 gprof="no"
87 bigendian="no"
88 mingw32="no"
89 EXESUF=""
90 gdbstub="yes"
91 slirp="yes"
92 vde="yes"
93 fmod_lib=""
94 fmod_inc=""
95 vnc_tls="yes"
96 bsd="no"
97 linux="no"
98 kqemu="no"
99 kvm="no"
100 kvm_cap_pit="no"
101 profiler="no"
102 kernel_path=""
103 cocoa="no"
104 check_gfx="yes"
105 check_gcc="yes"
106 softmmu="yes"
107 linux_user="no"
108 darwin_user="no"
109 build_docs="no"
110 uname_release=""
111 curses="yes"
112 nptl="yes"
113 mixemu="no"
114 cpu_emulation="yes"
115 device_tree_support=""
117 # OS specific
118 targetos=`uname -s`
119 case $targetos in
120 CYGWIN*)
121 mingw32="yes"
122 OS_CFLAGS="-mno-cygwin"
123 if [ "$cpu" = "i386" ] ; then
124 kqemu="yes"
126 audio_possible_drivers="sdl"
128 MINGW32*)
129 mingw32="yes"
130 if [ "$cpu" = "i386" ] ; then
131 kqemu="yes"
133 audio_possible_drivers="dsound sdl fmod"
135 GNU/kFreeBSD)
136 audio_drv_list="oss"
137 audio_possible_drivers="oss sdl esd"
138 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
139 kqemu="yes"
142 FreeBSD)
143 bsd="yes"
144 audio_drv_list="oss"
145 audio_possible_drivers="oss sdl esd"
146 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
147 kqemu="yes"
148 kvm="yes"
151 NetBSD)
152 bsd="yes"
153 audio_drv_list="oss"
154 audio_possible_drivers="oss sdl esd"
156 OpenBSD)
157 bsd="yes"
158 audio_drv_list="oss"
159 audio_possible_drivers="oss sdl esd"
161 Darwin)
162 bsd="yes"
163 darwin="yes"
164 darwin_user="yes"
165 cocoa="yes"
166 audio_drv_list="coreaudio"
167 audio_possible_drivers="coreaudio sdl fmod"
168 OS_CFLAGS="-mdynamic-no-pic"
169 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
171 SunOS)
172 solaris="yes"
173 make="gmake"
174 install="ginstall"
175 needs_libsunmath="no"
176 solarisrev=`uname -r | cut -f2 -d.`
177 # have to select again, because `uname -m` returns i86pc
178 # even on an x86_64 box.
179 solariscpu=`isainfo -k`
180 if test "${solariscpu}" = "amd64" ; then
181 cpu="x86_64"
183 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
184 if test "$solarisrev" -le 9 ; then
185 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
186 needs_libsunmath="yes"
187 else
188 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
189 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
190 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
191 echo "Studio 11 can be downloaded from www.sun.com."
192 exit 1
195 if test "$solarisrev" -ge 9 ; then
196 kqemu="yes"
199 if test -f /usr/include/sys/soundcard.h ; then
200 audio_drv_list="oss"
202 audio_possible_drivers="oss sdl"
205 audio_drv_list="oss"
206 audio_possible_drivers="oss alsa sdl esd pa"
207 linux="yes"
208 linux_user="yes"
209 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
210 kqemu="yes"
211 audio_possible_drivers="$audio_possible_drivers fmod"
212 kvm="yes"
214 if [ "$cpu" = "ia64" ] ; then
215 kvm="yes"
216 cpu_emulation="no"
217 gdbstub="no"
218 slirp="no"
220 if [ "$cpu" = "powerpc" ]; then
221 kvm="yes"
224 esac
226 if [ "$bsd" = "yes" ] ; then
227 if [ "$darwin" != "yes" ] ; then
228 make="gmake"
232 # find source path
233 source_path=`dirname "$0"`
234 source_path_used="no"
235 workdir=`pwd`
236 if [ -z "$source_path" ]; then
237 source_path=$workdir
238 else
239 source_path=`cd "$source_path"; pwd`
241 [ -f "$workdir/vl.c" ] || source_path_used="yes"
243 werror="no"
244 # generate compile errors on warnings for development builds
245 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
246 #werror="yes";
249 for opt do
250 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
251 case "$opt" in
252 --help|-h) show_help=yes
254 --prefix=*) prefix="$optarg"
256 --interp-prefix=*) interp_prefix="$optarg"
258 --source-path=*) source_path="$optarg"
259 source_path_used="yes"
261 --cross-prefix=*) cross_prefix="$optarg"
263 --cc=*) cc="$optarg"
264 gcc3_search="no"
266 --host-cc=*) host_cc="$optarg"
268 --make=*) make="$optarg"
270 --install=*) install="$optarg"
272 --extra-cflags=*) CFLAGS="$optarg"
274 --extra-ldflags=*) LDFLAGS="$optarg"
276 --cpu=*) cpu="$optarg"
278 --target-list=*) target_list="$optarg"
280 --enable-gprof) gprof="yes"
282 --static) static="yes"
284 --disable-sdl) sdl="no"
286 --fmod-lib=*) fmod_lib="$optarg"
288 --fmod-inc=*) fmod_inc="$optarg"
290 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
292 --audio-drv-list=*) audio_drv_list="$optarg"
294 --disable-vnc-tls) vnc_tls="no"
296 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
298 --disable-slirp) slirp="no"
300 --disable-vde) vde="no"
302 --disable-kqemu) kqemu="no"
304 --disable-kvm) kvm="no"
306 --disable-brlapi) brlapi="no"
308 --enable-profiler) profiler="yes"
310 --kernel-path=*) kernel_path="$optarg"
312 --enable-cocoa)
313 cocoa="yes" ;
314 sdl="no" ;
315 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
317 --disable-gfx-check) check_gfx="no"
319 --disable-gcc-check) check_gcc="no"
321 --disable-system) softmmu="no"
323 --enable-system) softmmu="yes"
325 --disable-linux-user) linux_user="no"
327 --enable-linux-user) linux_user="yes"
329 --disable-darwin-user) darwin_user="no"
331 --enable-darwin-user) darwin_user="yes"
333 --enable-uname-release=*) uname_release="$optarg"
335 --sparc_cpu=*)
336 sparc_cpu="$optarg"
337 case $sparc_cpu in
338 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
339 target_cpu="sparc"; cpu="sparc" ;;
340 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
341 target_cpu="sparc"; cpu="sparc" ;;
342 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
343 target_cpu="sparc64"; cpu="sparc64" ;;
344 *) echo "undefined SPARC architecture. Exiting";exit 1;;
345 esac
347 --enable-werror) werror="yes"
349 --disable-werror) werror="no"
351 --disable-curses) curses="no"
353 --disable-nptl) nptl="no"
355 --enable-mixemu) mixemu="yes"
357 --disable-cpu-emulation) cpu_emulation="no"
359 --disable-libfdt) device_tree_support="no"
361 *) echo "ERROR: unknown option $opt"; exit 1
363 esac
364 done
366 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
367 AIOLIBS=
368 else
369 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
370 AIOLIBS="-lrt -lpthread"
373 # default flags for all hosts
374 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
375 LDFLAGS="$LDFLAGS -g"
376 if test "$werror" = "yes" ; then
377 CFLAGS="$CFLAGS -Werror"
381 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
382 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
384 case "$cpu" in
385 sparc) if test -z "$sparc_cpu" ; then
386 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
387 ARCH_LDFLAGS="-m32"
388 else
389 ARCH_CFLAGS="${SP_CFLAGS}"
390 ARCH_LDFLAGS="${SP_LDFLAGS}"
393 sparc64) if test -z "$sparc_cpu" ; then
394 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
395 ARCH_LDFLAGS="-m64"
396 else
397 ARCH_CFLAGS="${SP_CFLAGS}"
398 ARCH_LDFLAGS="${SP_LDFLAGS}"
401 s390)
402 ARCH_CFLAGS="-march=z900"
404 i386)
405 ARCH_CFLAGS="-m32"
406 ARCH_LDFLAGS="-m32"
408 x86_64)
409 ARCH_CFLAGS="-m64"
410 ARCH_LDFLAGS="-m64"
412 esac
414 if test x"$show_help" = x"yes" ; then
415 cat << EOF
417 Usage: configure [options]
418 Options: [defaults in brackets after descriptions]
421 echo "Standard options:"
422 echo " --help print this message"
423 echo " --prefix=PREFIX install in PREFIX [$prefix]"
424 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
425 echo " use %M for cpu name [$interp_prefix]"
426 echo " --target-list=LIST set target list [$target_list]"
427 echo ""
428 echo "kqemu kernel acceleration support:"
429 echo " --disable-kqemu disable kqemu support"
430 echo " --kernel-path=PATH set the kernel path (configure probes it)"
431 echo " --disable-kvm disable kernel virtual machine support"
432 echo ""
433 echo "Advanced options (experts only):"
434 echo " --source-path=PATH path of source code [$source_path]"
435 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
436 echo " --cc=CC use C compiler CC [$cc]"
437 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
438 echo " --make=MAKE use specified make [$make]"
439 echo " --install=INSTALL use specified install [$install]"
440 echo " --static enable static build [$static]"
441 echo " --disable-werror disable compilation abort on warning"
442 echo " --disable-sdl disable SDL"
443 echo " --enable-cocoa enable COCOA (Mac OS X only)"
444 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
445 echo " --audio-drv-list=LIST set audio drivers list:"
446 echo " Available drivers: $audio_possible_drivers"
447 echo " --audio-card-list=LIST set list of additional emulated audio cards"
448 echo " Available cards: ac97 adlib cs4231a gus"
449 echo " --enable-mixemu enable mixer emulation"
450 echo " --disable-brlapi disable BrlAPI"
451 echo " --disable-vnc-tls disable TLS encryption for VNC server"
452 echo " --disable-curses disable curses output"
453 echo " --disable-nptl disable usermode NPTL support"
454 echo " --enable-system enable all system emulation targets"
455 echo " --disable-system disable all system emulation targets"
456 echo " --enable-linux-user enable all linux usermode emulation targets"
457 echo " --disable-linux-user disable all linux usermode emulation targets"
458 echo " --enable-darwin-user enable all darwin usermode emulation targets"
459 echo " --disable-darwin-user disable all darwin usermode emulation targets"
460 echo " --fmod-lib path to FMOD library"
461 echo " --fmod-inc path to FMOD includes"
462 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
463 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
464 echo " --disable-vde disable support for vde network"
465 echo " --disable-cpu-emulation disables use of qemu cpu emulation code"
466 echo " --disable-libfdt disables use of libfdt support for device tree"
467 echo ""
468 echo "NOTE: The object files are built at the place where configure is launched"
469 exit 1
472 cc="${cross_prefix}${cc}"
473 ar="${cross_prefix}${ar}"
474 strip="${cross_prefix}${strip}"
476 # check that the C compiler works.
477 cat > $TMPC <<EOF
478 int main(void) {}
481 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
482 : C compiler works ok
483 else
484 echo "ERROR: \"$cc\" either does not exist or does not work"
485 exit 1
488 if test "$mingw32" = "yes" ; then
489 linux="no"
490 EXESUF=".exe"
491 oss="no"
494 # Check for gcc4, error if pre-gcc4
495 if test "$check_gcc" = "yes" ; then
496 cat > $TMPC <<EOF
497 #if __GNUC__ < 4
498 #error gcc3
499 #endif
500 int main(){return 0;}
502 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
503 echo "WARNING: \"$cc\" looks like gcc 4.x"
504 found_compat_cc="no"
505 if test "$gcc3_search" = "yes" ; then
506 echo "Looking for gcc 3.x"
507 for compat_cc in $gcc3_list ; do
508 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
509 echo "Found \"$compat_cc\""
510 cc="$cross_prefix$compat_cc"
511 found_compat_cc="yes"
512 break
514 done
515 if test "$found_compat_cc" = "no" ; then
516 echo "gcc 3.x not found!"
519 if test "$found_compat_cc" = "no" ; then
520 echo "QEMU is known to have problems when compiled with gcc 4.x"
521 echo "It is recommended that you use gcc 3.x to build QEMU"
522 echo "To use this compiler anyway, configure with --disable-gcc-check"
523 exit 1;
529 # Solaris specific configure tool chain decisions
531 if test "$solaris" = "yes" ; then
533 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
534 # override the check with --disable-gcc-check
536 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
537 solgcc=`which $cc`
538 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
539 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
540 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
541 echo "or get the latest patch from SunSolve for gcc"
542 exit 1
545 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
546 if test -z "$solinst" ; then
547 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
548 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
549 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
550 exit 1
552 if test "$solinst" = "/usr/sbin/install" ; then
553 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
554 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
555 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
556 exit 1
558 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
559 if test -z "$sol_ar" ; then
560 echo "Error: No path includes ar"
561 if test -f /usr/ccs/bin/ar ; then
562 echo "Add /usr/ccs/bin to your path and rerun configure"
564 exit 1
569 if test -z "$target_list" ; then
570 # these targets are portable
571 if [ "$softmmu" = "yes" ] ; then
572 target_list="\
573 i386-softmmu \
574 x86_64-softmmu \
575 arm-softmmu \
576 cris-softmmu \
577 m68k-softmmu \
578 mips-softmmu \
579 mipsel-softmmu \
580 mips64-softmmu \
581 mips64el-softmmu \
582 ppc-softmmu \
583 ppcemb-softmmu \
584 ppc64-softmmu \
585 sh4-softmmu \
586 sh4eb-softmmu \
587 sparc-softmmu \
590 # the following are Linux specific
591 if [ "$linux_user" = "yes" ] ; then
592 target_list="${target_list}\
593 i386-linux-user \
594 x86_64-linux-user \
595 alpha-linux-user \
596 arm-linux-user \
597 armeb-linux-user \
598 cris-linux-user \
599 m68k-linux-user \
600 mips-linux-user \
601 mipsel-linux-user \
602 ppc-linux-user \
603 ppc64-linux-user \
604 ppc64abi32-linux-user \
605 sh4-linux-user \
606 sh4eb-linux-user \
607 sparc-linux-user \
608 sparc64-linux-user \
609 sparc32plus-linux-user \
612 # the following are Darwin specific
613 if [ "$darwin_user" = "yes" ] ; then
614 target_list="$target_list i386-darwin-user ppc-darwin-user"
616 else
617 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
619 if test -z "$target_list" ; then
620 echo "No targets enabled"
621 exit 1
624 if test -z "$cross_prefix" ; then
626 # ---
627 # big/little endian test
628 cat > $TMPC << EOF
629 #include <inttypes.h>
630 int main(int argc, char ** argv){
631 volatile uint32_t i=0x01234567;
632 return (*((uint8_t*)(&i))) == 0x67;
636 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
637 $TMPE && bigendian="yes"
638 else
639 echo big/little test failed
642 else
644 # if cross compiling, cannot launch a program, so make a static guess
645 if test "$cpu" = "armv4b" \
646 -o "$cpu" = "hppa" \
647 -o "$cpu" = "m68k" \
648 -o "$cpu" = "mips" \
649 -o "$cpu" = "mips64" \
650 -o "$cpu" = "powerpc" \
651 -o "$cpu" = "s390" \
652 -o "$cpu" = "sparc" \
653 -o "$cpu" = "sparc64"; then
654 bigendian="yes"
659 # host long bits test
660 hostlongbits="32"
661 if test "$cpu" = "x86_64" \
662 -o "$cpu" = "alpha" \
663 -o "$cpu" = "ia64" \
664 -o "$cpu" = "sparc64"; then
665 hostlongbits="64"
668 # ppc specific hostlongbits selection
669 if test "$cpu" = "powerpc" ; then
670 cat > $TMPC <<EOF
671 int main(void){return sizeof(long);}
674 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
675 $TMPE
676 case $? in
677 4) hostlongbits="32";;
678 8) hostlongbits="64";;
679 *) echo "Couldn't determine bits per long value"; exit 1;;
680 esac
681 else
682 echo hostlongbits test failed
683 exit 1
687 # check gcc options support
688 cat > $TMPC <<EOF
689 int main(void) {
693 # Check host NPTL support
694 cat > $TMPC <<EOF
695 #include <sched.h>
696 #include <linux/futex.h>
697 void foo()
699 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
700 #error bork
701 #endif
705 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
707 else
708 nptl="no"
711 ##########################################
712 # KVM probe
714 if test "$kvm" = "yes" ; then
715 cat > $TMPC <<EOF
716 #include <libkvm.h>
717 #ifndef KVM_CAP_PIT
718 #error "kvm no pit capability"
719 #endif
720 int main(void) { return 0; }
722 if $cc $ARCH_CFLAGS $CFLAGS -I"$kernel_path"/include -o $TMPE ${OS_CFLAGS} $TMPC 2> /dev/null ; then
723 kvm_cap_pit="yes"
727 ##########################################
728 # SDL probe
730 sdl_too_old=no
732 if test -z "$sdl" ; then
733 sdl_config="sdl-config"
734 sdl=no
735 sdl_static=no
737 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
738 # win32 cross compilation case
739 sdl_config="i386-mingw32msvc-sdl-config"
740 sdl=yes
741 else
742 # normal SDL probe
743 cat > $TMPC << EOF
744 #include <SDL.h>
745 #undef main /* We don't want SDL to override our main() */
746 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
748 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
749 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
750 if test "$_sdlversion" -lt 121 ; then
751 sdl_too_old=yes
752 else
753 if test "$cocoa" = "no" ; then
754 sdl=yes
758 # static link with sdl ?
759 if test "$sdl" = "yes" ; then
760 aa="no"
761 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
762 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
763 if [ "$aa" = "yes" ] ; then
764 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
767 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
768 sdl_static=yes
770 fi # static link
771 fi # sdl compile test
772 fi # cross compilation
773 else
774 # Make sure to disable cocoa if sdl was set
775 if test "$sdl" = "yes" ; then
776 cocoa="no"
777 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
779 fi # -z $sdl
781 ##########################################
782 # VNC TLS detection
783 if test "$vnc_tls" = "yes" ; then
784 cat > $TMPC <<EOF
785 #include <gnutls/gnutls.h>
786 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
788 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
789 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
790 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
791 $vnc_tls_libs 2> /dev/null ; then
793 else
794 vnc_tls="no"
798 ##########################################
799 # vde libraries probe
800 if test "$vde" = "yes" ; then
801 cat > $TMPC << EOF
802 #include <libvdeplug.h>
803 int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
805 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
807 else
808 vde="no"
812 ##########################################
813 # Sound support libraries probe
815 audio_drv_probe()
817 drv=$1
818 hdr=$2
819 lib=$3
820 exp=$4
821 cfl=$5
822 cat > $TMPC << EOF
823 #include <$hdr>
824 int main(void) { $exp }
826 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
828 else
829 echo
830 echo "Error: $drv check failed"
831 echo "Make sure to have the $drv libs and headers installed."
832 echo
833 exit 1
837 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
838 for drv in $audio_drv_list; do
839 case $drv in
840 alsa)
841 audio_drv_probe $drv alsa/asoundlib.h -lasound \
842 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
845 fmod)
846 if test -z $fmod_lib || test -z $fmod_inc; then
847 echo
848 echo "Error: You must specify path to FMOD library and headers"
849 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
850 echo
851 exit 1
853 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
856 esd)
857 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
861 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
862 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
866 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
867 echo
868 echo "Error: Unknown driver '$drv' selected"
869 echo "Possible drivers are: $audio_possible_drivers"
870 echo
871 exit 1
875 esac
876 done
878 ##########################################
879 # BrlAPI probe
881 if test -z "$brlapi" ; then
882 brlapi=no
883 cat > $TMPC << EOF
884 #include <brlapi.h>
885 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
887 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
888 brlapi=yes
889 fi # brlapi compile test
890 fi # -z $brlapi
892 ##########################################
893 # curses probe
895 if test "$curses" = "yes" ; then
896 curses=no
897 cat > $TMPC << EOF
898 #include <curses.h>
899 int main(void) { return curses_version(); }
901 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
902 curses=yes
904 fi # test "$curses"
906 # Check if tools are available to build documentation.
907 if [ -x "`which texi2html 2>/dev/null`" ] && \
908 [ -x "`which pod2man 2>/dev/null`" ]; then
909 build_docs="yes"
912 if test "$mingw32" = "yes" ; then
913 if test -z "$prefix" ; then
914 prefix="/c/Program Files/Qemu"
916 mansuffix=""
917 datasuffix=""
918 docsuffix=""
919 binsuffix=""
920 else
921 if test -z "$prefix" ; then
922 prefix="/usr/local"
924 mansuffix="/share/man"
925 datasuffix="/share/qemu"
926 docsuffix="/share/doc/qemu"
927 binsuffix="/bin"
930 ######################################
931 # libfdt probe
933 if test -z "$device_tree_support" -a \
934 "$cpu" = "powerpc"; then
935 device_tree_support="no"
936 cat > $TMPC << EOF
937 #include <libfdt.h>
938 /* XXX uncomment later when libfdt is built before this test */
939 //int main(void) { void *fdt; return fdt_create(fdt, 1024); }
940 int main (void) {return 0;}
942 # XXX for now do not try to link to libfdt and just check for header */
943 # if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC -lfdt 2> /dev/null ; then
944 if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC 2> /dev/null; then
945 device_tree_support="yes"
946 else
947 echo
948 echo "Error: Could not find libfdt"
949 echo "Make sure to have the libfdt libs and headers installed."
950 echo
951 exit 1
955 echo "Install prefix $prefix"
956 echo "BIOS directory $prefix$datasuffix"
957 echo "binary directory $prefix$binsuffix"
958 if test "$mingw32" = "no" ; then
959 echo "Manual directory $prefix$mansuffix"
960 echo "ELF interp prefix $interp_prefix"
962 echo "Source path $source_path"
963 echo "C compiler $cc"
964 echo "Host C compiler $host_cc"
965 echo "ARCH_CFLAGS $ARCH_CFLAGS"
966 echo "make $make"
967 echo "install $install"
968 echo "host CPU $cpu"
969 echo "host big endian $bigendian"
970 echo "target list $target_list"
971 echo "gprof enabled $gprof"
972 echo "profiler $profiler"
973 echo "static build $static"
974 echo "-Werror enabled $werror"
975 if test "$darwin" = "yes" ; then
976 echo "Cocoa support $cocoa"
978 echo "SDL support $sdl"
979 if test "$sdl" != "no" ; then
980 echo "SDL static link $sdl_static"
982 echo "curses support $curses"
983 echo "mingw32 support $mingw32"
984 echo "Audio drivers $audio_drv_list"
985 echo "Extra audio cards $audio_card_list"
986 echo "Mixer emulation $mixemu"
987 echo "VNC TLS support $vnc_tls"
988 if test "$vnc_tls" = "yes" ; then
989 echo " TLS CFLAGS $vnc_tls_cflags"
990 echo " TLS LIBS $vnc_tls_libs"
992 if test -n "$sparc_cpu"; then
993 echo "Target Sparc Arch $sparc_cpu"
995 echo "kqemu support $kqemu"
996 echo "kvm support $kvm"
997 echo "CPU emulation $cpu_emulation"
998 if test $cpu = "powerpc"; then
999 echo "libfdt support $device_tree_support"
1001 echo "brlapi support $brlapi"
1002 echo "Documentation $build_docs"
1003 [ ! -z "$uname_release" ] && \
1004 echo "uname -r $uname_release"
1005 echo "NPTL support $nptl"
1006 echo "vde support $vde"
1008 if test $sdl_too_old = "yes"; then
1009 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1011 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1012 echo "The error log from compiling the libSDL test is: "
1013 cat /tmp/qemu-$$-sdl-config.log
1015 rm -f /tmp/qemu-$$-sdl-config.log
1016 #if test "$sdl_static" = "no"; then
1017 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1019 config_mak="config-host.mak"
1020 config_h="config-host.h"
1022 #echo "Creating $config_mak and $config_h"
1024 test -f $config_h && mv $config_h ${config_h}~
1026 echo "# Automatically generated by configure - do not modify" > $config_mak
1027 echo "# Configured with: $0 $@" >> $config_mak
1028 echo "/* Automatically generated by configure - do not modify */" > $config_h
1030 echo "prefix=$prefix" >> $config_mak
1031 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1032 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1033 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1034 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1035 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1036 echo "MAKE=$make" >> $config_mak
1037 echo "INSTALL=$install" >> $config_mak
1038 echo "CC=$cc" >> $config_mak
1039 echo "HOST_CC=$host_cc" >> $config_mak
1040 echo "AR=$ar" >> $config_mak
1041 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1042 # XXX: only use CFLAGS and LDFLAGS ?
1043 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1044 # compilation of dyngen tool (useful for win32 build on Linux host)
1045 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1046 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1047 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1048 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1049 echo "CFLAGS=$CFLAGS" >> $config_mak
1050 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1051 echo "EXESUF=$EXESUF" >> $config_mak
1052 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1053 case "$cpu" in
1054 i386)
1055 echo "ARCH=i386" >> $config_mak
1056 echo "#define HOST_I386 1" >> $config_h
1058 x86_64)
1059 echo "ARCH=x86_64" >> $config_mak
1060 echo "#define HOST_X86_64 1" >> $config_h
1062 alpha)
1063 echo "ARCH=alpha" >> $config_mak
1064 echo "#define HOST_ALPHA 1" >> $config_h
1066 armv4b)
1067 echo "ARCH=arm" >> $config_mak
1068 echo "#define HOST_ARM 1" >> $config_h
1070 armv4l)
1071 echo "ARCH=arm" >> $config_mak
1072 echo "#define HOST_ARM 1" >> $config_h
1074 cris)
1075 echo "ARCH=cris" >> $config_mak
1076 echo "#define HOST_CRIS 1" >> $config_h
1078 hppa)
1079 echo "ARCH=hppa" >> $config_mak
1080 echo "#define HOST_HPPA 1" >> $config_h
1082 ia64)
1083 echo "ARCH=ia64" >> $config_mak
1084 echo "#define HOST_IA64 1" >> $config_h
1086 m68k)
1087 echo "ARCH=m68k" >> $config_mak
1088 echo "#define HOST_M68K 1" >> $config_h
1090 mips)
1091 echo "ARCH=mips" >> $config_mak
1092 echo "#define HOST_MIPS 1" >> $config_h
1094 mips64)
1095 echo "ARCH=mips64" >> $config_mak
1096 echo "#define HOST_MIPS64 1" >> $config_h
1098 powerpc)
1099 if test "$hostlongbits" = "32"; then
1100 echo "ARCH=ppc" >> $config_mak
1101 echo "#define HOST_PPC 1" >> $config_h
1102 else
1103 echo "ARCH=ppc64" >> $config_mak
1104 echo "#define HOST_PPC64 1" >> $config_h
1107 s390)
1108 echo "ARCH=s390" >> $config_mak
1109 echo "#define HOST_S390 1" >> $config_h
1111 sparc)
1112 echo "ARCH=sparc" >> $config_mak
1113 echo "#define HOST_SPARC 1" >> $config_h
1115 sparc64)
1116 echo "ARCH=sparc64" >> $config_mak
1117 echo "#define HOST_SPARC64 1" >> $config_h
1120 echo "Unsupported CPU = $cpu"
1121 exit 1
1123 esac
1124 if test "$bigendian" = "yes" ; then
1125 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1126 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1128 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1129 if test "$mingw32" = "yes" ; then
1130 echo "CONFIG_WIN32=yes" >> $config_mak
1131 echo "#define CONFIG_WIN32 1" >> $config_h
1132 else
1133 cat > $TMPC << EOF
1134 #include <byteswap.h>
1135 int main(void) { return bswap_32(0); }
1137 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1138 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1141 if test "$darwin" = "yes" ; then
1142 echo "CONFIG_DARWIN=yes" >> $config_mak
1143 echo "#define CONFIG_DARWIN 1" >> $config_h
1145 if test "$solaris" = "yes" ; then
1146 echo "CONFIG_SOLARIS=yes" >> $config_mak
1147 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1148 if test "$needs_libsunmath" = "yes" ; then
1149 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1150 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1153 if test -n "$sparc_cpu"; then
1154 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1155 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1157 if test "$gdbstub" = "yes" ; then
1158 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1159 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1161 if test "$gprof" = "yes" ; then
1162 echo "TARGET_GPROF=yes" >> $config_mak
1163 echo "#define HAVE_GPROF 1" >> $config_h
1165 if test "$static" = "yes" ; then
1166 echo "CONFIG_STATIC=yes" >> $config_mak
1167 echo "#define CONFIG_STATIC 1" >> $config_h
1169 if test $profiler = "yes" ; then
1170 echo "#define CONFIG_PROFILER 1" >> $config_h
1172 if test "$slirp" = "yes" ; then
1173 echo "CONFIG_SLIRP=yes" >> $config_mak
1174 echo "#define CONFIG_SLIRP 1" >> $config_h
1176 if test "$vde" = "yes" ; then
1177 echo "CONFIG_VDE=yes" >> $config_mak
1178 echo "#define CONFIG_VDE 1" >> $config_h
1179 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1181 for card in $audio_card_list; do
1182 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1183 echo "$def=yes" >> $config_mak
1184 echo "#define $def 1" >> $config_h
1185 done
1186 echo "#define AUDIO_DRIVERS \\" >> $config_h
1187 for drv in $audio_drv_list; do
1188 echo " &${drv}_audio_driver, \\" >>$config_h
1189 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1190 echo "$def=yes" >> $config_mak
1191 if test "$drv" = "fmod"; then
1192 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1193 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1195 done
1196 echo "" >>$config_h
1197 if test "$mixemu" = "yes" ; then
1198 echo "CONFIG_MIXEMU=yes" >> $config_mak
1199 echo "#define CONFIG_MIXEMU 1" >> $config_h
1201 if test "$vnc_tls" = "yes" ; then
1202 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1203 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1204 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1205 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1207 qemu_version=`head $source_path/VERSION`
1208 echo "VERSION=$qemu_version" >>$config_mak
1209 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1210 echo "#define KVM_VERSION \"kvm-devel\"" >> $config_h
1212 echo "SRC_PATH=$source_path" >> $config_mak
1213 if [ "$source_path_used" = "yes" ]; then
1214 echo "VPATH=$source_path" >> $config_mak
1216 echo "TARGET_DIRS=$target_list" >> $config_mak
1217 if [ "$build_docs" = "yes" ] ; then
1218 echo "BUILD_DOCS=yes" >> $config_mak
1220 if test "$static" = "yes"; then
1221 sdl1=$sdl_static
1222 else
1223 sdl1=$sdl
1225 if test "$sdl1" = "yes" ; then
1226 echo "#define CONFIG_SDL 1" >> $config_h
1227 echo "CONFIG_SDL=yes" >> $config_mak
1228 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1229 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1230 else
1231 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1233 if [ "${aa}" = "yes" ] ; then
1234 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1235 else
1236 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1239 if test "$cocoa" = "yes" ; then
1240 echo "#define CONFIG_COCOA 1" >> $config_h
1241 echo "CONFIG_COCOA=yes" >> $config_mak
1243 if test "$curses" = "yes" ; then
1244 echo "#define CONFIG_CURSES 1" >> $config_h
1245 echo "CONFIG_CURSES=yes" >> $config_mak
1246 echo "CURSES_LIBS=-lcurses" >> $config_mak
1248 if test "$brlapi" = "yes" ; then
1249 echo "CONFIG_BRLAPI=yes" >> $config_mak
1250 echo "#define CONFIG_BRLAPI 1" >> $config_h
1251 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1254 # XXX: suppress that
1255 if [ "$bsd" = "yes" ] ; then
1256 echo "#define O_LARGEFILE 0" >> $config_h
1257 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1258 echo "#define _BSD 1" >> $config_h
1261 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1263 tools=
1264 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1265 tools="qemu-img\$(EXESUF) $tools"
1266 if [ "$linux" = "yes" ] ; then
1267 tools="qemu-nbd\$(EXESUF) $tools"
1270 echo "TOOLS=$tools" >> $config_mak
1272 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1274 for target in $target_list; do
1275 target_dir="$target"
1276 config_mak=$target_dir/config.mak
1277 config_h=$target_dir/config.h
1278 target_cpu=`echo $target | cut -d '-' -f 1`
1279 target_bigendian="no"
1280 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1281 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1282 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1283 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1284 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1285 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1286 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1287 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1288 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1289 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1290 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1291 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1292 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1293 target_softmmu="no"
1294 target_user_only="no"
1295 target_linux_user="no"
1296 target_darwin_user="no"
1297 case "$target" in
1298 ${target_cpu}-softmmu)
1299 target_softmmu="yes"
1301 ${target_cpu}-linux-user)
1302 target_user_only="yes"
1303 target_linux_user="yes"
1305 ${target_cpu}-darwin-user)
1306 target_user_only="yes"
1307 target_darwin_user="yes"
1310 echo "ERROR: Target '$target' not recognised"
1311 exit 1
1313 esac
1315 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1316 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1317 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1318 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1319 echo "Note that this will disable all output from the virtual graphics card"
1320 echo "except through VNC or curses."
1321 exit 1;
1324 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1326 test -f $config_h && mv $config_h ${config_h}~
1328 mkdir -p $target_dir
1329 mkdir -p $target_dir/fpu
1330 mkdir -p $target_dir/tcg
1331 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1332 mkdir -p $target_dir/nwfpe
1336 # don't use ln -sf as not all "ln -sf" over write the file/link
1338 rm -f $target_dir/Makefile
1339 ln -s $source_path/Makefile.target $target_dir/Makefile
1342 echo "# Automatically generated by configure - do not modify" > $config_mak
1343 echo "/* Automatically generated by configure - do not modify */" > $config_h
1346 echo "include ../config-host.mak" >> $config_mak
1347 echo "#include \"../config-host.h\"" >> $config_h
1349 bflt="no"
1350 elfload32="no"
1351 target_nptl="no"
1352 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1353 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1355 disable_cpu_emulation() {
1356 if test $cpu_emulation = "no"; then
1357 echo "#define NO_CPU_EMULATION 1" >> $config_h
1358 echo "NO_CPU_EMULATION=1" >> $config_mak
1362 configure_kvm() {
1363 if test $kvm = "yes" -a "$target_softmmu" = "yes" -a \
1364 \( "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "ia64" -o "$cpu" = "powerpc" \); then
1365 echo "#define USE_KVM 1" >> $config_h
1366 echo "USE_KVM=1" >> $config_mak
1367 echo "CONFIG_KVM_KERNEL_INC=$kernel_path/include" >> $config_mak
1368 if test $kvm_cap_pit = "yes" ; then
1369 echo "USE_KVM_PIT=1" >> $config_mak
1370 echo "#define USE_KVM_PIT 1" >> $config_h
1372 disable_cpu_emulation
1376 case "$target_cpu" in
1377 i386)
1378 echo "TARGET_ARCH=i386" >> $config_mak
1379 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1380 echo "#define TARGET_I386 1" >> $config_h
1381 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1382 then
1383 echo "#define USE_KQEMU 1" >> $config_h
1385 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1386 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1387 then
1388 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1389 else
1390 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1392 configure_kvm
1394 x86_64)
1395 echo "TARGET_ARCH=x86_64" >> $config_mak
1396 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1397 echo "#define TARGET_I386 1" >> $config_h
1398 echo "#define TARGET_X86_64 1" >> $config_h
1399 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1400 then
1401 echo "#define USE_KQEMU 1" >> $config_h
1403 configure_kvm
1405 ia64)
1406 echo "TARGET_ARCH=ia64" >> $config_mak
1407 echo "#define TARGET_ARCH \"ia64\"" >> $config_h
1408 echo "#define TARGET_IA64 1" >> $config_h
1409 configure_kvm
1411 alpha)
1412 echo "TARGET_ARCH=alpha" >> $config_mak
1413 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1414 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1415 echo "#define TARGET_ALPHA 1" >> $config_h
1416 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1418 arm|armeb)
1419 echo "TARGET_ARCH=arm" >> $config_mak
1420 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1421 echo "#define TARGET_ARM 1" >> $config_h
1422 bflt="yes"
1423 target_nptl="yes"
1425 cris)
1426 echo "TARGET_ARCH=cris" >> $config_mak
1427 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1428 echo "#define TARGET_CRIS 1" >> $config_h
1430 m68k)
1431 echo "TARGET_ARCH=m68k" >> $config_mak
1432 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1433 echo "#define TARGET_M68K 1" >> $config_h
1434 bflt="yes"
1436 mips|mipsel)
1437 echo "TARGET_ARCH=mips" >> $config_mak
1438 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1439 echo "#define TARGET_MIPS 1" >> $config_h
1440 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1442 mipsn32|mipsn32el)
1443 echo "TARGET_ARCH=mipsn32" >> $config_mak
1444 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1445 echo "#define TARGET_MIPS 1" >> $config_h
1446 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1448 mips64|mips64el)
1449 echo "TARGET_ARCH=mips64" >> $config_mak
1450 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1451 echo "#define TARGET_MIPS 1" >> $config_h
1452 echo "#define TARGET_MIPS64 1" >> $config_h
1453 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1455 ppc)
1456 echo "TARGET_ARCH=ppc" >> $config_mak
1457 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1458 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1459 echo "#define TARGET_PPC 1" >> $config_h
1460 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1462 ppcemb)
1463 echo "TARGET_ARCH=ppcemb" >> $config_mak
1464 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1465 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1466 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1467 echo "#define TARGET_PPC 1" >> $config_h
1468 echo "#define TARGET_PPCEMB 1" >> $config_h
1469 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1470 if test "$device_tree_support" = "yes" ; then
1471 echo "#define CONFIG_LIBFDT 1" >> $config_h
1472 echo "CONFIG_LIBFDT=1" >> $config_mak
1474 configure_kvm
1476 ppc64)
1477 echo "TARGET_ARCH=ppc64" >> $config_mak
1478 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1479 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1480 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1481 echo "#define TARGET_PPC 1" >> $config_h
1482 echo "#define TARGET_PPC64 1" >> $config_h
1483 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1485 ppc64abi32)
1486 echo "TARGET_ARCH=ppc64" >> $config_mak
1487 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1488 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1489 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1490 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1491 echo "#define TARGET_PPC 1" >> $config_h
1492 echo "#define TARGET_PPC64 1" >> $config_h
1493 echo "#define TARGET_ABI32 1" >> $config_h
1494 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1496 sh4|sh4eb)
1497 echo "TARGET_ARCH=sh4" >> $config_mak
1498 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1499 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1500 echo "#define TARGET_SH4 1" >> $config_h
1501 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1502 bflt="yes"
1504 sparc)
1505 echo "TARGET_ARCH=sparc" >> $config_mak
1506 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1507 echo "#define TARGET_SPARC 1" >> $config_h
1509 sparc64)
1510 echo "TARGET_ARCH=sparc64" >> $config_mak
1511 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1512 echo "#define TARGET_SPARC 1" >> $config_h
1513 echo "#define TARGET_SPARC64 1" >> $config_h
1514 elfload32="yes"
1516 sparc32plus)
1517 echo "TARGET_ARCH=sparc64" >> $config_mak
1518 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1519 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1520 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1521 echo "#define TARGET_SPARC 1" >> $config_h
1522 echo "#define TARGET_SPARC64 1" >> $config_h
1523 echo "#define TARGET_ABI32 1" >> $config_h
1526 echo "Unsupported target CPU"
1527 exit 1
1529 esac
1530 if test "$target_bigendian" = "yes" ; then
1531 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1532 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1534 if test "$target_softmmu" = "yes" ; then
1535 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1536 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1538 if test "$target_user_only" = "yes" ; then
1539 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1540 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1542 if test "$target_linux_user" = "yes" ; then
1543 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1544 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1546 if test "$target_darwin_user" = "yes" ; then
1547 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1548 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1551 if test "$target_cpu" = "arm" \
1552 -o "$target_cpu" = "armeb" \
1553 -o "$target_cpu" = "m68k" \
1554 -o "$target_cpu" = "mips" \
1555 -o "$target_cpu" = "mipsel" \
1556 -o "$target_cpu" = "mipsn32" \
1557 -o "$target_cpu" = "mipsn32el" \
1558 -o "$target_cpu" = "mips64" \
1559 -o "$target_cpu" = "mips64el" \
1560 -o "$target_cpu" = "sparc" \
1561 -o "$target_cpu" = "sparc64" \
1562 -o "$target_cpu" = "sparc32plus"; then
1563 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1564 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1566 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1567 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1568 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1570 if test "$target_user_only" = "yes" \
1571 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1572 echo "#define USE_NPTL 1" >> $config_h
1574 # 32 bit ELF loader in addition to native 64 bit loader?
1575 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1576 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1577 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1580 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1582 done # for target in $targets
1584 # build tree in object directory if source path is different from current one
1585 if test "$source_path_used" = "yes" ; then
1586 DIRS="tests tests/cris slirp audio"
1587 FILES="Makefile tests/Makefile"
1588 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1589 FILES="$FILES tests/test-mmap.c"
1590 for dir in $DIRS ; do
1591 mkdir -p $dir
1592 done
1593 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1594 for f in $FILES ; do
1595 rm -f $f
1596 ln -s $source_path/$f $f
1597 done
1600 rm -f $TMPO $TMPC $TMPE $TMPS