CRIS: Partial EXS reg support and fixes for SPC.
[qemu/qemu-JZ.git] / configure
blob9192fcf94b558c9841011556282ae060c27b91b0
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"
116 signalfd="no"
117 eventfd="no"
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"
152 NetBSD)
153 bsd="yes"
154 audio_drv_list="oss"
155 audio_possible_drivers="oss sdl esd"
157 OpenBSD)
158 bsd="yes"
159 openbsd="yes"
160 audio_drv_list="oss"
161 audio_possible_drivers="oss sdl esd"
162 oss_lib="-lossaudio"
164 Darwin)
165 bsd="yes"
166 darwin="yes"
167 darwin_user="yes"
168 cocoa="yes"
169 audio_drv_list="coreaudio"
170 audio_possible_drivers="coreaudio sdl fmod"
171 OS_CFLAGS="-mdynamic-no-pic"
172 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
174 SunOS)
175 solaris="yes"
176 make="gmake"
177 install="ginstall"
178 needs_libsunmath="no"
179 solarisrev=`uname -r | cut -f2 -d.`
180 # have to select again, because `uname -m` returns i86pc
181 # even on an x86_64 box.
182 solariscpu=`isainfo -k`
183 if test "${solariscpu}" = "amd64" ; then
184 cpu="x86_64"
186 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
187 if test "$solarisrev" -le 9 ; then
188 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
189 needs_libsunmath="yes"
190 else
191 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
192 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
193 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
194 echo "Studio 11 can be downloaded from www.sun.com."
195 exit 1
198 if test "$solarisrev" -ge 9 ; then
199 kqemu="yes"
202 if test -f /usr/include/sys/soundcard.h ; then
203 audio_drv_list="oss"
205 audio_possible_drivers="oss sdl"
208 audio_drv_list="oss"
209 audio_possible_drivers="oss alsa sdl esd pa"
210 linux="yes"
211 linux_user="yes"
212 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
213 kqemu="yes"
214 audio_possible_drivers="$audio_possible_drivers fmod"
217 esac
219 if [ "$bsd" = "yes" ] ; then
220 if [ "$darwin" != "yes" ] ; then
221 make="gmake"
225 # find source path
226 source_path=`dirname "$0"`
227 source_path_used="no"
228 workdir=`pwd`
229 if [ -z "$source_path" ]; then
230 source_path=$workdir
231 else
232 source_path=`cd "$source_path"; pwd`
234 [ -f "$workdir/vl.c" ] || source_path_used="yes"
236 werror="no"
237 # generate compile errors on warnings for development builds
238 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
239 #werror="yes";
242 for opt do
243 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
244 case "$opt" in
245 --help|-h) show_help=yes
247 --prefix=*) prefix="$optarg"
249 --interp-prefix=*) interp_prefix="$optarg"
251 --source-path=*) source_path="$optarg"
252 source_path_used="yes"
254 --cross-prefix=*) cross_prefix="$optarg"
256 --cc=*) cc="$optarg"
257 gcc3_search="no"
259 --host-cc=*) host_cc="$optarg"
261 --make=*) make="$optarg"
263 --install=*) install="$optarg"
265 --extra-cflags=*) CFLAGS="$optarg"
267 --extra-ldflags=*) LDFLAGS="$optarg"
269 --cpu=*) cpu="$optarg"
271 --target-list=*) target_list="$optarg"
273 --enable-gprof) gprof="yes"
275 --static) static="yes"
277 --disable-sdl) sdl="no"
279 --fmod-lib=*) fmod_lib="$optarg"
281 --fmod-inc=*) fmod_inc="$optarg"
283 --oss-lib=*) oss_lib="$optarg"
285 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
287 --audio-drv-list=*) audio_drv_list="$optarg"
289 --enable-sparse) sparse="yes"
291 --disable-sparse) sparse="no"
293 --disable-vnc-tls) vnc_tls="no"
295 --disable-slirp) slirp="no"
297 --disable-vde) vde="no"
299 --disable-kqemu) kqemu="no"
301 --disable-brlapi) brlapi="no"
303 --disable-bluez) bluez="no"
305 --enable-profiler) profiler="yes"
307 --enable-cocoa)
308 cocoa="yes" ;
309 sdl="no" ;
310 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
312 --disable-gfx-check) check_gfx="no"
314 --disable-gcc-check) check_gcc="no"
316 --disable-system) softmmu="no"
318 --enable-system) softmmu="yes"
320 --disable-linux-user) linux_user="no"
322 --enable-linux-user) linux_user="yes"
324 --disable-darwin-user) darwin_user="no"
326 --enable-darwin-user) darwin_user="yes"
328 --enable-uname-release=*) uname_release="$optarg"
330 --sparc_cpu=*)
331 sparc_cpu="$optarg"
332 case $sparc_cpu in
333 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
334 target_cpu="sparc"; cpu="sparc" ;;
335 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
336 target_cpu="sparc"; cpu="sparc" ;;
337 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
338 target_cpu="sparc64"; cpu="sparc64" ;;
339 *) echo "undefined SPARC architecture. Exiting";exit 1;;
340 esac
342 --enable-werror) werror="yes"
344 --disable-werror) werror="no"
346 --disable-curses) curses="no"
348 --disable-nptl) nptl="no"
350 --enable-mixemu) mixemu="yes"
352 --disable-aio) aio="no"
354 *) echo "ERROR: unknown option $opt"; show_help="yes"
356 esac
357 done
359 # default flags for all hosts
360 CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
361 CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
362 LDFLAGS="$LDFLAGS -g"
363 if test "$werror" = "yes" ; then
364 CFLAGS="$CFLAGS -Werror"
367 if ld --version 2>/dev/null | grep -q "GNU ld" ; then
368 LDFLAGS="$LDFLAGS -Wl,--warn-common"
372 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
373 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
375 case "$cpu" in
376 sparc) if test -z "$sparc_cpu" ; then
377 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
378 ARCH_LDFLAGS="-m32"
379 else
380 ARCH_CFLAGS="${SP_CFLAGS}"
381 ARCH_LDFLAGS="${SP_LDFLAGS}"
384 sparc64) if test -z "$sparc_cpu" ; then
385 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
386 ARCH_LDFLAGS="-m64"
387 else
388 ARCH_CFLAGS="${SP_CFLAGS}"
389 ARCH_LDFLAGS="${SP_LDFLAGS}"
392 s390)
393 ARCH_CFLAGS="-march=z900"
395 i386)
396 ARCH_CFLAGS="-m32"
397 ARCH_LDFLAGS="-m32"
399 x86_64)
400 ARCH_CFLAGS="-m64"
401 ARCH_LDFLAGS="-m64"
403 esac
405 if test x"$show_help" = x"yes" ; then
406 cat << EOF
408 Usage: configure [options]
409 Options: [defaults in brackets after descriptions]
412 echo "Standard options:"
413 echo " --help print this message"
414 echo " --prefix=PREFIX install in PREFIX [$prefix]"
415 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
416 echo " use %M for cpu name [$interp_prefix]"
417 echo " --target-list=LIST set target list [$target_list]"
418 echo ""
419 echo "kqemu kernel acceleration support:"
420 echo " --disable-kqemu disable kqemu support"
421 echo ""
422 echo "Advanced options (experts only):"
423 echo " --source-path=PATH path of source code [$source_path]"
424 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
425 echo " --cc=CC use C compiler CC [$cc]"
426 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
427 echo " --make=MAKE use specified make [$make]"
428 echo " --install=INSTALL use specified install [$install]"
429 echo " --static enable static build [$static]"
430 echo " --enable-sparse enable sparse checker"
431 echo " --disable-sparse disable sparse checker (default)"
432 echo " --disable-werror disable compilation abort on warning"
433 echo " --disable-sdl disable SDL"
434 echo " --enable-cocoa enable COCOA (Mac OS X only)"
435 echo " --audio-drv-list=LIST set audio drivers list:"
436 echo " Available drivers: $audio_possible_drivers"
437 echo " --audio-card-list=LIST set list of additional emulated audio cards"
438 echo " Available cards: ac97 adlib cs4231a gus"
439 echo " --enable-mixemu enable mixer emulation"
440 echo " --disable-brlapi disable BrlAPI"
441 echo " --disable-vnc-tls disable TLS encryption for VNC server"
442 echo " --disable-curses disable curses output"
443 echo " --disable-bluez disable bluez stack connectivity"
444 echo " --disable-nptl disable usermode NPTL support"
445 echo " --enable-system enable all system emulation targets"
446 echo " --disable-system disable all system emulation targets"
447 echo " --enable-linux-user enable all linux usermode emulation targets"
448 echo " --disable-linux-user disable all linux usermode emulation targets"
449 echo " --enable-darwin-user enable all darwin usermode emulation targets"
450 echo " --disable-darwin-user disable all darwin usermode emulation targets"
451 echo " --fmod-lib path to FMOD library"
452 echo " --fmod-inc path to FMOD includes"
453 echo " --oss-lib path to OSS library"
454 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
455 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
456 echo " --disable-vde disable support for vde network"
457 echo " --disable-aio disable AIO support"
458 echo ""
459 echo "NOTE: The object files are built at the place where configure is launched"
460 exit 1
463 cc="${cross_prefix}${cc}"
464 ar="${cross_prefix}${ar}"
465 strip="${cross_prefix}${strip}"
467 # check that the C compiler works.
468 cat > $TMPC <<EOF
469 int main(void) {}
472 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
473 : C compiler works ok
474 else
475 echo "ERROR: \"$cc\" either does not exist or does not work"
476 exit 1
479 # check compiler to see if we're on mingw32
480 cat > $TMPC <<EOF
481 #include <windows.h>
482 #ifndef _WIN32
483 #error not windows
484 #endif
485 int main(void) {}
488 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
489 mingw32="yes"
492 if test "$mingw32" = "yes" ; then
493 linux="no"
494 EXESUF=".exe"
495 oss="no"
496 linux_user="no"
499 if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
500 AIOLIBS=
501 elif [ "$bsd" = "yes" ]; then
502 AIOLIBS="-lpthread"
503 else
504 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
505 AIOLIBS="-lrt -lpthread"
508 # Check for gcc4, error if pre-gcc4
509 if test "$check_gcc" = "yes" ; then
510 cat > $TMPC <<EOF
511 #if __GNUC__ < 4
512 #error gcc3
513 #endif
514 int main(){return 0;}
516 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
517 echo "WARNING: \"$cc\" looks like gcc 4.x"
518 found_compat_cc="no"
519 if test "$gcc3_search" = "yes" ; then
520 echo "Looking for gcc 3.x"
521 for compat_cc in $gcc3_list ; do
522 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
523 echo "Found \"$compat_cc\""
524 cc="$cross_prefix$compat_cc"
525 found_compat_cc="yes"
526 break
528 done
529 if test "$found_compat_cc" = "no" ; then
530 echo "gcc 3.x not found!"
533 if test "$found_compat_cc" = "no" ; then
534 echo "QEMU is known to have problems when compiled with gcc 4.x"
535 echo "It is recommended that you use gcc 3.x to build QEMU"
536 echo "To use this compiler anyway, configure with --disable-gcc-check"
537 exit 1;
542 if test ! -x "$(which cgcc 2>/dev/null)"; then
543 sparse="no"
547 # Solaris specific configure tool chain decisions
549 if test "$solaris" = "yes" ; then
551 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
552 # override the check with --disable-gcc-check
554 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
555 solgcc=`which $cc`
556 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
557 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
558 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
559 echo "or get the latest patch from SunSolve for gcc"
560 exit 1
563 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
564 if test -z "$solinst" ; then
565 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
566 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
567 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
568 exit 1
570 if test "$solinst" = "/usr/sbin/install" ; then
571 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
572 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
573 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
574 exit 1
576 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
577 if test -z "$sol_ar" ; then
578 echo "Error: No path includes ar"
579 if test -f /usr/ccs/bin/ar ; then
580 echo "Add /usr/ccs/bin to your path and rerun configure"
582 exit 1
587 if test -z "$target_list" ; then
588 # these targets are portable
589 if [ "$softmmu" = "yes" ] ; then
590 target_list="\
591 i386-softmmu \
592 x86_64-softmmu \
593 arm-softmmu \
594 cris-softmmu \
595 m68k-softmmu \
596 mips-softmmu \
597 mipsel-softmmu \
598 mips64-softmmu \
599 mips64el-softmmu \
600 ppc-softmmu \
601 ppcemb-softmmu \
602 ppc64-softmmu \
603 sh4-softmmu \
604 sh4eb-softmmu \
605 sparc-softmmu \
608 # the following are Linux specific
609 if [ "$linux_user" = "yes" ] ; then
610 target_list="${target_list}\
611 i386-linux-user \
612 x86_64-linux-user \
613 alpha-linux-user \
614 arm-linux-user \
615 armeb-linux-user \
616 cris-linux-user \
617 m68k-linux-user \
618 mips-linux-user \
619 mipsel-linux-user \
620 ppc-linux-user \
621 ppc64-linux-user \
622 ppc64abi32-linux-user \
623 sh4-linux-user \
624 sh4eb-linux-user \
625 sparc-linux-user \
626 sparc64-linux-user \
627 sparc32plus-linux-user \
630 # the following are Darwin specific
631 if [ "$darwin_user" = "yes" ] ; then
632 target_list="$target_list i386-darwin-user ppc-darwin-user"
634 else
635 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
637 if test -z "$target_list" ; then
638 echo "No targets enabled"
639 exit 1
642 if test -z "$cross_prefix" ; then
644 # ---
645 # big/little endian test
646 cat > $TMPC << EOF
647 #include <inttypes.h>
648 int main(int argc, char ** argv){
649 volatile uint32_t i=0x01234567;
650 return (*((uint8_t*)(&i))) == 0x67;
654 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
655 $TMPE && bigendian="yes"
656 else
657 echo big/little test failed
660 else
662 # if cross compiling, cannot launch a program, so make a static guess
663 if test "$cpu" = "armv4b" \
664 -o "$cpu" = "hppa" \
665 -o "$cpu" = "m68k" \
666 -o "$cpu" = "mips" \
667 -o "$cpu" = "mips64" \
668 -o "$cpu" = "powerpc" \
669 -o "$cpu" = "s390" \
670 -o "$cpu" = "sparc" \
671 -o "$cpu" = "sparc64"; then
672 bigendian="yes"
677 # host long bits test
678 hostlongbits="32"
679 if test "$cpu" = "x86_64" \
680 -o "$cpu" = "alpha" \
681 -o "$cpu" = "ia64" \
682 -o "$cpu" = "sparc64"; then
683 hostlongbits="64"
686 # ppc specific hostlongbits selection
687 if test "$cpu" = "powerpc" ; then
688 if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
689 grep -q __powerpc64__ $TMPI && hostlongbits=64
690 else
691 echo hostlongbits test failed
692 exit 1
696 # check gcc options support
697 cat > $TMPC <<EOF
698 int main(void) {
702 # Check host NPTL support
703 cat > $TMPC <<EOF
704 #include <sched.h>
705 #include <linux/futex.h>
706 void foo()
708 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
709 #error bork
710 #endif
714 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
716 else
717 nptl="no"
720 ##########################################
721 # SDL probe
723 sdl_too_old=no
725 if test -z "$sdl" ; then
726 sdl_config="sdl-config"
727 sdl=no
728 sdl_static=no
730 cat > $TMPC << EOF
731 #include <SDL.h>
732 #undef main /* We don't want SDL to override our main() */
733 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
735 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
736 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
737 if test "$_sdlversion" -lt 121 ; then
738 sdl_too_old=yes
739 else
740 if test "$cocoa" = "no" ; then
741 sdl=yes
745 # static link with sdl ?
746 if test "$sdl" = "yes" ; then
747 aa="no"
748 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
749 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
750 if [ "$aa" = "yes" ] ; then
751 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
754 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
755 sdl_static=yes
757 fi # static link
758 fi # sdl compile test
759 else
760 # Make sure to disable cocoa if sdl was set
761 if test "$sdl" = "yes" ; then
762 cocoa="no"
763 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
765 fi # -z $sdl
767 ##########################################
768 # VNC TLS detection
769 if test "$vnc_tls" = "yes" ; then
770 cat > $TMPC <<EOF
771 #include <gnutls/gnutls.h>
772 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
774 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
775 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
776 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
777 $vnc_tls_libs 2> /dev/null ; then
779 else
780 vnc_tls="no"
784 ##########################################
785 # vde libraries probe
786 if test "$vde" = "yes" ; then
787 cat > $TMPC << EOF
788 #include <libvdeplug.h>
789 int main(void)
791 struct vde_open_args a = {0, 0, 0};
792 vde_open("", "", &a);
793 return 0;
796 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
798 else
799 vde="no"
803 ##########################################
804 # Sound support libraries probe
806 audio_drv_probe()
808 drv=$1
809 hdr=$2
810 lib=$3
811 exp=$4
812 cfl=$5
813 cat > $TMPC << EOF
814 #include <$hdr>
815 int main(void) { $exp }
817 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
819 else
820 echo
821 echo "Error: $drv check failed"
822 echo "Make sure to have the $drv libs and headers installed."
823 echo
824 exit 1
828 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
829 for drv in $audio_drv_list; do
830 case $drv in
831 alsa)
832 audio_drv_probe $drv alsa/asoundlib.h -lasound \
833 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
836 fmod)
837 if test -z $fmod_lib || test -z $fmod_inc; then
838 echo
839 echo "Error: You must specify path to FMOD library and headers"
840 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
841 echo
842 exit 1
844 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
847 esd)
848 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
852 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
853 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
856 oss|sdl|core|wav|dsound)
857 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
861 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
862 echo
863 echo "Error: Unknown driver '$drv' selected"
864 echo "Possible drivers are: $audio_possible_drivers"
865 echo
866 exit 1
869 esac
870 done
872 ##########################################
873 # BrlAPI probe
875 if test -z "$brlapi" ; then
876 brlapi=no
877 cat > $TMPC << EOF
878 #include <brlapi.h>
879 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
881 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
882 brlapi=yes
883 fi # brlapi compile test
884 fi # -z $brlapi
886 ##########################################
887 # curses probe
889 if test "$curses" = "yes" ; then
890 curses=no
891 cat > $TMPC << EOF
892 #include <curses.h>
893 int main(void) { return curses_version(); }
895 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
896 curses=yes
898 fi # test "$curses"
900 ##########################################
901 # bluez support probe
902 if test "$bluez" = "yes" ; then
903 `pkg-config bluez` || bluez="no"
905 if test "$bluez" = "yes" ; then
906 cat > $TMPC << EOF
907 #include <bluetooth/bluetooth.h>
908 int main(void) { return bt_error(0); }
910 bluez_cflags=`pkg-config --cflags bluez`
911 bluez_libs=`pkg-config --libs bluez`
912 if $cc $ARCH_CFLAGS -o $TMPE ${OS_FLAGS} $bluez_cflags $TMPC \
913 $bluez_libs 2> /dev/null ; then
915 else
916 bluez="no"
920 ##########################################
921 # AIO probe
922 if test "$aio" = "yes" ; then
923 aio=no
924 cat > $TMPC << EOF
925 #include <aio.h>
926 int main(void) { return aio_write(NULL); }
928 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
929 aio=yes
933 ##########################################
934 # signalfd probe
935 cat > $TMPC << EOF
936 #define _GNU_SOURCE
937 #include <unistd.h>
938 #include <sys/syscall.h>
939 #include <signal.h>
940 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
943 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
944 signalfd=yes
947 ##########################################
948 # eventfd probe
949 cat > $TMPC << EOF
950 #define _GNU_SOURCE
951 #include <unistd.h>
952 #include <sys/syscall.h>
953 int main(void) { return syscall(SYS_eventfd, 0); }
956 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
957 eventfd=yes
960 # Check if tools are available to build documentation.
961 if [ -x "`which texi2html 2>/dev/null`" ] && \
962 [ -x "`which pod2man 2>/dev/null`" ]; then
963 build_docs="yes"
966 if test "$mingw32" = "yes" ; then
967 if test -z "$prefix" ; then
968 prefix="/c/Program Files/Qemu"
970 mansuffix=""
971 datasuffix=""
972 docsuffix=""
973 binsuffix=""
974 else
975 if test -z "$prefix" ; then
976 prefix="/usr/local"
978 mansuffix="/share/man"
979 datasuffix="/share/qemu"
980 docsuffix="/share/doc/qemu"
981 binsuffix="/bin"
984 echo "Install prefix $prefix"
985 echo "BIOS directory $prefix$datasuffix"
986 echo "binary directory $prefix$binsuffix"
987 if test "$mingw32" = "no" ; then
988 echo "Manual directory $prefix$mansuffix"
989 echo "ELF interp prefix $interp_prefix"
991 echo "Source path $source_path"
992 echo "C compiler $cc"
993 echo "Host C compiler $host_cc"
994 echo "ARCH_CFLAGS $ARCH_CFLAGS"
995 echo "make $make"
996 echo "install $install"
997 echo "host CPU $cpu"
998 echo "host big endian $bigendian"
999 echo "target list $target_list"
1000 echo "gprof enabled $gprof"
1001 echo "sparse enabled $sparse"
1002 echo "profiler $profiler"
1003 echo "static build $static"
1004 echo "-Werror enabled $werror"
1005 if test "$darwin" = "yes" ; then
1006 echo "Cocoa support $cocoa"
1008 echo "SDL support $sdl"
1009 if test "$sdl" != "no" ; then
1010 echo "SDL static link $sdl_static"
1012 echo "curses support $curses"
1013 echo "mingw32 support $mingw32"
1014 echo "Audio drivers $audio_drv_list"
1015 echo "Extra audio cards $audio_card_list"
1016 echo "Mixer emulation $mixemu"
1017 echo "VNC TLS support $vnc_tls"
1018 if test "$vnc_tls" = "yes" ; then
1019 echo " TLS CFLAGS $vnc_tls_cflags"
1020 echo " TLS LIBS $vnc_tls_libs"
1022 if test -n "$sparc_cpu"; then
1023 echo "Target Sparc Arch $sparc_cpu"
1025 echo "kqemu support $kqemu"
1026 echo "brlapi support $brlapi"
1027 echo "Documentation $build_docs"
1028 [ ! -z "$uname_release" ] && \
1029 echo "uname -r $uname_release"
1030 echo "NPTL support $nptl"
1031 echo "vde support $vde"
1032 echo "AIO support $aio"
1034 if test $sdl_too_old = "yes"; then
1035 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1037 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1038 echo "The error log from compiling the libSDL test is: "
1039 cat /tmp/qemu-$$-sdl-config.log
1041 rm -f /tmp/qemu-$$-sdl-config.log
1042 #if test "$sdl_static" = "no"; then
1043 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1045 config_mak="config-host.mak"
1046 config_h="config-host.h"
1048 #echo "Creating $config_mak and $config_h"
1050 test -f $config_h && mv $config_h ${config_h}~
1052 echo "# Automatically generated by configure - do not modify" > $config_mak
1053 echo "# Configured with: $0 $@" >> $config_mak
1054 echo "/* Automatically generated by configure - do not modify */" > $config_h
1056 echo "prefix=$prefix" >> $config_mak
1057 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1058 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1059 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1060 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1061 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1062 echo "MAKE=$make" >> $config_mak
1063 echo "INSTALL=$install" >> $config_mak
1064 echo "CC=$cc" >> $config_mak
1065 echo "HOST_CC=$host_cc" >> $config_mak
1066 echo "AR=$ar" >> $config_mak
1067 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1068 # XXX: only use CFLAGS and LDFLAGS ?
1069 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1070 # compilation of dyngen tool (useful for win32 build on Linux host)
1071 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1072 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1073 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1074 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1075 echo "CFLAGS=$CFLAGS" >> $config_mak
1076 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1077 echo "EXESUF=$EXESUF" >> $config_mak
1078 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1079 case "$cpu" in
1080 i386)
1081 echo "ARCH=i386" >> $config_mak
1082 echo "#define HOST_I386 1" >> $config_h
1084 x86_64)
1085 echo "ARCH=x86_64" >> $config_mak
1086 echo "#define HOST_X86_64 1" >> $config_h
1088 alpha)
1089 echo "ARCH=alpha" >> $config_mak
1090 echo "#define HOST_ALPHA 1" >> $config_h
1092 armv4b)
1093 echo "ARCH=arm" >> $config_mak
1094 echo "#define HOST_ARM 1" >> $config_h
1096 armv4l)
1097 echo "ARCH=arm" >> $config_mak
1098 echo "#define HOST_ARM 1" >> $config_h
1100 cris)
1101 echo "ARCH=cris" >> $config_mak
1102 echo "#define HOST_CRIS 1" >> $config_h
1104 hppa)
1105 echo "ARCH=hppa" >> $config_mak
1106 echo "#define HOST_HPPA 1" >> $config_h
1108 ia64)
1109 echo "ARCH=ia64" >> $config_mak
1110 echo "#define HOST_IA64 1" >> $config_h
1112 m68k)
1113 echo "ARCH=m68k" >> $config_mak
1114 echo "#define HOST_M68K 1" >> $config_h
1116 mips)
1117 echo "ARCH=mips" >> $config_mak
1118 echo "#define HOST_MIPS 1" >> $config_h
1120 mips64)
1121 echo "ARCH=mips64" >> $config_mak
1122 echo "#define HOST_MIPS64 1" >> $config_h
1124 powerpc)
1125 if test "$hostlongbits" = "32"; then
1126 echo "ARCH=ppc" >> $config_mak
1127 echo "#define HOST_PPC 1" >> $config_h
1128 else
1129 echo "ARCH=ppc64" >> $config_mak
1130 echo "#define HOST_PPC64 1" >> $config_h
1133 s390)
1134 echo "ARCH=s390" >> $config_mak
1135 echo "#define HOST_S390 1" >> $config_h
1137 sparc)
1138 echo "ARCH=sparc" >> $config_mak
1139 echo "#define HOST_SPARC 1" >> $config_h
1141 sparc64)
1142 echo "ARCH=sparc64" >> $config_mak
1143 echo "#define HOST_SPARC64 1" >> $config_h
1146 echo "Unsupported CPU = $cpu"
1147 exit 1
1149 esac
1150 if test "$sparse" = "yes" ; then
1151 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_mak
1152 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_mak
1153 echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1155 if test "$bigendian" = "yes" ; then
1156 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1157 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1159 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1160 if test "$mingw32" = "yes" ; then
1161 echo "CONFIG_WIN32=yes" >> $config_mak
1162 echo "#define CONFIG_WIN32 1" >> $config_h
1163 else
1164 cat > $TMPC << EOF
1165 #include <byteswap.h>
1166 int main(void) { return bswap_32(0); }
1168 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1169 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1173 if [ "$openbsd" = "yes" ] ; then
1174 echo "#define ENOTSUP 4096" >> $config_h
1177 if test "$darwin" = "yes" ; then
1178 echo "CONFIG_DARWIN=yes" >> $config_mak
1179 echo "#define CONFIG_DARWIN 1" >> $config_h
1181 if test "$solaris" = "yes" ; then
1182 echo "CONFIG_SOLARIS=yes" >> $config_mak
1183 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1184 if test "$needs_libsunmath" = "yes" ; then
1185 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1186 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1189 if test -n "$sparc_cpu"; then
1190 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1191 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1193 if test "$gdbstub" = "yes" ; then
1194 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1195 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1197 if test "$gprof" = "yes" ; then
1198 echo "TARGET_GPROF=yes" >> $config_mak
1199 echo "#define HAVE_GPROF 1" >> $config_h
1201 if test "$static" = "yes" ; then
1202 echo "CONFIG_STATIC=yes" >> $config_mak
1203 echo "#define CONFIG_STATIC 1" >> $config_h
1205 if test $profiler = "yes" ; then
1206 echo "#define CONFIG_PROFILER 1" >> $config_h
1208 if test "$slirp" = "yes" ; then
1209 echo "CONFIG_SLIRP=yes" >> $config_mak
1210 echo "#define CONFIG_SLIRP 1" >> $config_h
1212 if test "$vde" = "yes" ; then
1213 echo "CONFIG_VDE=yes" >> $config_mak
1214 echo "#define CONFIG_VDE 1" >> $config_h
1215 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1217 for card in $audio_card_list; do
1218 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1219 echo "$def=yes" >> $config_mak
1220 echo "#define $def 1" >> $config_h
1221 done
1222 echo "#define AUDIO_DRIVERS \\" >> $config_h
1223 for drv in $audio_drv_list; do
1224 echo " &${drv}_audio_driver, \\" >>$config_h
1225 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1226 echo "$def=yes" >> $config_mak
1227 if test "$drv" = "fmod"; then
1228 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1229 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1230 elif test "$drv" = "oss"; then
1231 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1233 done
1234 echo "" >>$config_h
1235 if test "$mixemu" = "yes" ; then
1236 echo "CONFIG_MIXEMU=yes" >> $config_mak
1237 echo "#define CONFIG_MIXEMU 1" >> $config_h
1239 if test "$vnc_tls" = "yes" ; then
1240 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1241 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1242 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1243 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1245 qemu_version=`head $source_path/VERSION`
1246 echo "VERSION=$qemu_version" >>$config_mak
1247 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1249 echo "SRC_PATH=$source_path" >> $config_mak
1250 if [ "$source_path_used" = "yes" ]; then
1251 echo "VPATH=$source_path" >> $config_mak
1253 echo "TARGET_DIRS=$target_list" >> $config_mak
1254 if [ "$build_docs" = "yes" ] ; then
1255 echo "BUILD_DOCS=yes" >> $config_mak
1257 if test "$static" = "yes"; then
1258 sdl1=$sdl_static
1259 else
1260 sdl1=$sdl
1262 if test "$sdl1" = "yes" ; then
1263 echo "#define CONFIG_SDL 1" >> $config_h
1264 echo "CONFIG_SDL=yes" >> $config_mak
1265 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1266 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1267 else
1268 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1270 if [ "${aa}" = "yes" ] ; then
1271 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1272 else
1273 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1276 if test "$cocoa" = "yes" ; then
1277 echo "#define CONFIG_COCOA 1" >> $config_h
1278 echo "CONFIG_COCOA=yes" >> $config_mak
1280 if test "$curses" = "yes" ; then
1281 echo "#define CONFIG_CURSES 1" >> $config_h
1282 echo "CONFIG_CURSES=yes" >> $config_mak
1283 echo "CURSES_LIBS=-lcurses" >> $config_mak
1285 if test "$brlapi" = "yes" ; then
1286 echo "CONFIG_BRLAPI=yes" >> $config_mak
1287 echo "#define CONFIG_BRLAPI 1" >> $config_h
1288 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1290 if test "$bluez" = "yes" ; then
1291 echo "CONFIG_BLUEZ=yes" >> $config_mak
1292 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1293 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1294 echo "#define CONFIG_BLUEZ 1" >> $config_h
1296 if test "$aio" = "yes" ; then
1297 echo "#define CONFIG_AIO 1" >> $config_h
1298 echo "CONFIG_AIO=yes" >> $config_mak
1300 if test "$signalfd" = "yes" ; then
1301 echo "#define CONFIG_signalfd 1" >> $config_h
1303 if test "$eventfd" = "yes" ; then
1304 echo "#define CONFIG_eventfd 1" >> $config_h
1307 # XXX: suppress that
1308 if [ "$bsd" = "yes" ] ; then
1309 echo "#define O_LARGEFILE 0" >> $config_h
1310 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1311 echo "#define _BSD 1" >> $config_h
1314 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1316 tools=
1317 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1318 tools="qemu-img\$(EXESUF) $tools"
1319 if [ "$linux" = "yes" ] ; then
1320 tools="qemu-nbd\$(EXESUF) $tools"
1323 echo "TOOLS=$tools" >> $config_mak
1325 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1327 for target in $target_list; do
1328 target_dir="$target"
1329 config_mak=$target_dir/config.mak
1330 config_h=$target_dir/config.h
1331 target_cpu=`echo $target | cut -d '-' -f 1`
1332 target_bigendian="no"
1333 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1334 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1335 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1336 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1337 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1338 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1339 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1340 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1341 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1342 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1343 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1344 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1345 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1346 target_softmmu="no"
1347 target_user_only="no"
1348 target_linux_user="no"
1349 target_darwin_user="no"
1350 case "$target" in
1351 ${target_cpu}-softmmu)
1352 target_softmmu="yes"
1354 ${target_cpu}-linux-user)
1355 target_user_only="yes"
1356 target_linux_user="yes"
1358 ${target_cpu}-darwin-user)
1359 target_user_only="yes"
1360 target_darwin_user="yes"
1363 echo "ERROR: Target '$target' not recognised"
1364 exit 1
1366 esac
1368 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1369 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1370 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1371 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1372 echo "Note that this will disable all output from the virtual graphics card"
1373 echo "except through VNC or curses."
1374 exit 1;
1377 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1379 test -f $config_h && mv $config_h ${config_h}~
1381 mkdir -p $target_dir
1382 mkdir -p $target_dir/fpu
1383 mkdir -p $target_dir/tcg
1384 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
1385 mkdir -p $target_dir/nwfpe
1389 # don't use ln -sf as not all "ln -sf" over write the file/link
1391 rm -f $target_dir/Makefile
1392 ln -s $source_path/Makefile.target $target_dir/Makefile
1395 echo "# Automatically generated by configure - do not modify" > $config_mak
1396 echo "/* Automatically generated by configure - do not modify */" > $config_h
1399 echo "include ../config-host.mak" >> $config_mak
1400 echo "#include \"../config-host.h\"" >> $config_h
1402 bflt="no"
1403 elfload32="no"
1404 target_nptl="no"
1405 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1406 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1408 case "$target_cpu" in
1409 i386)
1410 echo "TARGET_ARCH=i386" >> $config_mak
1411 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1412 echo "#define TARGET_I386 1" >> $config_h
1413 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1414 then
1415 echo "#define USE_KQEMU 1" >> $config_h
1417 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1418 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1419 then
1420 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1421 else
1422 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1425 x86_64)
1426 echo "TARGET_ARCH=x86_64" >> $config_mak
1427 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1428 echo "#define TARGET_I386 1" >> $config_h
1429 echo "#define TARGET_X86_64 1" >> $config_h
1430 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1431 then
1432 echo "#define USE_KQEMU 1" >> $config_h
1435 alpha)
1436 echo "TARGET_ARCH=alpha" >> $config_mak
1437 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1438 echo "#define TARGET_ALPHA 1" >> $config_h
1440 arm|armeb)
1441 echo "TARGET_ARCH=arm" >> $config_mak
1442 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1443 echo "#define TARGET_ARM 1" >> $config_h
1444 bflt="yes"
1445 target_nptl="yes"
1447 cris)
1448 echo "TARGET_ARCH=cris" >> $config_mak
1449 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1450 echo "#define TARGET_CRIS 1" >> $config_h
1452 m68k)
1453 echo "TARGET_ARCH=m68k" >> $config_mak
1454 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1455 echo "#define TARGET_M68K 1" >> $config_h
1456 bflt="yes"
1458 mips|mipsel)
1459 echo "TARGET_ARCH=mips" >> $config_mak
1460 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1461 echo "#define TARGET_MIPS 1" >> $config_h
1462 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1464 mipsn32|mipsn32el)
1465 echo "TARGET_ARCH=mipsn32" >> $config_mak
1466 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1467 echo "#define TARGET_MIPS 1" >> $config_h
1468 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1470 mips64|mips64el)
1471 echo "TARGET_ARCH=mips64" >> $config_mak
1472 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1473 echo "#define TARGET_MIPS 1" >> $config_h
1474 echo "#define TARGET_MIPS64 1" >> $config_h
1475 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1477 ppc)
1478 echo "TARGET_ARCH=ppc" >> $config_mak
1479 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1480 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1481 echo "#define TARGET_PPC 1" >> $config_h
1482 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1484 ppcemb)
1485 echo "TARGET_ARCH=ppcemb" >> $config_mak
1486 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1487 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1488 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1489 echo "#define TARGET_PPC 1" >> $config_h
1490 echo "#define TARGET_PPCEMB 1" >> $config_h
1491 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1493 ppc64)
1494 echo "TARGET_ARCH=ppc64" >> $config_mak
1495 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1496 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1497 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1498 echo "#define TARGET_PPC 1" >> $config_h
1499 echo "#define TARGET_PPC64 1" >> $config_h
1500 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1502 ppc64abi32)
1503 echo "TARGET_ARCH=ppc64" >> $config_mak
1504 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1505 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1506 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1507 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1508 echo "#define TARGET_PPC 1" >> $config_h
1509 echo "#define TARGET_PPC64 1" >> $config_h
1510 echo "#define TARGET_ABI32 1" >> $config_h
1511 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1513 sh4|sh4eb)
1514 echo "TARGET_ARCH=sh4" >> $config_mak
1515 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1516 echo "#define TARGET_SH4 1" >> $config_h
1517 bflt="yes"
1518 target_nptl="yes"
1520 sparc)
1521 echo "TARGET_ARCH=sparc" >> $config_mak
1522 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1523 echo "#define TARGET_SPARC 1" >> $config_h
1525 sparc64)
1526 echo "TARGET_ARCH=sparc64" >> $config_mak
1527 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1528 echo "#define TARGET_SPARC 1" >> $config_h
1529 echo "#define TARGET_SPARC64 1" >> $config_h
1530 elfload32="yes"
1532 sparc32plus)
1533 echo "TARGET_ARCH=sparc64" >> $config_mak
1534 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1535 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1536 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1537 echo "#define TARGET_SPARC 1" >> $config_h
1538 echo "#define TARGET_SPARC64 1" >> $config_h
1539 echo "#define TARGET_ABI32 1" >> $config_h
1542 echo "Unsupported target CPU"
1543 exit 1
1545 esac
1546 if test "$target_bigendian" = "yes" ; then
1547 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1548 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1550 if test "$target_softmmu" = "yes" ; then
1551 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1552 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1554 if test "$target_user_only" = "yes" ; then
1555 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1556 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1558 if test "$target_linux_user" = "yes" ; then
1559 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1560 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1562 if test "$target_darwin_user" = "yes" ; then
1563 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1564 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1567 if test "$target_cpu" = "arm" \
1568 -o "$target_cpu" = "armeb" \
1569 -o "$target_cpu" = "m68k" \
1570 -o "$target_cpu" = "mips" \
1571 -o "$target_cpu" = "mipsel" \
1572 -o "$target_cpu" = "mipsn32" \
1573 -o "$target_cpu" = "mipsn32el" \
1574 -o "$target_cpu" = "mips64" \
1575 -o "$target_cpu" = "mips64el" \
1576 -o "$target_cpu" = "sparc" \
1577 -o "$target_cpu" = "sparc64" \
1578 -o "$target_cpu" = "sparc32plus"; then
1579 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1580 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1582 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1583 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1584 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1586 if test "$target_user_only" = "yes" \
1587 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1588 echo "#define USE_NPTL 1" >> $config_h
1590 # 32 bit ELF loader in addition to native 64 bit loader?
1591 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1592 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1593 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1596 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1598 done # for target in $targets
1600 # build tree in object directory if source path is different from current one
1601 if test "$source_path_used" = "yes" ; then
1602 DIRS="tests tests/cris slirp audio"
1603 FILES="Makefile tests/Makefile"
1604 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1605 FILES="$FILES tests/test-mmap.c"
1606 for dir in $DIRS ; do
1607 mkdir -p $dir
1608 done
1609 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1610 for f in $FILES ; do
1611 rm -f $f
1612 ln -s $source_path/$f $f
1613 done
1616 rm -f $TMPO $TMPC $TMPE $TMPS $TMPI