|
|
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"
1.1.1.11 root 16: TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
1.1.1.7 root 17:
1.1.1.11 root 18: trap "rm -f $TMPC $TMPO $TMPE ; exit" 0 2 3 15
19:
20: compile_object() {
21: $cc $QEMU_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
22: }
23:
24: compile_prog() {
25: local_cflags="$1"
26: local_ldflags="$2"
27: $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags > /dev/null 2> /dev/null
28: }
1.1 root 29:
30: # default parameters
1.1.1.11 root 31: cpu=""
1.1 root 32: prefix=""
33: interp_prefix="/usr/gnemul/qemu-%M"
34: static="no"
1.1.1.11 root 35: sparc_cpu=""
1.1 root 36: cross_prefix=""
37: cc="gcc"
1.1.1.7 root 38: audio_drv_list=""
39: audio_card_list="ac97 es1370 sb16"
40: audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
1.1.1.11 root 41: block_drv_whitelist=""
1.1 root 42: host_cc="gcc"
43: ar="ar"
44: make="make"
1.1.1.3 root 45: install="install"
1.1.1.9 root 46: objcopy="objcopy"
47: ld="ld"
1.1.1.11 root 48: helper_cflags=""
49: libs_softmmu=""
50: libs_tools=""
51: audio_pt_int=""
52: audio_win_int=""
1.1.1.7 root 53:
54: # parse CC options first
55: for opt do
56: optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
57: case "$opt" in
58: --cross-prefix=*) cross_prefix="$optarg"
59: ;;
60: --cc=*) cc="$optarg"
61: ;;
1.1.1.11 root 62: --cpu=*) cpu="$optarg"
63: ;;
64: --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
65: ;;
66: --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
67: ;;
68: --sparc_cpu=*)
69: sparc_cpu="$optarg"
70: case $sparc_cpu in
71: v7|v8|v8plus|v8plusa)
72: cpu="sparc"
73: ;;
74: v9)
75: cpu="sparc64"
76: ;;
77: *)
78: echo "undefined SPARC architecture. Exiting";
79: exit 1
80: ;;
81: esac
82: ;;
1.1.1.7 root 83: esac
84: done
85: # OS specific
86: # Using uname is really, really broken. Once we have the right set of checks
87: # we can eliminate it's usage altogether
88:
89: cc="${cross_prefix}${cc}"
90: ar="${cross_prefix}${ar}"
1.1.1.9 root 91: objcopy="${cross_prefix}${objcopy}"
92: ld="${cross_prefix}${ld}"
1.1.1.7 root 93:
1.1.1.11 root 94: # default flags for all hosts
95: QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
96: CFLAGS="-g $CFLAGS"
97: QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
98: QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
99: QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
100: QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS"
101: QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
102: LDFLAGS="-g $LDFLAGS"
103:
104: gcc_flags="-Wold-style-declaration -Wold-style-definition"
105: cat > $TMPC << EOF
106: int main(void) { }
107: EOF
108: for flag in $gcc_flags; do
109: if compile_prog "$QEMU_CFLAGS" "$flag" ; then
110: QEMU_CFLAGS="$flag $QEMU_CFLAGS"
111: fi
112: done
113:
1.1.1.7 root 114: # check that the C compiler works.
115: cat > $TMPC <<EOF
116: int main(void) {}
117: EOF
118:
1.1.1.11 root 119: if compile_object ; then
1.1.1.7 root 120: : C compiler works ok
121: else
122: echo "ERROR: \"$cc\" either does not exist or does not work"
123: exit 1
124: fi
125:
126: check_define() {
127: cat > $TMPC <<EOF
128: #if !defined($1)
129: #error Not defined
130: #endif
131: int main(void) { return 0; }
132: EOF
1.1.1.11 root 133: compile_object
1.1.1.7 root 134: }
135:
1.1.1.11 root 136: if test ! -z "$cpu" ; then
137: # command line argument
138: :
139: elif check_define __i386__ ; then
1.1.1.7 root 140: cpu="i386"
141: elif check_define __x86_64__ ; then
142: cpu="x86_64"
143: elif check_define __sparc__ ; then
144: # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
145: # They must be specified using --sparc_cpu
146: if check_define __arch64__ ; then
147: cpu="sparc64"
148: else
149: cpu="sparc"
150: fi
151: elif check_define _ARCH_PPC ; then
152: if check_define _ARCH_PPC64 ; then
153: cpu="ppc64"
154: else
155: cpu="ppc"
156: fi
1.1.1.11 root 157: elif check_define __mips__ ; then
158: cpu="mips"
1.1.1.7 root 159: else
160: cpu=`uname -m`
161: fi
162:
1.1 root 163: target_list=""
164: case "$cpu" in
1.1.1.11 root 165: alpha|cris|ia64|m68k|microblaze|ppc|ppc64|sparc64)
166: cpu="$cpu"
167: ;;
1.1 root 168: i386|i486|i586|i686|i86pc|BePC)
169: cpu="i386"
170: ;;
1.1.1.7 root 171: x86_64|amd64)
172: cpu="x86_64"
173: ;;
1.1 root 174: armv*b)
175: cpu="armv4b"
176: ;;
177: armv*l)
178: cpu="armv4l"
179: ;;
1.1.1.7 root 180: parisc|parisc64)
181: cpu="hppa"
1.1 root 182: ;;
1.1.1.11 root 183: mips*)
1.1 root 184: cpu="mips"
185: ;;
1.1.1.11 root 186: s390)
1.1 root 187: cpu="s390"
188: ;;
1.1.1.11 root 189: s390x)
190: cpu="s390x"
191: ;;
1.1.1.6 root 192: sparc|sun4[cdmuv])
1.1 root 193: cpu="sparc"
194: ;;
195: *)
196: cpu="unknown"
197: ;;
198: esac
1.1.1.11 root 199:
200: # Default value for a variable defining feature "foo".
201: # * foo="no" feature will only be used if --enable-foo arg is given
202: # * foo="" feature will be searched for, and if found, will be used
203: # unless --disable-foo is given
204: # * foo="yes" this value will only be set by --enable-foo flag.
205: # feature will searched for,
206: # if not found, configure exits with error
207: #
208: # Always add --enable-foo and --disable-foo command line args.
209: # Distributions want to ensure that several features are compiled in, and it
210: # is impossible without a --enable-foo that exits if a feature is not found.
211:
212: bluez=""
213: brlapi=""
214: curl=""
215: curses=""
216: docs=""
217: fdt=""
218: kvm=""
219: nptl=""
220: sdl=""
221: sparse="no"
222: uuid=""
223: vde=""
224: vnc_tls=""
225: vnc_sasl=""
226: xen=""
227: linux_aio=""
228:
1.1 root 229: gprof="no"
1.1.1.9 root 230: debug_tcg="no"
231: debug="no"
232: strip_opt="yes"
1.1 root 233: bigendian="no"
234: mingw32="no"
235: EXESUF=""
236: slirp="yes"
237: fmod_lib=""
238: fmod_inc=""
1.1.1.7 root 239: oss_lib=""
1.1.1.3 root 240: bsd="no"
1.1 root 241: linux="no"
1.1.1.7 root 242: solaris="no"
1.1.1.3 root 243: profiler="no"
1.1 root 244: cocoa="no"
1.1.1.3 root 245: softmmu="yes"
1.1.1.5 root 246: linux_user="no"
247: darwin_user="no"
1.1.1.7 root 248: bsd_user="no"
1.1.1.11 root 249: guest_base=""
1.1.1.4 root 250: uname_release=""
1.1.1.9 root 251: io_thread="no"
1.1.1.7 root 252: mixemu="no"
253: kerneldir=""
254: aix="no"
255: blobs="yes"
1.1.1.9 root 256: pkgversion=""
1.1.1.11 root 257: check_utests="no"
258: user_pie="no"
259: zero_malloc=""
1.1 root 260:
261: # OS specific
1.1.1.7 root 262: if check_define __linux__ ; then
263: targetos="Linux"
264: elif check_define _WIN32 ; then
265: targetos='MINGW32'
1.1.1.9 root 266: elif check_define __OpenBSD__ ; then
267: targetos='OpenBSD'
268: elif check_define __sun__ ; then
269: targetos='SunOS'
1.1.1.7 root 270: else
271: targetos=`uname -s`
272: fi
1.1.1.11 root 273:
1.1 root 274: case $targetos in
275: CYGWIN*)
1.1.1.11 root 276: mingw32="yes"
277: QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
278: audio_possible_drivers="winwave sdl"
279: audio_drv_list="winwave"
1.1 root 280: ;;
281: MINGW32*)
1.1.1.11 root 282: mingw32="yes"
283: audio_possible_drivers="winwave dsound sdl fmod"
284: audio_drv_list="winwave"
1.1.1.6 root 285: ;;
286: GNU/kFreeBSD)
1.1.1.11 root 287: bsd="yes"
288: audio_drv_list="oss"
289: audio_possible_drivers="oss sdl esd pa"
1.1 root 290: ;;
291: FreeBSD)
1.1.1.11 root 292: bsd="yes"
293: make="gmake"
294: audio_drv_list="oss"
295: audio_possible_drivers="oss sdl esd pa"
1.1 root 296: ;;
1.1.1.9 root 297: DragonFly)
1.1.1.11 root 298: bsd="yes"
299: make="gmake"
300: audio_drv_list="oss"
301: audio_possible_drivers="oss sdl esd pa"
1.1.1.9 root 302: ;;
1.1 root 303: NetBSD)
1.1.1.11 root 304: bsd="yes"
305: make="gmake"
306: audio_drv_list="oss"
307: audio_possible_drivers="oss sdl esd"
308: oss_lib="-lossaudio"
1.1 root 309: ;;
310: OpenBSD)
1.1.1.11 root 311: bsd="yes"
312: make="gmake"
313: audio_drv_list="oss"
314: audio_possible_drivers="oss sdl esd"
315: oss_lib="-lossaudio"
1.1 root 316: ;;
317: Darwin)
1.1.1.11 root 318: bsd="yes"
319: darwin="yes"
320: # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can
321: # run 64-bit userspace code
322: if [ "$cpu" = "i386" ] ; then
1.1.1.7 root 323: is_x86_64=`sysctl -n hw.optional.x86_64`
324: [ "$is_x86_64" = "1" ] && cpu=x86_64
1.1.1.11 root 325: fi
326: if [ "$cpu" = "x86_64" ] ; then
327: QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
328: LDFLAGS="-arch x86_64 $LDFLAGS"
329: else
330: QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
331: fi
332: darwin_user="yes"
333: cocoa="yes"
334: audio_drv_list="coreaudio"
335: audio_possible_drivers="coreaudio sdl fmod"
336: LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
337: libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
1.1 root 338: ;;
1.1.1.3 root 339: SunOS)
1.1.1.11 root 340: solaris="yes"
341: make="gmake"
342: install="ginstall"
343: ld="gld"
344: needs_libsunmath="no"
345: solarisrev=`uname -r | cut -f2 -d.`
346: # have to select again, because `uname -m` returns i86pc
347: # even on an x86_64 box.
348: solariscpu=`isainfo -k`
349: if test "${solariscpu}" = "amd64" ; then
350: cpu="x86_64"
351: fi
352: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
353: if test "$solarisrev" -le 9 ; then
354: if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
355: needs_libsunmath="yes"
356: QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
357: LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
358: LIBS="-lsunmath $LIBS"
359: else
360: echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
361: echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
362: echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
363: echo "Studio 11 can be downloaded from www.sun.com."
364: exit 1
365: fi
1.1.1.6 root 366: fi
1.1.1.11 root 367: fi
368: if test -f /usr/include/sys/soundcard.h ; then
369: audio_drv_list="oss"
370: fi
371: audio_possible_drivers="oss sdl"
372: # needed for CMSG_ macros in sys/socket.h
373: QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
374: # needed for TIOCWIN* defines in termios.h
375: QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
376: QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
377: LIBS="-lsocket -lnsl -lresolv $LIBS"
1.1.1.7 root 378: ;;
379: AIX)
1.1.1.11 root 380: aix="yes"
381: make="gmake"
1.1.1.3 root 382: ;;
1.1.1.2 root 383: *)
1.1.1.11 root 384: audio_drv_list="oss"
385: audio_possible_drivers="oss alsa sdl esd pa"
386: linux="yes"
387: linux_user="yes"
388: usb="linux"
389: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
1.1.1.7 root 390: audio_possible_drivers="$audio_possible_drivers fmod"
1.1.1.11 root 391: fi
1.1 root 392: ;;
393: esac
394:
395: if [ "$bsd" = "yes" ] ; then
1.1.1.3 root 396: if [ "$darwin" != "yes" ] ; then
1.1.1.7 root 397: usb="bsd"
1.1 root 398: fi
1.1.1.7 root 399: bsd_user="yes"
1.1 root 400: fi
401:
1.1.1.11 root 402: if test "$mingw32" = "yes" ; then
403: EXESUF=".exe"
404: QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
405: LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
406: fi
407:
1.1 root 408: # find source path
1.1.1.3 root 409: source_path=`dirname "$0"`
1.1.1.7 root 410: source_path_used="no"
411: workdir=`pwd`
1.1.1.3 root 412: if [ -z "$source_path" ]; then
1.1.1.7 root 413: source_path=$workdir
1.1.1.3 root 414: else
415: source_path=`cd "$source_path"; pwd`
416: fi
1.1.1.7 root 417: [ -f "$workdir/vl.c" ] || source_path_used="yes"
1.1 root 418:
1.1.1.9 root 419: werror=""
1.1.1.6 root 420:
1.1 root 421: for opt do
1.1.1.3 root 422: optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
1.1 root 423: case "$opt" in
1.1.1.2 root 424: --help|-h) show_help=yes
425: ;;
1.1.1.3 root 426: --prefix=*) prefix="$optarg"
1.1 root 427: ;;
1.1.1.3 root 428: --interp-prefix=*) interp_prefix="$optarg"
1.1 root 429: ;;
1.1.1.3 root 430: --source-path=*) source_path="$optarg"
431: source_path_used="yes"
1.1 root 432: ;;
1.1.1.7 root 433: --cross-prefix=*)
1.1 root 434: ;;
1.1.1.7 root 435: --cc=*)
1.1 root 436: ;;
1.1.1.3 root 437: --host-cc=*) host_cc="$optarg"
1.1 root 438: ;;
1.1.1.3 root 439: --make=*) make="$optarg"
1.1 root 440: ;;
1.1.1.3 root 441: --install=*) install="$optarg"
1.1 root 442: ;;
1.1.1.11 root 443: --extra-cflags=*)
1.1 root 444: ;;
1.1.1.11 root 445: --extra-ldflags=*)
1.1 root 446: ;;
1.1.1.11 root 447: --cpu=*)
1.1.1.3 root 448: ;;
449: --target-list=*) target_list="$optarg"
1.1 root 450: ;;
451: --enable-gprof) gprof="yes"
452: ;;
453: --static) static="yes"
454: ;;
455: --disable-sdl) sdl="no"
456: ;;
1.1.1.11 root 457: --enable-sdl) sdl="yes"
458: ;;
1.1.1.7 root 459: --fmod-lib=*) fmod_lib="$optarg"
1.1.1.2 root 460: ;;
1.1.1.7 root 461: --fmod-inc=*) fmod_inc="$optarg"
1.1.1.2 root 462: ;;
1.1.1.7 root 463: --oss-lib=*) oss_lib="$optarg"
1.1.1.2 root 464: ;;
1.1.1.7 root 465: --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
1.1 root 466: ;;
1.1.1.7 root 467: --audio-drv-list=*) audio_drv_list="$optarg"
1.1 root 468: ;;
1.1.1.11 root 469: --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
470: ;;
1.1.1.9 root 471: --enable-debug-tcg) debug_tcg="yes"
472: ;;
473: --disable-debug-tcg) debug_tcg="no"
474: ;;
475: --enable-debug)
476: # Enable debugging options that aren't excessively noisy
477: debug_tcg="yes"
478: debug="yes"
479: strip_opt="no"
480: ;;
1.1.1.7 root 481: --enable-sparse) sparse="yes"
1.1 root 482: ;;
1.1.1.7 root 483: --disable-sparse) sparse="no"
1.1.1.6 root 484: ;;
1.1.1.9 root 485: --disable-strip) strip_opt="no"
486: ;;
1.1.1.7 root 487: --disable-vnc-tls) vnc_tls="no"
1.1.1.2 root 488: ;;
1.1.1.11 root 489: --enable-vnc-tls) vnc_tls="yes"
490: ;;
1.1.1.9 root 491: --disable-vnc-sasl) vnc_sasl="no"
492: ;;
1.1.1.11 root 493: --enable-vnc-sasl) vnc_sasl="yes"
494: ;;
1.1 root 495: --disable-slirp) slirp="no"
1.1.1.2 root 496: ;;
1.1.1.11 root 497: --disable-uuid) uuid="no"
498: ;;
499: --enable-uuid) uuid="yes"
500: ;;
1.1.1.7 root 501: --disable-vde) vde="no"
1.1.1.2 root 502: ;;
1.1.1.11 root 503: --enable-vde) vde="yes"
1.1.1.2 root 504: ;;
1.1.1.9 root 505: --disable-xen) xen="no"
506: ;;
1.1.1.11 root 507: --enable-xen) xen="yes"
508: ;;
1.1.1.7 root 509: --disable-brlapi) brlapi="no"
510: ;;
1.1.1.11 root 511: --enable-brlapi) brlapi="yes"
512: ;;
1.1.1.7 root 513: --disable-bluez) bluez="no"
514: ;;
1.1.1.11 root 515: --enable-bluez) bluez="yes"
516: ;;
1.1.1.7 root 517: --disable-kvm) kvm="no"
518: ;;
1.1.1.11 root 519: --enable-kvm) kvm="yes"
520: ;;
1.1.1.3 root 521: --enable-profiler) profiler="yes"
522: ;;
1.1.1.7 root 523: --enable-cocoa)
524: cocoa="yes" ;
525: sdl="no" ;
526: audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
1.1.1.2 root 527: ;;
1.1.1.3 root 528: --disable-system) softmmu="no"
529: ;;
530: --enable-system) softmmu="yes"
531: ;;
1.1.1.11 root 532: --disable-user)
533: linux_user="no" ;
534: bsd_user="no" ;
535: darwin_user="no"
536: ;;
537: --enable-user) ;;
1.1.1.5 root 538: --disable-linux-user) linux_user="no"
1.1.1.3 root 539: ;;
1.1.1.5 root 540: --enable-linux-user) linux_user="yes"
1.1.1.3 root 541: ;;
1.1.1.5 root 542: --disable-darwin-user) darwin_user="no"
543: ;;
544: --enable-darwin-user) darwin_user="yes"
1.1.1.4 root 545: ;;
1.1.1.7 root 546: --disable-bsd-user) bsd_user="no"
547: ;;
548: --enable-bsd-user) bsd_user="yes"
549: ;;
1.1.1.11 root 550: --enable-guest-base) guest_base="yes"
551: ;;
552: --disable-guest-base) guest_base="no"
553: ;;
554: --enable-user-pie) user_pie="yes"
555: ;;
556: --disable-user-pie) user_pie="no"
557: ;;
1.1.1.5 root 558: --enable-uname-release=*) uname_release="$optarg"
1.1.1.4 root 559: ;;
1.1.1.6 root 560: --sparc_cpu=*)
561: ;;
562: --enable-werror) werror="yes"
563: ;;
564: --disable-werror) werror="no"
565: ;;
1.1.1.7 root 566: --disable-curses) curses="no"
567: ;;
1.1.1.11 root 568: --enable-curses) curses="yes"
569: ;;
1.1.1.9 root 570: --disable-curl) curl="no"
571: ;;
1.1.1.11 root 572: --enable-curl) curl="yes"
573: ;;
574: --disable-fdt) fdt="no"
575: ;;
576: --enable-fdt) fdt="yes"
577: ;;
578: --disable-check-utests) check_utests="no"
579: ;;
580: --enable-check-utests) check_utests="yes"
581: ;;
1.1.1.7 root 582: --disable-nptl) nptl="no"
583: ;;
1.1.1.11 root 584: --enable-nptl) nptl="yes"
585: ;;
1.1.1.7 root 586: --enable-mixemu) mixemu="yes"
587: ;;
1.1.1.11 root 588: --disable-linux-aio) linux_aio="no"
1.1.1.9 root 589: ;;
1.1.1.11 root 590: --enable-linux-aio) linux_aio="yes"
1.1.1.7 root 591: ;;
1.1.1.9 root 592: --enable-io-thread) io_thread="yes"
593: ;;
1.1.1.7 root 594: --disable-blobs) blobs="no"
595: ;;
596: --kerneldir=*) kerneldir="$optarg"
597: ;;
1.1.1.9 root 598: --with-pkgversion=*) pkgversion=" ($optarg)"
599: ;;
1.1.1.11 root 600: --disable-docs) docs="no"
601: ;;
602: --enable-docs) docs="yes"
1.1.1.9 root 603: ;;
1.1.1.6 root 604: *) echo "ERROR: unknown option $opt"; show_help="yes"
605: ;;
1.1 root 606: esac
607: done
608:
1.1.1.6 root 609: #
610: # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
1.1.1.11 root 611: # QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
1.1.1.6 root 612: #
1.1.1.11 root 613: host_guest_base="no"
1.1.1.7 root 614: case "$cpu" in
1.1.1.11 root 615: sparc) case $sparc_cpu in
616: v7|v8)
617: QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
618: ;;
619: v8plus|v8plusa)
620: QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
621: ;;
622: *) # sparc_cpu not defined in the command line
623: QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
624: esac
625: LDFLAGS="-m32 $LDFLAGS"
626: QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
1.1.1.9 root 627: if test "$solaris" = "no" ; then
1.1.1.11 root 628: QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
629: helper_cflags="-ffixed-i0"
1.1.1.9 root 630: fi
1.1.1.6 root 631: ;;
1.1.1.11 root 632: sparc64)
633: QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
634: LDFLAGS="-m64 $LDFLAGS"
635: QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
636: if test "$solaris" != "no" ; then
637: QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
1.1.1.9 root 638: fi
1.1.1.6 root 639: ;;
640: s390)
1.1.1.11 root 641: QEMU_CFLAGS="-march=z900 $QEMU_CFLAGS"
1.1.1.6 root 642: ;;
1.1.1.7 root 643: i386)
1.1.1.11 root 644: QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
645: LDFLAGS="-m32 $LDFLAGS"
646: helper_cflags="-fomit-frame-pointer"
647: host_guest_base="yes"
1.1.1.7 root 648: ;;
649: x86_64)
1.1.1.11 root 650: QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
651: LDFLAGS="-m64 $LDFLAGS"
652: host_guest_base="yes"
653: ;;
654: arm*)
655: host_guest_base="yes"
656: ;;
657: ppc*)
658: host_guest_base="yes"
1.1.1.7 root 659: ;;
1.1.1.6 root 660: esac
661:
1.1.1.11 root 662: [ -z "$guest_base" ] && guest_base="$host_guest_base"
663:
1.1.1.3 root 664: if test x"$show_help" = x"yes" ; then
665: cat << EOF
666:
667: Usage: configure [options]
668: Options: [defaults in brackets after descriptions]
669:
670: EOF
671: echo "Standard options:"
672: echo " --help print this message"
673: echo " --prefix=PREFIX install in PREFIX [$prefix]"
674: echo " --interp-prefix=PREFIX where to find shared libraries, etc."
675: echo " use %M for cpu name [$interp_prefix]"
676: echo " --target-list=LIST set target list [$target_list]"
677: echo ""
678: echo "Advanced options (experts only):"
679: echo " --source-path=PATH path of source code [$source_path]"
680: echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
681: echo " --cc=CC use C compiler CC [$cc]"
682: echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
1.1.1.11 root 683: echo " --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS"
1.1.1.9 root 684: echo " --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS"
1.1.1.3 root 685: echo " --make=MAKE use specified make [$make]"
686: echo " --install=INSTALL use specified install [$install]"
687: echo " --static enable static build [$static]"
1.1.1.9 root 688: echo " --enable-debug-tcg enable TCG debugging"
689: echo " --disable-debug-tcg disable TCG debugging (default)"
690: echo " --enable-debug enable common debug build options"
1.1.1.7 root 691: echo " --enable-sparse enable sparse checker"
692: echo " --disable-sparse disable sparse checker (default)"
1.1.1.9 root 693: echo " --disable-strip disable stripping binaries"
1.1.1.6 root 694: echo " --disable-werror disable compilation abort on warning"
695: echo " --disable-sdl disable SDL"
1.1.1.11 root 696: echo " --enable-sdl enable SDL"
1.1.1.3 root 697: echo " --enable-cocoa enable COCOA (Mac OS X only)"
1.1.1.7 root 698: echo " --audio-drv-list=LIST set audio drivers list:"
699: echo " Available drivers: $audio_possible_drivers"
700: echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_list]"
701: echo " Available cards: $audio_possible_cards"
1.1.1.11 root 702: echo " --block-drv-whitelist=L set block driver whitelist"
703: echo " (affects only QEMU, not qemu-img)"
1.1.1.7 root 704: echo " --enable-mixemu enable mixer emulation"
1.1.1.9 root 705: echo " --disable-xen disable xen backend driver support"
1.1.1.11 root 706: echo " --enable-xen enable xen backend driver support"
1.1.1.7 root 707: echo " --disable-brlapi disable BrlAPI"
1.1.1.11 root 708: echo " --enable-brlapi enable BrlAPI"
1.1.1.6 root 709: echo " --disable-vnc-tls disable TLS encryption for VNC server"
1.1.1.11 root 710: echo " --enable-vnc-tls enable TLS encryption for VNC server"
1.1.1.9 root 711: echo " --disable-vnc-sasl disable SASL encryption for VNC server"
1.1.1.11 root 712: echo " --enable-vnc-sasl enable SASL encryption for VNC server"
1.1.1.7 root 713: echo " --disable-curses disable curses output"
1.1.1.11 root 714: echo " --enable-curses enable curses output"
1.1.1.9 root 715: echo " --disable-curl disable curl connectivity"
1.1.1.11 root 716: echo " --enable-curl enable curl connectivity"
717: echo " --disable-fdt disable fdt device tree"
718: echo " --enable-fdt enable fdt device tree"
719: echo " --disable-check-utests disable check unit-tests"
720: echo " --enable-check-utests enable check unit-tests"
1.1.1.7 root 721: echo " --disable-bluez disable bluez stack connectivity"
1.1.1.11 root 722: echo " --enable-bluez enable bluez stack connectivity"
1.1.1.7 root 723: echo " --disable-kvm disable KVM acceleration support"
1.1.1.11 root 724: echo " --enable-kvm enable KVM acceleration support"
1.1.1.7 root 725: echo " --disable-nptl disable usermode NPTL support"
1.1.1.11 root 726: echo " --enable-nptl enable usermode NPTL support"
1.1.1.3 root 727: echo " --enable-system enable all system emulation targets"
728: echo " --disable-system disable all system emulation targets"
1.1.1.11 root 729: echo " --enable-user enable supported user emulation targets"
730: echo " --disable-user disable all user emulation targets"
1.1.1.5 root 731: echo " --enable-linux-user enable all linux usermode emulation targets"
732: echo " --disable-linux-user disable all linux usermode emulation targets"
733: echo " --enable-darwin-user enable all darwin usermode emulation targets"
734: echo " --disable-darwin-user disable all darwin usermode emulation targets"
1.1.1.7 root 735: echo " --enable-bsd-user enable all BSD usermode emulation targets"
736: echo " --disable-bsd-user disable all BSD usermode emulation targets"
1.1.1.11 root 737: echo " --enable-guest-base enable GUEST_BASE support for usermode"
738: echo " emulation targets"
739: echo " --disable-guest-base disable GUEST_BASE support"
740: echo " --enable-user-pie build usermode emulation targets as PIE"
741: echo " --disable-user-pie do not build usermode emulation targets as PIE"
1.1.1.3 root 742: echo " --fmod-lib path to FMOD library"
743: echo " --fmod-inc path to FMOD includes"
1.1.1.7 root 744: echo " --oss-lib path to OSS library"
1.1.1.4 root 745: echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
1.1.1.6 root 746: echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
1.1.1.11 root 747: echo " --disable-uuid disable uuid support"
748: echo " --enable-uuid enable uuid support"
1.1.1.7 root 749: echo " --disable-vde disable support for vde network"
1.1.1.11 root 750: echo " --enable-vde enable support for vde network"
751: echo " --disable-linux-aio disable Linux AIO support"
752: echo " --enable-linux-aio enable Linux AIO support"
1.1.1.9 root 753: echo " --enable-io-thread enable IO thread"
1.1.1.7 root 754: echo " --disable-blobs disable installing provided firmware blobs"
755: echo " --kerneldir=PATH look for kernel includes in PATH"
1.1.1.3 root 756: echo ""
1.1.1.5 root 757: echo "NOTE: The object files are built at the place where configure is launched"
1.1.1.3 root 758: exit 1
759: fi
760:
761: #
762: # Solaris specific configure tool chain decisions
763: #
764: if test "$solaris" = "yes" ; then
765: solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
766: if test -z "$solinst" ; then
767: echo "Solaris install program not found. Use --install=/usr/ucb/install or"
768: echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
769: echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
770: exit 1
771: fi
772: if test "$solinst" = "/usr/sbin/install" ; then
773: echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
774: echo "try ginstall from the GNU fileutils available from www.blastwave.org"
775: echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
776: exit 1
777: fi
778: sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
779: if test -z "$sol_ar" ; then
780: echo "Error: No path includes ar"
781: if test -f /usr/ccs/bin/ar ; then
782: echo "Add /usr/ccs/bin to your path and rerun configure"
783: fi
784: exit 1
785: fi
1.1.1.6 root 786: fi
1.1.1.3 root 787:
788:
1.1 root 789: if test -z "$target_list" ; then
790: # these targets are portable
1.1.1.3 root 791: if [ "$softmmu" = "yes" ] ; then
1.1.1.7 root 792: target_list="\
793: i386-softmmu \
794: x86_64-softmmu \
795: arm-softmmu \
796: cris-softmmu \
797: m68k-softmmu \
1.1.1.9 root 798: microblaze-softmmu \
1.1.1.7 root 799: mips-softmmu \
800: mipsel-softmmu \
801: mips64-softmmu \
802: mips64el-softmmu \
803: ppc-softmmu \
804: ppcemb-softmmu \
805: ppc64-softmmu \
806: sh4-softmmu \
807: sh4eb-softmmu \
808: sparc-softmmu \
1.1.1.9 root 809: sparc64-softmmu \
1.1.1.7 root 810: "
1.1.1.3 root 811: fi
1.1 root 812: # the following are Linux specific
1.1.1.5 root 813: if [ "$linux_user" = "yes" ] ; then
1.1.1.7 root 814: target_list="${target_list}\
815: i386-linux-user \
816: x86_64-linux-user \
817: alpha-linux-user \
818: arm-linux-user \
819: armeb-linux-user \
820: cris-linux-user \
821: m68k-linux-user \
1.1.1.9 root 822: microblaze-linux-user \
1.1.1.7 root 823: mips-linux-user \
824: mipsel-linux-user \
825: ppc-linux-user \
826: ppc64-linux-user \
827: ppc64abi32-linux-user \
828: sh4-linux-user \
829: sh4eb-linux-user \
830: sparc-linux-user \
831: sparc64-linux-user \
832: sparc32plus-linux-user \
833: "
1.1.1.5 root 834: fi
835: # the following are Darwin specific
836: if [ "$darwin_user" = "yes" ] ; then
1.1.1.7 root 837: target_list="$target_list i386-darwin-user ppc-darwin-user "
838: fi
839: # the following are BSD specific
840: if [ "$bsd_user" = "yes" ] ; then
841: target_list="${target_list}\
1.1.1.9 root 842: i386-bsd-user \
843: x86_64-bsd-user \
844: sparc-bsd-user \
1.1.1.7 root 845: sparc64-bsd-user \
846: "
1.1 root 847: fi
848: else
1.1.1.3 root 849: target_list=`echo "$target_list" | sed -e 's/,/ /g'`
850: fi
851: if test -z "$target_list" ; then
852: echo "No targets enabled"
853: exit 1
1.1 root 854: fi
855:
1.1.1.11 root 856: feature_not_found() {
857: feature=$1
858:
859: echo "ERROR"
860: echo "ERROR: User requested feature $feature"
861: echo "ERROR: configure was not able to find it"
862: echo "ERROR"
863: exit 1;
864: }
865:
1.1 root 866: if test -z "$cross_prefix" ; then
867:
868: # ---
869: # big/little endian test
870: cat > $TMPC << EOF
871: #include <inttypes.h>
872: int main(int argc, char ** argv){
1.1.1.2 root 873: volatile uint32_t i=0x01234567;
874: return (*((uint8_t*)(&i))) == 0x67;
1.1 root 875: }
876: EOF
877:
1.1.1.11 root 878: if compile_prog "" "" ; then
1.1 root 879: $TMPE && bigendian="yes"
880: else
881: echo big/little test failed
882: fi
883:
884: else
885:
886: # if cross compiling, cannot launch a program, so make a static guess
1.1.1.11 root 887: case "$cpu" in
888: armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
889: bigendian=yes
890: ;;
891: esac
1.1 root 892:
893: fi
894:
895: # host long bits test
896: hostlongbits="32"
1.1.1.11 root 897: case "$cpu" in
898: x86_64|alpha|ia64|sparc64|ppc64|s390x)
899: hostlongbits=64
900: ;;
901: esac
1.1 root 902:
1.1.1.11 root 903:
904: ##########################################
905: # NPTL probe
906:
907: if test "$nptl" != "no" ; then
908: cat > $TMPC <<EOF
1.1.1.7 root 909: #include <sched.h>
910: #include <linux/futex.h>
911: void foo()
912: {
913: #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
914: #error bork
915: #endif
916: }
917: EOF
918:
1.1.1.11 root 919: if compile_object ; then
920: nptl=yes
921: else
922: if test "$nptl" = "yes" ; then
923: feature_not_found "nptl"
924: fi
925: nptl=no
926: fi
1.1.1.7 root 927: fi
928:
929: ##########################################
930: # zlib check
931:
932: cat > $TMPC << EOF
933: #include <zlib.h>
934: int main(void) { zlibVersion(); return 0; }
935: EOF
1.1.1.11 root 936: if compile_prog "" "-lz" ; then
1.1.1.7 root 937: :
938: else
939: echo
940: echo "Error: zlib check failed"
941: echo "Make sure to have the zlib libs and headers installed."
942: echo
943: exit 1
944: fi
945:
1.1 root 946: ##########################################
1.1.1.9 root 947: # xen probe
948:
1.1.1.11 root 949: if test "$xen" != "no" ; then
950: xen_libs="-lxenstore -lxenctrl -lxenguest"
951: cat > $TMPC <<EOF
1.1.1.9 root 952: #include <xenctrl.h>
953: #include <xs.h>
954: int main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
955: EOF
1.1.1.11 root 956: if compile_prog "" "$xen_libs" ; then
957: xen=yes
958: libs_softmmu="$xen_libs $libs_softmmu"
959: else
960: if test "$xen" = "yes" ; then
961: feature_not_found "xen"
962: fi
963: xen=no
964: fi
965: fi
966:
967: ##########################################
968: # Sparse probe
969: if test "$sparse" != "no" ; then
970: if test -x "$(which cgcc 2>/dev/null)"; then
971: sparse=yes
972: else
973: if test "$sparse" = "yes" ; then
974: feature_not_found "sparse"
975: fi
976: sparse=no
977: fi
1.1.1.9 root 978: fi
979:
980: ##########################################
1.1 root 981: # SDL probe
982:
983: sdl_too_old=no
984:
1.1.1.11 root 985: if test "$sdl" != "no" ; then
986: cat > $TMPC << EOF
1.1 root 987: #include <SDL.h>
988: #undef main /* We don't want SDL to override our main() */
989: int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
990: EOF
1.1.1.11 root 991: sdl_cflags=`sdl-config --cflags 2> /dev/null`
992: sdl_libs=`sdl-config --libs 2> /dev/null`
993: if compile_prog "$sdl_cflags" "$sdl_libs" ; then
994: _sdlversion=`sdl-config --version | sed 's/[^0-9]//g'`
995: if test "$_sdlversion" -lt 121 ; then
996: sdl_too_old=yes
997: else
998: if test "$cocoa" = "no" ; then
999: sdl=yes
1000: fi
1001: fi
1.1.1.7 root 1002:
1.1.1.11 root 1003: # static link with sdl ?
1004: if test "$sdl" = "yes" -a "$static" = "yes" ; then
1005: sdl_libs=`sdl-config --static-libs 2>/dev/null`
1006: if test `sdl-config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` ; then
1007: sdl_libs="$sdl_libs `aalib-config --static-libs >2 /dev/null`"
1008: sdl_cflags="$sd_cflags `aalib-config --cflags >2 /dev/null`"
1009: fi
1010: if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1011: :
1012: else
1013: sdl=no
1014: fi
1015: fi # static link
1016: else # sdl not found
1.1.1.6 root 1017: if test "$sdl" = "yes" ; then
1.1.1.11 root 1018: feature_not_found "sdl"
1.1.1.6 root 1019: fi
1.1.1.11 root 1020: sdl=no
1021: fi # sdl compile test
1022: fi
1.1 root 1023:
1.1.1.7 root 1024: if test "$sdl" = "yes" ; then
1.1.1.11 root 1025: cat > $TMPC <<EOF
1.1.1.7 root 1026: #include <SDL.h>
1027: #if defined(SDL_VIDEO_DRIVER_X11)
1028: #include <X11/XKBlib.h>
1029: #else
1030: #error No x11 support
1031: #endif
1032: int main(void) { return 0; }
1033: EOF
1.1.1.11 root 1034: if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1035: sdl_libs="$sdl_libs -lX11"
1036: fi
1037: if test "$mingw32" = "yes" ; then
1038: sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
1039: fi
1040: libs_softmmu="$sdl_libs $libs_softmmu"
1.1.1.7 root 1041: fi
1042:
1.1.1.6 root 1043: ##########################################
1044: # VNC TLS detection
1.1.1.11 root 1045: if test "$vnc_tls" != "no" ; then
1046: cat > $TMPC <<EOF
1.1.1.7 root 1047: #include <gnutls/gnutls.h>
1048: int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
1049: EOF
1.1.1.11 root 1050: vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
1051: vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
1052: if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
1053: vnc_tls=yes
1054: libs_softmmu="$vnc_tls_libs $libs_softmmu"
1055: else
1056: if test "$vnc_tls" = "yes" ; then
1057: feature_not_found "vnc-tls"
1.1.1.7 root 1058: fi
1.1.1.11 root 1059: vnc_tls=no
1060: fi
1.1.1.6 root 1061: fi
1.1.1.7 root 1062:
1063: ##########################################
1.1.1.9 root 1064: # VNC SASL detection
1.1.1.11 root 1065: if test "$vnc_sasl" != "no" ; then
1066: cat > $TMPC <<EOF
1.1.1.9 root 1067: #include <sasl/sasl.h>
1068: #include <stdio.h>
1069: int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
1070: EOF
1.1.1.11 root 1071: # Assuming Cyrus-SASL installed in /usr prefix
1072: vnc_sasl_cflags=""
1073: vnc_sasl_libs="-lsasl2"
1074: if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
1075: vnc_sasl=yes
1076: libs_softmmu="$vnc_sasl_libs $libs_softmmu"
1077: else
1078: if test "$vnc_sasl" = "yes" ; then
1079: feature_not_found "vnc-sasl"
1.1.1.9 root 1080: fi
1.1.1.11 root 1081: vnc_sasl=no
1082: fi
1.1.1.9 root 1083: fi
1084:
1085: ##########################################
1086: # fnmatch() probe, used for ACL routines
1087: fnmatch="no"
1088: cat > $TMPC << EOF
1089: #include <fnmatch.h>
1090: int main(void)
1091: {
1092: fnmatch("foo", "foo", 0);
1093: return 0;
1094: }
1095: EOF
1.1.1.11 root 1096: if compile_prog "" "" ; then
1.1.1.9 root 1097: fnmatch="yes"
1098: fi
1099:
1100: ##########################################
1.1.1.11 root 1101: # uuid_generate() probe, used for vdi block driver
1102: if test "$uuid" != "no" ; then
1103: uuid_libs="-luuid"
1104: cat > $TMPC << EOF
1105: #include <uuid/uuid.h>
1106: int main(void)
1107: {
1108: uuid_t my_uuid;
1109: uuid_generate(my_uuid);
1110: return 0;
1111: }
1112: EOF
1113: if compile_prog "" "$uuid_libs" ; then
1114: uuid="yes"
1115: libs_softmmu="$uuid_libs $libs_softmmu"
1116: libs_tools="$uuid_libs $libs_tools"
1117: else
1118: if test "$uuid" = "yes" ; then
1119: feature_not_found "uuid"
1120: fi
1121: uuid=no
1122: fi
1123: fi
1124:
1125: ##########################################
1.1.1.7 root 1126: # vde libraries probe
1.1.1.11 root 1127: if test "$vde" != "no" ; then
1128: vde_libs="-lvdeplug"
1.1.1.7 root 1129: cat > $TMPC << EOF
1130: #include <libvdeplug.h>
1131: int main(void)
1132: {
1133: struct vde_open_args a = {0, 0, 0};
1134: vde_open("", "", &a);
1135: return 0;
1136: }
1137: EOF
1.1.1.11 root 1138: if compile_prog "" "$vde_libs" ; then
1139: vde=yes
1140: libs_softmmu="$vde_libs $libs_softmmu"
1141: libs_tools="$vde_libs $libs_tools"
1142: else
1143: if test "$vde" = "yes" ; then
1144: feature_not_found "vde"
1.1.1.7 root 1145: fi
1.1.1.11 root 1146: vde=no
1147: fi
1.1 root 1148: fi
1149:
1.1.1.5 root 1150: ##########################################
1.1.1.7 root 1151: # Sound support libraries probe
1.1.1.5 root 1152:
1.1.1.7 root 1153: audio_drv_probe()
1154: {
1155: drv=$1
1156: hdr=$2
1157: lib=$3
1158: exp=$4
1159: cfl=$5
1160: cat > $TMPC << EOF
1161: #include <$hdr>
1162: int main(void) { $exp }
1163: EOF
1.1.1.11 root 1164: if compile_prog "$cfl" "$lib" ; then
1.1.1.7 root 1165: :
1166: else
1167: echo
1168: echo "Error: $drv check failed"
1169: echo "Make sure to have the $drv libs and headers installed."
1170: echo
1171: exit 1
1172: fi
1173: }
1174:
1175: audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1176: for drv in $audio_drv_list; do
1177: case $drv in
1178: alsa)
1179: audio_drv_probe $drv alsa/asoundlib.h -lasound \
1180: "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1.1.1.11 root 1181: libs_softmmu="-lasound $libs_softmmu"
1.1.1.7 root 1182: ;;
1183:
1184: fmod)
1185: if test -z $fmod_lib || test -z $fmod_inc; then
1186: echo
1187: echo "Error: You must specify path to FMOD library and headers"
1188: echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1189: echo
1190: exit 1
1191: fi
1192: audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1.1.1.11 root 1193: libs_softmmu="$fmod_lib $libs_softmmu"
1.1.1.7 root 1194: ;;
1195:
1196: esd)
1197: audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1.1.1.11 root 1198: libs_softmmu="-lesd $libs_softmmu"
1199: audio_pt_int="yes"
1.1.1.7 root 1200: ;;
1201:
1202: pa)
1.1.1.11 root 1203: audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
1.1.1.7 root 1204: "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1.1.1.11 root 1205: libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1206: audio_pt_int="yes"
1207: ;;
1208:
1209: coreaudio)
1210: libs_softmmu="-framework CoreAudio $libs_softmmu"
1211: ;;
1212:
1213: dsound)
1214: libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1215: audio_win_int="yes"
1216: ;;
1217:
1218: oss)
1219: libs_softmmu="$oss_lib $libs_softmmu"
1.1.1.7 root 1220: ;;
1221:
1.1.1.11 root 1222: sdl|wav)
1.1.1.7 root 1223: # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1224: ;;
1225:
1.1.1.11 root 1226: winwave)
1227: libs_softmmu="-lwinmm $libs_softmmu"
1228: audio_win_int="yes"
1229: ;;
1230:
1.1.1.7 root 1231: *)
1232: echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1233: echo
1234: echo "Error: Unknown driver '$drv' selected"
1235: echo "Possible drivers are: $audio_possible_drivers"
1236: echo
1237: exit 1
1238: }
1239: ;;
1240: esac
1241: done
1242:
1243: ##########################################
1244: # BrlAPI probe
1245:
1.1.1.11 root 1246: if test "$brlapi" != "no" ; then
1247: brlapi_libs="-lbrlapi"
1248: cat > $TMPC << EOF
1.1.1.7 root 1249: #include <brlapi.h>
1250: int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
1251: EOF
1.1.1.11 root 1252: if compile_prog "" "$brlapi_libs" ; then
1253: brlapi=yes
1254: libs_softmmu="$brlapi_libs $libs_softmmu"
1255: else
1256: if test "$brlapi" = "yes" ; then
1257: feature_not_found "brlapi"
1258: fi
1259: brlapi=no
1260: fi
1261: fi
1.1.1.7 root 1262:
1263: ##########################################
1264: # curses probe
1.1.1.11 root 1265: curses_list="-lncurses -lcurses"
1.1.1.7 root 1266:
1.1.1.11 root 1267: if test "$curses" != "no" ; then
1268: curses_found=no
1.1.1.5 root 1269: cat > $TMPC << EOF
1.1.1.7 root 1270: #include <curses.h>
1.1.1.9 root 1271: #ifdef __OpenBSD__
1272: #define resize_term resizeterm
1273: #endif
1274: int main(void) { resize_term(0, 0); return curses_version(); }
1.1.1.5 root 1275: EOF
1.1.1.11 root 1276: for curses_lib in $curses_list; do
1277: if compile_prog "" "$curses_lib" ; then
1278: curses_found=yes
1279: libs_softmmu="$curses_lib $libs_softmmu"
1280: break
1281: fi
1282: done
1283: if test "$curses_found" = "yes" ; then
1.1.1.7 root 1284: curses=yes
1.1.1.11 root 1285: else
1286: if test "$curses" = "yes" ; then
1287: feature_not_found "curses"
1288: fi
1289: curses=no
1.1.1.7 root 1290: fi
1.1.1.11 root 1291: fi
1.1.1.7 root 1292:
1293: ##########################################
1.1.1.9 root 1294: # curl probe
1295:
1.1.1.11 root 1296: if test "$curl" != "no" ; then
1.1.1.9 root 1297: cat > $TMPC << EOF
1298: #include <curl/curl.h>
1299: int main(void) { return curl_easy_init(); }
1300: EOF
1.1.1.11 root 1301: curl_cflags=`curl-config --cflags 2>/dev/null`
1.1.1.9 root 1302: curl_libs=`curl-config --libs 2>/dev/null`
1.1.1.11 root 1303: if compile_prog "$curl_cflags" "$curl_libs" ; then
1.1.1.9 root 1304: curl=yes
1.1.1.11 root 1305: libs_tools="$curl_libs $libs_tools"
1306: libs_softmmu="$curl_libs $libs_softmmu"
1307: else
1308: if test "$curl" = "yes" ; then
1309: feature_not_found "curl"
1310: fi
1311: curl=no
1.1.1.9 root 1312: fi
1313: fi # test "$curl"
1314:
1315: ##########################################
1.1.1.11 root 1316: # check framework probe
1317:
1318: if test "$check_utests" != "no" ; then
1.1.1.7 root 1319: cat > $TMPC << EOF
1.1.1.11 root 1320: #include <check.h>
1321: int main(void) { suite_create("qemu test"); return 0; }
1.1.1.7 root 1322: EOF
1.1.1.11 root 1323: check_libs=`pkg-config --libs check`
1324: if compile_prog "" $check_libs ; then
1325: check_utests=yes
1326: libs_tools="$check_libs $libs_tools"
1.1.1.5 root 1327: else
1.1.1.11 root 1328: if test "$check_utests" = "yes" ; then
1329: feature_not_found "check"
1330: fi
1331: check_utests=no
1332: fi
1333: fi # test "$check_utests"
1334:
1335: ##########################################
1336: # bluez support probe
1337: if test "$bluez" != "no" ; then
1338: cat > $TMPC << EOF
1339: #include <bluetooth/bluetooth.h>
1340: int main(void) { return bt_error(0); }
1341: EOF
1342: bluez_cflags=`pkg-config --cflags bluez 2> /dev/null`
1343: bluez_libs=`pkg-config --libs bluez 2> /dev/null`
1344: if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1345: bluez=yes
1346: libs_softmmu="$bluez_libs $libs_softmmu"
1347: else
1348: if test "$bluez" = "yes" ; then
1349: feature_not_found "bluez"
1350: fi
1.1.1.7 root 1351: bluez="no"
1352: fi
1353: fi
1354:
1355: ##########################################
1356: # kvm probe
1.1.1.11 root 1357: if test "$kvm" != "no" ; then
1.1.1.7 root 1358: cat > $TMPC <<EOF
1359: #include <linux/kvm.h>
1360: #if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
1361: #error Invalid KVM version
1362: #endif
1363: #if !defined(KVM_CAP_USER_MEMORY)
1364: #error Missing KVM capability KVM_CAP_USER_MEMORY
1365: #endif
1366: #if !defined(KVM_CAP_SET_TSS_ADDR)
1367: #error Missing KVM capability KVM_CAP_SET_TSS_ADDR
1368: #endif
1369: #if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
1370: #error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
1371: #endif
1372: int main(void) { return 0; }
1373: EOF
1374: if test "$kerneldir" != "" ; then
1375: kvm_cflags=-I"$kerneldir"/include
1376: if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
1377: -a -d "$kerneldir/arch/x86/include" ; then
1378: kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1379: elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
1380: kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
1.1.1.11 root 1381: elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
1382: kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
1.1.1.7 root 1383: elif test -d "$kerneldir/arch/$cpu/include" ; then
1384: kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
1385: fi
1386: else
1387: kvm_cflags=""
1388: fi
1.1.1.11 root 1389: if compile_prog "$kvm_cflags" "" ; then
1390: kvm=yes
1.1.1.7 root 1391: else
1.1.1.11 root 1392: if test "$kvm" = "yes" ; then
1393: if [ -x "`which awk 2>/dev/null`" ] && \
1394: [ -x "`which grep 2>/dev/null`" ]; then
1395: kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
1.1.1.7 root 1396: | grep "error: " \
1397: | awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
1.1.1.11 root 1398: if test "$kvmerr" != "" ; then
1399: echo -e "${kvmerr}\n\
1400: NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
1401: recent kvm-kmod from http://sourceforge.net/projects/kvm."
1402: fi
1.1.1.7 root 1403: fi
1.1.1.11 root 1404: feature_not_found "kvm"
1.1.1.7 root 1405: fi
1.1.1.11 root 1406: kvm=no
1.1.1.7 root 1407: fi
1408: fi
1409:
1410: ##########################################
1.1.1.9 root 1411: # pthread probe
1412: PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1.1.1.7 root 1413:
1.1.1.11 root 1414: pthread=no
1.1.1.9 root 1415: cat > $TMPC << EOF
1.1.1.7 root 1416: #include <pthread.h>
1.1.1.9 root 1417: int main(void) { pthread_create(0,0,0,0); return 0; }
1.1.1.7 root 1418: EOF
1.1.1.11 root 1419: for pthread_lib in $PTHREADLIBS_LIST; do
1420: if compile_prog "" "$pthread_lib" ; then
1421: pthread=yes
1422: LIBS="$pthread_lib $LIBS"
1423: break
1424: fi
1425: done
1426:
1427: if test "$mingw32" != yes -a "$pthread" = no; then
1428: echo
1429: echo "Error: pthread check failed"
1430: echo "Make sure to have the pthread libs and headers installed."
1431: echo
1432: exit 1
1.1.1.9 root 1433: fi
1434:
1.1.1.11 root 1435: ##########################################
1436: # linux-aio probe
1437:
1438: if test "$linux_aio" != "no" ; then
1439: cat > $TMPC <<EOF
1440: #include <libaio.h>
1441: #include <sys/eventfd.h>
1442: int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
1443: EOF
1444: if compile_prog "" "-laio" ; then
1445: linux_aio=yes
1446: LIBS="$LIBS -laio"
1447: else
1448: if test "$linux_aio" = "yes" ; then
1449: feature_not_found "linux AIO"
1450: fi
1451: linux_aio=no
1452: fi
1.1.1.7 root 1453: fi
1454:
1455: ##########################################
1456: # iovec probe
1457: cat > $TMPC <<EOF
1458: #include <sys/types.h>
1459: #include <sys/uio.h>
1460: #include <unistd.h>
1461: int main(void) { struct iovec iov; return 0; }
1462: EOF
1463: iovec=no
1.1.1.11 root 1464: if compile_prog "" "" ; then
1.1.1.7 root 1465: iovec=yes
1466: fi
1467:
1468: ##########################################
1.1.1.9 root 1469: # preadv probe
1470: cat > $TMPC <<EOF
1471: #include <sys/types.h>
1472: #include <sys/uio.h>
1473: #include <unistd.h>
1474: int main(void) { preadv; }
1475: EOF
1476: preadv=no
1.1.1.11 root 1477: if compile_prog "" "" ; then
1.1.1.9 root 1478: preadv=yes
1479: fi
1480:
1481: ##########################################
1.1.1.7 root 1482: # fdt probe
1.1.1.11 root 1483: if test "$fdt" != "no" ; then
1484: fdt_libs="-lfdt"
1485: cat > $TMPC << EOF
1.1.1.7 root 1486: int main(void) { return 0; }
1487: EOF
1.1.1.11 root 1488: if compile_prog "" "$fdt_libs" ; then
1.1.1.7 root 1489: fdt=yes
1.1.1.11 root 1490: libs_softmmu="$fdt_libs $libs_softmmu"
1491: else
1492: if test "$fdt" = "yes" ; then
1493: feature_not_found "fdt"
1494: fi
1495: fdt=no
1.1.1.5 root 1496: fi
1497: fi
1498:
1.1.1.9 root 1499: #
1500: # Check for xxxat() functions when we are building linux-user
1501: # emulator. This is done because older glibc versions don't
1502: # have syscall stubs for these implemented.
1503: #
1504: atfile=no
1505: cat > $TMPC << EOF
1506: #define _ATFILE_SOURCE
1507: #include <sys/types.h>
1508: #include <fcntl.h>
1509: #include <unistd.h>
1510:
1511: int
1512: main(void)
1513: {
1514: /* try to unlink nonexisting file */
1515: return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
1516: }
1517: EOF
1.1.1.11 root 1518: if compile_prog "" "" ; then
1.1.1.9 root 1519: atfile=yes
1520: fi
1521:
1522: # Check for inotify functions when we are building linux-user
1523: # emulator. This is done because older glibc versions don't
1524: # have syscall stubs for these implemented. In that case we
1525: # don't provide them even if kernel supports them.
1526: #
1527: inotify=no
1528: cat > $TMPC << EOF
1529: #include <sys/inotify.h>
1530:
1531: int
1532: main(void)
1533: {
1534: /* try to start inotify */
1535: return inotify_init();
1536: }
1537: EOF
1.1.1.11 root 1538: if compile_prog "" "" ; then
1.1.1.9 root 1539: inotify=yes
1540: fi
1541:
1542: # check if utimensat and futimens are supported
1543: utimens=no
1544: cat > $TMPC << EOF
1545: #define _ATFILE_SOURCE
1546: #define _GNU_SOURCE
1547: #include <stddef.h>
1548: #include <fcntl.h>
1549:
1550: int main(void)
1551: {
1552: utimensat(AT_FDCWD, "foo", NULL, 0);
1553: futimens(0, NULL);
1554: return 0;
1555: }
1556: EOF
1.1.1.11 root 1557: if compile_prog "" "" ; then
1.1.1.9 root 1558: utimens=yes
1559: fi
1560:
1561: # check if pipe2 is there
1562: pipe2=no
1563: cat > $TMPC << EOF
1564: #define _GNU_SOURCE
1565: #include <unistd.h>
1566: #include <fcntl.h>
1567:
1568: int main(void)
1569: {
1570: int pipefd[2];
1571: pipe2(pipefd, O_CLOEXEC);
1572: return 0;
1573: }
1574: EOF
1.1.1.11 root 1575: if compile_prog "" "" ; then
1.1.1.9 root 1576: pipe2=yes
1577: fi
1578:
1.1.1.11 root 1579: # check if accept4 is there
1580: accept4=no
1581: cat > $TMPC << EOF
1582: #define _GNU_SOURCE
1583: #include <sys/socket.h>
1584: #include <stddef.h>
1585:
1586: int main(void)
1587: {
1588: accept4(0, NULL, NULL, SOCK_CLOEXEC);
1589: return 0;
1590: }
1591: EOF
1592: if compile_prog "" "" ; then
1593: accept4=yes
1594: fi
1595:
1.1.1.9 root 1596: # check if tee/splice is there. vmsplice was added same time.
1597: splice=no
1598: cat > $TMPC << EOF
1599: #define _GNU_SOURCE
1600: #include <unistd.h>
1601: #include <fcntl.h>
1602: #include <limits.h>
1603:
1604: int main(void)
1605: {
1606: int len, fd;
1607: len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
1608: splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
1609: return 0;
1610: }
1611: EOF
1.1.1.11 root 1612: if compile_prog "" "" ; then
1.1.1.9 root 1613: splice=yes
1614: fi
1615:
1.1.1.11 root 1616: # check if eventfd is supported
1617: eventfd=no
1618: cat > $TMPC << EOF
1619: #include <sys/eventfd.h>
1620:
1621: int main(void)
1622: {
1623: int efd = eventfd(0, 0);
1624: return 0;
1625: }
1626: EOF
1627: if compile_prog "" "" ; then
1628: eventfd=yes
1629: fi
1630:
1631: # check for fallocate
1632: fallocate=no
1633: cat > $TMPC << EOF
1634: #include <fcntl.h>
1635:
1636: int main(void)
1637: {
1638: fallocate(0, 0, 0, 0);
1639: return 0;
1640: }
1641: EOF
1642: if compile_prog "$ARCH_CFLAGS" "" ; then
1643: fallocate=yes
1644: fi
1645:
1646: # check for dup3
1647: dup3=no
1648: cat > $TMPC << EOF
1649: #include <unistd.h>
1650:
1651: int main(void)
1652: {
1653: dup3(0, 0, 0);
1654: return 0;
1655: }
1656: EOF
1657: if compile_prog "" "" ; then
1658: dup3=yes
1659: fi
1660:
1.1.1.3 root 1661: # Check if tools are available to build documentation.
1.1.1.11 root 1662: if test "$docs" != "no" ; then
1663: if test -x "`which texi2html 2>/dev/null`" -a \
1664: -x "`which pod2man 2>/dev/null`" ; then
1665: docs=yes
1666: else
1667: if test "$docs" = "yes" ; then
1668: feature_not_found "docs"
1669: fi
1670: docs=no
1671: fi
1672: fi
1673:
1674: # Search for bswap_32 function
1675: byteswap_h=no
1676: cat > $TMPC << EOF
1677: #include <byteswap.h>
1678: int main(void) { return bswap_32(0); }
1679: EOF
1680: if compile_prog "" "" ; then
1681: byteswap_h=yes
1682: fi
1683:
1684: # Search for bswap_32 function
1685: bswap_h=no
1686: cat > $TMPC << EOF
1687: #include <sys/endian.h>
1688: #include <sys/types.h>
1689: #include <machine/bswap.h>
1690: int main(void) { return bswap32(0); }
1691: EOF
1692: if compile_prog "" "" ; then
1693: bswap_h=yes
1.1 root 1694: fi
1695:
1.1.1.7 root 1696: ##########################################
1697: # Do we need librt
1698: cat > $TMPC <<EOF
1699: #include <signal.h>
1700: #include <time.h>
1701: int main(void) { clockid_t id; return clock_gettime(id, NULL); }
1702: EOF
1703:
1.1.1.11 root 1704: if compile_prog "" "" ; then
1.1.1.7 root 1705: :
1.1.1.11 root 1706: elif compile_prog "" "-lrt" ; then
1707: LIBS="-lrt $LIBS"
1.1.1.7 root 1708: fi
1709:
1.1.1.11 root 1710: # Determine what linker flags to use to force archive inclusion
1711: check_linker_flags()
1712: {
1713: w2=
1714: if test "$2" ; then
1715: w2=-Wl,$2
1716: fi
1717: compile_prog "" "-Wl,$1 ${w2}"
1718: }
1719:
1720: cat > $TMPC << EOF
1721: int main(void) { }
1722: EOF
1723: if check_linker_flags --whole-archive --no-whole-archive ; then
1724: # GNU ld
1725: arlibs_begin="-Wl,--whole-archive"
1726: arlibs_end="-Wl,--no-whole-archive"
1727: elif check_linker_flags -z,allextract -z,defaultextract ; then
1728: # Solaris ld
1729: arlibs_begin="-Wl,-z,allextract"
1730: arlibs_end="-Wl,-z,defaultextract"
1731: elif check_linker_flags -all_load ; then
1732: # Mac OS X
1733: arlibs_begin="-all_load"
1734: arlibs_end=""
1735: else
1736: echo "Error: your linker does not support --whole-archive or -z."
1737: echo "Please report to [email protected]"
1738: exit 1
1739: fi
1740:
1741: if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
1742: "$aix" != "yes" ; then
1743: libs_softmmu="-lutil $libs_softmmu"
1744: fi
1745:
1746: ##########################################
1747: # check if the compiler defines offsetof
1748:
1749: need_offsetof=yes
1750: cat > $TMPC << EOF
1751: #include <stddef.h>
1752: int main(void) { struct s { int f; }; return offsetof(struct s, f); }
1753: EOF
1754: if compile_prog "" "" ; then
1755: need_offsetof=no
1756: fi
1757:
1758: ##########################################
1759: # check if the compiler understands attribute warn_unused_result
1760: #
1761: # This could be smarter, but gcc -Werror does not error out even when warning
1762: # about attribute warn_unused_result
1763:
1764: gcc_attribute_warn_unused_result=no
1765: cat > $TMPC << EOF
1766: #if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
1767: #error gcc 3.3 or older
1768: #endif
1769: int main(void) { return 0;}
1770: EOF
1771: if compile_prog "" ""; then
1772: gcc_attribute_warn_unused_result=yes
1773: fi
1774:
1775: ##########################################
1776: # check if we have fdatasync
1777:
1778: fdatasync=no
1779: cat > $TMPC << EOF
1780: #include <unistd.h>
1781: int main(void) { return fdatasync(0); }
1782: EOF
1783: if compile_prog "" "" ; then
1784: fdatasync=yes
1785: fi
1786:
1787: # End of CC checks
1788: # After here, no more $cc or $ld runs
1789:
1790: if test "$debug" = "no" ; then
1791: CFLAGS="-O2 $CFLAGS"
1792: fi
1793:
1794: # Consult white-list to determine whether to enable werror
1795: # by default. Only enable by default for git builds
1796: z_version=`cut -f3 -d. $source_path/VERSION`
1797:
1798: if test -z "$werror" ; then
1799: if test "$z_version" = "50" -a \
1800: "$linux" = "yes" ; then
1801: werror="yes"
1802: else
1803: werror="no"
1804: fi
1805: fi
1806:
1807: # Disable zero malloc errors for official releases unless explicitly told to
1808: # enable/disable
1809: if test -z "$zero_malloc" ; then
1810: if test "$z_version" = "50" ; then
1811: zero_malloc="no"
1812: else
1813: zero_malloc="yes"
1814: fi
1815: fi
1816:
1817: if test "$werror" = "yes" ; then
1818: QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
1819: fi
1820:
1821: if test "$solaris" = "no" ; then
1822: if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
1823: LDFLAGS="-Wl,--warn-common $LDFLAGS"
1824: fi
1.1.1.7 root 1825: fi
1826:
1.1 root 1827: if test "$mingw32" = "yes" ; then
1.1.1.6 root 1828: if test -z "$prefix" ; then
1.1.1.9 root 1829: prefix="c:/Program Files/Qemu"
1.1.1.6 root 1830: fi
1831: mansuffix=""
1832: datasuffix=""
1833: docsuffix=""
1834: binsuffix=""
1835: else
1836: if test -z "$prefix" ; then
1837: prefix="/usr/local"
1838: fi
1839: mansuffix="/share/man"
1840: datasuffix="/share/qemu"
1841: docsuffix="/share/doc/qemu"
1842: binsuffix="/bin"
1.1 root 1843: fi
1844:
1845: echo "Install prefix $prefix"
1.1.1.6 root 1846: echo "BIOS directory $prefix$datasuffix"
1847: echo "binary directory $prefix$binsuffix"
1.1 root 1848: if test "$mingw32" = "no" ; then
1.1.1.6 root 1849: echo "Manual directory $prefix$mansuffix"
1.1 root 1850: echo "ELF interp prefix $interp_prefix"
1851: fi
1852: echo "Source path $source_path"
1853: echo "C compiler $cc"
1854: echo "Host C compiler $host_cc"
1.1.1.11 root 1855: echo "CFLAGS $CFLAGS"
1856: echo "QEMU_CFLAGS $QEMU_CFLAGS"
1857: echo "LDFLAGS $LDFLAGS"
1.1 root 1858: echo "make $make"
1.1.1.3 root 1859: echo "install $install"
1.1 root 1860: echo "host CPU $cpu"
1861: echo "host big endian $bigendian"
1862: echo "target list $target_list"
1.1.1.9 root 1863: echo "tcg debug enabled $debug_tcg"
1.1 root 1864: echo "gprof enabled $gprof"
1.1.1.7 root 1865: echo "sparse enabled $sparse"
1.1.1.9 root 1866: echo "strip binaries $strip_opt"
1.1.1.3 root 1867: echo "profiler $profiler"
1.1 root 1868: echo "static build $static"
1.1.1.6 root 1869: echo "-Werror enabled $werror"
1.1 root 1870: if test "$darwin" = "yes" ; then
1871: echo "Cocoa support $cocoa"
1872: fi
1873: echo "SDL support $sdl"
1.1.1.7 root 1874: echo "curses support $curses"
1.1.1.9 root 1875: echo "curl support $curl"
1.1.1.11 root 1876: echo "check support $check_utests"
1.1 root 1877: echo "mingw32 support $mingw32"
1.1.1.7 root 1878: echo "Audio drivers $audio_drv_list"
1879: echo "Extra audio cards $audio_card_list"
1.1.1.11 root 1880: echo "Block whitelist $block_drv_whitelist"
1.1.1.7 root 1881: echo "Mixer emulation $mixemu"
1.1.1.6 root 1882: echo "VNC TLS support $vnc_tls"
1.1.1.9 root 1883: echo "VNC SASL support $vnc_sasl"
1.1.1.6 root 1884: if test -n "$sparc_cpu"; then
1885: echo "Target Sparc Arch $sparc_cpu"
1886: fi
1.1.1.9 root 1887: echo "xen support $xen"
1.1.1.7 root 1888: echo "brlapi support $brlapi"
1.1.1.11 root 1889: echo "bluez support $bluez"
1890: echo "Documentation $docs"
1.1.1.4 root 1891: [ ! -z "$uname_release" ] && \
1892: echo "uname -r $uname_release"
1.1.1.7 root 1893: echo "NPTL support $nptl"
1.1.1.11 root 1894: echo "GUEST_BASE $guest_base"
1895: echo "PIE user targets $user_pie"
1.1.1.7 root 1896: echo "vde support $vde"
1.1.1.9 root 1897: echo "IO thread $io_thread"
1.1.1.11 root 1898: echo "Linux AIO support $linux_aio"
1.1.1.7 root 1899: echo "Install blobs $blobs"
1.1.1.11 root 1900: echo "KVM support $kvm"
1.1.1.7 root 1901: echo "fdt support $fdt"
1.1.1.9 root 1902: echo "preadv support $preadv"
1.1.1.11 root 1903: echo "fdatasync $fdatasync"
1904: echo "uuid support $uuid"
1.1 root 1905:
1906: if test $sdl_too_old = "yes"; then
1907: echo "-> Your SDL version is too old - please upgrade to have SDL support"
1908: fi
1909:
1.1.1.9 root 1910: config_host_mak="config-host.mak"
1.1.1.11 root 1911: config_host_ld="config-host.ld"
1.1.1.9 root 1912:
1913: echo "# Automatically generated by configure - do not modify" > $config_host_mak
1914: printf "# Configured with:" >> $config_host_mak
1915: printf " '%s'" "$0" "$@" >> $config_host_mak
1916: echo >> $config_host_mak
1917:
1.1.1.11 root 1918: echo "CONFIG_QEMU_SHAREDIR=\"$prefix$datasuffix\"" >> $config_host_mak
1919:
1.1.1.7 root 1920: case "$cpu" in
1.1.1.11 root 1921: i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1.1.1.9 root 1922: ARCH=$cpu
1.1.1.7 root 1923: ;;
1.1.1.10 root 1924: armv4b|armv4l)
1.1.1.9 root 1925: ARCH=arm
1.1.1.7 root 1926: ;;
1927: *)
1928: echo "Unsupported CPU = $cpu"
1929: exit 1
1930: ;;
1931: esac
1.1.1.9 root 1932: echo "ARCH=$ARCH" >> $config_host_mak
1933: if test "$debug_tcg" = "yes" ; then
1.1.1.11 root 1934: echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
1.1.1.9 root 1935: fi
1936: if test "$debug" = "yes" ; then
1.1.1.11 root 1937: echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
1.1.1.9 root 1938: fi
1939: if test "$strip_opt" = "yes" ; then
1940: echo "STRIP_OPT=-s" >> $config_host_mak
1.1 root 1941: fi
1942: if test "$bigendian" = "yes" ; then
1.1.1.11 root 1943: echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
1.1 root 1944: fi
1.1.1.11 root 1945: echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
1.1 root 1946: if test "$mingw32" = "yes" ; then
1.1.1.9 root 1947: echo "CONFIG_WIN32=y" >> $config_host_mak
1.1.1.6 root 1948: else
1.1.1.11 root 1949: echo "CONFIG_POSIX=y" >> $config_host_mak
1.1.1.7 root 1950: fi
1951:
1.1.1.11 root 1952: if test "$linux" = "yes" ; then
1953: echo "CONFIG_LINUX=y" >> $config_host_mak
1.1 root 1954: fi
1.1.1.7 root 1955:
1.1 root 1956: if test "$darwin" = "yes" ; then
1.1.1.9 root 1957: echo "CONFIG_DARWIN=y" >> $config_host_mak
1.1 root 1958: fi
1.1.1.7 root 1959:
1960: if test "$aix" = "yes" ; then
1.1.1.9 root 1961: echo "CONFIG_AIX=y" >> $config_host_mak
1.1.1.7 root 1962: fi
1963:
1.1.1.3 root 1964: if test "$solaris" = "yes" ; then
1.1.1.9 root 1965: echo "CONFIG_SOLARIS=y" >> $config_host_mak
1.1.1.11 root 1966: echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
1.1.1.6 root 1967: if test "$needs_libsunmath" = "yes" ; then
1.1.1.11 root 1968: echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
1.1.1.6 root 1969: fi
1970: fi
1.1 root 1971: if test "$static" = "yes" ; then
1.1.1.9 root 1972: echo "CONFIG_STATIC=y" >> $config_host_mak
1.1.1.11 root 1973: LDFLAGS="-static $LDFLAGS"
1.1 root 1974: fi
1.1.1.3 root 1975: if test $profiler = "yes" ; then
1.1.1.11 root 1976: echo "CONFIG_PROFILER=y" >> $config_host_mak
1.1.1.3 root 1977: fi
1.1 root 1978: if test "$slirp" = "yes" ; then
1.1.1.9 root 1979: echo "CONFIG_SLIRP=y" >> $config_host_mak
1.1.1.11 root 1980: QEMU_CFLAGS="-I\$(SRC_PATH)/slirp $QEMU_CFLAGS"
1.1 root 1981: fi
1.1.1.7 root 1982: if test "$vde" = "yes" ; then
1.1.1.9 root 1983: echo "CONFIG_VDE=y" >> $config_host_mak
1.1.1.7 root 1984: fi
1985: for card in $audio_card_list; do
1986: def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1.1.1.9 root 1987: echo "$def=y" >> $config_host_mak
1.1.1.7 root 1988: done
1.1.1.11 root 1989: echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
1.1.1.7 root 1990: for drv in $audio_drv_list; do
1991: def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1.1.1.9 root 1992: echo "$def=y" >> $config_host_mak
1.1.1.7 root 1993: if test "$drv" = "fmod"; then
1.1.1.11 root 1994: echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
1.1.1.7 root 1995: fi
1996: done
1.1.1.11 root 1997: if test "$audio_pt_int" = "yes" ; then
1998: echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
1999: fi
2000: if test "$audio_win_int" = "yes" ; then
2001: echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
2002: fi
2003: echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
1.1.1.7 root 2004: if test "$mixemu" = "yes" ; then
1.1.1.9 root 2005: echo "CONFIG_MIXEMU=y" >> $config_host_mak
1.1 root 2006: fi
1.1.1.6 root 2007: if test "$vnc_tls" = "yes" ; then
1.1.1.9 root 2008: echo "CONFIG_VNC_TLS=y" >> $config_host_mak
1.1.1.11 root 2009: echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
1.1.1.9 root 2010: fi
2011: if test "$vnc_sasl" = "yes" ; then
2012: echo "CONFIG_VNC_SASL=y" >> $config_host_mak
1.1.1.11 root 2013: echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
1.1.1.9 root 2014: fi
2015: if test "$fnmatch" = "yes" ; then
1.1.1.11 root 2016: echo "CONFIG_FNMATCH=y" >> $config_host_mak
2017: fi
2018: if test "$uuid" = "yes" ; then
2019: echo "CONFIG_UUID=y" >> $config_host_mak
1.1.1.6 root 2020: fi
1.1.1.3 root 2021: qemu_version=`head $source_path/VERSION`
1.1.1.9 root 2022: echo "VERSION=$qemu_version" >>$config_host_mak
1.1.1.11 root 2023: echo "PKGVERSION=$pkgversion" >>$config_host_mak
1.1.1.9 root 2024: echo "SRC_PATH=$source_path" >> $config_host_mak
1.1.1.3 root 2025: if [ "$source_path_used" = "yes" ]; then
1.1.1.9 root 2026: echo "VPATH=$source_path" >> $config_host_mak
1.1.1.3 root 2027: fi
1.1.1.9 root 2028: echo "TARGET_DIRS=$target_list" >> $config_host_mak
1.1.1.11 root 2029: if [ "$docs" = "yes" ] ; then
1.1.1.9 root 2030: echo "BUILD_DOCS=yes" >> $config_host_mak
1.1.1.3 root 2031: fi
1.1.1.11 root 2032: if test "$sdl" = "yes" ; then
1.1.1.9 root 2033: echo "CONFIG_SDL=y" >> $config_host_mak
1.1.1.11 root 2034: echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
1.1.1.6 root 2035: fi
2036: if test "$cocoa" = "yes" ; then
1.1.1.9 root 2037: echo "CONFIG_COCOA=y" >> $config_host_mak
1.1.1.7 root 2038: fi
2039: if test "$curses" = "yes" ; then
1.1.1.9 root 2040: echo "CONFIG_CURSES=y" >> $config_host_mak
2041: fi
2042: if test "$atfile" = "yes" ; then
1.1.1.11 root 2043: echo "CONFIG_ATFILE=y" >> $config_host_mak
1.1.1.9 root 2044: fi
2045: if test "$utimens" = "yes" ; then
1.1.1.11 root 2046: echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
1.1.1.9 root 2047: fi
2048: if test "$pipe2" = "yes" ; then
1.1.1.11 root 2049: echo "CONFIG_PIPE2=y" >> $config_host_mak
2050: fi
2051: if test "$accept4" = "yes" ; then
2052: echo "CONFIG_ACCEPT4=y" >> $config_host_mak
1.1.1.9 root 2053: fi
2054: if test "$splice" = "yes" ; then
1.1.1.11 root 2055: echo "CONFIG_SPLICE=y" >> $config_host_mak
2056: fi
2057: if test "$eventfd" = "yes" ; then
2058: echo "CONFIG_EVENTFD=y" >> $config_host_mak
2059: fi
2060: if test "$fallocate" = "yes" ; then
2061: echo "CONFIG_FALLOCATE=y" >> $config_host_mak
2062: fi
2063: if test "$dup3" = "yes" ; then
2064: echo "CONFIG_DUP3=y" >> $config_host_mak
1.1.1.9 root 2065: fi
2066: if test "$inotify" = "yes" ; then
1.1.1.11 root 2067: echo "CONFIG_INOTIFY=y" >> $config_host_mak
2068: fi
2069: if test "$byteswap_h" = "yes" ; then
2070: echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
2071: fi
2072: if test "$bswap_h" = "yes" ; then
2073: echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
1.1.1.9 root 2074: fi
2075: if test "$curl" = "yes" ; then
2076: echo "CONFIG_CURL=y" >> $config_host_mak
1.1.1.11 root 2077: echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
1.1.1.7 root 2078: fi
2079: if test "$brlapi" = "yes" ; then
1.1.1.9 root 2080: echo "CONFIG_BRLAPI=y" >> $config_host_mak
1.1.1.7 root 2081: fi
2082: if test "$bluez" = "yes" ; then
1.1.1.9 root 2083: echo "CONFIG_BLUEZ=y" >> $config_host_mak
1.1.1.11 root 2084: echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
1.1.1.9 root 2085: fi
2086: if test "$xen" = "yes" ; then
1.1.1.11 root 2087: echo "CONFIG_XEN=y" >> $config_host_mak
1.1.1.9 root 2088: fi
2089: if test "$io_thread" = "yes" ; then
2090: echo "CONFIG_IOTHREAD=y" >> $config_host_mak
1.1.1.11 root 2091: fi
2092: if test "$linux_aio" = "yes" ; then
2093: echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
1.1.1.7 root 2094: fi
2095: if test "$blobs" = "yes" ; then
1.1.1.9 root 2096: echo "INSTALL_BLOBS=yes" >> $config_host_mak
1.1.1.7 root 2097: fi
2098: if test "$iovec" = "yes" ; then
1.1.1.11 root 2099: echo "CONFIG_IOVEC=y" >> $config_host_mak
1.1.1.9 root 2100: fi
2101: if test "$preadv" = "yes" ; then
1.1.1.11 root 2102: echo "CONFIG_PREADV=y" >> $config_host_mak
1.1.1.7 root 2103: fi
2104: if test "$fdt" = "yes" ; then
1.1.1.11 root 2105: echo "CONFIG_FDT=y" >> $config_host_mak
2106: fi
2107: if test "$need_offsetof" = "yes" ; then
2108: echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
2109: fi
2110: if test "$gcc_attribute_warn_unused_result" = "yes" ; then
2111: echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
2112: fi
2113: if test "$fdatasync" = "yes" ; then
2114: echo "CONFIG_FDATASYNC=y" >> $config_host_mak
1.1.1.6 root 2115: fi
1.1 root 2116:
2117: # XXX: suppress that
2118: if [ "$bsd" = "yes" ] ; then
1.1.1.11 root 2119: echo "CONFIG_BSD=y" >> $config_host_mak
1.1 root 2120: fi
2121:
1.1.1.11 root 2122: echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2123:
2124: if test "$zero_malloc" = "yes" ; then
2125: echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
2126: fi
1.1.1.4 root 2127:
1.1.1.7 root 2128: # USB host support
2129: case "$usb" in
2130: linux)
1.1.1.9 root 2131: echo "HOST_USB=linux" >> $config_host_mak
1.1.1.7 root 2132: ;;
2133: bsd)
1.1.1.9 root 2134: echo "HOST_USB=bsd" >> $config_host_mak
1.1.1.7 root 2135: ;;
2136: *)
1.1.1.9 root 2137: echo "HOST_USB=stub" >> $config_host_mak
1.1.1.7 root 2138: ;;
2139: esac
2140:
1.1.1.6 root 2141: tools=
2142: if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1.1.1.11 root 2143: tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
1.1.1.7 root 2144: if [ "$linux" = "yes" ] ; then
1.1.1.11 root 2145: tools="qemu-nbd\$(EXESUF) $tools"
2146: if [ "$check_utests" = "yes" ]; then
2147: tools="check-qint check-qstring check-qdict check-qlist $tools"
2148: tools="check-qfloat check-qjson $tools"
2149: fi
1.1.1.7 root 2150: fi
1.1.1.6 root 2151: fi
1.1.1.9 root 2152: echo "TOOLS=$tools" >> $config_host_mak
1.1.1.6 root 2153:
1.1.1.11 root 2154: # Mac OS X ships with a broken assembler
1.1.1.9 root 2155: roms=
2156: if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
1.1.1.11 root 2157: "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
2158: `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1.1.1.9 root 2159: roms="optionrom"
2160: fi
2161: echo "ROMS=$roms" >> $config_host_mak
2162:
1.1.1.11 root 2163: echo "prefix=$prefix" >> $config_host_mak
2164: echo "bindir=\${prefix}$binsuffix" >> $config_host_mak
2165: echo "mandir=\${prefix}$mansuffix" >> $config_host_mak
2166: echo "datadir=\${prefix}$datasuffix" >> $config_host_mak
2167: echo "docdir=\${prefix}$docsuffix" >> $config_host_mak
2168: echo "MAKE=$make" >> $config_host_mak
2169: echo "INSTALL=$install" >> $config_host_mak
2170: echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
2171: echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
2172: echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
2173: echo "CC=$cc" >> $config_host_mak
2174: echo "HOST_CC=$host_cc" >> $config_host_mak
2175: if test "$sparse" = "yes" ; then
2176: echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
2177: echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
2178: echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
2179: fi
2180: echo "AR=$ar" >> $config_host_mak
2181: echo "OBJCOPY=$objcopy" >> $config_host_mak
2182: echo "LD=$ld" >> $config_host_mak
2183: echo "CFLAGS=$CFLAGS" >> $config_host_mak
2184: echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
2185: echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2186: echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
2187: echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
2188: echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
2189: echo "LIBS+=$LIBS" >> $config_host_mak
2190: echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2191: echo "EXESUF=$EXESUF" >> $config_host_mak
2192:
2193: # generate list of library paths for linker script
2194:
2195: $ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}
2196:
2197: if test -f ${config_host_ld}~ ; then
2198: if cmp -s $config_host_ld ${config_host_ld}~ ; then
2199: mv ${config_host_ld}~ $config_host_ld
1.1.1.9 root 2200: else
1.1.1.11 root 2201: rm ${config_host_ld}~
1.1.1.9 root 2202: fi
2203: fi
1.1.1.6 root 2204:
1.1.1.2 root 2205: for target in $target_list; do
1.1 root 2206: target_dir="$target"
1.1.1.11 root 2207: config_target_mak=$target_dir/config-target.mak
1.1.1.9 root 2208: target_arch2=`echo $target | cut -d '-' -f 1`
1.1 root 2209: target_bigendian="no"
1.1.1.11 root 2210:
1.1.1.9 root 2211: case "$target_arch2" in
1.1.1.11 root 2212: armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
1.1.1.9 root 2213: target_bigendian=yes
2214: ;;
2215: esac
1.1 root 2216: target_softmmu="no"
2217: target_user_only="no"
1.1.1.5 root 2218: target_linux_user="no"
2219: target_darwin_user="no"
1.1.1.7 root 2220: target_bsd_user="no"
1.1.1.6 root 2221: case "$target" in
1.1.1.9 root 2222: ${target_arch2}-softmmu)
1.1.1.6 root 2223: target_softmmu="yes"
2224: ;;
1.1.1.9 root 2225: ${target_arch2}-linux-user)
1.1.1.11 root 2226: if test "$linux" != "yes" ; then
2227: echo "ERROR: Target '$target' is only available on a Linux host"
2228: exit 1
2229: fi
1.1.1.6 root 2230: target_user_only="yes"
2231: target_linux_user="yes"
2232: ;;
1.1.1.9 root 2233: ${target_arch2}-darwin-user)
1.1.1.11 root 2234: if test "$darwin" != "yes" ; then
2235: echo "ERROR: Target '$target' is only available on a Darwin host"
2236: exit 1
2237: fi
1.1.1.6 root 2238: target_user_only="yes"
2239: target_darwin_user="yes"
2240: ;;
1.1.1.9 root 2241: ${target_arch2}-bsd-user)
1.1.1.11 root 2242: if test "$bsd" != "yes" ; then
2243: echo "ERROR: Target '$target' is only available on a BSD host"
2244: exit 1
2245: fi
1.1.1.7 root 2246: target_user_only="yes"
2247: target_bsd_user="yes"
2248: ;;
1.1.1.6 root 2249: *)
2250: echo "ERROR: Target '$target' not recognised"
2251: exit 1
2252: ;;
2253: esac
1.1.1.5 root 2254:
1.1 root 2255: mkdir -p $target_dir
2256: mkdir -p $target_dir/fpu
1.1.1.7 root 2257: mkdir -p $target_dir/tcg
1.1.1.11 root 2258: mkdir -p $target_dir/ide
1.1.1.7 root 2259: 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 2260: mkdir -p $target_dir/nwfpe
2261: fi
2262:
1.1.1.3 root 2263: #
2264: # don't use ln -sf as not all "ln -sf" over write the file/link
2265: #
2266: rm -f $target_dir/Makefile
2267: ln -s $source_path/Makefile.target $target_dir/Makefile
2268:
1.1 root 2269:
1.1.1.11 root 2270: echo "# Automatically generated by configure - do not modify" > $config_target_mak
1.1 root 2271:
1.1.1.4 root 2272: bflt="no"
1.1.1.6 root 2273: elfload32="no"
1.1.1.7 root 2274: target_nptl="no"
1.1.1.9 root 2275: interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
1.1.1.11 root 2276: echo "CONFIG_QEMU_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
1.1.1.7 root 2277: gdb_xml_files=""
1.1 root 2278:
1.1.1.9 root 2279: TARGET_ARCH="$target_arch2"
2280: TARGET_BASE_ARCH=""
2281: TARGET_ABI_DIR=""
1.1.1.7 root 2282:
1.1.1.9 root 2283: case "$target_arch2" in
1.1.1.7 root 2284: i386)
1.1.1.9 root 2285: target_phys_bits=32
1.1.1.7 root 2286: ;;
2287: x86_64)
1.1.1.9 root 2288: TARGET_BASE_ARCH=i386
2289: target_phys_bits=64
1.1.1.7 root 2290: ;;
2291: alpha)
1.1.1.9 root 2292: target_phys_bits=64
1.1.1.7 root 2293: ;;
2294: arm|armeb)
1.1.1.9 root 2295: TARGET_ARCH=arm
1.1.1.7 root 2296: bflt="yes"
2297: target_nptl="yes"
2298: gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1.1.1.9 root 2299: target_phys_bits=32
1.1.1.7 root 2300: ;;
2301: cris)
2302: target_nptl="yes"
1.1.1.9 root 2303: target_phys_bits=32
1.1.1.7 root 2304: ;;
2305: m68k)
2306: bflt="yes"
2307: gdb_xml_files="cf-core.xml cf-fp.xml"
1.1.1.9 root 2308: target_phys_bits=32
2309: ;;
2310: microblaze)
2311: bflt="yes"
2312: target_nptl="yes"
2313: target_phys_bits=32
1.1.1.7 root 2314: ;;
2315: mips|mipsel)
1.1.1.9 root 2316: TARGET_ARCH=mips
1.1.1.11 root 2317: echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
1.1.1.9 root 2318: target_nptl="yes"
2319: target_phys_bits=64
1.1.1.7 root 2320: ;;
2321: mipsn32|mipsn32el)
1.1.1.9 root 2322: TARGET_ARCH=mipsn32
2323: TARGET_BASE_ARCH=mips
1.1.1.11 root 2324: echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
1.1.1.9 root 2325: target_phys_bits=64
1.1.1.7 root 2326: ;;
2327: mips64|mips64el)
1.1.1.9 root 2328: TARGET_ARCH=mips64
2329: TARGET_BASE_ARCH=mips
1.1.1.11 root 2330: echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
1.1.1.9 root 2331: target_phys_bits=64
1.1.1.7 root 2332: ;;
2333: ppc)
2334: gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 2335: target_phys_bits=32
1.1.1.11 root 2336: target_nptl="yes"
1.1.1.7 root 2337: ;;
2338: ppcemb)
1.1.1.9 root 2339: TARGET_BASE_ARCH=ppc
2340: TARGET_ABI_DIR=ppc
1.1.1.7 root 2341: gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 2342: target_phys_bits=64
1.1.1.11 root 2343: target_nptl="yes"
1.1.1.7 root 2344: ;;
2345: ppc64)
1.1.1.9 root 2346: TARGET_BASE_ARCH=ppc
2347: TARGET_ABI_DIR=ppc
1.1.1.7 root 2348: gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 2349: target_phys_bits=64
1.1.1.7 root 2350: ;;
2351: ppc64abi32)
1.1.1.9 root 2352: TARGET_ARCH=ppc64
2353: TARGET_BASE_ARCH=ppc
2354: TARGET_ABI_DIR=ppc
1.1.1.11 root 2355: echo "TARGET_ABI32=y" >> $config_target_mak
1.1.1.7 root 2356: gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 2357: target_phys_bits=64
1.1.1.7 root 2358: ;;
2359: sh4|sh4eb)
1.1.1.9 root 2360: TARGET_ARCH=sh4
1.1.1.7 root 2361: bflt="yes"
2362: target_nptl="yes"
1.1.1.9 root 2363: target_phys_bits=32
1.1.1.7 root 2364: ;;
2365: sparc)
1.1.1.9 root 2366: target_phys_bits=64
1.1.1.7 root 2367: ;;
2368: sparc64)
1.1.1.9 root 2369: TARGET_BASE_ARCH=sparc
1.1.1.7 root 2370: elfload32="yes"
1.1.1.9 root 2371: target_phys_bits=64
1.1.1.7 root 2372: ;;
2373: sparc32plus)
1.1.1.9 root 2374: TARGET_ARCH=sparc64
2375: TARGET_BASE_ARCH=sparc
2376: TARGET_ABI_DIR=sparc
1.1.1.11 root 2377: echo "TARGET_ABI32=y" >> $config_target_mak
2378: target_phys_bits=64
2379: ;;
2380: s390x)
1.1.1.9 root 2381: target_phys_bits=64
1.1.1.7 root 2382: ;;
2383: *)
2384: echo "Unsupported target CPU"
2385: exit 1
2386: ;;
2387: esac
1.1.1.11 root 2388: echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
2389: target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
2390: echo "TARGET_$target_arch_name=y" >> $config_target_mak
2391: echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
1.1.1.9 root 2392: # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
2393: if [ "$TARGET_BASE_ARCH" = "" ]; then
2394: TARGET_BASE_ARCH=$TARGET_ARCH
2395: fi
1.1.1.11 root 2396: echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
1.1.1.9 root 2397: if [ "$TARGET_ABI_DIR" = "" ]; then
2398: TARGET_ABI_DIR=$TARGET_ARCH
2399: fi
1.1.1.11 root 2400: echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
1.1.1.9 root 2401: if [ $target_phys_bits -lt $hostlongbits ] ; then
2402: target_phys_bits=$hostlongbits
2403: fi
2404: case "$target_arch2" in
2405: i386|x86_64)
2406: if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
1.1.1.11 root 2407: echo "CONFIG_XEN=y" >> $config_target_mak
1.1.1.9 root 2408: fi
2409: esac
2410: case "$target_arch2" in
1.1.1.11 root 2411: i386|x86_64|ppcemb|ppc|ppc64|s390x)
1.1.1.9 root 2412: # Make sure the target and host cpus are compatible
2413: if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
2414: \( "$target_arch2" = "$cpu" -o \
2415: \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
1.1.1.11 root 2416: \( "$target_arch2" = "ppc64" -a "$cpu" = "ppc" \) -o \
1.1.1.9 root 2417: \( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \
2418: \( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then
1.1.1.11 root 2419: echo "CONFIG_KVM=y" >> $config_target_mak
2420: echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
1.1.1.9 root 2421: fi
2422: esac
1.1.1.11 root 2423: echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
1.1 root 2424: if test "$target_bigendian" = "yes" ; then
1.1.1.11 root 2425: echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
1.1 root 2426: fi
2427: if test "$target_softmmu" = "yes" ; then
1.1.1.11 root 2428: echo "CONFIG_SOFTMMU=y" >> $config_target_mak
2429: echo "LIBS+=$libs_softmmu" >> $config_target_mak
2430: echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_target_mak
2431: echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
1.1 root 2432: fi
2433: if test "$target_user_only" = "yes" ; then
1.1.1.11 root 2434: echo "CONFIG_USER_ONLY=y" >> $config_target_mak
1.1 root 2435: fi
1.1.1.5 root 2436: if test "$target_linux_user" = "yes" ; then
1.1.1.11 root 2437: echo "CONFIG_LINUX_USER=y" >> $config_target_mak
1.1.1.5 root 2438: fi
2439: if test "$target_darwin_user" = "yes" ; then
1.1.1.11 root 2440: echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
1.1.1.5 root 2441: fi
1.1.1.7 root 2442: list=""
2443: if test ! -z "$gdb_xml_files" ; then
2444: for x in $gdb_xml_files; do
2445: list="$list $source_path/gdb-xml/$x"
2446: done
1.1.1.11 root 2447: echo "TARGET_XML_FILES=$list" >> $config_target_mak
1.1.1.7 root 2448: fi
2449:
1.1.1.9 root 2450: case "$target_arch2" in
1.1.1.11 root 2451: arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|s390x|sparc|sparc64|sparc32plus)
2452: echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
2453: ;;
2454: *)
2455: echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak
1.1.1.9 root 2456: ;;
2457: esac
2458:
1.1.1.4 root 2459: if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1.1.1.11 root 2460: echo "TARGET_HAS_BFLT=y" >> $config_target_mak
1.1.1.4 root 2461: fi
1.1.1.7 root 2462: if test "$target_user_only" = "yes" \
2463: -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1.1.1.11 root 2464: echo "CONFIG_USE_NPTL=y" >> $config_target_mak
1.1.1.7 root 2465: fi
1.1.1.6 root 2466: # 32 bit ELF loader in addition to native 64 bit loader?
2467: if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1.1.1.11 root 2468: echo "TARGET_HAS_ELFLOAD32=y" >> $config_target_mak
2469: fi
2470: if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
2471: echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
1.1 root 2472: fi
1.1.1.7 root 2473: if test "$target_bsd_user" = "yes" ; then
1.1.1.11 root 2474: echo "CONFIG_BSD_USER=y" >> $config_target_mak
2475: fi
2476:
2477: # generate QEMU_CFLAGS/LDFLAGS for targets
2478:
2479: cflags=""
2480: ldflags=""
2481:
2482: if test "$ARCH" = "sparc64" ; then
2483: cflags="-I\$(SRC_PATH)/tcg/sparc $cflags"
2484: elif test "$ARCH" = "s390x" ; then
2485: cflags="-I\$(SRC_PATH)/tcg/s390 $cflags"
2486: else
2487: cflags="-I\$(SRC_PATH)/tcg/\$(ARCH) $cflags"
2488: fi
2489: cflags="-I\$(SRC_PATH)/tcg $cflags"
2490: cflags="-I\$(SRC_PATH)/fpu $cflags"
2491:
2492: for i in $ARCH $TARGET_BASE_ARCH ; do
2493: case "$i" in
2494: alpha)
2495: echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
2496: ;;
2497: arm)
2498: echo "CONFIG_ARM_DIS=y" >> $config_target_mak
2499: ;;
2500: cris)
2501: echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
2502: ;;
2503: hppa)
2504: echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
2505: ;;
2506: i386|x86_64)
2507: echo "CONFIG_I386_DIS=y" >> $config_target_mak
2508: ;;
2509: m68k)
2510: echo "CONFIG_M68K_DIS=y" >> $config_target_mak
2511: ;;
2512: microblaze)
2513: echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
2514: ;;
2515: mips*)
2516: echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
2517: ;;
2518: ppc*)
2519: echo "CONFIG_PPC_DIS=y" >> $config_target_mak
2520: ;;
2521: s390*)
2522: echo "CONFIG_S390_DIS=y" >> $config_target_mak
2523: ;;
2524: sh4)
2525: echo "CONFIG_SH4_DIS=y" >> $config_target_mak
2526: ;;
2527: sparc*)
2528: echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
2529: ;;
2530: esac
2531: done
2532:
2533: case "$ARCH" in
2534: alpha)
2535: # Ensure there's only a single GP
2536: cflags="-msmall-data $cflags"
2537: ;;
2538: ia64)
2539: cflags="-mno-sdata $cflags"
2540: ;;
2541: esac
2542:
2543: if test "$target_softmmu" = "yes" ; then
2544: case "$TARGET_BASE_ARCH" in
2545: arm)
2546: cflags="-DHAS_AUDIO $cflags"
2547: ;;
2548: i386|mips|ppc)
2549: cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
2550: ;;
2551: esac
1.1.1.7 root 2552: fi
1.1 root 2553:
1.1.1.11 root 2554: if test "$target_user_only" = "yes" -a "$static" = "no" -a \
2555: "$user_pie" = "yes" ; then
2556: cflags="-fpie $cflags"
2557: ldflags="-pie $ldflags"
2558: fi
1.1.1.9 root 2559:
1.1.1.11 root 2560: if test "$target_softmmu" = "yes" -a \( \
2561: "$TARGET_ARCH" = "microblaze" -o \
2562: "$TARGET_ARCH" = "cris" \) ; then
2563: echo "CONFIG_NEED_MMU=y" >> $config_target_mak
2564: fi
2565:
2566: if test "$gprof" = "yes" ; then
2567: echo "TARGET_GPROF=yes" >> $config_target_mak
2568: if test "$target_linux_user" = "yes" ; then
2569: cflags="-p $cflags"
2570: ldflags="-p $ldflags"
2571: fi
2572: if test "$target_softmmu" = "yes" ; then
2573: ldflags="-p $ldflags"
2574: echo "GPROF_CFLAGS=-p" >> $config_target_mak
2575: fi
2576: fi
2577:
2578: linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
2579: if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
2580: case "$ARCH" in
2581: sparc)
2582: # -static is used to avoid g1/g3 usage by the dynamic linker
2583: ldflags="$linker_script -static $ldflags"
2584: ;;
2585: ia64)
2586: ldflags="-Wl,-G0 $linker_script -static $ldflags"
2587: ;;
2588: i386|x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
2589: ldflags="$linker_script $ldflags"
2590: ;;
2591: esac
2592: fi
2593: if test "$target_softmmu" = "yes" ; then
2594: case "$ARCH" in
2595: ia64)
2596: ldflags="-Wl,-G0 $linker_script -static $ldflags"
2597: ;;
2598: esac
2599: fi
2600:
2601: echo "LDFLAGS+=$ldflags" >> $config_target_mak
2602: echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
1.1 root 2603:
2604: done # for target in $targets
2605:
2606: # build tree in object directory if source path is different from current one
2607: if test "$source_path_used" = "yes" ; then
1.1.1.11 root 2608: DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
2609: DIRS="$DIRS roms/seabios roms/vgabios"
1.1 root 2610: FILES="Makefile tests/Makefile"
1.1.1.6 root 2611: FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
1.1.1.7 root 2612: FILES="$FILES tests/test-mmap.c"
1.1.1.11 root 2613: FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
2614: FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
2615: for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
2616: FILES="$FILES pc-bios/`basename $bios_file`"
2617: done
1.1 root 2618: for dir in $DIRS ; do
2619: mkdir -p $dir
2620: done
1.1.1.3 root 2621: # remove the link and recreate it, as not all "ln -sf" overwrite the link
1.1 root 2622: for f in $FILES ; do
1.1.1.3 root 2623: rm -f $f
2624: ln -s $source_path/$f $f
1.1 root 2625: done
2626: fi
1.1.1.9 root 2627:
1.1.1.11 root 2628: # temporary config to build submodules
2629: for rom in seabios vgabios ; do
2630: config_mak=roms/$rom/config.mak
2631: echo "# Automatically generated by configure - do not modify" >> $config_mak
2632: echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
2633: echo "CC=$cc" >> $config_mak
2634: echo "BCC=bcc" >> $config_mak
2635: echo "CPP=${cross_prefix}cpp" >> $config_mak
2636: echo "OBJCOPY=objcopy" >> $config_mak
2637: echo "IASL=iasl" >> $config_mak
2638: echo "HOST_CC=$host_cc" >> $config_mak
2639: echo "LD=$ld" >> $config_mak
2640: done
2641:
1.1.1.9 root 2642: for hwlib in 32 64; do
2643: d=libhw$hwlib
2644: mkdir -p $d
2645: rm -f $d/Makefile
2646: ln -s $source_path/Makefile.hw $d/Makefile
2647: echo "HWLIB=libqemuhw$hwlib.a" > $d/config.mak
1.1.1.11 root 2648: echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" >> $d/config.mak
1.1.1.9 root 2649: done
1.1.1.11 root 2650:
2651: d=libuser
2652: mkdir -p $d
2653: rm -f $d/Makefile
2654: ln -s $source_path/Makefile.user $d/Makefile
1.1.1.12! root 2655: if test "$static" = "no" -a "$user_pie" = "yes" ; then
! 2656: echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
! 2657: fi
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.