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