Only build qemu-img with softmmu targets.
[qemu/mini2440.git] / configure
blob6288ac06c9977f104fc2e286732f67de1985bf98
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 vnc_tls="yes"
93 bsd="no"
94 linux="no"
95 kqemu="no"
96 profiler="no"
97 cocoa="no"
98 check_gfx="yes"
99 check_gcc="yes"
100 softmmu="yes"
101 linux_user="no"
102 darwin_user="no"
103 build_docs="no"
104 uname_release=""
106 # OS specific
107 targetos=`uname -s`
108 case $targetos in
109 CYGWIN*)
110 mingw32="yes"
111 OS_CFLAGS="-mno-cygwin"
112 VL_OS_LDFLAGS="-mno-cygwin"
113 if [ "$cpu" = "i386" ] ; then
114 kqemu="yes"
117 MINGW32*)
118 mingw32="yes"
119 if [ "$cpu" = "i386" ] ; then
120 kqemu="yes"
123 GNU/kFreeBSD)
124 oss="yes"
125 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
126 kqemu="yes"
129 FreeBSD)
130 bsd="yes"
131 oss="yes"
132 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
133 kqemu="yes"
136 NetBSD)
137 bsd="yes"
138 oss="yes"
140 OpenBSD)
141 bsd="yes"
142 oss="yes"
144 Darwin)
145 bsd="yes"
146 darwin="yes"
147 darwin_user="yes"
148 cocoa="yes"
149 coreaudio="yes"
150 OS_CFLAGS="-mdynamic-no-pic"
152 SunOS)
153 solaris="yes"
154 make="gmake"
155 install="ginstall"
156 needs_libsunmath="no"
157 solarisrev=`uname -r | cut -f2 -d.`
158 # have to select again, because `uname -m` returns i86pc
159 # even on an x86_64 box.
160 solariscpu=`isainfo -k`
161 if test "${solariscpu}" = "amd64" ; then
162 cpu="x86_64"
164 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
165 if test "$solarisrev" -le 9 ; then
166 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
167 needs_libsunmath="yes"
168 else
169 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
170 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
171 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
172 echo "Studio 11 can be downloaded from www.sun.com."
173 exit 1
176 if test "$solarisrev" -ge 9 ; then
177 kqemu="yes"
180 if test -f /usr/include/sys/soundcard.h ; then
181 oss=yes
185 oss="yes"
186 linux="yes"
187 linux_user="yes"
188 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
189 kqemu="yes"
192 esac
194 if [ "$bsd" = "yes" ] ; then
195 if [ "$darwin" != "yes" ] ; then
196 make="gmake"
200 # find source path
201 source_path=`dirname "$0"`
202 if [ -z "$source_path" ]; then
203 source_path=`pwd`
204 else
205 source_path=`cd "$source_path"; pwd`
207 if test "$source_path" = `pwd` ; then
208 source_path_used="no"
209 else
210 source_path_used="yes"
213 for opt do
214 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
215 case "$opt" in
216 --help|-h) show_help=yes
218 --prefix=*) prefix="$optarg"
220 --interp-prefix=*) interp_prefix="$optarg"
222 --source-path=*) source_path="$optarg"
223 source_path_used="yes"
225 --cross-prefix=*) cross_prefix="$optarg"
227 --cc=*) cc="$optarg"
228 gcc3_search="no"
230 --host-cc=*) host_cc="$optarg"
232 --make=*) make="$optarg"
234 --install=*) install="$optarg"
236 --extra-cflags=*) CFLAGS="$optarg"
238 --extra-ldflags=*) LDFLAGS="$optarg"
240 --cpu=*) cpu="$optarg"
242 --target-list=*) target_list="$optarg"
244 --enable-gprof) gprof="yes"
246 --static) static="yes"
248 --disable-sdl) sdl="no"
250 --enable-coreaudio) coreaudio="yes"
252 --enable-alsa) alsa="yes"
254 --enable-dsound) dsound="yes"
256 --enable-fmod) fmod="yes"
258 --fmod-lib=*) fmod_lib="$optarg"
260 --fmod-inc=*) fmod_inc="$optarg"
262 --disable-vnc-tls) vnc_tls="no"
264 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
266 --disable-slirp) slirp="no"
268 --enable-adlib) adlib="yes"
270 --disable-kqemu) kqemu="no"
272 --enable-profiler) profiler="yes"
274 --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
276 --disable-gfx-check) check_gfx="no"
278 --disable-gcc-check) check_gcc="no"
280 --disable-system) softmmu="no"
282 --enable-system) softmmu="yes"
284 --disable-linux-user) linux_user="no"
286 --enable-linux-user) linux_user="yes"
288 --disable-darwin-user) darwin_user="no"
290 --enable-darwin-user) darwin_user="yes"
292 --enable-uname-release=*) uname_release="$optarg"
294 --sparc_cpu=*)
295 sparc_cpu="$optarg"
296 case $sparc_cpu in
297 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
298 target_cpu="sparc"; cpu="sparc" ;;
299 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
300 target_cpu="sparc"; cpu="sparc" ;;
301 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
302 target_cpu="sparc64"; cpu="sparc64" ;;
303 *) echo "undefined SPARC architecture. Exiting";exit 1;;
304 esac
306 esac
307 done
309 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
310 AIOLIBS=
311 else
312 AIOLIBS="-lrt"
315 # default flags for all hosts
316 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
317 LDFLAGS="$LDFLAGS -g"
320 # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
321 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
323 case $cpu in
324 sparc) if test -z "$sparc_cpu" ; then
325 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
326 ARCH_LDFLAGS="-m32"
327 else
328 ARCH_CFLAGS="${SP_CFLAGS}"
329 ARCH_LDFLAGS="${SP_LDFLAGS}"
332 sparc64) if test -z "$sparc_cpu" ; then
333 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
334 ARCH_LDFLAGS="-m64"
335 else
336 ARCH_CFLAGS="${SP_CFLAGS}"
337 ARCH_LDFLAGS="${SP_LDFLAGS}"
340 esac
342 if [ "$solaris" = "yes" -a "$cpu" = "x86_64" ] ; then
343 CFLAGS="${CFLAGS} -m64"
344 OS_CFLAGS="${OS_CFLAGS} -m64"
347 if [ "$solaris" = "yes" -a "$cpu" = "i386" ] ; then
348 CFLAGS="${CFLAGS} -m32"
349 OS_CFLAGS="${OS_CFLAGS} -m32"
352 if test x"$show_help" = x"yes" ; then
353 cat << EOF
355 Usage: configure [options]
356 Options: [defaults in brackets after descriptions]
359 echo "Standard options:"
360 echo " --help print this message"
361 echo " --prefix=PREFIX install in PREFIX [$prefix]"
362 echo " --interp-prefix=PREFIX where to find shared libraries, etc."
363 echo " use %M for cpu name [$interp_prefix]"
364 echo " --target-list=LIST set target list [$target_list]"
365 echo ""
366 echo "kqemu kernel acceleration support:"
367 echo " --disable-kqemu disable kqemu support"
368 echo ""
369 echo "Advanced options (experts only):"
370 echo " --source-path=PATH path of source code [$source_path]"
371 echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
372 echo " --cc=CC use C compiler CC [$cc]"
373 echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
374 echo " --make=MAKE use specified make [$make]"
375 echo " --install=INSTALL use specified install [$install]"
376 echo " --static enable static build [$static]"
377 echo " --enable-cocoa enable COCOA (Mac OS X only)"
378 echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
379 echo " --enable-adlib enable Adlib emulation"
380 echo " --enable-coreaudio enable Coreaudio audio driver"
381 echo " --enable-alsa enable ALSA audio driver"
382 echo " --enable-fmod enable FMOD audio driver"
383 echo " --enable-dsound enable DirectSound audio driver"
384 echo " --disable-vnc-tls disable TLS encryption for VNC server"
385 echo " --enable-system enable all system emulation targets"
386 echo " --disable-system disable all system emulation targets"
387 echo " --enable-linux-user enable all linux usermode emulation targets"
388 echo " --disable-linux-user disable all linux usermode emulation targets"
389 echo " --enable-darwin-user enable all darwin usermode emulation targets"
390 echo " --disable-darwin-user disable all darwin usermode emulation targets"
391 echo " --fmod-lib path to FMOD library"
392 echo " --fmod-inc path to FMOD includes"
393 echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
394 echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
395 echo ""
396 echo "NOTE: The object files are built at the place where configure is launched"
397 exit 1
400 cc="${cross_prefix}${cc}"
401 ar="${cross_prefix}${ar}"
402 strip="${cross_prefix}${strip}"
404 # check that the C compiler works.
405 cat > $TMPC <<EOF
406 int main(void) {}
409 if $cc -c -o $TMPO $TMPC 2> /dev/null ; then
410 : C compiler works ok
411 else
412 echo "ERROR: \"$cc\" either does not exist or does not work"
413 exit 1
416 if test "$mingw32" = "yes" ; then
417 linux="no"
418 EXESUF=".exe"
419 oss="no"
422 # Check for gcc4, error if pre-gcc4
423 if test "$check_gcc" = "yes" ; then
424 cat > $TMPC <<EOF
425 #if __GNUC__ < 4
426 #error gcc3
427 #endif
428 int main(){return 0;}
430 if "$cc" -o $TMPE $TMPC 2> /dev/null ; then
431 echo "WARNING: \"$cc\" looks like gcc 4.x"
432 found_compat_cc="no"
433 if test "$gcc3_search" = "yes" ; then
434 echo "Looking for gcc 3.x"
435 for compat_cc in $gcc3_list ; do
436 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
437 echo "Found \"$compat_cc\""
438 cc="$cross_prefix$compat_cc"
439 found_compat_cc="yes"
440 break
442 done
443 if test "$found_compat_cc" = "no" ; then
444 echo "gcc 3.x not found!"
447 if test "$found_compat_cc" = "no" ; then
448 echo "QEMU is known to have problems when compiled with gcc 4.x"
449 echo "It is recommended that you use gcc 3.x to build QEMU"
450 echo "To use this compiler anyway, configure with --disable-gcc-check"
451 exit 1;
457 # Solaris specific configure tool chain decisions
459 if test "$solaris" = "yes" ; then
461 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
462 # override the check with --disable-gcc-check
464 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
465 solgcc=`which $cc`
466 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
467 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
468 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
469 echo "or get the latest patch from SunSolve for gcc"
470 exit 1
473 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
474 if test -z "$solinst" ; then
475 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
476 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
477 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
478 exit 1
480 if test "$solinst" = "/usr/sbin/install" ; then
481 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
482 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
483 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
484 exit 1
486 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
487 if test -z "$sol_ar" ; then
488 echo "Error: No path includes ar"
489 if test -f /usr/ccs/bin/ar ; then
490 echo "Add /usr/ccs/bin to your path and rerun configure"
492 exit 1
497 if test -z "$target_list" ; then
498 # these targets are portable
499 if [ "$softmmu" = "yes" ] ; then
500 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"
502 # the following are Linux specific
503 if [ "$linux_user" = "yes" ] ; then
504 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"
506 # the following are Darwin specific
507 if [ "$darwin_user" = "yes" ] ; then
508 target_list="i386-darwin-user ppc-darwin-user $target_list"
510 else
511 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
513 if test -z "$target_list" ; then
514 echo "No targets enabled"
515 exit 1
518 if test -z "$cross_prefix" ; then
520 # ---
521 # big/little endian test
522 cat > $TMPC << EOF
523 #include <inttypes.h>
524 int main(int argc, char ** argv){
525 volatile uint32_t i=0x01234567;
526 return (*((uint8_t*)(&i))) == 0x67;
530 if $cc -o $TMPE $TMPC 2> /dev/null ; then
531 $TMPE && bigendian="yes"
532 else
533 echo big/little test failed
536 else
538 # if cross compiling, cannot launch a program, so make a static guess
539 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
540 bigendian="yes"
545 # host long bits test
546 hostlongbits="32"
547 if test "$cpu" = "sparc64" -o "$cpu" = "ia64" -o "$cpu" = "x86_64" -o "$cpu" = "alpha"; then
548 hostlongbits="64"
551 # check gcc options support
552 cat > $TMPC <<EOF
553 int main(void) {
557 ##########################################
558 # SDL probe
560 sdl_too_old=no
562 if test -z "$sdl" ; then
563 sdl_config="sdl-config"
564 sdl=no
565 sdl_static=no
567 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
568 # win32 cross compilation case
569 sdl_config="i386-mingw32msvc-sdl-config"
570 sdl=yes
571 else
572 # normal SDL probe
573 cat > $TMPC << EOF
574 #include <SDL.h>
575 #undef main /* We don't want SDL to override our main() */
576 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
578 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
579 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
580 if test "$_sdlversion" -lt 121 ; then
581 sdl_too_old=yes
582 else
583 if test "$cocoa" = "no" ; then
584 sdl=yes
588 # static link with sdl ?
589 if test "$sdl" = "yes" ; then
590 aa="no"
591 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
592 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
593 if [ "$aa" = "yes" ] ; then
594 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
597 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
598 sdl_static=yes
600 fi # static link
601 fi # sdl compile test
602 fi # cross compilation
603 else
604 # Make sure to disable cocoa if sdl was set
605 if test "$sdl" = "yes" ; then
606 cocoa="no"
607 coreaudio="no"
609 fi # -z $sdl
611 ##########################################
612 # VNC TLS detection
613 if test "$vnc_tls" = "yes" ; then
614 `pkg-config gnutls` || vnc_tls="no"
616 if test "$vnc_tls" = "yes" ; then
617 vnc_tls_cflags=`pkg-config --cflags gnutls`
618 vnc_tls_libs=`pkg-config --libs gnutls`
621 ##########################################
622 # alsa sound support libraries
624 if test "$alsa" = "yes" ; then
625 cat > $TMPC << EOF
626 #include <alsa/asoundlib.h>
627 int main(void) { snd_pcm_t **handle; return snd_pcm_close(*handle); }
629 if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
631 else
632 echo
633 echo "Error: Could not find alsa"
634 echo "Make sure to have the alsa libs and headers installed."
635 echo
636 exit 1
640 # Check if tools are available to build documentation.
641 if [ -x "`which texi2html 2>/dev/null`" ] && \
642 [ -x "`which pod2man 2>/dev/null`" ]; then
643 build_docs="yes"
646 if test "$mingw32" = "yes" ; then
647 if test -z "$prefix" ; then
648 prefix="/c/Program Files/Qemu"
650 mansuffix=""
651 datasuffix=""
652 docsuffix=""
653 binsuffix=""
654 else
655 if test -z "$prefix" ; then
656 prefix="/usr/local"
658 mansuffix="/share/man"
659 datasuffix="/share/qemu"
660 docsuffix="/share/doc/qemu"
661 binsuffix="/bin"
664 echo "Install prefix $prefix"
665 echo "BIOS directory $prefix$datasuffix"
666 echo "binary directory $prefix$binsuffix"
667 if test "$mingw32" = "no" ; then
668 echo "Manual directory $prefix$mansuffix"
669 echo "ELF interp prefix $interp_prefix"
671 echo "Source path $source_path"
672 echo "C compiler $cc"
673 echo "Host C compiler $host_cc"
674 echo "make $make"
675 echo "install $install"
676 echo "host CPU $cpu"
677 echo "host big endian $bigendian"
678 echo "target list $target_list"
679 echo "gprof enabled $gprof"
680 echo "profiler $profiler"
681 echo "static build $static"
682 if test "$darwin" = "yes" ; then
683 echo "Cocoa support $cocoa"
685 echo "SDL support $sdl"
686 if test "$sdl" != "no" ; then
687 echo "SDL static link $sdl_static"
689 echo "mingw32 support $mingw32"
690 echo "Adlib support $adlib"
691 echo "CoreAudio support $coreaudio"
692 echo "ALSA support $alsa"
693 echo "DSound support $dsound"
694 if test "$fmod" = "yes"; then
695 if test -z $fmod_lib || test -z $fmod_inc; then
696 echo
697 echo "Error: You must specify path to FMOD library and headers"
698 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
699 echo
700 exit 1
702 fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
703 else
704 fmod_support=""
706 echo "FMOD support $fmod $fmod_support"
707 echo "OSS support $oss"
708 echo "VNC TLS support $vnc_tls"
709 if test "$vnc_tls" = "yes" ; then
710 echo " TLS CFLAGS $vnc_tls_cflags"
711 echo " TLS LIBS $vnc_tls_libs"
713 if test -n "$sparc_cpu"; then
714 echo "Target Sparc Arch $sparc_cpu"
716 echo "kqemu support $kqemu"
717 echo "Documentation $build_docs"
718 [ ! -z "$uname_release" ] && \
719 echo "uname -r $uname_release"
721 if test $sdl_too_old = "yes"; then
722 echo "-> Your SDL version is too old - please upgrade to have SDL support"
724 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
725 echo "The error log from compiling the libSDL test is: "
726 cat /tmp/qemu-$$-sdl-config.log
728 rm -f /tmp/qemu-$$-sdl-config.log
729 #if test "$sdl_static" = "no"; then
730 # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
732 config_mak="config-host.mak"
733 config_h="config-host.h"
735 #echo "Creating $config_mak and $config_h"
737 test -f $config_h && mv $config_h ${config_h}~
739 echo "# Automatically generated by configure - do not modify" > $config_mak
740 echo "# Configured with: $0 $@" >> $config_mak
741 echo "/* Automatically generated by configure - do not modify */" > $config_h
743 echo "prefix=$prefix" >> $config_mak
744 echo "bindir=\${prefix}$binsuffix" >> $config_mak
745 echo "mandir=\${prefix}$mansuffix" >> $config_mak
746 echo "datadir=\${prefix}$datasuffix" >> $config_mak
747 echo "docdir=\${prefix}$docsuffix" >> $config_mak
748 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
749 echo "MAKE=$make" >> $config_mak
750 echo "INSTALL=$install" >> $config_mak
751 echo "CC=$cc" >> $config_mak
752 echo "HOST_CC=$host_cc" >> $config_mak
753 echo "AR=$ar" >> $config_mak
754 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
755 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
756 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
757 echo "VL_OS_LDFLAGS=$VL_OS_LDFLAGS" >> $config_mak
758 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
759 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
760 echo "CFLAGS=$CFLAGS" >> $config_mak
761 echo "LDFLAGS=$LDFLAGS" >> $config_mak
762 echo "EXESUF=$EXESUF" >> $config_mak
763 echo "AIOLIBS=$AIOLIBS" >> $config_mak
764 if test "$cpu" = "i386" ; then
765 echo "ARCH=i386" >> $config_mak
766 echo "#define HOST_I386 1" >> $config_h
767 elif test "$cpu" = "x86_64" ; then
768 echo "ARCH=x86_64" >> $config_mak
769 echo "#define HOST_X86_64 1" >> $config_h
770 elif test "$cpu" = "armv4b" ; then
771 echo "ARCH=arm" >> $config_mak
772 echo "#define HOST_ARM 1" >> $config_h
773 elif test "$cpu" = "armv4l" ; then
774 echo "ARCH=arm" >> $config_mak
775 echo "#define HOST_ARM 1" >> $config_h
776 elif test "$cpu" = "powerpc" ; then
777 echo "ARCH=ppc" >> $config_mak
778 echo "#define HOST_PPC 1" >> $config_h
779 elif test "$cpu" = "mips" ; then
780 echo "ARCH=mips" >> $config_mak
781 echo "#define HOST_MIPS 1" >> $config_h
782 elif test "$cpu" = "mips64" ; then
783 echo "ARCH=mips64" >> $config_mak
784 echo "#define HOST_MIPS64 1" >> $config_h
785 elif test "$cpu" = "s390" ; then
786 echo "ARCH=s390" >> $config_mak
787 echo "#define HOST_S390 1" >> $config_h
788 elif test "$cpu" = "alpha" ; then
789 echo "ARCH=alpha" >> $config_mak
790 echo "#define HOST_ALPHA 1" >> $config_h
791 elif test "$cpu" = "sparc" ; then
792 echo "ARCH=sparc" >> $config_mak
793 echo "#define HOST_SPARC 1" >> $config_h
794 elif test "$cpu" = "sparc64" ; then
795 echo "ARCH=sparc64" >> $config_mak
796 echo "#define HOST_SPARC64 1" >> $config_h
797 elif test "$cpu" = "ia64" ; then
798 echo "ARCH=ia64" >> $config_mak
799 echo "#define HOST_IA64 1" >> $config_h
800 elif test "$cpu" = "m68k" ; then
801 echo "ARCH=m68k" >> $config_mak
802 echo "#define HOST_M68K 1" >> $config_h
803 else
804 echo "Unsupported CPU = $cpu"
805 exit 1
807 if test "$bigendian" = "yes" ; then
808 echo "WORDS_BIGENDIAN=yes" >> $config_mak
809 echo "#define WORDS_BIGENDIAN 1" >> $config_h
811 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
812 if test "$mingw32" = "yes" ; then
813 echo "CONFIG_WIN32=yes" >> $config_mak
814 echo "#define CONFIG_WIN32 1" >> $config_h
815 else
816 cat > $TMPC << EOF
817 #include <byteswap.h>
818 int main(void) { return bswap_32(0); }
820 if $cc -o $TMPE $TMPC 2> /dev/null ; then
821 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
824 if test "$darwin" = "yes" ; then
825 echo "CONFIG_DARWIN=yes" >> $config_mak
826 echo "#define CONFIG_DARWIN 1" >> $config_h
828 if test "$solaris" = "yes" ; then
829 echo "CONFIG_SOLARIS=yes" >> $config_mak
830 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
831 if test "$needs_libsunmath" = "yes" ; then
832 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
833 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
836 if test -n "$sparc_cpu"; then
837 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
838 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
840 if test "$gdbstub" = "yes" ; then
841 echo "CONFIG_GDBSTUB=yes" >> $config_mak
842 echo "#define CONFIG_GDBSTUB 1" >> $config_h
844 if test "$gprof" = "yes" ; then
845 echo "TARGET_GPROF=yes" >> $config_mak
846 echo "#define HAVE_GPROF 1" >> $config_h
848 if test "$static" = "yes" ; then
849 echo "CONFIG_STATIC=yes" >> $config_mak
850 echo "#define CONFIG_STATIC 1" >> $config_h
852 if test $profiler = "yes" ; then
853 echo "#define CONFIG_PROFILER 1" >> $config_h
855 if test "$slirp" = "yes" ; then
856 echo "CONFIG_SLIRP=yes" >> $config_mak
857 echo "#define CONFIG_SLIRP 1" >> $config_h
859 if test "$adlib" = "yes" ; then
860 echo "CONFIG_ADLIB=yes" >> $config_mak
861 echo "#define CONFIG_ADLIB 1" >> $config_h
863 if test "$oss" = "yes" ; then
864 echo "CONFIG_OSS=yes" >> $config_mak
865 echo "#define CONFIG_OSS 1" >> $config_h
867 if test "$coreaudio" = "yes" ; then
868 echo "CONFIG_COREAUDIO=yes" >> $config_mak
869 echo "#define CONFIG_COREAUDIO 1" >> $config_h
871 if test "$alsa" = "yes" ; then
872 echo "CONFIG_ALSA=yes" >> $config_mak
873 echo "#define CONFIG_ALSA 1" >> $config_h
875 if test "$dsound" = "yes" ; then
876 echo "CONFIG_DSOUND=yes" >> $config_mak
877 echo "#define CONFIG_DSOUND 1" >> $config_h
879 if test "$fmod" = "yes" ; then
880 echo "CONFIG_FMOD=yes" >> $config_mak
881 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
882 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
883 echo "#define CONFIG_FMOD 1" >> $config_h
885 if test "$vnc_tls" = "yes" ; then
886 echo "CONFIG_VNC_TLS=yes" >> $config_mak
887 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
888 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
889 echo "#define CONFIG_VNC_TLS 1" >> $config_h
891 qemu_version=`head $source_path/VERSION`
892 echo "VERSION=$qemu_version" >>$config_mak
893 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
895 echo "SRC_PATH=$source_path" >> $config_mak
896 if [ "$source_path_used" = "yes" ]; then
897 echo "VPATH=$source_path" >> $config_mak
899 echo "TARGET_DIRS=$target_list" >> $config_mak
900 if [ "$build_docs" = "yes" ] ; then
901 echo "BUILD_DOCS=yes" >> $config_mak
904 # XXX: suppress that
905 if [ "$bsd" = "yes" ] ; then
906 echo "#define O_LARGEFILE 0" >> $config_h
907 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
908 echo "#define _BSD 1" >> $config_h
911 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
913 tools=
914 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
915 tools="qemu-img\$(EXESUF) $tools"
917 echo "TOOLS=$tools" >> $config_mak
919 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
921 for target in $target_list; do
922 target_dir="$target"
923 config_mak=$target_dir/config.mak
924 config_h=$target_dir/config.h
925 target_cpu=`echo $target | cut -d '-' -f 1`
926 target_bigendian="no"
927 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
928 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
929 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
930 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
931 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
932 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
933 [ "$target_cpu" = "mips" ] && target_bigendian=yes
934 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
935 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
936 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
937 target_softmmu="no"
938 target_user_only="no"
939 target_linux_user="no"
940 target_darwin_user="no"
941 case "$target" in
942 ${target_cpu}-softmmu)
943 target_softmmu="yes"
945 ${target_cpu}-linux-user)
946 target_user_only="yes"
947 target_linux_user="yes"
949 ${target_cpu}-darwin-user)
950 target_user_only="yes"
951 target_darwin_user="yes"
954 echo "ERROR: Target '$target' not recognised"
955 exit 1
957 esac
959 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
960 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
961 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
962 echo "To build QEMU without graphical output configure with --disable-gfx-check"
963 echo "Note that this will disable all output from the virtual graphics card."
964 exit 1;
967 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
969 test -f $config_h && mv $config_h ${config_h}~
971 mkdir -p $target_dir
972 mkdir -p $target_dir/fpu
973 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
974 mkdir -p $target_dir/nwfpe
976 if test "$target_user_only" = "no" ; then
977 mkdir -p $target_dir/slirp
981 # don't use ln -sf as not all "ln -sf" over write the file/link
983 rm -f $target_dir/Makefile
984 ln -s $source_path/Makefile.target $target_dir/Makefile
987 echo "# Automatically generated by configure - do not modify" > $config_mak
988 echo "/* Automatically generated by configure - do not modify */" > $config_h
991 echo "include ../config-host.mak" >> $config_mak
992 echo "#include \"../config-host.h\"" >> $config_h
994 bflt="no"
995 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
996 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
998 if test "$target_cpu" = "i386" ; then
999 echo "TARGET_ARCH=i386" >> $config_mak
1000 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1001 echo "#define TARGET_I386 1" >> $config_h
1002 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "i386" ; then
1003 echo "#define USE_KQEMU 1" >> $config_h
1005 elif test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" ; then
1006 echo "TARGET_ARCH=arm" >> $config_mak
1007 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1008 echo "#define TARGET_ARM 1" >> $config_h
1009 bflt="yes"
1010 elif test "$target_cpu" = "sparc" ; then
1011 echo "TARGET_ARCH=sparc" >> $config_mak
1012 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1013 echo "#define TARGET_SPARC 1" >> $config_h
1014 elif test "$target_cpu" = "sparc64" ; then
1015 echo "TARGET_ARCH=sparc64" >> $config_mak
1016 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1017 echo "#define TARGET_SPARC 1" >> $config_h
1018 echo "#define TARGET_SPARC64 1" >> $config_h
1019 elif test "$target_cpu" = "ppc" ; then
1020 echo "TARGET_ARCH=ppc" >> $config_mak
1021 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1022 echo "#define TARGET_PPC 1" >> $config_h
1023 elif test "$target_cpu" = "ppc64" ; then
1024 echo "TARGET_ARCH=ppc64" >> $config_mak
1025 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1026 echo "#define TARGET_PPC 1" >> $config_h
1027 echo "#define TARGET_PPC64 1" >> $config_h
1028 elif test "$target_cpu" = "ppcemb" ; then
1029 echo "TARGET_ARCH=ppcemb" >> $config_mak
1030 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1031 echo "#define TARGET_PPC 1" >> $config_h
1032 echo "#define TARGET_PPCEMB 1" >> $config_h
1033 elif test "$target_cpu" = "x86_64" ; then
1034 echo "TARGET_ARCH=x86_64" >> $config_mak
1035 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1036 echo "#define TARGET_I386 1" >> $config_h
1037 echo "#define TARGET_X86_64 1" >> $config_h
1038 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" ; then
1039 echo "#define USE_KQEMU 1" >> $config_h
1041 elif test "$target_cpu" = "mips" -o "$target_cpu" = "mipsel" ; then
1042 echo "TARGET_ARCH=mips" >> $config_mak
1043 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1044 echo "#define TARGET_MIPS 1" >> $config_h
1045 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1046 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1047 elif test "$target_cpu" = "mips64" -o "$target_cpu" = "mips64el" ; then
1048 echo "TARGET_ARCH=mips64" >> $config_mak
1049 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1050 echo "#define TARGET_MIPS 1" >> $config_h
1051 echo "#define TARGET_MIPS64 1" >> $config_h
1052 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1053 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1054 elif test "$target_cpu" = "sh4" -o "$target_cpu" = "sh4eb" ; then
1055 echo "TARGET_ARCH=sh4" >> $config_mak
1056 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1057 echo "#define TARGET_SH4 1" >> $config_h
1058 bflt="yes"
1059 elif test "$target_cpu" = "m68k" ; then
1060 echo "TARGET_ARCH=m68k" >> $config_mak
1061 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1062 echo "#define TARGET_M68K 1" >> $config_h
1063 bflt="yes"
1064 elif test "$target_cpu" = "alpha" ; then
1065 echo "TARGET_ARCH=alpha" >> $config_mak
1066 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1067 echo "#define TARGET_ALPHA 1" >> $config_h
1068 else
1069 echo "Unsupported target CPU"
1070 exit 1
1072 if test "$target_bigendian" = "yes" ; then
1073 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1074 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1076 if test "$target_softmmu" = "yes" ; then
1077 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1078 echo "#define CONFIG_SOFTMMU 1" >> $config_h
1080 if test "$target_user_only" = "yes" ; then
1081 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1082 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1084 if test "$target_linux_user" = "yes" ; then
1085 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1086 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1088 if test "$target_darwin_user" = "yes" ; then
1089 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1090 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1093 if test "$target_cpu" = "arm" -o "$target_cpu" = "armeb" -o "$target_cpu" = "sparc" -o "$target_cpu" = "sparc64" -o "$target_cpu" = "m68k"; then
1094 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1095 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1097 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1098 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1099 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1101 # sdl defines
1103 if test "$target_user_only" = "no"; then
1104 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1105 sdl1=$sdl_static
1106 else
1107 sdl1=$sdl
1109 if test "$sdl1" = "yes" ; then
1110 echo "#define CONFIG_SDL 1" >> $config_h
1111 echo "CONFIG_SDL=yes" >> $config_mak
1112 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1113 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1114 else
1115 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1117 if [ "${aa}" = "yes" ] ; then
1118 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1119 else
1120 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1125 if test "$cocoa" = "yes" ; then
1126 echo "#define CONFIG_COCOA 1" >> $config_h
1127 echo "CONFIG_COCOA=yes" >> $config_mak
1130 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1132 done # for target in $targets
1134 # build tree in object directory if source path is different from current one
1135 if test "$source_path_used" = "yes" ; then
1136 DIRS="tests"
1137 FILES="Makefile tests/Makefile"
1138 for dir in $DIRS ; do
1139 mkdir -p $dir
1140 done
1141 # remove the link and recreate it, as not all "ln -sf" overwrite the link
1142 for f in $FILES ; do
1143 rm -f $f
1144 ln -s $source_path/$f $f
1145 done
1148 rm -f $TMPO $TMPC $TMPE $TMPS