Attached patch makes NetBSD use the native bswap functions
[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   cat > $TMPC << EOF
1233 #include <sys/endian.h>
1234 #include <sys/types.h>
1235 #include <machine/bswap.h>
1236 int main(void) { return bswap32(0); }
1237 EOF
1238   if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1239     echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_h
1240   fi
1241 fi
1242
1243 if [ "$openbsd" = "yes" ] ; then
1244   echo "#define ENOTSUP 4096" >> $config_h
1245 fi
1246
1247 if test "$darwin" = "yes" ; then
1248   echo "CONFIG_DARWIN=yes" >> $config_mak
1249   echo "#define CONFIG_DARWIN 1" >> $config_h
1250 fi
1251
1252 if test "$aix" = "yes" ; then
1253   echo "CONFIG_AIX=yes" >> $config_mak
1254   echo "#define CONFIG_AIX 1" >> $config_h
1255 fi
1256
1257 if test "$solaris" = "yes" ; then
1258   echo "CONFIG_SOLARIS=yes" >> $config_mak
1259   echo "#define HOST_SOLARIS $solarisrev" >> $config_h
1260   if test "$needs_libsunmath" = "yes" ; then
1261     echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1262     echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1263   fi
1264 fi
1265 if test -n "$sparc_cpu"; then
1266   echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1267   echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1268 fi
1269 if test "$gdbstub" = "yes" ; then
1270   echo "CONFIG_GDBSTUB=yes" >> $config_mak
1271   echo "#define CONFIG_GDBSTUB 1" >> $config_h
1272 fi
1273 if test "$gprof" = "yes" ; then
1274   echo "TARGET_GPROF=yes" >> $config_mak
1275   echo "#define HAVE_GPROF 1" >> $config_h
1276 fi
1277 if test "$static" = "yes" ; then
1278   echo "CONFIG_STATIC=yes" >> $config_mak
1279   echo "#define CONFIG_STATIC 1" >> $config_h
1280 fi
1281 if test $profiler = "yes" ; then
1282   echo "#define CONFIG_PROFILER 1" >> $config_h
1283 fi
1284 if test "$slirp" = "yes" ; then
1285   echo "CONFIG_SLIRP=yes" >> $config_mak
1286   echo "#define CONFIG_SLIRP 1" >> $config_h
1287 fi
1288 if test "$vde" = "yes" ; then
1289   echo "CONFIG_VDE=yes" >> $config_mak
1290   echo "#define CONFIG_VDE 1" >> $config_h
1291   echo "VDE_LIBS=-lvdeplug" >> $config_mak
1292 fi
1293 for card in $audio_card_list; do
1294     def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1295     echo "$def=yes" >> $config_mak
1296     echo "#define $def 1" >> $config_h
1297 done
1298 echo "#define AUDIO_DRIVERS \\" >> $config_h
1299 for drv in $audio_drv_list; do
1300     echo "    &${drv}_audio_driver, \\" >>$config_h
1301     def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1302     echo "$def=yes" >> $config_mak
1303     if test "$drv" = "fmod"; then
1304         echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1305         echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1306     elif test "$drv" = "oss"; then
1307         echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
1308     fi
1309 done
1310 echo "" >>$config_h
1311 if test "$mixemu" = "yes" ; then
1312   echo "CONFIG_MIXEMU=yes" >> $config_mak
1313   echo "#define CONFIG_MIXEMU 1" >> $config_h
1314 fi
1315 if test "$vnc_tls" = "yes" ; then
1316   echo "CONFIG_VNC_TLS=yes" >> $config_mak
1317   echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1318   echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1319   echo "#define CONFIG_VNC_TLS 1" >> $config_h
1320 fi
1321 qemu_version=`head $source_path/VERSION`
1322 echo "VERSION=$qemu_version" >>$config_mak
1323 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
1324
1325 echo "SRC_PATH=$source_path" >> $config_mak
1326 if [ "$source_path_used" = "yes" ]; then
1327   echo "VPATH=$source_path" >> $config_mak
1328 fi
1329 echo "TARGET_DIRS=$target_list" >> $config_mak
1330 if [ "$build_docs" = "yes" ] ; then
1331   echo "BUILD_DOCS=yes" >> $config_mak
1332 fi
1333 if test "$static" = "yes"; then
1334   sdl1=$sdl_static
1335 else
1336   sdl1=$sdl
1337 fi
1338 if test "$sdl1" = "yes" ; then
1339   echo "#define CONFIG_SDL 1" >> $config_h
1340   echo "CONFIG_SDL=yes" >> $config_mak
1341   if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1342     echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1343   else
1344     echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1345   fi
1346   if [ "${aa}" = "yes" ] ; then
1347     echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1348   else
1349     echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1350   fi
1351 fi
1352 if test "$cocoa" = "yes" ; then
1353   echo "#define CONFIG_COCOA 1" >> $config_h
1354   echo "CONFIG_COCOA=yes" >> $config_mak
1355 fi
1356 if test "$curses" = "yes" ; then
1357   echo "#define CONFIG_CURSES 1" >> $config_h
1358   echo "CONFIG_CURSES=yes" >> $config_mak
1359   echo "CURSES_LIBS=-lcurses" >> $config_mak
1360 fi
1361 if test "$brlapi" = "yes" ; then
1362   echo "CONFIG_BRLAPI=yes" >> $config_mak
1363   echo "#define CONFIG_BRLAPI 1" >> $config_h
1364   echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1365 fi
1366 if test "$bluez" = "yes" ; then
1367   echo "CONFIG_BLUEZ=yes" >> $config_mak
1368   echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1369   echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1370   echo "#define CONFIG_BLUEZ 1" >> $config_h
1371 fi
1372 if test "$aio" = "yes" ; then
1373   echo "#define CONFIG_AIO 1" >> $config_h
1374   echo "CONFIG_AIO=yes" >> $config_mak
1375 fi
1376 if test "$blobs" = "yes" ; then
1377   echo "INSTALL_BLOBS=yes" >> $config_mak
1378 fi
1379
1380 # XXX: suppress that
1381 if [ "$bsd" = "yes" ] ; then
1382   echo "#define O_LARGEFILE 0" >> $config_h
1383   echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
1384   echo "#define _BSD 1" >> $config_h
1385 fi
1386
1387 echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1388
1389 # USB host support
1390 case "$usb" in
1391 linux)
1392   echo "HOST_USB=linux" >> $config_mak
1393 ;;
1394 bsd)
1395   echo "HOST_USB=bsd" >> $config_mak
1396 ;;
1397 *)
1398   echo "HOST_USB=stub" >> $config_mak
1399 ;;
1400 esac
1401
1402 tools=
1403 if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1404   tools="qemu-img\$(EXESUF) $tools"
1405   if [ "$linux" = "yes" ] ; then
1406       tools="qemu-nbd\$(EXESUF) $tools"
1407   fi
1408 fi
1409 echo "TOOLS=$tools" >> $config_mak
1410
1411 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1412
1413 for target in $target_list; do
1414 target_dir="$target"
1415 config_mak=$target_dir/config.mak
1416 config_h=$target_dir/config.h
1417 target_cpu=`echo $target | cut -d '-' -f 1`
1418 target_bigendian="no"
1419 [ "$target_cpu" = "armeb" ] && target_bigendian=yes
1420 [ "$target_cpu" = "m68k" ] && target_bigendian=yes
1421 [ "$target_cpu" = "mips" ] && target_bigendian=yes
1422 [ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1423 [ "$target_cpu" = "mips64" ] && target_bigendian=yes
1424 [ "$target_cpu" = "ppc" ] && target_bigendian=yes
1425 [ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
1426 [ "$target_cpu" = "ppc64" ] && target_bigendian=yes
1427 [ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
1428 [ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
1429 [ "$target_cpu" = "sparc" ] && target_bigendian=yes
1430 [ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1431 [ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
1432 target_softmmu="no"
1433 target_user_only="no"
1434 target_linux_user="no"
1435 target_darwin_user="no"
1436 target_bsd_user="no"
1437 case "$target" in
1438   ${target_cpu}-softmmu)
1439     target_softmmu="yes"
1440     ;;
1441   ${target_cpu}-linux-user)
1442     target_user_only="yes"
1443     target_linux_user="yes"
1444     ;;
1445   ${target_cpu}-darwin-user)
1446     target_user_only="yes"
1447     target_darwin_user="yes"
1448     ;;
1449   ${target_cpu}-bsd-user)
1450     target_user_only="yes"
1451     target_bsd_user="yes"
1452     ;;
1453   *)
1454     echo "ERROR: Target '$target' not recognised"
1455     exit 1
1456     ;;
1457 esac
1458
1459 if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1460         -a "$sdl" = "no" -a "$cocoa" = "no" ; then
1461     echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
1462     echo "To build QEMU without graphical output configure with --disable-gfx-check"
1463     echo "Note that this will disable all output from the virtual graphics card"
1464     echo "except through VNC or curses."
1465     exit 1;
1466 fi
1467
1468 #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1469
1470 test -f $config_h && mv $config_h ${config_h}~
1471
1472 mkdir -p $target_dir
1473 mkdir -p $target_dir/fpu
1474 mkdir -p $target_dir/tcg
1475 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1476   mkdir -p $target_dir/nwfpe
1477 fi
1478
1479 #
1480 # don't use ln -sf as not all "ln -sf" over write the file/link
1481 #
1482 rm -f $target_dir/Makefile
1483 ln -s $source_path/Makefile.target $target_dir/Makefile
1484
1485
1486 echo "# Automatically generated by configure - do not modify" > $config_mak
1487 echo "/* Automatically generated by configure - do not modify */" > $config_h
1488
1489
1490 echo "include ../config-host.mak" >> $config_mak
1491 echo "#include \"../config-host.h\"" >> $config_h
1492
1493 bflt="no"
1494 elfload32="no"
1495 target_nptl="no"
1496 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1497 echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
1498 gdb_xml_files=""
1499
1500 # Make sure the target and host cpus are compatible
1501 if test "$kvm" = "yes" -a ! \( "$target_cpu" = "$cpu" -o \
1502   \( "$target_cpu" = "x86_64" -a "$cpu" = "i386"   \) -o \
1503   \( "$target_cpu" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
1504   kvm="no"
1505 fi
1506 # Disable KVM for linux-user
1507 if test "$kvm" = "yes" -a "$target_softmmu" = "no" ; then
1508   kvm="no"
1509 fi
1510
1511 case "$target_cpu" in
1512   i386)
1513     echo "TARGET_ARCH=i386" >> $config_mak
1514     echo "#define TARGET_ARCH \"i386\"" >> $config_h
1515     echo "#define TARGET_I386 1" >> $config_h
1516     if test $kqemu = "yes" -a "$target_softmmu" = "yes"
1517     then
1518       echo "#define USE_KQEMU 1" >> $config_h
1519     fi
1520     if test "$kvm" = "yes" ; then
1521       echo "CONFIG_KVM=yes" >> $config_mak
1522       echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1523       echo "#define CONFIG_KVM 1" >> $config_h
1524     fi
1525     gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
1526     if test -n "$gcc3minver" && test $gcc3minver -gt 3
1527     then
1528       echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1529     else
1530       echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1531     fi
1532   ;;
1533   x86_64)
1534     echo "TARGET_ARCH=x86_64" >> $config_mak
1535     echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1536     echo "#define TARGET_I386 1" >> $config_h
1537     echo "#define TARGET_X86_64 1" >> $config_h
1538     if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1539     then
1540       echo "#define USE_KQEMU 1" >> $config_h
1541     fi
1542     if test "$kvm" = "yes" ; then
1543       echo "CONFIG_KVM=yes" >> $config_mak
1544       echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
1545       echo "#define CONFIG_KVM 1" >> $config_h
1546     fi
1547   ;;
1548   alpha)
1549     echo "TARGET_ARCH=alpha" >> $config_mak
1550     echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1551     echo "#define TARGET_ALPHA 1" >> $config_h
1552   ;;
1553   arm|armeb)
1554     echo "TARGET_ARCH=arm" >> $config_mak
1555     echo "#define TARGET_ARCH \"arm\"" >> $config_h
1556     echo "#define TARGET_ARM 1" >> $config_h
1557     bflt="yes"
1558     target_nptl="yes"
1559     gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1560   ;;
1561   cris)
1562     echo "TARGET_ARCH=cris" >> $config_mak
1563     echo "#define TARGET_ARCH \"cris\"" >> $config_h
1564     echo "#define TARGET_CRIS 1" >> $config_h
1565   ;;
1566   m68k)
1567     echo "TARGET_ARCH=m68k" >> $config_mak
1568     echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1569     echo "#define TARGET_M68K 1" >> $config_h
1570     bflt="yes"
1571     gdb_xml_files="cf-core.xml cf-fp.xml"
1572   ;;
1573   mips|mipsel)
1574     echo "TARGET_ARCH=mips" >> $config_mak
1575     echo "#define TARGET_ARCH \"mips\"" >> $config_h
1576     echo "#define TARGET_MIPS 1" >> $config_h
1577     echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1578   ;;
1579   mipsn32|mipsn32el)
1580     echo "TARGET_ARCH=mipsn32" >> $config_mak
1581     echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1582     echo "#define TARGET_MIPS 1" >> $config_h
1583     echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1584   ;;
1585   mips64|mips64el)
1586     echo "TARGET_ARCH=mips64" >> $config_mak
1587     echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1588     echo "#define TARGET_MIPS 1" >> $config_h
1589     echo "#define TARGET_MIPS64 1" >> $config_h
1590     echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1591   ;;
1592   ppc)
1593     echo "TARGET_ARCH=ppc" >> $config_mak
1594     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1595     echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1596     echo "#define TARGET_PPC 1" >> $config_h
1597     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1598   ;;
1599   ppcemb)
1600     echo "TARGET_ARCH=ppcemb" >> $config_mak
1601     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1602     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1603     echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1604     echo "#define TARGET_PPC 1" >> $config_h
1605     echo "#define TARGET_PPCEMB 1" >> $config_h
1606     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1607   ;;
1608   ppc64)
1609     echo "TARGET_ARCH=ppc64" >> $config_mak
1610     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1611     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1612     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1613     echo "#define TARGET_PPC 1" >> $config_h
1614     echo "#define TARGET_PPC64 1" >> $config_h
1615     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1616   ;;
1617   ppc64abi32)
1618     echo "TARGET_ARCH=ppc64" >> $config_mak
1619     echo "TARGET_ABI_DIR=ppc" >> $config_mak
1620     echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
1621     echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
1622     echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1623     echo "#define TARGET_PPC 1" >> $config_h
1624     echo "#define TARGET_PPC64 1" >> $config_h
1625     echo "#define TARGET_ABI32 1" >> $config_h
1626     echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
1627   ;;
1628   sh4|sh4eb)
1629     echo "TARGET_ARCH=sh4" >> $config_mak
1630     echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1631     echo "#define TARGET_SH4 1" >> $config_h
1632     bflt="yes"
1633     target_nptl="yes"
1634   ;;
1635   sparc)
1636     echo "TARGET_ARCH=sparc" >> $config_mak
1637     echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1638     echo "#define TARGET_SPARC 1" >> $config_h
1639   ;;
1640   sparc64)
1641     echo "TARGET_ARCH=sparc64" >> $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     elfload32="yes"
1646   ;;
1647   sparc32plus)
1648     echo "TARGET_ARCH=sparc64" >> $config_mak
1649     echo "TARGET_ABI_DIR=sparc" >> $config_mak
1650     echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1651     echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1652     echo "#define TARGET_SPARC 1" >> $config_h
1653     echo "#define TARGET_SPARC64 1" >> $config_h
1654     echo "#define TARGET_ABI32 1" >> $config_h
1655   ;;
1656   *)
1657     echo "Unsupported target CPU"
1658     exit 1
1659   ;;
1660 esac
1661 if test "$target_bigendian" = "yes" ; then
1662   echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1663   echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1664 fi
1665 if test "$target_softmmu" = "yes" ; then
1666   echo "CONFIG_SOFTMMU=yes" >> $config_mak
1667   echo "#define CONFIG_SOFTMMU 1" >> $config_h
1668 fi
1669 if test "$target_user_only" = "yes" ; then
1670   echo "CONFIG_USER_ONLY=yes" >> $config_mak
1671   echo "#define CONFIG_USER_ONLY 1" >> $config_h
1672 fi
1673 if test "$target_linux_user" = "yes" ; then
1674   echo "CONFIG_LINUX_USER=yes" >> $config_mak
1675   echo "#define CONFIG_LINUX_USER 1" >> $config_h
1676 fi
1677 if test "$target_darwin_user" = "yes" ; then
1678   echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1679   echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1680 fi
1681 list=""
1682 if test ! -z "$gdb_xml_files" ; then
1683   for x in $gdb_xml_files; do
1684     list="$list $source_path/gdb-xml/$x"
1685   done
1686 fi
1687 echo "TARGET_XML_FILES=$list" >> $config_mak
1688
1689 if test "$target_cpu" = "arm" \
1690      -o "$target_cpu" = "armeb" \
1691      -o "$target_cpu" = "m68k" \
1692      -o "$target_cpu" = "mips" \
1693      -o "$target_cpu" = "mipsel" \
1694      -o "$target_cpu" = "mipsn32" \
1695      -o "$target_cpu" = "mipsn32el" \
1696      -o "$target_cpu" = "mips64" \
1697      -o "$target_cpu" = "mips64el" \
1698      -o "$target_cpu" = "sparc" \
1699      -o "$target_cpu" = "sparc64" \
1700      -o "$target_cpu" = "sparc32plus"; then
1701   echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1702   echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1703 fi
1704 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1705   echo "TARGET_HAS_BFLT=yes" >> $config_mak
1706   echo "#define TARGET_HAS_BFLT 1" >> $config_h
1707 fi
1708 if test "$target_user_only" = "yes" \
1709         -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1710   echo "#define USE_NPTL 1" >> $config_h
1711 fi
1712 # 32 bit ELF loader in addition to native 64 bit loader?
1713 if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1714   echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1715   echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1716 fi
1717 if test "$target_bsd_user" = "yes" ; then
1718   echo "CONFIG_BSD_USER=yes" >> $config_mak
1719   echo "#define CONFIG_BSD_USER 1" >> $config_h
1720 fi
1721
1722 test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1723
1724 done # for target in $targets
1725
1726 # build tree in object directory if source path is different from current one
1727 if test "$source_path_used" = "yes" ; then
1728     DIRS="tests tests/cris slirp audio"
1729     FILES="Makefile tests/Makefile"
1730     FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1731     FILES="$FILES tests/test-mmap.c"
1732     for dir in $DIRS ; do
1733             mkdir -p $dir
1734     done
1735     # remove the link and recreate it, as not all "ln -sf" overwrite the link
1736     for f in $FILES ; do
1737         rm -f $f
1738         ln -s $source_path/$f $f
1739     done
1740 fi