Ia64: stop passing in global variable as argument to cmos_init()
[qemu-kvm/amd-iommu.git] / configure
blob16989f96b8888128d1fafff20a0eb92a667cc50c
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"
380 if ld --version 2>/dev/null | grep -q "GNU ld" ; then
381 LDFLAGS="$LDFLAGS -Wl,--warn-common"
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 " --audio-drv-list=LIST set audio drivers list:"
449 echo " Available drivers: $audio_possible_drivers"
450 echo " --audio-card-list=LIST set list of additional emulated audio cards"
451 echo " Available cards: ac97 adlib cs4231a gus"
452 echo " --enable-mixemu enable mixer emulation"
453 echo " --disable-brlapi disable BrlAPI"
454 echo " --disable-vnc-tls disable TLS encryption for VNC server"
455 echo " --disable-curses disable curses output"
456 echo " --disable-nptl disable usermode NPTL support"
457 echo " --enable-system enable all system emulation targets"
458 echo " --disable-system disable all system emulation targets"
459 echo " --enable-linux-user enable all linux usermode emulation targets"
460 echo " --disable-linux-user disable all linux usermode emulation targets"
461 echo " --enable-darwin-user enable all darwin usermode emulation targets"
462 echo " --disable-darwin-user disable all darwin usermode emulation targets"
463 echo " --fmod-lib path to FMOD library"
464 echo " --fmod-inc path to FMOD includes"
465 echo " --oss-lib path to OSS library"
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 # check compiler to see if we're on mingw32
494 cat > $TMPC <<EOF
495 #include <windows.h>
496 #ifndef _WIN32
497 #error not windows
498 #endif
499 int main(void) {}
502 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
503 mingw32="yes"
506 if test "$mingw32" = "yes" ; then
507 linux="no"
508 EXESUF=".exe"
509 oss="no"
510 linux_user="no"
513 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
514 AIOLIBS=
515 else
516 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
517 AIOLIBS="-lrt -lpthread"
520 # Check for gcc4, error if pre-gcc4
521 if test "$check_gcc" = "yes" ; then
522 cat > $TMPC <<EOF
523 #if __GNUC__ < 4
524 #error gcc3
525 #endif
526 int main(){return 0;}
528 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
529 echo "WARNING: \"$cc\" looks like gcc 4.x"
530 found_compat_cc="no"
531 if test "$gcc3_search" = "yes" ; then
532 echo "Looking for gcc 3.x"
533 for compat_cc in $gcc3_list ; do
534 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
535 echo "Found \"$compat_cc\""
536 cc="$cross_prefix$compat_cc"
537 found_compat_cc="yes"
538 break
540 done
541 if test "$found_compat_cc" = "no" ; then
542 echo "gcc 3.x not found!"
545 if test "$found_compat_cc" = "no" ; then
546 echo "QEMU is known to have problems when compiled with gcc 4.x"
547 echo "It is recommended that you use gcc 3.x to build QEMU"
548 echo "To use this compiler anyway, configure with --disable-gcc-check"
549 exit 1;
555 # Solaris specific configure tool chain decisions
557 if test "$solaris" = "yes" ; then
559 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
560 # override the check with --disable-gcc-check
562 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
563 solgcc=`which $cc`
564 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
565 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
566 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
567 echo "or get the latest patch from SunSolve for gcc"
568 exit 1
571 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
572 if test -z "$solinst" ; then
573 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
574 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
575 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
576 exit 1
578 if test "$solinst" = "/usr/sbin/install" ; then
579 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
580 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
581 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
582 exit 1
584 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
585 if test -z "$sol_ar" ; then
586 echo "Error: No path includes ar"
587 if test -f /usr/ccs/bin/ar ; then
588 echo "Add /usr/ccs/bin to your path and rerun configure"
590 exit 1
595 if test -z "$target_list" ; then
596 # these targets are portable
597 if [ "$softmmu" = "yes" ] ; then
598 target_list="\
599 i386-softmmu \
600 x86_64-softmmu \
601 arm-softmmu \
602 cris-softmmu \
603 m68k-softmmu \
604 mips-softmmu \
605 mipsel-softmmu \
606 mips64-softmmu \
607 mips64el-softmmu \
608 ppc-softmmu \
609 ppcemb-softmmu \
610 ppc64-softmmu \
611 sh4-softmmu \
612 sh4eb-softmmu \
613 sparc-softmmu \
616 # the following are Linux specific
617 if [ "$linux_user" = "yes" ] ; then
618 target_list="${target_list}\
619 i386-linux-user \
620 x86_64-linux-user \
621 alpha-linux-user \
622 arm-linux-user \
623 armeb-linux-user \
624 cris-linux-user \
625 m68k-linux-user \
626 mips-linux-user \
627 mipsel-linux-user \
628 ppc-linux-user \
629 ppc64-linux-user \
630 ppc64abi32-linux-user \
631 sh4-linux-user \
632 sh4eb-linux-user \
633 sparc-linux-user \
634 sparc64-linux-user \
635 sparc32plus-linux-user \
638 # the following are Darwin specific
639 if [ "$darwin_user" = "yes" ] ; then
640 target_list="$target_list i386-darwin-user ppc-darwin-user"
642 else
643 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
645 if test -z "$target_list" ; then
646 echo "No targets enabled"
647 exit 1
650 if test -z "$cross_prefix" ; then
652 # ---
653 # big/little endian test
654 cat > $TMPC << EOF
655 #include <inttypes.h>
656 int main(int argc, char ** argv){
657 volatile uint32_t i=0x01234567;
658 return (*((uint8_t*)(&i))) == 0x67;
662 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
663 $TMPE && bigendian="yes"
664 else
665 echo big/little test failed
668 else
670 # if cross compiling, cannot launch a program, so make a static guess
671 if test "$cpu" = "armv4b" \
672 -o "$cpu" = "hppa" \
673 -o "$cpu" = "m68k" \
674 -o "$cpu" = "mips" \
675 -o "$cpu" = "mips64" \
676 -o "$cpu" = "powerpc" \
677 -o "$cpu" = "s390" \
678 -o "$cpu" = "sparc" \
679 -o "$cpu" = "sparc64"; then
680 bigendian="yes"
685 # host long bits test
686 hostlongbits="32"
687 if test "$cpu" = "x86_64" \
688 -o "$cpu" = "alpha" \
689 -o "$cpu" = "ia64" \
690 -o "$cpu" = "sparc64"; then
691 hostlongbits="64"
694 # ppc specific hostlongbits selection
695 if test "$cpu" = "powerpc" ; then
696 cat > $TMPC <<EOF
697 int main(void){return sizeof(long);}
700 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
701 $TMPE
702 case $? in
703 4) hostlongbits="32";;
704 8) hostlongbits="64";;
705 *) echo "Couldn't determine bits per long value"; exit 1;;
706 esac
707 else
708 echo hostlongbits test failed
709 exit 1
713 # check gcc options support
714 cat > $TMPC <<EOF
715 int main(void) {
719 # Check host NPTL support
720 cat > $TMPC <<EOF
721 #include <sched.h>
722 #include <linux/futex.h>
723 void foo()
725 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
726 #error bork
727 #endif
731 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
733 else
734 nptl="no"
737 ##########################################
738 # KVM probe
740 if test "$kvm" = "yes" ; then
741 cat > $TMPC <<EOF
742 #include <libkvm.h>
743 #ifndef KVM_CAP_PIT
744 #error "kvm no pit capability"
745 #endif
746 int main(void) { return 0; }
748 if $cc $ARCH_CFLAGS $CFLAGS -I"$kernel_path"/include -o $TMPE ${OS_CFLAGS} $TMPC 2> /dev/null ; then
749 kvm_cap_pit="yes"
753 ##########################################
754 # SDL probe
756 sdl_too_old=no
758 if test -z "$sdl" ; then
759 sdl_config="sdl-config"
760 sdl=no
761 sdl_static=no
763 cat > $TMPC << EOF
764 #include <SDL.h>
765 #undef main /* We don't want SDL to override our main() */
766 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
768 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
769 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
770 if test "$_sdlversion" -lt 121 ; then
771 sdl_too_old=yes
772 else
773 if test "$cocoa" = "no" ; then
774 sdl=yes
778 # static link with sdl ?
779 if test "$sdl" = "yes" ; then
780 aa="no"
781 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
782 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
783 if [ "$aa" = "yes" ] ; then
784 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
787 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
788 sdl_static=yes
790 fi # static link
791 fi # sdl compile test
792 else
793 # Make sure to disable cocoa if sdl was set
794 if test "$sdl" = "yes" ; then
795 cocoa="no"
796 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
798 fi # -z $sdl
800 ##########################################
801 # VNC TLS detection
802 if test "$vnc_tls" = "yes" ; then
803 cat > $TMPC <<EOF
804 #include <gnutls/gnutls.h>
805 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
807 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
808 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
809 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
810 $vnc_tls_libs 2> /dev/null ; then
812 else
813 vnc_tls="no"
817 ##########################################
818 # vde libraries probe
819 if test "$vde" = "yes" ; then
820 cat > $TMPC << EOF
821 #include <libvdeplug.h>
822 int main(void)
824 struct vde_open_args a = {0, 0, 0};
825 vde_open("", "", &a);
826 return 0;
829 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
831 else
832 vde="no"
836 ##########################################
837 # Sound support libraries probe
839 audio_drv_probe()
841 drv=$1
842 hdr=$2
843 lib=$3
844 exp=$4
845 cfl=$5
846 cat > $TMPC << EOF
847 #include <$hdr>
848 int main(void) { $exp }
850 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
852 else
853 echo
854 echo "Error: $drv check failed"
855 echo "Make sure to have the $drv libs and headers installed."
856 echo
857 exit 1
861 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
862 for drv in $audio_drv_list; do
863 case $drv in
864 alsa)
865 audio_drv_probe $drv alsa/asoundlib.h -lasound \
866 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
869 fmod)
870 if test -z $fmod_lib || test -z $fmod_inc; then
871 echo
872 echo "Error: You must specify path to FMOD library and headers"
873 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
874 echo
875 exit 1
877 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
880 esd)
881 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
885 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
886 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
889 oss|sdl|core|wav|dsound)
890 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
894 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
895 echo
896 echo "Error: Unknown driver '$drv' selected"
897 echo "Possible drivers are: $audio_possible_drivers"
898 echo
899 exit 1
902 esac
903 done
905 ##########################################
906 # BrlAPI probe
908 if test -z "$brlapi" ; then
909 brlapi=no
910 cat > $TMPC << EOF
911 #include <brlapi.h>
912 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
914 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
915 brlapi=yes
916 fi # brlapi compile test
917 fi # -z $brlapi
919 ##########################################
920 # curses probe
922 if test "$curses" = "yes" ; then
923 curses=no
924 cat > $TMPC << EOF
925 #include <curses.h>
926 int main(void) { return curses_version(); }
928 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
929 curses=yes
931 fi # test "$curses"
933 ##########################################
934 # AIO probe
935 if test "$aio" = "yes" ; then
936 aio=no
937 cat > $TMPC << EOF
938 #include <aio.h>
939 int main(void) { return aio_write(NULL); }
941 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
942 aio=yes
946 # Check if tools are available to build documentation.
947 if [ -x "`which texi2html 2>/dev/null`" ] && \
948 [ -x "`which pod2man 2>/dev/null`" ]; then
949 build_docs="yes"
952 if test "$mingw32" = "yes" ; then
953 if test -z "$prefix" ; then
954 prefix="/c/Program Files/Qemu"
956 mansuffix=""
957 datasuffix=""
958 docsuffix=""
959 binsuffix=""
960 else
961 if test -z "$prefix" ; then
962 prefix="/usr/local"
964 mansuffix="/share/man"
965 datasuffix="/share/qemu"
966 docsuffix="/share/doc/qemu"
967 binsuffix="/bin"
970 ######################################
971 # libfdt probe
973 if test -z "$device_tree_support" -a \
974 "$cpu" = "powerpc"; then
975 device_tree_support="no"
976 cat > $TMPC << EOF
977 #include <libfdt.h>
978 /* XXX uncomment later when libfdt is built before this test */
979 //int main(void) { void *fdt; return fdt_create(fdt, 1024); }
980 int main (void) {return 0;}
982 # XXX for now do not try to link to libfdt and just check for header */
983 # if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC -lfdt 2> /dev/null ; then
984 if $cc $ARCH_CFLAGS $CFLAGS $LDFLAGS -o $TMPE $TMPC 2> /dev/null; then
985 device_tree_support="yes"
986 else
987 echo
988 echo "Error: Could not find libfdt"
989 echo "Make sure to have the libfdt libs and headers installed."
990 echo
991 exit 1
995 echo "Install prefix $prefix"
996 echo "BIOS directory $prefix$datasuffix"
997 echo "binary directory $prefix$binsuffix"
998 if test "$mingw32" = "no" ; then
999 echo "Manual directory $prefix$mansuffix"
1000 echo "ELF interp prefix $interp_prefix"
1002 echo "Source path $source_path"
1003 echo "C compiler $cc"
1004 echo "Host C compiler $host_cc"
1005 echo "ARCH_CFLAGS $ARCH_CFLAGS"
1006 echo "make $make"
1007 echo "install $install"
1008 echo "host CPU $cpu"
1009 echo "host big endian $bigendian"
1010 echo "target list $target_list"
1011 echo "gprof enabled $gprof"
1012 echo "profiler $profiler"
1013 echo "static build $static"
1014 echo "-Werror enabled $werror"
1015 if test "$darwin" = "yes" ; then
1016 echo "Cocoa support $cocoa"
1018 echo "SDL support $sdl"
1019 if test "$sdl" != "no" ; then
1020 echo "SDL static link $sdl_static"
1022 echo "curses support $curses"
1023 echo "mingw32 support $mingw32"
1024 echo "Audio drivers $audio_drv_list"
1025 echo "Extra audio cards $audio_card_list"
1026 echo "Mixer emulation $mixemu"
1027 echo "VNC TLS support $vnc_tls"
1028 if test "$vnc_tls" = "yes" ; then
1029 echo " TLS CFLAGS $vnc_tls_cflags"
1030 echo " TLS LIBS $vnc_tls_libs"
1032 if test -n "$sparc_cpu"; then
1033 echo "Target Sparc Arch $sparc_cpu"
1035 echo "kqemu support $kqemu"
1036 echo "kvm support $kvm"
1037 echo "CPU emulation $cpu_emulation"
1038 if test $cpu = "powerpc"; then
1039 echo "libfdt support $device_tree_support"
1041 echo "brlapi support $brlapi"
1042 echo "Documentation $build_docs"
1043 [ ! -z "$uname_release" ] && \
1044 echo "uname -r $uname_release"
1045 echo "NPTL support $nptl"
1046 echo "vde support $vde"
1047 echo "AIO support $aio"
1049 if test $sdl_too_old = "yes"; then
1050 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1052 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1053 echo "The error log from compiling the libSDL test is: "
1054 cat /tmp/qemu-$$-sdl-config.log
1056 rm -f /tmp/qemu-$$-sdl-config.log
1057 #if test "$sdl_static" = "no"; then
1058 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1060 config_mak="config-host.mak"
1061 config_h="config-host.h"
1063 #echo "Creating $config_mak and $config_h"
1065 test -f $config_h && mv $config_h ${config_h}~
1067 echo "# Automatically generated by configure - do not modify" > $config_mak
1068 echo "# Configured with: $0 $@" >> $config_mak
1069 echo "/* Automatically generated by configure - do not modify */" > $config_h
1071 echo "prefix=$prefix" >> $config_mak
1072 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1073 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1074 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1075 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1076 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1077 echo "MAKE=$make" >> $config_mak
1078 echo "INSTALL=$install" >> $config_mak
1079 echo "CC=$cc" >> $config_mak
1080 echo "HOST_CC=$host_cc" >> $config_mak
1081 echo "AR=$ar" >> $config_mak
1082 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1083 # XXX: only use CFLAGS and LDFLAGS ?
1084 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1085 # compilation of dyngen tool (useful for win32 build on Linux host)
1086 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1087 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1088 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1089 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1090 echo "CFLAGS=$CFLAGS" >> $config_mak
1091 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1092 echo "EXESUF=$EXESUF" >> $config_mak
1093 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1094 case "$cpu" in
1095 i386)
1096 echo "ARCH=i386" >> $config_mak
1097 echo "#define HOST_I386 1" >> $config_h
1099 x86_64)
1100 echo "ARCH=x86_64" >> $config_mak
1101 echo "#define HOST_X86_64 1" >> $config_h
1103 alpha)
1104 echo "ARCH=alpha" >> $config_mak
1105 echo "#define HOST_ALPHA 1" >> $config_h
1107 armv4b)
1108 echo "ARCH=arm" >> $config_mak
1109 echo "#define HOST_ARM 1" >> $config_h
1111 armv4l)
1112 echo "ARCH=arm" >> $config_mak
1113 echo "#define HOST_ARM 1" >> $config_h
1115 cris)
1116 echo "ARCH=cris" >> $config_mak
1117 echo "#define HOST_CRIS 1" >> $config_h
1119 hppa)
1120 echo "ARCH=hppa" >> $config_mak
1121 echo "#define HOST_HPPA 1" >> $config_h
1123 ia64)
1124 echo "ARCH=ia64" >> $config_mak
1125 echo "#define HOST_IA64 1" >> $config_h
1127 m68k)
1128 echo "ARCH=m68k" >> $config_mak
1129 echo "#define HOST_M68K 1" >> $config_h
1131 mips)
1132 echo "ARCH=mips" >> $config_mak
1133 echo "#define HOST_MIPS 1" >> $config_h
1135 mips64)
1136 echo "ARCH=mips64" >> $config_mak
1137 echo "#define HOST_MIPS64 1" >> $config_h
1139 powerpc)
1140 if test "$hostlongbits" = "32"; then
1141 echo "ARCH=ppc" >> $config_mak
1142 echo "#define HOST_PPC 1" >> $config_h
1143 else
1144 echo "ARCH=ppc64" >> $config_mak
1145 echo "#define HOST_PPC64 1" >> $config_h
1148 s390)
1149 echo "ARCH=s390" >> $config_mak
1150 echo "#define HOST_S390 1" >> $config_h
1152 sparc)
1153 echo "ARCH=sparc" >> $config_mak
1154 echo "#define HOST_SPARC 1" >> $config_h
1156 sparc64)
1157 echo "ARCH=sparc64" >> $config_mak
1158 echo "#define HOST_SPARC64 1" >> $config_h
1161 echo "Unsupported CPU = $cpu"
1162 exit 1
1164 esac
1165 if test "$bigendian" = "yes" ; then
1166 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1167 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1169 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1170 if test "$mingw32" = "yes" ; then
1171 echo "CONFIG_WIN32=yes" >> $config_mak
1172 echo "#define CONFIG_WIN32 1" >> $config_h
1173 else
1174 cat > $TMPC << EOF
1175 #include <byteswap.h>
1176 int main(void) { return bswap_32(0); }
1178 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1179 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1183 if [ "$openbsd" = "yes" ] ; then
1184 echo "#define ENOTSUP 4096" >> $config_h
1187 if test "$darwin" = "yes" ; then
1188 echo "CONFIG_DARWIN=yes" >> $config_mak
1189 echo "#define CONFIG_DARWIN 1" >> $config_h
1191 if test "$solaris" = "yes" ; then
1192 echo "CONFIG_SOLARIS=yes" >> $config_mak
1193 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1194 if test "$needs_libsunmath" = "yes" ; then
1195 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1196 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1199 if test -n "$sparc_cpu"; then
1200 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1201 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1203 if test "$gdbstub" = "yes" ; then
1204 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1205 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1207 if test "$gprof" = "yes" ; then
1208 echo "TARGET_GPROF=yes" >> $config_mak
1209 echo "#define HAVE_GPROF 1" >> $config_h
1211 if test "$static" = "yes" ; then
1212 echo "CONFIG_STATIC=yes" >> $config_mak
1213 echo "#define CONFIG_STATIC 1" >> $config_h
1215 if test $profiler = "yes" ; then
1216 echo "#define CONFIG_PROFILER 1" >> $config_h
1218 if test "$slirp" = "yes" ; then
1219 echo "CONFIG_SLIRP=yes" >> $config_mak
1220 echo "#define CONFIG_SLIRP 1" >> $config_h
1222 if test "$vde" = "yes" ; then
1223 echo "CONFIG_VDE=yes" >> $config_mak
1224 echo "#define CONFIG_VDE 1" >> $config_h
1225 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1227 for card in $audio_card_list; do
1228 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1229 echo "$def=yes" >> $config_mak
1230 echo "#define $def 1" >> $config_h
1231 done
1232 echo "#define AUDIO_DRIVERS \\" >> $config_h
1233 for drv in $audio_drv_list; do
1234 echo " &${drv}_audio_driver, \\" >>$config_h
1235 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1236 echo "$def=yes" >> $config_mak
1237 if test "$drv" = "fmod"; then
1238 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1239 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1240 elif test "$drv" = "oss"; then
1241 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1243 done
1244 echo "" >>$config_h
1245 if test "$mixemu" = "yes" ; then
1246 echo "CONFIG_MIXEMU=yes" >> $config_mak
1247 echo "#define CONFIG_MIXEMU 1" >> $config_h
1249 if test "$vnc_tls" = "yes" ; then
1250 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1251 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1252 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1253 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1255 qemu_version=`head $source_path/VERSION`
1256 echo "VERSION=$qemu_version" >>$config_mak
1257 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1258 echo "#define KVM_VERSION \"kvm-devel\"" >> $config_h
1260 echo "SRC_PATH=$source_path" >> $config_mak
1261 if [ "$source_path_used" = "yes" ]; then
1262 echo "VPATH=$source_path" >> $config_mak
1264 echo "TARGET_DIRS=$target_list" >> $config_mak
1265 if [ "$build_docs" = "yes" ] ; then
1266 echo "BUILD_DOCS=yes" >> $config_mak
1268 if test "$static" = "yes"; then
1269 sdl1=$sdl_static
1270 else
1271 sdl1=$sdl
1273 if test "$sdl1" = "yes" ; then
1274 echo "#define CONFIG_SDL 1" >> $config_h
1275 echo "CONFIG_SDL=yes" >> $config_mak
1276 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1277 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1278 else
1279 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1281 if [ "${aa}" = "yes" ] ; then
1282 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1283 else
1284 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1287 if test "$cocoa" = "yes" ; then
1288 echo "#define CONFIG_COCOA 1" >> $config_h
1289 echo "CONFIG_COCOA=yes" >> $config_mak
1291 if test "$curses" = "yes" ; then
1292 echo "#define CONFIG_CURSES 1" >> $config_h
1293 echo "CONFIG_CURSES=yes" >> $config_mak
1294 echo "CURSES_LIBS=-lcurses" >> $config_mak
1296 if test "$brlapi" = "yes" ; then
1297 echo "CONFIG_BRLAPI=yes" >> $config_mak
1298 echo "#define CONFIG_BRLAPI 1" >> $config_h
1299 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1301 if test "$aio" = "yes" ; then
1302 echo "#define CONFIG_AIO 1" >> $config_h
1303 echo "CONFIG_AIO=yes" >> $config_mak
1306 # XXX: suppress that
1307 if [ "$bsd" = "yes" ] ; then
1308 echo "#define O_LARGEFILE 0" >> $config_h
1309 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1310 echo "#define _BSD 1" >> $config_h
1313 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1315 tools=
1316 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1317 tools="qemu-img\$(EXESUF) $tools"
1318 if [ "$linux" = "yes" ] ; then
1319 tools="qemu-nbd\$(EXESUF) $tools"
1322 echo "TOOLS=$tools" >> $config_mak
1324 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1326 for target in $target_list; do
1327 target_dir="$target"
1328 config_mak=$target_dir/config.mak
1329 config_h=$target_dir/config.h
1330 target_cpu=`echo $target | cut -d '-' -f 1`
1331 target_bigendian="no"
1332 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1333 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1334 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1335 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1336 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1337 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1338 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1339 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1340 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1341 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1342 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1343 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1344 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1345 target_softmmu="no"
1346 target_user_only="no"
1347 target_linux_user="no"
1348 target_darwin_user="no"
1349 case "$target" in
1350 ${target_cpu}-softmmu)
1351 target_softmmu="yes"
1353 ${target_cpu}-linux-user)
1354 target_user_only="yes"
1355 target_linux_user="yes"
1357 ${target_cpu}-darwin-user)
1358 target_user_only="yes"
1359 target_darwin_user="yes"
1362 echo "ERROR: Target '$target' not recognised"
1363 exit 1
1365 esac
1367 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1368 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1369 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1370 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1371 echo "Note that this will disable all output from the virtual graphics card"
1372 echo "except through VNC or curses."
1373 exit 1;
1376 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1378 test -f $config_h && mv $config_h ${config_h}~
1380 mkdir -p $target_dir
1381 mkdir -p $target_dir/fpu
1382 mkdir -p $target_dir/tcg
1383 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1384 mkdir -p $target_dir/nwfpe
1388 # don't use ln -sf as not all "ln -sf" over write the file/link
1390 rm -f $target_dir/Makefile
1391 ln -s $source_path/Makefile.target $target_dir/Makefile
1394 echo "# Automatically generated by configure - do not modify" > $config_mak
1395 echo "/* Automatically generated by configure - do not modify */" > $config_h
1398 echo "include ../config-host.mak" >> $config_mak
1399 echo "#include \"../config-host.h\"" >> $config_h
1401 bflt="no"
1402 elfload32="no"
1403 target_nptl="no"
1404 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1405 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1407 disable_cpu_emulation() {
1408 if test $cpu_emulation = "no"; then
1409 echo "#define NO_CPU_EMULATION 1" >> $config_h
1410 echo "NO_CPU_EMULATION=1" >> $config_mak
1414 configure_kvm() {
1415 if test $kvm = "yes" -a "$target_softmmu" = "yes" -a \
1416 \( "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "ia64" -o "$cpu" = "powerpc" \); then
1417 echo "#define USE_KVM 1" >> $config_h
1418 echo "USE_KVM=1" >> $config_mak
1419 echo "CONFIG_KVM_KERNEL_INC=$kernel_path/include" >> $config_mak
1420 if test $kvm_cap_pit = "yes" ; then
1421 echo "USE_KVM_PIT=1" >> $config_mak
1422 echo "#define USE_KVM_PIT 1" >> $config_h
1424 disable_cpu_emulation
1428 case "$target_cpu" in
1429 i386)
1430 echo "TARGET_ARCH=i386" >> $config_mak
1431 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1432 echo "#define TARGET_I386 1" >> $config_h
1433 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1434 then
1435 echo "#define USE_KQEMU 1" >> $config_h
1437 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1438 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1439 then
1440 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1441 else
1442 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1444 configure_kvm
1446 x86_64)
1447 echo "TARGET_ARCH=x86_64" >> $config_mak
1448 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1449 echo "#define TARGET_I386 1" >> $config_h
1450 echo "#define TARGET_X86_64 1" >> $config_h
1451 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1452 then
1453 echo "#define USE_KQEMU 1" >> $config_h
1455 configure_kvm
1457 ia64)
1458 echo "TARGET_ARCH=ia64" >> $config_mak
1459 echo "#define TARGET_ARCH \"ia64\"" >> $config_h
1460 echo "#define TARGET_IA64 1" >> $config_h
1461 configure_kvm
1463 alpha)
1464 echo "TARGET_ARCH=alpha" >> $config_mak
1465 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1466 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1467 echo "#define TARGET_ALPHA 1" >> $config_h
1468 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1470 arm|armeb)
1471 echo "TARGET_ARCH=arm" >> $config_mak
1472 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1473 echo "#define TARGET_ARM 1" >> $config_h
1474 bflt="yes"
1475 target_nptl="yes"
1477 cris)
1478 echo "TARGET_ARCH=cris" >> $config_mak
1479 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1480 echo "#define TARGET_CRIS 1" >> $config_h
1482 m68k)
1483 echo "TARGET_ARCH=m68k" >> $config_mak
1484 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1485 echo "#define TARGET_M68K 1" >> $config_h
1486 bflt="yes"
1488 mips|mipsel)
1489 echo "TARGET_ARCH=mips" >> $config_mak
1490 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1491 echo "#define TARGET_MIPS 1" >> $config_h
1492 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1494 mipsn32|mipsn32el)
1495 echo "TARGET_ARCH=mipsn32" >> $config_mak
1496 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1497 echo "#define TARGET_MIPS 1" >> $config_h
1498 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1500 mips64|mips64el)
1501 echo "TARGET_ARCH=mips64" >> $config_mak
1502 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1503 echo "#define TARGET_MIPS 1" >> $config_h
1504 echo "#define TARGET_MIPS64 1" >> $config_h
1505 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1507 ppc)
1508 echo "TARGET_ARCH=ppc" >> $config_mak
1509 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1510 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1511 echo "#define TARGET_PPC 1" >> $config_h
1512 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1514 ppcemb)
1515 echo "TARGET_ARCH=ppcemb" >> $config_mak
1516 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1517 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1518 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1519 echo "#define TARGET_PPC 1" >> $config_h
1520 echo "#define TARGET_PPCEMB 1" >> $config_h
1521 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1522 if test "$device_tree_support" = "yes" ; then
1523 echo "#define CONFIG_LIBFDT 1" >> $config_h
1524 echo "CONFIG_LIBFDT=1" >> $config_mak
1526 configure_kvm
1528 ppc64)
1529 echo "TARGET_ARCH=ppc64" >> $config_mak
1530 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1531 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1532 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1533 echo "#define TARGET_PPC 1" >> $config_h
1534 echo "#define TARGET_PPC64 1" >> $config_h
1535 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1537 ppc64abi32)
1538 echo "TARGET_ARCH=ppc64" >> $config_mak
1539 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1540 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1541 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1542 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1543 echo "#define TARGET_PPC 1" >> $config_h
1544 echo "#define TARGET_PPC64 1" >> $config_h
1545 echo "#define TARGET_ABI32 1" >> $config_h
1546 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1548 sh4|sh4eb)
1549 echo "TARGET_ARCH=sh4" >> $config_mak
1550 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1551 echo "#define TARGET_SH4 1" >> $config_h
1552 bflt="yes"
1553 target_nptl="yes"
1555 sparc)
1556 echo "TARGET_ARCH=sparc" >> $config_mak
1557 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1558 echo "#define TARGET_SPARC 1" >> $config_h
1560 sparc64)
1561 echo "TARGET_ARCH=sparc64" >> $config_mak
1562 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1563 echo "#define TARGET_SPARC 1" >> $config_h
1564 echo "#define TARGET_SPARC64 1" >> $config_h
1565 elfload32="yes"
1567 sparc32plus)
1568 echo "TARGET_ARCH=sparc64" >> $config_mak
1569 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1570 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1571 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1572 echo "#define TARGET_SPARC 1" >> $config_h
1573 echo "#define TARGET_SPARC64 1" >> $config_h
1574 echo "#define TARGET_ABI32 1" >> $config_h
1577 echo "Unsupported target CPU"
1578 exit 1
1580 esac
1581 if test "$target_bigendian" = "yes" ; then
1582 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1583 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1585 if test "$target_softmmu" = "yes" ; then
1586 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1587 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1589 if test "$target_user_only" = "yes" ; then
1590 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1591 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1593 if test "$target_linux_user" = "yes" ; then
1594 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1595 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1597 if test "$target_darwin_user" = "yes" ; then
1598 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1599 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1602 if test "$target_cpu" = "arm" \
1603 -o "$target_cpu" = "armeb" \
1604 -o "$target_cpu" = "m68k" \
1605 -o "$target_cpu" = "mips" \
1606 -o "$target_cpu" = "mipsel" \
1607 -o "$target_cpu" = "mipsn32" \
1608 -o "$target_cpu" = "mipsn32el" \
1609 -o "$target_cpu" = "mips64" \
1610 -o "$target_cpu" = "mips64el" \
1611 -o "$target_cpu" = "sparc" \
1612 -o "$target_cpu" = "sparc64" \
1613 -o "$target_cpu" = "sparc32plus"; then
1614 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1615 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1617 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1618 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1619 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1621 if test "$target_user_only" = "yes" \
1622 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1623 echo "#define USE_NPTL 1" >> $config_h
1625 # 32 bit ELF loader in addition to native 64 bit loader?
1626 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1627 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1628 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1631 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1633 done # for target in $targets
1635 # build tree in object directory if source path is different from current one
1636 if test "$source_path_used" = "yes" ; then
1637 DIRS="tests tests/cris slirp audio"
1638 FILES="Makefile tests/Makefile"
1639 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1640 FILES="$FILES tests/test-mmap.c"
1641 for dir in $DIRS ; do
1642 mkdir -p $dir
1643 done
1644 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1645 for f in $FILES ; do
1646 rm -f $f
1647 ln -s $source_path/$f $f
1648 done
1651 rm -f $TMPO $TMPC $TMPE $TMPS