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