|
|
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.14 root 18: # NB: do not call "exit" in the trap handler; this is buggy with some shells;
19: # see <[email protected]>
20: trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
21: rm -f config.log
1.1.1.11 root 22:
23: compile_object() {
1.1.1.14 root 24: echo $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log
25: $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log 2>&1
1.1.1.11 root 26: }
27:
28: compile_prog() {
29: local_cflags="$1"
30: local_ldflags="$2"
1.1.1.14 root 31: echo $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log
32: $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log 2>&1
33: }
34:
35: # symbolically link $1 to $2. Portable version of "ln -sf".
36: symlink() {
37: rm -f $2
38: ln -s $1 $2
1.1.1.11 root 39: }
1.1 root 40:
1.1.1.13 root 41: # check whether a command is available to this shell (may be either an
42: # executable or a builtin)
43: has() {
44: type "$1" >/dev/null 2>&1
45: }
46:
47: # search for an executable in PATH
48: path_of() {
49: local_command="$1"
50: local_ifs="$IFS"
51: local_dir=""
52:
53: # pathname has a dir component?
54: if [ "${local_command#*/}" != "$local_command" ]; then
55: if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
56: echo "$local_command"
57: return 0
58: fi
59: fi
60: if [ -z "$local_command" ]; then
61: return 1
62: fi
63:
64: IFS=:
65: for local_dir in $PATH; do
66: if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
67: echo "$local_dir/$local_command"
68: IFS="${local_ifs:-$(printf ' \t\n')}"
69: return 0
70: fi
71: done
72: # not found
73: IFS="${local_ifs:-$(printf ' \t\n')}"
74: return 1
75: }
76:
1.1 root 77: # default parameters
1.1.1.14 root 78: source_path=`dirname "$0"`
1.1.1.11 root 79: cpu=""
1.1 root 80: interp_prefix="/usr/gnemul/qemu-%M"
81: static="no"
1.1.1.11 root 82: sparc_cpu=""
1.1 root 83: cross_prefix=""
1.1.1.7 root 84: audio_drv_list=""
1.1.1.14 root 85: audio_card_list="ac97 es1370 sb16 hda"
86: audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
1.1.1.11 root 87: block_drv_whitelist=""
1.1 root 88: host_cc="gcc"
1.1.1.11 root 89: helper_cflags=""
90: libs_softmmu=""
91: libs_tools=""
92: audio_pt_int=""
93: audio_win_int=""
1.1.1.14 root 94: cc_i386=i386-pc-linux-gnu-gcc
95:
96: target_list=""
97:
98: # Default value for a variable defining feature "foo".
99: # * foo="no" feature will only be used if --enable-foo arg is given
100: # * foo="" feature will be searched for, and if found, will be used
101: # unless --disable-foo is given
102: # * foo="yes" this value will only be set by --enable-foo flag.
103: # feature will searched for,
104: # if not found, configure exits with error
105: #
106: # Always add --enable-foo and --disable-foo command line args.
107: # Distributions want to ensure that several features are compiled in, and it
108: # is impossible without a --enable-foo that exits if a feature is not found.
109:
110: bluez=""
111: brlapi=""
112: curl=""
113: curses=""
114: docs=""
115: fdt=""
116: kvm=""
117: nptl=""
118: sdl=""
1.1.1.16! root 119: vnc="yes"
1.1.1.14 root 120: sparse="no"
121: uuid=""
122: vde=""
123: vnc_tls=""
124: vnc_sasl=""
125: vnc_jpeg=""
126: vnc_png=""
127: vnc_thread="no"
128: xen=""
1.1.1.16! root 129: xen_ctrl_version=""
1.1.1.14 root 130: linux_aio=""
131: attr=""
132: vhost_net=""
133: xfs=""
134:
135: gprof="no"
136: debug_tcg="no"
137: debug_mon="no"
138: debug="no"
139: strip_opt="yes"
140: bigendian="no"
141: mingw32="no"
142: EXESUF=""
143: prefix="/usr/local"
144: mandir="\${prefix}/share/man"
145: datadir="\${prefix}/share/qemu"
146: docdir="\${prefix}/share/doc/qemu"
147: bindir="\${prefix}/bin"
1.1.1.16! root 148: libdir="\${prefix}/lib"
1.1.1.14 root 149: sysconfdir="\${prefix}/etc"
150: confsuffix="/qemu"
151: slirp="yes"
152: fmod_lib=""
153: fmod_inc=""
154: oss_lib=""
155: bsd="no"
156: linux="no"
157: solaris="no"
158: profiler="no"
159: cocoa="no"
160: softmmu="yes"
161: linux_user="no"
162: darwin_user="no"
163: bsd_user="no"
164: guest_base=""
165: uname_release=""
166: io_thread="no"
167: mixemu="no"
168: aix="no"
169: blobs="yes"
170: pkgversion=""
171: check_utests="no"
172: user_pie="no"
173: zero_malloc=""
174: trace_backend="nop"
175: trace_file="trace"
176: spice=""
177: rbd=""
1.1.1.16! root 178: smartcard=""
! 179: smartcard_nss=""
! 180: usb_redir=""
! 181: opengl=""
! 182: guest_agent="yes"
1.1.1.7 root 183:
184: # parse CC options first
185: for opt do
186: optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
187: case "$opt" in
188: --cross-prefix=*) cross_prefix="$optarg"
189: ;;
1.1.1.14 root 190: --cc=*) CC="$optarg"
191: ;;
192: --source-path=*) source_path="$optarg"
1.1.1.7 root 193: ;;
1.1.1.11 root 194: --cpu=*) cpu="$optarg"
195: ;;
196: --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
197: ;;
198: --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
199: ;;
200: --sparc_cpu=*)
201: sparc_cpu="$optarg"
202: case $sparc_cpu in
203: v7|v8|v8plus|v8plusa)
204: cpu="sparc"
205: ;;
206: v9)
207: cpu="sparc64"
208: ;;
209: *)
210: echo "undefined SPARC architecture. Exiting";
211: exit 1
212: ;;
213: esac
214: ;;
1.1.1.7 root 215: esac
216: done
217: # OS specific
218: # Using uname is really, really broken. Once we have the right set of checks
219: # we can eliminate it's usage altogether
220:
1.1.1.14 root 221: cc="${cross_prefix}${CC-gcc}"
222: ar="${cross_prefix}${AR-ar}"
223: objcopy="${cross_prefix}${OBJCOPY-objcopy}"
224: ld="${cross_prefix}${LD-ld}"
225: strip="${cross_prefix}${STRIP-strip}"
226: windres="${cross_prefix}${WINDRES-windres}"
227: pkg_config="${cross_prefix}${PKG_CONFIG-pkg-config}"
228: sdl_config="${cross_prefix}${SDL_CONFIG-sdl-config}"
1.1.1.7 root 229:
1.1.1.11 root 230: # default flags for all hosts
231: QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
232: CFLAGS="-g $CFLAGS"
1.1.1.16! root 233: QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
1.1.1.11 root 234: QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
235: QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
1.1.1.13 root 236: QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
1.1.1.14 root 237: QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
1.1.1.11 root 238: LDFLAGS="-g $LDFLAGS"
239:
1.1.1.14 root 240: # make source path absolute
241: source_path=`cd "$source_path"; pwd`
1.1.1.7 root 242:
243: check_define() {
244: cat > $TMPC <<EOF
245: #if !defined($1)
246: #error Not defined
247: #endif
248: int main(void) { return 0; }
249: EOF
1.1.1.11 root 250: compile_object
1.1.1.7 root 251: }
252:
1.1.1.11 root 253: if test ! -z "$cpu" ; then
254: # command line argument
255: :
256: elif check_define __i386__ ; then
1.1.1.7 root 257: cpu="i386"
258: elif check_define __x86_64__ ; then
259: cpu="x86_64"
260: elif check_define __sparc__ ; then
261: # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
262: # They must be specified using --sparc_cpu
263: if check_define __arch64__ ; then
264: cpu="sparc64"
265: else
266: cpu="sparc"
267: fi
268: elif check_define _ARCH_PPC ; then
269: if check_define _ARCH_PPC64 ; then
270: cpu="ppc64"
271: else
272: cpu="ppc"
273: fi
1.1.1.11 root 274: elif check_define __mips__ ; then
275: cpu="mips"
1.1.1.13 root 276: elif check_define __ia64__ ; then
277: cpu="ia64"
278: elif check_define __s390__ ; then
279: if check_define __s390x__ ; then
280: cpu="s390x"
281: else
282: cpu="s390"
283: fi
1.1.1.7 root 284: else
285: cpu=`uname -m`
286: fi
287:
1.1 root 288: case "$cpu" in
1.1.1.16! root 289: alpha|cris|ia64|lm32|m68k|microblaze|ppc|ppc64|sparc64|unicore32)
1.1.1.11 root 290: cpu="$cpu"
291: ;;
1.1 root 292: i386|i486|i586|i686|i86pc|BePC)
293: cpu="i386"
294: ;;
1.1.1.7 root 295: x86_64|amd64)
296: cpu="x86_64"
297: ;;
1.1 root 298: armv*b)
299: cpu="armv4b"
300: ;;
301: armv*l)
302: cpu="armv4l"
303: ;;
1.1.1.7 root 304: parisc|parisc64)
305: cpu="hppa"
1.1 root 306: ;;
1.1.1.11 root 307: mips*)
1.1 root 308: cpu="mips"
309: ;;
1.1.1.11 root 310: s390)
1.1 root 311: cpu="s390"
312: ;;
1.1.1.11 root 313: s390x)
314: cpu="s390x"
315: ;;
1.1.1.6 root 316: sparc|sun4[cdmuv])
1.1 root 317: cpu="sparc"
318: ;;
319: *)
1.1.1.13 root 320: echo "Unsupported CPU = $cpu"
321: exit 1
1.1 root 322: ;;
323: esac
1.1.1.11 root 324:
1.1 root 325: # OS specific
1.1.1.7 root 326: if check_define __linux__ ; then
327: targetos="Linux"
328: elif check_define _WIN32 ; then
329: targetos='MINGW32'
1.1.1.9 root 330: elif check_define __OpenBSD__ ; then
331: targetos='OpenBSD'
332: elif check_define __sun__ ; then
333: targetos='SunOS'
1.1.1.14 root 334: elif check_define __HAIKU__ ; then
335: targetos='Haiku'
1.1.1.7 root 336: else
337: targetos=`uname -s`
338: fi
1.1.1.11 root 339:
1.1 root 340: case $targetos in
341: CYGWIN*)
1.1.1.11 root 342: mingw32="yes"
343: QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
344: audio_possible_drivers="winwave sdl"
345: audio_drv_list="winwave"
1.1 root 346: ;;
347: MINGW32*)
1.1.1.11 root 348: mingw32="yes"
349: audio_possible_drivers="winwave dsound sdl fmod"
350: audio_drv_list="winwave"
1.1.1.6 root 351: ;;
352: GNU/kFreeBSD)
1.1.1.11 root 353: bsd="yes"
354: audio_drv_list="oss"
355: audio_possible_drivers="oss sdl esd pa"
1.1 root 356: ;;
357: FreeBSD)
1.1.1.11 root 358: bsd="yes"
1.1.1.14 root 359: make="${MAKE-gmake}"
1.1.1.11 root 360: audio_drv_list="oss"
361: audio_possible_drivers="oss sdl esd pa"
1.1.1.13 root 362: # needed for kinfo_getvmmap(3) in libutil.h
363: LIBS="-lutil $LIBS"
1.1 root 364: ;;
1.1.1.9 root 365: DragonFly)
1.1.1.11 root 366: bsd="yes"
1.1.1.14 root 367: make="${MAKE-gmake}"
1.1.1.11 root 368: audio_drv_list="oss"
369: audio_possible_drivers="oss sdl esd pa"
1.1.1.9 root 370: ;;
1.1 root 371: NetBSD)
1.1.1.11 root 372: bsd="yes"
1.1.1.14 root 373: make="${MAKE-gmake}"
1.1.1.11 root 374: audio_drv_list="oss"
375: audio_possible_drivers="oss sdl esd"
376: oss_lib="-lossaudio"
1.1 root 377: ;;
378: OpenBSD)
1.1.1.11 root 379: bsd="yes"
1.1.1.14 root 380: make="${MAKE-gmake}"
1.1.1.11 root 381: audio_drv_list="oss"
382: audio_possible_drivers="oss sdl esd"
383: oss_lib="-lossaudio"
1.1 root 384: ;;
385: Darwin)
1.1.1.11 root 386: bsd="yes"
387: darwin="yes"
388: # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can
389: # run 64-bit userspace code
390: if [ "$cpu" = "i386" ] ; then
1.1.1.7 root 391: is_x86_64=`sysctl -n hw.optional.x86_64`
392: [ "$is_x86_64" = "1" ] && cpu=x86_64
1.1.1.11 root 393: fi
394: if [ "$cpu" = "x86_64" ] ; then
395: QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
396: LDFLAGS="-arch x86_64 $LDFLAGS"
397: else
398: QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
399: fi
400: darwin_user="yes"
401: cocoa="yes"
402: audio_drv_list="coreaudio"
403: audio_possible_drivers="coreaudio sdl fmod"
404: LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
405: libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
1.1 root 406: ;;
1.1.1.3 root 407: SunOS)
1.1.1.11 root 408: solaris="yes"
1.1.1.14 root 409: make="${MAKE-gmake}"
410: install="${INSTALL-ginstall}"
1.1.1.11 root 411: ld="gld"
1.1.1.16! root 412: smbd="${SMBD-/usr/sfw/sbin/smbd}"
1.1.1.11 root 413: needs_libsunmath="no"
414: solarisrev=`uname -r | cut -f2 -d.`
415: # have to select again, because `uname -m` returns i86pc
416: # even on an x86_64 box.
417: solariscpu=`isainfo -k`
418: if test "${solariscpu}" = "amd64" ; then
419: cpu="x86_64"
420: fi
421: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
422: if test "$solarisrev" -le 9 ; then
423: if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
424: needs_libsunmath="yes"
425: QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
426: LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
427: LIBS="-lsunmath $LIBS"
428: else
429: echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
430: echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
431: echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
432: echo "Studio 11 can be downloaded from www.sun.com."
433: exit 1
434: fi
1.1.1.6 root 435: fi
1.1.1.11 root 436: fi
437: if test -f /usr/include/sys/soundcard.h ; then
438: audio_drv_list="oss"
439: fi
440: audio_possible_drivers="oss sdl"
441: # needed for CMSG_ macros in sys/socket.h
442: QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
443: # needed for TIOCWIN* defines in termios.h
444: QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
445: QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
446: LIBS="-lsocket -lnsl -lresolv $LIBS"
1.1.1.7 root 447: ;;
448: AIX)
1.1.1.11 root 449: aix="yes"
1.1.1.14 root 450: make="${MAKE-gmake}"
451: ;;
452: Haiku)
453: haiku="yes"
454: QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
455: LIBS="-lposix_error_mapper -lnetwork $LIBS"
1.1.1.3 root 456: ;;
1.1.1.2 root 457: *)
1.1.1.11 root 458: audio_drv_list="oss"
459: audio_possible_drivers="oss alsa sdl esd pa"
460: linux="yes"
461: linux_user="yes"
462: usb="linux"
1.1.1.16! root 463: kvm="yes"
! 464: vhost_net="yes"
1.1.1.11 root 465: if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
1.1.1.7 root 466: audio_possible_drivers="$audio_possible_drivers fmod"
1.1.1.11 root 467: fi
1.1 root 468: ;;
469: esac
470:
471: if [ "$bsd" = "yes" ] ; then
1.1.1.3 root 472: if [ "$darwin" != "yes" ] ; then
1.1.1.7 root 473: usb="bsd"
1.1 root 474: fi
1.1.1.7 root 475: bsd_user="yes"
1.1 root 476: fi
477:
1.1.1.14 root 478: : ${make=${MAKE-make}}
479: : ${install=${INSTALL-install}}
1.1.1.16! root 480: : ${python=${PYTHON-python}}
! 481: : ${smbd=${SMBD-/usr/sbin/smbd}}
1.1.1.14 root 482:
1.1.1.11 root 483: if test "$mingw32" = "yes" ; then
484: EXESUF=".exe"
485: QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
1.1.1.13 root 486: # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
487: QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
1.1.1.16! root 488: LIBS="-lwinmm -lws2_32 -liberty -liphlpapi $LIBS"
1.1.1.13 root 489: prefix="c:/Program Files/Qemu"
490: mandir="\${prefix}"
491: datadir="\${prefix}"
492: docdir="\${prefix}"
493: bindir="\${prefix}"
494: sysconfdir="\${prefix}"
495: confsuffix=""
1.1.1.11 root 496: fi
497:
1.1.1.9 root 498: werror=""
1.1.1.6 root 499:
1.1 root 500: for opt do
1.1.1.3 root 501: optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
1.1 root 502: case "$opt" in
1.1.1.2 root 503: --help|-h) show_help=yes
504: ;;
1.1.1.16! root 505: --version|-V) exec cat $source_path/VERSION
! 506: ;;
1.1.1.3 root 507: --prefix=*) prefix="$optarg"
1.1 root 508: ;;
1.1.1.3 root 509: --interp-prefix=*) interp_prefix="$optarg"
1.1 root 510: ;;
1.1.1.14 root 511: --source-path=*)
1.1 root 512: ;;
1.1.1.7 root 513: --cross-prefix=*)
1.1 root 514: ;;
1.1.1.7 root 515: --cc=*)
1.1 root 516: ;;
1.1.1.3 root 517: --host-cc=*) host_cc="$optarg"
1.1 root 518: ;;
1.1.1.3 root 519: --make=*) make="$optarg"
1.1 root 520: ;;
1.1.1.3 root 521: --install=*) install="$optarg"
1.1 root 522: ;;
1.1.1.16! root 523: --python=*) python="$optarg"
! 524: ;;
! 525: --smbd=*) smbd="$optarg"
! 526: ;;
1.1.1.11 root 527: --extra-cflags=*)
1.1 root 528: ;;
1.1.1.11 root 529: --extra-ldflags=*)
1.1 root 530: ;;
1.1.1.11 root 531: --cpu=*)
1.1.1.3 root 532: ;;
533: --target-list=*) target_list="$optarg"
1.1 root 534: ;;
1.1.1.14 root 535: --enable-trace-backend=*) trace_backend="$optarg"
536: ;;
537: --with-trace-file=*) trace_file="$optarg"
538: ;;
1.1 root 539: --enable-gprof) gprof="yes"
540: ;;
1.1.1.13 root 541: --static)
542: static="yes"
543: LDFLAGS="-static $LDFLAGS"
544: ;;
545: --mandir=*) mandir="$optarg"
546: ;;
547: --bindir=*) bindir="$optarg"
548: ;;
1.1.1.16! root 549: --libdir=*) libdir="$optarg"
! 550: ;;
1.1.1.13 root 551: --datadir=*) datadir="$optarg"
552: ;;
553: --docdir=*) docdir="$optarg"
554: ;;
555: --sysconfdir=*) sysconfdir="$optarg"
1.1 root 556: ;;
557: --disable-sdl) sdl="no"
558: ;;
1.1.1.11 root 559: --enable-sdl) sdl="yes"
560: ;;
1.1.1.16! root 561: --disable-vnc) vnc="no"
! 562: ;;
! 563: --enable-vnc) vnc="yes"
! 564: ;;
1.1.1.7 root 565: --fmod-lib=*) fmod_lib="$optarg"
1.1.1.2 root 566: ;;
1.1.1.7 root 567: --fmod-inc=*) fmod_inc="$optarg"
1.1.1.2 root 568: ;;
1.1.1.7 root 569: --oss-lib=*) oss_lib="$optarg"
1.1.1.2 root 570: ;;
1.1.1.7 root 571: --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
1.1 root 572: ;;
1.1.1.7 root 573: --audio-drv-list=*) audio_drv_list="$optarg"
1.1 root 574: ;;
1.1.1.11 root 575: --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
576: ;;
1.1.1.9 root 577: --enable-debug-tcg) debug_tcg="yes"
578: ;;
579: --disable-debug-tcg) debug_tcg="no"
580: ;;
1.1.1.13 root 581: --enable-debug-mon) debug_mon="yes"
582: ;;
583: --disable-debug-mon) debug_mon="no"
584: ;;
1.1.1.9 root 585: --enable-debug)
586: # Enable debugging options that aren't excessively noisy
587: debug_tcg="yes"
1.1.1.13 root 588: debug_mon="yes"
1.1.1.9 root 589: debug="yes"
590: strip_opt="no"
591: ;;
1.1.1.7 root 592: --enable-sparse) sparse="yes"
1.1 root 593: ;;
1.1.1.7 root 594: --disable-sparse) sparse="no"
1.1.1.6 root 595: ;;
1.1.1.9 root 596: --disable-strip) strip_opt="no"
597: ;;
1.1.1.7 root 598: --disable-vnc-tls) vnc_tls="no"
1.1.1.2 root 599: ;;
1.1.1.11 root 600: --enable-vnc-tls) vnc_tls="yes"
601: ;;
1.1.1.9 root 602: --disable-vnc-sasl) vnc_sasl="no"
603: ;;
1.1.1.11 root 604: --enable-vnc-sasl) vnc_sasl="yes"
605: ;;
1.1.1.13 root 606: --disable-vnc-jpeg) vnc_jpeg="no"
607: ;;
608: --enable-vnc-jpeg) vnc_jpeg="yes"
609: ;;
610: --disable-vnc-png) vnc_png="no"
611: ;;
612: --enable-vnc-png) vnc_png="yes"
613: ;;
614: --disable-vnc-thread) vnc_thread="no"
615: ;;
616: --enable-vnc-thread) vnc_thread="yes"
617: ;;
1.1 root 618: --disable-slirp) slirp="no"
1.1.1.2 root 619: ;;
1.1.1.11 root 620: --disable-uuid) uuid="no"
621: ;;
622: --enable-uuid) uuid="yes"
623: ;;
1.1.1.7 root 624: --disable-vde) vde="no"
1.1.1.2 root 625: ;;
1.1.1.11 root 626: --enable-vde) vde="yes"
1.1.1.2 root 627: ;;
1.1.1.9 root 628: --disable-xen) xen="no"
629: ;;
1.1.1.11 root 630: --enable-xen) xen="yes"
631: ;;
1.1.1.7 root 632: --disable-brlapi) brlapi="no"
633: ;;
1.1.1.11 root 634: --enable-brlapi) brlapi="yes"
635: ;;
1.1.1.7 root 636: --disable-bluez) bluez="no"
637: ;;
1.1.1.11 root 638: --enable-bluez) bluez="yes"
639: ;;
1.1.1.7 root 640: --disable-kvm) kvm="no"
641: ;;
1.1.1.11 root 642: --enable-kvm) kvm="yes"
643: ;;
1.1.1.14 root 644: --disable-spice) spice="no"
645: ;;
646: --enable-spice) spice="yes"
647: ;;
1.1.1.3 root 648: --enable-profiler) profiler="yes"
649: ;;
1.1.1.7 root 650: --enable-cocoa)
651: cocoa="yes" ;
652: sdl="no" ;
653: audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
1.1.1.2 root 654: ;;
1.1.1.3 root 655: --disable-system) softmmu="no"
656: ;;
657: --enable-system) softmmu="yes"
658: ;;
1.1.1.11 root 659: --disable-user)
660: linux_user="no" ;
661: bsd_user="no" ;
662: darwin_user="no"
663: ;;
664: --enable-user) ;;
1.1.1.5 root 665: --disable-linux-user) linux_user="no"
1.1.1.3 root 666: ;;
1.1.1.5 root 667: --enable-linux-user) linux_user="yes"
1.1.1.3 root 668: ;;
1.1.1.5 root 669: --disable-darwin-user) darwin_user="no"
670: ;;
671: --enable-darwin-user) darwin_user="yes"
1.1.1.4 root 672: ;;
1.1.1.7 root 673: --disable-bsd-user) bsd_user="no"
674: ;;
675: --enable-bsd-user) bsd_user="yes"
676: ;;
1.1.1.11 root 677: --enable-guest-base) guest_base="yes"
678: ;;
679: --disable-guest-base) guest_base="no"
680: ;;
681: --enable-user-pie) user_pie="yes"
682: ;;
683: --disable-user-pie) user_pie="no"
684: ;;
1.1.1.5 root 685: --enable-uname-release=*) uname_release="$optarg"
1.1.1.4 root 686: ;;
1.1.1.6 root 687: --sparc_cpu=*)
688: ;;
689: --enable-werror) werror="yes"
690: ;;
691: --disable-werror) werror="no"
692: ;;
1.1.1.7 root 693: --disable-curses) curses="no"
694: ;;
1.1.1.11 root 695: --enable-curses) curses="yes"
696: ;;
1.1.1.9 root 697: --disable-curl) curl="no"
698: ;;
1.1.1.11 root 699: --enable-curl) curl="yes"
700: ;;
701: --disable-fdt) fdt="no"
702: ;;
703: --enable-fdt) fdt="yes"
704: ;;
705: --disable-check-utests) check_utests="no"
706: ;;
707: --enable-check-utests) check_utests="yes"
708: ;;
1.1.1.7 root 709: --disable-nptl) nptl="no"
710: ;;
1.1.1.11 root 711: --enable-nptl) nptl="yes"
712: ;;
1.1.1.7 root 713: --enable-mixemu) mixemu="yes"
714: ;;
1.1.1.11 root 715: --disable-linux-aio) linux_aio="no"
1.1.1.9 root 716: ;;
1.1.1.11 root 717: --enable-linux-aio) linux_aio="yes"
1.1.1.7 root 718: ;;
1.1.1.13 root 719: --disable-attr) attr="no"
720: ;;
721: --enable-attr) attr="yes"
722: ;;
1.1.1.9 root 723: --enable-io-thread) io_thread="yes"
724: ;;
1.1.1.7 root 725: --disable-blobs) blobs="no"
726: ;;
1.1.1.9 root 727: --with-pkgversion=*) pkgversion=" ($optarg)"
728: ;;
1.1.1.11 root 729: --disable-docs) docs="no"
730: ;;
731: --enable-docs) docs="yes"
1.1.1.9 root 732: ;;
1.1.1.13 root 733: --disable-vhost-net) vhost_net="no"
734: ;;
735: --enable-vhost-net) vhost_net="yes"
736: ;;
1.1.1.16! root 737: --disable-opengl) opengl="no"
! 738: ;;
! 739: --enable-opengl) opengl="yes"
! 740: ;;
1.1.1.13 root 741: --*dir)
742: ;;
1.1.1.14 root 743: --disable-rbd) rbd="no"
744: ;;
745: --enable-rbd) rbd="yes"
746: ;;
1.1.1.16! root 747: --disable-smartcard) smartcard="no"
! 748: ;;
! 749: --enable-smartcard) smartcard="yes"
! 750: ;;
! 751: --disable-smartcard-nss) smartcard_nss="no"
! 752: ;;
! 753: --enable-smartcard-nss) smartcard_nss="yes"
! 754: ;;
! 755: --disable-usb-redir) usb_redir="no"
! 756: ;;
! 757: --enable-usb-redir) usb_redir="yes"
! 758: ;;
! 759: --enable-guest-agent) guest_agent="yes"
! 760: ;;
! 761: --disable-guest-agent) guest_agent="no"
! 762: ;;
1.1.1.6 root 763: *) echo "ERROR: unknown option $opt"; show_help="yes"
764: ;;
1.1 root 765: esac
766: done
767:
1.1.1.6 root 768: #
769: # If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
1.1.1.11 root 770: # QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
1.1.1.6 root 771: #
1.1.1.11 root 772: host_guest_base="no"
1.1.1.7 root 773: case "$cpu" in
1.1.1.11 root 774: sparc) case $sparc_cpu in
775: v7|v8)
776: QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
777: ;;
778: v8plus|v8plusa)
779: QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
780: ;;
781: *) # sparc_cpu not defined in the command line
782: QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
783: esac
784: LDFLAGS="-m32 $LDFLAGS"
785: QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
1.1.1.9 root 786: if test "$solaris" = "no" ; then
1.1.1.11 root 787: QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
788: helper_cflags="-ffixed-i0"
1.1.1.9 root 789: fi
1.1.1.6 root 790: ;;
1.1.1.11 root 791: sparc64)
792: QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
793: LDFLAGS="-m64 $LDFLAGS"
794: QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
795: if test "$solaris" != "no" ; then
796: QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
1.1.1.9 root 797: fi
1.1.1.6 root 798: ;;
799: s390)
1.1.1.13 root 800: QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
801: LDFLAGS="-m31 $LDFLAGS"
802: host_guest_base="yes"
803: ;;
804: s390x)
805: QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
806: LDFLAGS="-m64 $LDFLAGS"
807: host_guest_base="yes"
1.1.1.6 root 808: ;;
1.1.1.7 root 809: i386)
1.1.1.11 root 810: QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
811: LDFLAGS="-m32 $LDFLAGS"
1.1.1.14 root 812: cc_i386='$(CC) -m32'
1.1.1.11 root 813: helper_cflags="-fomit-frame-pointer"
814: host_guest_base="yes"
1.1.1.7 root 815: ;;
816: x86_64)
1.1.1.11 root 817: QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
818: LDFLAGS="-m64 $LDFLAGS"
1.1.1.14 root 819: cc_i386='$(CC) -m32'
1.1.1.11 root 820: host_guest_base="yes"
821: ;;
822: arm*)
823: host_guest_base="yes"
824: ;;
825: ppc*)
826: host_guest_base="yes"
1.1.1.7 root 827: ;;
1.1.1.13 root 828: mips*)
829: host_guest_base="yes"
830: ;;
831: ia64*)
832: host_guest_base="yes"
833: ;;
834: hppa*)
835: host_guest_base="yes"
836: ;;
1.1.1.16! root 837: unicore32*)
! 838: host_guest_base="yes"
! 839: ;;
1.1.1.6 root 840: esac
841:
1.1.1.11 root 842: [ -z "$guest_base" ] && guest_base="$host_guest_base"
843:
1.1.1.16! root 844:
! 845: default_target_list=""
! 846:
! 847: # these targets are portable
! 848: if [ "$softmmu" = "yes" ] ; then
! 849: default_target_list="\
! 850: i386-softmmu \
! 851: x86_64-softmmu \
! 852: arm-softmmu \
! 853: cris-softmmu \
! 854: lm32-softmmu \
! 855: m68k-softmmu \
! 856: microblaze-softmmu \
! 857: microblazeel-softmmu \
! 858: mips-softmmu \
! 859: mipsel-softmmu \
! 860: mips64-softmmu \
! 861: mips64el-softmmu \
! 862: ppc-softmmu \
! 863: ppcemb-softmmu \
! 864: ppc64-softmmu \
! 865: sh4-softmmu \
! 866: sh4eb-softmmu \
! 867: sparc-softmmu \
! 868: sparc64-softmmu \
! 869: s390x-softmmu \
! 870: "
! 871: fi
! 872: # the following are Linux specific
! 873: if [ "$linux_user" = "yes" ] ; then
! 874: default_target_list="${default_target_list}\
! 875: i386-linux-user \
! 876: x86_64-linux-user \
! 877: alpha-linux-user \
! 878: arm-linux-user \
! 879: armeb-linux-user \
! 880: cris-linux-user \
! 881: m68k-linux-user \
! 882: microblaze-linux-user \
! 883: microblazeel-linux-user \
! 884: mips-linux-user \
! 885: mipsel-linux-user \
! 886: ppc-linux-user \
! 887: ppc64-linux-user \
! 888: ppc64abi32-linux-user \
! 889: sh4-linux-user \
! 890: sh4eb-linux-user \
! 891: sparc-linux-user \
! 892: sparc64-linux-user \
! 893: sparc32plus-linux-user \
! 894: unicore32-linux-user \
! 895: s390x-linux-user \
! 896: "
! 897: fi
! 898: # the following are Darwin specific
! 899: if [ "$darwin_user" = "yes" ] ; then
! 900: default_target_list="$default_target_list i386-darwin-user ppc-darwin-user "
! 901: fi
! 902: # the following are BSD specific
! 903: if [ "$bsd_user" = "yes" ] ; then
! 904: default_target_list="${default_target_list}\
! 905: i386-bsd-user \
! 906: x86_64-bsd-user \
! 907: sparc-bsd-user \
! 908: sparc64-bsd-user \
! 909: "
! 910: fi
! 911:
1.1.1.3 root 912: if test x"$show_help" = x"yes" ; then
913: cat << EOF
914:
915: Usage: configure [options]
916: Options: [defaults in brackets after descriptions]
917:
918: EOF
919: echo "Standard options:"
920: echo " --help print this message"
921: echo " --prefix=PREFIX install in PREFIX [$prefix]"
922: echo " --interp-prefix=PREFIX where to find shared libraries, etc."
923: echo " use %M for cpu name [$interp_prefix]"
1.1.1.16! root 924: echo " --target-list=LIST set target list (default: build everything)"
! 925: echo "Available targets: $default_target_list" | \
! 926: fold -s -w 53 | sed -e 's/^/ /'
1.1.1.3 root 927: echo ""
928: echo "Advanced options (experts only):"
929: echo " --source-path=PATH path of source code [$source_path]"
930: echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
931: echo " --cc=CC use C compiler CC [$cc]"
1.1.1.13 root 932: echo " --host-cc=CC use C compiler CC [$host_cc] for code run at"
933: echo " build time"
1.1.1.11 root 934: echo " --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS"
1.1.1.9 root 935: echo " --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS"
1.1.1.3 root 936: echo " --make=MAKE use specified make [$make]"
937: echo " --install=INSTALL use specified install [$install]"
1.1.1.16! root 938: echo " --python=PYTHON use specified python [$python]"
! 939: echo " --smbd=SMBD use specified smbd [$smbd]"
1.1.1.3 root 940: echo " --static enable static build [$static]"
1.1.1.13 root 941: echo " --mandir=PATH install man pages in PATH"
942: echo " --datadir=PATH install firmware in PATH"
943: echo " --docdir=PATH install documentation in PATH"
944: echo " --bindir=PATH install binaries in PATH"
945: echo " --sysconfdir=PATH install config in PATH/qemu"
1.1.1.9 root 946: echo " --enable-debug-tcg enable TCG debugging"
947: echo " --disable-debug-tcg disable TCG debugging (default)"
948: echo " --enable-debug enable common debug build options"
1.1.1.7 root 949: echo " --enable-sparse enable sparse checker"
950: echo " --disable-sparse disable sparse checker (default)"
1.1.1.9 root 951: echo " --disable-strip disable stripping binaries"
1.1.1.6 root 952: echo " --disable-werror disable compilation abort on warning"
953: echo " --disable-sdl disable SDL"
1.1.1.11 root 954: echo " --enable-sdl enable SDL"
1.1.1.16! root 955: echo " --disable-vnc disable VNC"
! 956: echo " --enable-vnc enable VNC"
1.1.1.3 root 957: echo " --enable-cocoa enable COCOA (Mac OS X only)"
1.1.1.7 root 958: echo " --audio-drv-list=LIST set audio drivers list:"
959: echo " Available drivers: $audio_possible_drivers"
960: echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_list]"
961: echo " Available cards: $audio_possible_cards"
1.1.1.11 root 962: echo " --block-drv-whitelist=L set block driver whitelist"
963: echo " (affects only QEMU, not qemu-img)"
1.1.1.7 root 964: echo " --enable-mixemu enable mixer emulation"
1.1.1.9 root 965: echo " --disable-xen disable xen backend driver support"
1.1.1.11 root 966: echo " --enable-xen enable xen backend driver support"
1.1.1.7 root 967: echo " --disable-brlapi disable BrlAPI"
1.1.1.11 root 968: echo " --enable-brlapi enable BrlAPI"
1.1.1.6 root 969: echo " --disable-vnc-tls disable TLS encryption for VNC server"
1.1.1.11 root 970: echo " --enable-vnc-tls enable TLS encryption for VNC server"
1.1.1.9 root 971: echo " --disable-vnc-sasl disable SASL encryption for VNC server"
1.1.1.11 root 972: echo " --enable-vnc-sasl enable SASL encryption for VNC server"
1.1.1.13 root 973: echo " --disable-vnc-jpeg disable JPEG lossy compression for VNC server"
974: echo " --enable-vnc-jpeg enable JPEG lossy compression for VNC server"
975: echo " --disable-vnc-png disable PNG compression for VNC server (default)"
976: echo " --enable-vnc-png enable PNG compression for VNC server"
977: echo " --disable-vnc-thread disable threaded VNC server"
978: echo " --enable-vnc-thread enable threaded VNC server"
1.1.1.7 root 979: echo " --disable-curses disable curses output"
1.1.1.11 root 980: echo " --enable-curses enable curses output"
1.1.1.9 root 981: echo " --disable-curl disable curl connectivity"
1.1.1.11 root 982: echo " --enable-curl enable curl connectivity"
983: echo " --disable-fdt disable fdt device tree"
984: echo " --enable-fdt enable fdt device tree"
985: echo " --disable-check-utests disable check unit-tests"
986: echo " --enable-check-utests enable check unit-tests"
1.1.1.7 root 987: echo " --disable-bluez disable bluez stack connectivity"
1.1.1.11 root 988: echo " --enable-bluez enable bluez stack connectivity"
1.1.1.16! root 989: echo " --disable-slirp disable SLIRP userspace network connectivity"
1.1.1.7 root 990: echo " --disable-kvm disable KVM acceleration support"
1.1.1.11 root 991: echo " --enable-kvm enable KVM acceleration support"
1.1.1.7 root 992: echo " --disable-nptl disable usermode NPTL support"
1.1.1.11 root 993: echo " --enable-nptl enable usermode NPTL support"
1.1.1.3 root 994: echo " --enable-system enable all system emulation targets"
995: echo " --disable-system disable all system emulation targets"
1.1.1.11 root 996: echo " --enable-user enable supported user emulation targets"
997: echo " --disable-user disable all user emulation targets"
1.1.1.5 root 998: echo " --enable-linux-user enable all linux usermode emulation targets"
999: echo " --disable-linux-user disable all linux usermode emulation targets"
1000: echo " --enable-darwin-user enable all darwin usermode emulation targets"
1001: echo " --disable-darwin-user disable all darwin usermode emulation targets"
1.1.1.7 root 1002: echo " --enable-bsd-user enable all BSD usermode emulation targets"
1003: echo " --disable-bsd-user disable all BSD usermode emulation targets"
1.1.1.11 root 1004: echo " --enable-guest-base enable GUEST_BASE support for usermode"
1005: echo " emulation targets"
1006: echo " --disable-guest-base disable GUEST_BASE support"
1007: echo " --enable-user-pie build usermode emulation targets as PIE"
1008: echo " --disable-user-pie do not build usermode emulation targets as PIE"
1.1.1.3 root 1009: echo " --fmod-lib path to FMOD library"
1010: echo " --fmod-inc path to FMOD includes"
1.1.1.7 root 1011: echo " --oss-lib path to OSS library"
1.1.1.4 root 1012: echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
1.1.1.6 root 1013: echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
1.1.1.11 root 1014: echo " --disable-uuid disable uuid support"
1015: echo " --enable-uuid enable uuid support"
1.1.1.7 root 1016: echo " --disable-vde disable support for vde network"
1.1.1.11 root 1017: echo " --enable-vde enable support for vde network"
1018: echo " --disable-linux-aio disable Linux AIO support"
1019: echo " --enable-linux-aio enable Linux AIO support"
1.1.1.13 root 1020: echo " --disable-attr disables attr and xattr support"
1021: echo " --enable-attr enable attr and xattr support"
1.1.1.9 root 1022: echo " --enable-io-thread enable IO thread"
1.1.1.7 root 1023: echo " --disable-blobs disable installing provided firmware blobs"
1.1.1.13 root 1024: echo " --enable-docs enable documentation build"
1025: echo " --disable-docs disable documentation build"
1026: echo " --disable-vhost-net disable vhost-net acceleration support"
1027: echo " --enable-vhost-net enable vhost-net acceleration support"
1.1.1.14 root 1028: echo " --enable-trace-backend=B Set trace backend"
1029: echo " Available backends:" $("$source_path"/scripts/tracetool --list-backends)
1030: echo " --with-trace-file=NAME Full PATH,NAME of file to store traces"
1031: echo " Default:trace-<pid>"
1032: echo " --disable-spice disable spice"
1033: echo " --enable-spice enable spice"
1034: echo " --enable-rbd enable building the rados block device (rbd)"
1.1.1.16! root 1035: echo " --disable-smartcard disable smartcard support"
! 1036: echo " --enable-smartcard enable smartcard support"
! 1037: echo " --disable-smartcard-nss disable smartcard nss support"
! 1038: echo " --enable-smartcard-nss enable smartcard nss support"
! 1039: echo " --disable-usb-redir disable usb network redirection support"
! 1040: echo " --enable-usb-redir enable usb network redirection support"
! 1041: echo " --disable-guest-agent disable building of the QEMU Guest Agent"
! 1042: echo " --enable-guest-agent enable building of the QEMU Guest Agent"
1.1.1.3 root 1043: echo ""
1.1.1.5 root 1044: echo "NOTE: The object files are built at the place where configure is launched"
1.1.1.3 root 1045: exit 1
1046: fi
1047:
1.1.1.14 root 1048: # check that the C compiler works.
1049: cat > $TMPC <<EOF
1050: int main(void) {}
1051: EOF
1052:
1053: if compile_object ; then
1054: : C compiler works ok
1055: else
1056: echo "ERROR: \"$cc\" either does not exist or does not work"
1057: exit 1
1058: fi
1059:
1060: gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1061: gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1062: gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1.1.1.16! root 1063: gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
1.1.1.14 root 1064: cat > $TMPC << EOF
1065: int main(void) { return 0; }
1066: EOF
1067: for flag in $gcc_flags; do
1068: if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then
1069: QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1070: fi
1071: done
1072:
1.1.1.3 root 1073: #
1074: # Solaris specific configure tool chain decisions
1075: #
1076: if test "$solaris" = "yes" ; then
1.1.1.13 root 1077: if has $install; then
1078: :
1079: else
1.1.1.3 root 1080: echo "Solaris install program not found. Use --install=/usr/ucb/install or"
1081: echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
1082: echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1083: exit 1
1084: fi
1.1.1.13 root 1085: if test "`path_of $install`" = "/usr/sbin/install" ; then
1.1.1.3 root 1086: echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
1087: echo "try ginstall from the GNU fileutils available from www.blastwave.org"
1088: echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1089: exit 1
1090: fi
1.1.1.13 root 1091: if has ar; then
1092: :
1093: else
1.1.1.3 root 1094: echo "Error: No path includes ar"
1095: if test -f /usr/ccs/bin/ar ; then
1096: echo "Add /usr/ccs/bin to your path and rerun configure"
1097: fi
1098: exit 1
1099: fi
1.1.1.6 root 1100: fi
1.1.1.3 root 1101:
1.1.1.16! root 1102: if test "$guest_agent" != "no" ; then
! 1103: if has $python; then
! 1104: :
! 1105: else
! 1106: echo "Python not found. Use --python=/path/to/python"
! 1107: exit 1
! 1108: fi
! 1109: fi
1.1.1.3 root 1110:
1.1 root 1111: if test -z "$target_list" ; then
1.1.1.16! root 1112: target_list="$default_target_list"
1.1 root 1113: else
1.1.1.3 root 1114: target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1115: fi
1116: if test -z "$target_list" ; then
1117: echo "No targets enabled"
1118: exit 1
1.1 root 1119: fi
1.1.1.13 root 1120: # see if system emulation was really requested
1121: case " $target_list " in
1122: *"-softmmu "*) softmmu=yes
1123: ;;
1124: *) softmmu=no
1125: ;;
1126: esac
1.1 root 1127:
1.1.1.11 root 1128: feature_not_found() {
1129: feature=$1
1130:
1131: echo "ERROR"
1132: echo "ERROR: User requested feature $feature"
1133: echo "ERROR: configure was not able to find it"
1134: echo "ERROR"
1135: exit 1;
1136: }
1137:
1.1 root 1138: if test -z "$cross_prefix" ; then
1139:
1140: # ---
1141: # big/little endian test
1142: cat > $TMPC << EOF
1143: #include <inttypes.h>
1144: int main(int argc, char ** argv){
1.1.1.2 root 1145: volatile uint32_t i=0x01234567;
1146: return (*((uint8_t*)(&i))) == 0x67;
1.1 root 1147: }
1148: EOF
1149:
1.1.1.11 root 1150: if compile_prog "" "" ; then
1.1 root 1151: $TMPE && bigendian="yes"
1152: else
1153: echo big/little test failed
1154: fi
1155:
1156: else
1157:
1158: # if cross compiling, cannot launch a program, so make a static guess
1.1.1.11 root 1159: case "$cpu" in
1160: armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1161: bigendian=yes
1162: ;;
1163: esac
1.1 root 1164:
1165: fi
1166:
1.1.1.14 root 1167: # host long bits test, actually a pointer size test
1168: cat > $TMPC << EOF
1169: int sizeof_pointer_is_8[sizeof(void *) == 8 ? 1 : -1];
1170: EOF
1171: if compile_object; then
1172: hostlongbits=64
1173: else
1174: hostlongbits=32
1175: fi
1.1 root 1176:
1.1.1.11 root 1177:
1178: ##########################################
1179: # NPTL probe
1180:
1181: if test "$nptl" != "no" ; then
1182: cat > $TMPC <<EOF
1.1.1.7 root 1183: #include <sched.h>
1184: #include <linux/futex.h>
1185: void foo()
1186: {
1187: #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1188: #error bork
1189: #endif
1190: }
1191: EOF
1192:
1.1.1.11 root 1193: if compile_object ; then
1194: nptl=yes
1195: else
1196: if test "$nptl" = "yes" ; then
1197: feature_not_found "nptl"
1198: fi
1199: nptl=no
1200: fi
1.1.1.7 root 1201: fi
1202:
1203: ##########################################
1204: # zlib check
1205:
1206: cat > $TMPC << EOF
1207: #include <zlib.h>
1208: int main(void) { zlibVersion(); return 0; }
1209: EOF
1.1.1.11 root 1210: if compile_prog "" "-lz" ; then
1.1.1.7 root 1211: :
1212: else
1213: echo
1214: echo "Error: zlib check failed"
1215: echo "Make sure to have the zlib libs and headers installed."
1216: echo
1217: exit 1
1218: fi
1219:
1.1 root 1220: ##########################################
1.1.1.9 root 1221: # xen probe
1222:
1.1.1.11 root 1223: if test "$xen" != "no" ; then
1224: xen_libs="-lxenstore -lxenctrl -lxenguest"
1.1.1.16! root 1225:
! 1226: # Xen unstable
1.1.1.11 root 1227: cat > $TMPC <<EOF
1.1.1.9 root 1228: #include <xenctrl.h>
1229: #include <xs.h>
1.1.1.16! root 1230: #include <stdint.h>
! 1231: #include <xen/hvm/hvm_info_table.h>
! 1232: #if !defined(HVM_MAX_VCPUS)
! 1233: # error HVM_MAX_VCPUS not defined
! 1234: #endif
! 1235: int main(void) {
! 1236: xc_interface *xc;
! 1237: xs_daemon_open();
! 1238: xc = xc_interface_open(0, 0, 0);
! 1239: xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
! 1240: xc_gnttab_open(NULL, 0);
! 1241: xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
! 1242: return 0;
! 1243: }
1.1.1.9 root 1244: EOF
1.1.1.11 root 1245: if compile_prog "" "$xen_libs" ; then
1.1.1.16! root 1246: xen_ctrl_version=410
1.1.1.11 root 1247: xen=yes
1.1.1.16! root 1248:
! 1249: # Xen 4.0.0
! 1250: elif (
! 1251: cat > $TMPC <<EOF
! 1252: #include <xenctrl.h>
! 1253: #include <xs.h>
! 1254: #include <stdint.h>
! 1255: #include <xen/hvm/hvm_info_table.h>
! 1256: #if !defined(HVM_MAX_VCPUS)
! 1257: # error HVM_MAX_VCPUS not defined
! 1258: #endif
! 1259: int main(void) {
! 1260: struct xen_add_to_physmap xatp = {
! 1261: .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
! 1262: };
! 1263: xs_daemon_open();
! 1264: xc_interface_open();
! 1265: xc_gnttab_open();
! 1266: xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
! 1267: xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
! 1268: return 0;
! 1269: }
! 1270: EOF
! 1271: compile_prog "" "$xen_libs"
! 1272: ) ; then
! 1273: xen_ctrl_version=400
! 1274: xen=yes
! 1275:
! 1276: # Xen 3.4.0
! 1277: elif (
! 1278: cat > $TMPC <<EOF
! 1279: #include <xenctrl.h>
! 1280: #include <xs.h>
! 1281: int main(void) {
! 1282: struct xen_add_to_physmap xatp = {
! 1283: .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
! 1284: };
! 1285: xs_daemon_open();
! 1286: xc_interface_open();
! 1287: xc_gnttab_open();
! 1288: xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
! 1289: xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
! 1290: return 0;
! 1291: }
! 1292: EOF
! 1293: compile_prog "" "$xen_libs"
! 1294: ) ; then
! 1295: xen_ctrl_version=340
! 1296: xen=yes
! 1297:
! 1298: # Xen 3.3.0
! 1299: elif (
! 1300: cat > $TMPC <<EOF
! 1301: #include <xenctrl.h>
! 1302: #include <xs.h>
! 1303: int main(void) {
! 1304: xs_daemon_open();
! 1305: xc_interface_open();
! 1306: xc_gnttab_open();
! 1307: xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
! 1308: return 0;
! 1309: }
! 1310: EOF
! 1311: compile_prog "" "$xen_libs"
! 1312: ) ; then
! 1313: xen_ctrl_version=330
! 1314: xen=yes
! 1315:
! 1316: # Xen not found or unsupported
1.1.1.11 root 1317: else
1318: if test "$xen" = "yes" ; then
1319: feature_not_found "xen"
1320: fi
1321: xen=no
1322: fi
1.1.1.16! root 1323:
! 1324: if test "$xen" = yes; then
! 1325: libs_softmmu="$xen_libs $libs_softmmu"
! 1326: fi
1.1.1.11 root 1327: fi
1328:
1329: ##########################################
1.1.1.14 root 1330: # pkg-config probe
1.1.1.13 root 1331:
1.1.1.14 root 1332: if ! has $pkg_config; then
1333: echo warning: proceeding without "$pkg_config" >&2
1334: pkg_config=/bin/false
1.1.1.13 root 1335: fi
1336:
1337: ##########################################
1.1.1.16! root 1338: # libtool probe
! 1339:
! 1340: if ! has libtool; then
! 1341: libtool=
! 1342: else
! 1343: libtool=libtool
! 1344: fi
! 1345:
! 1346: ##########################################
1.1.1.11 root 1347: # Sparse probe
1348: if test "$sparse" != "no" ; then
1.1.1.13 root 1349: if has cgcc; then
1.1.1.11 root 1350: sparse=yes
1351: else
1352: if test "$sparse" = "yes" ; then
1353: feature_not_found "sparse"
1354: fi
1355: sparse=no
1356: fi
1.1.1.9 root 1357: fi
1358:
1359: ##########################################
1.1 root 1360: # SDL probe
1361:
1.1.1.14 root 1362: # Look for sdl configuration program (pkg-config or sdl-config). Try
1363: # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
1364: if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then
1365: sdl_config=sdl-config
1366: fi
1367:
1368: if $pkg_config sdl --modversion >/dev/null 2>&1; then
1369: sdlconfig="$pkg_config sdl"
1.1.1.13 root 1370: _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
1.1.1.14 root 1371: elif has ${sdl_config}; then
1372: sdlconfig="$sdl_config"
1.1.1.13 root 1373: _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1374: else
1375: if test "$sdl" = "yes" ; then
1376: feature_not_found "sdl"
1377: fi
1378: sdl=no
1379: fi
1.1.1.16! root 1380: if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
1.1.1.14 root 1381: echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
1382: fi
1.1 root 1383:
1.1.1.13 root 1384: sdl_too_old=no
1.1.1.11 root 1385: if test "$sdl" != "no" ; then
1386: cat > $TMPC << EOF
1.1 root 1387: #include <SDL.h>
1388: #undef main /* We don't want SDL to override our main() */
1389: int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1390: EOF
1.1.1.13 root 1391: sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1392: if test "$static" = "yes" ; then
1393: sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
1394: else
1395: sdl_libs=`$sdlconfig --libs 2> /dev/null`
1396: fi
1.1.1.11 root 1397: if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1398: if test "$_sdlversion" -lt 121 ; then
1399: sdl_too_old=yes
1400: else
1401: if test "$cocoa" = "no" ; then
1402: sdl=yes
1403: fi
1404: fi
1.1.1.7 root 1405:
1.1.1.13 root 1406: # static link with sdl ? (note: sdl.pc's --static --libs is broken)
1.1.1.11 root 1407: if test "$sdl" = "yes" -a "$static" = "yes" ; then
1.1.1.13 root 1408: if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1409: sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
1410: sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
1.1.1.11 root 1411: fi
1412: if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1413: :
1414: else
1415: sdl=no
1416: fi
1417: fi # static link
1418: else # sdl not found
1.1.1.6 root 1419: if test "$sdl" = "yes" ; then
1.1.1.11 root 1420: feature_not_found "sdl"
1.1.1.6 root 1421: fi
1.1.1.11 root 1422: sdl=no
1423: fi # sdl compile test
1424: fi
1.1 root 1425:
1.1.1.7 root 1426: if test "$sdl" = "yes" ; then
1.1.1.11 root 1427: cat > $TMPC <<EOF
1.1.1.7 root 1428: #include <SDL.h>
1429: #if defined(SDL_VIDEO_DRIVER_X11)
1430: #include <X11/XKBlib.h>
1431: #else
1432: #error No x11 support
1433: #endif
1434: int main(void) { return 0; }
1435: EOF
1.1.1.11 root 1436: if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1437: sdl_libs="$sdl_libs -lX11"
1438: fi
1439: if test "$mingw32" = "yes" ; then
1440: sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
1441: fi
1442: libs_softmmu="$sdl_libs $libs_softmmu"
1.1.1.7 root 1443: fi
1444:
1.1.1.6 root 1445: ##########################################
1446: # VNC TLS detection
1.1.1.16! root 1447: if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1.1.1.11 root 1448: cat > $TMPC <<EOF
1.1.1.7 root 1449: #include <gnutls/gnutls.h>
1450: int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
1451: EOF
1.1.1.14 root 1452: vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
1453: vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1.1.1.11 root 1454: if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
1455: vnc_tls=yes
1456: libs_softmmu="$vnc_tls_libs $libs_softmmu"
1457: else
1458: if test "$vnc_tls" = "yes" ; then
1459: feature_not_found "vnc-tls"
1.1.1.7 root 1460: fi
1.1.1.11 root 1461: vnc_tls=no
1462: fi
1.1.1.6 root 1463: fi
1.1.1.7 root 1464:
1465: ##########################################
1.1.1.9 root 1466: # VNC SASL detection
1.1.1.16! root 1467: if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1.1.1.11 root 1468: cat > $TMPC <<EOF
1.1.1.9 root 1469: #include <sasl/sasl.h>
1470: #include <stdio.h>
1471: int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
1472: EOF
1.1.1.11 root 1473: # Assuming Cyrus-SASL installed in /usr prefix
1474: vnc_sasl_cflags=""
1475: vnc_sasl_libs="-lsasl2"
1476: if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
1477: vnc_sasl=yes
1478: libs_softmmu="$vnc_sasl_libs $libs_softmmu"
1479: else
1480: if test "$vnc_sasl" = "yes" ; then
1481: feature_not_found "vnc-sasl"
1.1.1.9 root 1482: fi
1.1.1.11 root 1483: vnc_sasl=no
1484: fi
1.1.1.9 root 1485: fi
1486:
1487: ##########################################
1.1.1.13 root 1488: # VNC JPEG detection
1.1.1.16! root 1489: if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1.1.1.13 root 1490: cat > $TMPC <<EOF
1491: #include <stdio.h>
1492: #include <jpeglib.h>
1493: int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
1494: EOF
1495: vnc_jpeg_cflags=""
1496: vnc_jpeg_libs="-ljpeg"
1497: if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
1498: vnc_jpeg=yes
1499: libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
1500: else
1501: if test "$vnc_jpeg" = "yes" ; then
1502: feature_not_found "vnc-jpeg"
1503: fi
1504: vnc_jpeg=no
1505: fi
1506: fi
1507:
1508: ##########################################
1509: # VNC PNG detection
1.1.1.16! root 1510: if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
1.1.1.13 root 1511: cat > $TMPC <<EOF
1512: //#include <stdio.h>
1513: #include <png.h>
1.1.1.14 root 1514: #include <stddef.h>
1.1.1.13 root 1515: int main(void) {
1516: png_structp png_ptr;
1517: png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1518: return 0;
1519: }
1520: EOF
1.1.1.16! root 1521: if $pkg_config libpng --modversion >/dev/null 2>&1; then
! 1522: vnc_png_cflags=`$pkg_config libpng --cflags 2> /dev/null`
! 1523: vnc_png_libs=`$pkg_config libpng --libs 2> /dev/null`
! 1524: else
1.1.1.13 root 1525: vnc_png_cflags=""
1526: vnc_png_libs="-lpng"
1.1.1.16! root 1527: fi
1.1.1.13 root 1528: if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
1529: vnc_png=yes
1530: libs_softmmu="$vnc_png_libs $libs_softmmu"
1.1.1.16! root 1531: QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
1.1.1.13 root 1532: else
1533: if test "$vnc_png" = "yes" ; then
1534: feature_not_found "vnc-png"
1535: fi
1536: vnc_png=no
1537: fi
1538: fi
1539:
1540: ##########################################
1.1.1.9 root 1541: # fnmatch() probe, used for ACL routines
1542: fnmatch="no"
1543: cat > $TMPC << EOF
1544: #include <fnmatch.h>
1545: int main(void)
1546: {
1547: fnmatch("foo", "foo", 0);
1548: return 0;
1549: }
1550: EOF
1.1.1.11 root 1551: if compile_prog "" "" ; then
1.1.1.9 root 1552: fnmatch="yes"
1553: fi
1554:
1555: ##########################################
1.1.1.11 root 1556: # uuid_generate() probe, used for vdi block driver
1557: if test "$uuid" != "no" ; then
1558: uuid_libs="-luuid"
1559: cat > $TMPC << EOF
1560: #include <uuid/uuid.h>
1561: int main(void)
1562: {
1563: uuid_t my_uuid;
1564: uuid_generate(my_uuid);
1565: return 0;
1566: }
1567: EOF
1568: if compile_prog "" "$uuid_libs" ; then
1569: uuid="yes"
1570: libs_softmmu="$uuid_libs $libs_softmmu"
1571: libs_tools="$uuid_libs $libs_tools"
1572: else
1573: if test "$uuid" = "yes" ; then
1574: feature_not_found "uuid"
1575: fi
1576: uuid=no
1577: fi
1578: fi
1579:
1580: ##########################################
1.1.1.14 root 1581: # xfsctl() probe, used for raw-posix
1582: if test "$xfs" != "no" ; then
1583: cat > $TMPC << EOF
1584: #include <xfs/xfs.h>
1585: int main(void)
1586: {
1587: xfsctl(NULL, 0, 0, NULL);
1588: return 0;
1589: }
1590: EOF
1591: if compile_prog "" "" ; then
1592: xfs="yes"
1593: else
1594: if test "$xfs" = "yes" ; then
1595: feature_not_found "xfs"
1596: fi
1597: xfs=no
1598: fi
1599: fi
1600:
1601: ##########################################
1.1.1.7 root 1602: # vde libraries probe
1.1.1.11 root 1603: if test "$vde" != "no" ; then
1604: vde_libs="-lvdeplug"
1.1.1.7 root 1605: cat > $TMPC << EOF
1606: #include <libvdeplug.h>
1607: int main(void)
1608: {
1609: struct vde_open_args a = {0, 0, 0};
1610: vde_open("", "", &a);
1611: return 0;
1612: }
1613: EOF
1.1.1.11 root 1614: if compile_prog "" "$vde_libs" ; then
1615: vde=yes
1616: libs_softmmu="$vde_libs $libs_softmmu"
1617: libs_tools="$vde_libs $libs_tools"
1618: else
1619: if test "$vde" = "yes" ; then
1620: feature_not_found "vde"
1.1.1.7 root 1621: fi
1.1.1.11 root 1622: vde=no
1623: fi
1.1 root 1624: fi
1625:
1.1.1.5 root 1626: ##########################################
1.1.1.7 root 1627: # Sound support libraries probe
1.1.1.5 root 1628:
1.1.1.7 root 1629: audio_drv_probe()
1630: {
1631: drv=$1
1632: hdr=$2
1633: lib=$3
1634: exp=$4
1635: cfl=$5
1636: cat > $TMPC << EOF
1637: #include <$hdr>
1638: int main(void) { $exp }
1639: EOF
1.1.1.11 root 1640: if compile_prog "$cfl" "$lib" ; then
1.1.1.7 root 1641: :
1642: else
1643: echo
1644: echo "Error: $drv check failed"
1645: echo "Make sure to have the $drv libs and headers installed."
1646: echo
1647: exit 1
1648: fi
1649: }
1650:
1651: audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1652: for drv in $audio_drv_list; do
1653: case $drv in
1654: alsa)
1655: audio_drv_probe $drv alsa/asoundlib.h -lasound \
1656: "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1.1.1.11 root 1657: libs_softmmu="-lasound $libs_softmmu"
1.1.1.7 root 1658: ;;
1659:
1660: fmod)
1661: if test -z $fmod_lib || test -z $fmod_inc; then
1662: echo
1663: echo "Error: You must specify path to FMOD library and headers"
1664: echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1665: echo
1666: exit 1
1667: fi
1668: audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1.1.1.11 root 1669: libs_softmmu="$fmod_lib $libs_softmmu"
1.1.1.7 root 1670: ;;
1671:
1672: esd)
1673: audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1.1.1.11 root 1674: libs_softmmu="-lesd $libs_softmmu"
1675: audio_pt_int="yes"
1.1.1.7 root 1676: ;;
1677:
1678: pa)
1.1.1.11 root 1679: audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
1.1.1.16! root 1680: "pa_simple *s = 0; pa_simple_free(s); return 0;"
1.1.1.11 root 1681: libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1682: audio_pt_int="yes"
1683: ;;
1684:
1685: coreaudio)
1686: libs_softmmu="-framework CoreAudio $libs_softmmu"
1687: ;;
1688:
1689: dsound)
1690: libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1691: audio_win_int="yes"
1692: ;;
1693:
1694: oss)
1695: libs_softmmu="$oss_lib $libs_softmmu"
1.1.1.7 root 1696: ;;
1697:
1.1.1.11 root 1698: sdl|wav)
1.1.1.7 root 1699: # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1700: ;;
1701:
1.1.1.11 root 1702: winwave)
1703: libs_softmmu="-lwinmm $libs_softmmu"
1704: audio_win_int="yes"
1705: ;;
1706:
1.1.1.7 root 1707: *)
1708: echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1709: echo
1710: echo "Error: Unknown driver '$drv' selected"
1711: echo "Possible drivers are: $audio_possible_drivers"
1712: echo
1713: exit 1
1714: }
1715: ;;
1716: esac
1717: done
1718:
1719: ##########################################
1720: # BrlAPI probe
1721:
1.1.1.11 root 1722: if test "$brlapi" != "no" ; then
1723: brlapi_libs="-lbrlapi"
1724: cat > $TMPC << EOF
1.1.1.7 root 1725: #include <brlapi.h>
1.1.1.14 root 1726: #include <stddef.h>
1.1.1.7 root 1727: int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
1728: EOF
1.1.1.11 root 1729: if compile_prog "" "$brlapi_libs" ; then
1730: brlapi=yes
1731: libs_softmmu="$brlapi_libs $libs_softmmu"
1732: else
1733: if test "$brlapi" = "yes" ; then
1734: feature_not_found "brlapi"
1735: fi
1736: brlapi=no
1737: fi
1738: fi
1.1.1.7 root 1739:
1740: ##########################################
1741: # curses probe
1.1.1.16! root 1742: if test "$mingw32" = "yes" ; then
! 1743: curses_list="-lpdcurses"
! 1744: else
! 1745: curses_list="-lncurses -lcurses"
! 1746: fi
1.1.1.7 root 1747:
1.1.1.11 root 1748: if test "$curses" != "no" ; then
1749: curses_found=no
1.1.1.5 root 1750: cat > $TMPC << EOF
1.1.1.7 root 1751: #include <curses.h>
1.1.1.9 root 1752: #ifdef __OpenBSD__
1753: #define resize_term resizeterm
1754: #endif
1755: int main(void) { resize_term(0, 0); return curses_version(); }
1.1.1.5 root 1756: EOF
1.1.1.11 root 1757: for curses_lib in $curses_list; do
1758: if compile_prog "" "$curses_lib" ; then
1759: curses_found=yes
1760: libs_softmmu="$curses_lib $libs_softmmu"
1761: break
1762: fi
1763: done
1764: if test "$curses_found" = "yes" ; then
1.1.1.7 root 1765: curses=yes
1.1.1.11 root 1766: else
1767: if test "$curses" = "yes" ; then
1768: feature_not_found "curses"
1769: fi
1770: curses=no
1.1.1.7 root 1771: fi
1.1.1.11 root 1772: fi
1.1.1.7 root 1773:
1774: ##########################################
1.1.1.9 root 1775: # curl probe
1776:
1.1.1.14 root 1777: if $pkg_config libcurl --modversion >/dev/null 2>&1; then
1778: curlconfig="$pkg_config libcurl"
1.1.1.13 root 1779: else
1780: curlconfig=curl-config
1781: fi
1782:
1.1.1.11 root 1783: if test "$curl" != "no" ; then
1.1.1.9 root 1784: cat > $TMPC << EOF
1785: #include <curl/curl.h>
1.1.1.16! root 1786: int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
1.1.1.9 root 1787: EOF
1.1.1.13 root 1788: curl_cflags=`$curlconfig --cflags 2>/dev/null`
1789: curl_libs=`$curlconfig --libs 2>/dev/null`
1.1.1.11 root 1790: if compile_prog "$curl_cflags" "$curl_libs" ; then
1.1.1.9 root 1791: curl=yes
1.1.1.11 root 1792: libs_tools="$curl_libs $libs_tools"
1793: libs_softmmu="$curl_libs $libs_softmmu"
1794: else
1795: if test "$curl" = "yes" ; then
1796: feature_not_found "curl"
1797: fi
1798: curl=no
1.1.1.9 root 1799: fi
1800: fi # test "$curl"
1801:
1802: ##########################################
1.1.1.11 root 1803: # check framework probe
1804:
1805: if test "$check_utests" != "no" ; then
1.1.1.7 root 1806: cat > $TMPC << EOF
1.1.1.11 root 1807: #include <check.h>
1808: int main(void) { suite_create("qemu test"); return 0; }
1.1.1.7 root 1809: EOF
1.1.1.14 root 1810: check_libs=`$pkg_config --libs check`
1.1.1.11 root 1811: if compile_prog "" $check_libs ; then
1812: check_utests=yes
1813: libs_tools="$check_libs $libs_tools"
1.1.1.5 root 1814: else
1.1.1.11 root 1815: if test "$check_utests" = "yes" ; then
1816: feature_not_found "check"
1817: fi
1818: check_utests=no
1819: fi
1820: fi # test "$check_utests"
1821:
1822: ##########################################
1823: # bluez support probe
1824: if test "$bluez" != "no" ; then
1825: cat > $TMPC << EOF
1826: #include <bluetooth/bluetooth.h>
1827: int main(void) { return bt_error(0); }
1828: EOF
1.1.1.14 root 1829: bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
1830: bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
1.1.1.11 root 1831: if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1832: bluez=yes
1833: libs_softmmu="$bluez_libs $libs_softmmu"
1834: else
1835: if test "$bluez" = "yes" ; then
1836: feature_not_found "bluez"
1837: fi
1.1.1.7 root 1838: bluez="no"
1839: fi
1840: fi
1841:
1842: ##########################################
1.1.1.16! root 1843: # glib support probe
! 1844: if test "$guest_agent" != "no" ; then
! 1845: if $pkg_config --modversion glib-2.0 > /dev/null 2>&1 ; then
! 1846: glib_cflags=`$pkg_config --cflags glib-2.0 2>/dev/null`
! 1847: glib_libs=`$pkg_config --libs glib-2.0 2>/dev/null`
! 1848: libs_softmmu="$glib_libs $libs_softmmu"
! 1849: libs_tools="$glib_libs $libs_tools"
1.1.1.13 root 1850: else
1.1.1.16! root 1851: echo "glib-2.0 required to compile QEMU"
! 1852: exit 1
1.1.1.13 root 1853: fi
1854: fi
1855:
1856: ##########################################
1.1.1.9 root 1857: # pthread probe
1.1.1.16! root 1858: PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
1.1.1.7 root 1859:
1.1.1.11 root 1860: pthread=no
1.1.1.9 root 1861: cat > $TMPC << EOF
1.1.1.7 root 1862: #include <pthread.h>
1.1.1.9 root 1863: int main(void) { pthread_create(0,0,0,0); return 0; }
1.1.1.7 root 1864: EOF
1.1.1.14 root 1865: if compile_prog "" "" ; then
1866: pthread=yes
1867: else
1868: for pthread_lib in $PTHREADLIBS_LIST; do
1869: if compile_prog "" "$pthread_lib" ; then
1870: pthread=yes
1871: LIBS="$pthread_lib $LIBS"
1872: break
1873: fi
1874: done
1875: fi
1.1.1.11 root 1876:
1877: if test "$mingw32" != yes -a "$pthread" = no; then
1878: echo
1879: echo "Error: pthread check failed"
1880: echo "Make sure to have the pthread libs and headers installed."
1881: echo
1882: exit 1
1.1.1.9 root 1883: fi
1884:
1.1.1.11 root 1885: ##########################################
1.1.1.14 root 1886: # rbd probe
1887: if test "$rbd" != "no" ; then
1888: cat > $TMPC <<EOF
1889: #include <stdio.h>
1.1.1.16! root 1890: #include <rbd/librbd.h>
1.1.1.14 root 1891: int main(void) {
1.1.1.16! root 1892: rados_t cluster;
! 1893: rados_create(&cluster, NULL);
1.1.1.14 root 1894: return 0;
1895: }
1896: EOF
1.1.1.16! root 1897: rbd_libs="-lrbd -lrados"
! 1898: if compile_prog "" "$rbd_libs" ; then
! 1899: rbd=yes
! 1900: libs_tools="$rbd_libs $libs_tools"
! 1901: libs_softmmu="$rbd_libs $libs_softmmu"
1.1.1.14 root 1902: else
1903: if test "$rbd" = "yes" ; then
1904: feature_not_found "rados block device"
1905: fi
1906: rbd=no
1907: fi
1908: fi
1909:
1910: ##########################################
1.1.1.11 root 1911: # linux-aio probe
1912:
1913: if test "$linux_aio" != "no" ; then
1914: cat > $TMPC <<EOF
1915: #include <libaio.h>
1916: #include <sys/eventfd.h>
1.1.1.14 root 1917: #include <stddef.h>
1.1.1.11 root 1918: int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
1919: EOF
1920: if compile_prog "" "-laio" ; then
1921: linux_aio=yes
1.1.1.13 root 1922: libs_softmmu="$libs_softmmu -laio"
1923: libs_tools="$libs_tools -laio"
1.1.1.11 root 1924: else
1925: if test "$linux_aio" = "yes" ; then
1926: feature_not_found "linux AIO"
1927: fi
1928: linux_aio=no
1929: fi
1.1.1.7 root 1930: fi
1931:
1932: ##########################################
1.1.1.13 root 1933: # attr probe
1934:
1935: if test "$attr" != "no" ; then
1936: cat > $TMPC <<EOF
1937: #include <stdio.h>
1938: #include <sys/types.h>
1939: #include <attr/xattr.h>
1940: int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
1941: EOF
1942: if compile_prog "" "-lattr" ; then
1943: attr=yes
1944: LIBS="-lattr $LIBS"
1945: else
1946: if test "$attr" = "yes" ; then
1947: feature_not_found "ATTR"
1948: fi
1949: attr=no
1950: fi
1951: fi
1952:
1953: ##########################################
1.1.1.7 root 1954: # iovec probe
1955: cat > $TMPC <<EOF
1956: #include <sys/types.h>
1957: #include <sys/uio.h>
1958: #include <unistd.h>
1959: int main(void) { struct iovec iov; return 0; }
1960: EOF
1961: iovec=no
1.1.1.11 root 1962: if compile_prog "" "" ; then
1.1.1.7 root 1963: iovec=yes
1964: fi
1965:
1966: ##########################################
1.1.1.9 root 1967: # preadv probe
1968: cat > $TMPC <<EOF
1969: #include <sys/types.h>
1970: #include <sys/uio.h>
1971: #include <unistd.h>
1972: int main(void) { preadv; }
1973: EOF
1974: preadv=no
1.1.1.11 root 1975: if compile_prog "" "" ; then
1.1.1.9 root 1976: preadv=yes
1977: fi
1978:
1979: ##########################################
1.1.1.7 root 1980: # fdt probe
1.1.1.11 root 1981: if test "$fdt" != "no" ; then
1982: fdt_libs="-lfdt"
1983: cat > $TMPC << EOF
1.1.1.7 root 1984: int main(void) { return 0; }
1985: EOF
1.1.1.11 root 1986: if compile_prog "" "$fdt_libs" ; then
1.1.1.7 root 1987: fdt=yes
1.1.1.11 root 1988: else
1989: if test "$fdt" = "yes" ; then
1990: feature_not_found "fdt"
1991: fi
1.1.1.16! root 1992: fdt_libs=
1.1.1.11 root 1993: fdt=no
1.1.1.5 root 1994: fi
1995: fi
1996:
1.1.1.16! root 1997: ##########################################
! 1998: # opengl probe, used by milkymist-tmu2
! 1999: if test "$opengl" != "no" ; then
! 2000: opengl_libs="-lGL"
! 2001: cat > $TMPC << EOF
! 2002: #include <X11/Xlib.h>
! 2003: #include <GL/gl.h>
! 2004: #include <GL/glx.h>
! 2005: int main(void) { GL_VERSION; return 0; }
! 2006: EOF
! 2007: if compile_prog "" "-lGL" ; then
! 2008: opengl=yes
! 2009: else
! 2010: if test "$opengl" = "yes" ; then
! 2011: feature_not_found "opengl"
! 2012: fi
! 2013: opengl_libs=
! 2014: opengl=no
! 2015: fi
! 2016: fi
! 2017:
1.1.1.9 root 2018: #
2019: # Check for xxxat() functions when we are building linux-user
2020: # emulator. This is done because older glibc versions don't
2021: # have syscall stubs for these implemented.
2022: #
2023: atfile=no
2024: cat > $TMPC << EOF
2025: #define _ATFILE_SOURCE
2026: #include <sys/types.h>
2027: #include <fcntl.h>
2028: #include <unistd.h>
2029:
2030: int
2031: main(void)
2032: {
2033: /* try to unlink nonexisting file */
2034: return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
2035: }
2036: EOF
1.1.1.11 root 2037: if compile_prog "" "" ; then
1.1.1.9 root 2038: atfile=yes
2039: fi
2040:
2041: # Check for inotify functions when we are building linux-user
2042: # emulator. This is done because older glibc versions don't
2043: # have syscall stubs for these implemented. In that case we
2044: # don't provide them even if kernel supports them.
2045: #
2046: inotify=no
2047: cat > $TMPC << EOF
2048: #include <sys/inotify.h>
2049:
2050: int
2051: main(void)
2052: {
2053: /* try to start inotify */
2054: return inotify_init();
2055: }
2056: EOF
1.1.1.11 root 2057: if compile_prog "" "" ; then
1.1.1.9 root 2058: inotify=yes
2059: fi
2060:
1.1.1.13 root 2061: inotify1=no
2062: cat > $TMPC << EOF
2063: #include <sys/inotify.h>
2064:
2065: int
2066: main(void)
2067: {
2068: /* try to start inotify */
2069: return inotify_init1(0);
2070: }
2071: EOF
2072: if compile_prog "" "" ; then
2073: inotify1=yes
2074: fi
2075:
1.1.1.9 root 2076: # check if utimensat and futimens are supported
2077: utimens=no
2078: cat > $TMPC << EOF
2079: #define _ATFILE_SOURCE
2080: #include <stddef.h>
2081: #include <fcntl.h>
2082:
2083: int main(void)
2084: {
2085: utimensat(AT_FDCWD, "foo", NULL, 0);
2086: futimens(0, NULL);
2087: return 0;
2088: }
2089: EOF
1.1.1.11 root 2090: if compile_prog "" "" ; then
1.1.1.9 root 2091: utimens=yes
2092: fi
2093:
2094: # check if pipe2 is there
2095: pipe2=no
2096: cat > $TMPC << EOF
2097: #include <unistd.h>
2098: #include <fcntl.h>
2099:
2100: int main(void)
2101: {
2102: int pipefd[2];
2103: pipe2(pipefd, O_CLOEXEC);
2104: return 0;
2105: }
2106: EOF
1.1.1.11 root 2107: if compile_prog "" "" ; then
1.1.1.9 root 2108: pipe2=yes
2109: fi
2110:
1.1.1.11 root 2111: # check if accept4 is there
2112: accept4=no
2113: cat > $TMPC << EOF
2114: #include <sys/socket.h>
2115: #include <stddef.h>
2116:
2117: int main(void)
2118: {
2119: accept4(0, NULL, NULL, SOCK_CLOEXEC);
2120: return 0;
2121: }
2122: EOF
2123: if compile_prog "" "" ; then
2124: accept4=yes
2125: fi
2126:
1.1.1.9 root 2127: # check if tee/splice is there. vmsplice was added same time.
2128: splice=no
2129: cat > $TMPC << EOF
2130: #include <unistd.h>
2131: #include <fcntl.h>
2132: #include <limits.h>
2133:
2134: int main(void)
2135: {
2136: int len, fd;
2137: len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
2138: splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
2139: return 0;
2140: }
2141: EOF
1.1.1.11 root 2142: if compile_prog "" "" ; then
1.1.1.9 root 2143: splice=yes
2144: fi
2145:
1.1.1.14 root 2146: ##########################################
2147: # signalfd probe
2148: signalfd="no"
2149: cat > $TMPC << EOF
2150: #define _GNU_SOURCE
2151: #include <unistd.h>
2152: #include <sys/syscall.h>
2153: #include <signal.h>
2154: int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
2155: EOF
2156:
2157: if compile_prog "" "" ; then
2158: signalfd=yes
1.1.1.16! root 2159: elif test "$kvm" = "yes" -a "$io_thread" != "yes"; then
! 2160: echo
! 2161: echo "ERROR: Host kernel lacks signalfd() support,"
! 2162: echo "but KVM depends on it when the IO thread is disabled."
! 2163: echo
! 2164: exit 1
1.1.1.14 root 2165: fi
2166:
1.1.1.11 root 2167: # check if eventfd is supported
2168: eventfd=no
2169: cat > $TMPC << EOF
2170: #include <sys/eventfd.h>
2171:
2172: int main(void)
2173: {
2174: int efd = eventfd(0, 0);
2175: return 0;
2176: }
2177: EOF
2178: if compile_prog "" "" ; then
2179: eventfd=yes
2180: fi
2181:
2182: # check for fallocate
2183: fallocate=no
2184: cat > $TMPC << EOF
2185: #include <fcntl.h>
2186:
2187: int main(void)
2188: {
2189: fallocate(0, 0, 0, 0);
2190: return 0;
2191: }
2192: EOF
2193: if compile_prog "$ARCH_CFLAGS" "" ; then
2194: fallocate=yes
2195: fi
2196:
1.1.1.14 root 2197: # check for sync_file_range
2198: sync_file_range=no
2199: cat > $TMPC << EOF
2200: #include <fcntl.h>
2201:
2202: int main(void)
2203: {
2204: sync_file_range(0, 0, 0, 0);
2205: return 0;
2206: }
2207: EOF
2208: if compile_prog "$ARCH_CFLAGS" "" ; then
2209: sync_file_range=yes
2210: fi
2211:
2212: # check for linux/fiemap.h and FS_IOC_FIEMAP
2213: fiemap=no
2214: cat > $TMPC << EOF
2215: #include <sys/ioctl.h>
2216: #include <linux/fs.h>
2217: #include <linux/fiemap.h>
2218:
2219: int main(void)
2220: {
2221: ioctl(0, FS_IOC_FIEMAP, 0);
2222: return 0;
2223: }
2224: EOF
2225: if compile_prog "$ARCH_CFLAGS" "" ; then
2226: fiemap=yes
2227: fi
2228:
1.1.1.11 root 2229: # check for dup3
2230: dup3=no
2231: cat > $TMPC << EOF
2232: #include <unistd.h>
2233:
2234: int main(void)
2235: {
2236: dup3(0, 0, 0);
2237: return 0;
2238: }
2239: EOF
2240: if compile_prog "" "" ; then
2241: dup3=yes
2242: fi
2243:
1.1.1.16! root 2244: # check for epoll support
! 2245: epoll=no
! 2246: cat > $TMPC << EOF
! 2247: #include <sys/epoll.h>
! 2248:
! 2249: int main(void)
! 2250: {
! 2251: epoll_create(0);
! 2252: return 0;
! 2253: }
! 2254: EOF
! 2255: if compile_prog "$ARCH_CFLAGS" "" ; then
! 2256: epoll=yes
! 2257: fi
! 2258:
! 2259: # epoll_create1 and epoll_pwait are later additions
! 2260: # so we must check separately for their presence
! 2261: epoll_create1=no
! 2262: cat > $TMPC << EOF
! 2263: #include <sys/epoll.h>
! 2264:
! 2265: int main(void)
! 2266: {
! 2267: /* Note that we use epoll_create1 as a value, not as
! 2268: * a function being called. This is necessary so that on
! 2269: * old SPARC glibc versions where the function was present in
! 2270: * the library but not declared in the header file we will
! 2271: * fail the configure check. (Otherwise we will get a compiler
! 2272: * warning but not an error, and will proceed to fail the
! 2273: * qemu compile where we compile with -Werror.)
! 2274: */
! 2275: epoll_create1;
! 2276: return 0;
! 2277: }
! 2278: EOF
! 2279: if compile_prog "$ARCH_CFLAGS" "" ; then
! 2280: epoll_create1=yes
! 2281: fi
! 2282:
! 2283: epoll_pwait=no
! 2284: cat > $TMPC << EOF
! 2285: #include <sys/epoll.h>
! 2286:
! 2287: int main(void)
! 2288: {
! 2289: epoll_pwait(0, 0, 0, 0, 0);
! 2290: return 0;
! 2291: }
! 2292: EOF
! 2293: if compile_prog "$ARCH_CFLAGS" "" ; then
! 2294: epoll_pwait=yes
! 2295: fi
! 2296:
1.1.1.3 root 2297: # Check if tools are available to build documentation.
1.1.1.11 root 2298: if test "$docs" != "no" ; then
1.1.1.13 root 2299: if has makeinfo && has pod2man; then
1.1.1.11 root 2300: docs=yes
2301: else
2302: if test "$docs" = "yes" ; then
2303: feature_not_found "docs"
2304: fi
2305: docs=no
2306: fi
2307: fi
2308:
2309: # Search for bswap_32 function
2310: byteswap_h=no
2311: cat > $TMPC << EOF
2312: #include <byteswap.h>
2313: int main(void) { return bswap_32(0); }
2314: EOF
2315: if compile_prog "" "" ; then
2316: byteswap_h=yes
2317: fi
2318:
2319: # Search for bswap_32 function
2320: bswap_h=no
2321: cat > $TMPC << EOF
2322: #include <sys/endian.h>
2323: #include <sys/types.h>
2324: #include <machine/bswap.h>
2325: int main(void) { return bswap32(0); }
2326: EOF
2327: if compile_prog "" "" ; then
2328: bswap_h=yes
1.1 root 2329: fi
2330:
1.1.1.7 root 2331: ##########################################
2332: # Do we need librt
2333: cat > $TMPC <<EOF
2334: #include <signal.h>
2335: #include <time.h>
2336: int main(void) { clockid_t id; return clock_gettime(id, NULL); }
2337: EOF
2338:
1.1.1.11 root 2339: if compile_prog "" "" ; then
1.1.1.7 root 2340: :
1.1.1.11 root 2341: elif compile_prog "" "-lrt" ; then
2342: LIBS="-lrt $LIBS"
1.1.1.7 root 2343: fi
2344:
1.1.1.11 root 2345: if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
1.1.1.14 root 2346: "$aix" != "yes" -a "$haiku" != "yes" ; then
1.1.1.11 root 2347: libs_softmmu="-lutil $libs_softmmu"
2348: fi
2349:
2350: ##########################################
2351: # check if the compiler defines offsetof
2352:
2353: need_offsetof=yes
2354: cat > $TMPC << EOF
2355: #include <stddef.h>
2356: int main(void) { struct s { int f; }; return offsetof(struct s, f); }
2357: EOF
2358: if compile_prog "" "" ; then
2359: need_offsetof=no
2360: fi
2361:
2362: ##########################################
2363: # check if the compiler understands attribute warn_unused_result
2364: #
2365: # This could be smarter, but gcc -Werror does not error out even when warning
2366: # about attribute warn_unused_result
2367:
2368: gcc_attribute_warn_unused_result=no
2369: cat > $TMPC << EOF
2370: #if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
2371: #error gcc 3.3 or older
2372: #endif
2373: int main(void) { return 0;}
2374: EOF
2375: if compile_prog "" ""; then
2376: gcc_attribute_warn_unused_result=yes
2377: fi
2378:
1.1.1.14 root 2379: # spice probe
2380: if test "$spice" != "no" ; then
2381: cat > $TMPC << EOF
2382: #include <spice.h>
2383: int main(void) { spice_server_new(); return 0; }
2384: EOF
2385: spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
2386: spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
1.1.1.16! root 2387: if $pkg_config --atleast-version=0.6.0 spice-server >/dev/null 2>&1 && \
1.1.1.14 root 2388: compile_prog "$spice_cflags" "$spice_libs" ; then
2389: spice="yes"
2390: libs_softmmu="$libs_softmmu $spice_libs"
2391: QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
2392: else
2393: if test "$spice" = "yes" ; then
2394: feature_not_found "spice"
2395: fi
2396: spice="no"
2397: fi
2398: fi
2399:
1.1.1.16! root 2400: # check for libcacard for smartcard support
! 2401: if test "$smartcard" != "no" ; then
! 2402: smartcard="yes"
! 2403: smartcard_cflags=""
! 2404: # TODO - what's the minimal nss version we support?
! 2405: if test "$smartcard_nss" != "no"; then
! 2406: if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 ; then
! 2407: smartcard_nss="yes"
! 2408: smartcard_cflags="-I\$(SRC_PATH)/libcacard"
! 2409: libcacard_libs=$($pkg_config --libs nss 2>/dev/null)
! 2410: libcacard_cflags=$($pkg_config --cflags nss 2>/dev/null)
! 2411: QEMU_CFLAGS="$QEMU_CFLAGS $smartcard_cflags $libcacard_cflags"
! 2412: LIBS="$libcacard_libs $LIBS"
! 2413: else
! 2414: if test "$smartcard_nss" = "yes"; then
! 2415: feature_not_found "nss"
! 2416: fi
! 2417: smartcard_nss="no"
! 2418: fi
! 2419: fi
! 2420: fi
! 2421: if test "$smartcard" = "no" ; then
! 2422: smartcard_nss="no"
! 2423: fi
! 2424:
! 2425: # check for usbredirparser for usb network redirection support
! 2426: if test "$usb_redir" != "no" ; then
! 2427: if $pkg_config libusbredirparser >/dev/null 2>&1 ; then
! 2428: usb_redir="yes"
! 2429: usb_redir_cflags=$($pkg_config --cflags libusbredirparser 2>/dev/null)
! 2430: usb_redir_libs=$($pkg_config --libs libusbredirparser 2>/dev/null)
! 2431: QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
! 2432: LIBS="$LIBS $usb_redir_libs"
! 2433: else
! 2434: if test "$usb_redir" = "yes"; then
! 2435: feature_not_found "usb-redir"
! 2436: fi
! 2437: usb_redir="no"
! 2438: fi
! 2439: fi
! 2440:
1.1.1.14 root 2441: ##########################################
2442:
1.1.1.11 root 2443: ##########################################
2444: # check if we have fdatasync
2445:
2446: fdatasync=no
2447: cat > $TMPC << EOF
2448: #include <unistd.h>
1.1.1.16! root 2449: int main(void) {
! 2450: #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
! 2451: return fdatasync(0);
! 2452: #else
! 2453: #abort Not supported
! 2454: #endif
! 2455: }
1.1.1.11 root 2456: EOF
2457: if compile_prog "" "" ; then
2458: fdatasync=yes
2459: fi
2460:
1.1.1.14 root 2461: ##########################################
2462: # check if we have madvise
2463:
2464: madvise=no
2465: cat > $TMPC << EOF
2466: #include <sys/types.h>
2467: #include <sys/mman.h>
2468: #include <stddef.h>
2469: int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
2470: EOF
2471: if compile_prog "" "" ; then
2472: madvise=yes
2473: fi
2474:
2475: ##########################################
2476: # check if we have posix_madvise
2477:
2478: posix_madvise=no
2479: cat > $TMPC << EOF
2480: #include <sys/mman.h>
2481: #include <stddef.h>
2482: int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
2483: EOF
2484: if compile_prog "" "" ; then
2485: posix_madvise=yes
2486: fi
2487:
2488: ##########################################
2489: # check if trace backend exists
2490:
2491: sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
2492: if test "$?" -ne 0 ; then
2493: echo
2494: echo "Error: invalid trace backend"
2495: echo "Please choose a supported trace backend."
2496: echo
2497: exit 1
2498: fi
2499:
2500: ##########################################
2501: # For 'ust' backend, test if ust headers are present
2502: if test "$trace_backend" = "ust"; then
2503: cat > $TMPC << EOF
2504: #include <ust/tracepoint.h>
2505: #include <ust/marker.h>
2506: int main(void) { return 0; }
2507: EOF
2508: if compile_prog "" "" ; then
2509: LIBS="-lust $LIBS"
2510: else
2511: echo
2512: echo "Error: Trace backend 'ust' missing libust header files"
2513: echo
2514: exit 1
2515: fi
2516: fi
2517:
2518: ##########################################
2519: # For 'dtrace' backend, test if 'dtrace' command is present
2520: if test "$trace_backend" = "dtrace"; then
2521: if ! has 'dtrace' ; then
2522: echo
2523: echo "Error: dtrace command is not found in PATH $PATH"
2524: echo
2525: exit 1
2526: fi
2527: trace_backend_stap="no"
2528: if has 'stap' ; then
2529: trace_backend_stap="yes"
2530: fi
2531: fi
2532:
2533: ##########################################
1.1.1.16! root 2534: # __sync_fetch_and_and requires at least -march=i486. Many toolchains
! 2535: # use i686 as default anyway, but for those that don't, an explicit
! 2536: # specification is necessary
! 2537: if test $vhost_net = "yes" && test $cpu = "i386"; then
! 2538: cat > $TMPC << EOF
! 2539: int sfaa(unsigned *ptr)
! 2540: {
! 2541: return __sync_fetch_and_and(ptr, 0);
! 2542: }
! 2543:
! 2544: int main(int argc, char **argv)
! 2545: {
! 2546: int val = 42;
! 2547: sfaa(&val);
! 2548: return val;
! 2549: }
! 2550: EOF
! 2551: if ! compile_prog "" "" ; then
! 2552: CFLAGS+="-march=i486"
! 2553: fi
! 2554: fi
! 2555:
! 2556: ##########################################
1.1.1.11 root 2557: # End of CC checks
2558: # After here, no more $cc or $ld runs
2559:
2560: if test "$debug" = "no" ; then
2561: CFLAGS="-O2 $CFLAGS"
2562: fi
2563:
2564: # Consult white-list to determine whether to enable werror
2565: # by default. Only enable by default for git builds
2566: z_version=`cut -f3 -d. $source_path/VERSION`
2567:
2568: if test -z "$werror" ; then
2569: if test "$z_version" = "50" -a \
2570: "$linux" = "yes" ; then
2571: werror="yes"
2572: else
2573: werror="no"
2574: fi
2575: fi
2576:
2577: # Disable zero malloc errors for official releases unless explicitly told to
2578: # enable/disable
2579: if test -z "$zero_malloc" ; then
2580: if test "$z_version" = "50" ; then
2581: zero_malloc="no"
2582: else
2583: zero_malloc="yes"
2584: fi
2585: fi
2586:
2587: if test "$werror" = "yes" ; then
2588: QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2589: fi
2590:
2591: if test "$solaris" = "no" ; then
2592: if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2593: LDFLAGS="-Wl,--warn-common $LDFLAGS"
2594: fi
1.1.1.7 root 2595: fi
2596:
1.1.1.14 root 2597: # Use ASLR, no-SEH and DEP if available
2598: if test "$mingw32" = "yes" ; then
2599: for flag in --dynamicbase --no-seh --nxcompat; do
2600: if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
2601: LDFLAGS="-Wl,$flag $LDFLAGS"
2602: fi
2603: done
2604: fi
2605:
1.1.1.13 root 2606: confdir=$sysconfdir$confsuffix
2607:
2608: tools=
2609: if test "$softmmu" = yes ; then
2610: tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
2611: if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
2612: tools="qemu-nbd\$(EXESUF) $tools"
1.1.1.16! root 2613: if [ "$guest_agent" = "yes" ]; then
! 2614: tools="qemu-ga\$(EXESUF) $tools"
! 2615: fi
1.1.1.13 root 2616: if [ "$check_utests" = "yes" ]; then
2617: tools="check-qint check-qstring check-qdict check-qlist $tools"
2618: tools="check-qfloat check-qjson $tools"
2619: fi
1.1.1.6 root 2620: fi
1.1 root 2621: fi
2622:
1.1.1.13 root 2623: # Mac OS X ships with a broken assembler
2624: roms=
2625: if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
2626: "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
2627: "$softmmu" = yes ; then
2628: roms="optionrom"
2629: fi
1.1.1.16! root 2630: if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
! 2631: roms="$roms spapr-rtas"
! 2632: fi
1.1.1.13 root 2633:
1.1 root 2634: echo "Install prefix $prefix"
1.1.1.13 root 2635: echo "BIOS directory `eval echo $datadir`"
2636: echo "binary directory `eval echo $bindir`"
1.1.1.16! root 2637: echo "library directory `eval echo $libdir`"
1.1.1.13 root 2638: echo "config directory `eval echo $sysconfdir`"
1.1 root 2639: if test "$mingw32" = "no" ; then
1.1.1.13 root 2640: echo "Manual directory `eval echo $mandir`"
1.1 root 2641: echo "ELF interp prefix $interp_prefix"
2642: fi
2643: echo "Source path $source_path"
2644: echo "C compiler $cc"
2645: echo "Host C compiler $host_cc"
1.1.1.11 root 2646: echo "CFLAGS $CFLAGS"
2647: echo "QEMU_CFLAGS $QEMU_CFLAGS"
2648: echo "LDFLAGS $LDFLAGS"
1.1 root 2649: echo "make $make"
1.1.1.3 root 2650: echo "install $install"
1.1.1.16! root 2651: echo "python $python"
! 2652: if test "$slirp" = "yes" ; then
! 2653: echo "smbd $smbd"
! 2654: fi
1.1 root 2655: echo "host CPU $cpu"
2656: echo "host big endian $bigendian"
2657: echo "target list $target_list"
1.1.1.9 root 2658: echo "tcg debug enabled $debug_tcg"
1.1.1.13 root 2659: echo "Mon debug enabled $debug_mon"
1.1 root 2660: echo "gprof enabled $gprof"
1.1.1.7 root 2661: echo "sparse enabled $sparse"
1.1.1.9 root 2662: echo "strip binaries $strip_opt"
1.1.1.3 root 2663: echo "profiler $profiler"
1.1 root 2664: echo "static build $static"
1.1.1.6 root 2665: echo "-Werror enabled $werror"
1.1 root 2666: if test "$darwin" = "yes" ; then
2667: echo "Cocoa support $cocoa"
2668: fi
2669: echo "SDL support $sdl"
1.1.1.7 root 2670: echo "curses support $curses"
1.1.1.9 root 2671: echo "curl support $curl"
1.1.1.11 root 2672: echo "check support $check_utests"
1.1 root 2673: echo "mingw32 support $mingw32"
1.1.1.7 root 2674: echo "Audio drivers $audio_drv_list"
2675: echo "Extra audio cards $audio_card_list"
1.1.1.11 root 2676: echo "Block whitelist $block_drv_whitelist"
1.1.1.7 root 2677: echo "Mixer emulation $mixemu"
1.1.1.16! root 2678: echo "VNC support $vnc"
! 2679: if test "$vnc" = "yes" ; then
! 2680: echo "VNC TLS support $vnc_tls"
! 2681: echo "VNC SASL support $vnc_sasl"
! 2682: echo "VNC JPEG support $vnc_jpeg"
! 2683: echo "VNC PNG support $vnc_png"
! 2684: echo "VNC thread $vnc_thread"
! 2685: fi
1.1.1.6 root 2686: if test -n "$sparc_cpu"; then
2687: echo "Target Sparc Arch $sparc_cpu"
2688: fi
1.1.1.9 root 2689: echo "xen support $xen"
1.1.1.7 root 2690: echo "brlapi support $brlapi"
1.1.1.11 root 2691: echo "bluez support $bluez"
2692: echo "Documentation $docs"
1.1.1.4 root 2693: [ ! -z "$uname_release" ] && \
2694: echo "uname -r $uname_release"
1.1.1.7 root 2695: echo "NPTL support $nptl"
1.1.1.11 root 2696: echo "GUEST_BASE $guest_base"
2697: echo "PIE user targets $user_pie"
1.1.1.7 root 2698: echo "vde support $vde"
1.1.1.9 root 2699: echo "IO thread $io_thread"
1.1.1.11 root 2700: echo "Linux AIO support $linux_aio"
1.1.1.13 root 2701: echo "ATTR/XATTR support $attr"
1.1.1.7 root 2702: echo "Install blobs $blobs"
1.1.1.11 root 2703: echo "KVM support $kvm"
1.1.1.7 root 2704: echo "fdt support $fdt"
1.1.1.9 root 2705: echo "preadv support $preadv"
1.1.1.11 root 2706: echo "fdatasync $fdatasync"
1.1.1.14 root 2707: echo "madvise $madvise"
2708: echo "posix_madvise $posix_madvise"
1.1.1.11 root 2709: echo "uuid support $uuid"
1.1.1.13 root 2710: echo "vhost-net support $vhost_net"
1.1.1.14 root 2711: echo "Trace backend $trace_backend"
2712: echo "Trace output file $trace_file-<pid>"
2713: echo "spice support $spice"
2714: echo "rbd support $rbd"
2715: echo "xfsctl support $xfs"
1.1.1.16! root 2716: echo "nss used $smartcard_nss"
! 2717: echo "usb net redir $usb_redir"
! 2718: echo "OpenGL support $opengl"
! 2719: echo "build guest agent $guest_agent"
1.1 root 2720:
2721: if test $sdl_too_old = "yes"; then
2722: echo "-> Your SDL version is too old - please upgrade to have SDL support"
2723: fi
2724:
1.1.1.9 root 2725: config_host_mak="config-host.mak"
1.1.1.11 root 2726: config_host_ld="config-host.ld"
1.1.1.9 root 2727:
2728: echo "# Automatically generated by configure - do not modify" > $config_host_mak
2729: printf "# Configured with:" >> $config_host_mak
2730: printf " '%s'" "$0" "$@" >> $config_host_mak
2731: echo >> $config_host_mak
2732:
1.1.1.14 root 2733: echo all: >> $config_host_mak
1.1.1.13 root 2734: echo "prefix=$prefix" >> $config_host_mak
2735: echo "bindir=$bindir" >> $config_host_mak
1.1.1.16! root 2736: echo "libdir=$libdir" >> $config_host_mak
1.1.1.13 root 2737: echo "mandir=$mandir" >> $config_host_mak
2738: echo "datadir=$datadir" >> $config_host_mak
2739: echo "sysconfdir=$sysconfdir" >> $config_host_mak
2740: echo "docdir=$docdir" >> $config_host_mak
2741: echo "confdir=$confdir" >> $config_host_mak
1.1.1.11 root 2742:
1.1.1.7 root 2743: case "$cpu" in
1.1.1.16! root 2744: i386|x86_64|alpha|cris|hppa|ia64|lm32|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64|unicore32)
1.1.1.9 root 2745: ARCH=$cpu
1.1.1.7 root 2746: ;;
1.1.1.10 root 2747: armv4b|armv4l)
1.1.1.9 root 2748: ARCH=arm
1.1.1.7 root 2749: ;;
2750: esac
1.1.1.9 root 2751: echo "ARCH=$ARCH" >> $config_host_mak
2752: if test "$debug_tcg" = "yes" ; then
1.1.1.11 root 2753: echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
1.1.1.9 root 2754: fi
1.1.1.13 root 2755: if test "$debug_mon" = "yes" ; then
2756: echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
2757: fi
1.1.1.9 root 2758: if test "$debug" = "yes" ; then
1.1.1.11 root 2759: echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
1.1.1.9 root 2760: fi
2761: if test "$strip_opt" = "yes" ; then
1.1.1.14 root 2762: echo "STRIP=${strip}" >> $config_host_mak
1.1 root 2763: fi
2764: if test "$bigendian" = "yes" ; then
1.1.1.11 root 2765: echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
1.1 root 2766: fi
1.1.1.11 root 2767: echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
1.1 root 2768: if test "$mingw32" = "yes" ; then
1.1.1.9 root 2769: echo "CONFIG_WIN32=y" >> $config_host_mak
1.1.1.14 root 2770: rc_version=`cat $source_path/VERSION`
2771: version_major=${rc_version%%.*}
2772: rc_version=${rc_version#*.}
2773: version_minor=${rc_version%%.*}
2774: rc_version=${rc_version#*.}
2775: version_subminor=${rc_version%%.*}
2776: version_micro=0
2777: echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
2778: echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
1.1.1.6 root 2779: else
1.1.1.11 root 2780: echo "CONFIG_POSIX=y" >> $config_host_mak
1.1.1.7 root 2781: fi
2782:
1.1.1.11 root 2783: if test "$linux" = "yes" ; then
2784: echo "CONFIG_LINUX=y" >> $config_host_mak
1.1 root 2785: fi
1.1.1.7 root 2786:
1.1 root 2787: if test "$darwin" = "yes" ; then
1.1.1.9 root 2788: echo "CONFIG_DARWIN=y" >> $config_host_mak
1.1 root 2789: fi
1.1.1.7 root 2790:
2791: if test "$aix" = "yes" ; then
1.1.1.9 root 2792: echo "CONFIG_AIX=y" >> $config_host_mak
1.1.1.7 root 2793: fi
2794:
1.1.1.3 root 2795: if test "$solaris" = "yes" ; then
1.1.1.9 root 2796: echo "CONFIG_SOLARIS=y" >> $config_host_mak
1.1.1.11 root 2797: echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
1.1.1.6 root 2798: if test "$needs_libsunmath" = "yes" ; then
1.1.1.11 root 2799: echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
1.1.1.6 root 2800: fi
2801: fi
1.1.1.14 root 2802: if test "$haiku" = "yes" ; then
2803: echo "CONFIG_HAIKU=y" >> $config_host_mak
2804: fi
1.1 root 2805: if test "$static" = "yes" ; then
1.1.1.9 root 2806: echo "CONFIG_STATIC=y" >> $config_host_mak
1.1 root 2807: fi
1.1.1.3 root 2808: if test $profiler = "yes" ; then
1.1.1.11 root 2809: echo "CONFIG_PROFILER=y" >> $config_host_mak
1.1.1.3 root 2810: fi
1.1 root 2811: if test "$slirp" = "yes" ; then
1.1.1.9 root 2812: echo "CONFIG_SLIRP=y" >> $config_host_mak
1.1.1.16! root 2813: echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
1.1.1.14 root 2814: QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
1.1 root 2815: fi
1.1.1.7 root 2816: if test "$vde" = "yes" ; then
1.1.1.9 root 2817: echo "CONFIG_VDE=y" >> $config_host_mak
1.1.1.7 root 2818: fi
2819: for card in $audio_card_list; do
2820: def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
1.1.1.9 root 2821: echo "$def=y" >> $config_host_mak
1.1.1.7 root 2822: done
1.1.1.11 root 2823: echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
1.1.1.7 root 2824: for drv in $audio_drv_list; do
2825: def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
1.1.1.9 root 2826: echo "$def=y" >> $config_host_mak
1.1.1.7 root 2827: if test "$drv" = "fmod"; then
1.1.1.11 root 2828: echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
1.1.1.7 root 2829: fi
2830: done
1.1.1.11 root 2831: if test "$audio_pt_int" = "yes" ; then
2832: echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
2833: fi
2834: if test "$audio_win_int" = "yes" ; then
2835: echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
2836: fi
2837: echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
1.1.1.7 root 2838: if test "$mixemu" = "yes" ; then
1.1.1.9 root 2839: echo "CONFIG_MIXEMU=y" >> $config_host_mak
1.1 root 2840: fi
1.1.1.16! root 2841: if test "$vnc" = "yes" ; then
! 2842: echo "CONFIG_VNC=y" >> $config_host_mak
! 2843: fi
1.1.1.6 root 2844: if test "$vnc_tls" = "yes" ; then
1.1.1.9 root 2845: echo "CONFIG_VNC_TLS=y" >> $config_host_mak
1.1.1.11 root 2846: echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
1.1.1.9 root 2847: fi
2848: if test "$vnc_sasl" = "yes" ; then
2849: echo "CONFIG_VNC_SASL=y" >> $config_host_mak
1.1.1.11 root 2850: echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
1.1.1.9 root 2851: fi
1.1.1.16! root 2852: if test "$vnc_jpeg" = "yes" ; then
1.1.1.13 root 2853: echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
2854: echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
2855: fi
1.1.1.16! root 2856: if test "$vnc_png" = "yes" ; then
1.1.1.13 root 2857: echo "CONFIG_VNC_PNG=y" >> $config_host_mak
2858: echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
2859: fi
1.1.1.16! root 2860: if test "$vnc_thread" = "yes" ; then
1.1.1.13 root 2861: echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
2862: fi
1.1.1.9 root 2863: if test "$fnmatch" = "yes" ; then
1.1.1.11 root 2864: echo "CONFIG_FNMATCH=y" >> $config_host_mak
2865: fi
2866: if test "$uuid" = "yes" ; then
2867: echo "CONFIG_UUID=y" >> $config_host_mak
1.1.1.6 root 2868: fi
1.1.1.14 root 2869: if test "$xfs" = "yes" ; then
2870: echo "CONFIG_XFS=y" >> $config_host_mak
2871: fi
1.1.1.3 root 2872: qemu_version=`head $source_path/VERSION`
1.1.1.9 root 2873: echo "VERSION=$qemu_version" >>$config_host_mak
1.1.1.11 root 2874: echo "PKGVERSION=$pkgversion" >>$config_host_mak
1.1.1.9 root 2875: echo "SRC_PATH=$source_path" >> $config_host_mak
2876: echo "TARGET_DIRS=$target_list" >> $config_host_mak
1.1.1.11 root 2877: if [ "$docs" = "yes" ] ; then
1.1.1.9 root 2878: echo "BUILD_DOCS=yes" >> $config_host_mak
1.1.1.3 root 2879: fi
1.1.1.11 root 2880: if test "$sdl" = "yes" ; then
1.1.1.9 root 2881: echo "CONFIG_SDL=y" >> $config_host_mak
1.1.1.11 root 2882: echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
1.1.1.6 root 2883: fi
2884: if test "$cocoa" = "yes" ; then
1.1.1.9 root 2885: echo "CONFIG_COCOA=y" >> $config_host_mak
1.1.1.7 root 2886: fi
2887: if test "$curses" = "yes" ; then
1.1.1.9 root 2888: echo "CONFIG_CURSES=y" >> $config_host_mak
2889: fi
2890: if test "$atfile" = "yes" ; then
1.1.1.11 root 2891: echo "CONFIG_ATFILE=y" >> $config_host_mak
1.1.1.9 root 2892: fi
2893: if test "$utimens" = "yes" ; then
1.1.1.11 root 2894: echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
1.1.1.9 root 2895: fi
2896: if test "$pipe2" = "yes" ; then
1.1.1.11 root 2897: echo "CONFIG_PIPE2=y" >> $config_host_mak
2898: fi
2899: if test "$accept4" = "yes" ; then
2900: echo "CONFIG_ACCEPT4=y" >> $config_host_mak
1.1.1.9 root 2901: fi
2902: if test "$splice" = "yes" ; then
1.1.1.11 root 2903: echo "CONFIG_SPLICE=y" >> $config_host_mak
2904: fi
2905: if test "$eventfd" = "yes" ; then
2906: echo "CONFIG_EVENTFD=y" >> $config_host_mak
2907: fi
2908: if test "$fallocate" = "yes" ; then
2909: echo "CONFIG_FALLOCATE=y" >> $config_host_mak
2910: fi
1.1.1.14 root 2911: if test "$sync_file_range" = "yes" ; then
2912: echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
2913: fi
2914: if test "$fiemap" = "yes" ; then
2915: echo "CONFIG_FIEMAP=y" >> $config_host_mak
2916: fi
1.1.1.11 root 2917: if test "$dup3" = "yes" ; then
2918: echo "CONFIG_DUP3=y" >> $config_host_mak
1.1.1.9 root 2919: fi
1.1.1.16! root 2920: if test "$epoll" = "yes" ; then
! 2921: echo "CONFIG_EPOLL=y" >> $config_host_mak
! 2922: fi
! 2923: if test "$epoll_create1" = "yes" ; then
! 2924: echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
! 2925: fi
! 2926: if test "$epoll_pwait" = "yes" ; then
! 2927: echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
! 2928: fi
1.1.1.9 root 2929: if test "$inotify" = "yes" ; then
1.1.1.11 root 2930: echo "CONFIG_INOTIFY=y" >> $config_host_mak
2931: fi
1.1.1.13 root 2932: if test "$inotify1" = "yes" ; then
2933: echo "CONFIG_INOTIFY1=y" >> $config_host_mak
2934: fi
1.1.1.11 root 2935: if test "$byteswap_h" = "yes" ; then
2936: echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
2937: fi
2938: if test "$bswap_h" = "yes" ; then
2939: echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
1.1.1.9 root 2940: fi
2941: if test "$curl" = "yes" ; then
2942: echo "CONFIG_CURL=y" >> $config_host_mak
1.1.1.11 root 2943: echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
1.1.1.7 root 2944: fi
2945: if test "$brlapi" = "yes" ; then
1.1.1.9 root 2946: echo "CONFIG_BRLAPI=y" >> $config_host_mak
1.1.1.7 root 2947: fi
2948: if test "$bluez" = "yes" ; then
1.1.1.9 root 2949: echo "CONFIG_BLUEZ=y" >> $config_host_mak
1.1.1.11 root 2950: echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
1.1.1.9 root 2951: fi
1.1.1.16! root 2952: echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
1.1.1.9 root 2953: if test "$xen" = "yes" ; then
1.1.1.16! root 2954: echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
! 2955: echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
1.1.1.9 root 2956: fi
2957: if test "$io_thread" = "yes" ; then
2958: echo "CONFIG_IOTHREAD=y" >> $config_host_mak
1.1.1.11 root 2959: fi
2960: if test "$linux_aio" = "yes" ; then
2961: echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
1.1.1.7 root 2962: fi
1.1.1.13 root 2963: if test "$attr" = "yes" ; then
2964: echo "CONFIG_ATTR=y" >> $config_host_mak
2965: fi
2966: if test "$linux" = "yes" ; then
2967: if test "$attr" = "yes" ; then
2968: echo "CONFIG_VIRTFS=y" >> $config_host_mak
2969: fi
2970: fi
1.1.1.7 root 2971: if test "$blobs" = "yes" ; then
1.1.1.9 root 2972: echo "INSTALL_BLOBS=yes" >> $config_host_mak
1.1.1.7 root 2973: fi
2974: if test "$iovec" = "yes" ; then
1.1.1.11 root 2975: echo "CONFIG_IOVEC=y" >> $config_host_mak
1.1.1.9 root 2976: fi
2977: if test "$preadv" = "yes" ; then
1.1.1.11 root 2978: echo "CONFIG_PREADV=y" >> $config_host_mak
1.1.1.7 root 2979: fi
2980: if test "$fdt" = "yes" ; then
1.1.1.11 root 2981: echo "CONFIG_FDT=y" >> $config_host_mak
2982: fi
1.1.1.14 root 2983: if test "$signalfd" = "yes" ; then
2984: echo "CONFIG_SIGNALFD=y" >> $config_host_mak
2985: fi
1.1.1.11 root 2986: if test "$need_offsetof" = "yes" ; then
2987: echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
2988: fi
2989: if test "$gcc_attribute_warn_unused_result" = "yes" ; then
2990: echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
2991: fi
2992: if test "$fdatasync" = "yes" ; then
2993: echo "CONFIG_FDATASYNC=y" >> $config_host_mak
1.1.1.6 root 2994: fi
1.1.1.14 root 2995: if test "$madvise" = "yes" ; then
2996: echo "CONFIG_MADVISE=y" >> $config_host_mak
2997: fi
2998: if test "$posix_madvise" = "yes" ; then
2999: echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
3000: fi
3001:
3002: if test "$spice" = "yes" ; then
3003: echo "CONFIG_SPICE=y" >> $config_host_mak
3004: fi
1.1 root 3005:
1.1.1.16! root 3006: if test "$smartcard" = "yes" ; then
! 3007: echo "CONFIG_SMARTCARD=y" >> $config_host_mak
! 3008: fi
! 3009:
! 3010: if test "$smartcard_nss" = "yes" ; then
! 3011: echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
! 3012: fi
! 3013:
! 3014: if test "$usb_redir" = "yes" ; then
! 3015: echo "CONFIG_USB_REDIR=y" >> $config_host_mak
! 3016: fi
! 3017:
! 3018: if test "$opengl" = "yes" ; then
! 3019: echo "CONFIG_OPENGL=y" >> $config_host_mak
! 3020: fi
! 3021:
1.1 root 3022: # XXX: suppress that
3023: if [ "$bsd" = "yes" ] ; then
1.1.1.11 root 3024: echo "CONFIG_BSD=y" >> $config_host_mak
1.1 root 3025: fi
3026:
1.1.1.11 root 3027: echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
3028:
3029: if test "$zero_malloc" = "yes" ; then
3030: echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
3031: fi
1.1.1.14 root 3032: if test "$rbd" = "yes" ; then
3033: echo "CONFIG_RBD=y" >> $config_host_mak
3034: fi
1.1.1.4 root 3035:
1.1.1.7 root 3036: # USB host support
3037: case "$usb" in
3038: linux)
1.1.1.9 root 3039: echo "HOST_USB=linux" >> $config_host_mak
1.1.1.7 root 3040: ;;
3041: bsd)
1.1.1.9 root 3042: echo "HOST_USB=bsd" >> $config_host_mak
1.1.1.7 root 3043: ;;
3044: *)
1.1.1.9 root 3045: echo "HOST_USB=stub" >> $config_host_mak
1.1.1.7 root 3046: ;;
3047: esac
3048:
1.1.1.14 root 3049: echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
3050: if test "$trace_backend" = "simple"; then
3051: echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
3052: fi
3053: # Set the appropriate trace file.
3054: if test "$trace_backend" = "simple"; then
1.1.1.16! root 3055: trace_file="\"$trace_file-\" FMT_pid"
1.1.1.14 root 3056: fi
3057: if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
3058: echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
3059: fi
3060: echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
3061:
1.1.1.9 root 3062: echo "TOOLS=$tools" >> $config_host_mak
3063: echo "ROMS=$roms" >> $config_host_mak
1.1.1.11 root 3064: echo "MAKE=$make" >> $config_host_mak
3065: echo "INSTALL=$install" >> $config_host_mak
1.1.1.16! root 3066: echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
! 3067: echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
! 3068: echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
! 3069: echo "PYTHON=$python" >> $config_host_mak
1.1.1.11 root 3070: echo "CC=$cc" >> $config_host_mak
1.1.1.14 root 3071: echo "CC_I386=$cc_i386" >> $config_host_mak
1.1.1.11 root 3072: echo "HOST_CC=$host_cc" >> $config_host_mak
3073: echo "AR=$ar" >> $config_host_mak
3074: echo "OBJCOPY=$objcopy" >> $config_host_mak
3075: echo "LD=$ld" >> $config_host_mak
1.1.1.14 root 3076: echo "WINDRES=$windres" >> $config_host_mak
1.1.1.16! root 3077: echo "LIBTOOL=$libtool" >> $config_host_mak
1.1.1.11 root 3078: echo "CFLAGS=$CFLAGS" >> $config_host_mak
3079: echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
1.1.1.14 root 3080: echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
3081: if test "$sparse" = "yes" ; then
3082: echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
3083: echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
3084: echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
3085: fi
1.1.1.11 root 3086: echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
3087: echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
3088: echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
3089: echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
3090: echo "LIBS+=$LIBS" >> $config_host_mak
3091: echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
3092: echo "EXESUF=$EXESUF" >> $config_host_mak
3093:
3094: # generate list of library paths for linker script
3095:
3096: $ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}
3097:
3098: if test -f ${config_host_ld}~ ; then
3099: if cmp -s $config_host_ld ${config_host_ld}~ ; then
3100: mv ${config_host_ld}~ $config_host_ld
1.1.1.9 root 3101: else
1.1.1.11 root 3102: rm ${config_host_ld}~
1.1.1.9 root 3103: fi
3104: fi
1.1.1.6 root 3105:
1.1.1.13 root 3106: for d in libdis libdis-user; do
3107: mkdir -p $d
1.1.1.14 root 3108: symlink $source_path/Makefile.dis $d/Makefile
1.1.1.13 root 3109: echo > $d/config.mak
3110: done
3111: if test "$static" = "no" -a "$user_pie" = "yes" ; then
3112: echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
3113: fi
3114:
1.1.1.2 root 3115: for target in $target_list; do
1.1 root 3116: target_dir="$target"
1.1.1.11 root 3117: config_target_mak=$target_dir/config-target.mak
1.1.1.9 root 3118: target_arch2=`echo $target | cut -d '-' -f 1`
1.1 root 3119: target_bigendian="no"
1.1.1.11 root 3120:
1.1.1.9 root 3121: case "$target_arch2" in
1.1.1.16! root 3122: armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
1.1.1.9 root 3123: target_bigendian=yes
3124: ;;
3125: esac
1.1 root 3126: target_softmmu="no"
3127: target_user_only="no"
1.1.1.5 root 3128: target_linux_user="no"
3129: target_darwin_user="no"
1.1.1.7 root 3130: target_bsd_user="no"
1.1.1.6 root 3131: case "$target" in
1.1.1.9 root 3132: ${target_arch2}-softmmu)
1.1.1.6 root 3133: target_softmmu="yes"
3134: ;;
1.1.1.9 root 3135: ${target_arch2}-linux-user)
1.1.1.11 root 3136: if test "$linux" != "yes" ; then
3137: echo "ERROR: Target '$target' is only available on a Linux host"
3138: exit 1
3139: fi
1.1.1.6 root 3140: target_user_only="yes"
3141: target_linux_user="yes"
3142: ;;
1.1.1.9 root 3143: ${target_arch2}-darwin-user)
1.1.1.11 root 3144: if test "$darwin" != "yes" ; then
3145: echo "ERROR: Target '$target' is only available on a Darwin host"
3146: exit 1
3147: fi
1.1.1.6 root 3148: target_user_only="yes"
3149: target_darwin_user="yes"
3150: ;;
1.1.1.9 root 3151: ${target_arch2}-bsd-user)
1.1.1.11 root 3152: if test "$bsd" != "yes" ; then
3153: echo "ERROR: Target '$target' is only available on a BSD host"
3154: exit 1
3155: fi
1.1.1.7 root 3156: target_user_only="yes"
3157: target_bsd_user="yes"
3158: ;;
1.1.1.6 root 3159: *)
3160: echo "ERROR: Target '$target' not recognised"
3161: exit 1
3162: ;;
3163: esac
1.1.1.5 root 3164:
1.1 root 3165: mkdir -p $target_dir
3166: mkdir -p $target_dir/fpu
1.1.1.7 root 3167: mkdir -p $target_dir/tcg
1.1.1.11 root 3168: mkdir -p $target_dir/ide
1.1.1.16! root 3169: mkdir -p $target_dir/9pfs
1.1.1.7 root 3170: 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 3171: mkdir -p $target_dir/nwfpe
3172: fi
1.1.1.14 root 3173: symlink $source_path/Makefile.target $target_dir/Makefile
1.1.1.3 root 3174:
1.1 root 3175:
1.1.1.11 root 3176: echo "# Automatically generated by configure - do not modify" > $config_target_mak
1.1 root 3177:
1.1.1.4 root 3178: bflt="no"
1.1.1.7 root 3179: target_nptl="no"
1.1.1.9 root 3180: interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
1.1.1.13 root 3181: echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
1.1.1.7 root 3182: gdb_xml_files=""
1.1.1.16! root 3183: target_short_alignment=2
! 3184: target_int_alignment=4
! 3185: target_long_alignment=4
! 3186: target_llong_alignment=8
! 3187: target_libs_softmmu=
1.1 root 3188:
1.1.1.9 root 3189: TARGET_ARCH="$target_arch2"
3190: TARGET_BASE_ARCH=""
3191: TARGET_ABI_DIR=""
1.1.1.7 root 3192:
1.1.1.9 root 3193: case "$target_arch2" in
1.1.1.7 root 3194: i386)
1.1.1.16! root 3195: target_phys_bits=64
1.1.1.7 root 3196: ;;
3197: x86_64)
1.1.1.9 root 3198: TARGET_BASE_ARCH=i386
3199: target_phys_bits=64
1.1.1.16! root 3200: target_long_alignment=8
1.1.1.7 root 3201: ;;
3202: alpha)
1.1.1.9 root 3203: target_phys_bits=64
1.1.1.16! root 3204: target_long_alignment=8
1.1.1.13 root 3205: target_nptl="yes"
1.1.1.7 root 3206: ;;
3207: arm|armeb)
1.1.1.9 root 3208: TARGET_ARCH=arm
1.1.1.7 root 3209: bflt="yes"
3210: target_nptl="yes"
3211: gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
1.1.1.9 root 3212: target_phys_bits=32
1.1.1.16! root 3213: target_llong_alignment=4
1.1.1.7 root 3214: ;;
3215: cris)
3216: target_nptl="yes"
1.1.1.9 root 3217: target_phys_bits=32
1.1.1.7 root 3218: ;;
1.1.1.16! root 3219: lm32)
! 3220: target_phys_bits=32
! 3221: target_libs_softmmu="$opengl_libs"
! 3222: ;;
1.1.1.7 root 3223: m68k)
3224: bflt="yes"
3225: gdb_xml_files="cf-core.xml cf-fp.xml"
1.1.1.9 root 3226: target_phys_bits=32
1.1.1.16! root 3227: target_int_alignment=2
! 3228: target_long_alignment=2
! 3229: target_llong_alignment=2
1.1.1.9 root 3230: ;;
1.1.1.16! root 3231: microblaze|microblazeel)
! 3232: TARGET_ARCH=microblaze
1.1.1.9 root 3233: bflt="yes"
3234: target_nptl="yes"
3235: target_phys_bits=32
1.1.1.16! root 3236: target_libs_softmmu="$fdt_libs"
1.1.1.7 root 3237: ;;
3238: mips|mipsel)
1.1.1.9 root 3239: TARGET_ARCH=mips
1.1.1.11 root 3240: echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
1.1.1.9 root 3241: target_nptl="yes"
3242: target_phys_bits=64
1.1.1.7 root 3243: ;;
3244: mipsn32|mipsn32el)
1.1.1.9 root 3245: TARGET_ARCH=mipsn32
3246: TARGET_BASE_ARCH=mips
1.1.1.11 root 3247: echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
1.1.1.9 root 3248: target_phys_bits=64
1.1.1.7 root 3249: ;;
3250: mips64|mips64el)
1.1.1.9 root 3251: TARGET_ARCH=mips64
3252: TARGET_BASE_ARCH=mips
1.1.1.11 root 3253: echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
1.1.1.9 root 3254: target_phys_bits=64
1.1.1.16! root 3255: target_long_alignment=8
1.1.1.7 root 3256: ;;
3257: ppc)
3258: gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 3259: target_phys_bits=32
1.1.1.11 root 3260: target_nptl="yes"
1.1.1.16! root 3261: target_libs_softmmu="$fdt_libs"
1.1.1.7 root 3262: ;;
3263: ppcemb)
1.1.1.9 root 3264: TARGET_BASE_ARCH=ppc
3265: TARGET_ABI_DIR=ppc
1.1.1.7 root 3266: gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 3267: target_phys_bits=64
1.1.1.11 root 3268: target_nptl="yes"
1.1.1.16! root 3269: target_libs_softmmu="$fdt_libs"
1.1.1.7 root 3270: ;;
3271: ppc64)
1.1.1.9 root 3272: TARGET_BASE_ARCH=ppc
3273: TARGET_ABI_DIR=ppc
1.1.1.7 root 3274: gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 3275: target_phys_bits=64
1.1.1.16! root 3276: target_long_alignment=8
! 3277: target_libs_softmmu="$fdt_libs"
1.1.1.7 root 3278: ;;
3279: ppc64abi32)
1.1.1.9 root 3280: TARGET_ARCH=ppc64
3281: TARGET_BASE_ARCH=ppc
3282: TARGET_ABI_DIR=ppc
1.1.1.11 root 3283: echo "TARGET_ABI32=y" >> $config_target_mak
1.1.1.7 root 3284: gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
1.1.1.9 root 3285: target_phys_bits=64
1.1.1.16! root 3286: target_libs_softmmu="$fdt_libs"
1.1.1.7 root 3287: ;;
3288: sh4|sh4eb)
1.1.1.9 root 3289: TARGET_ARCH=sh4
1.1.1.7 root 3290: bflt="yes"
3291: target_nptl="yes"
1.1.1.9 root 3292: target_phys_bits=32
1.1.1.7 root 3293: ;;
3294: sparc)
1.1.1.9 root 3295: target_phys_bits=64
1.1.1.7 root 3296: ;;
3297: sparc64)
1.1.1.9 root 3298: TARGET_BASE_ARCH=sparc
3299: target_phys_bits=64
1.1.1.16! root 3300: target_long_alignment=8
1.1.1.7 root 3301: ;;
3302: sparc32plus)
1.1.1.9 root 3303: TARGET_ARCH=sparc64
3304: TARGET_BASE_ARCH=sparc
3305: TARGET_ABI_DIR=sparc
1.1.1.11 root 3306: echo "TARGET_ABI32=y" >> $config_target_mak
3307: target_phys_bits=64
3308: ;;
3309: s390x)
1.1.1.16! root 3310: target_nptl="yes"
1.1.1.9 root 3311: target_phys_bits=64
1.1.1.16! root 3312: target_long_alignment=8
! 3313: ;;
! 3314: unicore32)
! 3315: target_phys_bits=32
1.1.1.7 root 3316: ;;
3317: *)
3318: echo "Unsupported target CPU"
3319: exit 1
3320: ;;
3321: esac
1.1.1.16! root 3322: echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak
! 3323: echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak
! 3324: echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak
! 3325: echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
1.1.1.11 root 3326: echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3327: target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
3328: echo "TARGET_$target_arch_name=y" >> $config_target_mak
3329: echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
1.1.1.9 root 3330: # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
3331: if [ "$TARGET_BASE_ARCH" = "" ]; then
3332: TARGET_BASE_ARCH=$TARGET_ARCH
3333: fi
1.1.1.11 root 3334: echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
1.1.1.9 root 3335: if [ "$TARGET_ABI_DIR" = "" ]; then
3336: TARGET_ABI_DIR=$TARGET_ARCH
3337: fi
1.1.1.11 root 3338: echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
1.1.1.9 root 3339: case "$target_arch2" in
3340: i386|x86_64)
3341: if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
1.1.1.16! root 3342: target_phys_bits=64
1.1.1.11 root 3343: echo "CONFIG_XEN=y" >> $config_target_mak
1.1.1.16! root 3344: if test "$cpu" = "i386" -o "$cpu" = "x86_64"; then
! 3345: echo "CONFIG_XEN_MAPCACHE=y" >> $config_target_mak
! 3346: fi
1.1.1.9 root 3347: fi
3348: esac
3349: case "$target_arch2" in
1.1.1.11 root 3350: i386|x86_64|ppcemb|ppc|ppc64|s390x)
1.1.1.9 root 3351: # Make sure the target and host cpus are compatible
3352: if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
3353: \( "$target_arch2" = "$cpu" -o \
3354: \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
1.1.1.11 root 3355: \( "$target_arch2" = "ppc64" -a "$cpu" = "ppc" \) -o \
1.1.1.16! root 3356: \( "$target_arch2" = "ppc" -a "$cpu" = "ppc64" \) -o \
! 3357: \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
1.1.1.9 root 3358: \( "$target_arch2" = "x86_64" -a "$cpu" = "i386" \) -o \
3359: \( "$target_arch2" = "i386" -a "$cpu" = "x86_64" \) \) ; then
1.1.1.11 root 3360: echo "CONFIG_KVM=y" >> $config_target_mak
1.1.1.13 root 3361: if test $vhost_net = "yes" ; then
3362: echo "CONFIG_VHOST_NET=y" >> $config_target_mak
3363: fi
1.1.1.9 root 3364: fi
3365: esac
1.1 root 3366: if test "$target_bigendian" = "yes" ; then
1.1.1.11 root 3367: echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
1.1 root 3368: fi
3369: if test "$target_softmmu" = "yes" ; then
1.1.1.13 root 3370: echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
1.1.1.11 root 3371: echo "CONFIG_SOFTMMU=y" >> $config_target_mak
1.1.1.16! root 3372: echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak
1.1.1.13 root 3373: echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
1.1.1.11 root 3374: echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
1.1 root 3375: fi
3376: if test "$target_user_only" = "yes" ; then
1.1.1.11 root 3377: echo "CONFIG_USER_ONLY=y" >> $config_target_mak
1.1 root 3378: fi
1.1.1.5 root 3379: if test "$target_linux_user" = "yes" ; then
1.1.1.11 root 3380: echo "CONFIG_LINUX_USER=y" >> $config_target_mak
1.1.1.5 root 3381: fi
3382: if test "$target_darwin_user" = "yes" ; then
1.1.1.11 root 3383: echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
1.1.1.5 root 3384: fi
1.1.1.16! root 3385: if test "$smartcard_nss" = "yes" ; then
! 3386: echo "subdir-$target: subdir-libcacard" >> $config_host_mak
! 3387: echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
! 3388: echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
! 3389: fi
1.1.1.7 root 3390: list=""
3391: if test ! -z "$gdb_xml_files" ; then
3392: for x in $gdb_xml_files; do
3393: list="$list $source_path/gdb-xml/$x"
3394: done
1.1.1.11 root 3395: echo "TARGET_XML_FILES=$list" >> $config_target_mak
1.1.1.7 root 3396: fi
3397:
1.1.1.4 root 3398: if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1.1.1.11 root 3399: echo "TARGET_HAS_BFLT=y" >> $config_target_mak
1.1.1.4 root 3400: fi
1.1.1.7 root 3401: if test "$target_user_only" = "yes" \
3402: -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1.1.1.11 root 3403: echo "CONFIG_USE_NPTL=y" >> $config_target_mak
1.1.1.7 root 3404: fi
1.1.1.11 root 3405: if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3406: echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
1.1 root 3407: fi
1.1.1.7 root 3408: if test "$target_bsd_user" = "yes" ; then
1.1.1.11 root 3409: echo "CONFIG_BSD_USER=y" >> $config_target_mak
3410: fi
3411:
3412: # generate QEMU_CFLAGS/LDFLAGS for targets
3413:
3414: cflags=""
1.1.1.14 root 3415: includes=""
1.1.1.11 root 3416: ldflags=""
3417:
3418: if test "$ARCH" = "sparc64" ; then
1.1.1.14 root 3419: includes="-I\$(SRC_PATH)/tcg/sparc $includes"
1.1.1.11 root 3420: elif test "$ARCH" = "s390x" ; then
1.1.1.14 root 3421: includes="-I\$(SRC_PATH)/tcg/s390 $includes"
1.1.1.13 root 3422: elif test "$ARCH" = "x86_64" ; then
1.1.1.14 root 3423: includes="-I\$(SRC_PATH)/tcg/i386 $includes"
1.1.1.11 root 3424: else
1.1.1.14 root 3425: includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
1.1.1.11 root 3426: fi
1.1.1.14 root 3427: includes="-I\$(SRC_PATH)/tcg $includes"
3428: includes="-I\$(SRC_PATH)/fpu $includes"
1.1.1.11 root 3429:
1.1.1.13 root 3430: if test "$target_user_only" = "yes" ; then
3431: libdis_config_mak=libdis-user/config.mak
3432: else
3433: libdis_config_mak=libdis/config.mak
3434: fi
3435:
1.1.1.11 root 3436: for i in $ARCH $TARGET_BASE_ARCH ; do
3437: case "$i" in
3438: alpha)
3439: echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
1.1.1.13 root 3440: echo "CONFIG_ALPHA_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3441: ;;
3442: arm)
3443: echo "CONFIG_ARM_DIS=y" >> $config_target_mak
1.1.1.13 root 3444: echo "CONFIG_ARM_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3445: ;;
3446: cris)
3447: echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
1.1.1.13 root 3448: echo "CONFIG_CRIS_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3449: ;;
3450: hppa)
3451: echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
1.1.1.13 root 3452: echo "CONFIG_HPPA_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3453: ;;
3454: i386|x86_64)
3455: echo "CONFIG_I386_DIS=y" >> $config_target_mak
1.1.1.13 root 3456: echo "CONFIG_I386_DIS=y" >> $libdis_config_mak
3457: ;;
3458: ia64*)
3459: echo "CONFIG_IA64_DIS=y" >> $config_target_mak
3460: echo "CONFIG_IA64_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3461: ;;
3462: m68k)
3463: echo "CONFIG_M68K_DIS=y" >> $config_target_mak
1.1.1.13 root 3464: echo "CONFIG_M68K_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3465: ;;
1.1.1.16! root 3466: microblaze*)
1.1.1.11 root 3467: echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
1.1.1.13 root 3468: echo "CONFIG_MICROBLAZE_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3469: ;;
3470: mips*)
3471: echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
1.1.1.13 root 3472: echo "CONFIG_MIPS_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3473: ;;
3474: ppc*)
3475: echo "CONFIG_PPC_DIS=y" >> $config_target_mak
1.1.1.13 root 3476: echo "CONFIG_PPC_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3477: ;;
3478: s390*)
3479: echo "CONFIG_S390_DIS=y" >> $config_target_mak
1.1.1.13 root 3480: echo "CONFIG_S390_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3481: ;;
3482: sh4)
3483: echo "CONFIG_SH4_DIS=y" >> $config_target_mak
1.1.1.13 root 3484: echo "CONFIG_SH4_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3485: ;;
3486: sparc*)
3487: echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
1.1.1.13 root 3488: echo "CONFIG_SPARC_DIS=y" >> $libdis_config_mak
1.1.1.11 root 3489: ;;
3490: esac
3491: done
3492:
3493: case "$ARCH" in
3494: alpha)
3495: # Ensure there's only a single GP
3496: cflags="-msmall-data $cflags"
3497: ;;
3498: esac
3499:
3500: if test "$target_softmmu" = "yes" ; then
3501: case "$TARGET_BASE_ARCH" in
3502: arm)
3503: cflags="-DHAS_AUDIO $cflags"
3504: ;;
1.1.1.16! root 3505: lm32)
! 3506: cflags="-DHAS_AUDIO $cflags"
! 3507: ;;
1.1.1.11 root 3508: i386|mips|ppc)
3509: cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
3510: ;;
3511: esac
1.1.1.7 root 3512: fi
1.1 root 3513:
1.1.1.11 root 3514: if test "$target_user_only" = "yes" -a "$static" = "no" -a \
3515: "$user_pie" = "yes" ; then
3516: cflags="-fpie $cflags"
3517: ldflags="-pie $ldflags"
3518: fi
1.1.1.9 root 3519:
1.1.1.11 root 3520: if test "$target_softmmu" = "yes" -a \( \
3521: "$TARGET_ARCH" = "microblaze" -o \
3522: "$TARGET_ARCH" = "cris" \) ; then
3523: echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3524: fi
3525:
3526: if test "$gprof" = "yes" ; then
3527: echo "TARGET_GPROF=yes" >> $config_target_mak
3528: if test "$target_linux_user" = "yes" ; then
3529: cflags="-p $cflags"
3530: ldflags="-p $ldflags"
3531: fi
3532: if test "$target_softmmu" = "yes" ; then
3533: ldflags="-p $ldflags"
3534: echo "GPROF_CFLAGS=-p" >> $config_target_mak
3535: fi
3536: fi
3537:
3538: linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
3539: if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3540: case "$ARCH" in
3541: sparc)
3542: # -static is used to avoid g1/g3 usage by the dynamic linker
3543: ldflags="$linker_script -static $ldflags"
3544: ;;
1.1.1.13 root 3545: alpha | s390x)
3546: # The default placement of the application is fine.
1.1.1.11 root 3547: ;;
1.1.1.13 root 3548: *)
1.1.1.11 root 3549: ldflags="$linker_script $ldflags"
3550: ;;
3551: esac
3552: fi
3553:
1.1.1.16! root 3554: # use included Linux headers
! 3555: if test "$linux" = "yes" ; then
! 3556: includes="-I\$(SRC_PATH)/linux-headers $includes"
! 3557: mkdir -p linux-headers
! 3558: case "$cpu" in
! 3559: i386|x86_64)
! 3560: symlink $source_path/linux-headers/asm-x86 linux-headers/asm
! 3561: ;;
! 3562: ppcemb|ppc|ppc64)
! 3563: symlink $source_path/linux-headers/asm-powerpc linux-headers/asm
! 3564: ;;
! 3565: s390x)
! 3566: symlink $source_path/linux-headers/asm-s390 linux-headers/asm
! 3567: ;;
! 3568: esac
! 3569: fi
! 3570:
1.1.1.11 root 3571: echo "LDFLAGS+=$ldflags" >> $config_target_mak
3572: echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
1.1.1.14 root 3573: echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
1.1 root 3574:
3575: done # for target in $targets
3576:
1.1.1.14 root 3577: # build tree in object directory in case the source is not in the current directory
3578: DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
1.1.1.16! root 3579: DIRS="$DIRS pc-bios/spapr-rtas"
1.1.1.14 root 3580: DIRS="$DIRS roms/seabios roms/vgabios"
3581: DIRS="$DIRS fsdev ui"
1.1.1.16! root 3582: DIRS="$DIRS qapi"
! 3583: DIRS="$DIRS qga"
! 3584: FILES="Makefile tests/Makefile qdict-test-data.txt"
1.1.1.14 root 3585: FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
3586: FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
1.1.1.16! root 3587: FILES="$FILES pc-bios/spapr-rtas/Makefile"
1.1.1.14 root 3588: FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
1.1.1.16! root 3589: for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.rom $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
1.1.1.14 root 3590: FILES="$FILES pc-bios/`basename $bios_file`"
3591: done
3592: mkdir -p $DIRS
3593: for f in $FILES ; do
1.1.1.16! root 3594: if [ -e "$source_path/$f" ] && ! [ -e "$f" ]; then
! 3595: symlink "$source_path/$f" "$f"
! 3596: fi
1.1.1.14 root 3597: done
1.1.1.9 root 3598:
1.1.1.11 root 3599: # temporary config to build submodules
3600: for rom in seabios vgabios ; do
3601: config_mak=roms/$rom/config.mak
1.1.1.13 root 3602: echo "# Automatically generated by configure - do not modify" > $config_mak
1.1.1.11 root 3603: echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
3604: echo "CC=$cc" >> $config_mak
3605: echo "BCC=bcc" >> $config_mak
3606: echo "CPP=${cross_prefix}cpp" >> $config_mak
3607: echo "OBJCOPY=objcopy" >> $config_mak
3608: echo "IASL=iasl" >> $config_mak
3609: echo "LD=$ld" >> $config_mak
3610: done
3611:
1.1.1.9 root 3612: for hwlib in 32 64; do
3613: d=libhw$hwlib
3614: mkdir -p $d
1.1.1.13 root 3615: mkdir -p $d/ide
1.1.1.14 root 3616: symlink $source_path/Makefile.hw $d/Makefile
1.1.1.16! root 3617: mkdir -p $d/9pfs
1.1.1.13 root 3618: echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
1.1.1.9 root 3619: done
1.1.1.11 root 3620:
1.1.1.16! root 3621: if [ "$source_path" != `pwd` ]; then
! 3622: # out of tree build
! 3623: mkdir -p libcacard
! 3624: rm -f libcacard/Makefile
! 3625: symlink "$source_path/libcacard/Makefile" libcacard/Makefile
! 3626: fi
! 3627:
1.1.1.11 root 3628: d=libuser
3629: mkdir -p $d
1.1.1.14 root 3630: symlink $source_path/Makefile.user $d/Makefile
1.1.1.12 root 3631: if test "$static" = "no" -a "$user_pie" = "yes" ; then
3632: echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
3633: fi
1.1.1.13 root 3634:
3635: if test "$docs" = "yes" ; then
3636: mkdir -p QMP
3637: fi
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.