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