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