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