kvm: external module: intel iommu compatibility
[qemu-kvm/fedora.git] / configure
blobe2091b20b221051c09ca16030d4f723432d9c4c7
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 oss_lib=""
96 vnc_tls="yes"
97 bsd="no"
98 linux="no"
99 kqemu="no"
100 kvm="no"
101 kvm_cap_pit="no"
102 profiler="no"
103 kernel_path=""
104 cocoa="no"
105 check_gfx="yes"
106 check_gcc="yes"
107 softmmu="yes"
108 linux_user="no"
109 darwin_user="no"
110 build_docs="no"
111 uname_release=""
112 curses="yes"
113 aio="yes"
114 nptl="yes"
115 mixemu="no"
116 cpu_emulation="yes"
117 device_tree_support=""
119 # OS specific
120 targetos=`uname -s`
121 case $targetos in
122 CYGWIN*)
123 mingw32="yes"
124 OS_CFLAGS="-mno-cygwin"
125 if [ "$cpu" = "i386" ] ; then
126 kqemu="yes"
128 audio_possible_drivers="sdl"
130 MINGW32*)
131 mingw32="yes"
132 if [ "$cpu" = "i386" ] ; then
133 kqemu="yes"
135 audio_possible_drivers="dsound sdl fmod"
137 GNU/kFreeBSD)
138 audio_drv_list="oss"
139 audio_possible_drivers="oss sdl esd pa"
140 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
141 kqemu="yes"
144 FreeBSD)
145 bsd="yes"
146 audio_drv_list="oss"
147 audio_possible_drivers="oss sdl esd pa"
148 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
149 kqemu="yes"
150 kvm="yes"
153 NetBSD)
154 bsd="yes"
155 audio_drv_list="oss"
156 audio_possible_drivers="oss sdl esd"
158 OpenBSD)
159 bsd="yes"
160 openbsd="yes"
161 audio_drv_list="oss"
162 audio_possible_drivers="oss sdl esd"
163 oss_lib="-lossaudio"
165 Darwin)
166 bsd="yes"
167 darwin="yes"
168 darwin_user="yes"
169 cocoa="yes"
170 audio_drv_list="coreaudio"
171 audio_possible_drivers="coreaudio sdl fmod"
172 OS_CFLAGS="-mdynamic-no-pic"
173 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
175 SunOS)
176 solaris="yes"
177 make="gmake"
178 install="ginstall"
179 needs_libsunmath="no"
180 solarisrev=`uname -r | cut -f2 -d.`
181 # have to select again, because `uname -m` returns i86pc
182 # even on an x86_64 box.
183 solariscpu=`isainfo -k`
184 if test "${solariscpu}" = "amd64" ; then
185 cpu="x86_64"
187 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
188 if test "$solarisrev" -le 9 ; then
189 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
190 needs_libsunmath="yes"
191 else
192 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
193 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
194 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
195 echo "Studio 11 can be downloaded from www.sun.com."
196 exit 1
199 if test "$solarisrev" -ge 9 ; then
200 kqemu="yes"
203 if test -f /usr/include/sys/soundcard.h ; then
204 audio_drv_list="oss"
206 audio_possible_drivers="oss sdl"
209 audio_drv_list="oss"
210 audio_possible_drivers="oss alsa sdl esd pa"
211 linux="yes"
212 linux_user="yes"
213 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
214 kqemu="yes"
215 audio_possible_drivers="$audio_possible_drivers fmod"
216 kvm="yes"
218 if [ "$cpu" = "ia64" ] ; then
219 kvm="yes"
220 cpu_emulation="no"
221 gdbstub="no"
222 slirp="no"
224 if [ "$cpu" = "powerpc" ]; then
225 kvm="yes"
228 esac
230 if [ "$bsd" = "yes" ] ; then
231 if [ "$darwin" != "yes" ] ; then
232 make="gmake"
236 # find source path
237 source_path=`dirname "$0"`
238 source_path_used="no"
239 workdir=`pwd`
240 if [ -z "$source_path" ]; then
241 source_path=$workdir
242 else
243 source_path=`cd "$source_path"; pwd`
245 [ -f "$workdir/vl.c" ] || source_path_used="yes"
247 werror="no"
248 # generate compile errors on warnings for development builds
249 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
250 #werror="yes";
253 for opt do
254 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
255 case "$opt" in
256 --help|-h) show_help=yes
258 --prefix=*) prefix="$optarg"
260 --interp-prefix=*) interp_prefix="$optarg"
262 --source-path=*) source_path="$optarg"
263 source_path_used="yes"
265 --cross-prefix=*) cross_prefix="$optarg"
267 --cc=*) cc="$optarg"
268 gcc3_search="no"
270 --host-cc=*) host_cc="$optarg"
272 --make=*) make="$optarg"
274 --install=*) install="$optarg"
276 --extra-cflags=*) CFLAGS="$optarg"
278 --extra-ldflags=*) LDFLAGS="$optarg"
280 --cpu=*) cpu="$optarg"
282 --target-list=*) target_list="$optarg"
284 --enable-gprof) gprof="yes"
286 --static) static="yes"
288 --disable-sdl) sdl="no"
290 --fmod-lib=*) fmod_lib="$optarg"
292 --fmod-inc=*) fmod_inc="$optarg"
294 --oss-lib=*) oss_lib="$optarg"
296 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
298 --audio-drv-list=*) audio_drv_list="$optarg"
300 --disable-vnc-tls) vnc_tls="no"
302 --disable-slirp) slirp="no"
304 --disable-vde) vde="no"
306 --disable-kqemu) kqemu="no"
308 --disable-kvm) kvm="no"
310 --disable-brlapi) brlapi="no"
312 --enable-profiler) profiler="yes"
314 --kernel-path=*) kernel_path="$optarg"
316 --enable-cocoa)
317 cocoa="yes" ;
318 sdl="no" ;
319 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
321 --disable-gfx-check) check_gfx="no"
323 --disable-gcc-check) check_gcc="no"
325 --disable-system) softmmu="no"
327 --enable-system) softmmu="yes"
329 --disable-linux-user) linux_user="no"
331 --enable-linux-user) linux_user="yes"
333 --disable-darwin-user) darwin_user="no"
335 --enable-darwin-user) darwin_user="yes"
337 --enable-uname-release=*) uname_release="$optarg"
339 --sparc_cpu=*)
340 sparc_cpu="$optarg"
341 case $sparc_cpu in
342 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
343 target_cpu="sparc"; cpu="sparc" ;;
344 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
345 target_cpu="sparc"; cpu="sparc" ;;
346 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
347 target_cpu="sparc64"; cpu="sparc64" ;;
348 *) echo "undefined SPARC architecture. Exiting";exit 1;;
349 esac
351 --enable-werror) werror="yes"
353 --disable-werror) werror="no"
355 --disable-curses) curses="no"
357 --disable-nptl) nptl="no"
359 --enable-mixemu) mixemu="yes"
361 --disable-aio) aio="no"
363 --disable-cpu-emulation) cpu_emulation="no"
365 --disable-libfdt) device_tree_support="no"
367 *) echo "ERROR: unknown option $opt"; exit 1
369 esac
370 done
372 # default flags for all hosts
373 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
374 LDFLAGS="$LDFLAGS -g"
375 if test "$werror" = "yes" ; then
376 CFLAGS="$CFLAGS -Werror"
380 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
381 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
383 case "$cpu" in
384 sparc) if test -z "$sparc_cpu" ; then
385 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
386 ARCH_LDFLAGS="-m32"
387 else
388 ARCH_CFLAGS="${SP_CFLAGS}"
389 ARCH_LDFLAGS="${SP_LDFLAGS}"
392 sparc64) if test -z "$sparc_cpu" ; then
393 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
394 ARCH_LDFLAGS="-m64"
395 else
396 ARCH_CFLAGS="${SP_CFLAGS}"
397 ARCH_LDFLAGS="${SP_LDFLAGS}"
400 s390)
401 ARCH_CFLAGS="-march=z900"
403 i386)
404 ARCH_CFLAGS="-m32"
405 ARCH_LDFLAGS="-m32"
407 x86_64)
408 ARCH_CFLAGS="-m64"
409 ARCH_LDFLAGS="-m64"
411 esac
413 if test x"$show_help" = x"yes" ; then
414 cat << EOF
416 Usage: configure [options]
417 Options: [defaults in brackets after descriptions]
420 echo "Standard options:"
421 echo " --help print this message"
422 echo " --prefix=PREFIX install in PREFIX [$prefix]"
423 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
424 echo " use %M for cpu name [$interp_prefix]"
425 echo " --target-list=LIST set target list [$target_list]"
426 echo ""
427 echo "kqemu kernel acceleration support:"
428 echo " --disable-kqemu disable kqemu support"
429 echo " --kernel-path=PATH set the kernel path (configure probes it)"
430 echo " --disable-kvm disable kernel virtual machine support"
431 echo ""
432 echo "Advanced options (experts only):"
433 echo " --source-path=PATH path of source code [$source_path]"
434 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
435 echo " --cc=CC use C compiler CC [$cc]"
436 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
437 echo " --make=MAKE use specified make [$make]"
438 echo " --install=INSTALL use specified install [$install]"
439 echo " --static enable static build [$static]"
440 echo " --disable-werror disable compilation abort on warning"
441 echo " --disable-sdl disable SDL"
442 echo " --enable-cocoa enable COCOA (Mac OS X only)"
443 echo " --audio-drv-list=LIST set audio drivers list:"
444 echo " Available drivers: $audio_possible_drivers"
445 echo " --audio-card-list=LIST set list of additional emulated audio cards"
446 echo " Available cards: ac97 adlib cs4231a gus"
447 echo " --enable-mixemu enable mixer emulation"
448 echo " --disable-brlapi disable BrlAPI"
449 echo " --disable-vnc-tls disable TLS encryption for VNC server"
450 echo " --disable-curses disable curses output"
451 echo " --disable-nptl disable usermode NPTL support"
452 echo " --enable-system enable all system emulation targets"
453 echo " --disable-system disable all system emulation targets"
454 echo " --enable-linux-user enable all linux usermode emulation targets"
455 echo " --disable-linux-user disable all linux usermode emulation targets"
456 echo " --enable-darwin-user enable all darwin usermode emulation targets"
457 echo " --disable-darwin-user disable all darwin usermode emulation targets"
458 echo " --fmod-lib path to FMOD library"
459 echo " --fmod-inc path to FMOD includes"
460 echo " --oss-lib path to OSS library"
461 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
462 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
463 echo " --disable-vde disable support for vde network"
464 echo " --disable-aio disable AIO support"
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 # check compiler to see if we're on mingw32
489 cat > $TMPC <<EOF
490 #include <windows.h>
491 #ifndef _WIN32
492 #error not windows
493 #endif
494 int main(void) {}
497 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
498 mingw32="yes"
501 if test "$mingw32" = "yes" ; then
502 linux="no"
503 EXESUF=".exe"
504 oss="no"
505 linux_user="no"
508 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
509 AIOLIBS=
510 else
511 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
512 AIOLIBS="-lrt -lpthread"
515 # Check for gcc4, error if pre-gcc4
516 if test "$check_gcc" = "yes" ; then
517 cat > $TMPC <<EOF
518 #if __GNUC__ < 4
519 #error gcc3
520 #endif
521 int main(){return 0;}
523 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
524 echo "WARNING: \"$cc\" looks like gcc 4.x"
525 found_compat_cc="no"
526 if test "$gcc3_search" = "yes" ; then
527 echo "Looking for gcc 3.x"
528 for compat_cc in $gcc3_list ; do
529 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
530 echo "Found \"$compat_cc\""
531 cc="$cross_prefix$compat_cc"
532 found_compat_cc="yes"
533 break
535 done
536 if test "$found_compat_cc" = "no" ; then
537 echo "gcc 3.x not found!"
540 if test "$found_compat_cc" = "no" ; then
541 echo "QEMU is known to have problems when compiled with gcc 4.x"
542 echo "It is recommended that you use gcc 3.x to build QEMU"
543 echo "To use this compiler anyway, configure with --disable-gcc-check"
544 exit 1;
550 # Solaris specific configure tool chain decisions
552 if test "$solaris" = "yes" ; then
554 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
555 # override the check with --disable-gcc-check
557 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
558 solgcc=`which $cc`
559 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
560 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
561 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
562 echo "or get the latest patch from SunSolve for gcc"
563 exit 1
566 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
567 if test -z "$solinst" ; then
568 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
569 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
570 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
571 exit 1
573 if test "$solinst" = "/usr/sbin/install" ; then
574 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
575 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
576 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
577 exit 1
579 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
580 if test -z "$sol_ar" ; then
581 echo "Error: No path includes ar"
582 if test -f /usr/ccs/bin/ar ; then
583 echo "Add /usr/ccs/bin to your path and rerun configure"
585 exit 1
590 if test -z "$target_list" ; then
591 # these targets are portable
592 if [ "$softmmu" = "yes" ] ; then
593 target_list="\
594 i386-softmmu \
595 x86_64-softmmu \
596 arm-softmmu \
597 cris-softmmu \
598 m68k-softmmu \
599 mips-softmmu \
600 mipsel-softmmu \
601 mips64-softmmu \
602 mips64el-softmmu \
603 ppc-softmmu \
604 ppcemb-softmmu \
605 ppc64-softmmu \
606 sh4-softmmu \
607 sh4eb-softmmu \
608 sparc-softmmu \
611 # the following are Linux specific
612 if [ "$linux_user" = "yes" ] ; then
613 target_list="${target_list}\
614 i386-linux-user \
615 x86_64-linux-user \
616 alpha-linux-user \
617 arm-linux-user \
618 armeb-linux-user \
619 cris-linux-user \
620 m68k-linux-user \
621 mips-linux-user \
622 mipsel-linux-user \
623 ppc-linux-user \
624 ppc64-linux-user \
625 ppc64abi32-linux-user \
626 sh4-linux-user \
627 sh4eb-linux-user \
628 sparc-linux-user \
629 sparc64-linux-user \
630 sparc32plus-linux-user \
633 # the following are Darwin specific
634 if [ "$darwin_user" = "yes" ] ; then
635 target_list="$target_list i386-darwin-user ppc-darwin-user"
637 else
638 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
640 if test -z "$target_list" ; then
641 echo "No targets enabled"
642 exit 1
645 if test -z "$cross_prefix" ; then
647 # ---
648 # big/little endian test
649 cat > $TMPC << EOF
650 #include <inttypes.h>
651 int main(int argc, char ** argv){
652 volatile uint32_t i=0x01234567;
653 return (*((uint8_t*)(&i))) == 0x67;
657 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
658 $TMPE && bigendian="yes"
659 else
660 echo big/little test failed
663 else
665 # if cross compiling, cannot launch a program, so make a static guess
666 if test "$cpu" = "armv4b" \
667 -o "$cpu" = "hppa" \
668 -o "$cpu" = "m68k" \
669 -o "$cpu" = "mips" \
670 -o "$cpu" = "mips64" \
671 -o "$cpu" = "powerpc" \
672 -o "$cpu" = "s390" \
673 -o "$cpu" = "sparc" \
674 -o "$cpu" = "sparc64"; then
675 bigendian="yes"
680 # host long bits test
681 hostlongbits="32"
682 if test "$cpu" = "x86_64" \
683 -o "$cpu" = "alpha" \
684 -o "$cpu" = "ia64" \
685 -o "$cpu" = "sparc64"; then
686 hostlongbits="64"
689 # ppc specific hostlongbits selection
690 if test "$cpu" = "powerpc" ; then
691 cat > $TMPC <<EOF
692 int main(void){return sizeof(long);}
695 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
696 $TMPE
697 case $? in
698 4) hostlongbits="32";;
699 8) hostlongbits="64";;
700 *) echo "Couldn't determine bits per long value"; exit 1;;
701 esac
702 else
703 echo hostlongbits test failed
704 exit 1
708 # check gcc options support
709 cat > $TMPC <<EOF
710 int main(void) {
714 # Check host NPTL support
715 cat > $TMPC <<EOF
716 #include <sched.h>
717 #include <linux/futex.h>
718 void foo()
720 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
721 #error bork
722 #endif
726 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
728 else
729 nptl="no"
732 ##########################################
733 # KVM probe
735 if test "$kvm" = "yes" ; then
736 cat > $TMPC <<EOF
737 #include <libkvm.h>
738 #ifndef KVM_CAP_PIT
739 #error "kvm no pit capability"
740 #endif
741 int main(void) { return 0; }
743 if $cc $ARCH_CFLAGS $CFLAGS -I"$kernel_path"/include -o $TMPE ${OS_CFLAGS} $TMPC 2> /dev/null ; then
744 kvm_cap_pit="yes"
748 ##########################################
749 # SDL probe
751 sdl_too_old=no
753 if test -z "$sdl" ; then
754 sdl_config="sdl-config"
755 sdl=no
756 sdl_static=no
758 cat > $TMPC << EOF
759 #include <SDL.h>
760 #undef main /* We don't want SDL to override our main() */
761 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
763 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
764 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
765 if test "$_sdlversion" -lt 121 ; then
766 sdl_too_old=yes
767 else
768 if test "$cocoa" = "no" ; then
769 sdl=yes
773 # static link with sdl ?
774 if test "$sdl" = "yes" ; then
775 aa="no"
776 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
777 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
778 if [ "$aa" = "yes" ] ; then
779 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
782 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
783 sdl_static=yes
785 fi # static link
786 fi # sdl compile test
787 else
788 # Make sure to disable cocoa if sdl was set
789 if test "$sdl" = "yes" ; then
790 cocoa="no"
791 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
793 fi # -z $sdl
795 ##########################################
796 # VNC TLS detection
797 if test "$vnc_tls" = "yes" ; then
798 cat > $TMPC <<EOF
799 #include <gnutls/gnutls.h>
800 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
802 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
803 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
804 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
805 $vnc_tls_libs 2> /dev/null ; then
807 else
808 vnc_tls="no"
812 ##########################################
813 # vde libraries probe
814 if test "$vde" = "yes" ; then
815 cat > $TMPC << EOF
816 #include <libvdeplug.h>
817 int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
819 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
821 else
822 vde="no"
826 ##########################################
827 # Sound support libraries probe
829 audio_drv_probe()
831 drv=$1
832 hdr=$2
833 lib=$3
834 exp=$4
835 cfl=$5
836 cat > $TMPC << EOF
837 #include <$hdr>
838 int main(void) { $exp }
840 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
842 else
843 echo
844 echo "Error: $drv check failed"
845 echo "Make sure to have the $drv libs and headers installed."
846 echo
847 exit 1
851 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
852 for drv in $audio_drv_list; do
853 case $drv in
854 alsa)
855 audio_drv_probe $drv alsa/asoundlib.h -lasound \
856 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
859 fmod)
860 if test -z $fmod_lib || test -z $fmod_inc; then
861 echo
862 echo "Error: You must specify path to FMOD library and headers"
863 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
864 echo
865 exit 1
867 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
870 esd)
871 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
875 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
876 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
879 oss|sdl|core|wav|dsound)
880 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
884 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
885 echo
886 echo "Error: Unknown driver '$drv' selected"
887 echo "Possible drivers are: $audio_possible_drivers"
888 echo
889 exit 1
892 esac
893 done
895 ##########################################
896 # BrlAPI probe
898 if test -z "$brlapi" ; then
899 brlapi=no
900 cat > $TMPC << EOF
901 #include <brlapi.h>
902 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
904 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
905 brlapi=yes
906 fi # brlapi compile test
907 fi # -z $brlapi
909 ##########################################
910 # curses probe
912 if test "$curses" = "yes" ; then
913 curses=no
914 cat > $TMPC << EOF
915 #include <curses.h>
916 int main(void) { return curses_version(); }
918 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
919 curses=yes
921 fi # test "$curses"
923 ##########################################
924 # AIO probe
925 if test "$aio" = "yes" ; then
926 aio=no
927 cat > $TMPC << EOF
928 #include <aio.h>
929 int main(void) { return aio_write(NULL); }
931 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
932 aio=yes
936 # Check if tools are available to build documentation.
937 if [ -x "`which texi2html 2>/dev/null`" ] && \
938 [ -x "`which pod2man 2>/dev/null`" ]; then
939 build_docs="yes"
942 if test "$mingw32" = "yes" ; then
943 if test -z "$prefix" ; then
944 prefix="/c/Program Files/Qemu"
946 mansuffix=""
947 datasuffix=""
948 docsuffix=""
949 binsuffix=""
950 else
951 if test -z "$prefix" ; then
952 prefix="/usr/local"
954 mansuffix="/share/man"
955 datasuffix="/share/qemu"
956 docsuffix="/share/doc/qemu"
957 binsuffix="/bin"
960 ######################################
961 # libfdt probe
963 if test -z "$device_tree_support" -a \
964 "$cpu" = "powerpc"; then
965 device_tree_support="no"
966 cat > $TMPC << EOF
967 #include <libfdt.h>
968 /* XXX uncomment later when libfdt is built before this test */
969 //int main(void) { void *fdt; return fdt_create(fdt, 1024); }
970 int main (void) {return 0;}
972 # XXX for now do not try to link to libfdt and just check for header */
973 # if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC -lfdt 2> /dev/null ; then
974 if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC 2> /dev/null; then
975 device_tree_support="yes"
976 else
977 echo
978 echo "Error: Could not find libfdt"
979 echo "Make sure to have the libfdt libs and headers installed."
980 echo
981 exit 1
985 echo "Install prefix $prefix"
986 echo "BIOS directory $prefix$datasuffix"
987 echo "binary directory $prefix$binsuffix"
988 if test "$mingw32" = "no" ; then
989 echo "Manual directory $prefix$mansuffix"
990 echo "ELF interp prefix $interp_prefix"
992 echo "Source path $source_path"
993 echo "C compiler $cc"
994 echo "Host C compiler $host_cc"
995 echo "ARCH_CFLAGS $ARCH_CFLAGS"
996 echo "make $make"
997 echo "install $install"
998 echo "host CPU $cpu"
999 echo "host big endian $bigendian"
1000 echo "target list $target_list"
1001 echo "gprof enabled $gprof"
1002 echo "profiler $profiler"
1003 echo "static build $static"
1004 echo "-Werror enabled $werror"
1005 if test "$darwin" = "yes" ; then
1006 echo "Cocoa support $cocoa"
1008 echo "SDL support $sdl"
1009 if test "$sdl" != "no" ; then
1010 echo "SDL static link $sdl_static"
1012 echo "curses support $curses"
1013 echo "mingw32 support $mingw32"
1014 echo "Audio drivers $audio_drv_list"
1015 echo "Extra audio cards $audio_card_list"
1016 echo "Mixer emulation $mixemu"
1017 echo "VNC TLS support $vnc_tls"
1018 if test "$vnc_tls" = "yes" ; then
1019 echo " TLS CFLAGS $vnc_tls_cflags"
1020 echo " TLS LIBS $vnc_tls_libs"
1022 if test -n "$sparc_cpu"; then
1023 echo "Target Sparc Arch $sparc_cpu"
1025 echo "kqemu support $kqemu"
1026 echo "kvm support $kvm"
1027 echo "CPU emulation $cpu_emulation"
1028 if test $cpu = "powerpc"; then
1029 echo "libfdt support $device_tree_support"
1031 echo "brlapi support $brlapi"
1032 echo "Documentation $build_docs"
1033 [ ! -z "$uname_release" ] && \
1034 echo "uname -r $uname_release"
1035 echo "NPTL support $nptl"
1036 echo "vde support $vde"
1037 echo "AIO support $aio"
1039 if test $sdl_too_old = "yes"; then
1040 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1042 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1043 echo "The error log from compiling the libSDL test is: "
1044 cat /tmp/qemu-$$-sdl-config.log
1046 rm -f /tmp/qemu-$$-sdl-config.log
1047 #if test "$sdl_static" = "no"; then
1048 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1050 config_mak="config-host.mak"
1051 config_h="config-host.h"
1053 #echo "Creating $config_mak and $config_h"
1055 test -f $config_h && mv $config_h ${config_h}~
1057 echo "# Automatically generated by configure - do not modify" > $config_mak
1058 echo "# Configured with: $0 $@" >> $config_mak
1059 echo "/* Automatically generated by configure - do not modify */" > $config_h
1061 echo "prefix=$prefix" >> $config_mak
1062 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1063 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1064 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1065 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1066 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1067 echo "MAKE=$make" >> $config_mak
1068 echo "INSTALL=$install" >> $config_mak
1069 echo "CC=$cc" >> $config_mak
1070 echo "HOST_CC=$host_cc" >> $config_mak
1071 echo "AR=$ar" >> $config_mak
1072 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1073 # XXX: only use CFLAGS and LDFLAGS ?
1074 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1075 # compilation of dyngen tool (useful for win32 build on Linux host)
1076 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1077 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1078 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1079 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1080 echo "CFLAGS=$CFLAGS" >> $config_mak
1081 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1082 echo "EXESUF=$EXESUF" >> $config_mak
1083 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1084 case "$cpu" in
1085 i386)
1086 echo "ARCH=i386" >> $config_mak
1087 echo "#define HOST_I386 1" >> $config_h
1089 x86_64)
1090 echo "ARCH=x86_64" >> $config_mak
1091 echo "#define HOST_X86_64 1" >> $config_h
1093 alpha)
1094 echo "ARCH=alpha" >> $config_mak
1095 echo "#define HOST_ALPHA 1" >> $config_h
1097 armv4b)
1098 echo "ARCH=arm" >> $config_mak
1099 echo "#define HOST_ARM 1" >> $config_h
1101 armv4l)
1102 echo "ARCH=arm" >> $config_mak
1103 echo "#define HOST_ARM 1" >> $config_h
1105 cris)
1106 echo "ARCH=cris" >> $config_mak
1107 echo "#define HOST_CRIS 1" >> $config_h
1109 hppa)
1110 echo "ARCH=hppa" >> $config_mak
1111 echo "#define HOST_HPPA 1" >> $config_h
1113 ia64)
1114 echo "ARCH=ia64" >> $config_mak
1115 echo "#define HOST_IA64 1" >> $config_h
1117 m68k)
1118 echo "ARCH=m68k" >> $config_mak
1119 echo "#define HOST_M68K 1" >> $config_h
1121 mips)
1122 echo "ARCH=mips" >> $config_mak
1123 echo "#define HOST_MIPS 1" >> $config_h
1125 mips64)
1126 echo "ARCH=mips64" >> $config_mak
1127 echo "#define HOST_MIPS64 1" >> $config_h
1129 powerpc)
1130 if test "$hostlongbits" = "32"; then
1131 echo "ARCH=ppc" >> $config_mak
1132 echo "#define HOST_PPC 1" >> $config_h
1133 else
1134 echo "ARCH=ppc64" >> $config_mak
1135 echo "#define HOST_PPC64 1" >> $config_h
1138 s390)
1139 echo "ARCH=s390" >> $config_mak
1140 echo "#define HOST_S390 1" >> $config_h
1142 sparc)
1143 echo "ARCH=sparc" >> $config_mak
1144 echo "#define HOST_SPARC 1" >> $config_h
1146 sparc64)
1147 echo "ARCH=sparc64" >> $config_mak
1148 echo "#define HOST_SPARC64 1" >> $config_h
1151 echo "Unsupported CPU = $cpu"
1152 exit 1
1154 esac
1155 if test "$bigendian" = "yes" ; then
1156 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1157 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1159 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1160 if test "$mingw32" = "yes" ; then
1161 echo "CONFIG_WIN32=yes" >> $config_mak
1162 echo "#define CONFIG_WIN32 1" >> $config_h
1163 else
1164 cat > $TMPC << EOF
1165 #include <byteswap.h>
1166 int main(void) { return bswap_32(0); }
1168 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1169 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1173 if [ "$openbsd" = "yes" ] ; then
1174 echo "#define ENOTSUP 4096" >> $config_h
1177 if test "$darwin" = "yes" ; then
1178 echo "CONFIG_DARWIN=yes" >> $config_mak
1179 echo "#define CONFIG_DARWIN 1" >> $config_h
1181 if test "$solaris" = "yes" ; then
1182 echo "CONFIG_SOLARIS=yes" >> $config_mak
1183 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1184 if test "$needs_libsunmath" = "yes" ; then
1185 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1186 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1189 if test -n "$sparc_cpu"; then
1190 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1191 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1193 if test "$gdbstub" = "yes" ; then
1194 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1195 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1197 if test "$gprof" = "yes" ; then
1198 echo "TARGET_GPROF=yes" >> $config_mak
1199 echo "#define HAVE_GPROF 1" >> $config_h
1201 if test "$static" = "yes" ; then
1202 echo "CONFIG_STATIC=yes" >> $config_mak
1203 echo "#define CONFIG_STATIC 1" >> $config_h
1205 if test $profiler = "yes" ; then
1206 echo "#define CONFIG_PROFILER 1" >> $config_h
1208 if test "$slirp" = "yes" ; then
1209 echo "CONFIG_SLIRP=yes" >> $config_mak
1210 echo "#define CONFIG_SLIRP 1" >> $config_h
1212 if test "$vde" = "yes" ; then
1213 echo "CONFIG_VDE=yes" >> $config_mak
1214 echo "#define CONFIG_VDE 1" >> $config_h
1215 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1217 for card in $audio_card_list; do
1218 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1219 echo "$def=yes" >> $config_mak
1220 echo "#define $def 1" >> $config_h
1221 done
1222 echo "#define AUDIO_DRIVERS \\" >> $config_h
1223 for drv in $audio_drv_list; do
1224 echo " &${drv}_audio_driver, \\" >>$config_h
1225 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1226 echo "$def=yes" >> $config_mak
1227 if test "$drv" = "fmod"; then
1228 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1229 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1230 elif test "$drv" = "oss"; then
1231 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1233 done
1234 echo "" >>$config_h
1235 if test "$mixemu" = "yes" ; then
1236 echo "CONFIG_MIXEMU=yes" >> $config_mak
1237 echo "#define CONFIG_MIXEMU 1" >> $config_h
1239 if test "$vnc_tls" = "yes" ; then
1240 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1241 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1242 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1243 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1245 qemu_version=`head $source_path/VERSION`
1246 echo "VERSION=$qemu_version" >>$config_mak
1247 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1248 echo "#define KVM_VERSION \"kvm-devel\"" >> $config_h
1250 echo "SRC_PATH=$source_path" >> $config_mak
1251 if [ "$source_path_used" = "yes" ]; then
1252 echo "VPATH=$source_path" >> $config_mak
1254 echo "TARGET_DIRS=$target_list" >> $config_mak
1255 if [ "$build_docs" = "yes" ] ; then
1256 echo "BUILD_DOCS=yes" >> $config_mak
1258 if test "$static" = "yes"; then
1259 sdl1=$sdl_static
1260 else
1261 sdl1=$sdl
1263 if test "$sdl1" = "yes" ; then
1264 echo "#define CONFIG_SDL 1" >> $config_h
1265 echo "CONFIG_SDL=yes" >> $config_mak
1266 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1267 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1268 else
1269 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1271 if [ "${aa}" = "yes" ] ; then
1272 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1273 else
1274 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1277 if test "$cocoa" = "yes" ; then
1278 echo "#define CONFIG_COCOA 1" >> $config_h
1279 echo "CONFIG_COCOA=yes" >> $config_mak
1281 if test "$curses" = "yes" ; then
1282 echo "#define CONFIG_CURSES 1" >> $config_h
1283 echo "CONFIG_CURSES=yes" >> $config_mak
1284 echo "CURSES_LIBS=-lcurses" >> $config_mak
1286 if test "$brlapi" = "yes" ; then
1287 echo "CONFIG_BRLAPI=yes" >> $config_mak
1288 echo "#define CONFIG_BRLAPI 1" >> $config_h
1289 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1291 if test "$aio" = "yes" ; then
1292 echo "#define CONFIG_AIO 1" >> $config_h
1295 # XXX: suppress that
1296 if [ "$bsd" = "yes" ] ; then
1297 echo "#define O_LARGEFILE 0" >> $config_h
1298 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1299 echo "#define _BSD 1" >> $config_h
1302 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1304 tools=
1305 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1306 tools="qemu-img\$(EXESUF) $tools"
1307 if [ "$linux" = "yes" ] ; then
1308 tools="qemu-nbd\$(EXESUF) $tools"
1311 echo "TOOLS=$tools" >> $config_mak
1313 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1315 for target in $target_list; do
1316 target_dir="$target"
1317 config_mak=$target_dir/config.mak
1318 config_h=$target_dir/config.h
1319 target_cpu=`echo $target | cut -d '-' -f 1`
1320 target_bigendian="no"
1321 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1322 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1323 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1324 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1325 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1326 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1327 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1328 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1329 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1330 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1331 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1332 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1333 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1334 target_softmmu="no"
1335 target_user_only="no"
1336 target_linux_user="no"
1337 target_darwin_user="no"
1338 case "$target" in
1339 ${target_cpu}-softmmu)
1340 target_softmmu="yes"
1342 ${target_cpu}-linux-user)
1343 target_user_only="yes"
1344 target_linux_user="yes"
1346 ${target_cpu}-darwin-user)
1347 target_user_only="yes"
1348 target_darwin_user="yes"
1351 echo "ERROR: Target '$target' not recognised"
1352 exit 1
1354 esac
1356 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1357 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1358 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1359 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1360 echo "Note that this will disable all output from the virtual graphics card"
1361 echo "except through VNC or curses."
1362 exit 1;
1365 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1367 test -f $config_h && mv $config_h ${config_h}~
1369 mkdir -p $target_dir
1370 mkdir -p $target_dir/fpu
1371 mkdir -p $target_dir/tcg
1372 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1373 mkdir -p $target_dir/nwfpe
1377 # don't use ln -sf as not all "ln -sf" over write the file/link
1379 rm -f $target_dir/Makefile
1380 ln -s $source_path/Makefile.target $target_dir/Makefile
1383 echo "# Automatically generated by configure - do not modify" > $config_mak
1384 echo "/* Automatically generated by configure - do not modify */" > $config_h
1387 echo "include ../config-host.mak" >> $config_mak
1388 echo "#include \"../config-host.h\"" >> $config_h
1390 bflt="no"
1391 elfload32="no"
1392 target_nptl="no"
1393 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1394 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1396 disable_cpu_emulation() {
1397 if test $cpu_emulation = "no"; then
1398 echo "#define NO_CPU_EMULATION 1" >> $config_h
1399 echo "NO_CPU_EMULATION=1" >> $config_mak
1403 configure_kvm() {
1404 if test $kvm = "yes" -a "$target_softmmu" = "yes" -a \
1405 \( "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "ia64" -o "$cpu" = "powerpc" \); then
1406 echo "#define USE_KVM 1" >> $config_h
1407 echo "USE_KVM=1" >> $config_mak
1408 echo "CONFIG_KVM_KERNEL_INC=$kernel_path/include" >> $config_mak
1409 if test $kvm_cap_pit = "yes" ; then
1410 echo "USE_KVM_PIT=1" >> $config_mak
1411 echo "#define USE_KVM_PIT 1" >> $config_h
1413 disable_cpu_emulation
1417 case "$target_cpu" in
1418 i386)
1419 echo "TARGET_ARCH=i386" >> $config_mak
1420 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1421 echo "#define TARGET_I386 1" >> $config_h
1422 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1423 then
1424 echo "#define USE_KQEMU 1" >> $config_h
1426 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1427 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1428 then
1429 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1430 else
1431 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1433 configure_kvm
1435 x86_64)
1436 echo "TARGET_ARCH=x86_64" >> $config_mak
1437 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1438 echo "#define TARGET_I386 1" >> $config_h
1439 echo "#define TARGET_X86_64 1" >> $config_h
1440 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1441 then
1442 echo "#define USE_KQEMU 1" >> $config_h
1444 configure_kvm
1446 ia64)
1447 echo "TARGET_ARCH=ia64" >> $config_mak
1448 echo "#define TARGET_ARCH \"ia64\"" >> $config_h
1449 echo "#define TARGET_IA64 1" >> $config_h
1450 configure_kvm
1452 alpha)
1453 echo "TARGET_ARCH=alpha" >> $config_mak
1454 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1455 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1456 echo "#define TARGET_ALPHA 1" >> $config_h
1457 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1459 arm|armeb)
1460 echo "TARGET_ARCH=arm" >> $config_mak
1461 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1462 echo "#define TARGET_ARM 1" >> $config_h
1463 bflt="yes"
1464 target_nptl="yes"
1466 cris)
1467 echo "TARGET_ARCH=cris" >> $config_mak
1468 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1469 echo "#define TARGET_CRIS 1" >> $config_h
1471 m68k)
1472 echo "TARGET_ARCH=m68k" >> $config_mak
1473 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1474 echo "#define TARGET_M68K 1" >> $config_h
1475 bflt="yes"
1477 mips|mipsel)
1478 echo "TARGET_ARCH=mips" >> $config_mak
1479 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1480 echo "#define TARGET_MIPS 1" >> $config_h
1481 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1483 mipsn32|mipsn32el)
1484 echo "TARGET_ARCH=mipsn32" >> $config_mak
1485 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1486 echo "#define TARGET_MIPS 1" >> $config_h
1487 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1489 mips64|mips64el)
1490 echo "TARGET_ARCH=mips64" >> $config_mak
1491 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1492 echo "#define TARGET_MIPS 1" >> $config_h
1493 echo "#define TARGET_MIPS64 1" >> $config_h
1494 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1496 ppc)
1497 echo "TARGET_ARCH=ppc" >> $config_mak
1498 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1499 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1500 echo "#define TARGET_PPC 1" >> $config_h
1501 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1503 ppcemb)
1504 echo "TARGET_ARCH=ppcemb" >> $config_mak
1505 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1506 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1507 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1508 echo "#define TARGET_PPC 1" >> $config_h
1509 echo "#define TARGET_PPCEMB 1" >> $config_h
1510 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1511 if test "$device_tree_support" = "yes" ; then
1512 echo "#define CONFIG_LIBFDT 1" >> $config_h
1513 echo "CONFIG_LIBFDT=1" >> $config_mak
1515 configure_kvm
1517 ppc64)
1518 echo "TARGET_ARCH=ppc64" >> $config_mak
1519 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1520 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1521 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1522 echo "#define TARGET_PPC 1" >> $config_h
1523 echo "#define TARGET_PPC64 1" >> $config_h
1524 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1526 ppc64abi32)
1527 echo "TARGET_ARCH=ppc64" >> $config_mak
1528 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1529 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1530 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1531 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1532 echo "#define TARGET_PPC 1" >> $config_h
1533 echo "#define TARGET_PPC64 1" >> $config_h
1534 echo "#define TARGET_ABI32 1" >> $config_h
1535 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1537 sh4|sh4eb)
1538 echo "TARGET_ARCH=sh4" >> $config_mak
1539 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1540 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1541 echo "#define TARGET_SH4 1" >> $config_h
1542 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1543 bflt="yes"
1545 sparc)
1546 echo "TARGET_ARCH=sparc" >> $config_mak
1547 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1548 echo "#define TARGET_SPARC 1" >> $config_h
1550 sparc64)
1551 echo "TARGET_ARCH=sparc64" >> $config_mak
1552 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1553 echo "#define TARGET_SPARC 1" >> $config_h
1554 echo "#define TARGET_SPARC64 1" >> $config_h
1555 elfload32="yes"
1557 sparc32plus)
1558 echo "TARGET_ARCH=sparc64" >> $config_mak
1559 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1560 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1561 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1562 echo "#define TARGET_SPARC 1" >> $config_h
1563 echo "#define TARGET_SPARC64 1" >> $config_h
1564 echo "#define TARGET_ABI32 1" >> $config_h
1567 echo "Unsupported target CPU"
1568 exit 1
1570 esac
1571 if test "$target_bigendian" = "yes" ; then
1572 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1573 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1575 if test "$target_softmmu" = "yes" ; then
1576 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1577 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1579 if test "$target_user_only" = "yes" ; then
1580 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1581 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1583 if test "$target_linux_user" = "yes" ; then
1584 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1585 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1587 if test "$target_darwin_user" = "yes" ; then
1588 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1589 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1592 if test "$target_cpu" = "arm" \
1593 -o "$target_cpu" = "armeb" \
1594 -o "$target_cpu" = "m68k" \
1595 -o "$target_cpu" = "mips" \
1596 -o "$target_cpu" = "mipsel" \
1597 -o "$target_cpu" = "mipsn32" \
1598 -o "$target_cpu" = "mipsn32el" \
1599 -o "$target_cpu" = "mips64" \
1600 -o "$target_cpu" = "mips64el" \
1601 -o "$target_cpu" = "sparc" \
1602 -o "$target_cpu" = "sparc64" \
1603 -o "$target_cpu" = "sparc32plus"; then
1604 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1605 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1607 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1608 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1609 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1611 if test "$target_user_only" = "yes" \
1612 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1613 echo "#define USE_NPTL 1" >> $config_h
1615 # 32 bit ELF loader in addition to native 64 bit loader?
1616 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1617 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1618 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1621 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1623 done # for target in $targets
1625 # build tree in object directory if source path is different from current one
1626 if test "$source_path_used" = "yes" ; then
1627 DIRS="tests tests/cris slirp audio"
1628 FILES="Makefile tests/Makefile"
1629 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1630 FILES="$FILES tests/test-mmap.c"
1631 for dir in $DIRS ; do
1632 mkdir -p $dir
1633 done
1634 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1635 for f in $FILES ; do
1636 rm -f $f
1637 ln -s $source_path/$f $f
1638 done
1641 rm -f $TMPO $TMPC $TMPE $TMPS