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