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