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