Large kernel initrd fix (initial patch by Daniel Jacobowitz).
[qemu/mini2440.git] / configure
blob63f327e91f7c87e64a8452828617052f18add081
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 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 s390)
54 cpu="s390"
56 sparc|sun4[muv])
57 cpu="sparc"
59 sparc64)
60 cpu="sparc64"
62 ia64)
63 cpu="ia64"
65 m68k)
66 cpu="m68k"
68 x86_64|amd64)
69 cpu="x86_64"
72 cpu="unknown"
74 esac
75 gprof="no"
76 bigendian="no"
77 mingw32="no"
78 EXESUF=""
79 gdbstub="yes"
80 slirp="yes"
81 adlib="no"
82 oss="no"
83 dsound="no"
84 coreaudio="no"
85 alsa="no"
86 fmod="no"
87 fmod_lib=""
88 fmod_inc=""
89 bsd="no"
90 linux="no"
91 kqemu="no"
92 profiler="no"
93 cocoa="no"
94 check_gfx="yes"
95 check_gcc="yes"
96 softmmu="yes"
97 linux_user="no"
98 darwin_user="no"
99 build_docs="no"
100 uname_release=""
102 # OS specific
103 targetos=`uname -s`
104 case $targetos in
105 CYGWIN*)
106 mingw32="yes"
107 OS_CFLAGS="-mno-cygwin"
109 MINGW32*)
110 mingw32="yes"
112 FreeBSD)
113 bsd="yes"
114 oss="yes"
115 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
116 kqemu="yes"
119 NetBSD)
120 bsd="yes"
121 oss="yes"
123 OpenBSD)
124 bsd="yes"
125 oss="yes"
127 Darwin)
128 bsd="yes"
129 darwin="yes"
130 darwin_user="yes"
131 cocoa="yes"
132 coreaudio="yes"
133 OS_CFLAGS="-mdynamic-no-pic"
135 SunOS)
136 solaris="yes"
137 make="gmake"
138 install="ginstall"
139 solarisrev=`uname -r | cut -f2 -d.`
140 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
141 if test "$solarisrev" -ge 10 ; then
142 kqemu="yes"
147 oss="yes"
148 linux="yes"
149 linux_user="yes"
150 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
151 kqemu="yes"
154 esac
156 if [ "$bsd" = "yes" ] ; then
157 if [ "$darwin" != "yes" ] ; then
158 make="gmake"
162 # find source path
163 source_path=`dirname "$0"`
164 if [ -z "$source_path" ]; then
165 source_path=`pwd`
166 else
167 source_path=`cd "$source_path"; pwd`
169 if test "$source_path" = `pwd` ; then
170 source_path_used="no"
171 else
172 source_path_used="yes"
175 for opt do
176 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
177 case "$opt" in
178 --help|-h) show_help=yes
180 --prefix=*) prefix="$optarg"
182 --interp-prefix=*) interp_prefix="$optarg"
184 --source-path=*) source_path="$optarg"
185 source_path_used="yes"
187 --cross-prefix=*) cross_prefix="$optarg"
189 --cc=*) cc="$optarg"
190 gcc3_search="no"
192 --host-cc=*) host_cc="$optarg"
194 --make=*) make="$optarg"
196 --install=*) install="$optarg"
198 --extra-cflags=*) CFLAGS="$optarg"
200 --extra-ldflags=*) LDFLAGS="$optarg"
202 --cpu=*) cpu="$optarg"
204 --target-list=*) target_list="$optarg"
206 --enable-gprof) gprof="yes"
208 --static) static="yes"
210 --disable-sdl) sdl="no"
212 --enable-coreaudio) coreaudio="yes"
214 --enable-alsa) alsa="yes"
216 --enable-dsound) dsound="yes"
218 --enable-fmod) fmod="yes"
220 --fmod-lib=*) fmod_lib="$optarg"
222 --fmod-inc=*) fmod_inc="$optarg"
224 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
226 --disable-slirp) slirp="no"
228 --enable-adlib) adlib="yes"
230 --disable-kqemu) kqemu="no"
232 --enable-profiler) profiler="yes"
234 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
236 --disable-gfx-check) check_gfx="no"
238 --disable-gcc-check) check_gcc="no"
240 --disable-system) softmmu="no"
242 --enable-system) softmmu="yes"
244 --disable-linux-user) linux_user="no"
246 --enable-linux-user) linux_user="yes"
248 --disable-darwin-user) darwin_user="no"
250 --enable-darwin-user) darwin_user="yes"
252 --enable-uname-release=*) uname_release="$optarg"
254 esac
255 done
257 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
258 AIOLIBS=
259 else
260 AIOLIBS="-lrt"
263 # default flags for all hosts
264 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
265 LDFLAGS="$LDFLAGS -g"
267 if test x"$show_help" = x"yes" ; then
268 cat << EOF
270 Usage: configure [options]
271 Options: [defaults in brackets after descriptions]
274 echo "Standard options:"
275 echo " --help print this message"
276 echo " --prefix=PREFIX install in PREFIX [$prefix]"
277 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
278 echo " use %M for cpu name [$interp_prefix]"
279 echo " --target-list=LIST set target list [$target_list]"
280 echo ""
281 echo "kqemu kernel acceleration support:"
282 echo " --disable-kqemu disable kqemu support"
283 echo ""
284 echo "Advanced options (experts only):"
285 echo " --source-path=PATH path of source code [$source_path]"
286 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
287 echo " --cc=CC use C compiler CC [$cc]"
288 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
289 echo " --make=MAKE use specified make [$make]"
290 echo " --install=INSTALL use specified install [$install]"
291 echo " --static enable static build [$static]"
292 echo " --enable-cocoa enable COCOA (Mac OS X only)"
293 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
294 echo " --enable-adlib enable Adlib emulation"
295 echo " --enable-coreaudio enable Coreaudio audio driver"
296 echo " --enable-alsa enable ALSA audio driver"
297 echo " --enable-fmod enable FMOD audio driver"
298 echo " --enable-dsound enable DirectSound audio driver"
299 echo " --enable-system enable all system emulation targets"
300 echo " --disable-system disable all system emulation targets"
301 echo " --enable-linux-user enable all linux usermode emulation targets"
302 echo " --disable-linux-user disable all linux usermode emulation targets"
303 echo " --enable-darwin-user enable all darwin usermode emulation targets"
304 echo " --disable-darwin-user disable all darwin usermode emulation targets"
305 echo " --fmod-lib path to FMOD library"
306 echo " --fmod-inc path to FMOD includes"
307 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
308 echo ""
309 echo "NOTE: The object files are built at the place where configure is launched"
310 exit 1
313 cc="${cross_prefix}${cc}"
314 ar="${cross_prefix}${ar}"
315 strip="${cross_prefix}${strip}"
317 # check that the C compiler works.
318 cat > $TMPC <<EOF
319 int main(void) {}
322 if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
323 : C compiler works ok
324 else
325 echo "ERROR: \"$cc\" either does not exist or does not work"
326 exit 1
329 if test "$mingw32" = "yes" ; then
330 linux="no"
331 EXESUF=".exe"
332 oss="no"
333 if [ "$cpu" = "i386" ] ; then
334 kqemu="yes"
338 # Check for gcc4, error if pre-gcc4
339 if test "$check_gcc" = "yes" ; then
340 cat > $TMPC <<EOF
341 #if __GNUC__ < 4
342 #error gcc3
343 #endif
344 int main(){return 0;}
346 check_cc() {
347 which "$1" 2> /dev/null
348 return $?
351 if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
352 echo "WARNING: \"$cc\" looks like gcc 4.x"
353 found_compat_cc="no"
354 if test "$gcc3_search" = "yes" ; then
355 echo "Looking for gcc 3.x"
356 for compat_cc in $gcc3_list ; do
357 if check_cc "$cross_prefix$compat_cc" ; then
358 echo "Found \"$compat_cc\""
359 cc="$cross_prefix$compat_cc"
360 found_compat_cc="yes"
361 break
363 done
364 if test "$found_compat_cc" = "no" ; then
365 echo "gcc 3.x not found!"
368 if test "$found_compat_cc" = "no" ; then
369 echo "QEMU is known to have problems when compiled with gcc 4.x"
370 echo "It is recommended that you use gcc 3.x to build QEMU"
371 echo "To use this compiler anyway, configure with --disable-gcc-check"
372 exit 1;
378 # Solaris specific configure tool chain decisions
380 if test "$solaris" = "yes" ; then
382 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
383 # override the check with --disable-gcc-check
385 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
386 solgcc=`which $cc`
387 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
388 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
389 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
390 echo "or get the latest patch from SunSolve for gcc"
391 exit 1
394 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
395 if test -z "$solinst" ; then
396 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
397 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
398 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
399 exit 1
401 if test "$solinst" = "/usr/sbin/install" ; then
402 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
403 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
404 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
405 exit 1
407 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
408 if test -z "$sol_ar" ; then
409 echo "Error: No path includes ar"
410 if test -f /usr/ccs/bin/ar ; then
411 echo "Add /usr/ccs/bin to your path and rerun configure"
413 exit 1
418 if test -z "$target_list" ; then
419 # these targets are portable
420 if [ "$softmmu" = "yes" ] ; then
421 target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu mipsel-softmmu arm-softmmu ppc64-softmmu"
423 # the following are Linux specific
424 if [ "$linux_user" = "yes" ] ; then
425 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 $target_list"
427 # the following are Darwin specific
428 if [ "$darwin_user" = "yes" ] ; then
429 target_list="i386-darwin-user ppc-darwin-user $target_list"
431 else
432 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
434 if test -z "$target_list" ; then
435 echo "No targets enabled"
436 exit 1
439 if test -z "$cross_prefix" ; then
441 # ---
442 # big/little endian test
443 cat > $TMPC << EOF
444 #include <inttypes.h>
445 int main(int argc, char ** argv){
446 volatile uint32_t i=0x01234567;
447 return (*((uint8_t*)(&i))) == 0x67;
451 if $cc -o $TMPE $TMPC 2> /dev/null ; then
452 $TMPE && bigendian="yes"
453 else
454 echo big/little test failed
457 else
459 # if cross compiling, cannot launch a program, so make a static guess
460 if test "$cpu" = "powerpc" -o "$cpu" = "mips" -o "$cpu" = "s390" -o "$cpu" = "sparc" -o "$cpu" = "sparc64" -o "$cpu" = "m68k" -o "$cpu" = "armv4b"; then
461 bigendian="yes"
466 # host long bits test
467 hostlongbits="32"
468 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
469 hostlongbits="64"
472 # check gcc options support
473 cat > $TMPC <<EOF
474 int main(void) {
478 ##########################################
479 # SDL probe
481 sdl_too_old=no
483 if test -z "$sdl" ; then
485 sdl_config="sdl-config"
486 sdl=no
487 sdl_static=no
489 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
490 # win32 cross compilation case
491 sdl_config="i386-mingw32msvc-sdl-config"
492 sdl=yes
493 else
494 # normal SDL probe
495 cat > $TMPC << EOF
496 #include <SDL.h>
497 #undef main /* We don't want SDL to override our main() */
498 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
501 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then
502 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
503 if test "$_sdlversion" -lt 121 ; then
504 sdl_too_old=yes
505 else
506 if test "$cocoa" = "no" ; then
507 sdl=yes
511 # static link with sdl ?
512 if test "$sdl" = "yes" ; then
513 aa="no"
514 `$sdl_config --static-libs | grep \\\-laa > /dev/null` && aa="yes"
515 sdl_static_libs=`$sdl_config --static-libs`
516 if [ "$aa" = "yes" ] ; then
517 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
520 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
521 sdl_static=yes
524 fi # static link
526 fi # sdl compile test
528 fi # cross compilation
530 else
531 # Make sure to disable cocoa if sdl was set
532 if test "$sdl" = "yes" ; then
533 cocoa="no"
534 coreaudio="no"
536 fi # -z $sdl
538 ##########################################
539 # alsa sound support libraries
541 if test "$alsa" = "yes" ; then
542 cat > $TMPC << EOF
543 #include <alsa/asoundlib.h>
544 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
546 if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
548 else
549 echo
550 echo "Error: Could not find alsa"
551 echo "Make sure to have the alsa libs and headers installed."
552 echo
553 exit 1
557 # Check if tools are available to build documentation.
558 if [ -x "`which texi2html`" ] && [ -x "`which pod2man`" ]; then
559 build_docs="yes"
562 if test "$mingw32" = "yes" ; then
563 if test -z "$prefix" ; then
564 prefix="/c/Program Files/Qemu"
566 mansuffix=""
567 datasuffix=""
568 docsuffix=""
569 binsuffix=""
570 else
571 if test -z "$prefix" ; then
572 prefix="/usr/local"
574 mansuffix="/share/man"
575 datasuffix="/share/qemu"
576 docsuffix="/share/doc/qemu"
577 binsuffix="/bin"
580 echo "Install prefix $prefix"
581 echo "BIOS directory $prefix$datasuffix"
582 echo "binary directory $prefix$binsuffix"
583 if test "$mingw32" = "no" ; then
584 echo "Manual directory $prefix$mansuffix"
585 echo "ELF interp prefix $interp_prefix"
587 echo "Source path $source_path"
588 echo "C compiler $cc"
589 echo "Host C compiler $host_cc"
590 echo "make $make"
591 echo "install $install"
592 echo "host CPU $cpu"
593 echo "host big endian $bigendian"
594 echo "target list $target_list"
595 echo "gprof enabled $gprof"
596 echo "profiler $profiler"
597 echo "static build $static"
598 if test "$darwin" = "yes" ; then
599 echo "Cocoa support $cocoa"
601 echo "SDL support $sdl"
602 if test "$sdl" != "no" ; then
603 echo "SDL static link $sdl_static"
605 echo "mingw32 support $mingw32"
606 echo "Adlib support $adlib"
607 echo "CoreAudio support $coreaudio"
608 echo "ALSA support $alsa"
609 echo "DSound support $dsound"
610 if test "$fmod" = "yes"; then
611 if test -z $fmod_lib || test -z $fmod_inc; then
612 echo
613 echo "Error: You must specify path to FMOD library and headers"
614 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
615 echo
616 exit 1
618 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
619 else
620 fmod_support=""
622 echo "FMOD support $fmod $fmod_support"
623 echo "kqemu support $kqemu"
624 echo "Documentation $build_docs"
625 [ ! -z "$uname_release" ] && \
626 echo "uname -r $uname_release"
628 if test $sdl_too_old = "yes"; then
629 echo "-> Your SDL version is too old - please upgrade to have SDL support"
631 #if test "$sdl_static" = "no"; then
632 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
634 config_mak="config-host.mak"
635 config_h="config-host.h"
637 #echo "Creating $config_mak and $config_h"
639 echo "# Automatically generated by configure - do not modify" > $config_mak
640 echo "# Configured with: $0 $@" >> $config_mak
641 echo "/* Automatically generated by configure - do not modify */" > $config_h
643 echo "prefix=$prefix" >> $config_mak
644 echo "bindir=\${prefix}$binsuffix" >> $config_mak
645 echo "mandir=\${prefix}$mansuffix" >> $config_mak
646 echo "datadir=\${prefix}$datasuffix" >> $config_mak
647 echo "docdir=\${prefix}$docsuffix" >> $config_mak
648 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
649 echo "MAKE=$make" >> $config_mak
650 echo "INSTALL=$install" >> $config_mak
651 echo "CC=$cc" >> $config_mak
652 echo "HOST_CC=$host_cc" >> $config_mak
653 echo "AR=$ar" >> $config_mak
654 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
655 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
656 echo "CFLAGS=$CFLAGS" >> $config_mak
657 echo "LDFLAGS=$LDFLAGS" >> $config_mak
658 echo "EXESUF=$EXESUF" >> $config_mak
659 echo "AIOLIBS=$AIOLIBS" >> $config_mak
660 if test "$cpu" = "i386" ; then
661 echo "ARCH=i386" >> $config_mak
662 echo "#define HOST_I386 1" >> $config_h
663 elif test "$cpu" = "x86_64" ; then
664 echo "ARCH=x86_64" >> $config_mak
665 echo "#define HOST_X86_64 1" >> $config_h
666 elif test "$cpu" = "armv4b" ; then
667 echo "ARCH=arm" >> $config_mak
668 echo "#define HOST_ARM 1" >> $config_h
669 elif test "$cpu" = "armv4l" ; then
670 echo "ARCH=arm" >> $config_mak
671 echo "#define HOST_ARM 1" >> $config_h
672 elif test "$cpu" = "powerpc" ; then
673 echo "ARCH=ppc" >> $config_mak
674 echo "#define HOST_PPC 1" >> $config_h
675 elif test "$cpu" = "mips" ; then
676 echo "ARCH=mips" >> $config_mak
677 echo "#define HOST_MIPS 1" >> $config_h
678 elif test "$cpu" = "s390" ; then
679 echo "ARCH=s390" >> $config_mak
680 echo "#define HOST_S390 1" >> $config_h
681 elif test "$cpu" = "alpha" ; then
682 echo "ARCH=alpha" >> $config_mak
683 echo "#define HOST_ALPHA 1" >> $config_h
684 elif test "$cpu" = "sparc" ; then
685 echo "ARCH=sparc" >> $config_mak
686 echo "#define HOST_SPARC 1" >> $config_h
687 elif test "$cpu" = "sparc64" ; then
688 echo "ARCH=sparc64" >> $config_mak
689 echo "#define HOST_SPARC64 1" >> $config_h
690 elif test "$cpu" = "ia64" ; then
691 echo "ARCH=ia64" >> $config_mak
692 echo "#define HOST_IA64 1" >> $config_h
693 elif test "$cpu" = "m68k" ; then
694 echo "ARCH=m68k" >> $config_mak
695 echo "#define HOST_M68K 1" >> $config_h
696 else
697 echo "Unsupported CPU"
698 exit 1
700 if test "$bigendian" = "yes" ; then
701 echo "WORDS_BIGENDIAN=yes" >> $config_mak
702 echo "#define WORDS_BIGENDIAN 1" >> $config_h
704 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
705 if test "$mingw32" = "yes" ; then
706 echo "CONFIG_WIN32=yes" >> $config_mak
707 echo "#define CONFIG_WIN32 1" >> $config_h
708 else
709 cat > $TMPC << EOF
710 #include <byteswap.h>
711 int main(void) { return bswap_32(0); }
713 if $cc -o $TMPE $TMPC 2> /dev/null ; then
714 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
717 if test "$darwin" = "yes" ; then
718 echo "CONFIG_DARWIN=yes" >> $config_mak
719 echo "#define CONFIG_DARWIN 1" >> $config_h
721 if test "$solaris" = "yes" ; then
722 echo "CONFIG_SOLARIS=yes" >> $config_mak
723 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
725 if test "$gdbstub" = "yes" ; then
726 echo "CONFIG_GDBSTUB=yes" >> $config_mak
727 echo "#define CONFIG_GDBSTUB 1" >> $config_h
729 if test "$gprof" = "yes" ; then
730 echo "TARGET_GPROF=yes" >> $config_mak
731 echo "#define HAVE_GPROF 1" >> $config_h
733 if test "$static" = "yes" ; then
734 echo "CONFIG_STATIC=yes" >> $config_mak
735 echo "#define CONFIG_STATIC 1" >> $config_h
737 if test $profiler = "yes" ; then
738 echo "#define CONFIG_PROFILER 1" >> $config_h
740 if test "$slirp" = "yes" ; then
741 echo "CONFIG_SLIRP=yes" >> $config_mak
742 echo "#define CONFIG_SLIRP 1" >> $config_h
744 if test "$adlib" = "yes" ; then
745 echo "CONFIG_ADLIB=yes" >> $config_mak
746 echo "#define CONFIG_ADLIB 1" >> $config_h
748 if test "$oss" = "yes" ; then
749 echo "CONFIG_OSS=yes" >> $config_mak
750 echo "#define CONFIG_OSS 1" >> $config_h
752 if test "$coreaudio" = "yes" ; then
753 echo "CONFIG_COREAUDIO=yes" >> $config_mak
754 echo "#define CONFIG_COREAUDIO 1" >> $config_h
756 if test "$alsa" = "yes" ; then
757 echo "CONFIG_ALSA=yes" >> $config_mak
758 echo "#define CONFIG_ALSA 1" >> $config_h
760 if test "$dsound" = "yes" ; then
761 echo "CONFIG_DSOUND=yes" >> $config_mak
762 echo "#define CONFIG_DSOUND 1" >> $config_h
764 if test "$fmod" = "yes" ; then
765 echo "CONFIG_FMOD=yes" >> $config_mak
766 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
767 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
768 echo "#define CONFIG_FMOD 1" >> $config_h
770 qemu_version=`head $source_path/VERSION`
771 echo "VERSION=$qemu_version" >>$config_mak
772 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
774 echo "SRC_PATH=$source_path" >> $config_mak
775 if [ "$source_path_used" = "yes" ]; then
776 echo "VPATH=$source_path" >> $config_mak
778 echo "TARGET_DIRS=$target_list" >> $config_mak
779 if [ "$build_docs" = "yes" ] ; then
780 echo "BUILD_DOCS=yes" >> $config_mak
783 # XXX: suppress that
784 if [ "$bsd" = "yes" ] ; then
785 echo "#define O_LARGEFILE 0" >> $config_h
786 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
787 echo "#define _BSD 1" >> $config_h
790 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
792 for target in $target_list; do
793 target_dir="$target"
794 config_mak=$target_dir/config.mak
795 config_h=$target_dir/config.h
796 target_cpu=`echo $target | cut -d '-' -f 1`
797 target_bigendian="no"
798 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
799 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
800 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
801 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
802 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
803 [ "$target_cpu" = "mips" ] && target_bigendian=yes
804 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
805 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
806 target_softmmu="no"
807 if expr $target : '.*-softmmu' > /dev/null ; then
808 target_softmmu="yes"
810 target_user_only="no"
811 if expr $target : '.*-user' > /dev/null ; then
812 target_user_only="yes"
815 target_linux_user="no"
816 if expr $target : '.*-linux-user' > /dev/null ; then
817 target_linux_user="yes"
820 target_darwin_user="no"
821 if expr $target : '.*-darwin-user' > /dev/null ; then
822 target_darwin_user="yes"
825 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
826 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
827 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
828 echo "To build QEMU without graphical output configure with --disable-gfx-check"
829 echo "Note that this will disable all output from the virtual graphics card."
830 exit 1;
833 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
835 mkdir -p $target_dir
836 mkdir -p $target_dir/fpu
837 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
838 mkdir -p $target_dir/nwfpe
840 if test "$target_user_only" = "no" ; then
841 mkdir -p $target_dir/slirp
845 # don't use ln -sf as not all "ln -sf" over write the file/link
847 rm -f $target_dir/Makefile
848 ln -s $source_path/Makefile.target $target_dir/Makefile
851 echo "# Automatically generated by configure - do not modify" > $config_mak
852 echo "/* Automatically generated by configure - do not modify */" > $config_h
855 echo "include ../config-host.mak" >> $config_mak
856 echo "#include \"../config-host.h\"" >> $config_h
858 bflt="no"
859 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
860 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
862 if test "$target_cpu" = "i386" ; then
863 echo "TARGET_ARCH=i386" >> $config_mak
864 echo "#define TARGET_ARCH \"i386\"" >> $config_h
865 echo "#define TARGET_I386 1" >> $config_h
866 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
867 echo "#define USE_KQEMU 1" >> $config_h
869 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
870 echo "TARGET_ARCH=arm" >> $config_mak
871 echo "#define TARGET_ARCH \"arm\"" >> $config_h
872 echo "#define TARGET_ARM 1" >> $config_h
873 bflt="yes"
874 elif test "$target_cpu" = "sparc" ; then
875 echo "TARGET_ARCH=sparc" >> $config_mak
876 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
877 echo "#define TARGET_SPARC 1" >> $config_h
878 elif test "$target_cpu" = "sparc64" ; then
879 echo "TARGET_ARCH=sparc64" >> $config_mak
880 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
881 echo "#define TARGET_SPARC 1" >> $config_h
882 echo "#define TARGET_SPARC64 1" >> $config_h
883 elif test "$target_cpu" = "ppc" ; then
884 echo "TARGET_ARCH=ppc" >> $config_mak
885 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
886 echo "#define TARGET_PPC 1" >> $config_h
887 elif test "$target_cpu" = "ppc64" ; then
888 echo "TARGET_ARCH=ppc64" >> $config_mak
889 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
890 echo "#define TARGET_PPC 1" >> $config_h
891 echo "#define TARGET_PPC64 1" >> $config_h
892 elif test "$target_cpu" = "x86_64" ; then
893 echo "TARGET_ARCH=x86_64" >> $config_mak
894 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
895 echo "#define TARGET_I386 1" >> $config_h
896 echo "#define TARGET_X86_64 1" >> $config_h
897 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
898 echo "#define USE_KQEMU 1" >> $config_h
900 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
901 echo "TARGET_ARCH=mips" >> $config_mak
902 echo "#define TARGET_ARCH \"mips\"" >> $config_h
903 echo "#define TARGET_MIPS 1" >> $config_h
904 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
905 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
906 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
907 echo "TARGET_ARCH=sh4" >> $config_mak
908 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
909 echo "#define TARGET_SH4 1" >> $config_h
910 bflt="yes"
911 elif test "$target_cpu" = "m68k" ; then
912 echo "TARGET_ARCH=m68k" >> $config_mak
913 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
914 echo "#define TARGET_M68K 1" >> $config_h
915 bflt="yes"
916 else
917 echo "Unsupported target CPU"
918 exit 1
920 if test "$target_bigendian" = "yes" ; then
921 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
922 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
924 if test "$target_softmmu" = "yes" ; then
925 echo "CONFIG_SOFTMMU=yes" >> $config_mak
926 echo "#define CONFIG_SOFTMMU 1" >> $config_h
928 if test "$target_user_only" = "yes" ; then
929 echo "CONFIG_USER_ONLY=yes" >> $config_mak
930 echo "#define CONFIG_USER_ONLY 1" >> $config_h
932 if test "$target_linux_user" = "yes" ; then
933 echo "CONFIG_LINUX_USER=yes" >> $config_mak
934 echo "#define CONFIG_LINUX_USER 1" >> $config_h
936 if test "$target_darwin_user" = "yes" ; then
937 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
938 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
941 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
942 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
943 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
945 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
946 echo "TARGET_HAS_BFLT=yes" >> $config_mak
947 echo "#define TARGET_HAS_BFLT 1" >> $config_h
949 # sdl defines
951 if test "$target_user_only" = "no"; then
952 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
953 sdl1=$sdl_static
954 else
955 sdl1=$sdl
957 if test "$sdl1" = "yes" ; then
958 echo "#define CONFIG_SDL 1" >> $config_h
959 echo "CONFIG_SDL=yes" >> $config_mak
960 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
961 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
962 else
963 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
965 if [ "${aa}" = "yes" ] ; then
966 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
967 else
968 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
973 if test "$cocoa" = "yes" ; then
974 echo "#define CONFIG_COCOA 1" >> $config_h
975 echo "CONFIG_COCOA=yes" >> $config_mak
978 done # for target in $targets
980 # build tree in object directory if source path is different from current one
981 if test "$source_path_used" = "yes" ; then
982 DIRS="tests"
983 FILES="Makefile tests/Makefile"
984 for dir in $DIRS ; do
985 mkdir -p $dir
986 done
987 # remove the link and recreate it, as not all "ln -sf" overwrite the link
988 for f in $FILES ; do
989 rm -f $f
990 ln -s $source_path/$f $f
991 done
994 rm -f $TMPO $TMPC $TMPE $TMPS