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