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