Rename hz to hertz to keep AIX happy
[qemu/mini2440.git] / configure
blobcf76e9c357a1c08bd4aae2c6c445a223ff3c3b84
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 solaris="no"
102 kqemu="no"
103 profiler="no"
104 cocoa="no"
105 check_gfx="yes"
106 check_gcc="yes"
107 softmmu="yes"
108 linux_user="no"
109 darwin_user="no"
110 bsd_user="no"
111 build_docs="no"
112 uname_release=""
113 curses="yes"
114 aio="yes"
115 nptl="yes"
116 mixemu="no"
117 bluez="yes"
118 kvm="yes"
119 kerneldir=""
121 # OS specific
122 targetos=`uname -s`
123 case $targetos in
124 CYGWIN*)
125 mingw32="yes"
126 OS_CFLAGS="-mno-cygwin"
127 if [ "$cpu" = "i386" ] ; then
128 kqemu="yes"
130 audio_possible_drivers="sdl"
132 MINGW32*)
133 mingw32="yes"
134 if [ "$cpu" = "i386" ] ; then
135 kqemu="yes"
137 audio_possible_drivers="dsound sdl fmod"
139 GNU/kFreeBSD)
140 audio_drv_list="oss"
141 audio_possible_drivers="oss sdl esd pa"
142 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
143 kqemu="yes"
146 FreeBSD)
147 bsd="yes"
148 audio_drv_list="oss"
149 audio_possible_drivers="oss sdl esd pa"
150 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
151 kqemu="yes"
154 NetBSD)
155 bsd="yes"
156 audio_drv_list="oss"
157 audio_possible_drivers="oss sdl esd"
159 OpenBSD)
160 bsd="yes"
161 openbsd="yes"
162 audio_drv_list="oss"
163 audio_possible_drivers="oss sdl esd"
164 oss_lib="-lossaudio"
166 Darwin)
167 bsd="yes"
168 darwin="yes"
169 darwin_user="yes"
170 cocoa="yes"
171 audio_drv_list="coreaudio"
172 audio_possible_drivers="coreaudio sdl fmod"
173 OS_CFLAGS="-mdynamic-no-pic"
174 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
176 SunOS)
177 solaris="yes"
178 make="gmake"
179 install="ginstall"
180 needs_libsunmath="no"
181 solarisrev=`uname -r | cut -f2 -d.`
182 # have to select again, because `uname -m` returns i86pc
183 # even on an x86_64 box.
184 solariscpu=`isainfo -k`
185 if test "${solariscpu}" = "amd64" ; then
186 cpu="x86_64"
188 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
189 if test "$solarisrev" -le 9 ; then
190 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
191 needs_libsunmath="yes"
192 else
193 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
194 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
195 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
196 echo "Studio 11 can be downloaded from www.sun.com."
197 exit 1
200 if test "$solarisrev" -ge 9 ; then
201 kqemu="yes"
204 if test -f /usr/include/sys/soundcard.h ; then
205 audio_drv_list="oss"
207 audio_possible_drivers="oss sdl"
210 audio_drv_list="oss"
211 audio_possible_drivers="oss alsa sdl esd pa"
212 linux="yes"
213 linux_user="yes"
214 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
215 kqemu="yes"
216 audio_possible_drivers="$audio_possible_drivers fmod"
219 esac
221 if [ "$bsd" = "yes" ] ; then
222 if [ "$darwin" != "yes" ] ; then
223 make="gmake"
225 bsd_user="yes"
228 # find source path
229 source_path=`dirname "$0"`
230 source_path_used="no"
231 workdir=`pwd`
232 if [ -z "$source_path" ]; then
233 source_path=$workdir
234 else
235 source_path=`cd "$source_path"; pwd`
237 [ -f "$workdir/vl.c" ] || source_path_used="yes"
239 werror="no"
240 # generate compile errors on warnings for development builds
241 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
242 #werror="yes";
245 for opt do
246 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
247 case "$opt" in
248 --help|-h) show_help=yes
250 --prefix=*) prefix="$optarg"
252 --interp-prefix=*) interp_prefix="$optarg"
254 --source-path=*) source_path="$optarg"
255 source_path_used="yes"
257 --cross-prefix=*) cross_prefix="$optarg"
259 --cc=*) cc="$optarg"
260 gcc3_search="no"
262 --host-cc=*) host_cc="$optarg"
264 --make=*) make="$optarg"
266 --install=*) install="$optarg"
268 --extra-cflags=*) CFLAGS="$optarg"
270 --extra-ldflags=*) LDFLAGS="$optarg"
272 --cpu=*) cpu="$optarg"
274 --target-list=*) target_list="$optarg"
276 --enable-gprof) gprof="yes"
278 --static) static="yes"
280 --disable-sdl) sdl="no"
282 --fmod-lib=*) fmod_lib="$optarg"
284 --fmod-inc=*) fmod_inc="$optarg"
286 --oss-lib=*) oss_lib="$optarg"
288 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
290 --audio-drv-list=*) audio_drv_list="$optarg"
292 --enable-sparse) sparse="yes"
294 --disable-sparse) sparse="no"
296 --disable-vnc-tls) vnc_tls="no"
298 --disable-slirp) slirp="no"
300 --disable-vde) vde="no"
302 --disable-kqemu) kqemu="no"
304 --disable-brlapi) brlapi="no"
306 --disable-bluez) bluez="no"
308 --disable-kvm) kvm="no"
310 --enable-profiler) profiler="yes"
312 --enable-cocoa)
313 cocoa="yes" ;
314 sdl="no" ;
315 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
317 --disable-gfx-check) check_gfx="no"
319 --disable-gcc-check) check_gcc="no"
321 --disable-system) softmmu="no"
323 --enable-system) softmmu="yes"
325 --disable-linux-user) linux_user="no"
327 --enable-linux-user) linux_user="yes"
329 --disable-darwin-user) darwin_user="no"
331 --enable-darwin-user) darwin_user="yes"
333 --disable-bsd-user) bsd_user="no"
335 --enable-bsd-user) bsd_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 --kerneldir=*) kerneldir="$optarg"
365 *) echo "ERROR: unknown option $opt"; show_help="yes"
367 esac
368 done
370 # default flags for all hosts
371 CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
372 CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
373 LDFLAGS="$LDFLAGS -g"
374 if test "$werror" = "yes" ; then
375 CFLAGS="$CFLAGS -Werror"
378 if test "$solaris" = "no" ; then
379 if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
380 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 ""
435 echo "Advanced options (experts only):"
436 echo " --source-path=PATH path of source code [$source_path]"
437 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
438 echo " --cc=CC use C compiler CC [$cc]"
439 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
440 echo " --make=MAKE use specified make [$make]"
441 echo " --install=INSTALL use specified install [$install]"
442 echo " --static enable static build [$static]"
443 echo " --enable-sparse enable sparse checker"
444 echo " --disable-sparse disable sparse checker (default)"
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-bluez disable bluez stack connectivity"
457 echo " --disable-kvm disable KVM acceleration support"
458 echo " --disable-nptl disable usermode NPTL support"
459 echo " --enable-system enable all system emulation targets"
460 echo " --disable-system disable all system emulation targets"
461 echo " --enable-linux-user enable all linux usermode emulation targets"
462 echo " --disable-linux-user disable all linux usermode emulation targets"
463 echo " --enable-darwin-user enable all darwin usermode emulation targets"
464 echo " --disable-darwin-user disable all darwin usermode emulation targets"
465 echo " --enable-bsd-user enable all BSD usermode emulation targets"
466 echo " --disable-bsd-user disable all BSD usermode emulation targets"
467 echo " --fmod-lib path to FMOD library"
468 echo " --fmod-inc path to FMOD includes"
469 echo " --oss-lib path to OSS library"
470 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
471 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
472 echo " --disable-vde disable support for vde network"
473 echo " --disable-aio disable AIO support"
474 echo " --kerneldir=PATH look for kernel includes in PATH"
475 echo ""
476 echo "NOTE: The object files are built at the place where configure is launched"
477 exit 1
480 cc="${cross_prefix}${cc}"
481 ar="${cross_prefix}${ar}"
482 strip="${cross_prefix}${strip}"
484 # check that the C compiler works.
485 cat > $TMPC <<EOF
486 int main(void) {}
489 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
490 : C compiler works ok
491 else
492 echo "ERROR: \"$cc\" either does not exist or does not work"
493 exit 1
496 # check compiler to see if we're on mingw32
497 cat > $TMPC <<EOF
498 #include <windows.h>
499 #ifndef _WIN32
500 #error not windows
501 #endif
502 int main(void) {}
505 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
506 mingw32="yes"
509 if test "$mingw32" = "yes" ; then
510 linux="no"
511 EXESUF=".exe"
512 oss="no"
513 linux_user="no"
514 bsd_user="no"
517 if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
518 AIOLIBS=
519 elif [ "$bsd" = "yes" ]; then
520 AIOLIBS="-lpthread"
521 else
522 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
523 AIOLIBS="-lrt -lpthread"
526 # Check for gcc4, error if pre-gcc4
527 if test "$check_gcc" = "yes" ; then
528 cat > $TMPC <<EOF
529 #if __GNUC__ < 4
530 #error gcc3
531 #endif
532 int main(){return 0;}
534 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
535 echo "WARNING: \"$cc\" looks like gcc 4.x"
536 found_compat_cc="no"
537 if test "$gcc3_search" = "yes" ; then
538 echo "Looking for gcc 3.x"
539 for compat_cc in $gcc3_list ; do
540 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
541 echo "Found \"$compat_cc\""
542 cc="$cross_prefix$compat_cc"
543 found_compat_cc="yes"
544 break
546 done
547 if test "$found_compat_cc" = "no" ; then
548 echo "gcc 3.x not found!"
551 if test "$found_compat_cc" = "no" ; then
552 echo "QEMU is known to have problems when compiled with gcc 4.x"
553 echo "It is recommended that you use gcc 3.x to build QEMU"
554 echo "To use this compiler anyway, configure with --disable-gcc-check"
555 exit 1;
560 if test ! -x "$(which cgcc 2>/dev/null)"; then
561 sparse="no"
565 # Solaris specific configure tool chain decisions
567 if test "$solaris" = "yes" ; then
569 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
570 # override the check with --disable-gcc-check
572 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
573 solgcc=`which $cc`
574 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
575 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
576 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
577 echo "or get the latest patch from SunSolve for gcc"
578 exit 1
581 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
582 if test -z "$solinst" ; then
583 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
584 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
585 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
586 exit 1
588 if test "$solinst" = "/usr/sbin/install" ; then
589 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
590 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
591 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
592 exit 1
594 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
595 if test -z "$sol_ar" ; then
596 echo "Error: No path includes ar"
597 if test -f /usr/ccs/bin/ar ; then
598 echo "Add /usr/ccs/bin to your path and rerun configure"
600 exit 1
605 if test -z "$target_list" ; then
606 # these targets are portable
607 if [ "$softmmu" = "yes" ] ; then
608 target_list="\
609 i386-softmmu \
610 x86_64-softmmu \
611 arm-softmmu \
612 cris-softmmu \
613 m68k-softmmu \
614 mips-softmmu \
615 mipsel-softmmu \
616 mips64-softmmu \
617 mips64el-softmmu \
618 ppc-softmmu \
619 ppcemb-softmmu \
620 ppc64-softmmu \
621 sh4-softmmu \
622 sh4eb-softmmu \
623 sparc-softmmu \
626 # the following are Linux specific
627 if [ "$linux_user" = "yes" ] ; then
628 target_list="${target_list}\
629 i386-linux-user \
630 x86_64-linux-user \
631 alpha-linux-user \
632 arm-linux-user \
633 armeb-linux-user \
634 cris-linux-user \
635 m68k-linux-user \
636 mips-linux-user \
637 mipsel-linux-user \
638 ppc-linux-user \
639 ppc64-linux-user \
640 ppc64abi32-linux-user \
641 sh4-linux-user \
642 sh4eb-linux-user \
643 sparc-linux-user \
644 sparc64-linux-user \
645 sparc32plus-linux-user \
648 # the following are Darwin specific
649 if [ "$darwin_user" = "yes" ] ; then
650 target_list="$target_list i386-darwin-user ppc-darwin-user"
652 # the following are BSD specific
653 if [ "$bsd_user" = "yes" ] ; then
654 target_list="${target_list}\
655 sparc64-bsd-user \
658 else
659 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
661 if test -z "$target_list" ; then
662 echo "No targets enabled"
663 exit 1
666 if test -z "$cross_prefix" ; then
668 # ---
669 # big/little endian test
670 cat > $TMPC << EOF
671 #include <inttypes.h>
672 int main(int argc, char ** argv){
673 volatile uint32_t i=0x01234567;
674 return (*((uint8_t*)(&i))) == 0x67;
678 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
679 $TMPE && bigendian="yes"
680 else
681 echo big/little test failed
684 else
686 # if cross compiling, cannot launch a program, so make a static guess
687 if test "$cpu" = "armv4b" \
688 -o "$cpu" = "hppa" \
689 -o "$cpu" = "m68k" \
690 -o "$cpu" = "mips" \
691 -o "$cpu" = "mips64" \
692 -o "$cpu" = "powerpc" \
693 -o "$cpu" = "s390" \
694 -o "$cpu" = "sparc" \
695 -o "$cpu" = "sparc64"; then
696 bigendian="yes"
701 # host long bits test
702 hostlongbits="32"
703 if test "$cpu" = "x86_64" \
704 -o "$cpu" = "alpha" \
705 -o "$cpu" = "ia64" \
706 -o "$cpu" = "sparc64"; then
707 hostlongbits="64"
710 # ppc specific hostlongbits selection
711 if test "$cpu" = "powerpc" ; then
712 if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
713 grep -q __powerpc64__ $TMPI && hostlongbits=64
714 else
715 echo hostlongbits test failed
716 exit 1
720 # check gcc options support
721 cat > $TMPC <<EOF
722 int main(void) {
726 # Check host NPTL support
727 cat > $TMPC <<EOF
728 #include <sched.h>
729 #include <linux/futex.h>
730 void foo()
732 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
733 #error bork
734 #endif
738 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
740 else
741 nptl="no"
744 ##########################################
745 # zlib check
747 cat > $TMPC << EOF
748 #include <zlib.h>
749 int main(void) { zlibVersion(); return 0; }
751 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz 2> /dev/null ; then
753 else
754 echo
755 echo "Error: zlib check failed"
756 echo "Make sure to have the zlib libs and headers installed."
757 echo
758 exit 1
761 ##########################################
762 # SDL probe
764 sdl_too_old=no
766 if test -z "$sdl" ; then
767 sdl_config="sdl-config"
768 sdl=no
769 sdl_static=no
771 cat > $TMPC << EOF
772 #include <SDL.h>
773 #undef main /* We don't want SDL to override our main() */
774 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
776 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
777 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
778 if test "$_sdlversion" -lt 121 ; then
779 sdl_too_old=yes
780 else
781 if test "$cocoa" = "no" ; then
782 sdl=yes
786 # static link with sdl ?
787 if test "$sdl" = "yes" ; then
788 aa="no"
789 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
790 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
791 if [ "$aa" = "yes" ] ; then
792 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
795 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
796 sdl_static=yes
798 fi # static link
799 fi # sdl compile test
800 else
801 # Make sure to disable cocoa if sdl was set
802 if test "$sdl" = "yes" ; then
803 cocoa="no"
804 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
806 fi # -z $sdl
808 ##########################################
809 # VNC TLS detection
810 if test "$vnc_tls" = "yes" ; then
811 cat > $TMPC <<EOF
812 #include <gnutls/gnutls.h>
813 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
815 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
816 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
817 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
818 $vnc_tls_libs 2> /dev/null ; then
820 else
821 vnc_tls="no"
825 ##########################################
826 # vde libraries probe
827 if test "$vde" = "yes" ; then
828 cat > $TMPC << EOF
829 #include <libvdeplug.h>
830 int main(void)
832 struct vde_open_args a = {0, 0, 0};
833 vde_open("", "", &a);
834 return 0;
837 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
839 else
840 vde="no"
844 ##########################################
845 # Sound support libraries probe
847 audio_drv_probe()
849 drv=$1
850 hdr=$2
851 lib=$3
852 exp=$4
853 cfl=$5
854 cat > $TMPC << EOF
855 #include <$hdr>
856 int main(void) { $exp }
858 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
860 else
861 echo
862 echo "Error: $drv check failed"
863 echo "Make sure to have the $drv libs and headers installed."
864 echo
865 exit 1
869 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
870 for drv in $audio_drv_list; do
871 case $drv in
872 alsa)
873 audio_drv_probe $drv alsa/asoundlib.h -lasound \
874 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
877 fmod)
878 if test -z $fmod_lib || test -z $fmod_inc; then
879 echo
880 echo "Error: You must specify path to FMOD library and headers"
881 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
882 echo
883 exit 1
885 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
888 esd)
889 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
893 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
894 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
897 oss|sdl|core|wav|dsound)
898 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
902 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
903 echo
904 echo "Error: Unknown driver '$drv' selected"
905 echo "Possible drivers are: $audio_possible_drivers"
906 echo
907 exit 1
910 esac
911 done
913 ##########################################
914 # BrlAPI probe
916 if test -z "$brlapi" ; then
917 brlapi=no
918 cat > $TMPC << EOF
919 #include <brlapi.h>
920 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
922 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
923 brlapi=yes
924 fi # brlapi compile test
925 fi # -z $brlapi
927 ##########################################
928 # curses probe
930 if test "$curses" = "yes" ; then
931 curses=no
932 cat > $TMPC << EOF
933 #include <curses.h>
934 int main(void) { return curses_version(); }
936 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
937 curses=yes
939 fi # test "$curses"
941 ##########################################
942 # bluez support probe
943 if test "$bluez" = "yes" ; then
944 `pkg-config bluez` || bluez="no"
946 if test "$bluez" = "yes" ; then
947 cat > $TMPC << EOF
948 #include <bluetooth/bluetooth.h>
949 int main(void) { return bt_error(0); }
951 bluez_cflags=`pkg-config --cflags bluez`
952 bluez_libs=`pkg-config --libs bluez`
953 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
954 $bluez_libs 2> /dev/null ; then
956 else
957 bluez="no"
961 ##########################################
962 # kvm probe
963 if test "$kvm" = "yes" ; then
964 cat > $TMPC <<EOF
965 #include <linux/kvm.h>
966 #if !defined(KVM_API_VERSION) || \
967 KVM_API_VERSION < 12 || \
968 KVM_API_VERSION > 12 || \
969 !defined(KVM_CAP_USER_MEMORY) || \
970 !defined(KVM_CAP_SET_TSS_ADDR)
971 #error Invalid KVM version
972 #endif
973 int main(void) { return 0; }
975 if test "$kerneldir" != "" ; then
976 kvm_cflags=-I"$kerneldir"/include
977 else
978 kvm_cflags=""
980 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
981 2>/dev/null ; then
983 else
984 kvm="no"
988 ##########################################
989 # AIO probe
990 if test "$aio" = "yes" ; then
991 aio=no
992 cat > $TMPC << EOF
993 #include <aio.h>
994 int main(void) { return aio_write(NULL); }
996 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
997 aio=yes
1001 # Check if tools are available to build documentation.
1002 if [ -x "`which texi2html 2>/dev/null`" ] && \
1003 [ -x "`which pod2man 2>/dev/null`" ]; then
1004 build_docs="yes"
1007 if test "$mingw32" = "yes" ; then
1008 if test -z "$prefix" ; then
1009 prefix="c:\\\\Program Files\\\\Qemu"
1011 mansuffix=""
1012 datasuffix=""
1013 docsuffix=""
1014 binsuffix=""
1015 else
1016 if test -z "$prefix" ; then
1017 prefix="/usr/local"
1019 mansuffix="/share/man"
1020 datasuffix="/share/qemu"
1021 docsuffix="/share/doc/qemu"
1022 binsuffix="/bin"
1025 echo "Install prefix $prefix"
1026 echo "BIOS directory $prefix$datasuffix"
1027 echo "binary directory $prefix$binsuffix"
1028 if test "$mingw32" = "no" ; then
1029 echo "Manual directory $prefix$mansuffix"
1030 echo "ELF interp prefix $interp_prefix"
1032 echo "Source path $source_path"
1033 echo "C compiler $cc"
1034 echo "Host C compiler $host_cc"
1035 echo "ARCH_CFLAGS $ARCH_CFLAGS"
1036 echo "make $make"
1037 echo "install $install"
1038 echo "host CPU $cpu"
1039 echo "host big endian $bigendian"
1040 echo "target list $target_list"
1041 echo "gprof enabled $gprof"
1042 echo "sparse enabled $sparse"
1043 echo "profiler $profiler"
1044 echo "static build $static"
1045 echo "-Werror enabled $werror"
1046 if test "$darwin" = "yes" ; then
1047 echo "Cocoa support $cocoa"
1049 echo "SDL support $sdl"
1050 if test "$sdl" != "no" ; then
1051 echo "SDL static link $sdl_static"
1053 echo "curses support $curses"
1054 echo "mingw32 support $mingw32"
1055 echo "Audio drivers $audio_drv_list"
1056 echo "Extra audio cards $audio_card_list"
1057 echo "Mixer emulation $mixemu"
1058 echo "VNC TLS support $vnc_tls"
1059 if test "$vnc_tls" = "yes" ; then
1060 echo " TLS CFLAGS $vnc_tls_cflags"
1061 echo " TLS LIBS $vnc_tls_libs"
1063 if test -n "$sparc_cpu"; then
1064 echo "Target Sparc Arch $sparc_cpu"
1066 echo "kqemu support $kqemu"
1067 echo "brlapi support $brlapi"
1068 echo "Documentation $build_docs"
1069 [ ! -z "$uname_release" ] && \
1070 echo "uname -r $uname_release"
1071 echo "NPTL support $nptl"
1072 echo "vde support $vde"
1073 echo "AIO support $aio"
1074 echo "KVM support $kvm"
1076 if test $sdl_too_old = "yes"; then
1077 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1079 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1080 echo "The error log from compiling the libSDL test is: "
1081 cat /tmp/qemu-$$-sdl-config.log
1083 rm -f /tmp/qemu-$$-sdl-config.log
1084 #if test "$sdl_static" = "no"; then
1085 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1087 config_mak="config-host.mak"
1088 config_h="config-host.h"
1090 #echo "Creating $config_mak and $config_h"
1092 test -f $config_h && mv $config_h ${config_h}~
1094 echo "# Automatically generated by configure - do not modify" > $config_mak
1095 echo "# Configured with: $0 $@" >> $config_mak
1096 echo "/* Automatically generated by configure - do not modify */" > $config_h
1098 echo "prefix=$prefix" >> $config_mak
1099 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1100 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1101 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1102 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1103 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1104 echo "MAKE=$make" >> $config_mak
1105 echo "INSTALL=$install" >> $config_mak
1106 echo "CC=$cc" >> $config_mak
1107 echo "HOST_CC=$host_cc" >> $config_mak
1108 echo "AR=$ar" >> $config_mak
1109 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1110 # XXX: only use CFLAGS and LDFLAGS ?
1111 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1112 # compilation of dyngen tool (useful for win32 build on Linux host)
1113 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1114 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1115 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1116 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1117 echo "CFLAGS=$CFLAGS" >> $config_mak
1118 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1119 echo "EXESUF=$EXESUF" >> $config_mak
1120 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1121 case "$cpu" in
1122 i386)
1123 echo "ARCH=i386" >> $config_mak
1124 echo "#define HOST_I386 1" >> $config_h
1126 x86_64)
1127 echo "ARCH=x86_64" >> $config_mak
1128 echo "#define HOST_X86_64 1" >> $config_h
1130 alpha)
1131 echo "ARCH=alpha" >> $config_mak
1132 echo "#define HOST_ALPHA 1" >> $config_h
1134 armv4b)
1135 echo "ARCH=arm" >> $config_mak
1136 echo "#define HOST_ARM 1" >> $config_h
1138 armv4l)
1139 echo "ARCH=arm" >> $config_mak
1140 echo "#define HOST_ARM 1" >> $config_h
1142 cris)
1143 echo "ARCH=cris" >> $config_mak
1144 echo "#define HOST_CRIS 1" >> $config_h
1146 hppa)
1147 echo "ARCH=hppa" >> $config_mak
1148 echo "#define HOST_HPPA 1" >> $config_h
1150 ia64)
1151 echo "ARCH=ia64" >> $config_mak
1152 echo "#define HOST_IA64 1" >> $config_h
1154 m68k)
1155 echo "ARCH=m68k" >> $config_mak
1156 echo "#define HOST_M68K 1" >> $config_h
1158 mips)
1159 echo "ARCH=mips" >> $config_mak
1160 echo "#define HOST_MIPS 1" >> $config_h
1162 mips64)
1163 echo "ARCH=mips64" >> $config_mak
1164 echo "#define HOST_MIPS64 1" >> $config_h
1166 powerpc)
1167 if test "$hostlongbits" = "32"; then
1168 echo "ARCH=ppc" >> $config_mak
1169 echo "#define HOST_PPC 1" >> $config_h
1170 else
1171 echo "ARCH=ppc64" >> $config_mak
1172 echo "#define HOST_PPC64 1" >> $config_h
1175 s390)
1176 echo "ARCH=s390" >> $config_mak
1177 echo "#define HOST_S390 1" >> $config_h
1179 sparc)
1180 echo "ARCH=sparc" >> $config_mak
1181 echo "#define HOST_SPARC 1" >> $config_h
1183 sparc64)
1184 echo "ARCH=sparc64" >> $config_mak
1185 echo "#define HOST_SPARC64 1" >> $config_h
1188 echo "Unsupported CPU = $cpu"
1189 exit 1
1191 esac
1192 if test "$sparse" = "yes" ; then
1193 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_mak
1194 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_mak
1195 echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1197 if test "$bigendian" = "yes" ; then
1198 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1199 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1201 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1202 if test "$mingw32" = "yes" ; then
1203 echo "CONFIG_WIN32=yes" >> $config_mak
1204 echo "#define CONFIG_WIN32 1" >> $config_h
1205 else
1206 cat > $TMPC << EOF
1207 #include <byteswap.h>
1208 int main(void) { return bswap_32(0); }
1210 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1211 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1215 if [ "$openbsd" = "yes" ] ; then
1216 echo "#define ENOTSUP 4096" >> $config_h
1219 if test "$darwin" = "yes" ; then
1220 echo "CONFIG_DARWIN=yes" >> $config_mak
1221 echo "#define CONFIG_DARWIN 1" >> $config_h
1223 if test "$solaris" = "yes" ; then
1224 echo "CONFIG_SOLARIS=yes" >> $config_mak
1225 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1226 if test "$needs_libsunmath" = "yes" ; then
1227 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1228 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1231 if test -n "$sparc_cpu"; then
1232 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1233 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1235 if test "$gdbstub" = "yes" ; then
1236 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1237 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1239 if test "$gprof" = "yes" ; then
1240 echo "TARGET_GPROF=yes" >> $config_mak
1241 echo "#define HAVE_GPROF 1" >> $config_h
1243 if test "$static" = "yes" ; then
1244 echo "CONFIG_STATIC=yes" >> $config_mak
1245 echo "#define CONFIG_STATIC 1" >> $config_h
1247 if test $profiler = "yes" ; then
1248 echo "#define CONFIG_PROFILER 1" >> $config_h
1250 if test "$slirp" = "yes" ; then
1251 echo "CONFIG_SLIRP=yes" >> $config_mak
1252 echo "#define CONFIG_SLIRP 1" >> $config_h
1254 if test "$vde" = "yes" ; then
1255 echo "CONFIG_VDE=yes" >> $config_mak
1256 echo "#define CONFIG_VDE 1" >> $config_h
1257 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1259 for card in $audio_card_list; do
1260 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1261 echo "$def=yes" >> $config_mak
1262 echo "#define $def 1" >> $config_h
1263 done
1264 echo "#define AUDIO_DRIVERS \\" >> $config_h
1265 for drv in $audio_drv_list; do
1266 echo " &${drv}_audio_driver, \\" >>$config_h
1267 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1268 echo "$def=yes" >> $config_mak
1269 if test "$drv" = "fmod"; then
1270 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1271 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1272 elif test "$drv" = "oss"; then
1273 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1275 done
1276 echo "" >>$config_h
1277 if test "$mixemu" = "yes" ; then
1278 echo "CONFIG_MIXEMU=yes" >> $config_mak
1279 echo "#define CONFIG_MIXEMU 1" >> $config_h
1281 if test "$vnc_tls" = "yes" ; then
1282 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1283 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1284 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1285 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1287 qemu_version=`head $source_path/VERSION`
1288 echo "VERSION=$qemu_version" >>$config_mak
1289 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1291 echo "SRC_PATH=$source_path" >> $config_mak
1292 if [ "$source_path_used" = "yes" ]; then
1293 echo "VPATH=$source_path" >> $config_mak
1295 echo "TARGET_DIRS=$target_list" >> $config_mak
1296 if [ "$build_docs" = "yes" ] ; then
1297 echo "BUILD_DOCS=yes" >> $config_mak
1299 if test "$static" = "yes"; then
1300 sdl1=$sdl_static
1301 else
1302 sdl1=$sdl
1304 if test "$sdl1" = "yes" ; then
1305 echo "#define CONFIG_SDL 1" >> $config_h
1306 echo "CONFIG_SDL=yes" >> $config_mak
1307 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1308 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1309 else
1310 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1312 if [ "${aa}" = "yes" ] ; then
1313 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1314 else
1315 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1318 if test "$cocoa" = "yes" ; then
1319 echo "#define CONFIG_COCOA 1" >> $config_h
1320 echo "CONFIG_COCOA=yes" >> $config_mak
1322 if test "$curses" = "yes" ; then
1323 echo "#define CONFIG_CURSES 1" >> $config_h
1324 echo "CONFIG_CURSES=yes" >> $config_mak
1325 echo "CURSES_LIBS=-lcurses" >> $config_mak
1327 if test "$brlapi" = "yes" ; then
1328 echo "CONFIG_BRLAPI=yes" >> $config_mak
1329 echo "#define CONFIG_BRLAPI 1" >> $config_h
1330 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1332 if test "$bluez" = "yes" ; then
1333 echo "CONFIG_BLUEZ=yes" >> $config_mak
1334 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1335 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1336 echo "#define CONFIG_BLUEZ 1" >> $config_h
1338 if test "$aio" = "yes" ; then
1339 echo "#define CONFIG_AIO 1" >> $config_h
1340 echo "CONFIG_AIO=yes" >> $config_mak
1343 # XXX: suppress that
1344 if [ "$bsd" = "yes" ] ; then
1345 echo "#define O_LARGEFILE 0" >> $config_h
1346 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1347 echo "#define _BSD 1" >> $config_h
1350 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1352 tools=
1353 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1354 tools="qemu-img\$(EXESUF) $tools"
1355 if [ "$linux" = "yes" ] ; then
1356 tools="qemu-nbd\$(EXESUF) $tools"
1359 echo "TOOLS=$tools" >> $config_mak
1361 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1363 for target in $target_list; do
1364 target_dir="$target"
1365 config_mak=$target_dir/config.mak
1366 config_h=$target_dir/config.h
1367 target_cpu=`echo $target | cut -d '-' -f 1`
1368 target_bigendian="no"
1369 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1370 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1371 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1372 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1373 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1374 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1375 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1376 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1377 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1378 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1379 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1380 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1381 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1382 target_softmmu="no"
1383 target_user_only="no"
1384 target_linux_user="no"
1385 target_darwin_user="no"
1386 target_bsd_user="no"
1387 case "$target" in
1388 ${target_cpu}-softmmu)
1389 target_softmmu="yes"
1391 ${target_cpu}-linux-user)
1392 target_user_only="yes"
1393 target_linux_user="yes"
1395 ${target_cpu}-darwin-user)
1396 target_user_only="yes"
1397 target_darwin_user="yes"
1399 ${target_cpu}-bsd-user)
1400 target_user_only="yes"
1401 target_bsd_user="yes"
1404 echo "ERROR: Target '$target' not recognised"
1405 exit 1
1407 esac
1409 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1410 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1411 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1412 echo "To build QEMU without graphical output configure with --disable-gfx-check"
1413 echo "Note that this will disable all output from the virtual graphics card"
1414 echo "except through VNC or curses."
1415 exit 1;
1418 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1420 test -f $config_h && mv $config_h ${config_h}~
1422 mkdir -p $target_dir
1423 mkdir -p $target_dir/fpu
1424 mkdir -p $target_dir/tcg
1425 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1426 mkdir -p $target_dir/nwfpe
1430 # don't use ln -sf as not all "ln -sf" over write the file/link
1432 rm -f $target_dir/Makefile
1433 ln -s $source_path/Makefile.target $target_dir/Makefile
1436 echo "# Automatically generated by configure - do not modify" > $config_mak
1437 echo "/* Automatically generated by configure - do not modify */" > $config_h
1440 echo "include ../config-host.mak" >> $config_mak
1441 echo "#include \"../config-host.h\"" >> $config_h
1443 bflt="no"
1444 elfload32="no"
1445 target_nptl="no"
1446 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1447 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1448 gdb_xml_files=""
1450 # Make sure the target and host cpus are compatible
1451 if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
1452 \( "$target_cpu" = "x86_64" -a "$cpu" = "i386" \) -o \
1453 \( "$target_cpu" = "i386" -a "$cpu" = "x86_64" \) \) ; then
1454 kvm="no"
1456 # Disable KVM for linux-user
1457 if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1458 kvm="no"
1461 case "$target_cpu" in
1462 i386)
1463 echo "TARGET_ARCH=i386" >> $config_mak
1464 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1465 echo "#define TARGET_I386 1" >> $config_h
1466 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1467 then
1468 echo "#define USE_KQEMU 1" >> $config_h
1470 if test "$kvm" = "yes" ; then
1471 echo "CONFIG_KVM=yes" >> $config_mak
1472 echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1473 echo "#define CONFIG_KVM 1" >> $config_h
1475 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1476 if test -n "$gcc3minver" && test $gcc3minver -gt 3
1477 then
1478 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1479 else
1480 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1483 x86_64)
1484 echo "TARGET_ARCH=x86_64" >> $config_mak
1485 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1486 echo "#define TARGET_I386 1" >> $config_h
1487 echo "#define TARGET_X86_64 1" >> $config_h
1488 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1489 then
1490 echo "#define USE_KQEMU 1" >> $config_h
1492 if test "$kvm" = "yes" ; then
1493 echo "CONFIG_KVM=yes" >> $config_mak
1494 echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1495 echo "#define CONFIG_KVM 1" >> $config_h
1498 alpha)
1499 echo "TARGET_ARCH=alpha" >> $config_mak
1500 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1501 echo "#define TARGET_ALPHA 1" >> $config_h
1503 arm|armeb)
1504 echo "TARGET_ARCH=arm" >> $config_mak
1505 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1506 echo "#define TARGET_ARM 1" >> $config_h
1507 bflt="yes"
1508 target_nptl="yes"
1509 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1511 cris)
1512 echo "TARGET_ARCH=cris" >> $config_mak
1513 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1514 echo "#define TARGET_CRIS 1" >> $config_h
1516 m68k)
1517 echo "TARGET_ARCH=m68k" >> $config_mak
1518 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1519 echo "#define TARGET_M68K 1" >> $config_h
1520 bflt="yes"
1521 gdb_xml_files="cf-core.xml cf-fp.xml"
1523 mips|mipsel)
1524 echo "TARGET_ARCH=mips" >> $config_mak
1525 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1526 echo "#define TARGET_MIPS 1" >> $config_h
1527 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1529 mipsn32|mipsn32el)
1530 echo "TARGET_ARCH=mipsn32" >> $config_mak
1531 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1532 echo "#define TARGET_MIPS 1" >> $config_h
1533 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1535 mips64|mips64el)
1536 echo "TARGET_ARCH=mips64" >> $config_mak
1537 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1538 echo "#define TARGET_MIPS 1" >> $config_h
1539 echo "#define TARGET_MIPS64 1" >> $config_h
1540 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1542 ppc)
1543 echo "TARGET_ARCH=ppc" >> $config_mak
1544 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1545 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1546 echo "#define TARGET_PPC 1" >> $config_h
1547 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1549 ppcemb)
1550 echo "TARGET_ARCH=ppcemb" >> $config_mak
1551 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1552 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1553 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1554 echo "#define TARGET_PPC 1" >> $config_h
1555 echo "#define TARGET_PPCEMB 1" >> $config_h
1556 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1558 ppc64)
1559 echo "TARGET_ARCH=ppc64" >> $config_mak
1560 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1561 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1562 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1563 echo "#define TARGET_PPC 1" >> $config_h
1564 echo "#define TARGET_PPC64 1" >> $config_h
1565 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1567 ppc64abi32)
1568 echo "TARGET_ARCH=ppc64" >> $config_mak
1569 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1570 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1571 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1572 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1573 echo "#define TARGET_PPC 1" >> $config_h
1574 echo "#define TARGET_PPC64 1" >> $config_h
1575 echo "#define TARGET_ABI32 1" >> $config_h
1576 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1578 sh4|sh4eb)
1579 echo "TARGET_ARCH=sh4" >> $config_mak
1580 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1581 echo "#define TARGET_SH4 1" >> $config_h
1582 bflt="yes"
1583 target_nptl="yes"
1585 sparc)
1586 echo "TARGET_ARCH=sparc" >> $config_mak
1587 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1588 echo "#define TARGET_SPARC 1" >> $config_h
1590 sparc64)
1591 echo "TARGET_ARCH=sparc64" >> $config_mak
1592 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1593 echo "#define TARGET_SPARC 1" >> $config_h
1594 echo "#define TARGET_SPARC64 1" >> $config_h
1595 elfload32="yes"
1597 sparc32plus)
1598 echo "TARGET_ARCH=sparc64" >> $config_mak
1599 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1600 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1601 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1602 echo "#define TARGET_SPARC 1" >> $config_h
1603 echo "#define TARGET_SPARC64 1" >> $config_h
1604 echo "#define TARGET_ABI32 1" >> $config_h
1607 echo "Unsupported target CPU"
1608 exit 1
1610 esac
1611 if test "$target_bigendian" = "yes" ; then
1612 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1613 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1615 if test "$target_softmmu" = "yes" ; then
1616 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1617 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1619 if test "$target_user_only" = "yes" ; then
1620 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1621 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1623 if test "$target_linux_user" = "yes" ; then
1624 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1625 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1627 if test "$target_darwin_user" = "yes" ; then
1628 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1629 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1631 list=""
1632 if test ! -z "$gdb_xml_files" ; then
1633 for x in $gdb_xml_files; do
1634 list="$list $source_path/gdb-xml/$x"
1635 done
1637 echo "TARGET_XML_FILES=$list" >> $config_mak
1639 if test "$target_cpu" = "arm" \
1640 -o "$target_cpu" = "armeb" \
1641 -o "$target_cpu" = "m68k" \
1642 -o "$target_cpu" = "mips" \
1643 -o "$target_cpu" = "mipsel" \
1644 -o "$target_cpu" = "mipsn32" \
1645 -o "$target_cpu" = "mipsn32el" \
1646 -o "$target_cpu" = "mips64" \
1647 -o "$target_cpu" = "mips64el" \
1648 -o "$target_cpu" = "sparc" \
1649 -o "$target_cpu" = "sparc64" \
1650 -o "$target_cpu" = "sparc32plus"; then
1651 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1652 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1654 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1655 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1656 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1658 if test "$target_user_only" = "yes" \
1659 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1660 echo "#define USE_NPTL 1" >> $config_h
1662 # 32 bit ELF loader in addition to native 64 bit loader?
1663 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1664 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1665 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1667 if test "$target_bsd_user" = "yes" ; then
1668 echo "CONFIG_BSD_USER=yes" >> $config_mak
1669 echo "#define CONFIG_BSD_USER 1" >> $config_h
1672 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1674 done # for target in $targets
1676 # build tree in object directory if source path is different from current one
1677 if test "$source_path_used" = "yes" ; then
1678 DIRS="tests tests/cris slirp audio"
1679 FILES="Makefile tests/Makefile"
1680 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1681 FILES="$FILES tests/test-mmap.c"
1682 for dir in $DIRS ; do
1683 mkdir -p $dir
1684 done
1685 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1686 for f in $FILES ; do
1687 rm -f $f
1688 ln -s $source_path/$f $f
1689 done
1692 rm -f $TMPO $TMPC $TMPE $TMPS $TMPI