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