Make installing bios files optional.
[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 TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
19
20 # default parameters
21 prefix=""
22 interp_prefix="/usr/gnemul/qemu-%M"
23 static="no"
24 cross_prefix=""
25 cc="gcc"
26 gcc3_search="yes"
27 gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
28 audio_drv_list=""
29 audio_card_list=""
30 host_cc="gcc"
31 ar="ar"
32 make="make"
33 install="install"
34 strip="strip"
35 cpu=`test $(uname -s) = AIX && uname -p || uname -m`
36 target_list=""
37 case "$cpu" in
38   i386|i486|i586|i686|i86pc|BePC)
39     cpu="i386"
40   ;;
41   x86_64|amd64)
42     cpu="x86_64"
43   ;;
44   alpha)
45     cpu="alpha"
46   ;;
47   armv*b)
48     cpu="armv4b"
49   ;;
50   armv*l)
51     cpu="armv4l"
52   ;;
53   cris)
54     cpu="cris"
55   ;;
56   parisc|parisc64)
57     cpu="hppa"
58   ;;
59   ia64)
60     cpu="ia64"
61   ;;
62   m68k)
63     cpu="m68k"
64   ;;
65   mips)
66     cpu="mips"
67   ;;
68   mips64)
69     cpu="mips64"
70   ;;
71   "Power Macintosh"|ppc|ppc64|powerpc)
72     cpu="powerpc"
73   ;;
74   s390*)
75     cpu="s390"
76   ;;
77   sparc|sun4[cdmuv])
78     cpu="sparc"
79   ;;
80   sparc64)
81     cpu="sparc64"
82   ;;
83   *)
84     cpu="unknown"
85   ;;
86 esac
87 gprof="no"
88 sparse="no"
89 bigendian="no"
90 mingw32="no"
91 EXESUF=""
92 gdbstub="yes"
93 slirp="yes"
94 vde="yes"
95 fmod_lib=""
96 fmod_inc=""
97 oss_lib=""
98 vnc_tls="yes"
99 bsd="no"
100 linux="no"
101 solaris="no"
102 kqemu="no"
103 profiler="no"
104 cocoa="no"
105 check_gfx="yes"
106 check_gcc="yes"
107 softmmu="yes"
108 linux_user="no"
109 darwin_user="no"
110 bsd_user="no"
111 build_docs="no"
112 uname_release=""
113 curses="yes"
114 aio="yes"
115 nptl="yes"
116 mixemu="no"
117 bluez="yes"
118 kvm="yes"
119 kerneldir=""
120 aix="no"
121 blobs="yes"
122
123 # OS specific
124 targetos=`uname -s`
125 case $targetos in
126 CYGWIN*)
127 mingw32="yes"
128 OS_CFLAGS="-mno-cygwin"
129 if [ "$cpu" = "i386" ] ; then
130     kqemu="yes"
131 fi
132 audio_possible_drivers="sdl"
133 ;;
134 MINGW32*)
135 mingw32="yes"
136 if [ "$cpu" = "i386" ] ; then
137     kqemu="yes"
138 fi
139 audio_possible_drivers="dsound sdl fmod"
140 ;;
141 GNU/kFreeBSD)
142 audio_drv_list="oss"
143 audio_possible_drivers="oss sdl esd pa"
144 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
145     kqemu="yes"
146 fi
147 ;;
148 FreeBSD)
149 bsd="yes"
150 audio_drv_list="oss"
151 audio_possible_drivers="oss sdl esd pa"
152 aio_lib="-lpthread"
153 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
154     kqemu="yes"
155 fi
156 ;;
157 NetBSD)
158 bsd="yes"
159 audio_drv_list="oss"
160 audio_possible_drivers="oss sdl esd"
161 oss_lib="-lossaudio"
162 aio_lib="-lrt -lpthread"
163 ;;
164 OpenBSD)
165 bsd="yes"
166 openbsd="yes"
167 audio_drv_list="oss"
168 audio_possible_drivers="oss sdl esd"
169 oss_lib="-lossaudio"
170 aio_lib="-lpthread"
171 ;;
172 Darwin)
173 bsd="yes"
174 darwin="yes"
175 darwin_user="yes"
176 cocoa="yes"
177 audio_drv_list="coreaudio"
178 audio_possible_drivers="coreaudio sdl fmod"
179 OS_CFLAGS="-mdynamic-no-pic"
180 OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
181 aio_lib="-lpthread"
182 ;;
183 SunOS)
184     solaris="yes"
185     make="gmake"
186     install="ginstall"
187     needs_libsunmath="no"
188     solarisrev=`uname -r | cut -f2 -d.`
189     # have to select again, because `uname -m` returns i86pc
190     # even on an x86_64 box.
191     solariscpu=`isainfo -k`
192     if test "${solariscpu}" = "amd64" ; then
193         cpu="x86_64"
194     fi
195     if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
196         if test "$solarisrev" -le 9 ; then
197             if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
198                 needs_libsunmath="yes"
199             else
200                 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
201                 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
202                 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
203                 echo "Studio 11 can be downloaded from www.sun.com."
204                 exit 1
205             fi
206         fi
207         if test "$solarisrev" -ge 9 ; then
208             kqemu="yes"
209         fi
210     fi
211     if test -f /usr/include/sys/soundcard.h ; then
212         audio_drv_list="oss"
213     fi
214     audio_possible_drivers="oss sdl"
215 ;;
216 AIX)
217 aix="yes"
218 make="gmake"
219 ;;
220 *)
221 audio_drv_list="oss"
222 audio_possible_drivers="oss alsa sdl esd pa"
223 linux="yes"
224 linux_user="yes"
225 usb="linux"
226 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
227     kqemu="yes"
228     audio_possible_drivers="$audio_possible_drivers fmod"
229 fi
230 ;;
231 esac
232
233 if [ "$bsd" = "yes" ] ; then
234   if [ "$darwin" != "yes" ] ; then
235     make="gmake"
236     usb="bsd"
237   fi
238   bsd_user="yes"
239 fi
240
241 # find source path
242 source_path=`dirname "$0"`
243 source_path_used="no"
244 workdir=`pwd`
245 if [ -z "$source_path" ]; then
246     source_path=$workdir
247 else
248     source_path=`cd "$source_path"; pwd`
249 fi
250 [ -f "$workdir/vl.c" ] || source_path_used="yes"
251
252 werror="no"
253 # generate compile errors on warnings for development builds
254 #if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
255 #werror="yes";
256 #fi
257
258 for opt do
259   optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
260   case "$opt" in
261   --help|-h) show_help=yes
262   ;;
263   --prefix=*) prefix="$optarg"
264   ;;
265   --interp-prefix=*) interp_prefix="$optarg"
266   ;;
267   --source-path=*) source_path="$optarg"
268   source_path_used="yes"
269   ;;
270   --cross-prefix=*) cross_prefix="$optarg"
271   ;;
272   --cc=*) cc="$optarg"
273   gcc3_search="no"
274   ;;
275   --host-cc=*) host_cc="$optarg"
276   ;;
277   --make=*) make="$optarg"
278   ;;
279   --install=*) install="$optarg"
280   ;;
281   --extra-cflags=*) CFLAGS="$optarg"
282   ;;
283   --extra-ldflags=*) LDFLAGS="$optarg"
284   ;;
285   --cpu=*) cpu="$optarg"
286   ;;
287   --target-list=*) target_list="$optarg"
288   ;;
289   --enable-gprof) gprof="yes"
290   ;;
291   --static) static="yes"
292   ;;
293   --disable-sdl) sdl="no"
294   ;;
295   --fmod-lib=*) fmod_lib="$optarg"
296   ;;
297   --fmod-inc=*) fmod_inc="$optarg"
298   ;;
299   --oss-lib=*) oss_lib="$optarg"
300   ;;
301   --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
302   ;;
303   --audio-drv-list=*) audio_drv_list="$optarg"
304   ;;
305   --enable-sparse) sparse="yes"
306   ;;
307   --disable-sparse) sparse="no"
308   ;;
309   --disable-vnc-tls) vnc_tls="no"
310   ;;
311   --disable-slirp) slirp="no"
312   ;;
313   --disable-vde) vde="no"
314   ;;
315   --disable-kqemu) kqemu="no"
316   ;;
317   --disable-brlapi) brlapi="no"
318   ;;
319   --disable-bluez) bluez="no"
320   ;;
321   --disable-kvm) kvm="no"
322   ;;
323   --enable-profiler) profiler="yes"
324   ;;
325   --enable-cocoa)
326       cocoa="yes" ;
327       sdl="no" ;
328       audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
329   ;;
330   --disable-gfx-check) check_gfx="no"
331   ;;
332   --disable-gcc-check) check_gcc="no"
333   ;;
334   --disable-system) softmmu="no"
335   ;;
336   --enable-system) softmmu="yes"
337   ;;
338   --disable-linux-user) linux_user="no"
339   ;;
340   --enable-linux-user) linux_user="yes"
341   ;;
342   --disable-darwin-user) darwin_user="no"
343   ;;
344   --enable-darwin-user) darwin_user="yes"
345   ;;
346   --disable-bsd-user) bsd_user="no"
347   ;;
348   --enable-bsd-user) bsd_user="yes"
349   ;;
350   --enable-uname-release=*) uname_release="$optarg"
351   ;;
352   --sparc_cpu=*)
353       sparc_cpu="$optarg"
354       case $sparc_cpu in
355         v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
356                  target_cpu="sparc"; cpu="sparc" ;;
357         v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
358                  target_cpu="sparc"; cpu="sparc" ;;
359         v9)    SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
360                  target_cpu="sparc64"; cpu="sparc64" ;;
361         *)     echo "undefined SPARC architecture. Exiting";exit 1;;
362       esac
363   ;;
364   --enable-werror) werror="yes"
365   ;;
366   --disable-werror) werror="no"
367   ;;
368   --disable-curses) curses="no"
369   ;;
370   --disable-nptl) nptl="no"
371   ;;
372   --enable-mixemu) mixemu="yes"
373   ;;
374   --disable-aio) aio="no"
375   ;;
376   --disable-blobs) blobs="no"
377   ;;
378   --kerneldir=*) kerneldir="$optarg"
379   ;;
380   *) echo "ERROR: unknown option $opt"; show_help="yes"
381   ;;
382   esac
383 done
384
385 # default flags for all hosts
386 CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
387 CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
388 LDFLAGS="$LDFLAGS -g"
389 if test "$werror" = "yes" ; then
390 CFLAGS="$CFLAGS -Werror"
391 fi
392
393 if test "$solaris" = "no" ; then
394     if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
395         LDFLAGS="$LDFLAGS -Wl,--warn-common"
396     fi
397 fi
398
399 #
400 # If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
401 # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
402 #
403 case "$cpu" in
404     sparc) if test -z "$sparc_cpu" ; then
405                ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
406                ARCH_LDFLAGS="-m32"
407            else
408                ARCH_CFLAGS="${SP_CFLAGS}"
409                ARCH_LDFLAGS="${SP_LDFLAGS}"
410            fi
411            ;;
412     sparc64) if test -z "$sparc_cpu" ; then
413                ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
414                ARCH_LDFLAGS="-m64"
415            else
416                ARCH_CFLAGS="${SP_CFLAGS}"
417                ARCH_LDFLAGS="${SP_LDFLAGS}"
418            fi
419            ;;
420     s390)
421            ARCH_CFLAGS="-march=z900"
422            ;;
423     i386)
424            ARCH_CFLAGS="-m32"
425            ARCH_LDFLAGS="-m32"
426            ;;
427     x86_64)
428            ARCH_CFLAGS="-m64"
429            ARCH_LDFLAGS="-m64"
430            ;;
431 esac
432
433 if test x"$show_help" = x"yes" ; then
434 cat << EOF
435
436 Usage: configure [options]
437 Options: [defaults in brackets after descriptions]
438
439 EOF
440 echo "Standard options:"
441 echo "  --help                   print this message"
442 echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
443 echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
444 echo "                           use %M for cpu name [$interp_prefix]"
445 echo "  --target-list=LIST       set target list [$target_list]"
446 echo ""
447 echo "kqemu kernel acceleration support:"
448 echo "  --disable-kqemu          disable kqemu support"
449 echo ""
450 echo "Advanced options (experts only):"
451 echo "  --source-path=PATH       path of source code [$source_path]"
452 echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
453 echo "  --cc=CC                  use C compiler CC [$cc]"
454 echo "  --host-cc=CC             use C compiler CC [$host_cc] for dyngen etc."
455 echo "  --make=MAKE              use specified make [$make]"
456 echo "  --install=INSTALL        use specified install [$install]"
457 echo "  --static                 enable static build [$static]"
458 echo "  --enable-sparse          enable sparse checker"
459 echo "  --disable-sparse         disable sparse checker (default)"
460 echo "  --disable-werror         disable compilation abort on warning"
461 echo "  --disable-sdl            disable SDL"
462 echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
463 echo "  --audio-drv-list=LIST    set audio drivers list:"
464 echo "                           Available drivers: $audio_possible_drivers"
465 echo "  --audio-card-list=LIST   set list of additional emulated audio cards"
466 echo "                           Available cards: ac97 adlib cs4231a gus"
467 echo "  --enable-mixemu          enable mixer emulation"
468 echo "  --disable-brlapi         disable BrlAPI"
469 echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
470 echo "  --disable-curses         disable curses output"
471 echo "  --disable-bluez          disable bluez stack connectivity"
472 echo "  --disable-kvm            disable KVM acceleration support"
473 echo "  --disable-nptl           disable usermode NPTL support"
474 echo "  --enable-system          enable all system emulation targets"
475 echo "  --disable-system         disable all system emulation targets"
476 echo "  --enable-linux-user      enable all linux usermode emulation targets"
477 echo "  --disable-linux-user     disable all linux usermode emulation targets"
478 echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
479 echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
480 echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
481 echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
482 echo "  --fmod-lib               path to FMOD library"
483 echo "  --fmod-inc               path to FMOD includes"
484 echo "  --oss-lib                path to OSS library"
485 echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
486 echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
487 echo "  --disable-vde            disable support for vde network"
488 echo "  --disable-aio            disable AIO support"
489 echo "  --disable-blobs          disable installing provided firmware blobs"
490 echo "  --kerneldir=PATH         look for kernel includes in PATH"
491 echo ""
492 echo "NOTE: The object files are built at the place where configure is launched"
493 exit 1
494 fi
495
496 cc="${cross_prefix}${cc}"
497 ar="${cross_prefix}${ar}"
498 strip="${cross_prefix}${strip}"
499
500 # check that the C compiler works.
501 cat > $TMPC <<EOF
502 int main(void) {}
503 EOF
504
505 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
506   : C compiler works ok
507 else
508     echo "ERROR: \"$cc\" either does not exist or does not work"
509     exit 1
510 fi
511
512 # check compiler to see if we're on mingw32
513 cat > $TMPC <<EOF
514 #include <windows.h>
515 #ifndef _WIN32
516 #error not windows
517 #endif
518 int main(void) {}
519 EOF
520
521 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
522     mingw32="yes"
523 fi
524
525 if test "$mingw32" = "yes" ; then
526     linux="no"
527     EXESUF=".exe"
528     oss="no"
529     linux_user="no"
530     bsd_user="no"
531 fi
532
533 if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
534     AIOLIBS=
535 elif [ "$bsd" = "yes" ]; then
536     AIOLIBS="$aio_lib"
537 else
538     # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
539     AIOLIBS="-lrt -lpthread"
540 fi
541
542 # Check for gcc4, error if pre-gcc4
543 if test "$check_gcc" = "yes" ; then
544     cat > $TMPC <<EOF
545 #if __GNUC__ < 4
546 #error gcc3
547 #endif
548 int main(){return 0;}
549 EOF
550     if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
551         echo "WARNING: \"$cc\" looks like gcc 4.x"
552         found_compat_cc="no"
553         if test "$gcc3_search" = "yes" ; then
554             echo "Looking for gcc 3.x"
555             for compat_cc in $gcc3_list ; do
556                 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
557                     echo "Found \"$compat_cc\""
558                     cc="$cross_prefix$compat_cc"
559                     found_compat_cc="yes"
560                     break
561                 fi
562             done
563             if test "$found_compat_cc" = "no" ; then
564                 echo "gcc 3.x not found!"
565             fi
566         fi
567         if test "$found_compat_cc" = "no" ; then
568             echo "QEMU is known to have problems when compiled with gcc 4.x"
569             echo "It is recommended that you use gcc 3.x to build QEMU"
570             echo "To use this compiler anyway, configure with --disable-gcc-check"
571             exit 1;
572         fi
573     fi
574 fi
575
576 if test ! -x "$(which cgcc 2>/dev/null)"; then
577     sparse="no"
578 fi
579
580 #
581 # Solaris specific configure tool chain decisions
582 #
583 if test "$solaris" = "yes" ; then
584   #
585   # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
586   # override the check with --disable-gcc-check
587   #
588   if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
589     solgcc=`which $cc`
590     if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
591       echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
592       echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
593       echo "or get the latest patch from SunSolve for gcc"
594       exit 1
595     fi
596   fi
597   solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
598   if test -z "$solinst" ; then
599     echo "Solaris install program not found. Use --install=/usr/ucb/install or"
600     echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
601     echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
602     exit 1
603   fi
604   if test "$solinst" = "/usr/sbin/install" ; then
605     echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
606     echo "try ginstall from the GNU fileutils available from www.blastwave.org"
607     echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
608     exit 1
609   fi
610   sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
611   if test -z "$sol_ar" ; then
612     echo "Error: No path includes ar"
613     if test -f /usr/ccs/bin/ar ; then
614       echo "Add /usr/ccs/bin to your path and rerun configure"
615     fi
616     exit 1
617   fi
618 fi
619
620
621 if test -z "$target_list" ; then
622 # these targets are portable
623     if [ "$softmmu" = "yes" ] ; then
624         target_list="\
625 i386-softmmu \
626 x86_64-softmmu \
627 arm-softmmu \
628 cris-softmmu \
629 m68k-softmmu \
630 mips-softmmu \
631 mipsel-softmmu \
632 mips64-softmmu \
633 mips64el-softmmu \
634 ppc-softmmu \
635 ppcemb-softmmu \
636 ppc64-softmmu \
637 sh4-softmmu \
638 sh4eb-softmmu \
639 sparc-softmmu \
640 "
641     fi
642 # the following are Linux specific
643     if [ "$linux_user" = "yes" ] ; then
644         target_list="${target_list}\
645 i386-linux-user \
646 x86_64-linux-user \
647 alpha-linux-user \
648 arm-linux-user \
649 armeb-linux-user \
650 cris-linux-user \
651 m68k-linux-user \
652 mips-linux-user \
653 mipsel-linux-user \
654 ppc-linux-user \
655 ppc64-linux-user \
656 ppc64abi32-linux-user \
657 sh4-linux-user \
658 sh4eb-linux-user \
659 sparc-linux-user \
660 sparc64-linux-user \
661 sparc32plus-linux-user \
662 "
663     fi
664 # the following are Darwin specific
665     if [ "$darwin_user" = "yes" ] ; then
666         target_list="$target_list i386-darwin-user ppc-darwin-user"
667     fi
668 # the following are BSD specific
669     if [ "$bsd_user" = "yes" ] ; then
670         target_list="${target_list}\
671 sparc64-bsd-user \
672 "
673     fi
674 else
675     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
676 fi
677 if test -z "$target_list" ; then
678     echo "No targets enabled"
679     exit 1
680 fi
681
682 if test -z "$cross_prefix" ; then
683
684 # ---
685 # big/little endian test
686 cat > $TMPC << EOF
687 #include <inttypes.h>
688 int main(int argc, char ** argv){
689         volatile uint32_t i=0x01234567;
690         return (*((uint8_t*)(&i))) == 0x67;
691 }
692 EOF
693
694 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
695 $TMPE && bigendian="yes"
696 else
697 echo big/little test failed
698 fi
699
700 else
701
702 # if cross compiling, cannot launch a program, so make a static guess
703 if test "$cpu" = "armv4b" \
704      -o "$cpu" = "hppa" \
705      -o "$cpu" = "m68k" \
706      -o "$cpu" = "mips" \
707      -o "$cpu" = "mips64" \
708      -o "$cpu" = "powerpc" \
709      -o "$cpu" = "s390" \
710      -o "$cpu" = "sparc" \
711      -o "$cpu" = "sparc64"; then
712     bigendian="yes"
713 fi
714
715 fi
716
717 # host long bits test
718 hostlongbits="32"
719 if test "$cpu" = "x86_64" \
720      -o "$cpu" = "alpha" \
721      -o "$cpu" = "ia64" \
722      -o "$cpu" = "sparc64"; then
723     hostlongbits="64"
724 fi
725
726 # ppc specific hostlongbits selection
727 if test "$cpu" = "powerpc" ; then
728     if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
729         grep -q __powerpc64__ $TMPI && hostlongbits=64
730     else
731         echo hostlongbits test failed
732         exit 1
733     fi
734 fi
735
736 # check gcc options support
737 cat > $TMPC <<EOF
738 int main(void) {
739 }
740 EOF
741
742 # Check host NPTL support
743 cat > $TMPC <<EOF
744 #include <sched.h>
745 #include <linux/futex.h>
746 void foo()
747 {
748 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
749 #error bork
750 #endif
751 }
752 EOF
753
754 if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
755   :
756 else
757    nptl="no"
758 fi
759
760 ##########################################
761 # zlib check
762
763 cat > $TMPC << EOF
764 #include <zlib.h>
765 int main(void) { zlibVersion(); return 0; }
766 EOF
767 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz 2> /dev/null ; then
768     :
769 else
770     echo
771     echo "Error: zlib check failed"
772     echo "Make sure to have the zlib libs and headers installed."
773     echo
774     exit 1
775 fi
776
777 ##########################################
778 # SDL probe
779
780 sdl_too_old=no
781
782 if test -z "$sdl" ; then
783     sdl_config="sdl-config"
784     sdl=no
785     sdl_static=no
786
787 cat > $TMPC << EOF
788 #include <SDL.h>
789 #undef main /* We don't want SDL to override our main() */
790 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
791 EOF
792     if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
793         _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
794         if test "$_sdlversion" -lt 121 ; then
795             sdl_too_old=yes
796         else
797             if test "$cocoa" = "no" ; then
798                 sdl=yes
799             fi
800         fi
801
802         # static link with sdl ?
803         if test "$sdl" = "yes" ; then
804             aa="no"
805             `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
806             sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
807             if [ "$aa" = "yes" ] ; then
808                 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
809             fi
810
811             if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
812                 sdl_static=yes
813             fi
814         fi # static link
815     fi # sdl compile test
816 else
817     # Make sure to disable cocoa if sdl was set
818     if test "$sdl" = "yes" ; then
819        cocoa="no"
820        audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
821     fi
822 fi # -z $sdl
823
824 ##########################################
825 # VNC TLS detection
826 if test "$vnc_tls" = "yes" ; then
827 cat > $TMPC <<EOF
828 #include <gnutls/gnutls.h>
829 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
830 EOF
831     vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
832     vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
833     if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
834            $vnc_tls_libs 2> /dev/null ; then
835         :
836     else
837         vnc_tls="no"
838     fi
839 fi
840
841 ##########################################
842 # vde libraries probe
843 if test "$vde" = "yes" ; then
844   cat > $TMPC << EOF
845 #include <libvdeplug.h>
846 int main(void)
847 {
848     struct vde_open_args a = {0, 0, 0};
849     vde_open("", "", &a);
850     return 0;
851 }
852 EOF
853     if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
854         :
855     else
856         vde="no"
857     fi
858 fi
859
860 ##########################################
861 # Sound support libraries probe
862
863 audio_drv_probe()
864 {
865     drv=$1
866     hdr=$2
867     lib=$3
868     exp=$4
869     cfl=$5
870         cat > $TMPC << EOF
871 #include <$hdr>
872 int main(void) { $exp }
873 EOF
874     if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
875         :
876     else
877         echo
878         echo "Error: $drv check failed"
879         echo "Make sure to have the $drv libs and headers installed."
880         echo
881         exit 1
882     fi
883 }
884
885 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
886 for drv in $audio_drv_list; do
887     case $drv in
888     alsa)
889     audio_drv_probe $drv alsa/asoundlib.h -lasound \
890         "snd_pcm_t **handle; return snd_pcm_close(*handle);"
891     ;;
892
893     fmod)
894     if test -z $fmod_lib || test -z $fmod_inc; then
895         echo
896         echo "Error: You must specify path to FMOD library and headers"
897         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
898         echo
899         exit 1
900     fi
901     audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
902     ;;
903
904     esd)
905     audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
906     ;;
907
908     pa)
909     audio_drv_probe $drv pulse/simple.h -lpulse-simple \
910         "pa_simple *s = NULL; pa_simple_free(s); return 0;"
911     ;;
912
913     oss|sdl|core|wav|dsound)
914     # XXX: Probes for CoreAudio, DirectSound, SDL(?)
915     ;;
916
917     *)
918     echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
919         echo
920         echo "Error: Unknown driver '$drv' selected"
921         echo "Possible drivers are: $audio_possible_drivers"
922         echo
923         exit 1
924     }
925     ;;
926     esac
927 done
928
929 ##########################################
930 # BrlAPI probe
931
932 if test -z "$brlapi" ; then
933     brlapi=no
934 cat > $TMPC << EOF
935 #include <brlapi.h>
936 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
937 EOF
938     if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
939             brlapi=yes
940     fi # brlapi compile test
941 fi # -z $brlapi
942
943 ##########################################
944 # curses probe
945
946 if test "$curses" = "yes" ; then
947   curses=no
948   cat > $TMPC << EOF
949 #include <curses.h>
950 int main(void) { return curses_version(); }
951 EOF
952   if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
953     curses=yes
954   fi
955 fi # test "$curses"
956
957 ##########################################
958 # bluez support probe
959 if test "$bluez" = "yes" ; then
960   `pkg-config bluez` || bluez="no"
961 fi
962 if test "$bluez" = "yes" ; then
963   cat > $TMPC << EOF
964 #include <bluetooth/bluetooth.h>
965 int main(void) { return bt_error(0); }
966 EOF
967   bluez_cflags=`pkg-config --cflags bluez`
968   bluez_libs=`pkg-config --libs bluez`
969   if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
970       $bluez_libs 2> /dev/null ; then
971     :
972   else
973     bluez="no"
974   fi
975 fi
976
977 ##########################################
978 # kvm probe
979 if test "$kvm" = "yes" ; then
980     cat > $TMPC <<EOF
981 #include <linux/kvm.h>
982 #if !defined(KVM_API_VERSION) || \
983     KVM_API_VERSION < 12 || \
984     KVM_API_VERSION > 12 || \
985     !defined(KVM_CAP_USER_MEMORY) || \
986     !defined(KVM_CAP_SET_TSS_ADDR)
987 #error Invalid KVM version
988 #endif
989 int main(void) { return 0; }
990 EOF
991   if test "$kerneldir" != "" ; then
992       kvm_cflags=-I"$kerneldir"/include
993   else
994       kvm_cflags=""
995   fi
996   if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
997       2>/dev/null ; then
998     :
999   else
1000     kvm="no"
1001   fi
1002 fi
1003
1004 ##########################################
1005 # AIO probe
1006 if test "$aio" = "yes" ; then
1007   aio=no
1008   cat > $TMPC << EOF
1009 #include <aio.h>
1010 int main(void) { return aio_write(NULL); }
1011 EOF
1012   if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
1013     aio=yes
1014   fi
1015 fi
1016
1017 # Check if tools are available to build documentation.
1018 if [ -x "`which texi2html 2>/dev/null`" ] && \
1019    [ -x "`which pod2man 2>/dev/null`" ]; then
1020   build_docs="yes"
1021 fi
1022
1023 if test "$mingw32" = "yes" ; then
1024   if test -z "$prefix" ; then
1025       prefix="c:\\\\Program Files\\\\Qemu"
1026   fi
1027   mansuffix=""
1028   datasuffix=""
1029   docsuffix=""
1030   binsuffix=""
1031 else
1032   if test -z "$prefix" ; then
1033       prefix="/usr/local"
1034   fi
1035   mansuffix="/share/man"
1036   datasuffix="/share/qemu"
1037   docsuffix="/share/doc/qemu"
1038   binsuffix="/bin"
1039 fi
1040
1041 echo "Install prefix    $prefix"
1042 echo "BIOS directory    $prefix$datasuffix"
1043 echo "binary directory  $prefix$binsuffix"
1044 if test "$mingw32" = "no" ; then
1045 echo "Manual directory  $prefix$mansuffix"
1046 echo "ELF interp prefix $interp_prefix"
1047 fi
1048 echo "Source path       $source_path"
1049 echo "C compiler        $cc"
1050 echo "Host C compiler   $host_cc"
1051 echo "ARCH_CFLAGS       $ARCH_CFLAGS"
1052 echo "make              $make"
1053 echo "install           $install"
1054 echo "host CPU          $cpu"
1055 echo "host big endian   $bigendian"
1056 echo "target list       $target_list"
1057 echo "gprof enabled     $gprof"
1058 echo "sparse enabled    $sparse"
1059 echo "profiler          $profiler"
1060 echo "static build      $static"
1061 echo "-Werror enabled   $werror"
1062 if test "$darwin" = "yes" ; then
1063     echo "Cocoa support     $cocoa"
1064 fi
1065 echo "SDL support       $sdl"
1066 if test "$sdl" != "no" ; then
1067     echo "SDL static link   $sdl_static"
1068 fi
1069 echo "curses support    $curses"
1070 echo "mingw32 support   $mingw32"
1071 echo "Audio drivers     $audio_drv_list"
1072 echo "Extra audio cards $audio_card_list"
1073 echo "Mixer emulation   $mixemu"
1074 echo "VNC TLS support   $vnc_tls"
1075 if test "$vnc_tls" = "yes" ; then
1076     echo "    TLS CFLAGS    $vnc_tls_cflags"
1077     echo "    TLS LIBS      $vnc_tls_libs"
1078 fi
1079 if test -n "$sparc_cpu"; then
1080     echo "Target Sparc Arch $sparc_cpu"
1081 fi
1082 echo "kqemu support     $kqemu"
1083 echo "brlapi support    $brlapi"
1084 echo "Documentation     $build_docs"
1085 [ ! -z "$uname_release" ] && \
1086 echo "uname -r          $uname_release"
1087 echo "NPTL support      $nptl"
1088 echo "vde support       $vde"
1089 echo "AIO support       $aio"
1090 echo "Install blobs     $blobs"
1091 echo "KVM support       $kvm"
1092
1093 if test $sdl_too_old = "yes"; then
1094 echo "-> Your SDL version is too old - please upgrade to have SDL support"
1095 fi
1096 if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1097   echo "The error log from compiling the libSDL test is: "
1098   cat /tmp/qemu-$$-sdl-config.log
1099 fi
1100 rm -f /tmp/qemu-$$-sdl-config.log
1101 #if test "$sdl_static" = "no"; then
1102 #  echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1103 #fi
1104 config_mak="config-host.mak"
1105 config_h="config-host.h"
1106
1107 #echo "Creating $config_mak and $config_h"
1108
1109 test -f $config_h && mv $config_h ${config_h}~
1110
1111 echo "# Automatically generated by configure - do not modify" > $config_mak
1112 echo "# Configured with: $0 $@" >> $config_mak
1113 echo "/* Automatically generated by configure - do not modify */" > $config_h
1114
1115 echo "prefix=$prefix" >> $config_mak
1116 echo "bindir=\${prefix}$binsuffix" >> $config_mak
1117 echo "mandir=\${prefix}$mansuffix" >> $config_mak
1118 echo "datadir=\${prefix}$datasuffix" >> $config_mak
1119 echo "docdir=\${prefix}$docsuffix" >> $config_mak
1120 echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
1121 echo "MAKE=$make" >> $config_mak
1122 echo "INSTALL=$install" >> $config_mak
1123 echo "CC=$cc" >> $config_mak
1124 echo "HOST_CC=$host_cc" >> $config_mak
1125 echo "AR=$ar" >> $config_mak
1126 echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
1127 # XXX: only use CFLAGS and LDFLAGS ?  
1128 # XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1129 # compilation of dyngen tool (useful for win32 build on Linux host)
1130 echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
1131 echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1132 echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1133 echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
1134 echo "CFLAGS=$CFLAGS" >> $config_mak
1135 echo "LDFLAGS=$LDFLAGS" >> $config_mak
1136 echo "EXESUF=$EXESUF" >> $config_mak
1137 echo "AIOLIBS=$AIOLIBS" >> $config_mak
1138 case "$cpu" in
1139   i386)
1140     echo "ARCH=i386" >> $config_mak
1141     echo "#define HOST_I386 1" >> $config_h
1142   ;;
1143   x86_64)
1144     echo "ARCH=x86_64" >> $config_mak
1145     echo "#define HOST_X86_64 1" >> $config_h
1146   ;;
1147   alpha)
1148     echo "ARCH=alpha" >> $config_mak
1149     echo "#define HOST_ALPHA 1" >> $config_h
1150   ;;
1151   armv4b)
1152     echo "ARCH=arm" >> $config_mak
1153     echo "#define HOST_ARM 1" >> $config_h
1154   ;;
1155   armv4l)
1156     echo "ARCH=arm" >> $config_mak
1157     echo "#define HOST_ARM 1" >> $config_h
1158   ;;
1159   cris)
1160     echo "ARCH=cris" >> $config_mak
1161     echo "#define HOST_CRIS 1" >> $config_h
1162   ;;
1163   hppa)
1164     echo "ARCH=hppa" >> $config_mak
1165     echo "#define HOST_HPPA 1" >> $config_h
1166   ;;
1167   ia64)
1168     echo "ARCH=ia64" >> $config_mak
1169     echo "#define HOST_IA64 1" >> $config_h
1170   ;;
1171   m68k)
1172     echo "ARCH=m68k" >> $config_mak
1173     echo "#define HOST_M68K 1" >> $config_h
1174   ;;
1175   mips)
1176     echo "ARCH=mips" >> $config_mak
1177     echo "#define HOST_MIPS 1" >> $config_h
1178   ;;
1179   mips64)
1180     echo "ARCH=mips64" >> $config_mak
1181     echo "#define HOST_MIPS64 1" >> $config_h
1182   ;;
1183   powerpc)
1184   if test "$hostlongbits" = "32"; then
1185       echo "ARCH=ppc" >> $config_mak
1186       echo "#define HOST_PPC 1" >> $config_h
1187   else
1188       echo "ARCH=ppc64" >> $config_mak
1189       echo "#define HOST_PPC64 1" >> $config_h
1190   fi
1191   ;;
1192   s390)
1193     echo "ARCH=s390" >> $config_mak
1194     echo "#define HOST_S390 1" >> $config_h
1195   ;;
1196   sparc)
1197     echo "ARCH=sparc" >> $config_mak
1198     echo "#define HOST_SPARC 1" >> $config_h
1199   ;;
1200   sparc64)
1201     echo "ARCH=sparc64" >> $config_mak
1202     echo "#define HOST_SPARC64 1" >> $config_h
1203   ;;
1204   *)
1205     echo "Unsupported CPU = $cpu"
1206     exit 1
1207   ;;
1208 esac
1209 if test "$sparse" = "yes" ; then
1210   echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_mak
1211   echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_mak
1212   echo "CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1213 fi
1214 if test "$bigendian" = "yes" ; then
1215   echo "WORDS_BIGENDIAN=yes" >> $config_mak
1216   echo "#define WORDS_BIGENDIAN 1" >> $config_h
1217 fi
1218 echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
1219 if test "$mingw32" = "yes" ; then
1220   echo "CONFIG_WIN32=yes" >> $config_mak
1221   echo "#define CONFIG_WIN32 1" >> $config_h
1222 else
1223   cat > $TMPC << EOF
1224 #include <byteswap.h>
1225 int main(void) { return bswap_32(0); }
1226 EOF
1227   if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1228     echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1229   fi
1230 fi
1231
1232 if [ "$openbsd" = "yes" ] ; then
1233   echo "#define ENOTSUP 4096" >> $config_h
1234 fi
1235
1236 if test "$darwin" = "yes" ; then
1237   echo "CONFIG_DARWIN=yes" >> $config_mak
1238   echo "#define CONFIG_DARWIN 1" >> $config_h
1239 fi
1240
1241 if test "$aix" = "yes" ; then
1242   echo "CONFIG_AIX=yes" >> $config_mak
1243   echo "#define CONFIG_AIX 1" >> $config_h
1244 fi
1245
1246 if test "$solaris" = "yes" ; then
1247   echo "CONFIG_SOLARIS=yes" >> $config_mak
1248   echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1249   if test "$needs_libsunmath" = "yes" ; then
1250     echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1251     echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1252   fi
1253 fi
1254 if test -n "$sparc_cpu"; then
1255   echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1256   echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1257 fi
1258 if test "$gdbstub" = "yes" ; then
1259   echo "CONFIG_GDBSTUB=yes" >> $config_mak
1260   echo "#define CONFIG_GDBSTUB 1" >> $config_h
1261 fi
1262 if test "$gprof" = "yes" ; then
1263   echo "TARGET_GPROF=yes" >> $config_mak
1264   echo "#define HAVE_GPROF 1" >> $config_h
1265 fi
1266 if test "$static" = "yes" ; then
1267   echo "CONFIG_STATIC=yes" >> $config_mak
1268   echo "#define CONFIG_STATIC 1" >> $config_h
1269 fi
1270 if test $profiler = "yes" ; then
1271   echo "#define CONFIG_PROFILER 1" >> $config_h
1272 fi
1273 if test "$slirp" = "yes" ; then
1274   echo "CONFIG_SLIRP=yes" >> $config_mak
1275   echo "#define CONFIG_SLIRP 1" >> $config_h
1276 fi
1277 if test "$vde" = "yes" ; then
1278   echo "CONFIG_VDE=yes" >> $config_mak
1279   echo "#define CONFIG_VDE 1" >> $config_h
1280   echo "VDE_LIBS=-lvdeplug" >> $config_mak
1281 fi
1282 for card in $audio_card_list; do
1283     def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1284     echo "$def=yes" >> $config_mak
1285     echo "#define $def 1" >> $config_h
1286 done
1287 echo "#define AUDIO_DRIVERS \\" >> $config_h
1288 for drv in $audio_drv_list; do
1289     echo "    &${drv}_audio_driver, \\" >>$config_h
1290     def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1291     echo "$def=yes" >> $config_mak
1292     if test "$drv" = "fmod"; then
1293         echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1294         echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1295     elif test "$drv" = "oss"; then
1296         echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1297     fi
1298 done
1299 echo "" >>$config_h
1300 if test "$mixemu" = "yes" ; then
1301   echo "CONFIG_MIXEMU=yes" >> $config_mak
1302   echo "#define CONFIG_MIXEMU 1" >> $config_h
1303 fi
1304 if test "$vnc_tls" = "yes" ; then
1305   echo "CONFIG_VNC_TLS=yes" >> $config_mak
1306   echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1307   echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1308   echo "#define CONFIG_VNC_TLS 1" >> $config_h
1309 fi
1310 qemu_version=`head $source_path/VERSION`
1311 echo "VERSION=$qemu_version" >>$config_mak
1312 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1313
1314 echo "SRC_PATH=$source_path" >> $config_mak
1315 if [ "$source_path_used" = "yes" ]; then
1316   echo "VPATH=$source_path" >> $config_mak
1317 fi
1318 echo "TARGET_DIRS=$target_list" >> $config_mak
1319 if [ "$build_docs" = "yes" ] ; then
1320   echo "BUILD_DOCS=yes" >> $config_mak
1321 fi
1322 if test "$static" = "yes"; then
1323   sdl1=$sdl_static
1324 else
1325   sdl1=$sdl
1326 fi
1327 if test "$sdl1" = "yes" ; then
1328   echo "#define CONFIG_SDL 1" >> $config_h
1329   echo "CONFIG_SDL=yes" >> $config_mak
1330   if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1331     echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1332   else
1333     echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1334   fi
1335   if [ "${aa}" = "yes" ] ; then
1336     echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1337   else
1338     echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1339   fi
1340 fi
1341 if test "$cocoa" = "yes" ; then
1342   echo "#define CONFIG_COCOA 1" >> $config_h
1343   echo "CONFIG_COCOA=yes" >> $config_mak
1344 fi
1345 if test "$curses" = "yes" ; then
1346   echo "#define CONFIG_CURSES 1" >> $config_h
1347   echo "CONFIG_CURSES=yes" >> $config_mak
1348   echo "CURSES_LIBS=-lcurses" >> $config_mak
1349 fi
1350 if test "$brlapi" = "yes" ; then
1351   echo "CONFIG_BRLAPI=yes" >> $config_mak
1352   echo "#define CONFIG_BRLAPI 1" >> $config_h
1353   echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1354 fi
1355 if test "$bluez" = "yes" ; then
1356   echo "CONFIG_BLUEZ=yes" >> $config_mak
1357   echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1358   echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1359   echo "#define CONFIG_BLUEZ 1" >> $config_h
1360 fi
1361 if test "$aio" = "yes" ; then
1362   echo "#define CONFIG_AIO 1" >> $config_h
1363   echo "CONFIG_AIO=yes" >> $config_mak
1364 fi
1365 if test "$blobs" = "yes" ; then
1366   echo "INSTALL_BLOBS=yes" >> $config_mak
1367 fi
1368
1369 # XXX: suppress that
1370 if [ "$bsd" = "yes" ] ; then
1371   echo "#define O_LARGEFILE 0" >> $config_h
1372   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1373   echo "#define _BSD 1" >> $config_h
1374 fi
1375
1376 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1377
1378 # USB host support
1379 case "$usb" in
1380 linux)
1381   echo "HOST_USB=linux" >> $config_mak
1382 ;;
1383 bsd)
1384   echo "HOST_USB=bsd" >> $config_mak
1385 ;;
1386 *)
1387   echo "HOST_USB=stub" >> $config_mak
1388 ;;
1389 esac
1390
1391 tools=
1392 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1393   tools="qemu-img\$(EXESUF) $tools"
1394   if [ "$linux" = "yes" ] ; then
1395       tools="qemu-nbd\$(EXESUF) $tools"
1396   fi
1397 fi
1398 echo "TOOLS=$tools" >> $config_mak
1399
1400 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1401
1402 for target in $target_list; do
1403 target_dir="$target"
1404 config_mak=$target_dir/config.mak
1405 config_h=$target_dir/config.h
1406 target_cpu=`echo $target | cut -d '-' -f 1`
1407 target_bigendian="no"
1408 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1409 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1410 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1411 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1412 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1413 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1414 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1415 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1416 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1417 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1418 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1419 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1420 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1421 target_softmmu="no"
1422 target_user_only="no"
1423 target_linux_user="no"
1424 target_darwin_user="no"
1425 target_bsd_user="no"
1426 case "$target" in
1427   ${target_cpu}-softmmu)
1428     target_softmmu="yes"
1429     ;;
1430   ${target_cpu}-linux-user)
1431     target_user_only="yes"
1432     target_linux_user="yes"
1433     ;;
1434   ${target_cpu}-darwin-user)
1435     target_user_only="yes"
1436     target_darwin_user="yes"
1437     ;;
1438   ${target_cpu}-bsd-user)
1439     target_user_only="yes"
1440     target_bsd_user="yes"
1441     ;;
1442   *)
1443     echo "ERROR: Target '$target' not recognised"
1444     exit 1
1445     ;;
1446 esac
1447
1448 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1449         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1450     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1451     echo "To build QEMU without graphical output configure with --disable-gfx-check"
1452     echo "Note that this will disable all output from the virtual graphics card"
1453     echo "except through VNC or curses."
1454     exit 1;
1455 fi
1456
1457 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1458
1459 test -f $config_h && mv $config_h ${config_h}~
1460
1461 mkdir -p $target_dir
1462 mkdir -p $target_dir/fpu
1463 mkdir -p $target_dir/tcg
1464 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1465   mkdir -p $target_dir/nwfpe
1466 fi
1467
1468 #
1469 # don't use ln -sf as not all "ln -sf" over write the file/link
1470 #
1471 rm -f $target_dir/Makefile
1472 ln -s $source_path/Makefile.target $target_dir/Makefile
1473
1474
1475 echo "# Automatically generated by configure - do not modify" > $config_mak
1476 echo "/* Automatically generated by configure - do not modify */" > $config_h
1477
1478
1479 echo "include ../config-host.mak" >> $config_mak
1480 echo "#include \"../config-host.h\"" >> $config_h
1481
1482 bflt="no"
1483 elfload32="no"
1484 target_nptl="no"
1485 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1486 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1487 gdb_xml_files=""
1488
1489 # Make sure the target and host cpus are compatible
1490 if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
1491   \( "$target_cpu" = "x86_64" -a "$cpu" = "i386"   \) -o \
1492   \( "$target_cpu" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
1493   kvm="no"
1494 fi
1495 # Disable KVM for linux-user
1496 if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1497   kvm="no"
1498 fi
1499
1500 case "$target_cpu" in
1501   i386)
1502     echo "TARGET_ARCH=i386" >> $config_mak
1503     echo "#define TARGET_ARCH \"i386\"" >> $config_h
1504     echo "#define TARGET_I386 1" >> $config_h
1505     if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1506     then
1507       echo "#define USE_KQEMU 1" >> $config_h
1508     fi
1509     if test "$kvm" = "yes" ; then
1510       echo "CONFIG_KVM=yes" >> $config_mak
1511       echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1512       echo "#define CONFIG_KVM 1" >> $config_h
1513     fi
1514     gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1515     if test -n "$gcc3minver" && test $gcc3minver -gt 3
1516     then
1517       echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1518     else
1519       echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1520     fi
1521   ;;
1522   x86_64)
1523     echo "TARGET_ARCH=x86_64" >> $config_mak
1524     echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1525     echo "#define TARGET_I386 1" >> $config_h
1526     echo "#define TARGET_X86_64 1" >> $config_h
1527     if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1528     then
1529       echo "#define USE_KQEMU 1" >> $config_h
1530     fi
1531     if test "$kvm" = "yes" ; then
1532       echo "CONFIG_KVM=yes" >> $config_mak
1533       echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1534       echo "#define CONFIG_KVM 1" >> $config_h
1535     fi
1536   ;;
1537   alpha)
1538     echo "TARGET_ARCH=alpha" >> $config_mak
1539     echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1540     echo "#define TARGET_ALPHA 1" >> $config_h
1541   ;;
1542   arm|armeb)
1543     echo "TARGET_ARCH=arm" >> $config_mak
1544     echo "#define TARGET_ARCH \"arm\"" >> $config_h
1545     echo "#define TARGET_ARM 1" >> $config_h
1546     bflt="yes"
1547     target_nptl="yes"
1548     gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1549   ;;
1550   cris)
1551     echo "TARGET_ARCH=cris" >> $config_mak
1552     echo "#define TARGET_ARCH \"cris\"" >> $config_h
1553     echo "#define TARGET_CRIS 1" >> $config_h
1554   ;;
1555   m68k)
1556     echo "TARGET_ARCH=m68k" >> $config_mak
1557     echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1558     echo "#define TARGET_M68K 1" >> $config_h
1559     bflt="yes"
1560     gdb_xml_files="cf-core.xml cf-fp.xml"
1561   ;;
1562   mips|mipsel)
1563     echo "TARGET_ARCH=mips" >> $config_mak
1564     echo "#define TARGET_ARCH \"mips\"" >> $config_h
1565     echo "#define TARGET_MIPS 1" >> $config_h
1566     echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1567   ;;
1568   mipsn32|mipsn32el)
1569     echo "TARGET_ARCH=mipsn32" >> $config_mak
1570     echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1571     echo "#define TARGET_MIPS 1" >> $config_h
1572     echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1573   ;;
1574   mips64|mips64el)
1575     echo "TARGET_ARCH=mips64" >> $config_mak
1576     echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1577     echo "#define TARGET_MIPS 1" >> $config_h
1578     echo "#define TARGET_MIPS64 1" >> $config_h
1579     echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1580   ;;
1581   ppc)
1582     echo "TARGET_ARCH=ppc" >> $config_mak
1583     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1584     echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1585     echo "#define TARGET_PPC 1" >> $config_h
1586     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1587   ;;
1588   ppcemb)
1589     echo "TARGET_ARCH=ppcemb" >> $config_mak
1590     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1591     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1592     echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1593     echo "#define TARGET_PPC 1" >> $config_h
1594     echo "#define TARGET_PPCEMB 1" >> $config_h
1595     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1596   ;;
1597   ppc64)
1598     echo "TARGET_ARCH=ppc64" >> $config_mak
1599     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1600     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1601     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1602     echo "#define TARGET_PPC 1" >> $config_h
1603     echo "#define TARGET_PPC64 1" >> $config_h
1604     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1605   ;;
1606   ppc64abi32)
1607     echo "TARGET_ARCH=ppc64" >> $config_mak
1608     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1609     echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1610     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1611     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1612     echo "#define TARGET_PPC 1" >> $config_h
1613     echo "#define TARGET_PPC64 1" >> $config_h
1614     echo "#define TARGET_ABI32 1" >> $config_h
1615     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1616   ;;
1617   sh4|sh4eb)
1618     echo "TARGET_ARCH=sh4" >> $config_mak
1619     echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1620     echo "#define TARGET_SH4 1" >> $config_h
1621     bflt="yes"
1622     target_nptl="yes"
1623   ;;
1624   sparc)
1625     echo "TARGET_ARCH=sparc" >> $config_mak
1626     echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1627     echo "#define TARGET_SPARC 1" >> $config_h
1628   ;;
1629   sparc64)
1630     echo "TARGET_ARCH=sparc64" >> $config_mak
1631     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1632     echo "#define TARGET_SPARC 1" >> $config_h
1633     echo "#define TARGET_SPARC64 1" >> $config_h
1634     elfload32="yes"
1635   ;;
1636   sparc32plus)
1637     echo "TARGET_ARCH=sparc64" >> $config_mak
1638     echo "TARGET_ABI_DIR=sparc" >> $config_mak
1639     echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1640     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1641     echo "#define TARGET_SPARC 1" >> $config_h
1642     echo "#define TARGET_SPARC64 1" >> $config_h
1643     echo "#define TARGET_ABI32 1" >> $config_h
1644   ;;
1645   *)
1646     echo "Unsupported target CPU"
1647     exit 1
1648   ;;
1649 esac
1650 if test "$target_bigendian" = "yes" ; then
1651   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1652   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1653 fi
1654 if test "$target_softmmu" = "yes" ; then
1655   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1656   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1657 fi
1658 if test "$target_user_only" = "yes" ; then
1659   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1660   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1661 fi
1662 if test "$target_linux_user" = "yes" ; then
1663   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1664   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1665 fi
1666 if test "$target_darwin_user" = "yes" ; then
1667   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1668   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1669 fi
1670 list=""
1671 if test ! -z "$gdb_xml_files" ; then
1672   for x in $gdb_xml_files; do
1673     list="$list $source_path/gdb-xml/$x"
1674   done
1675 fi
1676 echo "TARGET_XML_FILES=$list" >> $config_mak
1677
1678 if test "$target_cpu" = "arm" \
1679      -o "$target_cpu" = "armeb" \
1680      -o "$target_cpu" = "m68k" \
1681      -o "$target_cpu" = "mips" \
1682      -o "$target_cpu" = "mipsel" \
1683      -o "$target_cpu" = "mipsn32" \
1684      -o "$target_cpu" = "mipsn32el" \
1685      -o "$target_cpu" = "mips64" \
1686      -o "$target_cpu" = "mips64el" \
1687      -o "$target_cpu" = "sparc" \
1688      -o "$target_cpu" = "sparc64" \
1689      -o "$target_cpu" = "sparc32plus"; then
1690   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1691   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1692 fi
1693 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1694   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1695   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1696 fi
1697 if test "$target_user_only" = "yes" \
1698         -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1699   echo "#define USE_NPTL 1" >> $config_h
1700 fi
1701 # 32 bit ELF loader in addition to native 64 bit loader?
1702 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1703   echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1704   echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1705 fi
1706 if test "$target_bsd_user" = "yes" ; then
1707   echo "CONFIG_BSD_USER=yes" >> $config_mak
1708   echo "#define CONFIG_BSD_USER 1" >> $config_h
1709 fi
1710
1711 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1712
1713 done # for target in $targets
1714
1715 # build tree in object directory if source path is different from current one
1716 if test "$source_path_used" = "yes" ; then
1717     DIRS="tests tests/cris slirp audio"
1718     FILES="Makefile tests/Makefile"
1719     FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1720     FILES="$FILES tests/test-mmap.c"
1721     for dir in $DIRS ; do
1722             mkdir -p $dir
1723     done
1724     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1725     for f in $FILES ; do
1726         rm -f $f
1727         ln -s $source_path/$f $f
1728     done
1729 fi
1730
1731 rm -f $TMPO $TMPC $TMPE $TMPS $TMPI