linux-user: Add readahead syscall
[qemu/qemu-JZ.git] / configure
blobf14739be87be13b42b1bdf885ffdd1d0dafbde8d
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"
18 TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
20 # default parameters
21 prefix=""
22 interp_prefix="/usr/gnemul/qemu-%M"
23 static="no"
24 cross_prefix=""
25 cc="gcc"
26 gcc3_search="yes"
27 gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
28 audio_drv_list=""
29 audio_card_list=""
30 host_cc="gcc"
31 ar="ar"
32 make="make"
33 install="install"
34 strip="strip"
35 cpu=`uname -m`
36 target_list=""
37 case "$cpu" in
38 i386|i486|i586|i686|i86pc|BePC)
39 cpu="i386"
41 x86_64|amd64)
42 cpu="x86_64"
44 alpha)
45 cpu="alpha"
47 armv*b)
48 cpu="armv4b"
50 armv*l)
51 cpu="armv4l"
53 cris)
54 cpu="cris"
56 parisc|parisc64)
57 cpu="hppa"
59 ia64)
60 cpu="ia64"
62 m68k)
63 cpu="m68k"
65 mips)
66 cpu="mips"
68 mips64)
69 cpu="mips64"
71 "Power Macintosh"|ppc|ppc64)
72 cpu="powerpc"
74 s390*)
75 cpu="s390"
77 sparc|sun4[cdmuv])
78 cpu="sparc"
80 sparc64)
81 cpu="sparc64"
84 cpu="unknown"
86 esac
87 gprof="no"
88 sparse="no"
89 bigendian="no"
90 mingw32="no"
91 EXESUF=""
92 gdbstub="yes"
93 slirp="yes"
94 vde="yes"
95 fmod_lib=""
96 fmod_inc=""
97 oss_lib=""
98 vnc_tls="yes"
99 bsd="no"
100 linux="no"
101 kqemu="no"
102 profiler="no"
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 bluez="yes"
117 # OS specific
118 targetos=`uname -s`
119 case $targetos in
120 CYGWIN*)
121 mingw32="yes"
122 OS_CFLAGS="-mno-cygwin"
123 if [ "$cpu" = "i386" ] ; then
124 kqemu="yes"
126 audio_possible_drivers="sdl"
128 MINGW32*)
129 mingw32="yes"
130 if [ "$cpu" = "i386" ] ; then
131 kqemu="yes"
133 audio_possible_drivers="dsound sdl fmod"
135 GNU/kFreeBSD)
136 audio_drv_list="oss"
137 audio_possible_drivers="oss sdl esd pa"
138 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
139 kqemu="yes"
142 FreeBSD)
143 bsd="yes"
144 audio_drv_list="oss"
145 audio_possible_drivers="oss sdl esd pa"
146 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
147 kqemu="yes"
150 NetBSD)
151 bsd="yes"
152 audio_drv_list="oss"
153 audio_possible_drivers="oss sdl esd"
155 OpenBSD)
156 bsd="yes"
157 openbsd="yes"
158 audio_drv_list="oss"
159 audio_possible_drivers="oss sdl esd"
160 oss_lib="-lossaudio"
162 Darwin)
163 bsd="yes"
164 darwin="yes"
165 darwin_user="yes"
166 cocoa="yes"
167 audio_drv_list="coreaudio"
168 audio_possible_drivers="coreaudio sdl fmod"
169 OS_CFLAGS="-mdynamic-no-pic"
170 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
172 SunOS)
173 solaris="yes"
174 make="gmake"
175 install="ginstall"
176 needs_libsunmath="no"
177 solarisrev=`uname -r | cut -f2 -d.`
178 # have to select again, because `uname -m` returns i86pc
179 # even on an x86_64 box.
180 solariscpu=`isainfo -k`
181 if test "${solariscpu}" = "amd64" ; then
182 cpu="x86_64"
184 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
185 if test "$solarisrev" -le 9 ; then
186 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
187 needs_libsunmath="yes"
188 else
189 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
190 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
191 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
192 echo "Studio 11 can be downloaded from www.sun.com."
193 exit 1
196 if test "$solarisrev" -ge 9 ; then
197 kqemu="yes"
200 if test -f /usr/include/sys/soundcard.h ; then
201 audio_drv_list="oss"
203 audio_possible_drivers="oss sdl"
206 audio_drv_list="oss"
207 audio_possible_drivers="oss alsa sdl esd pa"
208 linux="yes"
209 linux_user="yes"
210 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
211 kqemu="yes"
212 audio_possible_drivers="$audio_possible_drivers fmod"
215 esac
217 if [ "$bsd" = "yes" ] ; then
218 if [ "$darwin" != "yes" ] ; then
219 make="gmake"
223 # find source path
224 source_path=`dirname "$0"`
225 source_path_used="no"
226 workdir=`pwd`
227 if [ -z "$source_path" ]; then
228 source_path=$workdir
229 else
230 source_path=`cd "$source_path"; pwd`
232 [ -f "$workdir/vl.c" ] || source_path_used="yes"
234 werror="no"
235 # generate compile errors on warnings for development builds
236 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
237 #werror="yes";
240 for opt do
241 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
242 case "$opt" in
243 --help|-h) show_help=yes
245 --prefix=*) prefix="$optarg"
247 --interp-prefix=*) interp_prefix="$optarg"
249 --source-path=*) source_path="$optarg"
250 source_path_used="yes"
252 --cross-prefix=*) cross_prefix="$optarg"
254 --cc=*) cc="$optarg"
255 gcc3_search="no"
257 --host-cc=*) host_cc="$optarg"
259 --make=*) make="$optarg"
261 --install=*) install="$optarg"
263 --extra-cflags=*) CFLAGS="$optarg"
265 --extra-ldflags=*) LDFLAGS="$optarg"
267 --cpu=*) cpu="$optarg"
269 --target-list=*) target_list="$optarg"
271 --enable-gprof) gprof="yes"
273 --static) static="yes"
275 --disable-sdl) sdl="no"
277 --fmod-lib=*) fmod_lib="$optarg"
279 --fmod-inc=*) fmod_inc="$optarg"
281 --oss-lib=*) oss_lib="$optarg"
283 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
285 --audio-drv-list=*) audio_drv_list="$optarg"
287 --enable-sparse) sparse="yes"
289 --disable-sparse) sparse="no"
291 --disable-vnc-tls) vnc_tls="no"
293 --disable-slirp) slirp="no"
295 --disable-vde) vde="no"
297 --disable-kqemu) kqemu="no"
299 --disable-brlapi) brlapi="no"
301 --disable-bluez) bluez="no"
303 --enable-profiler) profiler="yes"
305 --enable-cocoa)
306 cocoa="yes" ;
307 sdl="no" ;
308 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
310 --disable-gfx-check) check_gfx="no"
312 --disable-gcc-check) check_gcc="no"
314 --disable-system) softmmu="no"
316 --enable-system) softmmu="yes"
318 --disable-linux-user) linux_user="no"
320 --enable-linux-user) linux_user="yes"
322 --disable-darwin-user) darwin_user="no"
324 --enable-darwin-user) darwin_user="yes"
326 --enable-uname-release=*) uname_release="$optarg"
328 --sparc_cpu=*)
329 sparc_cpu="$optarg"
330 case $sparc_cpu in
331 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
332 target_cpu="sparc"; cpu="sparc" ;;
333 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
334 target_cpu="sparc"; cpu="sparc" ;;
335 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
336 target_cpu="sparc64"; cpu="sparc64" ;;
337 *) echo "undefined SPARC architecture. Exiting";exit 1;;
338 esac
340 --enable-werror) werror="yes"
342 --disable-werror) werror="no"
344 --disable-curses) curses="no"
346 --disable-nptl) nptl="no"
348 --enable-mixemu) mixemu="yes"
350 --disable-aio) aio="no"
352 *) echo "ERROR: unknown option $opt"; show_help="yes"
354 esac
355 done
357 # default flags for all hosts
358 CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
359 CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
360 LDFLAGS="$LDFLAGS -g"
361 if test "$werror" = "yes" ; then
362 CFLAGS="$CFLAGS -Werror"
365 if ld --version 2>/dev/null | grep -q "GNU ld" ; then
366 LDFLAGS="$LDFLAGS -Wl,--warn-common"
370 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
371 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
373 case "$cpu" in
374 sparc) if test -z "$sparc_cpu" ; then
375 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
376 ARCH_LDFLAGS="-m32"
377 else
378 ARCH_CFLAGS="${SP_CFLAGS}"
379 ARCH_LDFLAGS="${SP_LDFLAGS}"
382 sparc64) if test -z "$sparc_cpu" ; then
383 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
384 ARCH_LDFLAGS="-m64"
385 else
386 ARCH_CFLAGS="${SP_CFLAGS}"
387 ARCH_LDFLAGS="${SP_LDFLAGS}"
390 s390)
391 ARCH_CFLAGS="-march=z900"
393 i386)
394 ARCH_CFLAGS="-m32"
395 ARCH_LDFLAGS="-m32"
397 x86_64)
398 ARCH_CFLAGS="-m64"
399 ARCH_LDFLAGS="-m64"
401 esac
403 if test x"$show_help" = x"yes" ; then
404 cat << EOF
406 Usage: configure [options]
407 Options: [defaults in brackets after descriptions]
410 echo "Standard options:"
411 echo " --help print this message"
412 echo " --prefix=PREFIX install in PREFIX [$prefix]"
413 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
414 echo " use %M for cpu name [$interp_prefix]"
415 echo " --target-list=LIST set target list [$target_list]"
416 echo ""
417 echo "kqemu kernel acceleration support:"
418 echo " --disable-kqemu disable kqemu support"
419 echo ""
420 echo "Advanced options (experts only):"
421 echo " --source-path=PATH path of source code [$source_path]"
422 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
423 echo " --cc=CC use C compiler CC [$cc]"
424 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
425 echo " --make=MAKE use specified make [$make]"
426 echo " --install=INSTALL use specified install [$install]"
427 echo " --static enable static build [$static]"
428 echo " --enable-sparse enable sparse checker"
429 echo " --disable-sparse disable sparse checker (default)"
430 echo " --disable-werror disable compilation abort on warning"
431 echo " --disable-sdl disable SDL"
432 echo " --enable-cocoa enable COCOA (Mac OS X only)"
433 echo " --audio-drv-list=LIST set audio drivers list:"
434 echo " Available drivers: $audio_possible_drivers"
435 echo " --audio-card-list=LIST set list of additional emulated audio cards"
436 echo " Available cards: ac97 adlib cs4231a gus"
437 echo " --enable-mixemu enable mixer emulation"
438 echo " --disable-brlapi disable BrlAPI"
439 echo " --disable-vnc-tls disable TLS encryption for VNC server"
440 echo " --disable-curses disable curses output"
441 echo " --disable-bluez disable bluez stack connectivity"
442 echo " --disable-nptl disable usermode NPTL support"
443 echo " --enable-system enable all system emulation targets"
444 echo " --disable-system disable all system emulation targets"
445 echo " --enable-linux-user enable all linux usermode emulation targets"
446 echo " --disable-linux-user disable all linux usermode emulation targets"
447 echo " --enable-darwin-user enable all darwin usermode emulation targets"
448 echo " --disable-darwin-user disable all darwin usermode emulation targets"
449 echo " --fmod-lib path to FMOD library"
450 echo " --fmod-inc path to FMOD includes"
451 echo " --oss-lib path to OSS library"
452 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
453 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
454 echo " --disable-vde disable support for vde network"
455 echo " --disable-aio disable AIO support"
456 echo ""
457 echo "NOTE: The object files are built at the place where configure is launched"
458 exit 1
461 cc="${cross_prefix}${cc}"
462 ar="${cross_prefix}${ar}"
463 strip="${cross_prefix}${strip}"
465 # check that the C compiler works.
466 cat > $TMPC <<EOF
467 int main(void) {}
470 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
471 : C compiler works ok
472 else
473 echo "ERROR: \"$cc\" either does not exist or does not work"
474 exit 1
477 # check compiler to see if we're on mingw32
478 cat > $TMPC <<EOF
479 #include <windows.h>
480 #ifndef _WIN32
481 #error not windows
482 #endif
483 int main(void) {}
486 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
487 mingw32="yes"
490 if test "$mingw32" = "yes" ; then
491 linux="no"
492 EXESUF=".exe"
493 oss="no"
494 linux_user="no"
497 if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
498 AIOLIBS=
499 elif [ "$bsd" = "yes" ]; then
500 AIOLIBS="-lpthread"
501 else
502 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
503 AIOLIBS="-lrt -lpthread"
506 # Check for gcc4, error if pre-gcc4
507 if test "$check_gcc" = "yes" ; then
508 cat > $TMPC <<EOF
509 #if __GNUC__ < 4
510 #error gcc3
511 #endif
512 int main(){return 0;}
514 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
515 echo "WARNING: \"$cc\" looks like gcc 4.x"
516 found_compat_cc="no"
517 if test "$gcc3_search" = "yes" ; then
518 echo "Looking for gcc 3.x"
519 for compat_cc in $gcc3_list ; do
520 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
521 echo "Found \"$compat_cc\""
522 cc="$cross_prefix$compat_cc"
523 found_compat_cc="yes"
524 break
526 done
527 if test "$found_compat_cc" = "no" ; then
528 echo "gcc 3.x not found!"
531 if test "$found_compat_cc" = "no" ; then
532 echo "QEMU is known to have problems when compiled with gcc 4.x"
533 echo "It is recommended that you use gcc 3.x to build QEMU"
534 echo "To use this compiler anyway, configure with --disable-gcc-check"
535 exit 1;
540 if test ! -x "$(which cgcc 2>/dev/null)"; then
541 sparse="no"
545 # Solaris specific configure tool chain decisions
547 if test "$solaris" = "yes" ; then
549 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
550 # override the check with --disable-gcc-check
552 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
553 solgcc=`which $cc`
554 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
555 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
556 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
557 echo "or get the latest patch from SunSolve for gcc"
558 exit 1
561 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
562 if test -z "$solinst" ; then
563 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
564 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
565 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
566 exit 1
568 if test "$solinst" = "/usr/sbin/install" ; then
569 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
570 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
571 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
572 exit 1
574 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
575 if test -z "$sol_ar" ; then
576 echo "Error: No path includes ar"
577 if test -f /usr/ccs/bin/ar ; then
578 echo "Add /usr/ccs/bin to your path and rerun configure"
580 exit 1
585 if test -z "$target_list" ; then
586 # these targets are portable
587 if [ "$softmmu" = "yes" ] ; then
588 target_list="\
589 i386-softmmu \
590 x86_64-softmmu \
591 arm-softmmu \
592 cris-softmmu \
593 m68k-softmmu \
594 mips-softmmu \
595 mipsel-softmmu \
596 mips64-softmmu \
597 mips64el-softmmu \
598 ppc-softmmu \
599 ppcemb-softmmu \
600 ppc64-softmmu \
601 sh4-softmmu \
602 sh4eb-softmmu \
603 sparc-softmmu \
606 # the following are Linux specific
607 if [ "$linux_user" = "yes" ] ; then
608 target_list="${target_list}\
609 i386-linux-user \
610 x86_64-linux-user \
611 alpha-linux-user \
612 arm-linux-user \
613 armeb-linux-user \
614 cris-linux-user \
615 m68k-linux-user \
616 mips-linux-user \
617 mipsel-linux-user \
618 ppc-linux-user \
619 ppc64-linux-user \
620 ppc64abi32-linux-user \
621 sh4-linux-user \
622 sh4eb-linux-user \
623 sparc-linux-user \
624 sparc64-linux-user \
625 sparc32plus-linux-user \
628 # the following are Darwin specific
629 if [ "$darwin_user" = "yes" ] ; then
630 target_list="$target_list i386-darwin-user ppc-darwin-user"
632 else
633 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
635 if test -z "$target_list" ; then
636 echo "No targets enabled"
637 exit 1
640 if test -z "$cross_prefix" ; then
642 # ---
643 # big/little endian test
644 cat > $TMPC << EOF
645 #include <inttypes.h>
646 int main(int argc, char ** argv){
647 volatile uint32_t i=0x01234567;
648 return (*((uint8_t*)(&i))) == 0x67;
652 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
653 $TMPE && bigendian="yes"
654 else
655 echo big/little test failed
658 else
660 # if cross compiling, cannot launch a program, so make a static guess
661 if test "$cpu" = "armv4b" \
662 -o "$cpu" = "hppa" \
663 -o "$cpu" = "m68k" \
664 -o "$cpu" = "mips" \
665 -o "$cpu" = "mips64" \
666 -o "$cpu" = "powerpc" \
667 -o "$cpu" = "s390" \
668 -o "$cpu" = "sparc" \
669 -o "$cpu" = "sparc64"; then
670 bigendian="yes"
675 # host long bits test
676 hostlongbits="32"
677 if test "$cpu" = "x86_64" \
678 -o "$cpu" = "alpha" \
679 -o "$cpu" = "ia64" \
680 -o "$cpu" = "sparc64"; then
681 hostlongbits="64"
684 # ppc specific hostlongbits selection
685 if test "$cpu" = "powerpc" ; then
686 if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
687 grep -q __powerpc64__ $TMPI && hostlongbits=64
688 else
689 echo hostlongbits test failed
690 exit 1
694 # check gcc options support
695 cat > $TMPC <<EOF
696 int main(void) {
700 # Check host NPTL support
701 cat > $TMPC <<EOF
702 #include <sched.h>
703 #include <linux/futex.h>
704 void foo()
706 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
707 #error bork
708 #endif
712 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
714 else
715 nptl="no"
718 ##########################################
719 # zlib check
721 cat > $TMPC << EOF
722 #include <zlib.h>
723 int main(void) { zlibVersion(); return 0; }
725 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz 2> /dev/null ; then
727 else
728 echo
729 echo "Error: zlib check failed"
730 echo "Make sure to have the zlib libs and headers installed."
731 echo
732 exit 1
735 ##########################################
736 # SDL probe
738 sdl_too_old=no
740 if test -z "$sdl" ; then
741 sdl_config="sdl-config"
742 sdl=no
743 sdl_static=no
745 cat > $TMPC << EOF
746 #include <SDL.h>
747 #undef main /* We don't want SDL to override our main() */
748 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
750 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
751 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
752 if test "$_sdlversion" -lt 121 ; then
753 sdl_too_old=yes
754 else
755 if test "$cocoa" = "no" ; then
756 sdl=yes
760 # static link with sdl ?
761 if test "$sdl" = "yes" ; then
762 aa="no"
763 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
764 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
765 if [ "$aa" = "yes" ] ; then
766 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
769 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
770 sdl_static=yes
772 fi # static link
773 fi # sdl compile test
774 else
775 # Make sure to disable cocoa if sdl was set
776 if test "$sdl" = "yes" ; then
777 cocoa="no"
778 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
780 fi # -z $sdl
782 ##########################################
783 # VNC TLS detection
784 if test "$vnc_tls" = "yes" ; then
785 cat > $TMPC <<EOF
786 #include <gnutls/gnutls.h>
787 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
789 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
790 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
791 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
792 $vnc_tls_libs 2> /dev/null ; then
794 else
795 vnc_tls="no"
799 ##########################################
800 # vde libraries probe
801 if test "$vde" = "yes" ; then
802 cat > $TMPC << EOF
803 #include <libvdeplug.h>
804 int main(void)
806 struct vde_open_args a = {0, 0, 0};
807 vde_open("", "", &a);
808 return 0;
811 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
813 else
814 vde="no"
818 ##########################################
819 # Sound support libraries probe
821 audio_drv_probe()
823 drv=$1
824 hdr=$2
825 lib=$3
826 exp=$4
827 cfl=$5
828 cat > $TMPC << EOF
829 #include <$hdr>
830 int main(void) { $exp }
832 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
834 else
835 echo
836 echo "Error: $drv check failed"
837 echo "Make sure to have the $drv libs and headers installed."
838 echo
839 exit 1
843 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
844 for drv in $audio_drv_list; do
845 case $drv in
846 alsa)
847 audio_drv_probe $drv alsa/asoundlib.h -lasound \
848 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
851 fmod)
852 if test -z $fmod_lib || test -z $fmod_inc; then
853 echo
854 echo "Error: You must specify path to FMOD library and headers"
855 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
856 echo
857 exit 1
859 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
862 esd)
863 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
867 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
868 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
871 oss|sdl|core|wav|dsound)
872 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
876 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
877 echo
878 echo "Error: Unknown driver '$drv' selected"
879 echo "Possible drivers are: $audio_possible_drivers"
880 echo
881 exit 1
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 # bluez support probe
917 if test "$bluez" = "yes" ; then
918 `pkg-config bluez` || bluez="no"
920 if test "$bluez" = "yes" ; then
921 cat > $TMPC << EOF
922 #include <bluetooth/bluetooth.h>
923 int main(void) { return bt_error(0); }
925 bluez_cflags=`pkg-config --cflags bluez`
926 bluez_libs=`pkg-config --libs bluez`
927 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
928 $bluez_libs 2> /dev/null ; then
930 else
931 bluez="no"
935 ##########################################
936 # AIO probe
937 if test "$aio" = "yes" ; then
938 aio=no
939 cat > $TMPC << EOF
940 #include <aio.h>
941 int main(void) { return aio_write(NULL); }
943 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
944 aio=yes
948 # Check if tools are available to build documentation.
949 if [ -x "`which texi2html 2>/dev/null`" ] && \
950 [ -x "`which pod2man 2>/dev/null`" ]; then
951 build_docs="yes"
954 if test "$mingw32" = "yes" ; then
955 if test -z "$prefix" ; then
956 prefix="/c/Program Files/Qemu"
958 mansuffix=""
959 datasuffix=""
960 docsuffix=""
961 binsuffix=""
962 else
963 if test -z "$prefix" ; then
964 prefix="/usr/local"
966 mansuffix="/share/man"
967 datasuffix="/share/qemu"
968 docsuffix="/share/doc/qemu"
969 binsuffix="/bin"
972 echo "Install prefix $prefix"
973 echo "BIOS directory $prefix$datasuffix"
974 echo "binary directory $prefix$binsuffix"
975 if test "$mingw32" = "no" ; then
976 echo "Manual directory $prefix$mansuffix"
977 echo "ELF interp prefix $interp_prefix"
979 echo "Source path $source_path"
980 echo "C compiler $cc"
981 echo "Host C compiler $host_cc"
982 echo "ARCH_CFLAGS $ARCH_CFLAGS"
983 echo "make $make"
984 echo "install $install"
985 echo "host CPU $cpu"
986 echo "host big endian $bigendian"
987 echo "target list $target_list"
988 echo "gprof enabled $gprof"
989 echo "sparse enabled $sparse"
990 echo "profiler $profiler"
991 echo "static build $static"
992 echo "-Werror enabled $werror"
993 if test "$darwin" = "yes" ; then
994 echo "Cocoa support $cocoa"
996 echo "SDL support $sdl"
997 if test "$sdl" != "no" ; then
998 echo "SDL static link $sdl_static"
1000 echo "curses support $curses"
1001 echo "mingw32 support $mingw32"
1002 echo "Audio drivers $audio_drv_list"
1003 echo "Extra audio cards $audio_card_list"
1004 echo "Mixer emulation $mixemu"
1005 echo "VNC TLS support $vnc_tls"
1006 if test "$vnc_tls" = "yes" ; then
1007 echo " TLS CFLAGS $vnc_tls_cflags"
1008 echo " TLS LIBS $vnc_tls_libs"
1010 if test -n "$sparc_cpu"; then
1011 echo "Target Sparc Arch $sparc_cpu"
1013 echo "kqemu support $kqemu"
1014 echo "brlapi support $brlapi"
1015 echo "Documentation $build_docs"
1016 [ ! -z "$uname_release" ] && \
1017 echo "uname -r $uname_release"
1018 echo "NPTL support $nptl"
1019 echo "vde support $vde"
1020 echo "AIO support $aio"
1022 if test $sdl_too_old = "yes"; then
1023 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1025 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1026 echo "The error log from compiling the libSDL test is: "
1027 cat /tmp/qemu-$$-sdl-config.log
1029 rm -f /tmp/qemu-$$-sdl-config.log
1030 #if test "$sdl_static" = "no"; then
1031 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1033 config_mak="config-host.mak"
1034 config_h="config-host.h"
1036 #echo "Creating $config_mak and $config_h"
1038 test -f $config_h && mv $config_h ${config_h}~
1040 echo "# Automatically generated by configure - do not modify" > $config_mak
1041 echo "# Configured with: $0 $@" >> $config_mak
1042 echo "/* Automatically generated by configure - do not modify */" > $config_h
1044 echo "prefix=$prefix" >> $config_mak
1045 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1046 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1047 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1048 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1049 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1050 echo "MAKE=$make" >> $config_mak
1051 echo "INSTALL=$install" >> $config_mak
1052 echo "CC=$cc" >> $config_mak
1053 echo "HOST_CC=$host_cc" >> $config_mak
1054 echo "AR=$ar" >> $config_mak
1055 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1056 # XXX: only use CFLAGS and LDFLAGS ?
1057 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1058 # compilation of dyngen tool (useful for win32 build on Linux host)
1059 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1060 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1061 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1062 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1063 echo "CFLAGS=$CFLAGS" >> $config_mak
1064 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1065 echo "EXESUF=$EXESUF" >> $config_mak
1066 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1067 case "$cpu" in
1068 i386)
1069 echo "ARCH=i386" >> $config_mak
1070 echo "#define HOST_I386 1" >> $config_h
1072 x86_64)
1073 echo "ARCH=x86_64" >> $config_mak
1074 echo "#define HOST_X86_64 1" >> $config_h
1076 alpha)
1077 echo "ARCH=alpha" >> $config_mak
1078 echo "#define HOST_ALPHA 1" >> $config_h
1080 armv4b)
1081 echo "ARCH=arm" >> $config_mak
1082 echo "#define HOST_ARM 1" >> $config_h
1084 armv4l)
1085 echo "ARCH=arm" >> $config_mak
1086 echo "#define HOST_ARM 1" >> $config_h
1088 cris)
1089 echo "ARCH=cris" >> $config_mak
1090 echo "#define HOST_CRIS 1" >> $config_h
1092 hppa)
1093 echo "ARCH=hppa" >> $config_mak
1094 echo "#define HOST_HPPA 1" >> $config_h
1096 ia64)
1097 echo "ARCH=ia64" >> $config_mak
1098 echo "#define HOST_IA64 1" >> $config_h
1100 m68k)
1101 echo "ARCH=m68k" >> $config_mak
1102 echo "#define HOST_M68K 1" >> $config_h
1104 mips)
1105 echo "ARCH=mips" >> $config_mak
1106 echo "#define HOST_MIPS 1" >> $config_h
1108 mips64)
1109 echo "ARCH=mips64" >> $config_mak
1110 echo "#define HOST_MIPS64 1" >> $config_h
1112 powerpc)
1113 if test "$hostlongbits" = "32"; then
1114 echo "ARCH=ppc" >> $config_mak
1115 echo "#define HOST_PPC 1" >> $config_h
1116 else
1117 echo "ARCH=ppc64" >> $config_mak
1118 echo "#define HOST_PPC64 1" >> $config_h
1121 s390)
1122 echo "ARCH=s390" >> $config_mak
1123 echo "#define HOST_S390 1" >> $config_h
1125 sparc)
1126 echo "ARCH=sparc" >> $config_mak
1127 echo "#define HOST_SPARC 1" >> $config_h
1129 sparc64)
1130 echo "ARCH=sparc64" >> $config_mak
1131 echo "#define HOST_SPARC64 1" >> $config_h
1134 echo "Unsupported CPU = $cpu"
1135 exit 1
1137 esac
1138 if test "$sparse" = "yes" ; then
1139 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_mak
1140 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_mak
1141 echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1143 if test "$bigendian" = "yes" ; then
1144 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1145 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1147 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1148 if test "$mingw32" = "yes" ; then
1149 echo "CONFIG_WIN32=yes" >> $config_mak
1150 echo "#define CONFIG_WIN32 1" >> $config_h
1151 else
1152 cat > $TMPC << EOF
1153 #include <byteswap.h>
1154 int main(void) { return bswap_32(0); }
1156 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1157 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1161 if [ "$openbsd" = "yes" ] ; then
1162 echo "#define ENOTSUP 4096" >> $config_h
1165 if test "$darwin" = "yes" ; then
1166 echo "CONFIG_DARWIN=yes" >> $config_mak
1167 echo "#define CONFIG_DARWIN 1" >> $config_h
1169 if test "$solaris" = "yes" ; then
1170 echo "CONFIG_SOLARIS=yes" >> $config_mak
1171 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1172 if test "$needs_libsunmath" = "yes" ; then
1173 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1174 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1177 if test -n "$sparc_cpu"; then
1178 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1179 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1181 if test "$gdbstub" = "yes" ; then
1182 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1183 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1185 if test "$gprof" = "yes" ; then
1186 echo "TARGET_GPROF=yes" >> $config_mak
1187 echo "#define HAVE_GPROF 1" >> $config_h
1189 if test "$static" = "yes" ; then
1190 echo "CONFIG_STATIC=yes" >> $config_mak
1191 echo "#define CONFIG_STATIC 1" >> $config_h
1193 if test $profiler = "yes" ; then
1194 echo "#define CONFIG_PROFILER 1" >> $config_h
1196 if test "$slirp" = "yes" ; then
1197 echo "CONFIG_SLIRP=yes" >> $config_mak
1198 echo "#define CONFIG_SLIRP 1" >> $config_h
1200 if test "$vde" = "yes" ; then
1201 echo "CONFIG_VDE=yes" >> $config_mak
1202 echo "#define CONFIG_VDE 1" >> $config_h
1203 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1205 for card in $audio_card_list; do
1206 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1207 echo "$def=yes" >> $config_mak
1208 echo "#define $def 1" >> $config_h
1209 done
1210 echo "#define AUDIO_DRIVERS \\" >> $config_h
1211 for drv in $audio_drv_list; do
1212 echo " &${drv}_audio_driver, \\" >>$config_h
1213 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1214 echo "$def=yes" >> $config_mak
1215 if test "$drv" = "fmod"; then
1216 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1217 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1218 elif test "$drv" = "oss"; then
1219 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1221 done
1222 echo "" >>$config_h
1223 if test "$mixemu" = "yes" ; then
1224 echo "CONFIG_MIXEMU=yes" >> $config_mak
1225 echo "#define CONFIG_MIXEMU 1" >> $config_h
1227 if test "$vnc_tls" = "yes" ; then
1228 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1229 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1230 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1231 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1233 qemu_version=`head $source_path/VERSION`
1234 echo "VERSION=$qemu_version" >>$config_mak
1235 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1237 echo "SRC_PATH=$source_path" >> $config_mak
1238 if [ "$source_path_used" = "yes" ]; then
1239 echo "VPATH=$source_path" >> $config_mak
1241 echo "TARGET_DIRS=$target_list" >> $config_mak
1242 if [ "$build_docs" = "yes" ] ; then
1243 echo "BUILD_DOCS=yes" >> $config_mak
1245 if test "$static" = "yes"; then
1246 sdl1=$sdl_static
1247 else
1248 sdl1=$sdl
1250 if test "$sdl1" = "yes" ; then
1251 echo "#define CONFIG_SDL 1" >> $config_h
1252 echo "CONFIG_SDL=yes" >> $config_mak
1253 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1254 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1255 else
1256 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1258 if [ "${aa}" = "yes" ] ; then
1259 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1260 else
1261 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1264 if test "$cocoa" = "yes" ; then
1265 echo "#define CONFIG_COCOA 1" >> $config_h
1266 echo "CONFIG_COCOA=yes" >> $config_mak
1268 if test "$curses" = "yes" ; then
1269 echo "#define CONFIG_CURSES 1" >> $config_h
1270 echo "CONFIG_CURSES=yes" >> $config_mak
1271 echo "CURSES_LIBS=-lcurses" >> $config_mak
1273 if test "$brlapi" = "yes" ; then
1274 echo "CONFIG_BRLAPI=yes" >> $config_mak
1275 echo "#define CONFIG_BRLAPI 1" >> $config_h
1276 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1278 if test "$bluez" = "yes" ; then
1279 echo "CONFIG_BLUEZ=yes" >> $config_mak
1280 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1281 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1282 echo "#define CONFIG_BLUEZ 1" >> $config_h
1284 if test "$aio" = "yes" ; then
1285 echo "#define CONFIG_AIO 1" >> $config_h
1286 echo "CONFIG_AIO=yes" >> $config_mak
1289 # XXX: suppress that
1290 if [ "$bsd" = "yes" ] ; then
1291 echo "#define O_LARGEFILE 0" >> $config_h
1292 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1293 echo "#define _BSD 1" >> $config_h
1296 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1298 tools=
1299 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1300 tools="qemu-img\$(EXESUF) $tools"
1301 if [ "$linux" = "yes" ] ; then
1302 tools="qemu-nbd\$(EXESUF) $tools"
1305 echo "TOOLS=$tools" >> $config_mak
1307 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1309 for target in $target_list; do
1310 target_dir="$target"
1311 config_mak=$target_dir/config.mak
1312 config_h=$target_dir/config.h
1313 target_cpu=`echo $target | cut -d '-' -f 1`
1314 target_bigendian="no"
1315 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1316 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1317 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1318 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1319 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1320 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1321 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1322 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1323 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1324 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1325 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1326 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1327 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1328 target_softmmu="no"
1329 target_user_only="no"
1330 target_linux_user="no"
1331 target_darwin_user="no"
1332 case "$target" in
1333 ${target_cpu}-softmmu)
1334 target_softmmu="yes"
1336 ${target_cpu}-linux-user)
1337 target_user_only="yes"
1338 target_linux_user="yes"
1340 ${target_cpu}-darwin-user)
1341 target_user_only="yes"
1342 target_darwin_user="yes"
1345 echo "ERROR: Target '$target' not recognised"
1346 exit 1
1348 esac
1350 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1351 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1352 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1353 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1354 echo "Note that this will disable all output from the virtual graphics card"
1355 echo "except through VNC or curses."
1356 exit 1;
1359 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1361 test -f $config_h && mv $config_h ${config_h}~
1363 mkdir -p $target_dir
1364 mkdir -p $target_dir/fpu
1365 mkdir -p $target_dir/tcg
1366 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1367 mkdir -p $target_dir/nwfpe
1371 # don't use ln -sf as not all "ln -sf" over write the file/link
1373 rm -f $target_dir/Makefile
1374 ln -s $source_path/Makefile.target $target_dir/Makefile
1377 echo "# Automatically generated by configure - do not modify" > $config_mak
1378 echo "/* Automatically generated by configure - do not modify */" > $config_h
1381 echo "include ../config-host.mak" >> $config_mak
1382 echo "#include \"../config-host.h\"" >> $config_h
1384 bflt="no"
1385 elfload32="no"
1386 target_nptl="no"
1387 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1388 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1389 gdb_xml_files=""
1391 case "$target_cpu" in
1392 i386)
1393 echo "TARGET_ARCH=i386" >> $config_mak
1394 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1395 echo "#define TARGET_I386 1" >> $config_h
1396 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1397 then
1398 echo "#define USE_KQEMU 1" >> $config_h
1400 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1401 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1402 then
1403 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1404 else
1405 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1408 x86_64)
1409 echo "TARGET_ARCH=x86_64" >> $config_mak
1410 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1411 echo "#define TARGET_I386 1" >> $config_h
1412 echo "#define TARGET_X86_64 1" >> $config_h
1413 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1414 then
1415 echo "#define USE_KQEMU 1" >> $config_h
1418 alpha)
1419 echo "TARGET_ARCH=alpha" >> $config_mak
1420 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1421 echo "#define TARGET_ALPHA 1" >> $config_h
1423 arm|armeb)
1424 echo "TARGET_ARCH=arm" >> $config_mak
1425 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1426 echo "#define TARGET_ARM 1" >> $config_h
1427 bflt="yes"
1428 target_nptl="yes"
1429 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1431 cris)
1432 echo "TARGET_ARCH=cris" >> $config_mak
1433 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1434 echo "#define TARGET_CRIS 1" >> $config_h
1436 m68k)
1437 echo "TARGET_ARCH=m68k" >> $config_mak
1438 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1439 echo "#define TARGET_M68K 1" >> $config_h
1440 bflt="yes"
1441 gdb_xml_files="cf-core.xml cf-fp.xml"
1443 mips|mipsel)
1444 echo "TARGET_ARCH=mips" >> $config_mak
1445 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1446 echo "#define TARGET_MIPS 1" >> $config_h
1447 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1449 mipsn32|mipsn32el)
1450 echo "TARGET_ARCH=mipsn32" >> $config_mak
1451 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1452 echo "#define TARGET_MIPS 1" >> $config_h
1453 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1455 mips64|mips64el)
1456 echo "TARGET_ARCH=mips64" >> $config_mak
1457 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1458 echo "#define TARGET_MIPS 1" >> $config_h
1459 echo "#define TARGET_MIPS64 1" >> $config_h
1460 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1462 ppc)
1463 echo "TARGET_ARCH=ppc" >> $config_mak
1464 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1465 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1466 echo "#define TARGET_PPC 1" >> $config_h
1467 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1469 ppcemb)
1470 echo "TARGET_ARCH=ppcemb" >> $config_mak
1471 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1472 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1473 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1474 echo "#define TARGET_PPC 1" >> $config_h
1475 echo "#define TARGET_PPCEMB 1" >> $config_h
1476 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1478 ppc64)
1479 echo "TARGET_ARCH=ppc64" >> $config_mak
1480 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1481 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1482 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1483 echo "#define TARGET_PPC 1" >> $config_h
1484 echo "#define TARGET_PPC64 1" >> $config_h
1485 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1487 ppc64abi32)
1488 echo "TARGET_ARCH=ppc64" >> $config_mak
1489 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1490 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1491 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1492 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1493 echo "#define TARGET_PPC 1" >> $config_h
1494 echo "#define TARGET_PPC64 1" >> $config_h
1495 echo "#define TARGET_ABI32 1" >> $config_h
1496 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1498 sh4|sh4eb)
1499 echo "TARGET_ARCH=sh4" >> $config_mak
1500 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1501 echo "#define TARGET_SH4 1" >> $config_h
1502 bflt="yes"
1503 target_nptl="yes"
1505 sparc)
1506 echo "TARGET_ARCH=sparc" >> $config_mak
1507 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1508 echo "#define TARGET_SPARC 1" >> $config_h
1510 sparc64)
1511 echo "TARGET_ARCH=sparc64" >> $config_mak
1512 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1513 echo "#define TARGET_SPARC 1" >> $config_h
1514 echo "#define TARGET_SPARC64 1" >> $config_h
1515 elfload32="yes"
1517 sparc32plus)
1518 echo "TARGET_ARCH=sparc64" >> $config_mak
1519 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1520 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1521 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1522 echo "#define TARGET_SPARC 1" >> $config_h
1523 echo "#define TARGET_SPARC64 1" >> $config_h
1524 echo "#define TARGET_ABI32 1" >> $config_h
1527 echo "Unsupported target CPU"
1528 exit 1
1530 esac
1531 if test "$target_bigendian" = "yes" ; then
1532 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1533 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1535 if test "$target_softmmu" = "yes" ; then
1536 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1537 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1539 if test "$target_user_only" = "yes" ; then
1540 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1541 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1543 if test "$target_linux_user" = "yes" ; then
1544 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1545 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1547 if test "$target_darwin_user" = "yes" ; then
1548 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1549 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1551 list=""
1552 if test ! -z "$gdb_xml_files" ; then
1553 for x in $gdb_xml_files; do
1554 list="$list $source_path/gdb-xml/$x"
1555 done
1557 echo "TARGET_XML_FILES=$list" >> $config_mak
1559 if test "$target_cpu" = "arm" \
1560 -o "$target_cpu" = "armeb" \
1561 -o "$target_cpu" = "m68k" \
1562 -o "$target_cpu" = "mips" \
1563 -o "$target_cpu" = "mipsel" \
1564 -o "$target_cpu" = "mipsn32" \
1565 -o "$target_cpu" = "mipsn32el" \
1566 -o "$target_cpu" = "mips64" \
1567 -o "$target_cpu" = "mips64el" \
1568 -o "$target_cpu" = "sparc" \
1569 -o "$target_cpu" = "sparc64" \
1570 -o "$target_cpu" = "sparc32plus"; then
1571 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1572 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1574 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1575 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1576 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1578 if test "$target_user_only" = "yes" \
1579 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1580 echo "#define USE_NPTL 1" >> $config_h
1582 # 32 bit ELF loader in addition to native 64 bit loader?
1583 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1584 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1585 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1588 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1590 done # for target in $targets
1592 # build tree in object directory if source path is different from current one
1593 if test "$source_path_used" = "yes" ; then
1594 DIRS="tests tests/cris slirp audio"
1595 FILES="Makefile tests/Makefile"
1596 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1597 FILES="$FILES tests/test-mmap.c"
1598 for dir in $DIRS ; do
1599 mkdir -p $dir
1600 done
1601 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1602 for f in $FILES ; do
1603 rm -f $f
1604 ln -s $source_path/$f $f
1605 done
1608 rm -f $TMPO $TMPC $TMPE $TMPS $TMPI