VNC password authentication, by Daniel P. Berrange.
[qemu/dscho.git] / configure
blob0f959b7d0d8a64fb5ef399ae5ba51941077c60b4
1 #!/bin/sh
3 # qemu configure script (c) 2003 Fabrice Bellard
5 # set temporary file name
6 if test ! -z "$TMPDIR" ; then
7 TMPDIR1="${TMPDIR}"
8 elif test ! -z "$TEMPDIR" ; then
9 TMPDIR1="${TEMPDIR}"
10 else
11 TMPDIR1="/tmp"
14 TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15 TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16 TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17 TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
19 # default parameters
20 prefix=""
21 interp_prefix="/usr/gnemul/qemu-%M"
22 static="no"
23 cross_prefix=""
24 cc="gcc"
25 gcc3_search="yes"
26 gcc3_list="gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
27 host_cc="gcc"
28 ar="ar"
29 make="make"
30 install="install"
31 strip="strip"
32 cpu=`uname -m`
33 target_list=""
34 case "$cpu" in
35 i386|i486|i586|i686|i86pc|BePC)
36 cpu="i386"
38 armv*b)
39 cpu="armv4b"
41 armv*l)
42 cpu="armv4l"
44 alpha)
45 cpu="alpha"
47 "Power Macintosh"|ppc|ppc64)
48 cpu="powerpc"
50 mips)
51 cpu="mips"
53 mips64)
54 cpu="mips64"
56 s390*)
57 cpu="s390"
59 sparc|sun4[cdmuv])
60 cpu="sparc"
62 sparc64)
63 cpu="sparc64"
65 ia64)
66 cpu="ia64"
68 m68k)
69 cpu="m68k"
71 x86_64|amd64)
72 cpu="x86_64"
75 cpu="unknown"
77 esac
78 gprof="no"
79 bigendian="no"
80 mingw32="no"
81 EXESUF=""
82 gdbstub="yes"
83 slirp="yes"
84 adlib="no"
85 oss="no"
86 dsound="no"
87 coreaudio="no"
88 alsa="no"
89 fmod="no"
90 fmod_lib=""
91 fmod_inc=""
92 bsd="no"
93 linux="no"
94 kqemu="no"
95 profiler="no"
96 cocoa="no"
97 check_gfx="yes"
98 check_gcc="yes"
99 softmmu="yes"
100 linux_user="no"
101 darwin_user="no"
102 build_docs="no"
103 uname_release=""
105 # OS specific
106 targetos=`uname -s`
107 case $targetos in
108 CYGWIN*)
109 mingw32="yes"
110 OS_CFLAGS="-mno-cygwin"
111 VL_OS_LDFLAGS="-mno-cygwin"
112 if [ "$cpu" = "i386" ] ; then
113 kqemu="yes"
116 MINGW32*)
117 mingw32="yes"
118 if [ "$cpu" = "i386" ] ; then
119 kqemu="yes"
122 GNU/kFreeBSD)
123 oss="yes"
124 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
125 kqemu="yes"
128 FreeBSD)
129 bsd="yes"
130 oss="yes"
131 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
132 kqemu="yes"
135 NetBSD)
136 bsd="yes"
137 oss="yes"
139 OpenBSD)
140 bsd="yes"
141 oss="yes"
143 Darwin)
144 bsd="yes"
145 darwin="yes"
146 darwin_user="yes"
147 cocoa="yes"
148 coreaudio="yes"
149 OS_CFLAGS="-mdynamic-no-pic"
151 SunOS)
152 solaris="yes"
153 make="gmake"
154 install="ginstall"
155 needs_libsunmath="no"
156 solarisrev=`uname -r | cut -f2 -d.`
157 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
158 if test "$solarisrev" -le 9 ; then
159 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
160 needs_libsunmath="yes"
161 else
162 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
163 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
164 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
165 echo "Studio 11 can be downloaded from www.sun.com."
166 exit 1
169 if test "$solarisrev" -ge 9 ; then
170 kqemu="yes"
173 if test -f /usr/include/sys/soundcard.h ; then
174 oss=yes
178 oss="yes"
179 linux="yes"
180 linux_user="yes"
181 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
182 kqemu="yes"
185 esac
187 if [ "$bsd" = "yes" ] ; then
188 if [ "$darwin" != "yes" ] ; then
189 make="gmake"
193 # find source path
194 source_path=`dirname "$0"`
195 if [ -z "$source_path" ]; then
196 source_path=`pwd`
197 else
198 source_path=`cd "$source_path"; pwd`
200 if test "$source_path" = `pwd` ; then
201 source_path_used="no"
202 else
203 source_path_used="yes"
206 for opt do
207 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
208 case "$opt" in
209 --help|-h) show_help=yes
211 --prefix=*) prefix="$optarg"
213 --interp-prefix=*) interp_prefix="$optarg"
215 --source-path=*) source_path="$optarg"
216 source_path_used="yes"
218 --cross-prefix=*) cross_prefix="$optarg"
220 --cc=*) cc="$optarg"
221 gcc3_search="no"
223 --host-cc=*) host_cc="$optarg"
225 --make=*) make="$optarg"
227 --install=*) install="$optarg"
229 --extra-cflags=*) CFLAGS="$optarg"
231 --extra-ldflags=*) LDFLAGS="$optarg"
233 --cpu=*) cpu="$optarg"
235 --target-list=*) target_list="$optarg"
237 --enable-gprof) gprof="yes"
239 --static) static="yes"
241 --disable-sdl) sdl="no"
243 --enable-coreaudio) coreaudio="yes"
245 --enable-alsa) alsa="yes"
247 --enable-dsound) dsound="yes"
249 --enable-fmod) fmod="yes"
251 --fmod-lib=*) fmod_lib="$optarg"
253 --fmod-inc=*) fmod_inc="$optarg"
255 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
257 --disable-slirp) slirp="no"
259 --enable-adlib) adlib="yes"
261 --disable-kqemu) kqemu="no"
263 --enable-profiler) profiler="yes"
265 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
267 --disable-gfx-check) check_gfx="no"
269 --disable-gcc-check) check_gcc="no"
271 --disable-system) softmmu="no"
273 --enable-system) softmmu="yes"
275 --disable-linux-user) linux_user="no"
277 --enable-linux-user) linux_user="yes"
279 --disable-darwin-user) darwin_user="no"
281 --enable-darwin-user) darwin_user="yes"
283 --enable-uname-release=*) uname_release="$optarg"
285 --sparc_cpu=*)
286 sparc_cpu="$optarg"
287 case $sparc_cpu in
288 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
289 target_cpu="sparc"; cpu="sparc" ;;
290 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
291 target_cpu="sparc"; cpu="sparc" ;;
292 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
293 target_cpu="sparc64"; cpu="sparc64" ;;
294 *) echo "undefined SPARC architecture. Exiting";exit 1;;
295 esac
297 esac
298 done
300 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
301 AIOLIBS=
302 else
303 AIOLIBS="-lrt"
306 # default flags for all hosts
307 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
308 LDFLAGS="$LDFLAGS -g"
311 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
312 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
314 case $cpu in
315 sparc) if test -z "$sparc_cpu" ; then
316 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
317 ARCH_LDFLAGS="-m32"
318 else
319 ARCH_CFLAGS="${SP_CFLAGS}"
320 ARCH_LDFLAGS="${SP_LDFLAGS}"
323 sparc64) if test -z "$sparc_cpu" ; then
324 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
325 ARCH_LDFLAGS="-m64"
326 else
327 ARCH_CFLAGS="${SP_CFLAGS}"
328 ARCH_LDFLAGS="${SP_LDFLAGS}"
331 esac
333 if test x"$show_help" = x"yes" ; then
334 cat << EOF
336 Usage: configure [options]
337 Options: [defaults in brackets after descriptions]
340 echo "Standard options:"
341 echo " --help print this message"
342 echo " --prefix=PREFIX install in PREFIX [$prefix]"
343 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
344 echo " use %M for cpu name [$interp_prefix]"
345 echo " --target-list=LIST set target list [$target_list]"
346 echo ""
347 echo "kqemu kernel acceleration support:"
348 echo " --disable-kqemu disable kqemu support"
349 echo ""
350 echo "Advanced options (experts only):"
351 echo " --source-path=PATH path of source code [$source_path]"
352 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
353 echo " --cc=CC use C compiler CC [$cc]"
354 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
355 echo " --make=MAKE use specified make [$make]"
356 echo " --install=INSTALL use specified install [$install]"
357 echo " --static enable static build [$static]"
358 echo " --enable-cocoa enable COCOA (Mac OS X only)"
359 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
360 echo " --enable-adlib enable Adlib emulation"
361 echo " --enable-coreaudio enable Coreaudio audio driver"
362 echo " --enable-alsa enable ALSA audio driver"
363 echo " --enable-fmod enable FMOD audio driver"
364 echo " --enable-dsound enable DirectSound audio driver"
365 echo " --enable-system enable all system emulation targets"
366 echo " --disable-system disable all system emulation targets"
367 echo " --enable-linux-user enable all linux usermode emulation targets"
368 echo " --disable-linux-user disable all linux usermode emulation targets"
369 echo " --enable-darwin-user enable all darwin usermode emulation targets"
370 echo " --disable-darwin-user disable all darwin usermode emulation targets"
371 echo " --fmod-lib path to FMOD library"
372 echo " --fmod-inc path to FMOD includes"
373 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
374 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
375 echo ""
376 echo "NOTE: The object files are built at the place where configure is launched"
377 exit 1
380 cc="${cross_prefix}${cc}"
381 ar="${cross_prefix}${ar}"
382 strip="${cross_prefix}${strip}"
384 # check that the C compiler works.
385 cat > $TMPC <<EOF
386 int main(void) {}
389 if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
390 : C compiler works ok
391 else
392 echo "ERROR: \"$cc\" either does not exist or does not work"
393 exit 1
396 if test "$mingw32" = "yes" ; then
397 linux="no"
398 EXESUF=".exe"
399 oss="no"
402 # Check for gcc4, error if pre-gcc4
403 if test "$check_gcc" = "yes" ; then
404 cat > $TMPC <<EOF
405 #if __GNUC__ < 4
406 #error gcc3
407 #endif
408 int main(){return 0;}
410 if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
411 echo "WARNING: \"$cc\" looks like gcc 4.x"
412 found_compat_cc="no"
413 if test "$gcc3_search" = "yes" ; then
414 echo "Looking for gcc 3.x"
415 for compat_cc in $gcc3_list ; do
416 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
417 echo "Found \"$compat_cc\""
418 cc="$cross_prefix$compat_cc"
419 found_compat_cc="yes"
420 break
422 done
423 if test "$found_compat_cc" = "no" ; then
424 echo "gcc 3.x not found!"
427 if test "$found_compat_cc" = "no" ; then
428 echo "QEMU is known to have problems when compiled with gcc 4.x"
429 echo "It is recommended that you use gcc 3.x to build QEMU"
430 echo "To use this compiler anyway, configure with --disable-gcc-check"
431 exit 1;
437 # Solaris specific configure tool chain decisions
439 if test "$solaris" = "yes" ; then
441 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
442 # override the check with --disable-gcc-check
444 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
445 solgcc=`which $cc`
446 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
447 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
448 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
449 echo "or get the latest patch from SunSolve for gcc"
450 exit 1
453 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
454 if test -z "$solinst" ; then
455 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
456 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
457 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
458 exit 1
460 if test "$solinst" = "/usr/sbin/install" ; then
461 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
462 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
463 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
464 exit 1
466 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
467 if test -z "$sol_ar" ; then
468 echo "Error: No path includes ar"
469 if test -f /usr/ccs/bin/ar ; then
470 echo "Add /usr/ccs/bin to your path and rerun configure"
472 exit 1
477 if test -z "$target_list" ; then
478 # these targets are portable
479 if [ "$softmmu" = "yes" ] ; then
480 target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu arm-softmmu ppc64-softmmu ppcemb-softmmu m68k-softmmu"
482 # the following are Linux specific
483 if [ "$linux_user" = "yes" ] ; then
484 target_list="i386-linux-user arm-linux-user armeb-linux-user sparc-linux-user ppc-linux-user mips-linux-user mipsel-linux-user m68k-linux-user alpha-linux-user $target_list"
486 # the following are Darwin specific
487 if [ "$darwin_user" = "yes" ] ; then
488 target_list="i386-darwin-user ppc-darwin-user $target_list"
490 else
491 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
493 if test -z "$target_list" ; then
494 echo "No targets enabled"
495 exit 1
498 if test -z "$cross_prefix" ; then
500 # ---
501 # big/little endian test
502 cat > $TMPC << EOF
503 #include <inttypes.h>
504 int main(int argc, char ** argv){
505 volatile uint32_t i=0x01234567;
506 return (*((uint8_t*)(&i))) == 0x67;
510 if $cc -o $TMPE $TMPC 2> /dev/null ; then
511 $TMPE && bigendian="yes"
512 else
513 echo big/little test failed
516 else
518 # if cross compiling, cannot launch a program, so make a static guess
519 if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "mips64" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
520 bigendian="yes"
525 # host long bits test
526 hostlongbits="32"
527 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
528 hostlongbits="64"
531 # check gcc options support
532 cat > $TMPC <<EOF
533 int main(void) {
537 ##########################################
538 # SDL probe
540 sdl_too_old=no
542 if test -z "$sdl" ; then
543 sdl_config="sdl-config"
544 sdl=no
545 sdl_static=no
547 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
548 # win32 cross compilation case
549 sdl_config="i386-mingw32msvc-sdl-config"
550 sdl=yes
551 else
552 # normal SDL probe
553 cat > $TMPC << EOF
554 #include <SDL.h>
555 #undef main /* We don't want SDL to override our main() */
556 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
558 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
559 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
560 if test "$_sdlversion" -lt 121 ; then
561 sdl_too_old=yes
562 else
563 if test "$cocoa" = "no" ; then
564 sdl=yes
568 # static link with sdl ?
569 if test "$sdl" = "yes" ; then
570 aa="no"
571 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
572 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
573 if [ "$aa" = "yes" ] ; then
574 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
577 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
578 sdl_static=yes
580 fi # static link
581 fi # sdl compile test
582 fi # cross compilation
583 else
584 # Make sure to disable cocoa if sdl was set
585 if test "$sdl" = "yes" ; then
586 cocoa="no"
587 coreaudio="no"
589 fi # -z $sdl
591 ##########################################
592 # alsa sound support libraries
594 if test "$alsa" = "yes" ; then
595 cat > $TMPC << EOF
596 #include <alsa/asoundlib.h>
597 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
599 if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
601 else
602 echo
603 echo "Error: Could not find alsa"
604 echo "Make sure to have the alsa libs and headers installed."
605 echo
606 exit 1
610 # Check if tools are available to build documentation.
611 if [ -x "`which texi2html 2>/dev/null`" ] && \
612 [ -x "`which pod2man 2>/dev/null`" ]; then
613 build_docs="yes"
616 if test "$mingw32" = "yes" ; then
617 if test -z "$prefix" ; then
618 prefix="/c/Program Files/Qemu"
620 mansuffix=""
621 datasuffix=""
622 docsuffix=""
623 binsuffix=""
624 else
625 if test -z "$prefix" ; then
626 prefix="/usr/local"
628 mansuffix="/share/man"
629 datasuffix="/share/qemu"
630 docsuffix="/share/doc/qemu"
631 binsuffix="/bin"
634 echo "Install prefix $prefix"
635 echo "BIOS directory $prefix$datasuffix"
636 echo "binary directory $prefix$binsuffix"
637 if test "$mingw32" = "no" ; then
638 echo "Manual directory $prefix$mansuffix"
639 echo "ELF interp prefix $interp_prefix"
641 echo "Source path $source_path"
642 echo "C compiler $cc"
643 echo "Host C compiler $host_cc"
644 echo "make $make"
645 echo "install $install"
646 echo "host CPU $cpu"
647 echo "host big endian $bigendian"
648 echo "target list $target_list"
649 echo "gprof enabled $gprof"
650 echo "profiler $profiler"
651 echo "static build $static"
652 if test "$darwin" = "yes" ; then
653 echo "Cocoa support $cocoa"
655 echo "SDL support $sdl"
656 if test "$sdl" != "no" ; then
657 echo "SDL static link $sdl_static"
659 echo "mingw32 support $mingw32"
660 echo "Adlib support $adlib"
661 echo "CoreAudio support $coreaudio"
662 echo "ALSA support $alsa"
663 echo "DSound support $dsound"
664 if test "$fmod" = "yes"; then
665 if test -z $fmod_lib || test -z $fmod_inc; then
666 echo
667 echo "Error: You must specify path to FMOD library and headers"
668 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
669 echo
670 exit 1
672 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
673 else
674 fmod_support=""
676 echo "FMOD support $fmod $fmod_support"
677 echo "OSS support $oss"
678 if test -n "$sparc_cpu"; then
679 echo "Target Sparc Arch $sparc_cpu"
681 echo "kqemu support $kqemu"
682 echo "Documentation $build_docs"
683 [ ! -z "$uname_release" ] && \
684 echo "uname -r $uname_release"
686 if test $sdl_too_old = "yes"; then
687 echo "-> Your SDL version is too old - please upgrade to have SDL support"
689 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
690 echo "The error log from compiling the libSDL test is: "
691 cat /tmp/qemu-$$-sdl-config.log
693 rm -f /tmp/qemu-$$-sdl-config.log
694 #if test "$sdl_static" = "no"; then
695 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
697 config_mak="config-host.mak"
698 config_h="config-host.h"
700 #echo "Creating $config_mak and $config_h"
702 test -f $config_h && mv $config_h ${config_h}~
704 echo "# Automatically generated by configure - do not modify" > $config_mak
705 echo "# Configured with: $0 $@" >> $config_mak
706 echo "/* Automatically generated by configure - do not modify */" > $config_h
708 echo "prefix=$prefix" >> $config_mak
709 echo "bindir=\${prefix}$binsuffix" >> $config_mak
710 echo "mandir=\${prefix}$mansuffix" >> $config_mak
711 echo "datadir=\${prefix}$datasuffix" >> $config_mak
712 echo "docdir=\${prefix}$docsuffix" >> $config_mak
713 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
714 echo "MAKE=$make" >> $config_mak
715 echo "INSTALL=$install" >> $config_mak
716 echo "CC=$cc" >> $config_mak
717 echo "HOST_CC=$host_cc" >> $config_mak
718 echo "AR=$ar" >> $config_mak
719 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
720 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
721 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
722 echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
723 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
724 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
725 echo "CFLAGS=$CFLAGS" >> $config_mak
726 echo "LDFLAGS=$LDFLAGS" >> $config_mak
727 echo "EXESUF=$EXESUF" >> $config_mak
728 echo "AIOLIBS=$AIOLIBS" >> $config_mak
729 if test "$cpu" = "i386" ; then
730 echo "ARCH=i386" >> $config_mak
731 echo "#define HOST_I386 1" >> $config_h
732 elif test "$cpu" = "x86_64" ; then
733 echo "ARCH=x86_64" >> $config_mak
734 echo "#define HOST_X86_64 1" >> $config_h
735 elif test "$cpu" = "armv4b" ; then
736 echo "ARCH=arm" >> $config_mak
737 echo "#define HOST_ARM 1" >> $config_h
738 elif test "$cpu" = "armv4l" ; then
739 echo "ARCH=arm" >> $config_mak
740 echo "#define HOST_ARM 1" >> $config_h
741 elif test "$cpu" = "powerpc" ; then
742 echo "ARCH=ppc" >> $config_mak
743 echo "#define HOST_PPC 1" >> $config_h
744 elif test "$cpu" = "mips" ; then
745 echo "ARCH=mips" >> $config_mak
746 echo "#define HOST_MIPS 1" >> $config_h
747 elif test "$cpu" = "mips64" ; then
748 echo "ARCH=mips64" >> $config_mak
749 echo "#define HOST_MIPS64 1" >> $config_h
750 elif test "$cpu" = "s390" ; then
751 echo "ARCH=s390" >> $config_mak
752 echo "#define HOST_S390 1" >> $config_h
753 elif test "$cpu" = "alpha" ; then
754 echo "ARCH=alpha" >> $config_mak
755 echo "#define HOST_ALPHA 1" >> $config_h
756 elif test "$cpu" = "sparc" ; then
757 echo "ARCH=sparc" >> $config_mak
758 echo "#define HOST_SPARC 1" >> $config_h
759 elif test "$cpu" = "sparc64" ; then
760 echo "ARCH=sparc64" >> $config_mak
761 echo "#define HOST_SPARC64 1" >> $config_h
762 elif test "$cpu" = "ia64" ; then
763 echo "ARCH=ia64" >> $config_mak
764 echo "#define HOST_IA64 1" >> $config_h
765 elif test "$cpu" = "m68k" ; then
766 echo "ARCH=m68k" >> $config_mak
767 echo "#define HOST_M68K 1" >> $config_h
768 else
769 echo "Unsupported CPU = $cpu"
770 exit 1
772 if test "$bigendian" = "yes" ; then
773 echo "WORDS_BIGENDIAN=yes" >> $config_mak
774 echo "#define WORDS_BIGENDIAN 1" >> $config_h
776 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
777 if test "$mingw32" = "yes" ; then
778 echo "CONFIG_WIN32=yes" >> $config_mak
779 echo "#define CONFIG_WIN32 1" >> $config_h
780 else
781 cat > $TMPC << EOF
782 #include <byteswap.h>
783 int main(void) { return bswap_32(0); }
785 if $cc -o $TMPE $TMPC 2> /dev/null ; then
786 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
789 if test "$darwin" = "yes" ; then
790 echo "CONFIG_DARWIN=yes" >> $config_mak
791 echo "#define CONFIG_DARWIN 1" >> $config_h
793 if test "$solaris" = "yes" ; then
794 echo "CONFIG_SOLARIS=yes" >> $config_mak
795 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
796 if test "$needs_libsunmath" = "yes" ; then
797 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
798 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
801 if test -n "$sparc_cpu"; then
802 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
803 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
805 if test "$gdbstub" = "yes" ; then
806 echo "CONFIG_GDBSTUB=yes" >> $config_mak
807 echo "#define CONFIG_GDBSTUB 1" >> $config_h
809 if test "$gprof" = "yes" ; then
810 echo "TARGET_GPROF=yes" >> $config_mak
811 echo "#define HAVE_GPROF 1" >> $config_h
813 if test "$static" = "yes" ; then
814 echo "CONFIG_STATIC=yes" >> $config_mak
815 echo "#define CONFIG_STATIC 1" >> $config_h
817 if test $profiler = "yes" ; then
818 echo "#define CONFIG_PROFILER 1" >> $config_h
820 if test "$slirp" = "yes" ; then
821 echo "CONFIG_SLIRP=yes" >> $config_mak
822 echo "#define CONFIG_SLIRP 1" >> $config_h
824 if test "$adlib" = "yes" ; then
825 echo "CONFIG_ADLIB=yes" >> $config_mak
826 echo "#define CONFIG_ADLIB 1" >> $config_h
828 if test "$oss" = "yes" ; then
829 echo "CONFIG_OSS=yes" >> $config_mak
830 echo "#define CONFIG_OSS 1" >> $config_h
832 if test "$coreaudio" = "yes" ; then
833 echo "CONFIG_COREAUDIO=yes" >> $config_mak
834 echo "#define CONFIG_COREAUDIO 1" >> $config_h
836 if test "$alsa" = "yes" ; then
837 echo "CONFIG_ALSA=yes" >> $config_mak
838 echo "#define CONFIG_ALSA 1" >> $config_h
840 if test "$dsound" = "yes" ; then
841 echo "CONFIG_DSOUND=yes" >> $config_mak
842 echo "#define CONFIG_DSOUND 1" >> $config_h
844 if test "$fmod" = "yes" ; then
845 echo "CONFIG_FMOD=yes" >> $config_mak
846 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
847 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
848 echo "#define CONFIG_FMOD 1" >> $config_h
850 qemu_version=`head $source_path/VERSION`
851 echo "VERSION=$qemu_version" >>$config_mak
852 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
854 echo "SRC_PATH=$source_path" >> $config_mak
855 if [ "$source_path_used" = "yes" ]; then
856 echo "VPATH=$source_path" >> $config_mak
858 echo "TARGET_DIRS=$target_list" >> $config_mak
859 if [ "$build_docs" = "yes" ] ; then
860 echo "BUILD_DOCS=yes" >> $config_mak
863 # XXX: suppress that
864 if [ "$bsd" = "yes" ] ; then
865 echo "#define O_LARGEFILE 0" >> $config_h
866 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
867 echo "#define _BSD 1" >> $config_h
870 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
872 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
874 for target in $target_list; do
875 target_dir="$target"
876 config_mak=$target_dir/config.mak
877 config_h=$target_dir/config.h
878 target_cpu=`echo $target | cut -d '-' -f 1`
879 target_bigendian="no"
880 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
881 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
882 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
883 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
884 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
885 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
886 [ "$target_cpu" = "mips" ] && target_bigendian=yes
887 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
888 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
889 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
890 target_softmmu="no"
891 target_user_only="no"
892 target_linux_user="no"
893 target_darwin_user="no"
894 case "$target" in
895 ${target_cpu}-softmmu)
896 target_softmmu="yes"
898 ${target_cpu}-linux-user)
899 target_user_only="yes"
900 target_linux_user="yes"
902 ${target_cpu}-darwin-user)
903 target_user_only="yes"
904 target_darwin_user="yes"
907 echo "ERROR: Target '$target' not recognised"
908 exit 1
910 esac
912 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
913 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
914 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
915 echo "To build QEMU without graphical output configure with --disable-gfx-check"
916 echo "Note that this will disable all output from the virtual graphics card."
917 exit 1;
920 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
922 test -f $config_h && mv $config_h ${config_h}~
924 mkdir -p $target_dir
925 mkdir -p $target_dir/fpu
926 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
927 mkdir -p $target_dir/nwfpe
929 if test "$target_user_only" = "no" ; then
930 mkdir -p $target_dir/slirp
934 # don't use ln -sf as not all "ln -sf" over write the file/link
936 rm -f $target_dir/Makefile
937 ln -s $source_path/Makefile.target $target_dir/Makefile
940 echo "# Automatically generated by configure - do not modify" > $config_mak
941 echo "/* Automatically generated by configure - do not modify */" > $config_h
944 echo "include ../config-host.mak" >> $config_mak
945 echo "#include \"../config-host.h\"" >> $config_h
947 bflt="no"
948 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
949 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
951 if test "$target_cpu" = "i386" ; then
952 echo "TARGET_ARCH=i386" >> $config_mak
953 echo "#define TARGET_ARCH \"i386\"" >> $config_h
954 echo "#define TARGET_I386 1" >> $config_h
955 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
956 echo "#define USE_KQEMU 1" >> $config_h
958 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
959 echo "TARGET_ARCH=arm" >> $config_mak
960 echo "#define TARGET_ARCH \"arm\"" >> $config_h
961 echo "#define TARGET_ARM 1" >> $config_h
962 bflt="yes"
963 elif test "$target_cpu" = "sparc" ; then
964 echo "TARGET_ARCH=sparc" >> $config_mak
965 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
966 echo "#define TARGET_SPARC 1" >> $config_h
967 elif test "$target_cpu" = "sparc64" ; then
968 echo "TARGET_ARCH=sparc64" >> $config_mak
969 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
970 echo "#define TARGET_SPARC 1" >> $config_h
971 echo "#define TARGET_SPARC64 1" >> $config_h
972 elif test "$target_cpu" = "ppc" ; then
973 echo "TARGET_ARCH=ppc" >> $config_mak
974 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
975 echo "#define TARGET_PPC 1" >> $config_h
976 elif test "$target_cpu" = "ppc64" ; then
977 echo "TARGET_ARCH=ppc64" >> $config_mak
978 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
979 echo "#define TARGET_PPC 1" >> $config_h
980 echo "#define TARGET_PPC64 1" >> $config_h
981 elif test "$target_cpu" = "ppcemb" ; then
982 echo "TARGET_ARCH=ppcemb" >> $config_mak
983 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
984 echo "#define TARGET_PPC 1" >> $config_h
985 echo "#define TARGET_PPCEMB 1" >> $config_h
986 elif test "$target_cpu" = "x86_64" ; then
987 echo "TARGET_ARCH=x86_64" >> $config_mak
988 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
989 echo "#define TARGET_I386 1" >> $config_h
990 echo "#define TARGET_X86_64 1" >> $config_h
991 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
992 echo "#define USE_KQEMU 1" >> $config_h
994 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
995 echo "TARGET_ARCH=mips" >> $config_mak
996 echo "#define TARGET_ARCH \"mips\"" >> $config_h
997 echo "#define TARGET_MIPS 1" >> $config_h
998 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
999 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1000 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1001 echo "TARGET_ARCH=mips64" >> $config_mak
1002 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1003 echo "#define TARGET_MIPS 1" >> $config_h
1004 echo "#define TARGET_MIPS64 1" >> $config_h
1005 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1006 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1007 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1008 echo "TARGET_ARCH=sh4" >> $config_mak
1009 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1010 echo "#define TARGET_SH4 1" >> $config_h
1011 bflt="yes"
1012 elif test "$target_cpu" = "m68k" ; then
1013 echo "TARGET_ARCH=m68k" >> $config_mak
1014 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1015 echo "#define TARGET_M68K 1" >> $config_h
1016 bflt="yes"
1017 elif test "$target_cpu" = "alpha" ; then
1018 echo "TARGET_ARCH=alpha" >> $config_mak
1019 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1020 echo "#define TARGET_ALPHA 1" >> $config_h
1021 else
1022 echo "Unsupported target CPU"
1023 exit 1
1025 if test "$target_bigendian" = "yes" ; then
1026 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1027 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1029 if test "$target_softmmu" = "yes" ; then
1030 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1031 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1033 if test "$target_user_only" = "yes" ; then
1034 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1035 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1037 if test "$target_linux_user" = "yes" ; then
1038 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1039 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1041 if test "$target_darwin_user" = "yes" ; then
1042 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1043 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1046 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1047 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1048 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1050 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1051 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1052 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1054 # sdl defines
1056 if test "$target_user_only" = "no"; then
1057 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1058 sdl1=$sdl_static
1059 else
1060 sdl1=$sdl
1062 if test "$sdl1" = "yes" ; then
1063 echo "#define CONFIG_SDL 1" >> $config_h
1064 echo "CONFIG_SDL=yes" >> $config_mak
1065 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1066 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1067 else
1068 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1070 if [ "${aa}" = "yes" ] ; then
1071 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1072 else
1073 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1078 if test "$cocoa" = "yes" ; then
1079 echo "#define CONFIG_COCOA 1" >> $config_h
1080 echo "CONFIG_COCOA=yes" >> $config_mak
1083 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1085 done # for target in $targets
1087 # build tree in object directory if source path is different from current one
1088 if test "$source_path_used" = "yes" ; then
1089 DIRS="tests"
1090 FILES="Makefile tests/Makefile"
1091 for dir in $DIRS ; do
1092 mkdir -p $dir
1093 done
1094 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1095 for f in $FILES ; do
1096 rm -f $f
1097 ln -s $source_path/$f $f
1098 done
1101 rm -f $TMPO $TMPC $TMPE $TMPS