Enable sh4-softmmu and sh4-linux-user builds by default, by Magnus Damm.
[qemu] / configure
1 #!/bin/sh
2 #
3 # qemu configure script (c) 2003 Fabrice Bellard
4 #
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"
12 fi
13
14 TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15 TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16 TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17 TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
18
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"
37   ;;
38   armv*b)
39     cpu="armv4b"
40   ;;
41   armv*l)
42     cpu="armv4l"
43   ;;
44   alpha)
45     cpu="alpha"
46   ;;
47   "Power Macintosh"|ppc|ppc64)
48     cpu="powerpc"
49   ;;
50   mips)
51     cpu="mips"
52   ;;
53   mips64)
54     cpu="mips64"
55   ;;
56   s390*)
57     cpu="s390"
58   ;;
59   sparc|sun4[cdmuv])
60     cpu="sparc"
61   ;;
62   sparc64)
63     cpu="sparc64"
64   ;;
65   ia64)
66     cpu="ia64"
67   ;;
68   m68k)
69     cpu="m68k"
70   ;;
71   x86_64|amd64)
72     cpu="x86_64"
73   ;;
74   *)
75     cpu="unknown"
76   ;;
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=""
105
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"
115 fi
116 ;;
117 MINGW32*)
118 mingw32="yes"
119 if [ "$cpu" = "i386" ] ; then
120     kqemu="yes"
121 fi
122 ;;
123 GNU/kFreeBSD)
124 oss="yes"
125 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
126     kqemu="yes"
127 fi
128 ;;
129 FreeBSD)
130 bsd="yes"
131 oss="yes"
132 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
133     kqemu="yes"
134 fi
135 ;;
136 NetBSD)
137 bsd="yes"
138 oss="yes"
139 ;;
140 OpenBSD)
141 bsd="yes"
142 oss="yes"
143 ;;
144 Darwin)
145 bsd="yes"
146 darwin="yes"
147 darwin_user="yes"
148 cocoa="yes"
149 coreaudio="yes"
150 OS_CFLAGS="-mdynamic-no-pic"
151 ;;
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"
163     fi
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
174             fi
175         fi
176         if test "$solarisrev" -ge 9 ; then
177             kqemu="yes"
178         fi
179     fi
180     if test -f /usr/include/sys/soundcard.h ; then
181         oss=yes
182     fi
183 ;;
184 *)
185 oss="yes"
186 linux="yes"
187 linux_user="yes"
188 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
189     kqemu="yes"
190 fi
191 ;;
192 esac
193
194 if [ "$bsd" = "yes" ] ; then
195   if [ "$darwin" != "yes" ] ; then
196     make="gmake"
197   fi
198 fi
199
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`
206 fi
207 if test "$source_path" = `pwd` ; then
208     source_path_used="no"
209 else
210     source_path_used="yes"
211 fi
212
213 for opt do
214   optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
215   case "$opt" in
216   --help|-h) show_help=yes
217   ;;
218   --prefix=*) prefix="$optarg"
219   ;;
220   --interp-prefix=*) interp_prefix="$optarg"
221   ;;
222   --source-path=*) source_path="$optarg"
223   source_path_used="yes"
224   ;;
225   --cross-prefix=*) cross_prefix="$optarg"
226   ;;
227   --cc=*) cc="$optarg"
228   gcc3_search="no"
229   ;;
230   --host-cc=*) host_cc="$optarg"
231   ;;
232   --make=*) make="$optarg"
233   ;;
234   --install=*) install="$optarg"
235   ;;
236   --extra-cflags=*) CFLAGS="$optarg"
237   ;;
238   --extra-ldflags=*) LDFLAGS="$optarg"
239   ;;
240   --cpu=*) cpu="$optarg"
241   ;;
242   --target-list=*) target_list="$optarg"
243   ;;
244   --enable-gprof) gprof="yes"
245   ;;
246   --static) static="yes"
247   ;;
248   --disable-sdl) sdl="no"
249   ;;
250   --enable-coreaudio) coreaudio="yes"
251   ;;
252   --enable-alsa) alsa="yes"
253   ;;
254   --enable-dsound) dsound="yes"
255   ;;
256   --enable-fmod) fmod="yes"
257   ;;
258   --fmod-lib=*) fmod_lib="$optarg"
259   ;;
260   --fmod-inc=*) fmod_inc="$optarg"
261   ;;
262   --disable-vnc-tls) vnc_tls="no"
263   ;;
264   --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
265   ;;
266   --disable-slirp) slirp="no"
267   ;;
268   --enable-adlib) adlib="yes"
269   ;;
270   --disable-kqemu) kqemu="no"
271   ;;
272   --enable-profiler) profiler="yes"
273   ;;
274   --enable-cocoa) cocoa="yes" ; coreaudio="yes" ; sdl="no"
275   ;;
276   --disable-gfx-check) check_gfx="no"
277   ;;
278   --disable-gcc-check) check_gcc="no"
279   ;;
280   --disable-system) softmmu="no"
281   ;;
282   --enable-system) softmmu="yes"
283   ;;
284   --disable-linux-user) linux_user="no"
285   ;;
286   --enable-linux-user) linux_user="yes"
287   ;;
288   --disable-darwin-user) darwin_user="no"
289   ;;
290   --enable-darwin-user) darwin_user="yes"
291   ;;
292   --enable-uname-release=*) uname_release="$optarg"
293   ;;
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
305   ;;
306   esac
307 done
308
309 if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
310     AIOLIBS=
311 else
312     AIOLIBS="-lrt"
313 fi
314
315 # default flags for all hosts
316 CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
317 LDFLAGS="$LDFLAGS -g"
318
319 #
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)
322 #
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}"
330            fi
331            ;;
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}"
338            fi
339            ;;
340 esac
341
342 if [ "$solaris" = "yes" -a  "$cpu" = "x86_64" ] ; then
343     CFLAGS="${CFLAGS} -m64"
344     OS_CFLAGS="${OS_CFLAGS} -m64"
345 fi
346
347 if [ "$solaris" = "yes" -a  "$cpu" = "i386" ] ; then
348     CFLAGS="${CFLAGS} -m32"
349     OS_CFLAGS="${OS_CFLAGS} -m32"
350 fi
351
352 if test x"$show_help" = x"yes" ; then
353 cat << EOF
354
355 Usage: configure [options]
356 Options: [defaults in brackets after descriptions]
357
358 EOF
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
398 fi
399
400 cc="${cross_prefix}${cc}"
401 ar="${cross_prefix}${ar}"
402 strip="${cross_prefix}${strip}"
403
404 # check that the C compiler works.
405 cat > $TMPC <<EOF
406 int main(void) {}
407 EOF
408
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
414 fi
415
416 if test "$mingw32" = "yes" ; then
417     linux="no"
418     EXESUF=".exe"
419     oss="no"
420 fi
421
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;}
429 EOF
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
441                 fi
442             done
443             if test "$found_compat_cc" = "no" ; then
444                 echo "gcc 3.x not found!"
445             fi
446         fi
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;
452         fi
453     fi
454 fi
455
456 #
457 # Solaris specific configure tool chain decisions
458 #
459 if test "$solaris" = "yes" ; then
460   #
461   # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
462   # override the check with --disable-gcc-check
463   #
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
471     fi
472   fi
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
479   fi
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
485   fi
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"
491     fi
492     exit 1
493   fi
494 fi
495
496
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 sh4-softmmu"
501     fi
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 ppc64-linux-user sh4-linux-user $target_list"
505     fi
506 # the following are Darwin specific
507     if [ "$darwin_user" = "yes" ] ; then
508         target_list="i386-darwin-user ppc-darwin-user $target_list"
509     fi
510 else
511     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
512 fi
513 if test -z "$target_list" ; then
514     echo "No targets enabled"
515     exit 1
516 fi
517
518 if test -z "$cross_prefix" ; then
519
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;
527 }
528 EOF
529
530 if $cc -o $TMPE $TMPC 2> /dev/null ; then
531 $TMPE && bigendian="yes"
532 else
533 echo big/little test failed
534 fi
535
536 else
537
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"
541 fi
542
543 fi
544
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"
549 fi
550
551 # check gcc options support
552 cat > $TMPC <<EOF
553 int main(void) {
554 }
555 EOF
556
557 ##########################################
558 # SDL probe
559
560 sdl_too_old=no
561
562 if test -z "$sdl" ; then
563     sdl_config="sdl-config"
564     sdl=no
565     sdl_static=no
566
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); }
577 EOF
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
585                 fi
586             fi
587
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`"
595                 fi
596
597                 if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
598                     sdl_static=yes
599                 fi
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"
608     fi
609 fi # -z $sdl
610
611 ##########################################
612 # VNC TLS detection
613 if test "$vnc_tls" = "yes" ; then
614   `pkg-config gnutls` || vnc_tls="no"
615 fi
616 if test "$vnc_tls" = "yes" ; then
617   vnc_tls_cflags=`pkg-config --cflags gnutls`
618   vnc_tls_libs=`pkg-config --libs gnutls`
619 fi
620
621 ##########################################
622 # alsa sound support libraries
623
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); }
628 EOF
629   if $cc -o $TMPE $TMPC -lasound 2> /dev/null ; then
630     :
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
637   fi
638 fi
639
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"
644 fi
645
646 if test "$mingw32" = "yes" ; then
647   if test -z "$prefix" ; then
648       prefix="/c/Program Files/Qemu"
649   fi
650   mansuffix=""
651   datasuffix=""
652   docsuffix=""
653   binsuffix=""
654 else
655   if test -z "$prefix" ; then
656       prefix="/usr/local"
657   fi
658   mansuffix="/share/man"
659   datasuffix="/share/qemu"
660   docsuffix="/share/doc/qemu"
661   binsuffix="/bin"
662 fi
663
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"
670 fi
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"
684 fi
685 echo "SDL support       $sdl"
686 if test "$sdl" != "no" ; then
687     echo "SDL static link   $sdl_static"
688 fi
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
701     fi
702     fmod_support=" (lib='$fmod_lib' include='$fmod_inc')"
703 else
704     fmod_support=""
705 fi
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"
712 fi
713 if test -n "$sparc_cpu"; then
714     echo "Target Sparc Arch $sparc_cpu"
715 fi
716 echo "kqemu support     $kqemu"
717 echo "Documentation     $build_docs"
718 [ ! -z "$uname_release" ] && \
719 echo "uname -r          $uname_release"
720
721 if test $sdl_too_old = "yes"; then
722 echo "-> Your SDL version is too old - please upgrade to have SDL support"
723 fi
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
727 fi
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"
731 #fi
732 config_mak="config-host.mak"
733 config_h="config-host.h"
734
735 #echo "Creating $config_mak and $config_h"
736
737 test -f $config_h && mv $config_h ${config_h}~
738
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
742
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
806 fi
807 if test "$bigendian" = "yes" ; then
808   echo "WORDS_BIGENDIAN=yes" >> $config_mak
809   echo "#define WORDS_BIGENDIAN 1" >> $config_h
810 fi
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); }
819 EOF
820   if $cc -o $TMPE $TMPC 2> /dev/null ; then
821     echo "#define HAVE_BYTESWAP_H 1" >> $config_h
822   fi
823 fi
824 if test "$darwin" = "yes" ; then
825   echo "CONFIG_DARWIN=yes" >> $config_mak
826   echo "#define CONFIG_DARWIN 1" >> $config_h
827 fi
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
834   fi
835 fi
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
839 fi
840 if test "$gdbstub" = "yes" ; then
841   echo "CONFIG_GDBSTUB=yes" >> $config_mak
842   echo "#define CONFIG_GDBSTUB 1" >> $config_h
843 fi
844 if test "$gprof" = "yes" ; then
845   echo "TARGET_GPROF=yes" >> $config_mak
846   echo "#define HAVE_GPROF 1" >> $config_h
847 fi
848 if test "$static" = "yes" ; then
849   echo "CONFIG_STATIC=yes" >> $config_mak
850   echo "#define CONFIG_STATIC 1" >> $config_h
851 fi
852 if test $profiler = "yes" ; then
853   echo "#define CONFIG_PROFILER 1" >> $config_h
854 fi
855 if test "$slirp" = "yes" ; then
856   echo "CONFIG_SLIRP=yes" >> $config_mak
857   echo "#define CONFIG_SLIRP 1" >> $config_h
858 fi
859 if test "$adlib" = "yes" ; then
860   echo "CONFIG_ADLIB=yes" >> $config_mak
861   echo "#define CONFIG_ADLIB 1" >> $config_h
862 fi
863 if test "$oss" = "yes" ; then
864   echo "CONFIG_OSS=yes" >> $config_mak
865   echo "#define CONFIG_OSS 1" >> $config_h
866 fi
867 if test "$coreaudio" = "yes" ; then
868   echo "CONFIG_COREAUDIO=yes" >> $config_mak
869   echo "#define CONFIG_COREAUDIO 1" >> $config_h
870 fi
871 if test "$alsa" = "yes" ; then
872   echo "CONFIG_ALSA=yes" >> $config_mak
873   echo "#define CONFIG_ALSA 1" >> $config_h
874 fi
875 if test "$dsound" = "yes" ; then
876   echo "CONFIG_DSOUND=yes" >> $config_mak
877   echo "#define CONFIG_DSOUND 1" >> $config_h
878 fi
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
884 fi
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
890 fi
891 qemu_version=`head $source_path/VERSION`
892 echo "VERSION=$qemu_version" >>$config_mak
893 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
894
895 echo "SRC_PATH=$source_path" >> $config_mak
896 if [ "$source_path_used" = "yes" ]; then
897   echo "VPATH=$source_path" >> $config_mak
898 fi
899 echo "TARGET_DIRS=$target_list" >> $config_mak
900 if [ "$build_docs" = "yes" ] ; then
901   echo "BUILD_DOCS=yes" >> $config_mak
902 fi
903
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
909 fi
910
911 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
912
913 tools=
914 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
915   tools="qemu-img\$(EXESUF) $tools"
916 fi
917 echo "TOOLS=$tools" >> $config_mak
918
919 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
920
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"
944     ;;
945   ${target_cpu}-linux-user)
946     target_user_only="yes"
947     target_linux_user="yes"
948     ;;
949   ${target_cpu}-darwin-user)
950     target_user_only="yes"
951     target_darwin_user="yes"
952     ;;
953   *)
954     echo "ERROR: Target '$target' not recognised"
955     exit 1
956     ;;
957 esac
958
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;
965 fi
966
967 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
968
969 test -f $config_h && mv $config_h ${config_h}~
970
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
975 fi
976 if test "$target_user_only" = "no" ; then
977   mkdir -p $target_dir/slirp
978 fi
979
980 #
981 # don't use ln -sf as not all "ln -sf" over write the file/link
982 #
983 rm -f $target_dir/Makefile
984 ln -s $source_path/Makefile.target $target_dir/Makefile
985
986
987 echo "# Automatically generated by configure - do not modify" > $config_mak
988 echo "/* Automatically generated by configure - do not modify */" > $config_h
989
990
991 echo "include ../config-host.mak" >> $config_mak
992 echo "#include \"../config-host.h\"" >> $config_h
993
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
997
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
1004   fi
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
1040   fi
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
1071 fi
1072 if test "$target_bigendian" = "yes" ; then
1073   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1074   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1075 fi
1076 if test "$target_softmmu" = "yes" ; then
1077   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1078   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1079 fi
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
1083 fi
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
1087 fi
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
1091 fi
1092
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
1096 fi
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
1100 fi
1101 # sdl defines
1102
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
1108     fi
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
1116         fi
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
1121         fi
1122     fi
1123 fi
1124
1125 if test "$cocoa" = "yes" ; then
1126     echo "#define CONFIG_COCOA 1" >> $config_h
1127     echo "CONFIG_COCOA=yes" >> $config_mak
1128 fi
1129
1130 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1131
1132 done # for target in $targets
1133
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
1146 fi
1147
1148 rm -f $TMPO $TMPC $TMPE $TMPS