|
|
1.1 root 1: #!/bin/sh
2: #
3: # qemu configure script (c) 2003 Fabrice Bellard
4: #
5: # set temporary file name
6: if test ! -z "$TMPDIR" ; then
7: TMPDIR1="${TMPDIR}"
8: elif test ! -z "$TEMPDIR" ; then
9: TMPDIR1="${TEMPDIR}"
10: else
11: TMPDIR1="/tmp"
12: fi
13:
14: TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15: TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16: TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17: TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
1.1.1.7 root 18: TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
19: TMPSDLLOG="${TMPDIR1}/qemu-conf-sdl-$$-${RANDOM}.log"
20:
21: trap "rm -f $TMPC $TMPO $TMPE $TMPS $TMPI $TMPSDLLOG; exit" 0 2 3 15
1.1 root 22:
23: # default parameters
24: prefix=""
25: interp_prefix="/usr/gnemul/qemu-%M"
26: static="no"
27: cross_prefix=""
28: cc="gcc"
1.1.1.7 root 29: audio_drv_list=""
30: audio_card_list="ac97 es1370 sb16"
31: audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
1.1 root 32: host_cc="gcc"
33: ar="ar"
34: make="make"
1.1.1.3 root 35: install="install"
1.1 root 36: strip="strip"
1.1.1.9 root 37: objcopy="objcopy"
38: ld="ld"
1.1.1.7 root 39:
40: # parse CC options first
41: for opt do
42: optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
43: case "$opt" in
44: --cross-prefix=*) cross_prefix="$optarg"
45: ;;
46: --cc=*) cc="$optarg"
47: ;;
48: esac
49: done
50:
51: # OS specific
52: # Using uname is really, really broken. Once we have the right set of checks
53: # we can eliminate it's usage altogether
54:
55: cc="${cross_prefix}${cc}"
56: ar="${cross_prefix}${ar}"
57: strip="${cross_prefix}${strip}"
1.1.1.9 root 58: objcopy="${cross_prefix}${objcopy}"
59: ld="${cross_prefix}${ld}"
1.1.1.7 root 60:
61: # check that the C compiler works.
62: cat > $TMPC <<EOF
63: int main(void) {}
64: EOF
65:
66: if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
67: : C compiler works ok
68: else
69: echo "ERROR: \"$cc\" either does not exist or does not work"
70: exit 1
71: fi
72:
73: check_define() {
74: cat > $TMPC <<EOF
75: #if !defined($1)
76: #error Not defined
77: #endif
78: int main(void) { return 0; }
79: EOF
80: $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
81: }
82:
83: if check_define __i386__ ; then
84: cpu="i386"
85: elif check_define __x86_64__ ; then
86: cpu="x86_64"
87: elif check_define __sparc__ ; then
88: # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
89: # They must be specified using --sparc_cpu
90: if check_define __arch64__ ; then
91: cpu="sparc64"
92: else
93: cpu="sparc"
94: fi
95: elif check_define _ARCH_PPC ; then
96: if check_define _ARCH_PPC64 ; then
97: cpu="ppc64"
98: else
99: cpu="ppc"
100: fi
101: else
102: cpu=`uname -m`
103: fi
104:
1.1 root 105: target_list=""
106: case "$cpu" in
107: i386|i486|i586|i686|i86pc|BePC)
108: cpu="i386"
109: ;;
1.1.1.7 root 110: x86_64|amd64)
111: cpu="x86_64"
112: ;;
113: alpha)
114: cpu="alpha"
115: ;;
1.1 root 116: armv*b)
117: cpu="armv4b"
118: ;;
119: armv*l)
120: cpu="armv4l"
121: ;;
1.1.1.7 root 122: cris)
123: cpu="cris"
124: ;;
125: parisc|parisc64)
126: cpu="hppa"
1.1 root 127: ;;
1.1.1.7 root 128: ia64)
129: cpu="ia64"
130: ;;
131: m68k)
132: cpu="m68k"
1.1 root 133: ;;
1.1.1.9 root 134: microblaze)
135: cpu="microblaze"
136: ;;
1.1 root 137: mips)
138: cpu="mips"
139: ;;
1.1.1.6 root 140: mips64)
141: cpu="mips64"
142: ;;
1.1.1.7 root 143: ppc)
144: cpu="ppc"
145: ;;
146: ppc64)
147: cpu="ppc64"
1.1.1.6 root 148: ;;
149: s390*)
1.1 root 150: cpu="s390"
151: ;;
1.1.1.6 root 152: sparc|sun4[cdmuv])
1.1 root 153: cpu="sparc"
154: ;;
155: sparc64)
156: cpu="sparc64"
157: ;;
158: *)
159: cpu="unknown"
160: ;;
161: esac
162: gprof="no"
1.1.1.9 root 163: debug_tcg="no"
164: debug="no"
1.1.1.7 root 165: sparse="no"
1.1.1.9 root 166: strip_opt="yes"
1.1 root 167: bigendian="no"
168: mingw32="no"
169: EXESUF=""
170: slirp="yes"
1.1.1.7 root 171: vde="yes"
1.1 root 172: fmod_lib=""
173: fmod_inc=""
1.1.1.7 root 174: oss_lib=""
1.1.1.6 root 175: vnc_tls="yes"
1.1.1.9 root 176: vnc_sasl="yes"
1.1.1.3 root 177: bsd="no"
1.1 root 178: linux="no"
1.1.1.7 root 179: solaris="no"
1.1 root 180: kqemu="no"
1.1.1.3 root 181: profiler="no"
1.1 root 182: cocoa="no"
1.1.1.3 root 183: softmmu="yes"
1.1.1.5 root 184: linux_user="no"
185: darwin_user="no"
1.1.1.7 root 186: bsd_user="no"
1.1.1.9 root 187: build_docs="yes"
1.1.1.4 root 188: uname_release=""
1.1.1.7 root 189: curses="yes"
1.1.1.9 root 190: curl="yes"
191: pthread="yes"
1.1.1.7 root 192: aio="yes"
1.1.1.9 root 193: io_thread="no"
1.1.1.7 root 194: nptl="yes"
195: mixemu="no"
196: bluez="yes"
1.1.1.9 root 197: kvm="no"
1.1.1.7 root 198: kerneldir=""
199: aix="no"
200: blobs="yes"
201: fdt="yes"
1.1.1.9 root 202: sdl="yes"
1.1.1.7 root 203: sdl_x11="no"
1.1.1.9 root 204: xen="yes"
205: pkgversion=""
1.1 root 206:
207: # OS specific
1.1.1.7 root 208: if check_define __linux__ ; then
209: targetos="Linux"
210: elif check_define _WIN32 ; then
211: targetos='MINGW32'
1.1.1.9 root 212: elif check_define __OpenBSD__ ; then
213: targetos='OpenBSD'
214: elif check_define __sun__ ; then
215: targetos='SunOS'
1.1.1.7 root 216: else
217: targetos=`uname -s`
218: fi
1.1 root 219: case $targetos in
220: CYGWIN*)
221: mingw32="yes"
1.1.1.5 root 222: OS_CFLAGS="-mno-cygwin"
1.1.1.6 root 223: if [ "$cpu" = "i386" ] ; then
224: kqemu="yes"
225: fi
1.1.1.7 root 226: audio_possible_drivers="sdl"
1.1 root 227: ;;
228: MINGW32*)
229: mingw32="yes"
1.1.1.6 root 230: if [ "$cpu" = "i386" ] ; then
231: kqemu="yes"
232: fi
1.1.1.7 root 233: audio_possible_drivers="dsound sdl fmod"
1.1.1.6 root 234: ;;
235: GNU/kFreeBSD)
1.1.1.7 root 236: audio_drv_list="oss"
237: audio_possible_drivers="oss sdl esd pa"
1.1.1.6 root 238: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
239: kqemu="yes"
240: fi
1.1 root 241: ;;
242: FreeBSD)
243: bsd="yes"
1.1.1.7 root 244: audio_drv_list="oss"
245: audio_possible_drivers="oss sdl esd pa"
1.1 root 246: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
247: kqemu="yes"
248: fi
249: ;;
1.1.1.9 root 250: DragonFly)
251: bsd="yes"
252: audio_drv_list="oss"
253: audio_possible_drivers="oss sdl esd pa"
254: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
255: kqemu="yes"
256: fi
257: aio="no"
258: ;;
1.1 root 259: NetBSD)
260: bsd="yes"
1.1.1.7 root 261: audio_drv_list="oss"
262: audio_possible_drivers="oss sdl esd"
263: oss_lib="-lossaudio"
1.1 root 264: ;;
265: OpenBSD)
266: bsd="yes"
1.1.1.7 root 267: openbsd="yes"
268: audio_drv_list="oss"
269: audio_possible_drivers="oss sdl esd"
270: oss_lib="-lossaudio"
1.1 root 271: ;;
272: Darwin)
273: bsd="yes"
274: darwin="yes"
1.1.1.7 root 275: # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can run 64-bit userspace code
276: if [ "$cpu" = "i386" ] ; then
277: is_x86_64=`sysctl -n hw.optional.x86_64`
278: [ "$is_x86_64" = "1" ] && cpu=x86_64
279: fi
280: if [ "$cpu" = "x86_64" ] ; then
281: OS_CFLAGS="-arch x86_64"
282: LDFLAGS="-arch x86_64"
283: else
284: OS_CFLAGS="-mdynamic-no-pic"
285: fi
1.1.1.5 root 286: darwin_user="yes"
287: cocoa="yes"
1.1.1.7 root 288: audio_drv_list="coreaudio"
289: audio_possible_drivers="coreaudio sdl fmod"
290: OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
1.1 root 291: ;;
1.1.1.3 root 292: SunOS)
1.1.1.6 root 293: solaris="yes"
294: make="gmake"
295: install="ginstall"
296: needs_libsunmath="no"
297: solarisrev=`uname -r | cut -f2 -d.`
298: # have to select again, because `uname -m` returns i86pc
299: # even on an x86_64 box.
300: solariscpu=`isainfo -k`
301: if test "${solariscpu}" = "amd64" ; then
302: cpu="x86_64"
303: fi
304: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
305: if test "$solarisrev" -le 9 ; then
306: if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
307: needs_libsunmath="yes"
308: else
309: echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
310: echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
311: echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
312: echo "Studio 11 can be downloaded from www.sun.com."
313: exit 1
314: fi
315: fi
316: if test "$solarisrev" -ge 9 ; then
317: kqemu="yes"
318: fi
319: fi
320: if test -f /usr/include/sys/soundcard.h ; then
1.1.1.7 root 321: audio_drv_list="oss"
1.1.1.6 root 322: fi
1.1.1.7 root 323: audio_possible_drivers="oss sdl"
1.1.1.9 root 324: OS_CFLAGS=-std=gnu99
1.1.1.7 root 325: ;;
326: AIX)
327: aix="yes"
328: make="gmake"
1.1.1.3 root 329: ;;
1.1.1.2 root 330: *)
1.1.1.7 root 331: audio_drv_list="oss"
332: audio_possible_drivers="oss alsa sdl esd pa"
1.1 root 333: linux="yes"
1.1.1.5 root 334: linux_user="yes"
1.1.1.7 root 335: usb="linux"
1.1.1.9 root 336: kvm="yes"
1.1 root 337: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
338: kqemu="yes"
1.1.1.7 root 339: audio_possible_drivers="$audio_possible_drivers fmod"
1.1 root 340: fi
341: ;;
342: esac
343:
344: if [ "$bsd" = "yes" ] ; then
1.1.1.3 root 345: if [ "$darwin" != "yes" ] ; then
1.1 root 346: make="gmake"
1.1.1.7 root 347: usb="bsd"
1.1 root 348: fi
1.1.1.7 root 349: bsd_user="yes"
1.1 root 350: fi
351:
352: # find source path
1.1.1.3 root 353: source_path=`dirname "$0"`
1.1.1.7 root 354: source_path_used="no"
355: workdir=`pwd`
1.1.1.3 root 356: if [ -z "$source_path" ]; then
1.1.1.7 root 357: source_path=$workdir
1.1.1.3 root 358: else
359: source_path=`cd "$source_path"; pwd`
360: fi
1.1.1.7 root 361: [ -f "$workdir/vl.c" ] || source_path_used="yes"
1.1 root 362:
1.1.1.9 root 363: werror=""
1.1.1.6 root 364:
1.1 root 365: for opt do
1.1.1.3 root 366: optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
1.1 root 367: case "$opt" in
1.1.1.2 root 368: --help|-h) show_help=yes
369: ;;
1.1.1.3 root 370: --prefix=*) prefix="$optarg"
1.1 root 371: ;;
1.1.1.3 root 372: --interp-prefix=*) interp_prefix="$optarg"
1.1 root 373: ;;
1.1.1.3 root 374: --source-path=*) source_path="$optarg"
375: source_path_used="yes"
1.1 root 376: ;;
1.1.1.7 root 377: --cross-prefix=*)
1.1 root 378: ;;
1.1.1.7 root 379: --cc=*)
1.1 root 380: ;;
1.1.1.3 root 381: --host-cc=*) host_cc="$optarg"
1.1 root 382: ;;
1.1.1.3 root 383: --make=*) make="$optarg"
1.1 root 384: ;;
1.1.1.3 root 385: --install=*) install="$optarg"
1.1 root 386: ;;
1.1.1.9 root 387: --extra-cflags=*) EXTRA_CFLAGS="$optarg"
1.1 root 388: ;;
1.1.1.9 root 389: --extra-ldflags=*) EXTRA_LDFLAGS="$optarg"
1.1 root 390: ;;
1.1.1.3 root 391: --cpu=*) cpu="$optarg"
392: ;;
393: --target-list=*) target_list="$optarg"
1.1 root 394: ;;
395: --enable-gprof) gprof="yes"
396: ;;
397: --static) static="yes"
398: ;;
399: --disable-sdl) sdl="no"
400: ;;
1.1.1.7 root 401: --fmod-lib=*) fmod_lib="$optarg"
1.1.1.2 root 402: ;;
1.1.1.7 root 403: --fmod-inc=*) fmod_inc="$optarg"
1.1.1.2 root 404: ;;
1.1.1.7 root 405: --oss-lib=*) oss_lib="$optarg"
1.1.1.2 root 406: ;;
1.1.1.7 root 407: --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
1.1 root 408: ;;
1.1.1.7 root 409: --audio-drv-list=*) audio_drv_list="$optarg"
1.1 root 410: ;;
1.1.1.9 root 411: --enable-debug-tcg) debug_tcg="yes"
412: ;;
413: --disable-debug-tcg) debug_tcg="no"
414: ;;
415: --enable-debug)
416: # Enable debugging options that aren't excessively noisy
417: debug_tcg="yes"
418: debug="yes"
419: strip_opt="no"
420: ;;
1.1.1.7 root 421: --enable-sparse) sparse="yes"
1.1 root 422: ;;
1.1.1.7 root 423: --disable-sparse) sparse="no"
1.1.1.6 root 424: ;;
1.1.1.9 root 425: --disable-strip) strip_opt="no"
426: ;;
1.1.1.7 root 427: --disable-vnc-tls) vnc_tls="no"
1.1.1.2 root 428: ;;
1.1.1.9 root 429: --disable-vnc-sasl) vnc_sasl="no"
430: ;;
1.1 root 431: --disable-slirp) slirp="no"
1.1.1.2 root 432: ;;
1.1.1.7 root 433: --disable-vde) vde="no"
1.1.1.2 root 434: ;;
1.1 root 435: --disable-kqemu) kqemu="no"
1.1.1.2 root 436: ;;
1.1.1.9 root 437: --disable-xen) xen="no"
438: ;;
1.1.1.7 root 439: --disable-brlapi) brlapi="no"
440: ;;
441: --disable-bluez) bluez="no"
442: ;;
443: --disable-kvm) kvm="no"
444: ;;
1.1.1.3 root 445: --enable-profiler) profiler="yes"
446: ;;
1.1.1.7 root 447: --enable-cocoa)
448: cocoa="yes" ;
449: sdl="no" ;
450: audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
1.1.1.2 root 451: ;;
1.1.1.3 root 452: --disable-system) softmmu="no"
453: ;;
454: --enable-system) softmmu="yes"
455: ;;
1.1.1.5 root 456: --disable-linux-user) linux_user="no"
1.1.1.3 root 457: ;;
1.1.1.5 root 458: --enable-linux-user) linux_user="yes"
1.1.1.3 root 459: ;;
1.1.1.5 root 460: --disable-darwin-user) darwin_user="no"
461: ;;
462: --enable-darwin-user) darwin_user="yes"
1.1.1.4 root 463: ;;
1.1.1.7 root 464: --disable-bsd-user) bsd_user="no"
465: ;;
466: --enable-bsd-user) bsd_user="yes"
467: ;;
1.1.1.5 root 468: --enable-uname-release=*) uname_release="$optarg"
1.1.1.4 root 469: ;;
1.1.1.6 root 470: --sparc_cpu=*)
471: sparc_cpu="$optarg"
472: case $sparc_cpu in
473: v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
1.1.1.9 root 474: target_arch2="sparc"; cpu="sparc" ;;
1.1.1.6 root 475: v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
1.1.1.9 root 476: target_arch2="sparc"; cpu="sparc" ;;
1.1.1.6 root 477: v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
1.1.1.9 root 478: target_arch2="sparc64"; cpu="sparc64" ;;
1.1.1.6 root 479: *) echo "undefined SPARC architecture. Exiting";exit 1;;
480: esac
481: ;;
482: --enable-werror) werror="yes"
483: ;;
484: --disable-werror) werror="no"
485: ;;
1.1.1.7 root 486: --disable-curses) curses="no"
487: ;;
1.1.1.9 root 488: --disable-curl) curl="no"
489: ;;
1.1.1.7 root 490: --disable-nptl) nptl="no"
491: ;;
492: --enable-mixemu) mixemu="yes"
493: ;;
1.1.1.9 root 494: --disable-pthread) pthread="no"
495: ;;
1.1.1.7 root 496: --disable-aio) aio="no"
497: ;;
1.1.1.9 root 498: --enable-io-thread) io_thread="yes"
499: ;;
1.1.1.7 root 500: --disable-blobs) blobs="no"
501: ;;
502: --kerneldir=*) kerneldir="$optarg"
503: ;;
1.1.1.9 root 504: --with-pkgversion=*) pkgversion=" ($optarg)"
505: ;;
506: --disable-docs) build_docs="no"
507: ;;
1.1.1.6 root 508: *) echo "ERROR: unknown option $opt"; show_help="yes"
509: ;;
1.1 root 510: esac
511: done
512:
1.1.1.5 root 513: # default flags for all hosts
1.1.1.9 root 514: CFLAGS="$CFLAGS -g -fno-strict-aliasing"
515: if test "$debug" = "no" ; then
516: CFLAGS="$CFLAGS -O2"
517: fi
1.1.1.7 root 518: CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls"
1.1.1.5 root 519: LDFLAGS="$LDFLAGS -g"
1.1.1.9 root 520:
521: # Consult white-list to determine whether to enable werror
522: # by default. Only enable by default for git builds
523: if test -z "$werror" ; then
524: z_version=`cut -f3 -d. $source_path/VERSION`
525: if test "$z_version" = "50" -a \
526: "$linux" = "yes" ; then
527: werror="yes"
528: else
529: werror="no"
530: fi
531: fi
532:
1.1.1.6 root 533: if test "$werror" = "yes" ; then
1.1.1.9 root 534: CFLAGS="$CFLAGS -Werror"
1.1.1.6 root 535: fi
536:
1.1.1.7 root 537: if test "$solaris" = "no" ; then
538: if ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
539: LDFLAGS="$LDFLAGS -Wl,--warn-common"
540: fi
541: fi
542:
1.1.1.6 root 543: #
544: # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
545: # ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
546: #
1.1.1.7 root 547: case "$cpu" in
1.1.1.6 root 548: sparc) if test -z "$sparc_cpu" ; then
549: ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
550: ARCH_LDFLAGS="-m32"
551: else
552: ARCH_CFLAGS="${SP_CFLAGS}"
553: ARCH_LDFLAGS="${SP_LDFLAGS}"
554: fi
1.1.1.9 root 555: ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g2 -ffixed-g3"
556: if test "$solaris" = "no" ; then
557: ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g1 -ffixed-g6"
558: fi
1.1.1.6 root 559: ;;
560: sparc64) if test -z "$sparc_cpu" ; then
561: ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
562: ARCH_LDFLAGS="-m64"
563: else
564: ARCH_CFLAGS="${SP_CFLAGS}"
565: ARCH_LDFLAGS="${SP_LDFLAGS}"
566: fi
1.1.1.9 root 567: if test "$solaris" = "no" ; then
568: ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g5 -ffixed-g6 -ffixed-g7"
569: else
570: ARCH_CFLAGS="$ARCH_CFLAGS -ffixed-g1 -ffixed-g5 -ffixed-g6 -ffixed-g7"
571: fi
1.1.1.6 root 572: ;;
573: s390)
574: ARCH_CFLAGS="-march=z900"
575: ;;
1.1.1.7 root 576: i386)
577: ARCH_CFLAGS="-m32"
578: ARCH_LDFLAGS="-m32"
579: ;;
580: x86_64)
581: ARCH_CFLAGS="-m64"
582: ARCH_LDFLAGS="-m64"
583: ;;
1.1.1.6 root 584: esac
585:
1.1.1.3 root 586: if test x"$show_help" = x"yes" ; then
587: cat << EOF
588:
589: Usage: configure [options]
590: Options: [defaults in brackets after descriptions]
591:
592: EOF
593: echo "Standard options:"
594: echo " --help print this message"
595: echo " --prefix=PREFIX install in PREFIX [$prefix]"
596: echo " --interp-prefix=PREFIX where to find shared libraries, etc."
597: echo " use %M for cpu name [$interp_prefix]"
598: echo " --target-list=LIST set target list [$target_list]"
599: echo ""
600: echo "kqemu kernel acceleration support:"
601: echo " --disable-kqemu disable kqemu support"
602: echo ""
603: echo "Advanced options (experts only):"
604: echo " --source-path=PATH path of source code [$source_path]"
605: echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
606: echo " --cc=CC use C compiler CC [$cc]"
607: echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
1.1.1.9 root 608: echo " --extra-cflags=CFLAGS append extra C compiler flags CFLAGS"
609: echo " --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS"
1.1.1.3 root 610: echo " --make=MAKE use specified make [$make]"
611: echo " --install=INSTALL use specified install [$install]"
612: echo " --static enable static build [$static]"
1.1.1.9 root 613: echo " --enable-debug-tcg enable TCG debugging"
614: echo " --disable-debug-tcg disable TCG debugging (default)"
615: echo " --enable-debug enable common debug build options"
1.1.1.7 root 616: echo " --enable-sparse enable sparse checker"
617: echo " --disable-sparse disable sparse checker (default)"
1.1.1.9 root 618: echo " --disable-strip disable stripping binaries"
1.1.1.6 root 619: echo " --disable-werror disable compilation abort on warning"
620: echo " --disable-sdl disable SDL"
1.1.1.3 root 621: echo " --enable-cocoa enable COCOA (Mac OS X only)"
1.1.1.7 root 622: echo " --audio-drv-list=LIST set audio drivers list:"
623: echo " Available drivers: $audio_possible_drivers"
624: echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_list]"
625: echo " Available cards: $audio_possible_cards"
626: echo " --enable-mixemu enable mixer emulation"
1.1.1.9 root 627: echo " --disable-xen disable xen backend driver support"
1.1.1.7 root 628: echo " --disable-brlapi disable BrlAPI"
1.1.1.6 root 629: echo " --disable-vnc-tls disable TLS encryption for VNC server"
1.1.1.9 root 630: echo " --disable-vnc-sasl disable SASL encryption for VNC server"
1.1.1.7 root 631: echo " --disable-curses disable curses output"
1.1.1.9 root 632: echo " --disable-curl disable curl connectivity"
1.1.1.7 root 633: echo " --disable-bluez disable bluez stack connectivity"
634: echo " --disable-kvm disable KVM acceleration support"
635: echo " --disable-nptl disable usermode NPTL support"
1.1.1.3 root 636: echo " --enable-system enable all system emulation targets"
637: echo " --disable-system disable all system emulation targets"
1.1.1.5 root 638: echo " --enable-linux-user enable all linux usermode emulation targets"
639: echo " --disable-linux-user disable all linux usermode emulation targets"
640: echo " --enable-darwin-user enable all darwin usermode emulation targets"
641: echo " --disable-darwin-user disable all darwin usermode emulation targets"
1.1.1.7 root 642: echo " --enable-bsd-user enable all BSD usermode emulation targets"
643: echo " --disable-bsd-user disable all BSD usermode emulation targets"
1.1.1.3 root 644: echo " --fmod-lib path to FMOD library"
645: echo " --fmod-inc path to FMOD includes"
1.1.1.7 root 646: echo " --oss-lib path to OSS library"
1.1.1.4 root 647: echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
1.1.1.6 root 648: echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
1.1.1.7 root 649: echo " --disable-vde disable support for vde network"
1.1.1.9 root 650: echo " --disable-pthread disable pthread support"
1.1.1.7 root 651: echo " --disable-aio disable AIO support"
1.1.1.9 root 652: echo " --enable-io-thread enable IO thread"
1.1.1.7 root 653: echo " --disable-blobs disable installing provided firmware blobs"
654: echo " --kerneldir=PATH look for kernel includes in PATH"
1.1.1.3 root 655: echo ""
1.1.1.5 root 656: echo "NOTE: The object files are built at the place where configure is launched"
1.1.1.3 root 657: exit 1
658: fi
659:
1.1 root 660: if test "$mingw32" = "yes" ; then
661: linux="no"
662: EXESUF=".exe"
663: oss="no"
1.1.1.7 root 664: linux_user="no"
665: bsd_user="no"
1.1.1.9 root 666: OS_CFLAGS="$OS_CFLAGS -DWIN32_LEAN_AND_MEAN -DWINVER=0x501"
1.1 root 667: fi
668:
1.1.1.7 root 669: if test ! -x "$(which cgcc 2>/dev/null)"; then
670: sparse="no"
1.1.1.5 root 671: fi
672:
1.1.1.3 root 673: #
674: # Solaris specific configure tool chain decisions
675: #
676: if test "$solaris" = "yes" ; then
677: solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
678: if test -z "$solinst" ; then
679: echo "Solaris install program not found. Use --install=/usr/ucb/install or"
680: echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
681: echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
682: exit 1
683: fi
684: if test "$solinst" = "/usr/sbin/install" ; then
685: echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
686: echo "try ginstall from the GNU fileutils available from www.blastwave.org"
687: echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
688: exit 1
689: fi
690: sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
691: if test -z "$sol_ar" ; then
692: echo "Error: No path includes ar"
693: if test -f /usr/ccs/bin/ar ; then
694: echo "Add /usr/ccs/bin to your path and rerun configure"
695: fi
696: exit 1
697: fi
1.1.1.6 root 698: fi
1.1.1.3 root 699:
700:
1.1 root 701: if test -z "$target_list" ; then
702: # these targets are portable
1.1.1.3 root 703: if [ "$softmmu" = "yes" ] ; then
1.1.1.7 root 704: target_list="\
705: i386-softmmu \
706: x86_64-softmmu \
707: arm-softmmu \
708: cris-softmmu \
709: m68k-softmmu \
1.1.1.9 root 710: microblaze-softmmu \
1.1.1.7 root 711: mips-softmmu \
712: mipsel-softmmu \
713: mips64-softmmu \
714: mips64el-softmmu \
715: ppc-softmmu \
716: ppcemb-softmmu \
717: ppc64-softmmu \
718: sh4-softmmu \
719: sh4eb-softmmu \
720: sparc-softmmu \
1.1.1.9 root 721: sparc64-softmmu \
1.1.1.7 root 722: "
1.1.1.3 root 723: fi
1.1 root 724: # the following are Linux specific
1.1.1.5 root 725: if [ "$linux_user" = "yes" ] ; then
1.1.1.7 root 726: target_list="${target_list}\
727: i386-linux-user \
728: x86_64-linux-user \
729: alpha-linux-user \
730: arm-linux-user \
731: armeb-linux-user \
732: cris-linux-user \
733: m68k-linux-user \
1.1.1.9 root 734: microblaze-linux-user \
1.1.1.7 root 735: mips-linux-user \
736: mipsel-linux-user \
737: ppc-linux-user \
738: ppc64-linux-user \
739: ppc64abi32-linux-user \
740: sh4-linux-user \
741: sh4eb-linux-user \
742: sparc-linux-user \
743: sparc64-linux-user \
744: sparc32plus-linux-user \
745: "
1.1.1.5 root 746: fi
747: # the following are Darwin specific
748: if [ "$darwin_user" = "yes" ] ; then
1.1.1.7 root 749: target_list="$target_list i386-darwin-user ppc-darwin-user "
750: fi
751: # the following are BSD specific
752: if [ "$bsd_user" = "yes" ] ; then
753: target_list="${target_list}\
1.1.1.9 root 754: i386-bsd-user \
755: x86_64-bsd-user \
756: sparc-bsd-user \
1.1.1.7 root 757: sparc64-bsd-user \
758: "
1.1 root 759: fi
760: else
1.1.1.3 root 761: target_list=`echo "$target_list" | sed -e 's/,/ /g'`
762: fi
763: if test -z "$target_list" ; then
764: echo "No targets enabled"
765: exit 1
1.1 root 766: fi
767:
768: if test -z "$cross_prefix" ; then
769:
770: # ---
771: # big/little endian test
772: cat > $TMPC << EOF
773: #include <inttypes.h>
774: int main(int argc, char ** argv){
1.1.1.2 root 775: volatile uint32_t i=0x01234567;
776: return (*((uint8_t*)(&i))) == 0x67;
1.1 root 777: }
778: EOF
779:
1.1.1.7 root 780: if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1.1 root 781: $TMPE && bigendian="yes"
782: else
783: echo big/little test failed
784: fi
785:
786: else
787:
788: # if cross compiling, cannot launch a program, so make a static guess
1.1.1.7 root 789: if test "$cpu" = "armv4b" \
790: -o "$cpu" = "hppa" \
791: -o "$cpu" = "m68k" \
792: -o "$cpu" = "mips" \
793: -o "$cpu" = "mips64" \
794: -o "$cpu" = "ppc" \
795: -o "$cpu" = "ppc64" \
796: -o "$cpu" = "s390" \
797: -o "$cpu" = "sparc" \
798: -o "$cpu" = "sparc64"; then
1.1 root 799: bigendian="yes"
800: fi
801:
802: fi
803:
804: # host long bits test
805: hostlongbits="32"
1.1.1.7 root 806: if test "$cpu" = "x86_64" \
807: -o "$cpu" = "alpha" \
808: -o "$cpu" = "ia64" \
809: -o "$cpu" = "sparc64" \
810: -o "$cpu" = "ppc64"; then
1.1 root 811: hostlongbits="64"
812: fi
813:
1.1.1.7 root 814: # Check host NPTL support
815: cat > $TMPC <<EOF
816: #include <sched.h>
817: #include <linux/futex.h>
818: void foo()
819: {
820: #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
821: #error bork
822: #endif
823: }
824: EOF
825:
826: if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null ; then
827: :
828: else
829: nptl="no"
830: fi
831:
832: ##########################################
833: # zlib check
834:
835: cat > $TMPC << EOF
836: #include <zlib.h>
837: int main(void) { zlibVersion(); return 0; }
838: EOF
839: if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz > /dev/null 2> /dev/null ; then
840: :
841: else
842: echo
843: echo "Error: zlib check failed"
844: echo "Make sure to have the zlib libs and headers installed."
845: echo
846: exit 1
847: fi
848:
1.1 root 849: ##########################################
1.1.1.9 root 850: # xen probe
851:
852: if test "$xen" = "yes" ; then
853: cat > $TMPC <<EOF
854: #include <xenctrl.h>
855: #include <xs.h>
856: int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
857: EOF
858: if $cc $CFLAGS $ARCH_CFLAGS -c -o $TMPO $TMPC $LDFLAGS -lxenstore -lxenctrl 2> /dev/null > /dev/null ; then
859: :
860: else
861: xen="no"
862: fi
863: fi
864:
865: ##########################################
1.1 root 866: # SDL probe
867:
868: sdl_too_old=no
869:
1.1.1.9 root 870: if test "$sdl" = "yes" ; then
1.1.1.6 root 871: sdl_config="sdl-config"
872: sdl=no
873: sdl_static=no
874:
1.1 root 875: cat > $TMPC << EOF
876: #include <SDL.h>
877: #undef main /* We don't want SDL to override our main() */
878: int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
879: EOF
1.1.1.7 root 880: if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` > $TMPSDLLOG 2>&1 ; then
881: _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
882: if test "$_sdlversion" -lt 121 ; then
883: sdl_too_old=yes
884: else
885: if test "$cocoa" = "no" ; then
886: sdl=yes
887: fi
888: fi
889:
890: # static link with sdl ?
891: if test "$sdl" = "yes" ; then
892: aa="no"
893: `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
894: sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
895: if [ "$aa" = "yes" ] ; then
896: sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
1.1.1.6 root 897: fi
898:
1.1.1.7 root 899: if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs > /dev/null 2> /dev/null; then
900: sdl_static=yes
901: fi
902: fi # static link
903: fi # sdl compile test
1.1 root 904: else
1.1.1.6 root 905: # Make sure to disable cocoa if sdl was set
906: if test "$sdl" = "yes" ; then
907: cocoa="no"
1.1.1.7 root 908: audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
1.1.1.6 root 909: fi
910: fi # -z $sdl
1.1 root 911:
1.1.1.7 root 912: if test "$sdl" = "yes" ; then
913: cat > $TMPC <<EOF
914: #include <SDL.h>
915: #if defined(SDL_VIDEO_DRIVER_X11)
916: #include <X11/XKBlib.h>
917: #else
918: #error No x11 support
919: #endif
920: int main(void) { return 0; }
921: EOF
922: if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` > /dev/null 2>&1 ; then
923: sdl_x11="yes"
924: fi
925: fi
926:
1.1.1.6 root 927: ##########################################
928: # VNC TLS detection
929: if test "$vnc_tls" = "yes" ; then
1.1.1.7 root 930: cat > $TMPC <<EOF
931: #include <gnutls/gnutls.h>
932: int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
933: EOF
934: vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
935: vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
936: if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
937: $vnc_tls_libs > /dev/null 2> /dev/null ; then
938: :
939: else
940: vnc_tls="no"
941: fi
1.1.1.6 root 942: fi
1.1.1.7 root 943:
944: ##########################################
1.1.1.9 root 945: # VNC SASL detection
946: if test "$vnc_sasl" = "yes" ; then
947: cat > $TMPC <<EOF
948: #include <sasl/sasl.h>
949: #include <stdio.h>
950: int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
951: EOF
952: # Assuming Cyrus-SASL installed in /usr prefix
953: vnc_sasl_cflags=""
954: vnc_sasl_libs="-lsasl2"
955: if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_sasl_cflags $TMPC \
956: $vnc_sasl_libs 2> /dev/null > /dev/null ; then
957: :
958: else
959: vnc_sasl="no"
960: fi
961: fi
962:
963: ##########################################
964: # fnmatch() probe, used for ACL routines
965: fnmatch="no"
966: cat > $TMPC << EOF
967: #include <fnmatch.h>
968: int main(void)
969: {
970: fnmatch("foo", "foo", 0);
971: return 0;
972: }
973: EOF
974: if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
975: fnmatch="yes"
976: fi
977:
978: ##########################################
1.1.1.7 root 979: # vde libraries probe
980: if test "$vde" = "yes" ; then
981: cat > $TMPC << EOF
982: #include <libvdeplug.h>
983: int main(void)
984: {
985: struct vde_open_args a = {0, 0, 0};
986: vde_open("", "", &a);
987: return 0;
988: }
989: EOF
990: if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug > /dev/null 2> /dev/null ; then
991: :
992: else
993: vde="no"
994: fi
1.1 root 995: fi
996:
1.1.1.5 root 997: ##########################################
1.1.1.7 root 998: # Sound support libraries probe
1.1.1.5 root 999:
1.1.1.7 root 1000: audio_drv_probe()
1001: {
1002: drv=$1
1003: hdr=$2
1004: lib=$3
1005: exp=$4
1006: cfl=$5
1007: cat > $TMPC << EOF
1008: #include <$hdr>
1009: int main(void) { $exp }
1010: EOF
1011: if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib > /dev/null 2> /dev/null ; then
1012: :
1013: else
1014: echo
1015: echo "Error: $drv check failed"
1016: echo "Make sure to have the $drv libs and headers installed."
1017: echo
1018: exit 1
1019: fi
1020: }
1021:
1022: audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1023: for drv in $audio_drv_list; do
1024: case $drv in
1025: alsa)
1026: audio_drv_probe $drv alsa/asoundlib.h -lasound \
1027: "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1028: ;;
1029:
1030: fmod)
1031: if test -z $fmod_lib || test -z $fmod_inc; then
1032: echo
1033: echo "Error: You must specify path to FMOD library and headers"
1034: echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1035: echo
1036: exit 1
1037: fi
1038: audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1039: ;;
1040:
1041: esd)
1042: audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1043: ;;
1044:
1045: pa)
1046: audio_drv_probe $drv pulse/simple.h -lpulse-simple \
1047: "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1048: ;;
1049:
1050: oss|sdl|core|wav|dsound)
1051: # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1052: ;;
1053:
1054: *)
1055: echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1056: echo
1057: echo "Error: Unknown driver '$drv' selected"
1058: echo "Possible drivers are: $audio_possible_drivers"
1059: echo
1060: exit 1
1061: }
1062: ;;
1063: esac
1064: done
1065:
1066: ##########################################
1067: # BrlAPI probe
1068:
1069: if test -z "$brlapi" ; then
1070: brlapi=no
1071: cat > $TMPC << EOF
1072: #include <brlapi.h>
1073: int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
1074: EOF
1075: if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi > /dev/null 2> /dev/null ; then
1076: brlapi=yes
1077: fi # brlapi compile test
1078: fi # -z $brlapi
1079:
1080: ##########################################
1081: # curses probe
1082:
1083: if test "$curses" = "yes" ; then
1084: curses=no
1.1.1.9 root 1085: ncurses=no
1.1.1.5 root 1086: cat > $TMPC << EOF
1.1.1.7 root 1087: #include <curses.h>
1.1.1.9 root 1088: #ifdef __OpenBSD__
1089: #define resize_term resizeterm
1090: #endif
1091: int main(void) { resize_term(0, 0); return curses_version(); }
1.1.1.5 root 1092: EOF
1.1.1.9 root 1093: if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lncurses > /dev/null 2> /dev/null ; then
1094: curses=yes
1095: ncurses=yes
1096: elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses > /dev/null 2> /dev/null ; then
1.1.1.7 root 1097: curses=yes
1098: fi
1099: fi # test "$curses"
1100:
1101: ##########################################
1.1.1.9 root 1102: # curl probe
1103:
1104: if test "$curl" = "yes" ; then
1105: curl=no
1106: cat > $TMPC << EOF
1107: #include <curl/curl.h>
1108: int main(void) { return curl_easy_init(); }
1109: EOF
1110: curl_libs=`curl-config --libs 2>/dev/null`
1111: if $cc $ARCH_CFLAGS $curl_libs -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1112: curl=yes
1113: fi
1114: fi # test "$curl"
1115:
1116: ##########################################
1.1.1.7 root 1117: # bluez support probe
1118: if test "$bluez" = "yes" ; then
1.1.1.9 root 1119: `pkg-config bluez 2> /dev/null` || bluez="no"
1.1.1.7 root 1120: fi
1121: if test "$bluez" = "yes" ; then
1122: cat > $TMPC << EOF
1123: #include <bluetooth/bluetooth.h>
1124: int main(void) { return bt_error(0); }
1125: EOF
1.1.1.9 root 1126: bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
1127: bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1.1.1.7 root 1128: if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
1129: $bluez_libs > /dev/null 2> /dev/null ; then
1.1.1.5 root 1130: :
1131: else
1.1.1.7 root 1132: bluez="no"
1133: fi
1134: fi
1135:
1136: ##########################################
1137: # kvm probe
1138: if test "$kvm" = "yes" ; then
1139: cat > $TMPC <<EOF
1140: #include <linux/kvm.h>
1141: #if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
1142: #error Invalid KVM version
1143: #endif
1144: #if !defined(KVM_CAP_USER_MEMORY)
1145: #error Missing KVM capability KVM_CAP_USER_MEMORY
1146: #endif
1147: #if !defined(KVM_CAP_SET_TSS_ADDR)
1148: #error Missing KVM capability KVM_CAP_SET_TSS_ADDR
1149: #endif
1150: #if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
1151: #error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
1152: #endif
1153: int main(void) { return 0; }
1154: EOF
1155: if test "$kerneldir" != "" ; then
1156: kvm_cflags=-I"$kerneldir"/include
1157: if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
1158: -a -d "$kerneldir/arch/x86/include" ; then
1159: kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1160: elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
1161: kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1162: elif test -d "$kerneldir/arch/$cpu/include" ; then
1163: kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
1164: fi
1165: else
1166: kvm_cflags=""
1167: fi
1168: if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC \
1169: > /dev/null 2>/dev/null ; then
1170: :
1171: else
1172: kvm="no";
1173: if [ -x "`which awk 2>/dev/null`" ] && \
1174: [ -x "`which grep 2>/dev/null`" ]; then
1.1.1.8 root 1175: kvmerr=`LANG=C $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \
1.1.1.7 root 1176: | grep "error: " \
1177: | awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1178: if test "$kvmerr" != "" ; then
1.1.1.9 root 1179: kvm="no - (${kvmerr})\n\
1180: NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
1181: recent kvm-kmod from http://sourceforge.net/projects/kvm."
1.1.1.7 root 1182: fi
1183: fi
1184: fi
1185: fi
1186:
1187: ##########################################
1.1.1.9 root 1188: # pthread probe
1189: PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1190: PTHREADLIBS=""
1.1.1.7 root 1191:
1.1.1.9 root 1192: if test "$pthread" = yes; then
1193: pthread=no
1194: cat > $TMPC << EOF
1.1.1.7 root 1195: #include <pthread.h>
1.1.1.9 root 1196: int main(void) { pthread_create(0,0,0,0); return 0; }
1.1.1.7 root 1197: EOF
1.1.1.9 root 1198: for pthread_lib in $PTHREADLIBS_LIST; do
1199: if $cc $ARCH_CFLAGS -o $TMPE $TMPC $pthread_lib 2> /dev/null > /dev/null ; then
1200: pthread=yes
1201: PTHREADLIBS="$pthread_lib"
1202: break
1203: fi
1204: done
1205: fi
1206:
1207: if test "$pthread" = no; then
1208: aio=no
1209: io_thread=no
1.1.1.7 root 1210: fi
1211:
1212: ##########################################
1213: # iovec probe
1214: cat > $TMPC <<EOF
1215: #include <sys/types.h>
1216: #include <sys/uio.h>
1217: #include <unistd.h>
1218: int main(void) { struct iovec iov; return 0; }
1219: EOF
1220: iovec=no
1221: if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1222: iovec=yes
1223: fi
1224:
1225: ##########################################
1.1.1.9 root 1226: # preadv probe
1227: cat > $TMPC <<EOF
1228: #include <sys/types.h>
1229: #include <sys/uio.h>
1230: #include <unistd.h>
1231: int main(void) { preadv; }
1232: EOF
1233: preadv=no
1234: if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1235: preadv=yes
1236: fi
1237:
1238: ##########################################
1.1.1.7 root 1239: # fdt probe
1240: if test "$fdt" = "yes" ; then
1241: fdt=no
1242: cat > $TMPC << EOF
1243: int main(void) { return 0; }
1244: EOF
1.1.1.9 root 1245: if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lfdt 2> /dev/null > /dev/null ; then
1.1.1.7 root 1246: fdt=yes
1.1.1.5 root 1247: fi
1248: fi
1249:
1.1.1.9 root 1250: #
1251: # Check for xxxat() functions when we are building linux-user
1252: # emulator. This is done because older glibc versions don't
1253: # have syscall stubs for these implemented.
1254: #
1255: atfile=no
1256: cat > $TMPC << EOF
1257: #define _ATFILE_SOURCE
1258: #include <sys/types.h>
1259: #include <fcntl.h>
1260: #include <unistd.h>
1261:
1262: int
1263: main(void)
1264: {
1265: /* try to unlink nonexisting file */
1266: return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
1267: }
1268: EOF
1269: if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null > /dev/null ; then
1270: atfile=yes
1271: fi
1272:
1273: # Check for inotify functions when we are building linux-user
1274: # emulator. This is done because older glibc versions don't
1275: # have syscall stubs for these implemented. In that case we
1276: # don't provide them even if kernel supports them.
1277: #
1278: inotify=no
1279: cat > $TMPC << EOF
1280: #include <sys/inotify.h>
1281:
1282: int
1283: main(void)
1284: {
1285: /* try to start inotify */
1286: return inotify_init();
1287: }
1288: EOF
1289: if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null > /dev/null ; then
1290: inotify=yes
1291: fi
1292:
1293: # check if utimensat and futimens are supported
1294: utimens=no
1295: cat > $TMPC << EOF
1296: #define _ATFILE_SOURCE
1297: #define _GNU_SOURCE
1298: #include <stddef.h>
1299: #include <fcntl.h>
1300:
1301: int main(void)
1302: {
1303: utimensat(AT_FDCWD, "foo", NULL, 0);
1304: futimens(0, NULL);
1305: return 0;
1306: }
1307: EOF
1308: if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1309: utimens=yes
1310: fi
1311:
1312: # check if pipe2 is there
1313: pipe2=no
1314: cat > $TMPC << EOF
1315: #define _GNU_SOURCE
1316: #include <unistd.h>
1317: #include <fcntl.h>
1318:
1319: int main(void)
1320: {
1321: int pipefd[2];
1322: pipe2(pipefd, O_CLOEXEC);
1323: return 0;
1324: }
1325: EOF
1326: if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1327: pipe2=yes
1328: fi
1329:
1330: # check if tee/splice is there. vmsplice was added same time.
1331: splice=no
1332: cat > $TMPC << EOF
1333: #define _GNU_SOURCE
1334: #include <unistd.h>
1335: #include <fcntl.h>
1336: #include <limits.h>
1337:
1338: int main(void)
1339: {
1340: int len, fd;
1341: len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
1342: splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
1343: return 0;
1344: }
1345: EOF
1346: if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
1347: splice=yes
1348: fi
1349:
1.1.1.3 root 1350: # Check if tools are available to build documentation.
1.1.1.9 root 1351: if test "$build_docs" = "yes" -a \( ! -x "`which texi2html 2>/dev/null`" -o ! -x "`which pod2man 2>/dev/null`" \) ; then
1352: build_docs="no"
1.1 root 1353: fi
1354:
1.1.1.7 root 1355: ##########################################
1356: # Do we need librt
1.1.1.9 root 1357: CLOCKLIBS=""
1.1.1.7 root 1358: cat > $TMPC <<EOF
1359: #include <signal.h>
1360: #include <time.h>
1361: int main(void) { clockid_t id; return clock_gettime(id, NULL); }
1362: EOF
1363:
1364: rt=no
1365: if $cc $ARCH_CFLAGS -o $TMPE $TMPC > /dev/null 2> /dev/null ; then
1366: :
1367: elif $cc $ARCH_CFLAGS -o $TMPE $TMPC -lrt > /dev/null 2> /dev/null ; then
1368: rt=yes
1369: fi
1370:
1371: if test "$rt" = "yes" ; then
1.1.1.9 root 1372: CLOCKLIBS="-lrt"
1.1.1.7 root 1373: fi
1374:
1.1 root 1375: if test "$mingw32" = "yes" ; then
1.1.1.6 root 1376: if test -z "$prefix" ; then
1.1.1.9 root 1377: prefix="c:/Program Files/Qemu"
1.1.1.6 root 1378: fi
1379: mansuffix=""
1380: datasuffix=""
1381: docsuffix=""
1382: binsuffix=""
1383: else
1384: if test -z "$prefix" ; then
1385: prefix="/usr/local"
1386: fi
1387: mansuffix="/share/man"
1388: datasuffix="/share/qemu"
1389: docsuffix="/share/doc/qemu"
1390: binsuffix="/bin"
1.1 root 1391: fi
1392:
1393: echo "Install prefix $prefix"
1.1.1.6 root 1394: echo "BIOS directory $prefix$datasuffix"
1395: echo "binary directory $prefix$binsuffix"
1.1 root 1396: if test "$mingw32" = "no" ; then
1.1.1.6 root 1397: echo "Manual directory $prefix$mansuffix"
1.1 root 1398: echo "ELF interp prefix $interp_prefix"
1399: fi
1400: echo "Source path $source_path"
1401: echo "C compiler $cc"
1402: echo "Host C compiler $host_cc"
1.1.1.7 root 1403: echo "ARCH_CFLAGS $ARCH_CFLAGS"
1.1 root 1404: echo "make $make"
1.1.1.3 root 1405: echo "install $install"
1.1 root 1406: echo "host CPU $cpu"
1407: echo "host big endian $bigendian"
1408: echo "target list $target_list"
1.1.1.9 root 1409: echo "tcg debug enabled $debug_tcg"
1.1 root 1410: echo "gprof enabled $gprof"
1.1.1.7 root 1411: echo "sparse enabled $sparse"
1.1.1.9 root 1412: echo "strip binaries $strip_opt"
1.1.1.3 root 1413: echo "profiler $profiler"
1.1 root 1414: echo "static build $static"
1.1.1.6 root 1415: echo "-Werror enabled $werror"
1.1 root 1416: if test "$darwin" = "yes" ; then
1417: echo "Cocoa support $cocoa"
1418: fi
1419: echo "SDL support $sdl"
1420: if test "$sdl" != "no" ; then
1421: echo "SDL static link $sdl_static"
1422: fi
1.1.1.7 root 1423: echo "curses support $curses"
1.1.1.9 root 1424: echo "curl support $curl"
1.1 root 1425: echo "mingw32 support $mingw32"
1.1.1.7 root 1426: echo "Audio drivers $audio_drv_list"
1427: echo "Extra audio cards $audio_card_list"
1428: echo "Mixer emulation $mixemu"
1.1.1.6 root 1429: echo "VNC TLS support $vnc_tls"
1430: if test "$vnc_tls" = "yes" ; then
1431: echo " TLS CFLAGS $vnc_tls_cflags"
1432: echo " TLS LIBS $vnc_tls_libs"
1433: fi
1.1.1.9 root 1434: echo "VNC SASL support $vnc_sasl"
1435: if test "$vnc_sasl" = "yes" ; then
1436: echo " SASL CFLAGS $vnc_sasl_cflags"
1437: echo " SASL LIBS $vnc_sasl_libs"
1438: fi
1.1.1.6 root 1439: if test -n "$sparc_cpu"; then
1440: echo "Target Sparc Arch $sparc_cpu"
1441: fi
1.1.1.3 root 1442: echo "kqemu support $kqemu"
1.1.1.9 root 1443: echo "xen support $xen"
1.1.1.7 root 1444: echo "brlapi support $brlapi"
1.1.1.3 root 1445: echo "Documentation $build_docs"
1.1.1.4 root 1446: [ ! -z "$uname_release" ] && \
1447: echo "uname -r $uname_release"
1.1.1.7 root 1448: echo "NPTL support $nptl"
1449: echo "vde support $vde"
1450: echo "AIO support $aio"
1.1.1.9 root 1451: echo "IO thread $io_thread"
1.1.1.7 root 1452: echo "Install blobs $blobs"
1.1.1.9 root 1453: echo -e "KVM support $kvm"
1.1.1.7 root 1454: echo "fdt support $fdt"
1.1.1.9 root 1455: echo "preadv support $preadv"
1.1 root 1456:
1457: if test $sdl_too_old = "yes"; then
1458: echo "-> Your SDL version is too old - please upgrade to have SDL support"
1459: fi
1460: #if test "$sdl_static" = "no"; then
1461: # echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1462: #fi
1463:
1.1.1.9 root 1464: config_host_mak="config-host.mak"
1465: config_host_h="config-host.h"
1.1 root 1466:
1.1.1.9 root 1467: #echo "Creating $config_host_mak and $config_host_h"
1.1.1.6 root 1468:
1.1.1.9 root 1469: test -f $config_host_h && mv $config_host_h ${config_host_h}~
1470:
1471: echo "# Automatically generated by configure - do not modify" > $config_host_mak
1472: printf "# Configured with:" >> $config_host_mak
1473: printf " '%s'" "$0" "$@" >> $config_host_mak
1474: echo >> $config_host_mak
1475: echo "/* Automatically generated by configure - do not modify */" > $config_host_h
1476:
1477: echo "prefix=$prefix" >> $config_host_mak
1478: echo "bindir=\${prefix}$binsuffix" >> $config_host_mak
1479: echo "mandir=\${prefix}$mansuffix" >> $config_host_mak
1480: echo "datadir=\${prefix}$datasuffix" >> $config_host_mak
1481: echo "docdir=\${prefix}$docsuffix" >> $config_host_mak
1482: echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_host_h
1483: echo "MAKE=$make" >> $config_host_mak
1484: echo "INSTALL=$install" >> $config_host_mak
1485: echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
1486: echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
1487: echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
1488: echo "CC=$cc" >> $config_host_mak
1489: echo "HOST_CC=$host_cc" >> $config_host_mak
1490: echo "AR=$ar" >> $config_host_mak
1491: echo "OBJCOPY=$objcopy" >> $config_host_mak
1492: echo "LD=$ld" >> $config_host_mak
1493: echo "CFLAGS=$CFLAGS $OS_CFLAGS $ARCH_CFLAGS $EXTRA_CFLAGS" >> $config_host_mak
1494: echo "LDFLAGS=$LDFLAGS $OS_LDFLAGS $ARCH_LDFLAGS $EXTRA_LDFLAGS" >> $config_host_mak
1495: echo "EXESUF=$EXESUF" >> $config_host_mak
1496: echo "PTHREADLIBS=$PTHREADLIBS" >> $config_host_mak
1497: echo "CLOCKLIBS=$CLOCKLIBS" >> $config_host_mak
1.1.1.7 root 1498: case "$cpu" in
1.1.1.9 root 1499: i386|x86_64|alpha|cris|hppa|ia64|m68k|microbaze|mips|mips64|ppc|ppc64|s390|sparc|sparc64)
1500: ARCH=$cpu
1.1.1.7 root 1501: ;;
1.1.1.10! root 1502: armv4b|armv4l)
1.1.1.9 root 1503: ARCH=arm
1.1.1.7 root 1504: ;;
1505: *)
1506: echo "Unsupported CPU = $cpu"
1507: exit 1
1508: ;;
1509: esac
1.1.1.9 root 1510: echo "ARCH=$ARCH" >> $config_host_mak
1511: arch_name=`echo $ARCH | tr '[:lower:]' '[:upper:]'`
1512: echo "#define HOST_$arch_name 1" >> $config_host_h
1513:
1514: if test "$debug_tcg" = "yes" ; then
1515: echo "#define DEBUG_TCG 1" >> $config_host_h
1516: fi
1517: if test "$debug" = "yes" ; then
1518: echo "#define DEBUG_EXEC 1" >> $config_host_h
1519: fi
1.1.1.7 root 1520: if test "$sparse" = "yes" ; then
1.1.1.9 root 1521: echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
1522: echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
1523: echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
1524: fi
1525: if test "$strip_opt" = "yes" ; then
1526: echo "STRIP_OPT=-s" >> $config_host_mak
1.1 root 1527: fi
1528: if test "$bigendian" = "yes" ; then
1.1.1.9 root 1529: echo "WORDS_BIGENDIAN=yes" >> $config_host_mak
1530: echo "#define WORDS_BIGENDIAN 1" >> $config_host_h
1.1 root 1531: fi
1.1.1.9 root 1532: echo "#define HOST_LONG_BITS $hostlongbits" >> $config_host_h
1.1 root 1533: if test "$mingw32" = "yes" ; then
1.1.1.9 root 1534: echo "CONFIG_WIN32=y" >> $config_host_mak
1535: echo "#define CONFIG_WIN32 1" >> $config_host_h
1.1.1.6 root 1536: else
1537: cat > $TMPC << EOF
1538: #include <byteswap.h>
1539: int main(void) { return bswap_32(0); }
1540: EOF
1.1.1.7 root 1541: if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1.1.1.9 root 1542: echo "#define HAVE_BYTESWAP_H 1" >> $config_host_h
1.1.1.6 root 1543: fi
1.1.1.7 root 1544: cat > $TMPC << EOF
1545: #include <sys/endian.h>
1546: #include <sys/types.h>
1547: #include <machine/bswap.h>
1548: int main(void) { return bswap32(0); }
1549: EOF
1550: if $cc $ARCH_CFLAGS -o $TMPE $TMPC >/dev/null 2> /dev/null ; then
1.1.1.9 root 1551: echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_host_h
1.1.1.7 root 1552: fi
1553: fi
1554:
1555: if [ "$openbsd" = "yes" ] ; then
1.1.1.9 root 1556: echo "#define ENOTSUP 4096" >> $config_host_h
1.1 root 1557: fi
1.1.1.7 root 1558:
1.1 root 1559: if test "$darwin" = "yes" ; then
1.1.1.9 root 1560: echo "CONFIG_DARWIN=y" >> $config_host_mak
1561: echo "#define CONFIG_DARWIN 1" >> $config_host_h
1.1 root 1562: fi
1.1.1.7 root 1563:
1564: if test "$aix" = "yes" ; then
1.1.1.9 root 1565: echo "CONFIG_AIX=y" >> $config_host_mak
1566: echo "#define CONFIG_AIX 1" >> $config_host_h
1.1.1.7 root 1567: fi
1568:
1.1.1.3 root 1569: if test "$solaris" = "yes" ; then
1.1.1.9 root 1570: echo "CONFIG_SOLARIS=y" >> $config_host_mak
1571: echo "#define HOST_SOLARIS $solarisrev" >> $config_host_h
1.1.1.6 root 1572: if test "$needs_libsunmath" = "yes" ; then
1.1.1.9 root 1573: echo "NEEDS_LIBSUNMATH=yes" >> $config_host_mak
1574: echo "#define NEEDS_LIBSUNMATH 1" >> $config_host_h
1.1.1.6 root 1575: fi
1576: fi
1577: if test -n "$sparc_cpu"; then
1.1.1.9 root 1578: echo "CONFIG__sparc_${sparc_cpu}__=y" >> $config_host_mak
1579: echo "#define __sparc_${sparc_cpu}__ 1" >> $config_host_h
1.1 root 1580: fi
1581: if test "$gprof" = "yes" ; then
1.1.1.9 root 1582: echo "TARGET_GPROF=yes" >> $config_host_mak
1583: echo "#define HAVE_GPROF 1" >> $config_host_h
1.1 root 1584: fi
1585: if test "$static" = "yes" ; then
1.1.1.9 root 1586: echo "CONFIG_STATIC=y" >> $config_host_mak
1587: echo "#define CONFIG_STATIC 1" >> $config_host_h
1.1 root 1588: fi
1.1.1.3 root 1589: if test $profiler = "yes" ; then
1.1.1.9 root 1590: echo "#define CONFIG_PROFILER 1" >> $config_host_h
1.1.1.3 root 1591: fi
1.1 root 1592: if test "$slirp" = "yes" ; then
1.1.1.9 root 1593: echo "CONFIG_SLIRP=y" >> $config_host_mak
1594: echo "#define CONFIG_SLIRP 1" >> $config_host_h
1.1 root 1595: fi
1.1.1.7 root 1596: if test "$vde" = "yes" ; then
1.1.1.9 root 1597: echo "CONFIG_VDE=y" >> $config_host_mak
1598: echo "#define CONFIG_VDE 1" >> $config_host_h
1599: echo "VDE_LIBS=-lvdeplug" >> $config_host_mak
1.1.1.7 root 1600: fi
1601: for card in $audio_card_list; do
1602: def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1.1.1.9 root 1603: echo "$def=y" >> $config_host_mak
1604: echo "#define $def 1" >> $config_host_h
1.1.1.7 root 1605: done
1.1.1.9 root 1606: echo "#define AUDIO_DRIVERS \\" >> $config_host_h
1.1.1.7 root 1607: for drv in $audio_drv_list; do
1.1.1.9 root 1608: echo " &${drv}_audio_driver, \\" >>$config_host_h
1.1.1.7 root 1609: def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1.1.1.9 root 1610: echo "$def=y" >> $config_host_mak
1.1.1.7 root 1611: if test "$drv" = "fmod"; then
1.1.1.9 root 1612: echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_host_mak
1613: echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_host_mak
1.1.1.7 root 1614: elif test "$drv" = "oss"; then
1.1.1.9 root 1615: echo "CONFIG_OSS_LIB=$oss_lib" >> $config_host_mak
1.1.1.7 root 1616: fi
1617: done
1.1.1.9 root 1618: echo "" >>$config_host_h
1.1.1.7 root 1619: if test "$mixemu" = "yes" ; then
1.1.1.9 root 1620: echo "CONFIG_MIXEMU=y" >> $config_host_mak
1621: echo "#define CONFIG_MIXEMU 1" >> $config_host_h
1.1 root 1622: fi
1.1.1.6 root 1623: if test "$vnc_tls" = "yes" ; then
1.1.1.9 root 1624: echo "CONFIG_VNC_TLS=y" >> $config_host_mak
1625: echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
1626: echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_host_mak
1627: echo "#define CONFIG_VNC_TLS 1" >> $config_host_h
1628: fi
1629: if test "$vnc_sasl" = "yes" ; then
1630: echo "CONFIG_VNC_SASL=y" >> $config_host_mak
1631: echo "CONFIG_VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
1632: echo "CONFIG_VNC_SASL_LIBS=$vnc_sasl_libs" >> $config_host_mak
1633: echo "#define CONFIG_VNC_SASL 1" >> $config_host_h
1634: fi
1635: if test "$fnmatch" = "yes" ; then
1636: echo "#define HAVE_FNMATCH_H 1" >> $config_host_h
1.1.1.6 root 1637: fi
1.1.1.3 root 1638: qemu_version=`head $source_path/VERSION`
1.1.1.9 root 1639: echo "VERSION=$qemu_version" >>$config_host_mak
1640: echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_host_h
1.1.1.3 root 1641:
1.1.1.9 root 1642: echo "#define QEMU_PKGVERSION \"$pkgversion\"" >> $config_host_h
1643:
1644: echo "SRC_PATH=$source_path" >> $config_host_mak
1.1.1.3 root 1645: if [ "$source_path_used" = "yes" ]; then
1.1.1.9 root 1646: echo "VPATH=$source_path" >> $config_host_mak
1.1.1.3 root 1647: fi
1.1.1.9 root 1648: echo "TARGET_DIRS=$target_list" >> $config_host_mak
1.1.1.3 root 1649: if [ "$build_docs" = "yes" ] ; then
1.1.1.9 root 1650: echo "BUILD_DOCS=yes" >> $config_host_mak
1.1.1.3 root 1651: fi
1.1.1.6 root 1652: if test "$static" = "yes"; then
1653: sdl1=$sdl_static
1654: else
1655: sdl1=$sdl
1656: fi
1657: if test "$sdl1" = "yes" ; then
1.1.1.9 root 1658: echo "#define CONFIG_SDL 1" >> $config_host_h
1659: echo "CONFIG_SDL=y" >> $config_host_mak
1.1.1.6 root 1660: if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1.1.1.9 root 1661: echo "SDL_LIBS=$sdl_static_libs" >> $config_host_mak
1.1.1.7 root 1662: elif test "$sdl_x11" = "yes" ; then
1.1.1.9 root 1663: echo "SDL_LIBS=`$sdl_config --libs` -lX11" >> $config_host_mak
1.1.1.6 root 1664: else
1.1.1.9 root 1665: echo "SDL_LIBS=`$sdl_config --libs`" >> $config_host_mak
1.1.1.6 root 1666: fi
1667: if [ "${aa}" = "yes" ] ; then
1.1.1.9 root 1668: echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_host_mak
1.1.1.6 root 1669: else
1.1.1.9 root 1670: echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_host_mak
1.1.1.6 root 1671: fi
1672: fi
1673: if test "$cocoa" = "yes" ; then
1.1.1.9 root 1674: echo "#define CONFIG_COCOA 1" >> $config_host_h
1675: echo "CONFIG_COCOA=y" >> $config_host_mak
1.1.1.7 root 1676: fi
1677: if test "$curses" = "yes" ; then
1.1.1.9 root 1678: echo "#define CONFIG_CURSES 1" >> $config_host_h
1679: echo "CONFIG_CURSES=y" >> $config_host_mak
1680: if test "$ncurses" = "yes" ; then
1681: echo "CURSES_LIBS=-lncurses" >> $config_host_mak
1682: else
1683: echo "CURSES_LIBS=-lcurses" >> $config_host_mak
1684: fi
1685: fi
1686: if test "$atfile" = "yes" ; then
1687: echo "#define CONFIG_ATFILE 1" >> $config_host_h
1688: fi
1689: if test "$utimens" = "yes" ; then
1690: echo "#define CONFIG_UTIMENSAT 1" >> $config_host_h
1691: fi
1692: if test "$pipe2" = "yes" ; then
1693: echo "#define CONFIG_PIPE2 1" >> $config_host_h
1694: fi
1695: if test "$splice" = "yes" ; then
1696: echo "#define CONFIG_SPLICE 1" >> $config_host_h
1697: fi
1698: if test "$inotify" = "yes" ; then
1699: echo "#define CONFIG_INOTIFY 1" >> $config_host_h
1700: fi
1701: if test "$curl" = "yes" ; then
1702: echo "CONFIG_CURL=y" >> $config_host_mak
1703: echo "CURL_LIBS=$curl_libs" >> $config_host_mak
1704: echo "#define CONFIG_CURL 1" >> $config_host_h
1.1.1.7 root 1705: fi
1706: if test "$brlapi" = "yes" ; then
1.1.1.9 root 1707: echo "CONFIG_BRLAPI=y" >> $config_host_mak
1708: echo "#define CONFIG_BRLAPI 1" >> $config_host_h
1709: echo "BRLAPI_LIBS=-lbrlapi" >> $config_host_mak
1.1.1.7 root 1710: fi
1711: if test "$bluez" = "yes" ; then
1.1.1.9 root 1712: echo "CONFIG_BLUEZ=y" >> $config_host_mak
1713: echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
1714: echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_host_mak
1715: echo "#define CONFIG_BLUEZ 1" >> $config_host_h
1716: fi
1717: if test "$xen" = "yes" ; then
1718: echo "XEN_LIBS=-lxenstore -lxenctrl -lxenguest" >> $config_host_mak
1.1.1.7 root 1719: fi
1720: if test "$aio" = "yes" ; then
1.1.1.9 root 1721: echo "#define CONFIG_AIO 1" >> $config_host_h
1722: echo "CONFIG_AIO=y" >> $config_host_mak
1723: fi
1724: if test "$io_thread" = "yes" ; then
1725: echo "CONFIG_IOTHREAD=y" >> $config_host_mak
1726: echo "#define CONFIG_IOTHREAD 1" >> $config_host_h
1.1.1.7 root 1727: fi
1728: if test "$blobs" = "yes" ; then
1.1.1.9 root 1729: echo "INSTALL_BLOBS=yes" >> $config_host_mak
1.1.1.7 root 1730: fi
1731: if test "$iovec" = "yes" ; then
1.1.1.9 root 1732: echo "#define HAVE_IOVEC 1" >> $config_host_h
1733: fi
1734: if test "$preadv" = "yes" ; then
1735: echo "#define HAVE_PREADV 1" >> $config_host_h
1.1.1.7 root 1736: fi
1737: if test "$fdt" = "yes" ; then
1.1.1.9 root 1738: echo "#define HAVE_FDT 1" >> $config_host_h
1739: echo "FDT_LIBS=-lfdt" >> $config_host_mak
1.1.1.6 root 1740: fi
1.1 root 1741:
1742: # XXX: suppress that
1743: if [ "$bsd" = "yes" ] ; then
1.1.1.9 root 1744: echo "#define O_LARGEFILE 0" >> $config_host_h
1745: echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_host_h
1746: echo "#define HOST_BSD 1" >> $config_host_h
1.1 root 1747: fi
1748:
1.1.1.9 root 1749: echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_host_h
1.1.1.4 root 1750:
1.1.1.7 root 1751: # USB host support
1752: case "$usb" in
1753: linux)
1.1.1.9 root 1754: echo "HOST_USB=linux" >> $config_host_mak
1.1.1.7 root 1755: ;;
1756: bsd)
1.1.1.9 root 1757: echo "HOST_USB=bsd" >> $config_host_mak
1.1.1.7 root 1758: ;;
1759: *)
1.1.1.9 root 1760: echo "HOST_USB=stub" >> $config_host_mak
1.1.1.7 root 1761: ;;
1762: esac
1763:
1.1.1.9 root 1764: # Determine what linker flags to use to force archive inclusion
1765: check_linker_flags()
1766: {
1767: w2=
1768: if test "$2" ; then
1769: w2=-Wl,$2
1770: fi
1771: $cc $ARCH_CFLAGS -o $TMPE $OS_CFLAGS $TMPC -Wl,$1 ${w2} >/dev/null 2>/dev/null
1772: }
1773:
1774: cat > $TMPC << EOF
1775: int main(void) { }
1776: EOF
1777: if check_linker_flags --whole-archive --no-whole-archive ; then
1778: # GNU ld
1779: echo "ARLIBS_BEGIN=-Wl,--whole-archive" >> $config_host_mak
1780: echo "ARLIBS_END=-Wl,--no-whole-archive" >> $config_host_mak
1781: elif check_linker_flags -z,allextract -z,defaultextract ; then
1782: # Solaris ld
1783: echo "ARLIBS_BEGIN=-Wl,-z,allextract" >> $config_host_mak
1784: echo "ARLIBS_END=-Wl,-z,defaultextract" >> $config_host_mak
1785: elif check_linker_flags -all_load ; then
1786: # Mac OS X
1787: echo "ARLIBS_BEGIN=-all_load" >> $config_host_mak
1788: echo "ARLIBS_END=" >> $config_host_mak
1789: else
1790: echo "Error: your linker does not support --whole-archive or -z."
1791: echo "Please report to [email protected]"
1792: exit 1
1793: fi
1794:
1795: if test "$xen" = "yes" ;
1796: then
1797: echo "CONFIG_XEN=y" >> $config_host_mak
1798: fi
1799:
1.1.1.6 root 1800: tools=
1801: if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1802: tools="qemu-img\$(EXESUF) $tools"
1.1.1.7 root 1803: if [ "$linux" = "yes" ] ; then
1.1.1.9 root 1804: tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools"
1805: elif test "$mingw32" = "yes" ; then
1806: tools="qemu-io\$(EXESUF) $tools"
1.1.1.7 root 1807: fi
1.1.1.6 root 1808: fi
1.1.1.9 root 1809: echo "TOOLS=$tools" >> $config_host_mak
1.1.1.6 root 1810:
1.1.1.9 root 1811: roms=
1812: if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
1813: "$targetos" != "Darwin" ; then
1814: roms="optionrom"
1815: fi
1816: echo "ROMS=$roms" >> $config_host_mak
1817:
1818: if test -f ${config_host_h}~ ; then
1819: if cmp -s $config_host_h ${config_host_h}~ ; then
1820: mv ${config_host_h}~ $config_host_h
1821: else
1822: rm ${config_host_h}~
1823: fi
1824: fi
1.1.1.6 root 1825:
1.1.1.2 root 1826: for target in $target_list; do
1.1 root 1827: target_dir="$target"
1828: config_mak=$target_dir/config.mak
1829: config_h=$target_dir/config.h
1.1.1.9 root 1830: target_arch2=`echo $target | cut -d '-' -f 1`
1.1 root 1831: target_bigendian="no"
1.1.1.9 root 1832: case "$target_arch2" in
1833: armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|sh4eb|sparc|sparc64|sparc32plus)
1834: target_bigendian=yes
1835: ;;
1836: esac
1.1 root 1837: target_softmmu="no"
1838: target_user_only="no"
1.1.1.5 root 1839: target_linux_user="no"
1840: target_darwin_user="no"
1.1.1.7 root 1841: target_bsd_user="no"
1.1.1.6 root 1842: case "$target" in
1.1.1.9 root 1843: ${target_arch2}-softmmu)
1.1.1.6 root 1844: target_softmmu="yes"
1845: ;;
1.1.1.9 root 1846: ${target_arch2}-linux-user)
1.1.1.6 root 1847: target_user_only="yes"
1848: target_linux_user="yes"
1849: ;;
1.1.1.9 root 1850: ${target_arch2}-darwin-user)
1.1.1.6 root 1851: target_user_only="yes"
1852: target_darwin_user="yes"
1853: ;;
1.1.1.9 root 1854: ${target_arch2}-bsd-user)
1.1.1.7 root 1855: target_user_only="yes"
1856: target_bsd_user="yes"
1857: ;;
1.1.1.6 root 1858: *)
1859: echo "ERROR: Target '$target' not recognised"
1860: exit 1
1861: ;;
1862: esac
1.1.1.5 root 1863:
1.1 root 1864: #echo "Creating $config_mak, $config_h and $target_dir/Makefile"
1865:
1.1.1.6 root 1866: test -f $config_h && mv $config_h ${config_h}~
1867:
1.1 root 1868: mkdir -p $target_dir
1869: mkdir -p $target_dir/fpu
1.1.1.7 root 1870: mkdir -p $target_dir/tcg
1871: if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
1.1 root 1872: mkdir -p $target_dir/nwfpe
1873: fi
1874:
1.1.1.3 root 1875: #
1876: # don't use ln -sf as not all "ln -sf" over write the file/link
1877: #
1878: rm -f $target_dir/Makefile
1879: ln -s $source_path/Makefile.target $target_dir/Makefile
1880:
1.1 root 1881:
1882: echo "# Automatically generated by configure - do not modify" > $config_mak
1883:
1884: echo "include ../config-host.mak" >> $config_mak
1885:
1.1.1.4 root 1886: bflt="no"
1.1.1.6 root 1887: elfload32="no"
1.1.1.7 root 1888: target_nptl="no"
1.1.1.9 root 1889: interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
1890: echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_mak
1.1.1.7 root 1891: gdb_xml_files=""
1.1 root 1892:
1.1.1.9 root 1893: TARGET_ARCH="$target_arch2"
1894: TARGET_BASE_ARCH=""
1895: TARGET_ABI_DIR=""
1.1.1.7 root 1896:
1.1.1.9 root 1897: case "$target_arch2" in
1.1.1.7 root 1898: i386)
1.1.1.9 root 1899: target_phys_bits=32
1.1.1.7 root 1900: ;;
1901: x86_64)
1.1.1.9 root 1902: TARGET_BASE_ARCH=i386
1903: target_phys_bits=64
1.1.1.7 root 1904: ;;
1905: alpha)
1.1.1.9 root 1906: target_phys_bits=64
1.1.1.7 root 1907: ;;
1908: arm|armeb)
1.1.1.9 root 1909: TARGET_ARCH=arm
1.1.1.7 root 1910: bflt="yes"
1911: target_nptl="yes"
1912: gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1.1.1.9 root 1913: target_phys_bits=32
1.1.1.7 root 1914: ;;
1915: cris)
1916: target_nptl="yes"
1.1.1.9 root 1917: target_phys_bits=32
1.1.1.7 root 1918: ;;
1919: m68k)
1920: bflt="yes"
1921: gdb_xml_files="cf-core.xml cf-fp.xml"
1.1.1.9 root 1922: target_phys_bits=32
1923: ;;
1924: microblaze)
1925: bflt="yes"
1926: target_nptl="yes"
1927: target_phys_bits=32
1.1.1.7 root 1928: ;;
1929: mips|mipsel)
1.1.1.9 root 1930: TARGET_ARCH=mips
1931: echo "TARGET_ABI_MIPSO32=y" >> $config_mak
1932: target_nptl="yes"
1933: target_phys_bits=64
1.1.1.7 root 1934: ;;
1935: mipsn32|mipsn32el)
1.1.1.9 root 1936: TARGET_ARCH=mipsn32
1937: TARGET_BASE_ARCH=mips
1938: echo "TARGET_ABI_MIPSN32=y" >> $config_mak
1939: target_phys_bits=64
1.1.1.7 root 1940: ;;
1941: mips64|mips64el)
1.1.1.9 root 1942: TARGET_ARCH=mips64
1943: TARGET_BASE_ARCH=mips
1944: echo "TARGET_ABI_MIPSN64=y" >> $config_mak
1945: target_phys_bits=64
1.1.1.7 root 1946: ;;
1947: ppc)
1948: gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 1949: target_phys_bits=32
1.1.1.7 root 1950: ;;
1951: ppcemb)
1.1.1.9 root 1952: TARGET_BASE_ARCH=ppc
1953: TARGET_ABI_DIR=ppc
1.1.1.7 root 1954: gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 1955: target_phys_bits=64
1.1.1.7 root 1956: ;;
1957: ppc64)
1.1.1.9 root 1958: TARGET_BASE_ARCH=ppc
1959: TARGET_ABI_DIR=ppc
1.1.1.7 root 1960: gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 1961: target_phys_bits=64
1.1.1.7 root 1962: ;;
1963: ppc64abi32)
1.1.1.9 root 1964: TARGET_ARCH=ppc64
1965: TARGET_BASE_ARCH=ppc
1966: TARGET_ABI_DIR=ppc
1967: echo "TARGET_ABI32=y" >> $config_mak
1.1.1.7 root 1968: gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 1969: target_phys_bits=64
1.1.1.7 root 1970: ;;
1971: sh4|sh4eb)
1.1.1.9 root 1972: TARGET_ARCH=sh4
1.1.1.7 root 1973: bflt="yes"
1974: target_nptl="yes"
1.1.1.9 root 1975: target_phys_bits=32
1.1.1.7 root 1976: ;;
1977: sparc)
1.1.1.9 root 1978: target_phys_bits=64
1.1.1.7 root 1979: ;;
1980: sparc64)
1.1.1.9 root 1981: TARGET_BASE_ARCH=sparc
1.1.1.7 root 1982: elfload32="yes"
1.1.1.9 root 1983: target_phys_bits=64
1.1.1.7 root 1984: ;;
1985: sparc32plus)
1.1.1.9 root 1986: TARGET_ARCH=sparc64
1987: TARGET_BASE_ARCH=sparc
1988: TARGET_ABI_DIR=sparc
1989: echo "TARGET_ABI32=y" >> $config_mak
1990: target_phys_bits=64
1.1.1.7 root 1991: ;;
1992: *)
1993: echo "Unsupported target CPU"
1994: exit 1
1995: ;;
1996: esac
1.1.1.9 root 1997: echo "TARGET_ARCH=$TARGET_ARCH" >> $config_mak
1998: echo "TARGET_ARCH2=$target_arch2" >> $config_mak
1999: # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
2000: if [ "$TARGET_BASE_ARCH" = "" ]; then
2001: TARGET_BASE_ARCH=$TARGET_ARCH
2002: fi
2003: echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_mak
2004: if [ "$TARGET_ABI_DIR" = "" ]; then
2005: TARGET_ABI_DIR=$TARGET_ARCH
2006: fi
2007: echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_mak
2008: if [ $target_phys_bits -lt $hostlongbits ] ; then
2009: target_phys_bits=$hostlongbits
2010: fi
2011: case "$target_arch2" in
2012: i386|x86_64)
2013: if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
2014: echo "CONFIG_XEN=y" >> $config_mak
2015: fi
2016: if test $kqemu = "yes" -a "$target_softmmu" = "yes"
2017: then
2018: echo "CONFIG_KQEMU=y" >> $config_mak
2019: fi
2020: esac
2021: case "$target_arch2" in
2022: i386|x86_64|ppcemb)
2023: # Make sure the target and host cpus are compatible
2024: if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
2025: \( "$target_arch2" = "$cpu" -o \
2026: \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
2027: \( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \
2028: \( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then
2029: echo "CONFIG_KVM=y" >> $config_mak
2030: echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak
2031: fi
2032: esac
2033: echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak
2034: echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_mak
2035: echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
1.1 root 2036: if test "$target_bigendian" = "yes" ; then
1.1.1.9 root 2037: echo "TARGET_WORDS_BIGENDIAN=y" >> $config_mak
1.1 root 2038: fi
2039: if test "$target_softmmu" = "yes" ; then
1.1.1.9 root 2040: echo "CONFIG_SOFTMMU=y" >> $config_mak
1.1 root 2041: fi
2042: if test "$target_user_only" = "yes" ; then
1.1.1.9 root 2043: echo "CONFIG_USER_ONLY=y" >> $config_mak
1.1 root 2044: fi
1.1.1.5 root 2045: if test "$target_linux_user" = "yes" ; then
1.1.1.9 root 2046: echo "CONFIG_LINUX_USER=y" >> $config_mak
1.1.1.5 root 2047: fi
2048: if test "$target_darwin_user" = "yes" ; then
1.1.1.9 root 2049: echo "CONFIG_DARWIN_USER=y" >> $config_mak
1.1.1.5 root 2050: fi
1.1.1.7 root 2051: list=""
2052: if test ! -z "$gdb_xml_files" ; then
2053: for x in $gdb_xml_files; do
2054: list="$list $source_path/gdb-xml/$x"
2055: done
2056: fi
2057: echo "TARGET_XML_FILES=$list" >> $config_mak
2058:
1.1.1.9 root 2059: case "$target_arch2" in
2060: arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|sparc|sparc64|sparc32plus)
2061: echo "CONFIG_SOFTFLOAT=y" >> $config_mak
2062: ;;
2063: esac
2064:
1.1.1.4 root 2065: if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1.1.1.9 root 2066: echo "TARGET_HAS_BFLT=y" >> $config_mak
1.1.1.4 root 2067: fi
1.1.1.7 root 2068: if test "$target_user_only" = "yes" \
2069: -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1.1.1.9 root 2070: echo "USE_NPTL=y" >> $config_mak
1.1.1.7 root 2071: fi
1.1.1.6 root 2072: # 32 bit ELF loader in addition to native 64 bit loader?
2073: if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1.1.1.9 root 2074: echo "TARGET_HAS_ELFLOAD32=y" >> $config_mak
1.1 root 2075: fi
1.1.1.7 root 2076: if test "$target_bsd_user" = "yes" ; then
1.1.1.9 root 2077: echo "CONFIG_BSD_USER=y" >> $config_mak
1.1.1.7 root 2078: fi
1.1 root 2079:
1.1.1.9 root 2080: $source_path/create_config < $config_mak > $config_h
2081:
1.1.1.6 root 2082: test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1.1 root 2083:
2084: done # for target in $targets
2085:
2086: # build tree in object directory if source path is different from current one
2087: if test "$source_path_used" = "yes" ; then
1.1.1.9 root 2088: DIRS="tests tests/cris slirp audio block pc-bios/optionrom"
1.1 root 2089: FILES="Makefile tests/Makefile"
1.1.1.6 root 2090: FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1.1.1.7 root 2091: FILES="$FILES tests/test-mmap.c"
1.1.1.9 root 2092: FILES="$FILES pc-bios/optionrom/Makefile"
1.1 root 2093: for dir in $DIRS ; do
2094: mkdir -p $dir
2095: done
1.1.1.3 root 2096: # remove the link and recreate it, as not all "ln -sf" overwrite the link
1.1 root 2097: for f in $FILES ; do
1.1.1.3 root 2098: rm -f $f
2099: ln -s $source_path/$f $f
1.1 root 2100: done
2101: fi
1.1.1.9 root 2102:
2103: for hwlib in 32 64; do
2104: d=libhw$hwlib
2105: mkdir -p $d
2106: rm -f $d/Makefile
2107: ln -s $source_path/Makefile.hw $d/Makefile
2108: echo "HWLIB=libqemuhw$hwlib.a" > $d/config.mak
2109: echo "CPPFLAGS=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
2110: done
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.