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