Regenerate bios for vtpr hibernate support
[qemu-kvm/amd-iommu.git] / configure
blobc1a8b7708de79e7219e36bbee3b160e331d0eddb
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 aio="yes"
113 nptl="yes"
114 mixemu="no"
115 cpu_emulation="yes"
116 device_tree_support=""
118 # OS specific
119 targetos=`uname -s`
120 case $targetos in
121 CYGWIN*)
122 mingw32="yes"
123 OS_CFLAGS="-mno-cygwin"
124 if [ "$cpu" = "i386" ] ; then
125 kqemu="yes"
127 audio_possible_drivers="sdl"
129 MINGW32*)
130 mingw32="yes"
131 if [ "$cpu" = "i386" ] ; then
132 kqemu="yes"
134 audio_possible_drivers="dsound sdl fmod"
136 GNU/kFreeBSD)
137 audio_drv_list="oss"
138 audio_possible_drivers="oss sdl esd"
139 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
140 kqemu="yes"
143 FreeBSD)
144 bsd="yes"
145 audio_drv_list="oss"
146 audio_possible_drivers="oss sdl esd"
147 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
148 kqemu="yes"
149 kvm="yes"
152 NetBSD)
153 bsd="yes"
154 audio_drv_list="oss"
155 audio_possible_drivers="oss sdl esd"
157 OpenBSD)
158 bsd="yes"
159 openbsd="yes"
160 audio_drv_list="oss"
161 audio_possible_drivers="oss sdl esd"
163 Darwin)
164 bsd="yes"
165 darwin="yes"
166 darwin_user="yes"
167 cocoa="yes"
168 audio_drv_list="coreaudio"
169 audio_possible_drivers="coreaudio sdl fmod"
170 OS_CFLAGS="-mdynamic-no-pic"
171 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
173 SunOS)
174 solaris="yes"
175 make="gmake"
176 install="ginstall"
177 needs_libsunmath="no"
178 solarisrev=`uname -r | cut -f2 -d.`
179 # have to select again, because `uname -m` returns i86pc
180 # even on an x86_64 box.
181 solariscpu=`isainfo -k`
182 if test "${solariscpu}" = "amd64" ; then
183 cpu="x86_64"
185 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
186 if test "$solarisrev" -le 9 ; then
187 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
188 needs_libsunmath="yes"
189 else
190 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
191 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
192 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
193 echo "Studio 11 can be downloaded from www.sun.com."
194 exit 1
197 if test "$solarisrev" -ge 9 ; then
198 kqemu="yes"
201 if test -f /usr/include/sys/soundcard.h ; then
202 audio_drv_list="oss"
204 audio_possible_drivers="oss sdl"
207 audio_drv_list="oss"
208 audio_possible_drivers="oss alsa sdl esd pa"
209 linux="yes"
210 linux_user="yes"
211 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
212 kqemu="yes"
213 audio_possible_drivers="$audio_possible_drivers fmod"
214 kvm="yes"
216 if [ "$cpu" = "ia64" ] ; then
217 kvm="yes"
218 cpu_emulation="no"
219 gdbstub="no"
220 slirp="no"
222 if [ "$cpu" = "powerpc" ]; then
223 kvm="yes"
226 esac
228 if [ "$bsd" = "yes" ] ; then
229 if [ "$darwin" != "yes" ] ; then
230 make="gmake"
234 # find source path
235 source_path=`dirname "$0"`
236 source_path_used="no"
237 workdir=`pwd`
238 if [ -z "$source_path" ]; then
239 source_path=$workdir
240 else
241 source_path=`cd "$source_path"; pwd`
243 [ -f "$workdir/vl.c" ] || source_path_used="yes"
245 werror="no"
246 # generate compile errors on warnings for development builds
247 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
248 #werror="yes";
251 for opt do
252 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
253 case "$opt" in
254 --help|-h) show_help=yes
256 --prefix=*) prefix="$optarg"
258 --interp-prefix=*) interp_prefix="$optarg"
260 --source-path=*) source_path="$optarg"
261 source_path_used="yes"
263 --cross-prefix=*) cross_prefix="$optarg"
265 --cc=*) cc="$optarg"
266 gcc3_search="no"
268 --host-cc=*) host_cc="$optarg"
270 --make=*) make="$optarg"
272 --install=*) install="$optarg"
274 --extra-cflags=*) CFLAGS="$optarg"
276 --extra-ldflags=*) LDFLAGS="$optarg"
278 --cpu=*) cpu="$optarg"
280 --target-list=*) target_list="$optarg"
282 --enable-gprof) gprof="yes"
284 --static) static="yes"
286 --disable-sdl) sdl="no"
288 --fmod-lib=*) fmod_lib="$optarg"
290 --fmod-inc=*) fmod_inc="$optarg"
292 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
294 --audio-drv-list=*) audio_drv_list="$optarg"
296 --disable-vnc-tls) vnc_tls="no"
298 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
300 --disable-slirp) slirp="no"
302 --disable-vde) vde="no"
304 --disable-kqemu) kqemu="no"
306 --disable-kvm) kvm="no"
308 --disable-brlapi) brlapi="no"
310 --enable-profiler) profiler="yes"
312 --kernel-path=*) kernel_path="$optarg"
314 --enable-cocoa)
315 cocoa="yes" ;
316 sdl="no" ;
317 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
319 --disable-gfx-check) check_gfx="no"
321 --disable-gcc-check) check_gcc="no"
323 --disable-system) softmmu="no"
325 --enable-system) softmmu="yes"
327 --disable-linux-user) linux_user="no"
329 --enable-linux-user) linux_user="yes"
331 --disable-darwin-user) darwin_user="no"
333 --enable-darwin-user) darwin_user="yes"
335 --enable-uname-release=*) uname_release="$optarg"
337 --sparc_cpu=*)
338 sparc_cpu="$optarg"
339 case $sparc_cpu in
340 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
341 target_cpu="sparc"; cpu="sparc" ;;
342 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
343 target_cpu="sparc"; cpu="sparc" ;;
344 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
345 target_cpu="sparc64"; cpu="sparc64" ;;
346 *) echo "undefined SPARC architecture. Exiting";exit 1;;
347 esac
349 --enable-werror) werror="yes"
351 --disable-werror) werror="no"
353 --disable-curses) curses="no"
355 --disable-nptl) nptl="no"
357 --enable-mixemu) mixemu="yes"
359 --disable-aio) aio="no"
361 --disable-cpu-emulation) cpu_emulation="no"
363 --disable-libfdt) device_tree_support="no"
365 *) echo "ERROR: unknown option $opt"; exit 1
367 esac
368 done
370 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
371 AIOLIBS=
372 else
373 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
374 AIOLIBS="-lrt -lpthread"
377 # default flags for all hosts
378 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
379 LDFLAGS="$LDFLAGS -g"
380 if test "$werror" = "yes" ; then
381 CFLAGS="$CFLAGS -Werror"
385 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
386 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
388 case "$cpu" in
389 sparc) if test -z "$sparc_cpu" ; then
390 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
391 ARCH_LDFLAGS="-m32"
392 else
393 ARCH_CFLAGS="${SP_CFLAGS}"
394 ARCH_LDFLAGS="${SP_LDFLAGS}"
397 sparc64) if test -z "$sparc_cpu" ; then
398 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
399 ARCH_LDFLAGS="-m64"
400 else
401 ARCH_CFLAGS="${SP_CFLAGS}"
402 ARCH_LDFLAGS="${SP_LDFLAGS}"
405 s390)
406 ARCH_CFLAGS="-march=z900"
408 i386)
409 ARCH_CFLAGS="-m32"
410 ARCH_LDFLAGS="-m32"
412 x86_64)
413 ARCH_CFLAGS="-m64"
414 ARCH_LDFLAGS="-m64"
416 esac
418 if test x"$show_help" = x"yes" ; then
419 cat << EOF
421 Usage: configure [options]
422 Options: [defaults in brackets after descriptions]
425 echo "Standard options:"
426 echo " --help print this message"
427 echo " --prefix=PREFIX install in PREFIX [$prefix]"
428 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
429 echo " use %M for cpu name [$interp_prefix]"
430 echo " --target-list=LIST set target list [$target_list]"
431 echo ""
432 echo "kqemu kernel acceleration support:"
433 echo " --disable-kqemu disable kqemu support"
434 echo " --kernel-path=PATH set the kernel path (configure probes it)"
435 echo " --disable-kvm disable kernel virtual machine support"
436 echo ""
437 echo "Advanced options (experts only):"
438 echo " --source-path=PATH path of source code [$source_path]"
439 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
440 echo " --cc=CC use C compiler CC [$cc]"
441 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
442 echo " --make=MAKE use specified make [$make]"
443 echo " --install=INSTALL use specified install [$install]"
444 echo " --static enable static build [$static]"
445 echo " --disable-werror disable compilation abort on warning"
446 echo " --disable-sdl disable SDL"
447 echo " --enable-cocoa enable COCOA (Mac OS X only)"
448 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
449 echo " --audio-drv-list=LIST set audio drivers list:"
450 echo " Available drivers: $audio_possible_drivers"
451 echo " --audio-card-list=LIST set list of additional emulated audio cards"
452 echo " Available cards: ac97 adlib cs4231a gus"
453 echo " --enable-mixemu enable mixer emulation"
454 echo " --disable-brlapi disable BrlAPI"
455 echo " --disable-vnc-tls disable TLS encryption for VNC server"
456 echo " --disable-curses disable curses output"
457 echo " --disable-nptl disable usermode NPTL support"
458 echo " --enable-system enable all system emulation targets"
459 echo " --disable-system disable all system emulation targets"
460 echo " --enable-linux-user enable all linux usermode emulation targets"
461 echo " --disable-linux-user disable all linux usermode emulation targets"
462 echo " --enable-darwin-user enable all darwin usermode emulation targets"
463 echo " --disable-darwin-user disable all darwin usermode emulation targets"
464 echo " --fmod-lib path to FMOD library"
465 echo " --fmod-inc path to FMOD includes"
466 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
467 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
468 echo " --disable-vde disable support for vde network"
469 echo " --disable-aio disable AIO support"
470 echo " --disable-cpu-emulation disables use of qemu cpu emulation code"
471 echo " --disable-libfdt disables use of libfdt support for device tree"
472 echo ""
473 echo "NOTE: The object files are built at the place where configure is launched"
474 exit 1
477 cc="${cross_prefix}${cc}"
478 ar="${cross_prefix}${ar}"
479 strip="${cross_prefix}${strip}"
481 # check that the C compiler works.
482 cat > $TMPC <<EOF
483 int main(void) {}
486 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
487 : C compiler works ok
488 else
489 echo "ERROR: \"$cc\" either does not exist or does not work"
490 exit 1
493 if test "$mingw32" = "yes" ; then
494 linux="no"
495 EXESUF=".exe"
496 oss="no"
499 # Check for gcc4, error if pre-gcc4
500 if test "$check_gcc" = "yes" ; then
501 cat > $TMPC <<EOF
502 #if __GNUC__ < 4
503 #error gcc3
504 #endif
505 int main(){return 0;}
507 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
508 echo "WARNING: \"$cc\" looks like gcc 4.x"
509 found_compat_cc="no"
510 if test "$gcc3_search" = "yes" ; then
511 echo "Looking for gcc 3.x"
512 for compat_cc in $gcc3_list ; do
513 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
514 echo "Found \"$compat_cc\""
515 cc="$cross_prefix$compat_cc"
516 found_compat_cc="yes"
517 break
519 done
520 if test "$found_compat_cc" = "no" ; then
521 echo "gcc 3.x not found!"
524 if test "$found_compat_cc" = "no" ; then
525 echo "QEMU is known to have problems when compiled with gcc 4.x"
526 echo "It is recommended that you use gcc 3.x to build QEMU"
527 echo "To use this compiler anyway, configure with --disable-gcc-check"
528 exit 1;
534 # Solaris specific configure tool chain decisions
536 if test "$solaris" = "yes" ; then
538 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
539 # override the check with --disable-gcc-check
541 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
542 solgcc=`which $cc`
543 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
544 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
545 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
546 echo "or get the latest patch from SunSolve for gcc"
547 exit 1
550 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
551 if test -z "$solinst" ; then
552 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
553 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
554 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
555 exit 1
557 if test "$solinst" = "/usr/sbin/install" ; then
558 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
559 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
560 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
561 exit 1
563 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
564 if test -z "$sol_ar" ; then
565 echo "Error: No path includes ar"
566 if test -f /usr/ccs/bin/ar ; then
567 echo "Add /usr/ccs/bin to your path and rerun configure"
569 exit 1
574 if test -z "$target_list" ; then
575 # these targets are portable
576 if [ "$softmmu" = "yes" ] ; then
577 target_list="\
578 i386-softmmu \
579 x86_64-softmmu \
580 arm-softmmu \
581 cris-softmmu \
582 m68k-softmmu \
583 mips-softmmu \
584 mipsel-softmmu \
585 mips64-softmmu \
586 mips64el-softmmu \
587 ppc-softmmu \
588 ppcemb-softmmu \
589 ppc64-softmmu \
590 sh4-softmmu \
591 sh4eb-softmmu \
592 sparc-softmmu \
595 # the following are Linux specific
596 if [ "$linux_user" = "yes" ] ; then
597 target_list="${target_list}\
598 i386-linux-user \
599 x86_64-linux-user \
600 alpha-linux-user \
601 arm-linux-user \
602 armeb-linux-user \
603 cris-linux-user \
604 m68k-linux-user \
605 mips-linux-user \
606 mipsel-linux-user \
607 ppc-linux-user \
608 ppc64-linux-user \
609 ppc64abi32-linux-user \
610 sh4-linux-user \
611 sh4eb-linux-user \
612 sparc-linux-user \
613 sparc64-linux-user \
614 sparc32plus-linux-user \
617 # the following are Darwin specific
618 if [ "$darwin_user" = "yes" ] ; then
619 target_list="$target_list i386-darwin-user ppc-darwin-user"
621 else
622 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
624 if test -z "$target_list" ; then
625 echo "No targets enabled"
626 exit 1
629 if test -z "$cross_prefix" ; then
631 # ---
632 # big/little endian test
633 cat > $TMPC << EOF
634 #include <inttypes.h>
635 int main(int argc, char ** argv){
636 volatile uint32_t i=0x01234567;
637 return (*((uint8_t*)(&i))) == 0x67;
641 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
642 $TMPE && bigendian="yes"
643 else
644 echo big/little test failed
647 else
649 # if cross compiling, cannot launch a program, so make a static guess
650 if test "$cpu" = "armv4b" \
651 -o "$cpu" = "hppa" \
652 -o "$cpu" = "m68k" \
653 -o "$cpu" = "mips" \
654 -o "$cpu" = "mips64" \
655 -o "$cpu" = "powerpc" \
656 -o "$cpu" = "s390" \
657 -o "$cpu" = "sparc" \
658 -o "$cpu" = "sparc64"; then
659 bigendian="yes"
664 # host long bits test
665 hostlongbits="32"
666 if test "$cpu" = "x86_64" \
667 -o "$cpu" = "alpha" \
668 -o "$cpu" = "ia64" \
669 -o "$cpu" = "sparc64"; then
670 hostlongbits="64"
673 # ppc specific hostlongbits selection
674 if test "$cpu" = "powerpc" ; then
675 cat > $TMPC <<EOF
676 int main(void){return sizeof(long);}
679 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
680 $TMPE
681 case $? in
682 4) hostlongbits="32";;
683 8) hostlongbits="64";;
684 *) echo "Couldn't determine bits per long value"; exit 1;;
685 esac
686 else
687 echo hostlongbits test failed
688 exit 1
692 # check gcc options support
693 cat > $TMPC <<EOF
694 int main(void) {
698 # Check host NPTL support
699 cat > $TMPC <<EOF
700 #include <sched.h>
701 #include <linux/futex.h>
702 void foo()
704 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
705 #error bork
706 #endif
710 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
712 else
713 nptl="no"
716 ##########################################
717 # KVM probe
719 if test "$kvm" = "yes" ; then
720 cat > $TMPC <<EOF
721 #include <libkvm.h>
722 #ifndef KVM_CAP_PIT
723 #error "kvm no pit capability"
724 #endif
725 int main(void) { return 0; }
727 if $cc $ARCH_CFLAGS $CFLAGS -I"$kernel_path"/include -o $TMPE ${OS_CFLAGS} $TMPC 2> /dev/null ; then
728 kvm_cap_pit="yes"
732 ##########################################
733 # SDL probe
735 sdl_too_old=no
737 if test -z "$sdl" ; then
738 sdl_config="sdl-config"
739 sdl=no
740 sdl_static=no
742 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
743 # win32 cross compilation case
744 sdl_config="i386-mingw32msvc-sdl-config"
745 sdl=yes
746 else
747 # normal SDL probe
748 cat > $TMPC << EOF
749 #include <SDL.h>
750 #undef main /* We don't want SDL to override our main() */
751 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
753 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
754 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
755 if test "$_sdlversion" -lt 121 ; then
756 sdl_too_old=yes
757 else
758 if test "$cocoa" = "no" ; then
759 sdl=yes
763 # static link with sdl ?
764 if test "$sdl" = "yes" ; then
765 aa="no"
766 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
767 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
768 if [ "$aa" = "yes" ] ; then
769 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
772 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
773 sdl_static=yes
775 fi # static link
776 fi # sdl compile test
777 fi # cross compilation
778 else
779 # Make sure to disable cocoa if sdl was set
780 if test "$sdl" = "yes" ; then
781 cocoa="no"
782 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
784 fi # -z $sdl
786 ##########################################
787 # VNC TLS detection
788 if test "$vnc_tls" = "yes" ; then
789 cat > $TMPC <<EOF
790 #include <gnutls/gnutls.h>
791 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
793 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
794 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
795 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
796 $vnc_tls_libs 2> /dev/null ; then
798 else
799 vnc_tls="no"
803 ##########################################
804 # vde libraries probe
805 if test "$vde" = "yes" ; then
806 cat > $TMPC << EOF
807 #include <libvdeplug.h>
808 int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
810 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
812 else
813 vde="no"
817 ##########################################
818 # Sound support libraries probe
820 audio_drv_probe()
822 drv=$1
823 hdr=$2
824 lib=$3
825 exp=$4
826 cfl=$5
827 cat > $TMPC << EOF
828 #include <$hdr>
829 int main(void) { $exp }
831 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
833 else
834 echo
835 echo "Error: $drv check failed"
836 echo "Make sure to have the $drv libs and headers installed."
837 echo
838 exit 1
842 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
843 for drv in $audio_drv_list; do
844 case $drv in
845 alsa)
846 audio_drv_probe $drv alsa/asoundlib.h -lasound \
847 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
850 fmod)
851 if test -z $fmod_lib || test -z $fmod_inc; then
852 echo
853 echo "Error: You must specify path to FMOD library and headers"
854 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
855 echo
856 exit 1
858 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
861 esd)
862 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
866 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
867 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
871 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
872 echo
873 echo "Error: Unknown driver '$drv' selected"
874 echo "Possible drivers are: $audio_possible_drivers"
875 echo
876 exit 1
880 oss|sdl|core|wav|dsound)
881 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
884 esac
885 done
887 ##########################################
888 # BrlAPI probe
890 if test -z "$brlapi" ; then
891 brlapi=no
892 cat > $TMPC << EOF
893 #include <brlapi.h>
894 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
896 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
897 brlapi=yes
898 fi # brlapi compile test
899 fi # -z $brlapi
901 ##########################################
902 # curses probe
904 if test "$curses" = "yes" ; then
905 curses=no
906 cat > $TMPC << EOF
907 #include <curses.h>
908 int main(void) { return curses_version(); }
910 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
911 curses=yes
913 fi # test "$curses"
915 ##########################################
916 # AIO probe
917 if test "$aio" = "yes" ; then
918 aio=no
919 cat > $TMPC << EOF
920 #include <aio.h>
921 int main(void) { return aio_write(NULL); }
923 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
924 aio=yes
928 # Check if tools are available to build documentation.
929 if [ -x "`which texi2html 2>/dev/null`" ] && \
930 [ -x "`which pod2man 2>/dev/null`" ]; then
931 build_docs="yes"
934 if test "$mingw32" = "yes" ; then
935 if test -z "$prefix" ; then
936 prefix="/c/Program Files/Qemu"
938 mansuffix=""
939 datasuffix=""
940 docsuffix=""
941 binsuffix=""
942 else
943 if test -z "$prefix" ; then
944 prefix="/usr/local"
946 mansuffix="/share/man"
947 datasuffix="/share/qemu"
948 docsuffix="/share/doc/qemu"
949 binsuffix="/bin"
952 ######################################
953 # libfdt probe
955 if test -z "$device_tree_support" -a \
956 "$cpu" = "powerpc"; then
957 device_tree_support="no"
958 cat > $TMPC << EOF
959 #include <libfdt.h>
960 /* XXX uncomment later when libfdt is built before this test */
961 //int main(void) { void *fdt; return fdt_create(fdt, 1024); }
962 int main (void) {return 0;}
964 # XXX for now do not try to link to libfdt and just check for header */
965 # if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC -lfdt 2> /dev/null ; then
966 if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC 2> /dev/null; then
967 device_tree_support="yes"
968 else
969 echo
970 echo "Error: Could not find libfdt"
971 echo "Make sure to have the libfdt libs and headers installed."
972 echo
973 exit 1
977 echo "Install prefix $prefix"
978 echo "BIOS directory $prefix$datasuffix"
979 echo "binary directory $prefix$binsuffix"
980 if test "$mingw32" = "no" ; then
981 echo "Manual directory $prefix$mansuffix"
982 echo "ELF interp prefix $interp_prefix"
984 echo "Source path $source_path"
985 echo "C compiler $cc"
986 echo "Host C compiler $host_cc"
987 echo "ARCH_CFLAGS $ARCH_CFLAGS"
988 echo "make $make"
989 echo "install $install"
990 echo "host CPU $cpu"
991 echo "host big endian $bigendian"
992 echo "target list $target_list"
993 echo "gprof enabled $gprof"
994 echo "profiler $profiler"
995 echo "static build $static"
996 echo "-Werror enabled $werror"
997 if test "$darwin" = "yes" ; then
998 echo "Cocoa support $cocoa"
1000 echo "SDL support $sdl"
1001 if test "$sdl" != "no" ; then
1002 echo "SDL static link $sdl_static"
1004 echo "curses support $curses"
1005 echo "mingw32 support $mingw32"
1006 echo "Audio drivers $audio_drv_list"
1007 echo "Extra audio cards $audio_card_list"
1008 echo "Mixer emulation $mixemu"
1009 echo "VNC TLS support $vnc_tls"
1010 if test "$vnc_tls" = "yes" ; then
1011 echo " TLS CFLAGS $vnc_tls_cflags"
1012 echo " TLS LIBS $vnc_tls_libs"
1014 if test -n "$sparc_cpu"; then
1015 echo "Target Sparc Arch $sparc_cpu"
1017 echo "kqemu support $kqemu"
1018 echo "kvm support $kvm"
1019 echo "CPU emulation $cpu_emulation"
1020 if test $cpu = "powerpc"; then
1021 echo "libfdt support $device_tree_support"
1023 echo "brlapi support $brlapi"
1024 echo "Documentation $build_docs"
1025 [ ! -z "$uname_release" ] && \
1026 echo "uname -r $uname_release"
1027 echo "NPTL support $nptl"
1028 echo "vde support $vde"
1029 echo "AIO support $aio"
1031 if test $sdl_too_old = "yes"; then
1032 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1034 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1035 echo "The error log from compiling the libSDL test is: "
1036 cat /tmp/qemu-$$-sdl-config.log
1038 rm -f /tmp/qemu-$$-sdl-config.log
1039 #if test "$sdl_static" = "no"; then
1040 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1042 config_mak="config-host.mak"
1043 config_h="config-host.h"
1045 #echo "Creating $config_mak and $config_h"
1047 test -f $config_h && mv $config_h ${config_h}~
1049 echo "# Automatically generated by configure - do not modify" > $config_mak
1050 echo "# Configured with: $0 $@" >> $config_mak
1051 echo "/* Automatically generated by configure - do not modify */" > $config_h
1053 echo "prefix=$prefix" >> $config_mak
1054 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1055 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1056 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1057 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1058 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1059 echo "MAKE=$make" >> $config_mak
1060 echo "INSTALL=$install" >> $config_mak
1061 echo "CC=$cc" >> $config_mak
1062 echo "HOST_CC=$host_cc" >> $config_mak
1063 echo "AR=$ar" >> $config_mak
1064 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1065 # XXX: only use CFLAGS and LDFLAGS ?
1066 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1067 # compilation of dyngen tool (useful for win32 build on Linux host)
1068 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1069 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1070 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1071 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1072 echo "CFLAGS=$CFLAGS" >> $config_mak
1073 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1074 echo "EXESUF=$EXESUF" >> $config_mak
1075 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1076 case "$cpu" in
1077 i386)
1078 echo "ARCH=i386" >> $config_mak
1079 echo "#define HOST_I386 1" >> $config_h
1081 x86_64)
1082 echo "ARCH=x86_64" >> $config_mak
1083 echo "#define HOST_X86_64 1" >> $config_h
1085 alpha)
1086 echo "ARCH=alpha" >> $config_mak
1087 echo "#define HOST_ALPHA 1" >> $config_h
1089 armv4b)
1090 echo "ARCH=arm" >> $config_mak
1091 echo "#define HOST_ARM 1" >> $config_h
1093 armv4l)
1094 echo "ARCH=arm" >> $config_mak
1095 echo "#define HOST_ARM 1" >> $config_h
1097 cris)
1098 echo "ARCH=cris" >> $config_mak
1099 echo "#define HOST_CRIS 1" >> $config_h
1101 hppa)
1102 echo "ARCH=hppa" >> $config_mak
1103 echo "#define HOST_HPPA 1" >> $config_h
1105 ia64)
1106 echo "ARCH=ia64" >> $config_mak
1107 echo "#define HOST_IA64 1" >> $config_h
1109 m68k)
1110 echo "ARCH=m68k" >> $config_mak
1111 echo "#define HOST_M68K 1" >> $config_h
1113 mips)
1114 echo "ARCH=mips" >> $config_mak
1115 echo "#define HOST_MIPS 1" >> $config_h
1117 mips64)
1118 echo "ARCH=mips64" >> $config_mak
1119 echo "#define HOST_MIPS64 1" >> $config_h
1121 powerpc)
1122 if test "$hostlongbits" = "32"; then
1123 echo "ARCH=ppc" >> $config_mak
1124 echo "#define HOST_PPC 1" >> $config_h
1125 else
1126 echo "ARCH=ppc64" >> $config_mak
1127 echo "#define HOST_PPC64 1" >> $config_h
1130 s390)
1131 echo "ARCH=s390" >> $config_mak
1132 echo "#define HOST_S390 1" >> $config_h
1134 sparc)
1135 echo "ARCH=sparc" >> $config_mak
1136 echo "#define HOST_SPARC 1" >> $config_h
1138 sparc64)
1139 echo "ARCH=sparc64" >> $config_mak
1140 echo "#define HOST_SPARC64 1" >> $config_h
1143 echo "Unsupported CPU = $cpu"
1144 exit 1
1146 esac
1147 if test "$bigendian" = "yes" ; then
1148 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1149 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1151 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1152 if test "$mingw32" = "yes" ; then
1153 echo "CONFIG_WIN32=yes" >> $config_mak
1154 echo "#define CONFIG_WIN32 1" >> $config_h
1155 else
1156 cat > $TMPC << EOF
1157 #include <byteswap.h>
1158 int main(void) { return bswap_32(0); }
1160 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1161 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1165 if [ "$openbsd" = "yes" ] ; then
1166 echo "#define ENOTSUP 4096" >> $config_h
1169 if test "$darwin" = "yes" ; then
1170 echo "CONFIG_DARWIN=yes" >> $config_mak
1171 echo "#define CONFIG_DARWIN 1" >> $config_h
1173 if test "$solaris" = "yes" ; then
1174 echo "CONFIG_SOLARIS=yes" >> $config_mak
1175 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1176 if test "$needs_libsunmath" = "yes" ; then
1177 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1178 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1181 if test -n "$sparc_cpu"; then
1182 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1183 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1185 if test "$gdbstub" = "yes" ; then
1186 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1187 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1189 if test "$gprof" = "yes" ; then
1190 echo "TARGET_GPROF=yes" >> $config_mak
1191 echo "#define HAVE_GPROF 1" >> $config_h
1193 if test "$static" = "yes" ; then
1194 echo "CONFIG_STATIC=yes" >> $config_mak
1195 echo "#define CONFIG_STATIC 1" >> $config_h
1197 if test $profiler = "yes" ; then
1198 echo "#define CONFIG_PROFILER 1" >> $config_h
1200 if test "$slirp" = "yes" ; then
1201 echo "CONFIG_SLIRP=yes" >> $config_mak
1202 echo "#define CONFIG_SLIRP 1" >> $config_h
1204 if test "$vde" = "yes" ; then
1205 echo "CONFIG_VDE=yes" >> $config_mak
1206 echo "#define CONFIG_VDE 1" >> $config_h
1207 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1209 for card in $audio_card_list; do
1210 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1211 echo "$def=yes" >> $config_mak
1212 echo "#define $def 1" >> $config_h
1213 done
1214 echo "#define AUDIO_DRIVERS \\" >> $config_h
1215 for drv in $audio_drv_list; do
1216 echo " &${drv}_audio_driver, \\" >>$config_h
1217 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1218 echo "$def=yes" >> $config_mak
1219 if test "$drv" = "fmod"; then
1220 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1221 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1223 done
1224 echo "" >>$config_h
1225 if test "$mixemu" = "yes" ; then
1226 echo "CONFIG_MIXEMU=yes" >> $config_mak
1227 echo "#define CONFIG_MIXEMU 1" >> $config_h
1229 if test "$vnc_tls" = "yes" ; then
1230 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1231 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1232 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1233 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1235 qemu_version=`head $source_path/VERSION`
1236 echo "VERSION=$qemu_version" >>$config_mak
1237 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1238 echo "#define KVM_VERSION \"kvm-devel\"" >> $config_h
1240 echo "SRC_PATH=$source_path" >> $config_mak
1241 if [ "$source_path_used" = "yes" ]; then
1242 echo "VPATH=$source_path" >> $config_mak
1244 echo "TARGET_DIRS=$target_list" >> $config_mak
1245 if [ "$build_docs" = "yes" ] ; then
1246 echo "BUILD_DOCS=yes" >> $config_mak
1248 if test "$static" = "yes"; then
1249 sdl1=$sdl_static
1250 else
1251 sdl1=$sdl
1253 if test "$sdl1" = "yes" ; then
1254 echo "#define CONFIG_SDL 1" >> $config_h
1255 echo "CONFIG_SDL=yes" >> $config_mak
1256 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1257 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1258 else
1259 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1261 if [ "${aa}" = "yes" ] ; then
1262 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1263 else
1264 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1267 if test "$cocoa" = "yes" ; then
1268 echo "#define CONFIG_COCOA 1" >> $config_h
1269 echo "CONFIG_COCOA=yes" >> $config_mak
1271 if test "$curses" = "yes" ; then
1272 echo "#define CONFIG_CURSES 1" >> $config_h
1273 echo "CONFIG_CURSES=yes" >> $config_mak
1274 echo "CURSES_LIBS=-lcurses" >> $config_mak
1276 if test "$brlapi" = "yes" ; then
1277 echo "CONFIG_BRLAPI=yes" >> $config_mak
1278 echo "#define CONFIG_BRLAPI 1" >> $config_h
1279 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1281 if test "$aio" = "yes" ; then
1282 echo "#define CONFIG_AIO 1" >> $config_h
1285 # XXX: suppress that
1286 if [ "$bsd" = "yes" ] ; then
1287 echo "#define O_LARGEFILE 0" >> $config_h
1288 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1289 echo "#define _BSD 1" >> $config_h
1292 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1294 tools=
1295 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1296 tools="qemu-img\$(EXESUF) $tools"
1297 if [ "$linux" = "yes" ] ; then
1298 tools="qemu-nbd\$(EXESUF) $tools"
1301 echo "TOOLS=$tools" >> $config_mak
1303 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1305 for target in $target_list; do
1306 target_dir="$target"
1307 config_mak=$target_dir/config.mak
1308 config_h=$target_dir/config.h
1309 target_cpu=`echo $target | cut -d '-' -f 1`
1310 target_bigendian="no"
1311 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1312 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1313 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1314 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1315 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1316 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1317 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1318 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1319 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1320 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1321 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1322 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1323 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1324 target_softmmu="no"
1325 target_user_only="no"
1326 target_linux_user="no"
1327 target_darwin_user="no"
1328 case "$target" in
1329 ${target_cpu}-softmmu)
1330 target_softmmu="yes"
1332 ${target_cpu}-linux-user)
1333 target_user_only="yes"
1334 target_linux_user="yes"
1336 ${target_cpu}-darwin-user)
1337 target_user_only="yes"
1338 target_darwin_user="yes"
1341 echo "ERROR: Target '$target' not recognised"
1342 exit 1
1344 esac
1346 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1347 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1348 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1349 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1350 echo "Note that this will disable all output from the virtual graphics card"
1351 echo "except through VNC or curses."
1352 exit 1;
1355 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1357 test -f $config_h && mv $config_h ${config_h}~
1359 mkdir -p $target_dir
1360 mkdir -p $target_dir/fpu
1361 mkdir -p $target_dir/tcg
1362 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1363 mkdir -p $target_dir/nwfpe
1367 # don't use ln -sf as not all "ln -sf" over write the file/link
1369 rm -f $target_dir/Makefile
1370 ln -s $source_path/Makefile.target $target_dir/Makefile
1373 echo "# Automatically generated by configure - do not modify" > $config_mak
1374 echo "/* Automatically generated by configure - do not modify */" > $config_h
1377 echo "include ../config-host.mak" >> $config_mak
1378 echo "#include \"../config-host.h\"" >> $config_h
1380 bflt="no"
1381 elfload32="no"
1382 target_nptl="no"
1383 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1384 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1386 disable_cpu_emulation() {
1387 if test $cpu_emulation = "no"; then
1388 echo "#define NO_CPU_EMULATION 1" >> $config_h
1389 echo "NO_CPU_EMULATION=1" >> $config_mak
1393 configure_kvm() {
1394 if test $kvm = "yes" -a "$target_softmmu" = "yes" -a \
1395 \( "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "ia64" -o "$cpu" = "powerpc" \); then
1396 echo "#define USE_KVM 1" >> $config_h
1397 echo "USE_KVM=1" >> $config_mak
1398 echo "CONFIG_KVM_KERNEL_INC=$kernel_path/include" >> $config_mak
1399 if test $kvm_cap_pit = "yes" ; then
1400 echo "USE_KVM_PIT=1" >> $config_mak
1401 echo "#define USE_KVM_PIT 1" >> $config_h
1403 disable_cpu_emulation
1407 case "$target_cpu" in
1408 i386)
1409 echo "TARGET_ARCH=i386" >> $config_mak
1410 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1411 echo "#define TARGET_I386 1" >> $config_h
1412 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1413 then
1414 echo "#define USE_KQEMU 1" >> $config_h
1416 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1417 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1418 then
1419 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1420 else
1421 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1423 configure_kvm
1425 x86_64)
1426 echo "TARGET_ARCH=x86_64" >> $config_mak
1427 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1428 echo "#define TARGET_I386 1" >> $config_h
1429 echo "#define TARGET_X86_64 1" >> $config_h
1430 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1431 then
1432 echo "#define USE_KQEMU 1" >> $config_h
1434 configure_kvm
1436 ia64)
1437 echo "TARGET_ARCH=ia64" >> $config_mak
1438 echo "#define TARGET_ARCH \"ia64\"" >> $config_h
1439 echo "#define TARGET_IA64 1" >> $config_h
1440 configure_kvm
1442 alpha)
1443 echo "TARGET_ARCH=alpha" >> $config_mak
1444 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1445 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1446 echo "#define TARGET_ALPHA 1" >> $config_h
1447 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1449 arm|armeb)
1450 echo "TARGET_ARCH=arm" >> $config_mak
1451 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1452 echo "#define TARGET_ARM 1" >> $config_h
1453 bflt="yes"
1454 target_nptl="yes"
1456 cris)
1457 echo "TARGET_ARCH=cris" >> $config_mak
1458 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1459 echo "#define TARGET_CRIS 1" >> $config_h
1461 m68k)
1462 echo "TARGET_ARCH=m68k" >> $config_mak
1463 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1464 echo "#define TARGET_M68K 1" >> $config_h
1465 bflt="yes"
1467 mips|mipsel)
1468 echo "TARGET_ARCH=mips" >> $config_mak
1469 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1470 echo "#define TARGET_MIPS 1" >> $config_h
1471 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1473 mipsn32|mipsn32el)
1474 echo "TARGET_ARCH=mipsn32" >> $config_mak
1475 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1476 echo "#define TARGET_MIPS 1" >> $config_h
1477 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1479 mips64|mips64el)
1480 echo "TARGET_ARCH=mips64" >> $config_mak
1481 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1482 echo "#define TARGET_MIPS 1" >> $config_h
1483 echo "#define TARGET_MIPS64 1" >> $config_h
1484 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1486 ppc)
1487 echo "TARGET_ARCH=ppc" >> $config_mak
1488 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1489 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1490 echo "#define TARGET_PPC 1" >> $config_h
1491 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1493 ppcemb)
1494 echo "TARGET_ARCH=ppcemb" >> $config_mak
1495 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1496 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1497 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1498 echo "#define TARGET_PPC 1" >> $config_h
1499 echo "#define TARGET_PPCEMB 1" >> $config_h
1500 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1501 if test "$device_tree_support" = "yes" ; then
1502 echo "#define CONFIG_LIBFDT 1" >> $config_h
1503 echo "CONFIG_LIBFDT=1" >> $config_mak
1505 configure_kvm
1507 ppc64)
1508 echo "TARGET_ARCH=ppc64" >> $config_mak
1509 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1510 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1511 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1512 echo "#define TARGET_PPC 1" >> $config_h
1513 echo "#define TARGET_PPC64 1" >> $config_h
1514 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1516 ppc64abi32)
1517 echo "TARGET_ARCH=ppc64" >> $config_mak
1518 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1519 echo "TARGET_ARCH2=ppc64abi32" >> $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 TARGET_ABI32 1" >> $config_h
1525 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1527 sh4|sh4eb)
1528 echo "TARGET_ARCH=sh4" >> $config_mak
1529 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1530 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1531 echo "#define TARGET_SH4 1" >> $config_h
1532 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1533 bflt="yes"
1535 sparc)
1536 echo "TARGET_ARCH=sparc" >> $config_mak
1537 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1538 echo "#define TARGET_SPARC 1" >> $config_h
1540 sparc64)
1541 echo "TARGET_ARCH=sparc64" >> $config_mak
1542 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1543 echo "#define TARGET_SPARC 1" >> $config_h
1544 echo "#define TARGET_SPARC64 1" >> $config_h
1545 elfload32="yes"
1547 sparc32plus)
1548 echo "TARGET_ARCH=sparc64" >> $config_mak
1549 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1550 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1551 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1552 echo "#define TARGET_SPARC 1" >> $config_h
1553 echo "#define TARGET_SPARC64 1" >> $config_h
1554 echo "#define TARGET_ABI32 1" >> $config_h
1557 echo "Unsupported target CPU"
1558 exit 1
1560 esac
1561 if test "$target_bigendian" = "yes" ; then
1562 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1563 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1565 if test "$target_softmmu" = "yes" ; then
1566 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1567 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1569 if test "$target_user_only" = "yes" ; then
1570 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1571 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1573 if test "$target_linux_user" = "yes" ; then
1574 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1575 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1577 if test "$target_darwin_user" = "yes" ; then
1578 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1579 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1582 if test "$target_cpu" = "arm" \
1583 -o "$target_cpu" = "armeb" \
1584 -o "$target_cpu" = "m68k" \
1585 -o "$target_cpu" = "mips" \
1586 -o "$target_cpu" = "mipsel" \
1587 -o "$target_cpu" = "mipsn32" \
1588 -o "$target_cpu" = "mipsn32el" \
1589 -o "$target_cpu" = "mips64" \
1590 -o "$target_cpu" = "mips64el" \
1591 -o "$target_cpu" = "sparc" \
1592 -o "$target_cpu" = "sparc64" \
1593 -o "$target_cpu" = "sparc32plus"; then
1594 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1595 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1597 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1598 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1599 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1601 if test "$target_user_only" = "yes" \
1602 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1603 echo "#define USE_NPTL 1" >> $config_h
1605 # 32 bit ELF loader in addition to native 64 bit loader?
1606 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1607 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1608 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1611 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1613 done # for target in $targets
1615 # build tree in object directory if source path is different from current one
1616 if test "$source_path_used" = "yes" ; then
1617 DIRS="tests tests/cris slirp audio"
1618 FILES="Makefile tests/Makefile"
1619 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1620 FILES="$FILES tests/test-mmap.c"
1621 for dir in $DIRS ; do
1622 mkdir -p $dir
1623 done
1624 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1625 for f in $FILES ; do
1626 rm -f $f
1627 ln -s $source_path/$f $f
1628 done
1631 rm -f $TMPO $TMPC $TMPE $TMPS