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