kvm: add compat wrapper for get_user_pages_fast()
[qemu-kvm/fedora.git] / configure
blobd608f7ac9079553f0168f45649483f4f98ed8e5f
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 -O2 -g -fno-strict-aliasing"
374 CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
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 " --audio-drv-list=LIST set audio drivers list:"
445 echo " Available drivers: $audio_possible_drivers"
446 echo " --audio-card-list=LIST set list of additional emulated audio cards"
447 echo " Available cards: ac97 adlib cs4231a gus"
448 echo " --enable-mixemu enable mixer emulation"
449 echo " --disable-brlapi disable BrlAPI"
450 echo " --disable-vnc-tls disable TLS encryption for VNC server"
451 echo " --disable-curses disable curses output"
452 echo " --disable-nptl disable usermode NPTL support"
453 echo " --enable-system enable all system emulation targets"
454 echo " --disable-system disable all system emulation targets"
455 echo " --enable-linux-user enable all linux usermode emulation targets"
456 echo " --disable-linux-user disable all linux usermode emulation targets"
457 echo " --enable-darwin-user enable all darwin usermode emulation targets"
458 echo " --disable-darwin-user disable all darwin usermode emulation targets"
459 echo " --fmod-lib path to FMOD library"
460 echo " --fmod-inc path to FMOD includes"
461 echo " --oss-lib path to OSS library"
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-aio disable AIO support"
466 echo " --disable-cpu-emulation disables use of qemu cpu emulation code"
467 echo " --disable-libfdt disables use of libfdt support for device tree"
468 echo ""
469 echo "NOTE: The object files are built at the place where configure is launched"
470 exit 1
473 cc="${cross_prefix}${cc}"
474 ar="${cross_prefix}${ar}"
475 strip="${cross_prefix}${strip}"
477 # check that the C compiler works.
478 cat > $TMPC <<EOF
479 int main(void) {}
482 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
483 : C compiler works ok
484 else
485 echo "ERROR: \"$cc\" either does not exist or does not work"
486 exit 1
489 # check compiler to see if we're on mingw32
490 cat > $TMPC <<EOF
491 #include <windows.h>
492 #ifndef _WIN32
493 #error not windows
494 #endif
495 int main(void) {}
498 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
499 mingw32="yes"
502 if test "$mingw32" = "yes" ; then
503 linux="no"
504 EXESUF=".exe"
505 oss="no"
506 linux_user="no"
509 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
510 AIOLIBS=
511 else
512 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
513 AIOLIBS="-lrt -lpthread"
516 # Check for gcc4, error if pre-gcc4
517 if test "$check_gcc" = "yes" ; then
518 cat > $TMPC <<EOF
519 #if __GNUC__ < 4
520 #error gcc3
521 #endif
522 int main(){return 0;}
524 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
525 echo "WARNING: \"$cc\" looks like gcc 4.x"
526 found_compat_cc="no"
527 if test "$gcc3_search" = "yes" ; then
528 echo "Looking for gcc 3.x"
529 for compat_cc in $gcc3_list ; do
530 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
531 echo "Found \"$compat_cc\""
532 cc="$cross_prefix$compat_cc"
533 found_compat_cc="yes"
534 break
536 done
537 if test "$found_compat_cc" = "no" ; then
538 echo "gcc 3.x not found!"
541 if test "$found_compat_cc" = "no" ; then
542 echo "QEMU is known to have problems when compiled with gcc 4.x"
543 echo "It is recommended that you use gcc 3.x to build QEMU"
544 echo "To use this compiler anyway, configure with --disable-gcc-check"
545 exit 1;
551 # Solaris specific configure tool chain decisions
553 if test "$solaris" = "yes" ; then
555 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
556 # override the check with --disable-gcc-check
558 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
559 solgcc=`which $cc`
560 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
561 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
562 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
563 echo "or get the latest patch from SunSolve for gcc"
564 exit 1
567 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
568 if test -z "$solinst" ; then
569 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
570 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
571 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
572 exit 1
574 if test "$solinst" = "/usr/sbin/install" ; then
575 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
576 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
577 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
578 exit 1
580 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
581 if test -z "$sol_ar" ; then
582 echo "Error: No path includes ar"
583 if test -f /usr/ccs/bin/ar ; then
584 echo "Add /usr/ccs/bin to your path and rerun configure"
586 exit 1
591 if test -z "$target_list" ; then
592 # these targets are portable
593 if [ "$softmmu" = "yes" ] ; then
594 target_list="\
595 i386-softmmu \
596 x86_64-softmmu \
597 arm-softmmu \
598 cris-softmmu \
599 m68k-softmmu \
600 mips-softmmu \
601 mipsel-softmmu \
602 mips64-softmmu \
603 mips64el-softmmu \
604 ppc-softmmu \
605 ppcemb-softmmu \
606 ppc64-softmmu \
607 sh4-softmmu \
608 sh4eb-softmmu \
609 sparc-softmmu \
612 # the following are Linux specific
613 if [ "$linux_user" = "yes" ] ; then
614 target_list="${target_list}\
615 i386-linux-user \
616 x86_64-linux-user \
617 alpha-linux-user \
618 arm-linux-user \
619 armeb-linux-user \
620 cris-linux-user \
621 m68k-linux-user \
622 mips-linux-user \
623 mipsel-linux-user \
624 ppc-linux-user \
625 ppc64-linux-user \
626 ppc64abi32-linux-user \
627 sh4-linux-user \
628 sh4eb-linux-user \
629 sparc-linux-user \
630 sparc64-linux-user \
631 sparc32plus-linux-user \
634 # the following are Darwin specific
635 if [ "$darwin_user" = "yes" ] ; then
636 target_list="$target_list i386-darwin-user ppc-darwin-user"
638 else
639 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
641 if test -z "$target_list" ; then
642 echo "No targets enabled"
643 exit 1
646 if test -z "$cross_prefix" ; then
648 # ---
649 # big/little endian test
650 cat > $TMPC << EOF
651 #include <inttypes.h>
652 int main(int argc, char ** argv){
653 volatile uint32_t i=0x01234567;
654 return (*((uint8_t*)(&i))) == 0x67;
658 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
659 $TMPE && bigendian="yes"
660 else
661 echo big/little test failed
664 else
666 # if cross compiling, cannot launch a program, so make a static guess
667 if test "$cpu" = "armv4b" \
668 -o "$cpu" = "hppa" \
669 -o "$cpu" = "m68k" \
670 -o "$cpu" = "mips" \
671 -o "$cpu" = "mips64" \
672 -o "$cpu" = "powerpc" \
673 -o "$cpu" = "s390" \
674 -o "$cpu" = "sparc" \
675 -o "$cpu" = "sparc64"; then
676 bigendian="yes"
681 # host long bits test
682 hostlongbits="32"
683 if test "$cpu" = "x86_64" \
684 -o "$cpu" = "alpha" \
685 -o "$cpu" = "ia64" \
686 -o "$cpu" = "sparc64"; then
687 hostlongbits="64"
690 # ppc specific hostlongbits selection
691 if test "$cpu" = "powerpc" ; then
692 cat > $TMPC <<EOF
693 int main(void){return sizeof(long);}
696 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
697 $TMPE
698 case $? in
699 4) hostlongbits="32";;
700 8) hostlongbits="64";;
701 *) echo "Couldn't determine bits per long value"; exit 1;;
702 esac
703 else
704 echo hostlongbits test failed
705 exit 1
709 # check gcc options support
710 cat > $TMPC <<EOF
711 int main(void) {
715 # Check host NPTL support
716 cat > $TMPC <<EOF
717 #include <sched.h>
718 #include <linux/futex.h>
719 void foo()
721 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
722 #error bork
723 #endif
727 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
729 else
730 nptl="no"
733 ##########################################
734 # KVM probe
736 if test "$kvm" = "yes" ; then
737 cat > $TMPC <<EOF
738 #include <libkvm.h>
739 #ifndef KVM_CAP_PIT
740 #error "kvm no pit capability"
741 #endif
742 int main(void) { return 0; }
744 if $cc $ARCH_CFLAGS $CFLAGS -I"$kernel_path"/include -o $TMPE ${OS_CFLAGS} $TMPC 2> /dev/null ; then
745 kvm_cap_pit="yes"
749 ##########################################
750 # SDL probe
752 sdl_too_old=no
754 if test -z "$sdl" ; then
755 sdl_config="sdl-config"
756 sdl=no
757 sdl_static=no
759 cat > $TMPC << EOF
760 #include <SDL.h>
761 #undef main /* We don't want SDL to override our main() */
762 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
764 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
765 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
766 if test "$_sdlversion" -lt 121 ; then
767 sdl_too_old=yes
768 else
769 if test "$cocoa" = "no" ; then
770 sdl=yes
774 # static link with sdl ?
775 if test "$sdl" = "yes" ; then
776 aa="no"
777 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
778 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
779 if [ "$aa" = "yes" ] ; then
780 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
783 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
784 sdl_static=yes
786 fi # static link
787 fi # sdl compile test
788 else
789 # Make sure to disable cocoa if sdl was set
790 if test "$sdl" = "yes" ; then
791 cocoa="no"
792 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
794 fi # -z $sdl
796 ##########################################
797 # VNC TLS detection
798 if test "$vnc_tls" = "yes" ; then
799 cat > $TMPC <<EOF
800 #include <gnutls/gnutls.h>
801 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
803 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
804 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
805 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
806 $vnc_tls_libs 2> /dev/null ; then
808 else
809 vnc_tls="no"
813 ##########################################
814 # vde libraries probe
815 if test "$vde" = "yes" ; then
816 cat > $TMPC << EOF
817 #include <libvdeplug.h>
818 int main(void)
820 struct vde_open_args a = {0, 0, 0};
821 vde_open("", "", &a);
822 return 0;
825 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
827 else
828 vde="no"
832 ##########################################
833 # Sound support libraries probe
835 audio_drv_probe()
837 drv=$1
838 hdr=$2
839 lib=$3
840 exp=$4
841 cfl=$5
842 cat > $TMPC << EOF
843 #include <$hdr>
844 int main(void) { $exp }
846 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
848 else
849 echo
850 echo "Error: $drv check failed"
851 echo "Make sure to have the $drv libs and headers installed."
852 echo
853 exit 1
857 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
858 for drv in $audio_drv_list; do
859 case $drv in
860 alsa)
861 audio_drv_probe $drv alsa/asoundlib.h -lasound \
862 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
865 fmod)
866 if test -z $fmod_lib || test -z $fmod_inc; then
867 echo
868 echo "Error: You must specify path to FMOD library and headers"
869 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
870 echo
871 exit 1
873 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
876 esd)
877 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
881 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
882 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
885 oss|sdl|core|wav|dsound)
886 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
890 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
891 echo
892 echo "Error: Unknown driver '$drv' selected"
893 echo "Possible drivers are: $audio_possible_drivers"
894 echo
895 exit 1
898 esac
899 done
901 ##########################################
902 # BrlAPI probe
904 if test -z "$brlapi" ; then
905 brlapi=no
906 cat > $TMPC << EOF
907 #include <brlapi.h>
908 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
910 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
911 brlapi=yes
912 fi # brlapi compile test
913 fi # -z $brlapi
915 ##########################################
916 # curses probe
918 if test "$curses" = "yes" ; then
919 curses=no
920 cat > $TMPC << EOF
921 #include <curses.h>
922 int main(void) { return curses_version(); }
924 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
925 curses=yes
927 fi # test "$curses"
929 ##########################################
930 # AIO probe
931 if test "$aio" = "yes" ; then
932 aio=no
933 cat > $TMPC << EOF
934 #include <aio.h>
935 int main(void) { return aio_write(NULL); }
937 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
938 aio=yes
942 # Check if tools are available to build documentation.
943 if [ -x "`which texi2html 2>/dev/null`" ] && \
944 [ -x "`which pod2man 2>/dev/null`" ]; then
945 build_docs="yes"
948 if test "$mingw32" = "yes" ; then
949 if test -z "$prefix" ; then
950 prefix="/c/Program Files/Qemu"
952 mansuffix=""
953 datasuffix=""
954 docsuffix=""
955 binsuffix=""
956 else
957 if test -z "$prefix" ; then
958 prefix="/usr/local"
960 mansuffix="/share/man"
961 datasuffix="/share/qemu"
962 docsuffix="/share/doc/qemu"
963 binsuffix="/bin"
966 ######################################
967 # libfdt probe
969 if test -z "$device_tree_support" -a \
970 "$cpu" = "powerpc"; then
971 device_tree_support="no"
972 cat > $TMPC << EOF
973 #include <libfdt.h>
974 /* XXX uncomment later when libfdt is built before this test */
975 //int main(void) { void *fdt; return fdt_create(fdt, 1024); }
976 int main (void) {return 0;}
978 # XXX for now do not try to link to libfdt and just check for header */
979 # if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC -lfdt 2> /dev/null ; then
980 if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC 2> /dev/null; then
981 device_tree_support="yes"
982 else
983 echo
984 echo "Error: Could not find libfdt"
985 echo "Make sure to have the libfdt libs and headers installed."
986 echo
987 exit 1
991 echo "Install prefix $prefix"
992 echo "BIOS directory $prefix$datasuffix"
993 echo "binary directory $prefix$binsuffix"
994 if test "$mingw32" = "no" ; then
995 echo "Manual directory $prefix$mansuffix"
996 echo "ELF interp prefix $interp_prefix"
998 echo "Source path $source_path"
999 echo "C compiler $cc"
1000 echo "Host C compiler $host_cc"
1001 echo "ARCH_CFLAGS $ARCH_CFLAGS"
1002 echo "make $make"
1003 echo "install $install"
1004 echo "host CPU $cpu"
1005 echo "host big endian $bigendian"
1006 echo "target list $target_list"
1007 echo "gprof enabled $gprof"
1008 echo "profiler $profiler"
1009 echo "static build $static"
1010 echo "-Werror enabled $werror"
1011 if test "$darwin" = "yes" ; then
1012 echo "Cocoa support $cocoa"
1014 echo "SDL support $sdl"
1015 if test "$sdl" != "no" ; then
1016 echo "SDL static link $sdl_static"
1018 echo "curses support $curses"
1019 echo "mingw32 support $mingw32"
1020 echo "Audio drivers $audio_drv_list"
1021 echo "Extra audio cards $audio_card_list"
1022 echo "Mixer emulation $mixemu"
1023 echo "VNC TLS support $vnc_tls"
1024 if test "$vnc_tls" = "yes" ; then
1025 echo " TLS CFLAGS $vnc_tls_cflags"
1026 echo " TLS LIBS $vnc_tls_libs"
1028 if test -n "$sparc_cpu"; then
1029 echo "Target Sparc Arch $sparc_cpu"
1031 echo "kqemu support $kqemu"
1032 echo "kvm support $kvm"
1033 echo "CPU emulation $cpu_emulation"
1034 if test $cpu = "powerpc"; then
1035 echo "libfdt support $device_tree_support"
1037 echo "brlapi support $brlapi"
1038 echo "Documentation $build_docs"
1039 [ ! -z "$uname_release" ] && \
1040 echo "uname -r $uname_release"
1041 echo "NPTL support $nptl"
1042 echo "vde support $vde"
1043 echo "AIO support $aio"
1045 if test $sdl_too_old = "yes"; then
1046 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1048 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1049 echo "The error log from compiling the libSDL test is: "
1050 cat /tmp/qemu-$$-sdl-config.log
1052 rm -f /tmp/qemu-$$-sdl-config.log
1053 #if test "$sdl_static" = "no"; then
1054 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1056 config_mak="config-host.mak"
1057 config_h="config-host.h"
1059 #echo "Creating $config_mak and $config_h"
1061 test -f $config_h && mv $config_h ${config_h}~
1063 echo "# Automatically generated by configure - do not modify" > $config_mak
1064 echo "# Configured with: $0 $@" >> $config_mak
1065 echo "/* Automatically generated by configure - do not modify */" > $config_h
1067 echo "prefix=$prefix" >> $config_mak
1068 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1069 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1070 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1071 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1072 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1073 echo "MAKE=$make" >> $config_mak
1074 echo "INSTALL=$install" >> $config_mak
1075 echo "CC=$cc" >> $config_mak
1076 echo "HOST_CC=$host_cc" >> $config_mak
1077 echo "AR=$ar" >> $config_mak
1078 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1079 # XXX: only use CFLAGS and LDFLAGS ?
1080 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1081 # compilation of dyngen tool (useful for win32 build on Linux host)
1082 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1083 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1084 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1085 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1086 echo "CFLAGS=$CFLAGS" >> $config_mak
1087 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1088 echo "EXESUF=$EXESUF" >> $config_mak
1089 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1090 case "$cpu" in
1091 i386)
1092 echo "ARCH=i386" >> $config_mak
1093 echo "#define HOST_I386 1" >> $config_h
1095 x86_64)
1096 echo "ARCH=x86_64" >> $config_mak
1097 echo "#define HOST_X86_64 1" >> $config_h
1099 alpha)
1100 echo "ARCH=alpha" >> $config_mak
1101 echo "#define HOST_ALPHA 1" >> $config_h
1103 armv4b)
1104 echo "ARCH=arm" >> $config_mak
1105 echo "#define HOST_ARM 1" >> $config_h
1107 armv4l)
1108 echo "ARCH=arm" >> $config_mak
1109 echo "#define HOST_ARM 1" >> $config_h
1111 cris)
1112 echo "ARCH=cris" >> $config_mak
1113 echo "#define HOST_CRIS 1" >> $config_h
1115 hppa)
1116 echo "ARCH=hppa" >> $config_mak
1117 echo "#define HOST_HPPA 1" >> $config_h
1119 ia64)
1120 echo "ARCH=ia64" >> $config_mak
1121 echo "#define HOST_IA64 1" >> $config_h
1123 m68k)
1124 echo "ARCH=m68k" >> $config_mak
1125 echo "#define HOST_M68K 1" >> $config_h
1127 mips)
1128 echo "ARCH=mips" >> $config_mak
1129 echo "#define HOST_MIPS 1" >> $config_h
1131 mips64)
1132 echo "ARCH=mips64" >> $config_mak
1133 echo "#define HOST_MIPS64 1" >> $config_h
1135 powerpc)
1136 if test "$hostlongbits" = "32"; then
1137 echo "ARCH=ppc" >> $config_mak
1138 echo "#define HOST_PPC 1" >> $config_h
1139 else
1140 echo "ARCH=ppc64" >> $config_mak
1141 echo "#define HOST_PPC64 1" >> $config_h
1144 s390)
1145 echo "ARCH=s390" >> $config_mak
1146 echo "#define HOST_S390 1" >> $config_h
1148 sparc)
1149 echo "ARCH=sparc" >> $config_mak
1150 echo "#define HOST_SPARC 1" >> $config_h
1152 sparc64)
1153 echo "ARCH=sparc64" >> $config_mak
1154 echo "#define HOST_SPARC64 1" >> $config_h
1157 echo "Unsupported CPU = $cpu"
1158 exit 1
1160 esac
1161 if test "$bigendian" = "yes" ; then
1162 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1163 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1165 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1166 if test "$mingw32" = "yes" ; then
1167 echo "CONFIG_WIN32=yes" >> $config_mak
1168 echo "#define CONFIG_WIN32 1" >> $config_h
1169 else
1170 cat > $TMPC << EOF
1171 #include <byteswap.h>
1172 int main(void) { return bswap_32(0); }
1174 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1175 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1179 if [ "$openbsd" = "yes" ] ; then
1180 echo "#define ENOTSUP 4096" >> $config_h
1183 if test "$darwin" = "yes" ; then
1184 echo "CONFIG_DARWIN=yes" >> $config_mak
1185 echo "#define CONFIG_DARWIN 1" >> $config_h
1187 if test "$solaris" = "yes" ; then
1188 echo "CONFIG_SOLARIS=yes" >> $config_mak
1189 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1190 if test "$needs_libsunmath" = "yes" ; then
1191 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1192 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1195 if test -n "$sparc_cpu"; then
1196 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1197 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1199 if test "$gdbstub" = "yes" ; then
1200 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1201 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1203 if test "$gprof" = "yes" ; then
1204 echo "TARGET_GPROF=yes" >> $config_mak
1205 echo "#define HAVE_GPROF 1" >> $config_h
1207 if test "$static" = "yes" ; then
1208 echo "CONFIG_STATIC=yes" >> $config_mak
1209 echo "#define CONFIG_STATIC 1" >> $config_h
1211 if test $profiler = "yes" ; then
1212 echo "#define CONFIG_PROFILER 1" >> $config_h
1214 if test "$slirp" = "yes" ; then
1215 echo "CONFIG_SLIRP=yes" >> $config_mak
1216 echo "#define CONFIG_SLIRP 1" >> $config_h
1218 if test "$vde" = "yes" ; then
1219 echo "CONFIG_VDE=yes" >> $config_mak
1220 echo "#define CONFIG_VDE 1" >> $config_h
1221 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1223 for card in $audio_card_list; do
1224 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1225 echo "$def=yes" >> $config_mak
1226 echo "#define $def 1" >> $config_h
1227 done
1228 echo "#define AUDIO_DRIVERS \\" >> $config_h
1229 for drv in $audio_drv_list; do
1230 echo " &${drv}_audio_driver, \\" >>$config_h
1231 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1232 echo "$def=yes" >> $config_mak
1233 if test "$drv" = "fmod"; then
1234 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1235 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1236 elif test "$drv" = "oss"; then
1237 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1239 done
1240 echo "" >>$config_h
1241 if test "$mixemu" = "yes" ; then
1242 echo "CONFIG_MIXEMU=yes" >> $config_mak
1243 echo "#define CONFIG_MIXEMU 1" >> $config_h
1245 if test "$vnc_tls" = "yes" ; then
1246 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1247 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1248 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1249 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1251 qemu_version=`head $source_path/VERSION`
1252 echo "VERSION=$qemu_version" >>$config_mak
1253 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1254 echo "#define KVM_VERSION \"kvm-devel\"" >> $config_h
1256 echo "SRC_PATH=$source_path" >> $config_mak
1257 if [ "$source_path_used" = "yes" ]; then
1258 echo "VPATH=$source_path" >> $config_mak
1260 echo "TARGET_DIRS=$target_list" >> $config_mak
1261 if [ "$build_docs" = "yes" ] ; then
1262 echo "BUILD_DOCS=yes" >> $config_mak
1264 if test "$static" = "yes"; then
1265 sdl1=$sdl_static
1266 else
1267 sdl1=$sdl
1269 if test "$sdl1" = "yes" ; then
1270 echo "#define CONFIG_SDL 1" >> $config_h
1271 echo "CONFIG_SDL=yes" >> $config_mak
1272 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1273 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1274 else
1275 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1277 if [ "${aa}" = "yes" ] ; then
1278 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1279 else
1280 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1283 if test "$cocoa" = "yes" ; then
1284 echo "#define CONFIG_COCOA 1" >> $config_h
1285 echo "CONFIG_COCOA=yes" >> $config_mak
1287 if test "$curses" = "yes" ; then
1288 echo "#define CONFIG_CURSES 1" >> $config_h
1289 echo "CONFIG_CURSES=yes" >> $config_mak
1290 echo "CURSES_LIBS=-lcurses" >> $config_mak
1292 if test "$brlapi" = "yes" ; then
1293 echo "CONFIG_BRLAPI=yes" >> $config_mak
1294 echo "#define CONFIG_BRLAPI 1" >> $config_h
1295 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1297 if test "$aio" = "yes" ; then
1298 echo "#define CONFIG_AIO 1" >> $config_h
1299 echo "CONFIG_AIO=yes" >> $config_mak
1302 # XXX: suppress that
1303 if [ "$bsd" = "yes" ] ; then
1304 echo "#define O_LARGEFILE 0" >> $config_h
1305 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1306 echo "#define _BSD 1" >> $config_h
1309 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1311 tools=
1312 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1313 tools="qemu-img\$(EXESUF) $tools"
1314 if [ "$linux" = "yes" ] ; then
1315 tools="qemu-nbd\$(EXESUF) $tools"
1318 echo "TOOLS=$tools" >> $config_mak
1320 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1322 for target in $target_list; do
1323 target_dir="$target"
1324 config_mak=$target_dir/config.mak
1325 config_h=$target_dir/config.h
1326 target_cpu=`echo $target | cut -d '-' -f 1`
1327 target_bigendian="no"
1328 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1329 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1330 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1331 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1332 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1333 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1334 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1335 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1336 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1337 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1338 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1339 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1340 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1341 target_softmmu="no"
1342 target_user_only="no"
1343 target_linux_user="no"
1344 target_darwin_user="no"
1345 case "$target" in
1346 ${target_cpu}-softmmu)
1347 target_softmmu="yes"
1349 ${target_cpu}-linux-user)
1350 target_user_only="yes"
1351 target_linux_user="yes"
1353 ${target_cpu}-darwin-user)
1354 target_user_only="yes"
1355 target_darwin_user="yes"
1358 echo "ERROR: Target '$target' not recognised"
1359 exit 1
1361 esac
1363 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1364 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1365 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1366 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1367 echo "Note that this will disable all output from the virtual graphics card"
1368 echo "except through VNC or curses."
1369 exit 1;
1372 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1374 test -f $config_h && mv $config_h ${config_h}~
1376 mkdir -p $target_dir
1377 mkdir -p $target_dir/fpu
1378 mkdir -p $target_dir/tcg
1379 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1380 mkdir -p $target_dir/nwfpe
1384 # don't use ln -sf as not all "ln -sf" over write the file/link
1386 rm -f $target_dir/Makefile
1387 ln -s $source_path/Makefile.target $target_dir/Makefile
1390 echo "# Automatically generated by configure - do not modify" > $config_mak
1391 echo "/* Automatically generated by configure - do not modify */" > $config_h
1394 echo "include ../config-host.mak" >> $config_mak
1395 echo "#include \"../config-host.h\"" >> $config_h
1397 bflt="no"
1398 elfload32="no"
1399 target_nptl="no"
1400 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1401 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1403 disable_cpu_emulation() {
1404 if test $cpu_emulation = "no"; then
1405 echo "#define NO_CPU_EMULATION 1" >> $config_h
1406 echo "NO_CPU_EMULATION=1" >> $config_mak
1410 configure_kvm() {
1411 if test $kvm = "yes" -a "$target_softmmu" = "yes" -a \
1412 \( "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "ia64" -o "$cpu" = "powerpc" \); then
1413 echo "#define USE_KVM 1" >> $config_h
1414 echo "USE_KVM=1" >> $config_mak
1415 echo "CONFIG_KVM_KERNEL_INC=$kernel_path/include" >> $config_mak
1416 if test $kvm_cap_pit = "yes" ; then
1417 echo "USE_KVM_PIT=1" >> $config_mak
1418 echo "#define USE_KVM_PIT 1" >> $config_h
1420 disable_cpu_emulation
1424 case "$target_cpu" in
1425 i386)
1426 echo "TARGET_ARCH=i386" >> $config_mak
1427 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1428 echo "#define TARGET_I386 1" >> $config_h
1429 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1430 then
1431 echo "#define USE_KQEMU 1" >> $config_h
1433 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1434 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1435 then
1436 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1437 else
1438 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1440 configure_kvm
1442 x86_64)
1443 echo "TARGET_ARCH=x86_64" >> $config_mak
1444 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1445 echo "#define TARGET_I386 1" >> $config_h
1446 echo "#define TARGET_X86_64 1" >> $config_h
1447 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1448 then
1449 echo "#define USE_KQEMU 1" >> $config_h
1451 configure_kvm
1453 ia64)
1454 echo "TARGET_ARCH=ia64" >> $config_mak
1455 echo "#define TARGET_ARCH \"ia64\"" >> $config_h
1456 echo "#define TARGET_IA64 1" >> $config_h
1457 configure_kvm
1459 alpha)
1460 echo "TARGET_ARCH=alpha" >> $config_mak
1461 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1462 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1463 echo "#define TARGET_ALPHA 1" >> $config_h
1464 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1466 arm|armeb)
1467 echo "TARGET_ARCH=arm" >> $config_mak
1468 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1469 echo "#define TARGET_ARM 1" >> $config_h
1470 bflt="yes"
1471 target_nptl="yes"
1473 cris)
1474 echo "TARGET_ARCH=cris" >> $config_mak
1475 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1476 echo "#define TARGET_CRIS 1" >> $config_h
1478 m68k)
1479 echo "TARGET_ARCH=m68k" >> $config_mak
1480 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1481 echo "#define TARGET_M68K 1" >> $config_h
1482 bflt="yes"
1484 mips|mipsel)
1485 echo "TARGET_ARCH=mips" >> $config_mak
1486 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1487 echo "#define TARGET_MIPS 1" >> $config_h
1488 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1490 mipsn32|mipsn32el)
1491 echo "TARGET_ARCH=mipsn32" >> $config_mak
1492 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1493 echo "#define TARGET_MIPS 1" >> $config_h
1494 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1496 mips64|mips64el)
1497 echo "TARGET_ARCH=mips64" >> $config_mak
1498 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1499 echo "#define TARGET_MIPS 1" >> $config_h
1500 echo "#define TARGET_MIPS64 1" >> $config_h
1501 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1503 ppc)
1504 echo "TARGET_ARCH=ppc" >> $config_mak
1505 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1506 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1507 echo "#define TARGET_PPC 1" >> $config_h
1508 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1510 ppcemb)
1511 echo "TARGET_ARCH=ppcemb" >> $config_mak
1512 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1513 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1514 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1515 echo "#define TARGET_PPC 1" >> $config_h
1516 echo "#define TARGET_PPCEMB 1" >> $config_h
1517 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1518 if test "$device_tree_support" = "yes" ; then
1519 echo "#define CONFIG_LIBFDT 1" >> $config_h
1520 echo "CONFIG_LIBFDT=1" >> $config_mak
1522 configure_kvm
1524 ppc64)
1525 echo "TARGET_ARCH=ppc64" >> $config_mak
1526 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1527 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1528 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1529 echo "#define TARGET_PPC 1" >> $config_h
1530 echo "#define TARGET_PPC64 1" >> $config_h
1531 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1533 ppc64abi32)
1534 echo "TARGET_ARCH=ppc64" >> $config_mak
1535 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1536 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1537 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1538 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1539 echo "#define TARGET_PPC 1" >> $config_h
1540 echo "#define TARGET_PPC64 1" >> $config_h
1541 echo "#define TARGET_ABI32 1" >> $config_h
1542 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1544 sh4|sh4eb)
1545 echo "TARGET_ARCH=sh4" >> $config_mak
1546 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1547 echo "#define TARGET_SH4 1" >> $config_h
1548 bflt="yes"
1549 target_nptl="yes"
1551 sparc)
1552 echo "TARGET_ARCH=sparc" >> $config_mak
1553 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1554 echo "#define TARGET_SPARC 1" >> $config_h
1556 sparc64)
1557 echo "TARGET_ARCH=sparc64" >> $config_mak
1558 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1559 echo "#define TARGET_SPARC 1" >> $config_h
1560 echo "#define TARGET_SPARC64 1" >> $config_h
1561 elfload32="yes"
1563 sparc32plus)
1564 echo "TARGET_ARCH=sparc64" >> $config_mak
1565 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1566 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1567 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1568 echo "#define TARGET_SPARC 1" >> $config_h
1569 echo "#define TARGET_SPARC64 1" >> $config_h
1570 echo "#define TARGET_ABI32 1" >> $config_h
1573 echo "Unsupported target CPU"
1574 exit 1
1576 esac
1577 if test "$target_bigendian" = "yes" ; then
1578 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1579 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1581 if test "$target_softmmu" = "yes" ; then
1582 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1583 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1585 if test "$target_user_only" = "yes" ; then
1586 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1587 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1589 if test "$target_linux_user" = "yes" ; then
1590 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1591 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1593 if test "$target_darwin_user" = "yes" ; then
1594 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1595 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1598 if test "$target_cpu" = "arm" \
1599 -o "$target_cpu" = "armeb" \
1600 -o "$target_cpu" = "m68k" \
1601 -o "$target_cpu" = "mips" \
1602 -o "$target_cpu" = "mipsel" \
1603 -o "$target_cpu" = "mipsn32" \
1604 -o "$target_cpu" = "mipsn32el" \
1605 -o "$target_cpu" = "mips64" \
1606 -o "$target_cpu" = "mips64el" \
1607 -o "$target_cpu" = "sparc" \
1608 -o "$target_cpu" = "sparc64" \
1609 -o "$target_cpu" = "sparc32plus"; then
1610 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1611 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1613 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1614 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1615 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1617 if test "$target_user_only" = "yes" \
1618 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1619 echo "#define USE_NPTL 1" >> $config_h
1621 # 32 bit ELF loader in addition to native 64 bit loader?
1622 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1623 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1624 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1627 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1629 done # for target in $targets
1631 # build tree in object directory if source path is different from current one
1632 if test "$source_path_used" = "yes" ; then
1633 DIRS="tests tests/cris slirp audio"
1634 FILES="Makefile tests/Makefile"
1635 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1636 FILES="$FILES tests/test-mmap.c"
1637 for dir in $DIRS ; do
1638 mkdir -p $dir
1639 done
1640 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1641 for f in $FILES ; do
1642 rm -f $f
1643 ln -s $source_path/$f $f
1644 done
1647 rm -f $TMPO $TMPC $TMPE $TMPS