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