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