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